You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用xdotool正确模拟左Alt与右Alt键同时按下操作

xdotool同时模拟左Alt(Alt_L)、右Alt(Alt_R)按键的正确方法

之前命令失效的核心原因

  • 同修饰键自动合并:xdotool默认会把Alt_L、Alt_R都归类为通用Alt修饰键,用+连写或者不带参数触发时,会自动判定为重复的修饰键,直接合并成单个Alt事件,不会发送两个独立的按键按下信号。
  • 命令拼写错误:第三条命令把xdotool拼写成xdtool,第四条命令抬起时写的是Alt_l(小写l),keysym严格区分大小写,无法被识别。
  • 逻辑错误:第一条命令里的key Alt_L是单次点击Alt_L(按下后立刻抬起),不会保持按住状态,自然无法形成两个键同时按下的状态;第二条命令里的keyup Alt不存在对应键名,Alt是修饰组统称,不是具体的按键keysym。
  • 事件间隔过短:不带--delay参数时,xdotool发送的按键事件间隔极短,会被Xorg服务器判定为重复冗余事件直接丢弃。

正确可运行的命令

方法1:keysym写法(适合默认键盘布局,Alt_R没有被改映射的场景)

# 依次按下左Alt、右Alt,每个按键事件间隔50ms避免被拦截
xdotool keydown --delay 50 Alt_L keydown --delay 50 Alt_R
# 保持两个键同时按住1秒,可根据需要修改时长
sleep 1
# 逆序抬起两个按键
xdotool keyup --delay 50 Alt_R keyup --delay 50 Alt_L

方法2:keycode写法(100%兼容所有键盘布局,最稳定)

如果方法1失效,说明你的桌面环境把Alt_R默认映射成了ISO_Level3_Shift(多语言布局的第三级切换键),这时候用硬件keycode写命令不会受映射影响:

  1. 先查两个键的keycode,终端运行xev | grep keycode,在弹出的小窗口里分别按左Alt、右Alt,记录返回的keycode数值,常见默认值为左Alt=64、右Alt=108。
  2. 替换成你查到的keycode执行命令即可:
# 示例keycode为左Alt=64、右Alt=108,请替换成你自己查到的数值
xdotool keydown --delay 50 64 keydown --delay 50 108
sleep 1
xdotool keyup --delay 50 108 keyup --delay 50 64

注意事项

  • 不要用+号连接同属一个修饰组的按键(比如两个Alt、两个Ctrl、两个Shift),一定会被xdotool自动合并。
  • 按键抬起的顺序最好和按下顺序相反,避免出现修饰键卡键的问题。
  • 如果是在脚本里运行,建议在命令前加--sync参数,让xdotool等上一个按键事件被X服务器接收后再发下一个,稳定性更高,比如xdotool keydown --sync --delay 50 Alt_L。

内容的提问来源于stack exchange,提问作者Jonathan Strange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:33:06