Послать нажатие клавиши выхода (Q + Enter) для программирования после определенного периода времени

Это могло быть ответом, но целью было дать полезные подсказки.

Если я правильно прочитал, вы пытаетесь связать одну клавишу с несколькими нажатиями клавиш. В данном примере показано переназначение End на Ctrl + E (это может быть проще для понимания).

xmodmap и xbindkeys

Классический подход заключается в проверке кода клавиши с помощью xev и использовании инструмента X, такого как xmodmap , для переназначения ключей, как объяснено в этот ответ на askubuntu.com . Но это не позволяет переназначить несколько ключей, упомянутых в ответе на этот вопрос .

Другой подход - использовать xbindkeys для захвата ключей и xvkbd для отправки ключей, ответ на который был дан в этой публикации . Однако у этого подхода также есть своя оговорка, которая приводит к потере фокуса, о чем кто-то упоминал в комментарии.

На самом деле, задается аналогичный вопрос , чтобы переназначить несколько нажатий клавиш другому нажатию нескольких клавиш (что на один уровень сложнее, чем ваш запрос).К сожалению, в ответе четко указано, что вы не можете добиться этого с помощью xmodmap , и предлагалось использовать вместо него xbindkeys .

Альтернатива: xdotool

Некоторое время назад я все еще использовал двухкнопочную мышь (я знаю, довольно старое оборудование) и пытался имитировать щелчок средней кнопкой мыши. Затем я обнаружил xdotool , который может имитировать щелчки мыши, а также нажатия клавиш клавиатуры.

Я предлагаю использовать xdotool для имитации нажатия клавиш клавиатуры для End (это даст вам строку команды). Затем используйте эту команду для назначения пользовательского ярлыка Ctrl + E в Xfce4, который находится в Диспетчер настроек> Клавиатура> Ярлыки приложений .

Чтобы создать команду с использованием xdotool , вы можете обратиться к нескольким примерам , один из которых цитируется следующим образом.

Пример: сфокусируйте панель URL Firefox

 WID = `xdotool search" Mozilla Firefox "| head -1` 
xdotool windowactivate --sync $ WID 
xdotool key --clearmodifiers ctrl + l 
 
 # Начиная с версии 2.20100623, вы можете сделать это проще версия выше: 
xdotool search "Mozilla Firefox" windowactivate --sync key --clearmodifiers ctrl + l 
 

Я не использовал этот инструмент в течение некоторого времени, поэтому не могу дайте точный ответ на ваш вопрос. На мой взгляд, использование xdotool с Xfce4 Ярлыки приложений - лучшее решение, которое вы можете попробовать в Debian Xfce.

0
09.03.2018, 20:39
2 ответа

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

Есть несколько клавиш, которые сам терминал преобразует в сигнал, например Ctrl + C в SIGINT. Программа может изменить настройки терминала, чтобы сама фиксировать эти нажатия клавиш, а не позволять терминалу преобразовывать их в сигнал.Тот же терминальный механизм позволяет переводить клавишу (обычно Ctrl + D)в конец ввода (только при ее нажатии в начале строки ). Это не сигнал :, это означает, что программа получает индикацию конца -из -файла, когда она пытается прочитать ввод с терминала.

Когда терминал исчезает, ядро ​​​​отправляет сигнал SIGHUP программе переднего плана, работающей в терминале, если таковая имеется (и если это оболочка, оболочка повторно -отправит сигнал своему заданию переднего плана ). ]. HUP происходит от «(модем )повесить -трубку» и в современном мире применяется в таких случаях, как закрытие окна терминала в графическом интерфейсе. Многие программы ловят этот сигнал и благополучно завершают работу, поэтому, если вам удобнее послать сигнал, чем послать ввод, вы должны попробовать, работает ли это для вашей программы.

Если вам необходимо отправить ввод, проще всего запустить программу в Экране и использовать screen -Xдля отправки ввода в сеанс экрана(пример).

3
28.01.2020, 02:24

Вы можете использовать ввод $ consumer << DOCUMENTв bash. Если вы хотите, чтобы это было с хорошей задержкой, вам может потребоваться прочитать (и проанализировать )команды, введенные в строке, прежде чем передавать их в вашу программу.

analyze <<END
<your timed command>
0
28.01.2020, 02:24

Теги

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