mirror of
https://github.com/X11Libre/xf86-input-evdev.git
synced 2026-04-14 11:44:16 +00:00
Ensure enough buttons are advertised to pass the button mapping.
Some buttons are mapped to higher button numbers. For example, BTN_0 is posted as button 8 if BTN_LEFT is present. On top of that, the driver-specific button mapping may map the button to something else again. We need to take these mappings into account when counting the number of buttons on the device. Example: A device with BTN_LEFT and BTN_0 and a mapping from 1 -> 7 and 8 -> 2. BTN_LEFT is mapped to 1. 1 is mapped to 7. num_buttons is 7. BTN_0 is mapped to 8. 8 is mapped to 2. num_buttons remains 7. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
@@ -1488,8 +1488,14 @@ EvdevProbe(InputInfoPtr pInfo)
|
||||
/* count all buttons */
|
||||
for (i = BTN_MISC; i < BTN_JOYSTICK; i++)
|
||||
{
|
||||
int mapping = 0;
|
||||
if (TestBit(i, pEvdev->key_bitmask))
|
||||
num_buttons++;
|
||||
{
|
||||
mapping =
|
||||
pEvdev->btnmap[EvdevUtilButtonEventToButtonNumber(pEvdev, i)];
|
||||
if (mapping > num_buttons)
|
||||
num_buttons = mapping;
|
||||
}
|
||||
}
|
||||
|
||||
if (num_buttons)
|
||||
|
||||
Reference in New Issue
Block a user