Я могу повторно отобразить клавишу Caps Lock для проигрывания аудио?

Я пытаюсь снова использовать бесполезную клавишу Caps Lock для чего-то полезного на 16,04 ПОМОЩНИКАХ. Я столкнулся

setxkbmap -option ctrl:nocaps

для отключения его но он мог быть повторно отображен для игрения/приостанавливания VLC, например? Спасибо за Ваши ответы!

16
задан 18 June 2018 в 21:22

6 ответов

Этот ответ был протестирован на Ubuntu MATE 16.04.4 LTS на виртуальной машине (но клавиатура была USB-клавиатурой при проходе, так что это не должно иметь значения). Это также не требует никакого дополнительного программного обеспечения, и может быть сделано при простой установке без установки каких-либо пакетов, , и оно постоянно между загрузками.

Remap Caps Lock

  1. Отредактируйте файл /usr/share/X11/xkb/symbols/pc как root. Будьте осторожны, чтобы не ошибиться (например, забыть запятую), потому что вы не сможете больше использовать клавиатуру, если вы это сделаете. (Угадайте, что я выучил трудным путем?;)

  2. Закомментируйте строку

        key <CAPS> {    [ Caps_Lock     ]   };
    

    , поместив две косые черты (//) в начале Это.

  3. Добавить под ним следующую строку:

        key <CAPS> {    [ XF86AudioPlay, XF86AudioPause ]   };
    
  4. Закомментировать строку

        modifier_map Lock   { Caps_Lock };
    

    в той же строке. как указано выше.

  5. Перезагрузка.

Примечание: (благодарность danzel за указание на это) Обновления пакета xkb-data могут перезаписать этот файл. Достаточно безопасный метод предотвращения этого - отклонение пути с использованием dpkg-divert. (Я говорю «достаточно безопасно», поскольку исходный источник для этого файла не изменялся в течение трех лет.)

Альтернативный метод

Вручную отключите клавишу Caps Lock в настройках раскладки клавиатуры, затем используйте подход из этого ответа , чтобы добавить свои собственные переопределения ключей.

Проблемы?

Ваша кнопка блокировки заглавных букв больше не запирает заглавные буквы, и на этом этапе она была переназначена для воспроизведения / паузы. Теперь вы сможете воспроизводить и приостанавливать музыку в VLC. Если это сработает, вы можете пропустить остальные инструкции.

Однако, когда я попробовал это, VLC не ответил на клавишу Play / Pause.

Убедитесь, что сочетание клавиш установлено правильно

  1. Откройте сочетания клавиш (Система → Настройки → Оборудование → Сочетания клавиш)

  2. Убедитесь, что «Воспроизведение (или воспроизведение / пауза)» установлено на «XF86AudioPlay»

  3. Если это не так, щелкните раздел «Ярлык» и нажмите новую клавишу «Воспроизведение / Пауза», чтобы установить ярлык. helpful screenshot

  4. Если это все еще не работает, перезагрузите пару раз для хорошей меры. (Это фактически то, что исправило это для меня.)

3
ответ дан 23 November 2019 в 02:33

evtest и dbus

Вот версия, включающая маленький сценарий, работающий в фоновом режиме. Должны быть сделаны несколько легких шагов:

  • Установите evtest программу: sudo apt install evtest. Эта программа может декодировать и распечатать необработанные события от /dev/input/ иерархия устройств.

  • Добавьте свою учетную запись пользователя к группе input. Выход из системы и вход в систему снова. (Это необходимо, потому что мы собираемся читать из некоторого устройства под /dev/input/, который обычно может только делаться корнем или пользователями в группе input. Мы могли запустить скрипт как корень, но затем мы должны будем найти способ сказать его, с каким пользователем dbus экземпляр он должен говорить.)

  • Отключите клавишу Caps Lock как Вы, сделал или используют соответствующее предпочтение Помощника. Это также работало бы при отображении клавиши Caps Lock на ctrl как многие люди делают.

  • Сохраните следующий сценарий где-нибудь, например. $HOME/bin/capshack и сделайте это исполняемым файлом:

    #!/bin/bash
    
    KEYBOARD=/dev/input/by-path/platform-i8042-serio-0-event-kbd
    EVENT="type 1 (EV_KEY), code 58 (KEY_CAPSLOCK), value 1"
    
    toggleVLC () {
            dbus-send \
                --type=method_call \
                --dest=org.mpris.MediaPlayer2.vlc \
                /org/mpris/MediaPlayer2 \
                org.mpris.MediaPlayer2.Player.PlayPause
    }
    
    evtest "$KEYBOARD" | \
    while read line
    do
        if [[ "$line" == *"$EVENT" ]]
        then
            toggleVLC
        fi
    done
    

Вышеупомянутый сценарий будет слушать Ваши события клавиатуры и выполнять команду, когда клавиша Caps Lock будет нажата. Команда, которая выполняется, использует dbus для отправки события игры/паузы в выполнение экземпляр VLC. Вам, возможно, придется настроить KEYBOARD переменная для указания на фактическую клавиатуру но вероятно, что вышеупомянутое значение будет работать.

Если Вы предпочитаете, чтобы toggleVLC () функция был назван, при выпуске клавиши Caps Lock можно измениться EVENT переменная в сценарии, таким образом, что это заканчивается value 0 вместо value 1.

Кроме того, возможно, что для Вас код клавиши клавиши Caps Lock отличается от 58. Можно проверить это путем выполнения evtest, посмотрите на вывод, когда Вы нажмете capslock и скорректируете переменную СОБЫТИЯ соответственно. Вы даже не должны соответствовать кодом клавиши и установить СОБЫТИЕ просто на (KEY_CAPSLOCK), value 1.

Вместо того, чтобы использовать evtest и выше сценария Вы могли использовать thd от воинственного пакета (что-то как thd --dump /dev/input/* дал бы подобный вывод), но я нашел что немного менее образовательный.

Теперь мы создаем пользователя systemd единица для запуска сценария автоматически в фоновом режиме:

  • Создайте пользователя systemd иерархия: mkdir -p $HOME/.config/systemd/user

  • Добавьте следующий текст к файлу $HOME/.config/systemd/user/capshack.service

    [Unit]
    Description=Abuse capslock key
    
    [Service]
    ExecStart=%h/bin/capshack
    
    [Install]
    WantedBy=default.target
    
  • Включите сервисную единицу, которую Вы просто сделали: systemctl --user enable capshack

  • Запустите сервис: systemctl --user start capshack

С этого времени необходимо смочь переключить игру/паузу в VLC использование клавиши Caps Lock. Фоновый сценарий должен быть автоматически запущен, когда Вы входите в систему.

воинственный

Как упомянуто уже Вы могли также использовать воинственный пакет, чтобы сделать это. Это - предпочтительный метод для людей, которые хотят играть меньше с системой и скорее как более твердый раствор.

  • Добавьте пользователя к input группа как вышеупомянутый

  • Установите пакет: sudo apt install triggerhappy

  • Добавьте конфигурацию для воинственного к ~/.config/thd/capslock.conf:

    KEY_CAPSLOCK    1   dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
    
  • Выполненный thd как это: thd --triggers ~/.config/thd/capslock.conf /dev/input/event*

  • Сделайте thd выполненным для Вашего пользователя похожим способом уже, любят описанный за capshack.

  • Удостоверьтесь, что у Вас есть только один из упомянутых методов (capshack или thd) выполнение, для не удвоения переключателя который каждое нажатие клавиши.

Я протестировал все это на 18,04 под стандартной сессией и 16,04 помощниками. Но это должно теоретически также работать под Уэйлендом или с другими настольными средами.

11
ответ дан 23 November 2019 в 02:33

В Ubuntu 16.04 после пребывания в течение часов, гугля и играя с dconf-editor и xbindkeys Я нашел чрезвычайно легкое решение:

  • Очень быстрая установка за 2 минуты
  • Только xdotool должен быть установлен
  • Никакие необходимые сценарии
  • Caps Lock все еще распознана, но не переключает регистр
  • Работы со стандартной Клавиатурой Ubuntu Пользовательские Настройки Ярлыка

Если Вам нужен Gnome XF86AudioPlay поддерживайте Вас потребность xdotool (не нужный для VLC, поскольку OP предусматривает):

sudo apt install xdotool

Теперь вот хитрая часть. Каждый раз, когда Вы нажимаете клавишу Caps Lock для переключения музыки между Игрой и Паузой, прописные буквы также выключают и на.

Используйте этот метод для выключения переключения Caps Lock при тихом сохранении ключевыми активный:

setxkbmap -option caps:none

Аудиоплееры, которые придерживаются Gnome

Затем в Ubuntu 16.04 входят в Настройки>> Клавиатура>> Ярлыки>> Пользовательские Ярлыки:

audio pause-play shortcut.png

  • Определите имя к Audio Play
  • Установите команду на xdotool key XF86AudioPlay
  • Затем нажмите кнопку Apply

После добавления новой опции присвоенное сочетание клавиш будет читать Отключенный. Нажмите на Disabled и при запросе ключ присвоить нажатию клавишу Caps Lock.


Аудиоплееры как VLC

Выполните шаги для Gnome в предыдущем разделе, но для команды используют это вместо этого:

qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause

VLC не распознает ключи медиа: Как сделать ключи медиа клавиатуры для работы с VLC глобально? даже когда встроено в клавиатуру. Для этого пользовательское сочетание клавиш к XF86AudioPlay бесполезно с xdotool.


Установка пользовательских сочетаний клавиш из командной строки

Это, которое обсуждают Вопросы и ответы, как установить пользовательские сочетания клавиш из командной строки: Как установить пользовательские сочетания клавиш от терминала?


Деактивация Caps Lock постоянно

Следующий шаг должен сделать это setxkbmap -option caps:none персистентный через перезагрузки. Поиск с помощью Google результатов в этом ответе Terdon: Сохраните setxkbdmap настройки:

Простой способ состоял бы в том, чтобы добавить команду к Вашему $HOME/.profile файл (можно создать его, если это не существует):

setxkbmap -option caps:none

Это должно заставить его работать каждый раз, когда Вы входите в систему.

Обратите внимание, что необходимо использовать $HOME/.profile вместо $HOME/.bash_profile, $HOME/.bashrc или некоторый другой подобный файл. Это вызвано тем, что эта установка должна быть считана Вашим менеджером по входу в систему.

9
ответ дан 23 November 2019 в 02:33

Установка xbindkeys, xcape и playerctl. Удостоверьтесь это xcape (отображение CapsLock к запасному ключу как Alt+F12 xcape -e 'Caps_Lock=Alt_L|F12) и playerctl автоматически запускаются на входе в систему и добавляют к файлу ~/.xbindkeysrc эти две строки

"playerctl play-pause"
  Alt + F12
1
ответ дан 23 November 2019 в 02:33

Сделайте свою клавишу Caps Lock игрой/клавишей Pause

Это решение повторно отобразит scancode Вашей клавиши Caps Lock на другой код клавиши во входном драйвере ядра в этой игре/паузе случая.

Преимущества

  • Никакая потребность изменить существующие системные файлы (только один новый файл должен быть создан),
  • Приложения не будут знать, что это - на самом деле клавиша Caps Lock, но думайте, что реальная игра/клавиша Pause была нажата
  • Никакая потребность отключить capslock, никакая возможность испортить xkb конфигурация

Недостатки

  • Должен быть сделан для каждой клавиатуры индивидуально (который, в зависимости от ситуации, может также быть преимущество),

Предпосылки

  • evtest (может быть установлен через sudo apt-get install evtest)

Процедура

В терминале, выполненном sudo evtest и выберите свою клавиатуру. Если нет никакого вывода при нажатии клавиши нажмите Ctrl+C и попробуйте другое устройство. Помните номер события устройства, который Вы выбрали, нам будет нужен он впоследствии. Нажмите клавишу Caps Lock. Появятся некоторые строки как следующее:

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, но scancode на Вашей клавиатуре, вероятно, отличается.

Теперь выполните следующую команду, но замените 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

... где

  • [у шины], [поставщика], [продукта] и [версии] есть точно 4 символа, и буквы должны быть прописными
  • [scancode] должен быть нижним регистром
  • evdev:... строка не имеет никакого предыдущего пространства
  • KEYBOARD_KEY... строка имеет точно одно предыдущее пространство

Например:

evdev:input:b0003v046DpC228e0110*
 KEYBOARD_KEY_70039=playpause

Наконец, скомпилируйте новую конфигурацию в аппаратную базу данных:

sudo systemd-hwdb update

Если Вы хотите применить изменения сразу, сообщите udev:

sudo udevadm trigger

Если Вы хотите вернуться изменения, просто удалить файл, Вы создали и перезагрузка.

Можно найти более подробную информацию в моем исходном ответе по этой теме.

0
ответ дан 23 November 2019 в 02:33

Возможно, использование xbindkeys или XTE Вы могли сделать это. Но сначала убедитесь в том, что является Кодами клавиши, Вы видите код для команды использования клавиши Caps Lock xevв терминале и нажатии его (Вы видите код клавиши любого keu или кнопки мыши, включая Играющие мыши). С capslock и кодом клавиши кнопок воспроизведения в руке можно отредактировать xbindkeys confi файл и поместить там изменения. использовать 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/

0
ответ дан 23 November 2019 в 02:33

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

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