From 3a356ac533d48350a5a12f010e7e67efed948c47 Mon Sep 17 00:00:00 2001 From: Raheman Vaiya Date: Mon, 6 Jan 2025 17:30:18 -0500 Subject: [PATCH] core: Improve support for exotic mice --- src/device.c | 51 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/src/device.c b/src/device.c index 514a5df..c4614e4 100644 --- a/src/device.c +++ b/src/device.c @@ -477,20 +477,18 @@ struct device_event *device_read_event(struct device *dev) * Shifted function keys, some laptops (e.g thinkpads) will map * these to exotic media keys instead. */ - case KEY_FN_F1: ev.code = KEYD_F13; break; - case KEY_FN_F2: ev.code = KEYD_F14; break; - case KEY_FN_F3: ev.code = KEYD_F15; break; - case KEY_FN_F4: ev.code = KEYD_F16; break; - case KEY_FN_F5: ev.code = KEYD_F17; break; - case KEY_FN_F6: ev.code = KEYD_F18; break; - case KEY_FN_F7: ev.code = KEYD_F19; break; - case KEY_FN_F8: ev.code = KEYD_F20; break; - case KEY_FN_F9: ev.code = KEYD_F21; break; - case KEY_FN_F10: ev.code = KEYD_F22; break; - case KEY_FN_F11: ev.code = KEYD_F23; break; - case KEY_FN_F12: ev.code = KEYD_F24; break; - - /* fn + f keys on some thinkpads */ + case KEY_FN_F1: ev.code = KEYD_F13; break; + case KEY_FN_F2: ev.code = KEYD_F14; break; + case KEY_FN_F3: ev.code = KEYD_F15; break; + case KEY_FN_F4: ev.code = KEYD_F16; break; + case KEY_FN_F5: ev.code = KEYD_F17; break; + case KEY_FN_F6: ev.code = KEYD_F18; break; + case KEY_FN_F7: ev.code = KEYD_F19; break; + case KEY_FN_F8: ev.code = KEYD_F20; break; + case KEY_FN_F9: ev.code = KEYD_F21; break; + case KEY_FN_F10: ev.code = KEYD_F22; break; + case KEY_FN_F11: ev.code = KEYD_F23; break; + case KEY_FN_F12: ev.code = KEYD_F24; break; /* Thinkpad fn shifted f9-f11 */ case KEY_NOTIFICATION_CENTER: ev.code = KEYD_F21; break; @@ -522,13 +520,24 @@ struct device_event *device_read_event(struct device *dev) case KEY_VOICECOMMAND: ev.code = KEYD_VOICECOMMAND; break; /* Mouse buttons */ - case BTN_LEFT: ev.code = KEYD_LEFT_MOUSE; break; - case BTN_MIDDLE: ev.code = KEYD_MIDDLE_MOUSE; break; - case BTN_RIGHT: ev.code = KEYD_RIGHT_MOUSE; break; - case BTN_SIDE: ev.code = KEYD_MOUSE_1; break; - case BTN_EXTRA: ev.code = KEYD_MOUSE_2; break; - case BTN_BACK: ev.code = KEYD_MOUSE_BACK; break; - case BTN_FORWARD: ev.code = KEYD_MOUSE_FORWARD; break; + case BTN_LEFT: ev.code = KEYD_LEFT_MOUSE; break; + case BTN_MIDDLE: ev.code = KEYD_MIDDLE_MOUSE; break; + case BTN_RIGHT: ev.code = KEYD_RIGHT_MOUSE; break; + case BTN_SIDE: ev.code = KEYD_MOUSE_1; break; + case BTN_EXTRA: ev.code = KEYD_MOUSE_2; break; + case BTN_BACK: ev.code = KEYD_MOUSE_BACK; break; + case BTN_FORWARD: ev.code = KEYD_MOUSE_FORWARD; break; + + case BTN_0: ev.code = KEYD_F13; break; + case BTN_1: ev.code = KEYD_F14; break; + case BTN_2: ev.code = KEYD_F15; break; + case BTN_3: ev.code = KEYD_F16; break; + case BTN_4: ev.code = KEYD_F17; break; + case BTN_5: ev.code = KEYD_F18; break; + case BTN_6: ev.code = KEYD_F19; break; + case BTN_7: ev.code = KEYD_F20; break; + case BTN_8: ev.code = KEYD_F21; break; + case BTN_9: ev.code = KEYD_F22; break; default: if (!(ev.code >= BTN_DIGI && ev.code <= BTN_TOOL_QUADTAP)) {