heitbaum / hid_mapper Goto Github PK
View Code? Open in Web Editor NEWThis project forked from s-leroux/hid_mapper
Linux daemon to map HID events to key events
License: GNU General Public License v3.0
This project forked from s-leroux/hid_mapper
Linux daemon to map HID events to key events
License: GNU General Public License v3.0
USB HID devices communicates with the host computer by sending binary reports. Unfortunately, some devices do not provide enough information for the Linux `hiddev` driver to parse those reports. In order to communicate with those devices, `hid_mapper` use the low level `hidraw` driver as well as a user provided map file to translate "raw reports" to keys. `hid_mapper` was specifically designed in order to use "non-compliant" USB HID IR remote receiver with XBMC, but should work with any USB HID device and for any other application. This README is based on http://forum.xbmc.org/showthread.php?tid=88560 This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the LICENSE file for more details. Build hid_mapper: ================= cd /path/to/hid_mapper ./make (see `INSTALL` for other build options) List recognized devices: ======================== ./hid_mapper --list-devices If necessary, blacklist the device in Xorg so it does not conflict with the mapper. Create a new file in /usr/share/X11/xorg.conf.d/. For example `50-remote.conf` containing: Section "InputClass" Identifier "Remote blacklist" MatchProduct "PHILIPS MCE USB IR Receiver- Spinel plusf0r ASUS" Option "Ignore" "on" EndSection Capture HID events (traditional way): ===================================== ./hid_mapper --learn \ --manufacturer 'PHILIPS' \ --product 'MCE USB IR Receiver- Spinel plusf0r ASUS' This will log events recieved while pressing buttons on the remote. As an example, pressing "OK" on the Philips MCE USB IR Receiver will produce: Found HID device at /dev/hidraw0 01 00 00 28 00 00 00 00 00 01 00 00 00 00 00 00 00 00 The first event (line `01 00 00 28 00 00 00 00 00`) is the _key down_ event corresponding to the pressed button. Based on the info gathered by pressing the various buttons of your remote, and using keys defined in `/usr/include/linux/input.h`, write (yourself!) a map file consisting of <key code>:<key symbol> pairs: 010000280000000000:KEY_ENTER 030000000000020000:KEY_KP1 030000000000040000:KEY_KP2 030000000020000000:KEY_C 030000000000008000:KEY_TAB (see the maps/ directory for user contributed examples) Capture HID events (learn+map way): =================================== It is somehow annoying (well, error prone ... well, no, annoying) to first collect the HID event (`--learn`) and then write the corresponding map. If you want to do that in "one pass", you might use the new learn+map feature. This will require first an "empty" map containing all the keys you want to learn. In that map, keys to "learn" must have the value `00` as HID event hexdump, like in that example (from `maps/xbmc-base.map`): 00:KEY_RECORD 00:KEY_PAUSE 00:KEY_STOP 00:KEY_REWIND 00:KEY_PLAY 00:KEY_FORWARD 00:KEY_LEFTSHIFT 00:KEY_RIGHTSHIFT When fed with such a map with both `--learn` and `--map` options set, `hid_mapper` will ask you to press each key in its turn, producing a valid key map on standard output: ./hid_mapper --learn \ --manufacturer 'PHILIPS' \ --product 'MCE USB IR Receiver- Spinel plusf0r ASUS' \ --map maps/xbmc-base.map > maps/asus-spinnel.map # ^^^^^^^^^^^^^^^^^^^^^^^ # This redirection will send the command # output directly to the given file # Note: old content is lost! # (use `>>` to append -- if you are not # accustomed to shell redirections it might # be a good time to learn) Depending your needs/your HID device/your software you might have to manually tweak the output map (i.e.: on XBMC Eden, I had to rename some keys afterward: KEY_INFO -> KEY_I, and so on), but it is usually a very good starting point. Run the mapper: =============== The final step is to actually run the mapper: ./hid_mapper \ --manufacturer 'PHILIPS' \ --product 'MCE USB IR Receiver- Spinel plusf0r ASUS' \ --map 'maps/asus-spinel.map' At this point the remote should work and emit the keys specified in the map file. Since the hidraw driver is generic, this mapper should work with any HID receiver, even if it is not a remote. HID is used for keyboard, mouses, joysticks...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.