Как симулировать ввод с клавиатуры?

15

Это самое большое, что мешает мне наслаждаться Ubuntu / Linux.

В идеале я хотел бы просто иметь возможность запускать свой скрипт AutoHotKey в Ubuntu, но мне не очень повезло, что я смог работать с Wine.

Вот что я делаю в AHK (использование дополнительных модификаторов также работает, Shift+ Alt+ l- это Shift+ right).

!l:: Send, {Right}
+!l:: Send, +{Right}
^!l:: Send, ^{Right}
^+!l:: Send, ^+{Right}

Я попробовал AutoKey, но он не потреблял ввода, сработало переназначение Alt+ Iна клавишу со стрелкой вправо, но он все еще выполнялся Alt+ I, который иногда выбирает элемент из меню приложения.

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

Для тех, кто интересуется, что я пытаюсь сделать: я использую в I J K Lкачестве клавиш со стрелками, пока Altне работает.

Farzher
источник
Привет, Стивен, я ищу то же самое. Вам удалось это сделать?
lolmaus - Андрей Михайлов

Ответы:

18

Я никогда не использовал xvkbd, но есть две другие замечательные программы для имитации ввода с клавиатуры, которые мне нравятся и которые я использую. Один есть, xteа другой есть xdotool.

sudo apt-get install xautomation xdotool  

Оба xdotoolи xteочень похожи, но так как я использую xteбольше всего, я пойду в этом.

ХТА:

Самый основной синтаксис для xte:

xte 'command key/mousebutton/xyCoordinates'

xte может сделать гораздо больше, чем просто создать ввод с клавиатуры, он также может перемещать мышь и имитировать нажатия кнопок мыши, помимо прочего.

Примеры синтаксиса:

  • Для вызова одной клавиши нажмите: xte 'key keyName'

  • Чтобы вызвать комбинацию клавиш: xte 'keydown keyName' 'keydown secondKeyName' 'keyup keyName' 'keyup secondKeyName

  • Для вызова кнопки мыши: xte 'mouseclick buttonNumber'(Вы можете найти номера кнопок через xev)

  • Чтобы переместить мышь: xte 'mousemove xCoordinate yCoordinate'

  • И более! Читатьman xte

: наименование ключи

Вот список имен ключей (кроме очевидных):

Home
Left
Up
Right
Down
Page_Up
Page_Down
End
Return
BackSpace
Tab
Escape
Delete
Shift_L
Shift_R
Control_L
Control_R
Meta_L
Meta_R
Alt_L
Alt_R
Multi_key  
Super_L  
Super_R

Чтение:

Вы также можете быть заинтересованы в чтении:

Как я могу изменить действия клавиш на клавиатуре? (Как я могу создать пользовательские команды клавиатуры / сочетания клавиш?)

Как мне переназначить определенные ключи или устройства?

Сет
источник
Это выглядит хорошо, но не работает с xbindkeys. Когда xte 'key a'вызывается, xbindkeysон просто мигает, когда я нажимаю горячую клавишу. xte 'key a'в командной строке работает. gnome-terminalзвонил с xbindkeysработы. Я не уверен, где проблема.
Фаржер
Не похоже, что xteон пытается отправить ключевое событие в окно фокусировки при вызове из xbindkeys...
Фаржер
@StephenSarcsamKamenar Я сам имел некоторые проблемы, но из моего опыта , которая была xbindkeysпроблема .. Для меня нужно нажать комбинацию клавиш в точности то же самое время , чтобы получить , xbindkeysчтобы послать команду. YMMV.
Сет
Может быть xbindkeysпроблема; xdotoolработал с ним, но когда я удерживал нажатой клавишу, он никогда не повторял это. Какие есть хорошие альтернативы xbindkeys?
Фаржер
1
@StephenSarcsamKamenar Xmodmap объясняется как в этом ответе, так и в этом . Это то, что я использовал бы, если xbindkeysбы не преформовал достаточно хорошо (чего не происходит с xte .. по крайней мере для меня.)
Сет