@@ -438,9 +438,9 @@ static void __pad_enable(u32 chan)
438438static void __pad_enablekeyboard (u32 chan )
439439{
440440 u32 buf [2 ];
441- #ifdef _PAD_DEBUG
441+ // #ifdef _PAD_DEBUG
442442 printf ("__pad_enablekeyboard(%d)\n" ,chan );
443- #endif
443+ // #endif
444444 __pad_enabledbits |= PAD_ENABLEDMASK (chan );
445445 SI_GetResponse (chan ,(void * )buf );
446446 SI_SetCommand (chan ,__pad_cmdinitkeyboard );
@@ -687,7 +687,7 @@ void PAD_ControlMotor(s32 chan,u32 cmd)
687687 mask = PAD_ENABLEDMASK (chan );
688688 if (__pad_enabledbits & mask ) {
689689 type = SI_GetType (chan );
690- if (!(type & SI_GC_NOMOTOR )) {
690+ if (!(type & SI_GC_NOMOTOR ) && !( type & SI_GC_KEYBOARD ) ) {
691691 if (__pad_spec < 2 && cmd == PAD_MOTOR_STOP_HARD ) cmd = 0 ;
692692
693693 cmd = 0x00400000 |__pad_analogmode |(cmd & 0x03 );
@@ -787,25 +787,21 @@ u32 PAD_ScanPads(void)
787787
788788 switch (padstatus [i ].err ) {
789789 case PAD_ERR_NONE :
790+ printf ("PAD_ERR_NONE\n" );
790791 if (type == PAD_TYPE_KEYBOARD ) {
791792 keys [0 ] = (u8 )(padstatus [i ].substickX - 128 );
792793 keys [1 ] = (u8 )(padstatus [i ].substickY - 128 );
793794 keys [2 ] = (u8 )(padstatus [i ].triggerL );
795+ printf ("%d %d %d\n" , keys [0 ], keys [1 ], keys [2 ]);
794796
795797 // Only update if keys did not roll over
796798 if (keys [0 ] != 1 && keys [1 ] != 1 && keys [2 ] != 1 &&
797799 keys [0 ] != 2 && keys [1 ] != 2 && keys [2 ] != 2 ) {
798800 oldkeys [0 ] = __pad_keys [i ].keyboard_state [0 ];
799801 oldkeys [1 ] = __pad_keys [i ].keyboard_state [1 ];
800802 oldkeys [2 ] = __pad_keys [i ].keyboard_state [2 ];
801-
802- __pad_keys [i ].keyboard_down [0 ] = 0 ;
803- __pad_keys [i ].keyboard_down [1 ] = 0 ;
804- __pad_keys [i ].keyboard_down [2 ] = 0 ;
805-
806- __pad_keys [i ].keyboard_up [0 ] = 0 ;
807- __pad_keys [i ].keyboard_up [1 ] = 0 ;
808- __pad_keys [i ].keyboard_up [2 ] = 0 ;
803+
804+ memset (& __pad_keys [i ],0 ,sizeof (keyinput ));
809805
810806 // Check if any keyboard keys are being newly pressed
811807 if (keys [0 ] && ((keys [0 ] != oldkeys [0 ]) && (keys [0 ] != oldkeys [1 ]) && (keys [0 ] != oldkeys [2 ])))
@@ -850,7 +846,9 @@ u32 PAD_ScanPads(void)
850846 __pad_keys [i ].keyboard_state [2 ] = keys [2 ];
851847 }
852848 } else {
853- oldstate = __pad_keys [i ].state ;
849+ printf ("GC pad\n" );
850+ oldstate = __pad_keys [i ].state ;
851+ memset (& __pad_keys [i ],0 ,sizeof (keyinput ));
854852 state = padstatus [i ].button ;
855853 __pad_keys [i ].stickX = padstatus [i ].stickX ;
856854 __pad_keys [i ].stickY = padstatus [i ].stickY ;
@@ -867,12 +865,14 @@ u32 PAD_ScanPads(void)
867865 break ;
868866
869867 case PAD_ERR_NO_CONTROLLER :
868+ printf ("No pad\n" );
870869 if (__pad_keys [i ].chan != -1 ) memset (& __pad_keys [i ],0 ,sizeof (keyinput ));
871870 __pad_keys [i ].chan = -1 ;
872871 resetBits |= padBit ;
873872 break ;
874873
875874 default :
875+ printf ("Default\n" );
876876 break ;
877877 }
878878 }
@@ -907,9 +907,10 @@ u16 PAD_ButtonsHeld(int pad)
907907s32 PAD_KeyboardUp (int pad , u8 * keys )
908908{
909909 s32 i , count = 0 ;
910- if (pad < PAD_CHAN0 || pad > PAD_CHAN3 || __pad_keys [pad ].chan == -1 || keys == NULL || PAD_GetType (pad ) != PAD_TYPE_KEYBOARD ) return 0 ;
910+ if (keys == NULL ) return 0 ;
911+ memset (keys , 0 , 3 );
912+ if (pad < PAD_CHAN0 || pad > PAD_CHAN3 || __pad_keys [pad ].chan == -1 || PAD_GetType (pad ) != PAD_TYPE_KEYBOARD ) return 0 ;
911913 for (i = 0 ; i < 3 ; i ++ ) {
912- keys [i ] = 0 ;
913914 if (__pad_keys [pad ].keyboard_up [i ]) {
914915 keys [i ] = __pad_keys [pad ].keyboard_up [i ];
915916 count ++ ;
@@ -923,9 +924,10 @@ s32 PAD_KeyboardUp(int pad, u8 *keys)
923924s32 PAD_KeyboardDown (int pad , u8 * keys )
924925{
925926 s32 i , count = 0 ;
926- if (pad < PAD_CHAN0 || pad > PAD_CHAN3 || __pad_keys [pad ].chan == -1 || keys == NULL || PAD_GetType (pad ) != PAD_TYPE_KEYBOARD ) return 0 ;
927+ if (keys == NULL ) return 0 ;
928+ memset (keys , 0 , 3 );
929+ if (pad < PAD_CHAN0 || pad > PAD_CHAN3 || __pad_keys [pad ].chan == -1 || PAD_GetType (pad ) != PAD_TYPE_KEYBOARD ) return 0 ;
927930 for (i = 0 ; i < 3 ; i ++ ) {
928- keys [i ] = 0 ;
929931 if (__pad_keys [pad ].keyboard_down [i ]) {
930932 keys [i ] = __pad_keys [pad ].keyboard_down [i ];
931933 count ++ ;
@@ -939,7 +941,9 @@ s32 PAD_KeyboardDown(int pad, u8 *keys)
939941s32 PAD_KeyboardHeld (int pad , u8 * keys )
940942{
941943 s32 i , count = 0 ;
942- if (pad < PAD_CHAN0 || pad > PAD_CHAN3 || __pad_keys [pad ].chan == -1 || keys == NULL || PAD_GetType (pad ) != PAD_TYPE_KEYBOARD ) return 0 ;
944+ if (keys == NULL ) return 0 ;
945+ memset (keys , 0 , 3 );
946+ if (pad < PAD_CHAN0 || pad > PAD_CHAN3 || __pad_keys [pad ].chan == -1 || PAD_GetType (pad ) != PAD_TYPE_KEYBOARD ) return 0 ;
943947 for (i = 0 ; i < 3 ; i ++ ) {
944948 keys [i ] = 0 ;
945949 if (__pad_keys [pad ].keyboard_state [i ]) {
0 commit comments