Это баг ядра или такая фича? Купил клавиатуру, на которой майуточные разработчики вместо верхнего ряда сделали дурацкие медиаклавиши. Думал, чт удастся переназначить через setkeycodes, однако получаю:
KDSETKEYCODE: Недопустимый аргумент failed to set scancode xxx to keycode xx
Попробовал на десктопе с другой версией ядра, там всё работает. На телефоне с 2.6.35 и планшете с 3.0.76-sunxi не работает. Проверил getkeycodes, но он тоже не работает: Plain scancodes xx (hex) versus keycodes (dec) 0 is an error; for 1-88 (0x01-0x58) scancode equals keycode
0x58: 88 - - - - - - - 0x60: - - - - - - - - 0x68: - - - - - - - - 0x70: - - - - - - - - 0x78: - - - - - - - -
Escaped scancodes e0 xx (hex)
e0 00: - - - - - - - - e0 08: - - - - - - - - e0 10: - - - - - - - - e0 18: - - - - - - - - e0 20: - - - - - - - - e0 28: - - - - - - - - e0 30: - - - - - - - - e0 38: - - - - - - - - e0 40: - - - - - - - - e0 48: - - - - - - - - e0 50: - - - - - - - - e0 58: - - - - - - - - e0 60: - - - - - - - - e0 68: - - - - - - - - e0 70: - - - - - - - - e0 78: - - - - - - - -
strace пишет, что при запросах происходит EINVAL. Пробовал пересобирать getkeycodes (вырезал из него предварительно все привязки, чтобы работал на одном лишь libc), результат тот же. Куда копать и чем? Задолбался уже пальцы с кнопкой fn выворачивать.