Повторные ключи в Ubuntu 17

Пожалуйста, помогите мне решить следующую проблему: у меня есть USB-педаль, которую я хочу использовать как контрольный ключ для моей работы. Пока система идентифицирует, что эта педаль работает как клавиша F2 (я использую Ubuntu 17), и я хотел бы переназначить систему, чтобы понять ключ F2 как клавишу управления. Я попробовал несколько руководств, некоторые из которых относятся к решению Xmodmap, которое кажется устаревшим, другое - к XKB, которое я из-за своей глупости не понял. Я рассматриваю некоторые предложения от вас, как я могу это сделать. Спасибо заранее.

0
задан 10 December 2017 в 14:52

2 ответа

Метод XKB

XKB не может быть лучшим способом изменить поведение этого устройства, но он должен быть возможен в традиционных X-средах. Более новые контексты XKB, такие как Wayland или kmscon, могут не обеспечивать детализацию, необходимую для настройки отдельных макетов XKB на произвольных устройствах. Он также не будет функционировать под традиционной консолью.

Применение udev hwdb переопределения для выполнения этого изменения должно работать под всеми этими.

В традиционных средах X setxkbmap принимает -device ] и xkbcomp использует -i:

-device device Указывает идентификатор цифрового устройства устройства ввода, которое будет обновляться с новой раскладкой клавиатуры.

Используйте xinput -list, чтобы найти номера идентификаторов устройства.

Чтобы доказать этот функционал, используйте setxkbmap ... -print для создания основного макета, сохраните его в файл, затем загрузите это с помощью xkbcomp filename.xkb $DISPLAY. Возможно, вам понадобится setxkbmap во время тестирования.

$ setxkbmap -layout us -option '' -print > f2toctrl.xkb

Отредактируйте файл f2toctrl.xkb - мы меняем только строку xkb_symbols:

// generated with `setxkbmap -print` and modified // load: xkbcomp -i DeviceID# filename $DISPLAY xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+us+inet(evdev)" // existing key definition (see `xkbcomp $DISPLAY - | grep -A 3 FK02`) // key <FK02> { // type= "CTRL+ALT", // symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ] // }; // patterned after ctrl:nocaps option // see /usr/share/X11/xkb/symbols/ctrl replace key <FK02> { [ Control_L, Control_L ] }; modifier_map Control { <FK02>, <LCTL> }; }; xkb_geometry { include "pc(pc105)" }; };

Теперь загрузите его (замените N на идентификатор устройства, который вы нашли в xinput -list):

$ xkbcomp -i N f2toctrl.xkb $DISPLAY

Вы можете проверить свои изменения с помощью xkbcomp -i N $DISPLAY - | less и проверить кнопку

Для обычных (не-DE) X-окружений, команда загрузки может быть добавлена ​​в ~/.xinitrc или другие сценарии запуска windowmanager , Вам нужно добавить это переопределение в базу данных XKB системы для использования с большинством композиторов Wayland и DE, таких как GNOME / KDE, но в этих контекстах я не уверен, как вы примените переопределение только к устройству педали. Если это было возможно, я бы создал /usr/share/X11/xkb/symbols/pedal, чтобы удерживать переопределение Ctrl, продемонстрированное выше (и потенциально другие полезные переопределения для устройства).

Очень упрощенный файл макета может выглядеть так: [ ! d21] // /usr/share/X11/xkb/symbols/pedal // convert F2 key operation to Ctrl default partial modifier_keys xkb_symbols "basic" { name[Group1]= "USB Pedal as Ctrl"; replace key <FK02> { [ Control_L, Control_L ] }; modifier_map Control { <FK02>, <LCTL> }; };

0
ответ дан 18 July 2018 в 01:28

Метод XKB

XKB не может быть лучшим способом изменить поведение этого устройства, но он должен быть возможен в традиционных X-средах. Более новые контексты XKB, такие как Wayland или kmscon, могут не обеспечивать детализацию, необходимую для настройки отдельных макетов XKB на произвольных устройствах. Он также не будет функционировать под традиционной консолью.

Применение udev hwdb переопределения для выполнения этого изменения должно работать под всеми этими.

В традиционных средах X setxkbmap принимает -device ] и xkbcomp использует -i:

-device device Указывает идентификатор цифрового устройства устройства ввода, которое будет обновляться с новой раскладкой клавиатуры.

Используйте xinput -list, чтобы найти номера идентификаторов устройства.

Чтобы доказать этот функционал, используйте setxkbmap ... -print для создания основного макета, сохраните его в файл, затем загрузите это с помощью xkbcomp filename.xkb $DISPLAY. Возможно, вам понадобится setxkbmap во время тестирования.

$ setxkbmap -layout us -option '' -print > f2toctrl.xkb

Отредактируйте файл f2toctrl.xkb - мы меняем только строку xkb_symbols:

// generated with `setxkbmap -print` and modified // load: xkbcomp -i DeviceID# filename $DISPLAY xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+us+inet(evdev)" // existing key definition (see `xkbcomp $DISPLAY - | grep -A 3 FK02`) // key <FK02> { // type= "CTRL+ALT", // symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ] // }; // patterned after ctrl:nocaps option // see /usr/share/X11/xkb/symbols/ctrl replace key <FK02> { [ Control_L, Control_L ] }; modifier_map Control { <FK02>, <LCTL> }; }; xkb_geometry { include "pc(pc105)" }; };

Теперь загрузите его (замените N на идентификатор устройства, который вы нашли в xinput -list):

$ xkbcomp -i N f2toctrl.xkb $DISPLAY

Вы можете проверить свои изменения с помощью xkbcomp -i N $DISPLAY - | less и проверить кнопку

Для обычных (не-DE) X-окружений, команда загрузки может быть добавлена ​​в ~/.xinitrc или другие сценарии запуска windowmanager , Вам нужно добавить это переопределение в базу данных XKB системы для использования с большинством композиторов Wayland и DE, таких как GNOME / KDE, но в этих контекстах я не уверен, как вы примените переопределение только к устройству педали. Если это было возможно, я бы создал /usr/share/X11/xkb/symbols/pedal, чтобы удерживать переопределение Ctrl, продемонстрированное выше (и потенциально другие полезные переопределения для устройства).

Очень упрощенный файл макета может выглядеть так: [ ! d21] // /usr/share/X11/xkb/symbols/pedal // convert F2 key operation to Ctrl default partial modifier_keys xkb_symbols "basic" { name[Group1]= "USB Pedal as Ctrl"; replace key <FK02> { [ Control_L, Control_L ] }; modifier_map Control { <FK02>, <LCTL> }; };

0
ответ дан 24 July 2018 в 17:24
  • 1
    Если вы уже применили переопределение hwdb, чтобы система увидела эту педаль как F2, изменение этого параметра на F14 или какой-либо другой ключ, отсутствующий на обычных клавиатурах, может позволить вам объединить решение XKB в ваш основной формат и пусть это влияет на все устройства без изменения существующих ключей. это должно позволить ему работать в контекстах XKB, которые не позволяют использовать раскладки клавиатуры для устройств. – quixotic 29 December 2017 в 05:43

Другие вопросы по тегам:

Похожие вопросы: