如何模拟键盘输入?


15

这是让我无法享受Ubuntu / Linux的最大乐趣。

理想情况下,我只想能够在Ubuntu上运行我的AutoHotKey脚本,但是我并没有多少运气可以在Wine上使用它。

这是我在AHK中所做的事情(使用额外的修饰符也可以,Shift+ Alt+ lShift+ 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


嗨斯蒂芬,我正在寻找完全一样的东西。你成功做到了吗?
lolmaus-Andrey Mikhaylov

Answers:


18

我从未使用过xvkbd,但是还有另外两个不错的程序可以用来模拟我喜欢和使用的键盘输入。一个是xte,另一个是xdotool

sudo apt-get install xautomation xdotool  

这两个xdotoolxte非常相似,但因为我用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-terminalxbindkeys作品中呼唤。我不确定问题出在哪里。
Farzher

xtexbindkeys... 调用时似乎并没有尝试将键事件发送到焦点窗口
Farzher 2013年

@StephenSarcsamKamenar我自己也遇到了一些麻烦,但是从我的经验,一直是xbindkeys问题。对于我,我必须在按下组合键正好在同一时间去xbindkeys发送命令。YMMV。
塞斯(Seth)

也许是个xbindkeys问题;xdotool使用它,但是当我按住一个键时,它永远不会重复。有什么好的替代品xbindkeys
2013年

1
@StephenSarcsamKamenar Xmodmap中在解释这个答案,以及一个。那就是我使用的xbindkeys格式,如果执行的不够好(至少对xte来说不行。)
赛斯,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.