Запускать программу при нажатии клавиши, не перебивая ключевое событие

Можно ли связать (глобальную) клавишу нажатием какой-либо команды и по-прежнему не прерывать нажатие клавиши после завершения? Я имею в виду, если я попробую решение bindkey, размещенное в другом месте здесь :

# In file: ~/.xbindkeysrc # Bind key 'q' to running 'some_command' "some_command" q 

то нажатие клавиши «q» никогда не завершается, как в противном случае: т. е. никогда не печатает символ «q» на терминале, например.

Используя xdotool для отправки клавиши «q», нажмите так:

 # In file: ~/.xbindkeysrc # Bind key 'q' to running 'some_command' "some_command && xdotool key q" q 

приводит к циклу, так как нажатие клавиши «q», выполняемое xdotool будет выполнять другую команду «some_command» через привязку.

Чтобы быть немного яснее, я хочу, чтобы клавиша нажала «q», как обычно, и, кроме того, выполнила какую-либо внешнюю команду. Решение выше заменяет событие нажатия клавиши «q» с выполнением некоторой внешней команды. Проблема в том, что если эта внешняя команда также имитирует нажатие клавиши «q», тогда привязка перезапускает внешнюю команду, и я застреваю в бесконечном цикле.

One Solution collect form web for “Запускать программу при нажатии клавиши, не перебивая ключевое событие”

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

 xinput test <keyboad_id> 

в терминале. Это просто простой случай передачи вывода этой команды в программу, которая следит за строками типа «key release 24» (вывод, когда «q» выпущен на моей клавиатуре), и который затем сделает все, что вам нравится, когда это будет сопоставить эту строку.

Например, мы можем нажать кнопку «q» и сделать звук следующим образом:

 xinput test <keyboard_id> | while read in ; do [[ $in = "key press 24" ]] && aplay /usr/share/sounds/purple/alert.wav done 

Мы можем, очевидно, следить за другими входами и запускать что-то еще, если это необходимо.

  • `xdotool` не отправляет ключи
  • Как я могу автоматизировать черепицу окна с пользовательской шириной? (Корица)
  • сочетание клавиш для вставки текста
  • Введите текст с помощью xdotool независимо от раскладки клавиатуры
  • Как совместить условия с xdotool?
  • Имитация нажатия клавиши PrintScreen
  • Как запустить приложение в качестве док-станции в openbox
  • xdotool sleep 1 vs sleep 1, любая разница?
  • Сценарий Bash. Создать инструмент тестирования обезьян
  • Повторно активировать сохраненный pid окна с помощью xdotool
  • как определить, в каком видовом окне (compiz / unity) находится окно?
  • Делайте работу «читать», когда не фокусируетесь на терминале
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.