46 lines · c
1// SPDX-License-Identifier: GPL-2.0+2/*3 * HID driver for quirky Macally devices4 *5 * Copyright (c) 2019 Alex Henrie <alexhenrie24@gmail.com>6 */7 8#include <linux/hid.h>9#include <linux/module.h>10 11#include "hid-ids.h"12 13MODULE_AUTHOR("Alex Henrie <alexhenrie24@gmail.com>");14MODULE_DESCRIPTION("Macally devices");15MODULE_LICENSE("GPL");16 17/*18 * The Macally ikey keyboard says that its logical and usage maximums are both19 * 101, but the power key is 102 and the equals key is 10320 */21static const __u8 *macally_report_fixup(struct hid_device *hdev, __u8 *rdesc,22 unsigned int *rsize)23{24 if (*rsize >= 60 && rdesc[53] == 0x65 && rdesc[59] == 0x65) {25 hid_info(hdev,26 "fixing up Macally ikey keyboard report descriptor\n");27 rdesc[53] = rdesc[59] = 0x67;28 }29 return rdesc;30}31 32static const struct hid_device_id macally_id_table[] = {33 { HID_USB_DEVICE(USB_VENDOR_ID_SOLID_YEAR,34 USB_DEVICE_ID_MACALLY_IKEY_KEYBOARD) },35 { }36};37MODULE_DEVICE_TABLE(hid, macally_id_table);38 39static struct hid_driver macally_driver = {40 .name = "macally",41 .id_table = macally_id_table,42 .report_fixup = macally_report_fixup,43};44 45module_hid_driver(macally_driver);46