LINUX.ORG.RU

Проблема с fn-клавишами

 , , ,


0

1

Доброго времени суток. Недавно поставил себе дженту с третьим гномом и, соответственно, с systemd. Все работает замечательно, кроме одной небольшой неприятности.

Если после загрузки системы не переподключить клавиатуру (выдернуть шнур и вставить обратно), то функциональные клавиши не работают. В частности, клавиши: prev track (FN + F5), play/pause (FN + F6), next track (FN + F7), отвечающие за контроль плеера (тестировалось на Banshee/Amarok/VLC, т.е. проблема не касается конкретного плеера).

Клавиатура - Razer Deathstalker.

кусок лога из journalctl до переподключения http://pastebin.com/QqZu0C2K (fn-кнопки не работают)

кусок лога после переподключения http://pastebin.com/Cb30LhWF (после чего fn-кнопки работают, как задумано)

часть выхлопа lsusb -v http://pastebin.com/mpq9iB1m

cat /etc/portage/make.conf
...
INPUT_DEVICES="evdev"
....

Штука некритичная, но все же хотелось бы разобраться. Спасибо.

Можно поставить xev, понажимать там fn+f*, и сравнить результат в обоих случаях. Это прояснит, что клавиатура посылает при нажатии

disarmer ★★★ ()
Ответ на: комментарий от disarmer

Спасибо за наводку. Поставил xev, полезная утилита. Стало понятно, что во время проявления вышеописанной проблемы, fn-кнопка не изменяет сканкод клавиш F1-F12.

Вот что говорит xev при нажатии fn-F6:

KeyPress event, serial 36, synthetic NO, window 0x1400001,
    root 0xad, subw 0x0, time 496220, (1511,1143), root:(1525,1242),
    state 0x10, keycode 72 (keysym 0xffc3, F6), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x1400001,
    root 0xad, subw 0x0, time 496279, (1511,1143), root:(1525,1242),
    state 0x10, keycode 72 (keysym 0xffc3, F6), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

т.е. посылается сканкод F6. Аналогично выглядит и обычное нажатие F6.

А вот что происходит после переподключения клавиатуры и нажатия fn+F6:

FocusOut event, serial 37, synthetic NO, window 0x2800001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 37, synthetic NO, window 0x2800001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 37, synthetic NO, window 0x0,
    keys:  2   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

fn+F6 перехватывается службой, ответственной за глобальные хоткеи, а плеер начинает проигрывать трек из плейлиста.

Чтобы посмотреть сканкод fn-F6 (хотя и смысла в этом мало), я разбиндил эту комбинацию в гномовских настройках клавиатуры. Вот что теперь говорит xev:

KeyPress event, serial 43, synthetic NO, window 0x2c00001,
    root 0xad, subw 0x0, time 2858628, (795,821), root:(835,926),
    state 0x10, keycode 172 (keysym 0x1008ff14, XF86AudioPlay), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 43, synthetic NO, window 0x2c00001,
    root 0xad, subw 0x0, time 2858687, (795,821), root:(835,926),
    state 0x10, keycode 172 (keysym 0x1008ff14, XF86AudioPlay), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

посылается XF86AudioPlay, fn-кнопка работает.

Ранее эта клавиатура юзалась только на оффтопе, проявления данной проблемы не было, следовательно, проблема не хардварная. Сегодня попытаюсь протестировать её на live-дистрибутивах с иксами.

Кстати, сегодня выявилось еще одно обстоятельство. После загрузки системы, fn-кнопки работали нормально. Мне пришлось ребутаться, чтобы попытаться воспроизвести данный баг. После ребута, как и ожидалось, fn перестала работать, а переподключение клавы все пофиксило. Позднее во время работы системы, без перезагрузок и выключения, fn опять отвалилось...

Nietzsche ()
Ответ на: комментарий от Nietzsche

Ранее эта клавиатура юзалась только на оффтопе, проявления данной проблемы не было, следовательно, проблема не хардварная.

Сомнительное заключение.

Поскольку все описанные симптомы склоняют именно к противоположному. Проблема чисто в клавиатуре, ну и может быть в питании.

Elyas ★★★★★ ()
Ответ на: комментарий от Nietzsche

следовательно, проблема не хардварная.

Не уверен, fn никак не должен относиться к системе. Но у razer слишком хитрый контроллер (на моей например пришлось писать утилиту, чтобы заработали дополнительные клавиши m1-m5). Скорее всего проблема в контроллере клавиатуры.

Похоже у меня тоже сейчас воспроизвелось на razer blackwidow, хотя раньше мультимедиа клавиши вроде бы работали(нечасто пользуюсь). Сначала в xev были видны нажатия на fn(хотя не должны быть), после fn+f5 оно вообще залипло, пока не убил xev

disarmer ★★★ ()
Ответ на: комментарий от disarmer

Действительно, я поспешил с выводом. Проблема оказалась ближе к железу, чем я предполагал.

После сообщения Elyas'а, откопал старую клавиатуру Trust 17372-03, на которой также есть fn, подключил её параллельно с razer'ом. Попытался воспроизвести условия при которых проявляется баг, но после 5 ребутов баг так и не проявился. Методом научного тыка, додумался грузануться в винду, а после неё обратно в дженту. FN-кнопки перестали работать, но только на razer'е. Видимо, винда каким-то образом оскверняет разеровский контроллер, после чего клаву требуется перехотплагить, чтобы линукс смог отпустить грех :D

Всем спасибо. Удалось докопаться до истины. Считаю, что проблема решена.

Nietzsche ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.