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

vasek
Fn+F11 — мультимедийная клавиша и похоже разрыв в 3-х уровневой цепочке skancode --- keycode --- keysym, скорее всего не определен keysym.
Ага, так вот в чем дело, осталось назначить keysym! Хорошо, а я если мне на эту клавишу надо повесть bash-скрипт, который включает подсветку с помощью утилиты, то как это сделать? Я могу назначить этой клавише что-то(хоть букву R), а потом просто в настройках комбинаций клавиш DE выставить. Но это не очень удобно...
Shatur
а я если мне на эту клавишу надо повесть bash-скрипт, который включает подсветку с помощью утилиты, то как это сделать?
Можешь вешать все что угодно с помощью xbindkeys, но сначала нужно добиться, чтобы эта мультимедийная клавиша (Fn+F11) заработала/мапилась, точнее говоря полностью определялась в выводе xbindkeys -k .......... но маловероятно что тебе это удастся сделать.
Чтобы не мучаться и не выеживаться возьми другую удобную для тебя комбинацию клавиш и забинди ее на нужную тебе команду.
Ошибки не исчезают с опытом - они просто умнеют
vasek
Можешь вешать все что угодно с помощью xbindkeys, но сначала нужно добиться, чтобы эта мультимедийная клавиша (Fn+F11) заработала/мапилась, точнее говоря полностью определялась в выводе xbindkeys -k .......... но маловероятно что тебе это удастся сделать.
Чтобы не мучаться и не выеживаться возьми другую удобную для тебя комбинацию клавиш и забинди ее на нужную тебе команду.
Так я бы давно так сделал, просто зашел бы в настройки клавиш DE и выставил. Хочу как раз-таки "поиграться":)
Shatur
Так я бы давно так сделал, просто зашел бы в настройки клавиш DE и выставил. Хочу как раз-таки "поиграться":)
А если нет DE, а стоит WM? - тогда проще xbindkeys.
А если поиграться, то желательно почитать о мультимедийных клавишах - написано на эту тему много (и настройка и привязка и др.).
Ну и желательно также проверить/посмотреть свои keysym (с какими keycode связаны, какие имеют назначения/keysymname и др.) - вот, например, какой у тебя keysym/keysymname привязан к данному keycode (Fn+F11)?
Ошибки не исчезают с опытом - они просто умнеют
vasek
А если нет DE, а стоит WM? - тогда проще xbindkeys.
Ну да, или так.
vasek
А если поиграться, то желательно почитать о мультимедийных клавишах - написано на эту тему много (и настройка и привязка и др.).
Да вот прошерстываю сейчас.
vasek
Ну и желательно также проверить/посмотреть свои keysym (с какими keycode связаны, какие имеют назначения/keysymname и др.) - вот, например, какой у тебя keysym/keysymname привязан к данному keycode (Fn+F11)?
Судя по всему - никакой, раз в xev не отображается.
Сейчас попробовал кейкод этой нопки (Fn+F11, кейкод 476) через Xmodmap назначить на XF86AudioPause (просто чтобы проверить, назначается ли что-то). Создал файл в домашней папке
cat ~/.Xmodmap
keycode 476 = XF86AudioPause
И применил настройки:
xmodmap ~/.Xmodmap
Ничего не поменялось. Мне кажется, что я что-то не до конца понимаю...
Shatur
Да вот прошерстываю сейчас.
Начни с Wiki
Shatur
кейкод 476
С этим можно и не играться - если не ошибаюсь, то ядро Linux обрабатывает keycode в диапазоне от 8 до 255 включительно. Все остальные игнорируются - хотя если быть точным, то тоже что то обрабатываются, но там уже другая кухня. Подробности не помню, давно не читал.
PS ... есть утилита getkeycodes, которая выводит таблицу соответствия сканкод --- кейкод ....... и насколько я помню, значений больше 255 там нет ... одно но, пользоваться таблицей не так то просто, придется попотеть.
PSS ... а может причина в таком большом кейкоде в том, что ты что то уже делал ручками? Этот код уникальный - его можно менять, но одинаковых быть не должно и должно быть соответствие сканкоду согласно таблицы, упомянутой выше.
Ошибки не исчезают с опытом - они просто умнеют
vasek
Начни с Wiki
Так на Wiki и смотрю.
vasek
С этим можно и не играться - если не ошибаюсь, то ядро Linux обрабатывает keycode в диапазоне от 8 до 255 включительно. Все остальные игнорируются - хотя если быть точным, то тоже что то обрабатываются, но там уже другая кухня. Подробности не помню, давно не читал.
Хм, вот оно как...
vasek
PSS ... а может причина в таком большом кейкоде в том, что ты что то уже делал ручками?
Все, что я делал - назначил сканкоду кейкод. Я так понял, что без этого никак? Вот тут я все расписал.
Все остальные изменения я отменил.
Shatur
Хм, вот оно как...
Посмотри, например, это
PS ... чтобы не путался насчет указанного там значения 248+8 - уточняю что есть разница в значении кейкода, определяемого showkey и xev - она равна 8 - добавляет xorg ............ а вот evtest показывает такое же значение, как и showkey (и на 8 меньше, чем xev) - посмотри мой вывод xev и evtest на предыдущей странице (хотел тогда это отметить, но забыл)
Ошибки не исчезают с опытом - они просто умнеют
Получилось!
Вот как я сделал (от и до):
Смотрю я вывод 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_FN_F11		0x1dc
Решил попробовать назначить ее согласно Wiki. Создаю файл /etc/udev/hwdb.d/90-custom-keyboard.hwdb с таким содержимым:
evdev:atkbd:dmi:*
 KEYBOARD_KEY_69=fn_f11
