[РЕШЕНО] Назначение действий на особую клавишу

Shatur
А как назначить что-то лучше?
Не вдавался в подробности, что конкретно нужно (так что как всегда мог что и пропустить), но попробуй xbindkeys
Ошибки не исчезают с опытом - они просто умнеют
Сначала присваиваешь потерянный кейкод. А потом сочетание заработает и сможешь ее использовать в своих скриптах
У меня так:
, ((0, xF86XK_WLAN), spawn "WIFI")
Это из xmonad, где WIFI- мой пользовательский скрипт, который отключает/включает Wi-Fi
Я здесь не использовал xbindkeys
Или как vasek, говорит, можешь назначить сочетание через xbindkeys

Или, если у тебя DE штатными средствами можно назначить сочетание. Ну ты понял ;-)

PS Я долго маялся, т.к. мой скрипт требует привилегий суперпользователя- у тебя легче будет.
Morisson
Сначала присваиваешь потерянный кейкод. А потом сочетание заработает и сможешь ее использовать в своих скриптах
Ага, кажется, понял теоретическую суть! Получается, что нужно только назначить сканкоду кейкод, а дальше штатными средствами DE смогу уже. Но что-то я делаю не так, мне кажется.
Значит смотрю я вывод evtest для Fn+F11:
Event: time 1501505222.547181, type 4 (EV_MSC), code 4 (MSC_SCAN), value 69
Event: time 1501505222.547181, -------------- SYN_REPORT ------------
Event: time 1501505222.557892, type 4 (EV_MSC), code 4 (MSC_SCAN), value 69
Event: time 1501505222.557892, -------------- SYN_REPORT ------------
Где "69" это сканкод в 16-ричной, который я должен назначить.
Смотрю я в файл:
/usr/include/linux/input-event-codes.h
Там я нашел такую строку:
#define KEY_LIGHTS_TOGGLE	0x21e	/* Reading light on or off */
Решил попробовать назначить ее. Создаю файл /etc/udev/hwdb.d/90-custom-keyboard.hwdb с таким содержимым:
evdev:atkbd:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*
 KEYBOARD_KEY_69=lights_toggle
Не понял, правда, где брать точные значения первой строки под свое устройство, но смотрю и у Вас и в примере на вики строка именно такая. Перезагружаюсь (чтобы наверняка уже), но evtest говорит тоже самое, что и до этого. Он же должен был показать уже сканкод в одной строке и кейкод в другой? Подскажите, пожалуйста)
А, все, получилось, назначил:
Event: time 1502632152.395624, type 4 (EV_MSC), code 4 (MSC_SCAN), value 69
Event: time 1502632152.395624, type 1 (EV_KEY), code 542 (KEY_LIGHTS_TOGGLE), value 1
Event: time 1502632152.395624, -------------- SYN_REPORT ------------
Event: time 1502632152.407099, type 4 (EV_MSC), code 4 (MSC_SCAN), value 69
Event: time 1502632152.407099, type 1 (EV_KEY), code 542 (KEY_LIGHTS_TOGGLE), value 0
Правда, в самом DE (Cinnamon) не воспринимается в настройках комбинации клавиш. Причем, например, на Fn+увеличение яркости можно назначиться, а вот на Fn+F11, который я назначал и который показывается в evtest - нет.
Shatur, xev показывает? Ловит сочетание? Если да- тогда сочетание клавишь настрой.
Я, например, подсветку регулирую xbacklight.
Fn-вниз -
xbacklight -dec 10
- снизить яркость на 10%
Fn-вверх -
xbacklight -inc 10
- увеличить яркость на 10%
но у меня WM.
На других дистрах все само работает.
Еще есть момент- выбор правильной клавиатуры.
Я запускаюсь через xinitrc и у меня там прописано:
setxkbmap -model acer_laptop -layout us,ru -variant -option grp:caps_toggle,terminate:ctrl_alt_bksp &
т.е указана конкретно моя модель клавиатуры для acer.
Morisson
Shatur, xev показывает? Ловит сочетание? Если да- тогда сочетание клавишь настрой.
Не показывает:(
А почему такое может быть? Вроде, evtest ловит, показывает кейкод.
Morisson
Еще есть момент- выбор правильной клавиатуры.
Клавиатура, думаю, правильно выбрана, все клавиши работают, кроме Fn+F11, которая должна врубать подсветку (официального софта под Linux же нет). Я нашел как можно включить и выключить подсветку клавиатуры, но надо вот назначить на эту комбинацию.
/etc/udev/hwdb.d/
здесь сканкоду присваивается пользовательский кейкод
Не внимательно читал
Если не работает- сделал что-то не верно.
Morisson
/etc/udev/hwdb.d/
Так я так и делал, создавал файл)
Система увидела мою комбинацию в evtest (видно, что назначил fn+f11):
Event: time 1502987270.520599, type 4 (EV_MSC), code 4 (MSC_SCAN), value 69
Event: time 1502987270.520599, type 1 (EV_KEY), code 476 (KEY_FN_F11), value 1
Event: time 1502987270.520599, -------------- SYN_REPORT ------------
Event: time 1502987270.529961, type 4 (EV_MSC), code 4 (MSC_SCAN), value 69
Event: time 1502987270.529961, type 1 (EV_KEY), code 476 (KEY_FN_F11), value 0
Event: time 1502987270.529961, -------------- SYN_REPORT ------------
Но вот все остальное ее не распознает. Не показывается ни в xev, ни в утилите натроек клавиш Cinnamon, ни в xbindkeys.
Но если на эту же кнопку назначить что-то другое (например, Alt), то система его видит. Но я же не могу оставить на Fn+F11 кнопку, которая используется клавиатурой, неудобно даже комбинации назначать.
Shatur
Система увидела мою комбинацию в evtest (видно, что назначил fn+f11):
Ничего она не увидела. Похоже комбинация клавиш не мапится.
Fn+F11 — мультимедийная клавиша и похоже разрыв в 3-х уровневой цепочке skancode --- keycode --- keysym, скорее всего не определен keysym.
Вот мой вывод evtest Fn+F11
type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
а вот вывод xev Fn+F11
state 0x0, keycode 172 (keysym 0x1008ff14, XF86AudioPlay), same_screen YES
И видим keysym = 0x1008ff14, а вот название keysymname немного разные, но это можно уточнить в файле /usr/include/X11/XF86keysym.h
И если бы мне нужно было эту мультимедийную клавишу забиндить, то вот что было бы мне нужно прописать в xbindkeysrc
$ xbindkeys -k
"(Scheme function)"
    m:0x0 + c:172
    XF86AudioPlay
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.