Имитация медиа ключей в терминале


25

У меня есть новый телефон Android, который имеет несколько приложений для общения через SSH-соединение. Я хотел бы знать, могу ли я использовать команды ssh, если я могу имитировать нажатие клавиш, в частности, мультимедийные клавиши (громкость паузы воспроизведения). Я бы предпочел не устанавливать дополнительное программное обеспечение.

Примечание: я знаю, что есть приложения, которые делают это из коробки, это просто для лучшего понимания.

Ответы:


44

Ответ таков: возможно xdotool, он уже установлен в вашей системе Ubuntu. Он может имитировать нажатия клавиш. Смотрите также [1].

Некоторые команды:

  • воспроизведение / пауза

    xdotool key XF86AudioPlay
    
  • Предыдущий Следующий

    xdotool key XF86AudioPrev 
    xdotool key XF86AudioNext
    
  • громкость вниз / вверх

    xdotool key XF86AudioLowerVolume 
    xdotool key XF86AudioRaiseVolume
    
  • немой

    xdotool key XF86AudioMute
    

Дополнительные команды XF86 см. В [2].

Вместо пошаговой регулировки громкости вы также можете установить его с помощью alsamixer или pulseaudio (рекомендуется). Предполагая, что вы используете устройство 0 (вы можете проверить это с помощью alsamixerили pacmd list-sinks), вы можете установить громкость, например, на 80% с

  • alsamixer (-c 0 указывает идентификатор звукового устройства)

    amixer -c 0 sset Master,0 80%
    
  • pulseaudio (0 перед 80% - это идентификатор звукового устройства)

    pactl set-sink-volume 0 80%
    

Для получения дополнительной информации об этих командах смотрите их справочные страницы.


РЕДАКТИРОВАТЬ: Если вы пытаетесь выполнить команды xdotool через ssh и получить следующее сообщение об ошибке

Error: Can't open display: (null)
Segmentation fault

вам нужно установить переменную DISPLAY:

export DISPLAY=':0.0'

После этого должно работать без проблем


[1] http://www.semicomplete.com/projects/xdotool/xdotool.xhtml
[2] http://wiki.linuxquestions.org/wiki/XF86_keyboard_symbols


Что требуется для того, чтобы это работало над SSH? Использование этих команд в удаленной оболочке приводит к симуляции на локальной машине против удаленной машины.
— earthmeLon

3
@earthmeLon Вы уверены, что запускаете команду на удаленном компьютере? Потому что для меня это работает хорошо по SSH. Мне нужно было установить переменную DISPLAY, см. Мое редактирование.
— Герхард Бургер

Настройка дисплея, как вы предложили, решает проблему. Спасибо: D
— earthmeLon

2
Обратите внимание, что когда вы связываете их с некоторыми ключами в xfce4, вам нужно будет использовать --clearmodifiersфлаг, что-то вроде этого:xdotool key --clearmodifiers XF86AudioPlay
— cab404

То, что упоминалось @ cab4040, также применимо к GNOME. Если кто-то хочет добавить пользовательские клавиши мультимедиа на клавиатуре, в которой их нет, можно перейти в Keyboard Shortcutsраздел настроек и добавить привязку между сочетанием клавиш и xdotool keyкомандой с помощью --clearmodifiers, см. Выше.
— Пьер Талами
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.