How to simulate keyboard input?
This is the biggest thing keeping me from enjoying Ubuntu/Linux.
Ideally I'd like to just be able to run my AutoHotKey script on Ubuntu, but I didn't have much luck getting that working with Wine.
Here's what I'm doing in AHK (using extra modifiers also works, Shift+Alt+l is Shift+right).
!l:: Send, {Right}
+!l:: Send, +{Right}
^!l:: Send, ^{Right}
^+!l:: Send, ^+{Right}
I tried AutoKey, but it wasn't consuming input, remapping Alt + I to right arrow key worked, but it still executed Alt + I, which sometimes selects an item from the application menu.
The closest I got was xbindkeys
for setting up hotkeys, this seems to work great. And xvkbd
for simulating input; this part is really buggy; it doesn't work in all programs, and causes me to lose focus a lot, among other issues.
For anyone wondering what I'm trying to do: I use I J K L as arrow keys while Alt is down.
I've never used xvkbd, but there are two other great programs for simulating keyboard input that I like and use. One is xte
and the other is xdotool
.
sudo apt-get install xautomation xdotool
Both xdotool
and xte
are very similar, but since I use xte
the most I'll go into that one.
xte:
The most basic syntax for xte
is:
xte 'command key/mousebutton/xyCoordinates'
xte
can do a lot more than just create keyboard input though, it can also move your mouse and simulate mouse button presses, among others things.
Syntax examples:
To call a single key press:
xte 'key keyName'
To call a key combination:
xte 'keydown keyName' 'keydown secondKeyName' 'keyup keyName' 'keyup secondKeyName
To call a mouse button:
xte 'mouseclick buttonNumber'
(You can find button numbers throughxev
)To move the mouse:
xte 'mousemove xCoordinate yCoordinate'
And more! Read
man xte
Keynames:
Here are a list of key names (other than the obvious ones):
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
Reading:
You might also be interested in reading:
How can I change what keys on my keyboard do? (How can I create custom keyboard commands/shortcuts?)
How do I remap certain keys or devices?