
j2u44u at gmail
Feb 8, 2010, 3:57 PM
Post #5 of 13
(1345 views)
Permalink
|
|
Re: different key remappings for different keyboards? [kernel-level SOLUTION]
[In reply to]
|
|
This looks *exactly* like what I was looking for. Thanks for the work and the explanation David -- I'll try it out tonight! -j On Mon, Feb 8, 2010 at 3:06 PM, David Kubicek <foceni [at] gmail> wrote: > On 02/08/2010 07:50 PM, David Kubicek wrote: > >> On 02/08/2010 06:37 PM, j2u4 j2u4 wrote: >> >>> My myth frontend has two keyboards -- the regular one, and a nice >>> VRC-1100 remote control (all buttons register as keypresses). >>> >>> I would like the buttons that generate ESC and BACKSPACE remapped on the >>> remote control, which I can do easily enough with xmodmap. But I'd also >>> like the buttons on the regular keyboard to *not* be remapped. I don't >>> think there is any way to do that with xmodmap, since the mappings are >>> not device-specific. But maybe it can be done lower down, like with >>> setkeycodes? Has anyone played with this? >>> >>> > I checked keyfuzz out (I mentioned it earlier) and it works great, I just > had to find a few things which changed in kernel since then make two changes > in the source accordingly. Remember, you're changing the runtime translation > tables in the very heart on the Linux INPUT system, so this mapping is > completely transparent on all levels. No other configuration is necessary. > > You need to install these packages: xmltoman, gengetopt, gperf, joystick. > Plus, of course, gcc, autoconf, automake and similar tools (some are in pkg > "build-essential" in Debian/Ubuntu). Then get the source and apply my > attached patch: > > # git clone git://git.0pointer.de/keyfuzz.git > # cd keyfuzz > # ./bootstrap.sh > # ./configure > # cd src > # patch -p1 < keyfuzz.patch > # make > > Done. Now find which /dev/input device corresponds to which keyboard (using > "lsinput" from input-utils) or "lshal" can tell you directly if you don't > mind searching for a while. > > Now to scancode/keycode mapping. The following will print out the complete > mapping table. Save it. :) > > # src/keyfuzz -d /dev/input/event4 --get > > You need to find a line like this if you want to remap ESC: > > 0x70029 KEY_ESC > > Think of another mapping you want that scan code (HW button) to map to and > when ready (let's say ESC key should be TAB), run: > > # echo "0x70029 KEY_TAB" | src/keyfuzz -d /dev/input/event4 --set > > You can include several commands like this in your /etc/rc.local or similar > location to make them permanent. Possibly copy the keyfuzz binary into > /usr/local/bin/ (or run "make install" if you don't mind the unnecessary > mess). > > The complete list of KEY_* values is in /usr/include/linux/input.h > For testing your results, use "evtest" tool from the joystick package I > listed. > > That's it, easy. Except this won't work for input devices requiring > "uinput" module. It's a kernel INPUT driver for user-space daemons (like > BlueZ) which allows them to plug into kernel INPUT. So most IR and BT > keyboards cannot be remapped in this way. Uinput doesn't keep a keymap > table, it's a responsibility of the user-space application. You'd have to > hack on BlueZ or Lirc daemon sources to change the mapping. > > > -- > David Kubicek >
|