0

我的键盘上有一个坏键,点“。” 再具体一点。它的行为非常奇怪,大约 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 按下并一次又一次地触发相同的脚本。

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

4

1 回答 1

2

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

contents=$(xclip -selection primary -o)

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

echo -n "$contents" | xclip -selection primary
于 2017-05-16T16:36:48.377 回答