Я пытаюсь повторно использовать бесполезный ключ блокировки Caps для чего-то полезного 16.04 MATE. Я сталкивался
setxkbmap -option ctrl:nocaps
чтобы отключить его, но может ли он быть переназначен для воспроизведения / паузы VLC, например? Спасибо за ваши ответы!
vlc --key-play-pause <key-string>
строкой и попытаться связать ее , но я не нашел строки, которую VLC принимает как capslock ...dconf-editor
попробовал пару вещей, установил,xdotool
попробовал пару вещей и, наконец,xbindkeys
и попробовал пару вещей. В конце этого бесполезного упражнения моя кнопка паузы / воспроизведения на клавиатуре была сломана И моя собственная кнопка воспроизведения / паузы на экране была серой, и музыка не играла. Я сделал это в 16.04, так что перезагрузил в 18.04, чтобы подтвердить, что все по-прежнему работает, и это сделали программные хаки. Единственное спасение - я играю музыку только через телефон на Android, а не на ПК. Просто будьте осторожны, чтобы другие были осторожны и документировали, что вы делаете со своей машиной лучше меня.Ответы:
евтест и дбус
Вот версия с небольшим скриптом, работающим в фоновом режиме. Необходимо сделать несколько простых шагов:
Установите evtest программу:
sudo apt install evtest
. Эта программа способна декодировать и распечатывать необработанные события из/dev/input/
иерархии устройств.Добавьте свою учетную запись в группу
input
. Выйдите из системы и войдите снова. (Это необходимо, потому что мы собираемся читать с какого-либо устройства/dev/input/
, что обычно может делать только root или пользователи в группеinput
. Мы могли бы запустить скрипт как root, но тогда нам нужно было бы найти способ сказать ему, какой пользователь Экземпляр dbus, с которым нужно поговорить.)Отключите клавишу capslock, как вы сделали, или используйте соответствующую настройку Mate. Это также сработает, если вы сопоставите ключ capslock с ctrl, как это делают многие.
Сохраните где-нибудь следующий скрипт, например,
$HOME/bin/capshack
и сделайте его исполняемым:Приведенный выше скрипт будет прослушивать события клавиатуры и выполнять команду при нажатии клавиши capslock. Выполняемая команда использует dbus для отправки события воспроизведения / паузы в работающий экземпляр VLC. Возможно, вам придется настроить
KEYBOARD
переменную так, чтобы она указала на вашу фактическую клавиатуру, но, скорее всего, вышеуказанное значение будет работать.Если вы предпочитаете, чтобы функция toggleVLC () вызывалась при отпускании клавиши capslock, вы можете изменить
EVENT
переменную в сценарии так, чтобы она заканчиваласьvalue 0
вместоvalue 1
.Кроме того, возможно, что для вас код клавиши клавиши capslock отличается от 58. Вы можете проверить это, запустив
evtest
, посмотреть на вывод при нажатии capslock и соответствующим образом настроить переменную EVENT. Вам даже не нужно совпадать по коду ключа и просто установить EVENT(KEY_CAPSLOCK), value 1
.Вместо скрипта evtest и выше вы можете использовать thd из thd из пакета triggerhappy (что-то вроде
thd --dump /dev/input/*
даст аналогичный вывод), но я обнаружил, что это немного менее познавательно.Теперь мы создаем пользовательский системный модуль для автоматического запуска сценария в фоновом режиме:
Создайте пользовательскую иерархию systemd:
mkdir -p $HOME/.config/systemd/user
Добавьте следующий текст в файл
$HOME/.config/systemd/user/capshack.service
Включите сервисный блок, который вы только что сделали:
systemctl --user enable capshack
Запустите сервис:
systemctl --user start capshack
Отныне вы должны иметь возможность переключать воспроизведение / паузу в VLC с помощью клавиши capslock. Фоновый скрипт должен автоматически запускаться при входе в систему.
triggerhappy
Как уже упоминалось, вы также можете использовать пакет triggerhappy для этого. Это предпочтительный метод для людей, которые хотят меньше манипулировать системой и предпочитают более твердое решение.
Добавить пользователя в
input
группу, как указано вышеУстановите пакет:
sudo apt install triggerhappy
Добавьте конфигурацию для triggerhappy
~/.config/thd/capslock.conf
:Запустите вот так:
thd --triggers ~/.config/thd/capslock.conf /dev/input/event*
Запустите thd для своего пользователя аналогично тому, как описано для capshack.
Убедитесь, что у вас работает только один из упомянутых методов (capshack или thd), чтобы не переключаться дважды при нажатии каждой клавиши.
Я тестировал все это 18.04 в рамках стандартной сессии и 16.04 мат. Но теоретически он также должен работать под Wayland или с другими средами рабочего стола.
источник
[[ test ]] && \
и второй строкой с отступом в четыре пробела,<command>
чтобы выполнить положительный тест. Я полностью согласен с тем, что читаемость потому, что мои рекомендации чужды большинству языков программирования.triggerhappy
должен быть путь, такevtest
как на самом деле это программа отладки :)m
, что скрипт не работает. Я рекомендую проверитьxmodmap -pke | grep Caps_Lock
перед использованием этого скрипта, чтобы убедиться, что код ключа правильный.В Ubuntu 16.04, потратив часы на поиски
dconf-editor
и игры,xbindkeys
я нашел чрезвычайно простое решение:Если вам нужна
XF86AudioPlay
поддержка Gnome, в которой вы нуждаетесьxdotool
(не требуется для VLC, как указано в OP):Теперь вот сложная часть. Каждый раз, когда вы нажимаетеCaps LocK клавишу для переключения музыки между режимами воспроизведения и паузы, заглавные буквы также включаются и выключаются.
Используйте этот метод, чтобы отключить переключение Caps Lock при сохранении активности ключа:
Музыкальные плееры, которые придерживаются Gnome
Затем в Ubuntu 16.04 зайдите в Настройки >> Клавиатура >> Сочетания клавиш >> Пользовательские сочетания клавиш :
Audio Play
xdotool key XF86AudioPlay
После добавления новой опции назначенная клавиша быстрого доступа будет читать « Отключено» . Нажмите « Отключено» и при появлении запроса на назначение клавиши нажмите Caps LocKклавишу.
Музыкальные плееры, такие как VLC
Выполните шаги для Gnome в предыдущем разделе, но вместо этого используйте команду :
VLC не распознает мультимедийные клавиши: как заставить мультимедийные клавиши клавиатуры работать с VLC глобально? даже когда встроен в клавиатуру. Поэтому пользовательское сочетание клавиш для XF86 с AutoPlay бесполезно
xdotool
.Настройка пользовательских сочетаний клавиш из командной строки
В этом разделе «Вопросы и ответы» обсуждается, как устанавливать настраиваемые сочетания клавиш из командной строки: Как настроить настраиваемые сочетания клавиш из терминала?
Дезактивация заглушки навсегда
Следующий шаг - сделать это
setxkbmap -option caps:none
постоянным при перезагрузках. Результаты поиска в Google в этом ответе от Terdon: Сохранить настройки setxkbdmap :Самый простой способ - добавить команду в ваш
$HOME/.profile
файл (вы можете создать ее, если она не существует):Это должно заставить его работать каждый раз, когда вы входите в систему.
Обратите внимание, что вы должны использовать
$HOME/.profile
вместо$HOME/.bash_profile
,$HOME/.bashrc
или какой-либо другой подобный файл. Это потому, что этот параметр должен быть прочитан вашим менеджером входа в систему.источник
setxkbmap -option caps:none
. Утилита установлена, однако Wayland продолжает переключаться между прописными и строчными буквами. Вы можете опубликовать отдельный вопрос о том, как заставить Вэйланда уважатьsetxkbmap
.Этот ответ был протестирован на Ubuntu MATE 16.04.4 LTS на виртуальной машине (но клавиатура была USB-клавиатурой при проходе, так что это не должно иметь никакого значения). Это также не требует никакого дополнительного программного обеспечения, и может быть сделано при простой установке без установки каких-либо пакетов, и оно постоянно между загрузками.
Remap Caps Lock
Отредактируйте файл
/usr/share/X11/xkb/symbols/pc
как root. Будьте осторожны, чтобы не ошибиться (например, забыть запятую), потому что вы не сможете больше использовать клавиатуру, если вы это сделаете. (Угадай, что я усвоил нелегким путем?;)Закомментируйте строку
поместив две косые черты (
//
) в начале.Добавьте под ним следующую строку:
Закомментируйте строку
таким же образом, как указано выше.
Перезагрузка.
Примечание: (благодарность danzel за указание на это) Обновления пакета
xkb-data
могут перезаписать этот файл. Достаточно безопасный метод для предотвращения этого - использование путиdpkg-divert
. (Я говорю «достаточно безопасно», поскольку исходный источник для этого файла не изменялся в течение трех лет.)Альтернативный метод
Вручную отключите клавишу Caps Lock в настройках раскладки клавиатуры, а затем используйте подход, приведенный в этом ответе, чтобы добавить собственные сопоставления клавиш.
Проблемы?
Клавиша блокировки заглавных букв больше не запирает заглавные буквы, и на этом этапе она была переназначена для воспроизведения / паузы. Теперь вы сможете воспроизводить и приостанавливать музыку в VLC. Если это работает на этом этапе, вы можете пропустить остальные инструкции.
Однако, когда я попробовал это, VLC не ответил на клавишу Play / Pause.
Убедитесь, что сочетание клавиш установлено правильно
Откройте сочетания клавиш (Система → Настройки → Оборудование → Сочетания клавиш)
Убедитесь, что для «Play (или Play / Pause)» установлено значение «XF86AudioPlay»
Если это не так, щелкните раздел «Ярлык» и нажмите новую кнопку «Воспроизведение / Пауза», чтобы установить ярлык.
Если это все еще не работает, перезагрузите пару раз для хорошей меры. (Это на самом деле то, что исправило это для меня.)
источник
xkb
опциям, особенноcaps:...
тем. Кроме того, это может быть перезаписано обновлениями системы.Установите
xbindkeys
, xcape и playerctl . Убедитесь, чтоxcape
(сопоставлениеCapsLock
с запасным ключом, например,Alt+F12
byxcape -e 'Caps_Lock=Alt_L|F12
) иplayerctl
автозапуск при входе в систему, и добавьте в файл~/.xbindkeysrc
две строкиисточник
Сделайте ваш ключ Capslock клавишей воспроизведения / паузы
Это решение переназначит код сканирования вашего ключа capslock в другой код ключа в драйвере ввода ядра, в этом случае play / pause.
преимущества
xkb
конфигурациюНедостатки
Предпосылки
sudo apt-get install evtest
)Процедура
В терминале запустите
sudo evtest
и выберите клавиатуру. Если при нажатии клавиши ничего не выводится, нажмите Ctrl+ Cи попробуйте другое устройство. Запомните номер события устройства, который вы выбрали, он понадобится нам позже. Нажмите клавишу с заглушкой. Появятся следующие строки:Нам нужно значение из
MSC_SCAN
строки, предшествующейKEY_CAPSLOCK
строке. В приведенном выше примере это будет 70039, но скан-код на вашей клавиатуре, вероятно, другой.Теперь выполните следующую команду, но замените X на номер события устройства, которое вы использовали для
evtest
команды:... это будет выход
bustype
,product
,vendor
иversion
клавиатуры.Создайте файл с именем
65-keyboard-custom.hwdb
в/etc/udev/hwdb.d/
(требуется разрешение корневого) со следующим содержанием:...где
evdev:...
линия не имеет не предшествующего пространстваKEYBOARD_KEY...
линия имеет ровно одно предшествующее пространствоНапример:
Наконец, скомпилируйте новую конфигурацию в аппаратную базу данных:
Если вы хотите применить изменения немедленно, сообщите udev:
Если вы хотите отменить изменения, просто удалите созданный вами файл и перезагрузите компьютер.
Более подробную информацию вы можете найти в моем оригинальном ответе на эту тему.
источник
Может быть, используя
xbindkeys
илиXTE
вы могли бы сделать это. Но сначала убедитесь, что это за коды клавиш, вы можете увидеть код клавиши capslock, используя командуxev
в терминале и нажав ее (вы можете увидеть код клавиши любой кнопки keu или мыши, включая игровые мыши). Имея под рукой код клавиши capslock и play, вы можете редактировать файл конфигурации xbindkeys и вносить туда свои изменения. используйтеtouch ~/.xbindkeysrc
для создания файла конфигурации (если система не создает его автоматически) иnano ~/.xbindkeysrc
для его редактирования. Я использовал его в прошлом месяце, и здесь это экзамен. взгляните на эти ссылки, которые могут быть очень полезны для вас.https://help.ubuntu.com/community/MultimediaKeys
https://gist.github.com/jbonney/5743509
Переназначить кнопку моей игровой мыши на клавиатуру
https://matmunn.me/post/binding-volume-control-mouse-buttons-ubuntu/
источник