xdotool输出被xbindkeys拦截

时间:2017-03-31 10:05:59

标签: bash unicode xdotool

我的键盘上有一个坏键,点“。”再具体一点。 它表现得非常奇怪,大约是键盘类型的7/10倍,点击一次时出现双点“..”。 当按下点键时我使用xbindkeys来拦截并触发我的bash脚本启动。 我编写的bash脚本检查它运行的实例数,并只键入“。”。一次。

  #!/bin/bash
  let "target=2"
  curr=$(ps -A | grep 'dot-writer.sh' | wc -l)
  if [ "$curr" -eq "$target" ]
  then
    numlockx on
    xdotool key KP_Delete
    sleep 0.1
  fi

从脚本中我可以看到,我实际上并没有输入“。”用xdotool键,但相反,我启用Numlock并输入另一个“。”位于键盘上的键盘上与删除相同的按钮。

正如你可能猜到的那样,这不是一个完美的解决方案,因为这两个键在100%的时间内并不完全相同。

我试过告诉xdotool输入“。”作为Unicode字符

xdotool key U002E

我试过告诉xdotool输入“。”作为Bash生成的字符串

xdotool type $'.'

我试过告诉xdotool输入“。”作为由Bash生成的字符串,包含Unicode字符“。”

xdotool type $'\u002E'

这些似乎都不起作用,因为它被截取,好像xbindkeys按下了点键并一次又一次地触发了相同的脚本。

我能做些什么吗? 我可以使用其他工具来模仿按键吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试将点复制到主剪贴板,以便粘贴它而不是发送密钥。变量用于保存和恢复剪贴板的先前内容。

contents=$(xclip -selection primary -o)

echo -n "." | xclip -selection primary
xdotool key --clearmodifiers Shift+Insert

echo -n "$contents" | xclip -selection primary