Message ID | 2082258.qPnAmo2zZ4@str (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 20/10/2017 14:41:33 CEST David Strobach wrote: > The current mapping of the proprietary Kensington Slimblade buttons > is as follows: > +---+---+ > > | 2 | 8 | > > +---X---+ > > | 1 | 3 | > > +---+---+ > > This modification adds an alternative button mapping for users, > who prefer to use middle mouse button emulation (buttons 1+3) in > order to get one extra button at the top right. The alternative > button mapping is: > +---+---+ > > | 9 | 8 | > > +---X---+ > > | 1 | 3 | > > +---+---+ Ouch, it's actually +---+---+ | 8 | 9 | +---X---+ | 1 | 3 | +---+---+ Cheers David -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/hid/hid-kensington.c b/drivers/hid/hid-kensington.c index fe9a99dd8d08..1673e461338f 100644 --- a/drivers/hid/hid-kensington.c +++ b/drivers/hid/hid-kensington.c @@ -20,6 +20,11 @@ #define ks_map_key(c) hid_map_usage(hi, usage, bit, max, EV_KEY, (c)) +static bool use_alt_mapping; +module_param(use_alt_mapping, bool, S_IRUGO); +MODULE_PARM_DESC(use_alt_mapping, + "Use alternative button mapping (default = false)"); + static int ks_input_mapping(struct hid_device *hdev, struct hid_input *hi, struct hid_field *field, struct hid_usage *usage, unsigned long **bit, int *max) @@ -28,8 +33,18 @@ static int ks_input_mapping(struct hid_device *hdev, struct hid_input *hi, return 0; switch (usage->hid & HID_USAGE) { - case 0x01: ks_map_key(BTN_MIDDLE); break; - case 0x02: ks_map_key(BTN_SIDE); break; + case 0x01: + if (use_alt_mapping) + ks_map_key(BTN_SIDE); + else + ks_map_key(BTN_MIDDLE); + break; + case 0x02: + if (use_alt_mapping) + ks_map_key(BTN_EXTRA); + else + ks_map_key(BTN_SIDE); + break; default: return 0;