Loading drivers/hid/Kconfig +7 −0 Original line number Diff line number Diff line Loading @@ -329,6 +329,13 @@ config HID_ELO Support for the ELO USB 4000/4500 touchscreens. Note that this is for different devices than those handled by CONFIG_TOUCHSCREEN_USB_ELO. config HID_EVISION tristate "EVision Keyboards Support" depends on HID help Support for some EVision keyboards. Note that this is needed only when applying customization using userspace programs. config HID_EZKEY tristate "Ezkey BTC 8193 keyboard" default !EXPERT Loading drivers/hid/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ obj-$(CONFIG_HID_EMS_FF) += hid-emsff.o obj-$(CONFIG_HID_ELAN) += hid-elan.o obj-$(CONFIG_HID_ELECOM) += hid-elecom.o obj-$(CONFIG_HID_ELO) += hid-elo.o obj-$(CONFIG_HID_EVISION) += hid-evision.o obj-$(CONFIG_HID_EZKEY) += hid-ezkey.o obj-$(CONFIG_HID_FT260) += hid-ft260.o obj-$(CONFIG_HID_GEMBIRD) += hid-gembird.o Loading drivers/hid/hid-evision.c 0 → 100644 +53 −0 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-or-later /* * HID driver for EVision devices * For now, only ignore bogus consumer reports * sent after the keyboard has been configured * * Copyright (c) 2022 Philippe Valembois */ #include <linux/device.h> #include <linux/input.h> #include <linux/hid.h> #include <linux/module.h> #include "hid-ids.h" static int evision_input_mapping(struct hid_device *hdev, struct hid_input *hi, struct hid_field *field, struct hid_usage *usage, unsigned long **bit, int *max) { if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER) return 0; /* Ignore key down event */ if ((usage->hid & HID_USAGE) >> 8 == 0x05) return -1; /* Ignore key up event */ if ((usage->hid & HID_USAGE) >> 8 == 0x06) return -1; switch (usage->hid & HID_USAGE) { /* Ignore configuration saved event */ case 0x0401: return -1; /* Ignore reset event */ case 0x0402: return -1; } return 0; } static const struct hid_device_id evision_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_EVISION, USB_DEVICE_ID_EVISION_ICL01) }, { } }; MODULE_DEVICE_TABLE(hid, evision_devices); static struct hid_driver evision_driver = { .name = "evision", .id_table = evision_devices, .input_mapping = evision_input_mapping, }; module_hid_driver(evision_driver); MODULE_LICENSE("GPL"); drivers/hid/hid-ids.h +3 −0 Original line number Diff line number Diff line Loading @@ -448,6 +448,9 @@ #define USB_VENDOR_ID_EMS 0x2006 #define USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II 0x0118 #define USB_VENDOR_ID_EVISION 0x320f #define USB_DEVICE_ID_EVISION_ICL01 0x5041 #define USB_VENDOR_ID_FLATFROG 0x25b5 #define USB_DEVICE_ID_MULTITOUCH_3200 0x0002 Loading Loading
drivers/hid/Kconfig +7 −0 Original line number Diff line number Diff line Loading @@ -329,6 +329,13 @@ config HID_ELO Support for the ELO USB 4000/4500 touchscreens. Note that this is for different devices than those handled by CONFIG_TOUCHSCREEN_USB_ELO. config HID_EVISION tristate "EVision Keyboards Support" depends on HID help Support for some EVision keyboards. Note that this is needed only when applying customization using userspace programs. config HID_EZKEY tristate "Ezkey BTC 8193 keyboard" default !EXPERT Loading
drivers/hid/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ obj-$(CONFIG_HID_EMS_FF) += hid-emsff.o obj-$(CONFIG_HID_ELAN) += hid-elan.o obj-$(CONFIG_HID_ELECOM) += hid-elecom.o obj-$(CONFIG_HID_ELO) += hid-elo.o obj-$(CONFIG_HID_EVISION) += hid-evision.o obj-$(CONFIG_HID_EZKEY) += hid-ezkey.o obj-$(CONFIG_HID_FT260) += hid-ft260.o obj-$(CONFIG_HID_GEMBIRD) += hid-gembird.o Loading
drivers/hid/hid-evision.c 0 → 100644 +53 −0 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-or-later /* * HID driver for EVision devices * For now, only ignore bogus consumer reports * sent after the keyboard has been configured * * Copyright (c) 2022 Philippe Valembois */ #include <linux/device.h> #include <linux/input.h> #include <linux/hid.h> #include <linux/module.h> #include "hid-ids.h" static int evision_input_mapping(struct hid_device *hdev, struct hid_input *hi, struct hid_field *field, struct hid_usage *usage, unsigned long **bit, int *max) { if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER) return 0; /* Ignore key down event */ if ((usage->hid & HID_USAGE) >> 8 == 0x05) return -1; /* Ignore key up event */ if ((usage->hid & HID_USAGE) >> 8 == 0x06) return -1; switch (usage->hid & HID_USAGE) { /* Ignore configuration saved event */ case 0x0401: return -1; /* Ignore reset event */ case 0x0402: return -1; } return 0; } static const struct hid_device_id evision_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_EVISION, USB_DEVICE_ID_EVISION_ICL01) }, { } }; MODULE_DEVICE_TABLE(hid, evision_devices); static struct hid_driver evision_driver = { .name = "evision", .id_table = evision_devices, .input_mapping = evision_input_mapping, }; module_hid_driver(evision_driver); MODULE_LICENSE("GPL");
drivers/hid/hid-ids.h +3 −0 Original line number Diff line number Diff line Loading @@ -448,6 +448,9 @@ #define USB_VENDOR_ID_EMS 0x2006 #define USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II 0x0118 #define USB_VENDOR_ID_EVISION 0x320f #define USB_DEVICE_ID_EVISION_ICL01 0x5041 #define USB_VENDOR_ID_FLATFROG 0x25b5 #define USB_DEVICE_ID_MULTITOUCH_3200 0x0002 Loading