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

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, см. Выше.
Пьер Талами