linux/drivers/hid/hid-macally.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 *  HID driver for quirky Macally devices
   4 *
   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 both
  19 * 101, but the power key is 102 and the equals key is 103
  20 */
  21static __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