xev не видит функциональные клавиши
Модераторы: Warderer, Модераторы разделов
- Ququshka77
- Сообщения: 11
- ОС: Debian, Windows7
xev не видит функциональные клавиши
добрый день!
настраиваю функциональные клавиши на ноутбуке, одна не определяется ни xev, ни showkey
$dmesg | tail
[ 2620.320893] atkbd serio0: Unknown key released (translated set 2, code 0xba on isa0060/serio0).
[ 2620.320901] atkbd serio0: Use 'setkeycodes e03a <keycode>' to make it known.
# xmodmap -pke | grep Eject
keycode 169 = XF86Eject NoSymbol XF86Eject
keycode 170 = XF86Eject XF86Eject XF86Eject XF86Eject
keycode 174 = XF86AudioStop XF86Eject XF86AudioStop XF86Eject
переназначаю:
# setkeycodes e03a 169
прописываю в .Xmodmap
~$ cat .Xmodmap
keycode 169 = XF86Eject XF86Eject XF86Eject
~$ xmodmap .Xmodmap
# xmodmap -pke grep 169
keycode 169 = XF86Eject XF86Eject XF86Eject
# showkey
..........
код клавиши 169 нажата
код клавиши 169 отпущена
..........
showkey определяет нажатие, a xev по прежнему молчит, что делаю не так?
ноутбук - samsung chronos 7 series
$ uname -a
Linux Samsung 4.2.0-1-amd64 #1 SMP Debian 4.2.5-1 (2015-10-27) x86_64 GNU/Linux
# dmidecode -s system-manufacturer
SAMSUNG ELECTRONICS CO., LTD.
# dmidecode -s system-product-name
700Z3C/700Z5C
# dmidecode -s system-version
0.1
настраиваю функциональные клавиши на ноутбуке, одна не определяется ни xev, ни showkey
$dmesg | tail
[ 2620.320893] atkbd serio0: Unknown key released (translated set 2, code 0xba on isa0060/serio0).
[ 2620.320901] atkbd serio0: Use 'setkeycodes e03a <keycode>' to make it known.
# xmodmap -pke | grep Eject
keycode 169 = XF86Eject NoSymbol XF86Eject
keycode 170 = XF86Eject XF86Eject XF86Eject XF86Eject
keycode 174 = XF86AudioStop XF86Eject XF86AudioStop XF86Eject
переназначаю:
# setkeycodes e03a 169
прописываю в .Xmodmap
~$ cat .Xmodmap
keycode 169 = XF86Eject XF86Eject XF86Eject
~$ xmodmap .Xmodmap
# xmodmap -pke grep 169
keycode 169 = XF86Eject XF86Eject XF86Eject
# showkey
..........
код клавиши 169 нажата
код клавиши 169 отпущена
..........
showkey определяет нажатие, a xev по прежнему молчит, что делаю не так?
ноутбук - samsung chronos 7 series
$ uname -a
Linux Samsung 4.2.0-1-amd64 #1 SMP Debian 4.2.5-1 (2015-10-27) x86_64 GNU/Linux
# dmidecode -s system-manufacturer
SAMSUNG ELECTRONICS CO., LTD.
# dmidecode -s system-product-name
700Z3C/700Z5C
# dmidecode -s system-version
0.1
Делай добро и бросай его в воду.
- Bizdelnick
- Модератор
- Сообщения: 20792
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: xev не видит функциональные клавиши
Не понял, что Вы делаете.
0xba — это десятичное 186, а у Вас дальше везде 169.Ququshka77 писал(а): ↑16.11.2015 03:00[ 2620.320893] atkbd serio0: Unknown key released (translated set 2, code 0xba on isa0060/serio0).
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: xev не видит функциональные клавиши
Спасибо сказали:
- Ququshka77
- Сообщения: 11
- ОС: Debian, Windows7
Re: xev не видит функциональные клавиши
пробуем по вашему варианту, Bizdelnick
нажатие определилось
запускаем xev, нажимаем клавишу - тишина!!!
dmesg тоже молчит
попробуем переопределить на свободный keycode 168
проверим
свободен!
применяем новые параметры
проверяем
с определением нажатия клавиши в консоли снова все ОК
xev по прежнему молчит, чудеса случаются, но видно не сегодня
Код: Выделить всё
# dmesg | tail
[ 123.137424] atkbd serio0: Unknown key released (translated set 2, code 0xba on isa0060/serio0).
[ 123.137433] atkbd serio0: Use 'setkeycodes e03a <keycode>' to make it known.
# xmodmap -pke | grep 186
keycode 186 = XF86ScrollDown NoSymbol XF86ScrollDown
# setkeycodes 0xba 186
~$ echo "keycode 186 = XF86ScrollDown XF86ScrollDown XF86ScrollDown" > .Xmodmap
~$ xmodmap .Xmodmap
# showkey
......................
код клавиши 186 нажата
код клавиши 186 отпущена
.....................
часть вывода showkey опущена
нажатие определилось
Код: Выделить всё
# xmodmap -pke | grep 186
keycode 186 = XF86ScrollDown XF86ScrollDown XF86ScrollDown
запускаем xev, нажимаем клавишу - тишина!!!
dmesg тоже молчит
попробуем переопределить на свободный keycode 168
проверим
Код: Выделить всё
# xmodmap -pke | grep 168
keycode 168 =
свободен!
Код: Выделить всё
# setkeycodes 0xba 168
~$ echo "keycode 168 = XF86Eject XF86Eject XF86Eject " > .Xmodmap
применяем новые параметры
Код: Выделить всё
~$ xmodmap .Xmodmap
проверяем
Код: Выделить всё
# xmodmap -pke | grep 168
keycode 168 = XF86Eject XF86Eject XF86Eject
# showkey
......................
код клавиши 168 нажата
код клавиши 168 отпущена
.....................
часть вывода showkey опущена
с определением нажатия клавиши в консоли снова все ОК
xev по прежнему молчит, чудеса случаются, но видно не сегодня
Делай добро и бросай его в воду.
- Ququshka77
- Сообщения: 11
- ОС: Debian, Windows7
Re: xev не видит функциональные клавиши
Bizdelnick писал(а): ↑16.11.2015 12:37Не понял, что Вы делаете.0xba — это десятичное 186, а у Вас дальше везде 169.Ququshka77 писал(а): ↑16.11.2015 03:00[ 2620.320893] atkbd serio0: Unknown key released (translated set 2, code 0xba on isa0060/serio0).
делаю так, потому что dmesg явно указал - Use 'setkeycodes e03a <keycode>' to make it known.
Из предыдущего сообщения видно, что не важно, какое число мы используем 0xba или e03a - результат один,
нажатие клавиши определяется только showkey, xev в обоих случаях молчит.
Делай добро и бросай его в воду.
- Bizdelnick
- Модератор
- Сообщения: 20792
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: xev не видит функциональные клавиши
Да, извиняюсь, ступил.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: xev не видит функциональные клавиши
Ququshka77
Можете попробовать магию? Поставьте 170 в setkeycodes и НЕ используйте xmodmap. И приложите Ваши
/usr/share/X11/xkb/symbols/inet
и
/usr/share/X11/xkb/keycodes/xfree86
На всякий случай.
Можете попробовать магию? Поставьте 170 в setkeycodes и НЕ используйте xmodmap. И приложите Ваши
/usr/share/X11/xkb/symbols/inet
и
/usr/share/X11/xkb/keycodes/xfree86
На всякий случай.
- Ququshka77
- Сообщения: 11
- ОС: Debian, Windows7
Re: xev не видит функциональные клавиши
Нагуглил тут https://bugs.launchpad.net/ubuntu/source/udev/bug/902798
Убунтоводы зарепортили этот баг, проблема была с udev (пофиксили). В debian, видимо, нет
Никогда не сообщал о багах, может есть кто на форуме с кем можно проконсультироваться на эту тему. С временем туго.
Чувствую, если полезу в гуглю - это на день точно.
Убунтоводы зарепортили этот баг, проблема была с udev (пофиксили). В debian, видимо, нет
Никогда не сообщал о багах, может есть кто на форуме с кем можно проконсультироваться на эту тему. С временем туго.
Чувствую, если полезу в гуглю - это на день точно.
Делай добро и бросай его в воду.
- Bizdelnick
- Модератор
- Сообщения: 20792
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: xev не видит функциональные клавиши
Однако по Вашей ссылке говорится, что
(Martin Pitt (pitti)) писал(а):Fixed in upstream trunk.
За прошедшее время должно было бы до дебиана докатиться. У Вас Jessie?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- Ququshka77
- Сообщения: 11
- ОС: Debian, Windows7
Re: xev не видит функциональные клавиши
NickLion писал(а): ↑16.11.2015 17:17Ququshka77
Можете попробовать магию? Поставьте 170 в setkeycodes и НЕ используйте xmodmap. И приложите Ваши
/usr/share/X11/xkb/symbols/inet
и
/usr/share/X11/xkb/keycodes/xfree86
На всякий случай.
только что попробовал, листинги не выкладываю - идентичны предыдущим, результат тотже
файлы приложил, пришлось их переименовать (добавить разширение .txt, форум ругался )
Bizdelnick писал(а): ↑16.11.2015 17:28
Однако по Вашей ссылке говорится, что(Martin Pitt (pitti)) писал(а):Fixed in upstream trunk.
За прошедшее время должно было до дебиана докатиться. У Вас Jessie?
У меня Sid, вывод uname -a в первом посте.
- Вложения
-
- inet.txt
- (62.93 КБ) 5 скачиваний
-
- xfree86.txt
- (8.43 КБ) 4 скачивания
Делай добро и бросай его в воду.
Re: xev не видит функциональные клавиши
Да, вообще-то там надо ставить 161/162 (а не 169/170). Но всё равно не работает в openSUSE тоже такой код. А назначить другие коды — без проблем. Странно.
- Ququshka77
- Сообщения: 11
- ОС: Debian, Windows7
Re: xev не видит функциональные клавиши
Просьба пояснить, почему 161/162. Из всей клавиатуры только две клавиши имеют эту проблему Fn+Delete (Eject cd) и FnLock/Unlock.
Мой выбор по назначению исходил из этого.
Код: Выделить всё
# xmodmap -pke | grep Eject
keycode 169 = XF86Eject NoSymbol XF86Eject
keycode 170 = XF86Eject XF86Eject XF86Eject XF86Eject
keycode 174 = XF86AudioStop XF86Eject XF86AudioStop XF86Eject
NoSymbol только у 169 клавиши из имеющих XF86Eject
По большому счету все равно, как она будет определяться, лишь бы определялась, чтобы ее можно было прописать в ~/.fluxbox/keys
Делай добро и бросай его в воду.
Re: xev не видит функциональные клавиши
Код, который использует setkeycodes и X'ы отличаются на 8. Можете поэкспериментировать, повесить на эту клавишу код 1 и получить Esc, при этом xev будет показывать код 9. И так же с другими кодами.
PS если сам код Вам не важен, повесьте 148, получите XF86Launch1.
PS если сам код Вам не важен, повесьте 148, получите XF86Launch1.
Спасибо сказали:
- Ququshka77
- Сообщения: 11
- ОС: Debian, Windows7
Re: xev не видит функциональные клавиши
А ларчик просто открывался!!!
В сторону бубен и никакой магии!!!
Удалось назначить клавише сканкод и имя, чтобы xev определял ее.
Получилось сделать это при соблюдении двух условий.
1. код клавиши в команде: "# setkeycodes 0xba 128 " должен быть в пределах 1 - 128
2. как подсказал NickLion - нужно учитывать разницу в 8 при назначении имени в .Xmodmap
Вечером подробно опишу весь процесс.
В сторону бубен и никакой магии!!!
Удалось назначить клавише сканкод и имя, чтобы xev определял ее.
Получилось сделать это при соблюдении двух условий.
1. код клавиши в команде: "# setkeycodes 0xba 128 " должен быть в пределах 1 - 128
2. как подсказал NickLion - нужно учитывать разницу в 8 при назначении имени в .Xmodmap
Вечером подробно опишу весь процесс.
Делай добро и бросай его в воду.
- Ququshka77
- Сообщения: 11
- ОС: Debian, Windows7
Re: xev не видит функциональные клавиши
Настройка дополнительных клавиш в случае если они не определяются xev и showkey.
Суть проблемы.
Имеются неработающие мультимедиа или дополнительные (Fn+<другая_клавиша>) клавиши на клавиатуре.
Утилиты для определения кейкодов xev и showkey никак не реагируют на нажатие этих клавиш.
В выводе dmesg имеются строчки вида:
Решение.
1. определим сканкод клавиши
нажимаем "проблемную" клавишу, видим сообщение ядра:
в нем нас интересуют два числа: 0xba и e03a
это и есть сканкод нашей клавиши, какой из них использовать - дело ваше, результат будет одинаковый
жмем Ctrl+D - для выхода
2. выбор кейкода клавиши
здесь нужно обратить внимание на два момента:
во-первых: значение кейкода мы можем выбрать в только в пределах от 1 до 127 (об этом написано в man setkeycodes)
во-вторых: нужно учитывать несоответствие кейкодов выдаваемых showkey и xmodmap (его же использует xev),
у showkey они на 8 меньше
(часть вывода опущена)
нас интересуют строки с 8 по 135 (учитываем смещение) в которых справа от знака равенства пусто
например: keycode 120 в листинге выше
3. назначение клавише кейкода
введем команду:
где 0xba - сканкод, 112 - кейкод с учетом смещения (120-8=112)
проверим результат:
нажимаем "проблемную" клавишу и видим вывод:
.
showkey определил клавишу, жмем Ctrl-C или ждем 10 сек. для выхода
4. выбор и назначение кейсим (символьного имени) клавиши
существует определенный список разрешенных значений кейсим
для мультимедиа клавиш его можно посмотреть здесь -
http://wiki.linuxquestions.org/wiki/XF86_keyboard_symbols
или в файле:
или
имена как правило "говорящие", думаю не составит труда выбрать нужное исходя из назначения клавиши,
если сомневаетесь - обратитесь к поиску google, в моем случае клавиша отвечает за выгрузку cd/dvd диска
поэтому:
видим, что XF86Eject - вероятно и есть наш кейсим
назначим его:
проверим:
теперь нажмем клавишу - работает, ноутбук выгрузил диск
5.фиксация настроек
выполненые действия сохранят рабочей клавишу только до первого выключения
чтобы этого не случилось выполним:
это добавит настройки для нашей клавиши в файл ~/.Xmodmap
(если он не существует - создаст его)
откроем в любом текстовом редакторе файл /etc/rc.local
и добавим строку
перед строкой:
сохраним файл, перезагрузим компьютер, наслаждаемся рабочими клавишами
Суть проблемы.
Имеются неработающие мультимедиа или дополнительные (Fn+<другая_клавиша>) клавиши на клавиатуре.
Утилиты для определения кейкодов xev и showkey никак не реагируют на нажатие этих клавиш.
В выводе dmesg имеются строчки вида:
Код: Выделить всё
[ 123.137424] atkbd serio0: Unknown key released (translated set 2, code 0xba on isa0060/serio0).
[ 123.137433] atkbd serio0: Use 'setkeycodes e03a <keycode>' to make it known.
Решение.
1. определим сканкод клавиши
Код: Выделить всё
# tail -f /var/log/messages
нажимаем "проблемную" клавишу, видим сообщение ядра:
Код: Выделить всё
Nov 17 16:08:41 Samsung kernel: [ 330.742502] atkbd serio0: Unknown key released (translated set 2, code 0xba on isa0060/serio0).
Nov 17 16:08:41 Samsung kernel: [ 330.742510] atkbd serio0: Use 'setkeycodes e03a <keycode>' to make it known.
в нем нас интересуют два числа: 0xba и e03a
это и есть сканкод нашей клавиши, какой из них использовать - дело ваше, результат будет одинаковый
жмем Ctrl+D - для выхода
2. выбор кейкода клавиши
здесь нужно обратить внимание на два момента:
во-первых: значение кейкода мы можем выбрать в только в пределах от 1 до 127 (об этом написано в man setkeycodes)
во-вторых: нужно учитывать несоответствие кейкодов выдаваемых showkey и xmodmap (его же использует xev),
у showkey они на 8 меньше
Код: Выделить всё
$ xmodmap -pke | less
.......................
keycode 116 = Down NoSymbol Down
keycode 117 = Next NoSymbol Next
keycode 118 = Insert NoSymbol Insert
keycode 119 = Delete NoSymbol Delete
keycode 120 =
keycode 121 = XF86AudioMute NoSymbol XF86AudioMute
keycode 122 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume
.......................
(часть вывода опущена)
нас интересуют строки с 8 по 135 (учитываем смещение) в которых справа от знака равенства пусто
например: keycode 120 в листинге выше
3. назначение клавише кейкода
введем команду:
Код: Выделить всё
# setkeycodes 0xba 112
где 0xba - сканкод, 112 - кейкод с учетом смещения (120-8=112)
проверим результат:
Код: Выделить всё
# showkey
нажимаем "проблемную" клавишу и видим вывод:
.
Код: Выделить всё
.......................
код клавиши 112 нажата
код клавиши 112 отпущена
.......................
showkey определил клавишу, жмем Ctrl-C или ждем 10 сек. для выхода
4. выбор и назначение кейсим (символьного имени) клавиши
существует определенный список разрешенных значений кейсим
для мультимедиа клавиш его можно посмотреть здесь -
http://wiki.linuxquestions.org/wiki/XF86_keyboard_symbols
или в файле:
Код: Выделить всё
~$ less /usr/include/X11/XF86keysym.h
или
Код: Выделить всё
~$ xmodmap -pke | less
имена как правило "говорящие", думаю не составит труда выбрать нужное исходя из назначения клавиши,
если сомневаетесь - обратитесь к поиску google, в моем случае клавиша отвечает за выгрузку cd/dvd диска
поэтому:
Код: Выделить всё
~$ xmodmap -pke | grep Eject
keycode 169 = XF86Eject NoSymbol XF86Eject
keycode 170 = XF86Eject XF86Eject XF86Eject XF86Eject
keycode 174 = XF86AudioStop XF86Eject XF86AudioStop XF86Eject
видим, что XF86Eject - вероятно и есть наш кейсим
назначим его:
Код: Выделить всё
~$ xmodmap -e "keycode 120 = XF86Eject"
проверим:
Код: Выделить всё
$xmodmap -pke | grep 120
keycode 120 = XF86Eject NoSymbol XF86Eject
теперь нажмем клавишу - работает, ноутбук выгрузил диск
5.фиксация настроек
выполненые действия сохранят рабочей клавишу только до первого выключения
чтобы этого не случилось выполним:
Код: Выделить всё
$ echo "keycode 120 = XF86Eject" >> ~/.Xmodmap
это добавит настройки для нашей клавиши в файл ~/.Xmodmap
(если он не существует - создаст его)
откроем в любом текстовом редакторе файл /etc/rc.local
Код: Выделить всё
# vim /etc/rc.local
и добавим строку
Код: Выделить всё
setkeycodes 0xba 112
перед строкой:
Код: Выделить всё
exit 0
сохраним файл, перезагрузим компьютер, наслаждаемся рабочими клавишами
Делай добро и бросай его в воду.