mirror of
https://github.com/mist-devel/mist-firmware.git
synced 2026-05-04 23:36:16 +00:00
Merge pull request #28 from retrofun/debounce-virtual-joystick-keyboard
Debounce virtual joystick keyboard with more than one USB joystick
This commit is contained in:
@@ -590,6 +590,8 @@ static uint16_t collect_bits(uint8_t *p, uint16_t offset, uint8_t size, bool is_
|
||||
return rval;
|
||||
}
|
||||
|
||||
static usb_hid_iface_info_t *virt_joy_kbd_iface = NULL;
|
||||
|
||||
/* processes a single USB interface */
|
||||
static void usb_process_iface (usb_hid_iface_info_t *iface,
|
||||
uint16_t read,
|
||||
@@ -788,7 +790,12 @@ static void usb_process_iface (usb_hid_iface_info_t *iface,
|
||||
handle_5200daptor(iface, buf);
|
||||
|
||||
// apply keyboard mappings
|
||||
virtual_joystick_keyboard ( vjoy );
|
||||
if ((!virt_joy_kbd_iface) || (virt_joy_kbd_iface == iface)) {
|
||||
bool ret = virtual_joystick_keyboard( vjoy );
|
||||
virt_joy_kbd_iface = NULL;
|
||||
if (ret)
|
||||
virt_joy_kbd_iface = iface;
|
||||
}
|
||||
|
||||
} // end joystick handling
|
||||
|
||||
|
||||
@@ -409,11 +409,11 @@ void joystick_key_map(char *s) {
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
void virtual_joystick_keyboard ( uint16_t vjoy ) {
|
||||
bool virtual_joystick_keyboard ( uint16_t vjoy ) {
|
||||
|
||||
// ignore if globally switched off
|
||||
if(mist_cfg.joystick_disable_shortcuts)
|
||||
return;
|
||||
return false;
|
||||
|
||||
// use button combinations as shortcut for certain keys
|
||||
uint8_t buf[6] = { 0,0,0,0,0,0 };
|
||||
@@ -508,4 +508,6 @@ void virtual_joystick_keyboard ( uint16_t vjoy ) {
|
||||
} else {
|
||||
user_io_kbd(0x00, buf, UIO_PRIORITY_GAMEPAD, 0, 0);
|
||||
}
|
||||
|
||||
return (buf[0] ? true : false);
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ void joystick_key_map_init(void);
|
||||
void joystick_key_map(char *);
|
||||
|
||||
// runtime mapping
|
||||
void virtual_joystick_keyboard ( uint16_t vjoy );
|
||||
bool virtual_joystick_keyboard ( uint16_t vjoy );
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user