Это могло быть ответом, но целью было дать полезные подсказки.
Если я правильно прочитал, вы пытаетесь связать одну клавишу с несколькими нажатиями клавиш. В данном примере показано переназначение 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.
Нажатие клавиши и сигнал — это два разных способа связи с программой. Если есть сигнал, который эквивалентен нажатию клавиши для данной программы, это потому, что автор программы разработал его таким образом.
Есть несколько клавиш, которые сам терминал преобразует в сигнал, например Ctrl + C в SIGINT. Программа может изменить настройки терминала, чтобы сама фиксировать эти нажатия клавиш, а не позволять терминалу преобразовывать их в сигнал.Тот же терминальный механизм позволяет переводить клавишу (обычно Ctrl + D)в конец ввода (только при ее нажатии в начале строки ). Это не сигнал :, это означает, что программа получает индикацию конца -из -файла, когда она пытается прочитать ввод с терминала.
Когда терминал исчезает, ядро отправляет сигнал SIGHUP программе переднего плана, работающей в терминале, если таковая имеется (и если это оболочка, оболочка повторно -отправит сигнал своему заданию переднего плана ). ]. HUP происходит от «(модем )повесить -трубку» и в современном мире применяется в таких случаях, как закрытие окна терминала в графическом интерфейсе. Многие программы ловят этот сигнал и благополучно завершают работу, поэтому, если вам удобнее послать сигнал, чем послать ввод, вы должны попробовать, работает ли это для вашей программы.
Если вам необходимо отправить ввод, проще всего запустить программу в Экране и использовать screen -X
для отправки ввода в сеанс экрана(пример).
Вы можете использовать ввод $ consumer << DOCUMENT
в bash. Если вы хотите, чтобы это было с хорошей задержкой, вам может потребоваться прочитать (и проанализировать )команды, введенные в строке, прежде чем передавать их в вашу программу.
analyze <<END
<your timed command>