xdotool :手动插入 unicode:即不是按“键 U ”而是按“ctrl+shift+u”

xdotool :手动插入 unicode:即不是按“键 U ”而是按“ctrl+shift+u”

我有一个俄语键盘布局。这个键盘没有学术领域中用于重音符号的锐音符号。

我可以手动完成。例如,在一个字符之后,и:

ctrl+shift+u 301 空格 --> и́

我正在尝试使用 xdotool 创建快捷方式来插入这种压力:

我已经尝试使用相同的解决方案如何使 xdotool 键入 Unicode 字符,但由于某种原因,尖角符号很特殊(它本身不是一个字符,而是将自身添加到前一个字符中),并且它不起作用。

ctrl+shift+u 301 space所以,我希望 xdotool 为我输入我手动输入的所有序列。

我现在所做的是:

sleep 0.2 &&
  xdotool key --delay 15 'ctrl+shift+u' &&
  sleep 0.2 &&
  xdotool type 301 &&
  xdotool key space

但是这样做的时候,xdotool 会停在“U”,等待我填写数字

答案1

U+301 是结合尖音符(即添加到前一个字符上)。您希望非结合尖音符,U+B4:

xdotool key UB4

还有一个次优解决方案,即让 xdotool 发送组合重音符号和空格,但它仅在某些程序中正确呈现:

xdotool key U301 space

另外,题外话,你的代码在我的机器上运行得很好。我不知道为什么它在你的机器上不行。

答案2

这些都是老问题,但我会分享我的经验,希望它能对某人有所帮助。

我发现 xdotool 解决方案不可靠,而且由于它驱动的只是 ASCII 的 C 库,所以解决问题的选项有限。

最后我利用Linux显示和存储unicode字符的功能将它们存储在剪贴板上。Xdotool用于将它们粘贴到活动窗口中。因此代码如下:

echo 'λ' | xclip -selection clipboard;  # save unicode char(s) on clipboard
sleep 0.5; 
xdotool key 'ctrl+shift+v';  # paste to active window
sleep 0.3;  
xdotool key ctrl+h  # backspace because I was getting an extra linefeed

我使用 xsel --clipboard 检查过并且它也有效。

相关内容