Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I already got the keycode from kernel, but acpi_listen won't recognize it in Arch Linux:

# /usr/lib/udev/keymap -i /dev/input/by-path/platform-thinkpad_acpi-event
Press ESC to finish, or Control-C if this device is not your primary keyboard
scan code: 0x1A    key code: micmute

Now I try to map the key by:

# /usr/lib/udev/keymap /dev/input/by-path/platform-thinkpad_acpi-event 0x01a micmute
setting scanode 0x1A to key code 248

But acpi_listen still got no output here.

How should I make acpi_listen recognize it?

UPDATE2

Well , evdev driver doesn't seem to recognize this , I heard someone saying that xorg won't route key event number that went beyond the limit..

It has to be solved as a acpi event , but don't know how

UPDATE

Seems to be complicated,

$ xmodmap -e 'keycode 248 = XF86MicMute NoSymbol XF86MicMute'
xmodmap:  commandline:1:  bad keysym name 'XF86MicMute' in keysym list
xmodmap:  commandline:1:  bad keysym name 'XF86MicMute' in keysym list
xmodmap:  2 errors encountered, aborting.
share|improve this question
1  
Maybe this helps you, at least gaining insights (and as this progably won't be fixed soon, a workaround; German, but probably self-explanatory) –  sr_ May 18 '12 at 14:05
    
Found an English post describing the workaround (I don't see any reason for this not to work in Ubuntu). –  sr_ May 23 '12 at 9:11
    
@sr_ I found that long time ago , and it doesn't work on Arch Linux .. –  warl0ck May 23 '12 at 9:35
    
The keycode 248 is simply not mapped because 248+8>255, the hard-coded limit... So to workaround you first have to change this on a lower level before xmodmap is of any use. –  sr_ May 23 '12 at 9:58
    
@sr_ i forget to reboot to make those changes effects , it worked indeed .. –  warl0ck May 26 '12 at 1:18

1 Answer 1

up vote 1 down vote accepted
+50

The problem is that key code micmute is out of range, as explained in this bug report. So you need to remap scan code 0x1A to some other key code you are not using that is in range. If this workaround using prog2 doesn't work you have to pick some other key code. You can look in /usr/include/linux/input.h to see which key codes are defined and then look at your keymap to see what key codes are in use. Remember to pick a key code < 247.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.