#/usr/bin/python
import os
infile = os.open("/dev/hidraw2", os.O_RDONLY)
while infile:
key=""
for each_char in os.read(infile,5):
key=key+str(ord(each_char))
if (key!=«100»):
print key
#Left side multimedia buttons
if (key==«119112»):
os.system(«xdotool key XF86Messenger»)
if (key==«11481»):
os.system(«xdotool key XF86MyComputer»)
if (key==«11381»):
os.system(«xdotool key XF86Mail»)
if (key==«1352»):
os.system(«xdotool key XF86HomePage»)
if (key==«1422»):
os.system(«xdotool key XF86Favorites»)
if (key==«1362»):
os.system(«xdotool key XF86Back»)
if (key==«1372»):
os.system(«xdotool key XF86Forward»)
if (key==«1392»):
os.system(«xdotool key XF86Refresh»)
#Right side multimedia buttons
if (key==«11311»):
os.system(«xdotool key XF86AudioMedia»)
if (key==«12050»):
os.system(«xdotool key XF86PlayPause»)
if (key==«11830»):
os.system(«xdotool key XF86AudioStop»)
if (key==«11820»):
os.system(«xdotool key XF86AudioPrev»)
if (key==«11810»):
os.system(«xdotool key XF86AudioNext»)
if (key==«12330»):
os.system(«xdotool key XF86AudioRaiseVolume»)
if (key==«12340»):
os.system(«xdotool key XF86AudioLowerVolume»)
if (key==«12260»):
os.system(«xdotool key XF86AudioMute»)
#Mode button
if (key==«116112»):
os.system(«xdotool key XF86Launch0»)
Upd 3. Проблема решена. Пишу простой скрипт на питоне, который читает из /dev/hidraw и эмулирует стандартный код мультимедийных клавиш. Вот заготовка:
#/usr/bin/python
import os
infile = os.open("/dev/hidraw2", os.O_RDONLY)
while infile:
key=""
for each_char in os.read(infile,5):
#print ord(each_char),
key=key+str(ord(each_char))
Upd 2. Проблема с drivers/hid/hid-core.c: usage index exceeded решилась. Нужно всего лишь изменить одну строку в hid-core.c. А именно: if (parser->local.usage_index >= HID_MAX_USAGES) на if (parser->local.usage_index >= HID_MAX_USAGES+1). Теперь все клавиши распознаются в debugfs hid event. Дальше осталось написать драйвер.
Upd 1. Клавиатура устроена таким образом, что при подключении работает как-бы 3 разных hid устройства. 1)Сама клавиатура 2)Мультимедийные клавиши 3)Переключатель режимов макросов. Осталось разобраться, в чем именно проблема при обращении ко второму девайсу и устранить эту проблему.
Гуглил о совместимости перед покупкой. Видел, что у людей были проблемы. Но не думал, что с клавиатурами в линуксе все бывает так плохо. До этого настраивал 4 клавиатуры с мультимедийными клавишами — все работали в линуксе (хотя некоторые капризничали). Но такого, чтобы вообще не получать сигнал от клавиш на уровне usbmon, еще не было. Keytouch хорош, если уже хоть что-то получать в /dev/input/eventN. Буду копать в сторону написания драйвера. Спасибо!
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.