From: chris schlund <chrisschlund@gmx.de>
To: linux-input@vger.kernel.org, Jiri Kosina <jkosina@suse.cz>
Subject: [PATCH] hid kernel module for wireless remote LC Power model RC1000MCE
Date: Mon, 24 Jan 2011 17:51:59 +0100 [thread overview]
Message-ID: <4D3DAE2F.3080009@gmx.de> (raw)
Hi,
I bought a remote control LC Power RC1000MCE (usb rf keyboard). Some
keys were not working. Therefore I took the hid-topseed kernel module
copied it and prepared it as a new kernel module hid-lcpower which
provides the correct keymapping for this remote control.
I tested it on the 2.6.32 kernel.
I modified it to compile with the kernel version 2.6.37 (untested).
Sorry If I made some formal errors in here. This is my first patch and I
am not used to this process.
Thanks
Chris
39$ cat lc-power.patch
diff -urN linux-2.6.37/drivers/hid/hid-core.c linux/drivers/hid/hid-core.c
--- linux-2.6.37/drivers/hid/hid-core.c 2011-01-05 01:50:19.000000000 +0100
+++ linux/drivers/hid/hid-core.c 2011-01-24 17:01:00.000000000 +0100
@@ -1312,6 +1312,7 @@
{ HID_USB_DEVICE(USB_VENDOR_ID_KENSINGTON,
USB_DEVICE_ID_KS_SLIMBLADE) },
{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_ERGO_525V) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LABTEC,
USB_DEVICE_ID_LABTEC_WIRELESS_KEYBOARD) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_LCPOWER,
USB_DEVICE_ID_LCPOWER_LC1000 ) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH,
USB_DEVICE_ID_MX3000_RECEIVER) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH,
USB_DEVICE_ID_S510_RECEIVER) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH,
USB_DEVICE_ID_S510_RECEIVER_2) },
diff -urN linux-2.6.37/drivers/hid/hid-ids.h linux/drivers/hid/hid-ids.h
--- linux-2.6.37/drivers/hid/hid-ids.h 2011-01-05 01:50:19.000000000 +0100
+++ linux/drivers/hid/hid-ids.h 2011-01-24 17:01:00.000000000 +0100
@@ -330,6 +330,9 @@
#define USB_VENDOR_ID_LABTEC 0x1020
#define USB_DEVICE_ID_LABTEC_WIRELESS_KEYBOARD 0x0006
+#define USB_VENDOR_ID_LCPOWER 0x1241
+#define USB_DEVICE_ID_LCPOWER_LC1000 0xf767
+
#define USB_VENDOR_ID_LD 0x0f11
#define USB_DEVICE_ID_LD_CASSY 0x1000
#define USB_DEVICE_ID_LD_POCKETCASSY 0x1010
diff -urN linux-2.6.37/drivers/hid/hid-lcpower.c
linux/drivers/hid/hid-lcpower.c
--- linux-2.6.37/drivers/hid/hid-lcpower.c 1970-01-01
01:00:00.000000000 +0100
+++ linux/drivers/hid/hid-lcpower.c 2011-01-24 17:01:00.000000000 +0100
@@ -0,0 +1,70 @@
+/*
+ * HID driver for LC Power Model RC1000MCE
+ *
+ * Copyright (c) 2011 Chris Schlund
+ * based on hid-topseed module
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
the Free
+ * Software Foundation; either version 2 of the License, or (at your
option)
+ * any later version.
+ */
+
+#include <linux/device.h>
+#include <linux/hid.h>
+#include <linux/module.h>
+
+#include "hid-ids.h"
+
+#define ts_map_key_clear(c) hid_map_usage_clear(hi, usage, bit, max, \
+ EV_KEY, (c))
+static int ts_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) != 0x0ffbc0000)
+ return 0;
+
+ switch (usage->hid & HID_USAGE) {
+ case 0x046: ts_map_key_clear(KEY_YELLOW); break;
+ case 0x047: ts_map_key_clear(KEY_GREEN); break;
+ case 0x049: ts_map_key_clear(KEY_RED); break;
+ case 0x04a: ts_map_key_clear(KEY_BLUE); break;
+ case 0x00d: ts_map_key_clear(KEY_HOME); break;
+ case 0x025: ts_map_key_clear(KEY_TV); break;
+ case 0x048: ts_map_key_clear(KEY_VCR); break;
+ case 0x024: ts_map_key_clear(KEY_MENU); break;
+ default:
+ return 0;
+ }
+
+ return 1;
+}
+
+static const struct hid_device_id ts_devices[] = {
+ { HID_USB_DEVICE( USB_VENDOR_ID_LCPOWER,
USB_DEVICE_ID_LCPOWER_LC1000) },
+ { }
+};
+MODULE_DEVICE_TABLE(hid, ts_devices);
+
+static struct hid_driver ts_driver = {
+ .name = "LC RC1000MCE",
+ .id_table = ts_devices,
+ .input_mapping = ts_input_mapping,
+};
+
+static int __init ts_init(void)
+{
+ return hid_register_driver(&ts_driver);
+}
+
+static void __exit ts_exit(void)
+{
+ hid_unregister_driver(&ts_driver);
+}
+
+module_init(ts_init);
+module_exit(ts_exit);
+MODULE_LICENSE("GPL");
diff -urN linux-2.6.37/drivers/hid/Kconfig linux/drivers/hid/Kconfig
--- linux-2.6.37/drivers/hid/Kconfig 2011-01-05 01:50:19.000000000 +0100
+++ linux/drivers/hid/Kconfig 2011-01-24 17:01:00.000000000 +0100
@@ -207,6 +207,13 @@
---help---
Support for Kensington Slimblade Trackball.
+config HID_LCPOWER
+ tristate "LC-Power" if EMBEDDED
+ depends on USB_HID
+ default !EMBEDDED
+ ---help---
+ Support for LC-Power RC1000MCE RF remote control.
+
config HID_LOGITECH
tristate "Logitech devices" if EMBEDDED
depends on USB_HID
diff -urN linux-2.6.37/drivers/hid/Makefile linux/drivers/hid/Makefile
--- linux-2.6.37/drivers/hid/Makefile 2011-01-05 01:50:19.000000000 +0100
+++ linux/drivers/hid/Makefile 2011-01-24 17:01:00.000000000 +0100
@@ -41,6 +41,7 @@
obj-$(CONFIG_HID_GYRATION) += hid-gyration.o
obj-$(CONFIG_HID_KENSINGTON) += hid-kensington.o
obj-$(CONFIG_HID_KYE) += hid-kye.o
+obj-$(CONFIG_HID_LCPOWER) += hid-lcpower.o
obj-$(CONFIG_HID_LOGITECH) += hid-logitech.o
obj-$(CONFIG_HID_MAGICMOUSE) += hid-magicmouse.o
obj-$(CONFIG_HID_MICROSOFT) += hid-microsoft.o
next reply other threads:[~2011-01-24 16:52 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-24 16:51 chris schlund [this message]
2011-01-25 13:01 ` [PATCH] hid kernel module for wireless remote LC Power model RC1000MCE Jiri Kosina
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D3DAE2F.3080009@gmx.de \
--to=chrisschlund@gmx.de \
--cc=jkosina@suse.cz \
--cc=linux-input@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.