Далее обновляю hwdb и перезагружаюсь:
sudo systemd-hwdb update
Теперь evtest показывает, что у меня получилось:
vent: 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 ------------
Но в настройках DE для назначения комбинаций клавиш, и в xev клавиша по прежнему не отображается. И я не мо понять, почему.
Но ув. vasek подсказал мне:
vasek
если не ошибаюсь, то ядро Linux обрабатывает keycode в диапазоне от 8 до 255 включительно. Все остальные игнорируются - хотя если быть точным, то тоже что то обрабатываются, но там уже другая кухня.
Тогда я понял, что надо попробовать назначить на FN+F11 какую-то другую клавишу с кейкодом меньше, чем 255. Например, у моей клавиши, что я прописал в 90-custom-keyboard.hwdb кейкод 476.
Я порылся еще в файле input-event-codes.h и нашел там F14, которой у меня на клавиатуре вообще нет:
#define KEY_F14			184
Справа, кстати, цифра соответствует ее кейкоду.
Ну и я назначил ее на Fn+F11, вот так в моем файле 90-custom-keyboard.hwdb получилось:
evdev:atkbd:dmi:*
 KEYBOARD_KEY_69=f14
Не забываю обновить hwdb и перезагружаюсь.
Все, в evtest у меня вот так:
Event: time 1503067393.904244, type 4 (EV_MSC), code 4 (MSC_SCAN), value 69
Event: time 1503067393.904244, type 1 (EV_KEY), code 184 (KEY_F14), value 1
Event: time 1503067393.904244, -------------- SYN_REPORT ------------
Event: time 1503067393.916293, type 4 (EV_MSC), code 4 (MSC_SCAN), value 69
Event: time 1503067393.916293, type 1 (EV_KEY), code 184 (KEY_F14), value 0
Event: time 1503067393.916293, -------------- SYN_REPORT ------------
И в xev клавиша показывается.
А дальше можно назначать средствами DE (что я и сделал) или xbindkeys.
 
Зарегистрироваться или войдите чтобы оставить сообщение.