LINUX.ORG.RU
решено ФорумAdmin

ремаппинг мультимедиа клавиш

 , , ,


0

2

Всем привет. На клавиатуре есть макроклавиши, отправляющие коды различных мультимедиа клавиш. А именно:

keycode 198 (keysym 0x1008ffb2, XF86AudioMicMute)

keycode 199 (keysym 0x1008ffa9, XF86TouchpadToggle)

keycode 200 (keysym 0x1008ffb0, XF86TouchpadOn)

keycode 201 (keysym 0x1008ffb1, XF86TouchpadOff)

Очень хочется назначить туда что-то свое.

Через xmodmap (в стиле: xmodmap -e «keycode 198 = Up») на работу этих клавиш повлиять не получается. Старые функции они выполняют, а новые нет.

В то же время, с другими макроклавишами, которые отправляют менее осмысленные коды (например: keycode 103 (keysym 0x0, NoSymbol)), проблем не возникло.

UPD1: Ubuntu 16.04

UPD2: совсем забыл упомянуть, тема уже поднималась здесь, но обсуждалась мало и решения я не увидел.

UPD3: выяснил, что однозначно можно и нужно делать через udev. Однако никак не могу найти, как. Может кто-нибудь объяснить/дать полезную ссылку?



Последнее исправление: xosmig (всего исправлений: 9)

Ответ на: комментарий от anonymous

а можно чуть подробнее? Кажется, задача заремаппить пару клавиш предпологает какое-то straightforward решение, которое я почему-то не могу найти :(

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

google://systemd+udev+keymap

Если у тебя какое-то прыщеговно типа eudev, либо просто udev до версии 180(?) с чем-то, то нужно искать более старые манулы без «systemd».

Через два часа дома буду, возможно напишу более конкретно. Лучше udev только программирование клавиатуры или ревайринг, у меня как раз программируемая :))

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

Откуда берутся имена в стиле:

keyboard:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*

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

Плохо ищешь.

Сначала надо взять утилиту evtest, и определить сканкоды (MSC_SCAN) для самих ММ-кнопок. Потом создаёшь /etc/udev/hwdb.d/70-keyboard.hwdb, и запиливаешь туда что-то типа такого:

evdev:input:b0003v04D9pA096*
 KEYBOARD_KEY_70039=leftctrl
 KEYBOARD_KEY_700e0=capslock

b0003 это шина, вроде для всех USB так. v и p берёшь из lsusb. Всё, после этого проще всего перезагрузиться (я просто не очень знаком с hwdb, если честно).

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

И что это за магическое число 70? Оно встречается разное (90/60/98), но никогда не объясняется, что это

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

Это просто часть сканкода. Покажи вывод lsusb, и свой hwdb-файл. И вывод evtest после нажатий на клавиши, которые надо переназначить.

anonymous
()

Оказалось, проблема в том, что lsusb выдает шестнадцатеричные числа в нижнем регистре, а надо в верхнем... Я бы чувствовал себя невероятно глупо, потратив на это весь день, если бы еще не привык. Всем спасибо.

этот ответ помог

xosmig
() автор топика

Очень хочется назначить туда что-то свое.
выяснил, что однозначно можно и нужно делать через udev

Да не нужен тебе udev. У тебя кнопки вырабатывают уникальные для себя коды, просто средствами DE/WM вешай на них команду.

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