@@ -13,6 +13,8 @@ export type GamepadState = {
1313 buttonHeldB : boolean ;
1414 buttonHeldX : boolean ;
1515 buttonHeldY : boolean ;
16+ buttonHeldLeftShoulder : boolean ;
17+ buttonHeldRightShoulder : boolean ;
1618 inputMode : InputMode ;
1719 isXboxControllerConnected : boolean ;
1820 isDualSenseControllerConnected : boolean ;
@@ -27,6 +29,8 @@ type ControllerActions = {
2729 goBack : ( ) => void ;
2830 deleteText : ( ) => void ;
2931 confirmText : ( ) => void ;
32+ insertSpace : ( ) => void ;
33+ clearText : ( ) => void ;
3034} ;
3135
3236const AXIS_DEADZONE = 0.55 ;
@@ -48,6 +52,8 @@ export function createGamepadState(): GamepadState {
4852 buttonHeldB : false ,
4953 buttonHeldX : false ,
5054 buttonHeldY : false ,
55+ buttonHeldLeftShoulder : false ,
56+ buttonHeldRightShoulder : false ,
5157 inputMode : 'keyboard' ,
5258 isXboxControllerConnected : false ,
5359 isDualSenseControllerConnected : false
@@ -181,6 +187,8 @@ export function handleControllerInput(state: GamepadState, actions: ControllerAc
181187 state . buttonHeldB = false ;
182188 state . buttonHeldX = false ;
183189 state . buttonHeldY = false ;
190+ state . buttonHeldLeftShoulder = false ;
191+ state . buttonHeldRightShoulder = false ;
184192
185193 if ( state . inputMode !== 'keyboard' ) {
186194 state . inputMode = 'keyboard' ;
@@ -274,6 +282,20 @@ export function handleControllerInput(state: GamepadState, actions: ControllerAc
274282 actions . confirmText ( ) ;
275283 }
276284 state . buttonHeldY = yPressed ;
285+
286+ const leftShoulderPressed = ! ! controller . buttons [ 4 ] ?. pressed ;
287+ if ( leftShoulderPressed && ! state . buttonHeldLeftShoulder ) {
288+ setDetectedControllerInputMode ( state ) ;
289+ actions . insertSpace ( ) ;
290+ }
291+ state . buttonHeldLeftShoulder = leftShoulderPressed ;
292+
293+ const rightShoulderPressed = ! ! controller . buttons [ 5 ] ?. pressed ;
294+ if ( rightShoulderPressed && ! state . buttonHeldRightShoulder ) {
295+ setDetectedControllerInputMode ( state ) ;
296+ actions . clearText ( ) ;
297+ }
298+ state . buttonHeldRightShoulder = rightShoulderPressed ;
277299}
278300
279301export function createControllerTick ( state : GamepadState , actions : ControllerActions ) {
0 commit comments