Сделайте ваш ключ Capslock клавишей воспроизведения / паузы
Это решение переназначит код сканирования вашего ключа capslock в другой код ключа в драйвере ввода ядра, в этом случае play / pause.
преимущества
- Нет необходимости изменять существующие системные файлы (нужно создать только один новый файл)
- Приложения не будут знать, что это на самом деле клавиша capslock, но думают, что нажата настоящая клавиша воспроизведения / паузы
- Нет необходимости отключать capslock, нет возможности испортить
xkb
конфигурацию
Недостатки
- Должно быть сделано для каждой клавиатуры индивидуально (что, в зависимости от ситуации, также может быть преимуществом)
Предпосылки
- evtest (может быть установлен через
sudo apt-get install evtest
)
Процедура
В терминале запустите sudo evtest
и выберите клавиатуру. Если при нажатии клавиши ничего не выводится, нажмите Ctrl+ Cи попробуйте другое устройство. Запомните номер события устройства, который вы выбрали, он понадобится нам позже. Нажмите клавишу с заглушкой. Появятся следующие строки:
Event: time 1529406021.187148, -------------- SYN_REPORT ------------
Event: time 1529406021.218427, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70039
Event: time 1529406021.218427, type 1 (EV_KEY), code 58 (KEY_CAPSLOCK), value 0
Нам нужно значение из MSC_SCAN
строки, предшествующей KEY_CAPSLOCK
строке. В приведенном выше примере это будет 70039, но скан-код на вашей клавиатуре, вероятно, другой.
Теперь выполните следующую команду, но замените X на номер события устройства, которое вы использовали для evtest
команды:
grep "" /sys/class/input/eventX/device/id/*
... это будет выход bustype
, product
, vendor
и version
клавиатуры.
Создайте файл с именем 65-keyboard-custom.hwdb
в /etc/udev/hwdb.d/
(требуется разрешение корневого) со следующим содержанием:
evdev:input:b[bustype]v[vendor]p[product]e[version]*
KEYBOARD_KEY_[scancode]=playpause
...где
- [bus], [vendor], [product] и [version] имеют ровно 4 символа, а буквы должны быть в верхнем регистре
- [сканкод] должен быть в нижнем регистре
evdev:...
линия не имеет не предшествующего пространства
KEYBOARD_KEY...
линия имеет ровно одно предшествующее пространство
Например:
evdev:input:b0003v046DpC228e0110*
KEYBOARD_KEY_70039=playpause
Наконец, скомпилируйте новую конфигурацию в аппаратную базу данных:
sudo systemd-hwdb update
Если вы хотите применить изменения немедленно, сообщите udev:
sudo udevadm trigger
Если вы хотите отменить изменения, просто удалите созданный вами файл и перезагрузите компьютер.
Более подробную информацию вы можете найти в моем оригинальном ответе на эту тему.
vlc --key-play-pause <key-string>
строкой и попытаться связать ее , но я не нашел строки, которую VLC принимает как capslock ...