我有一个俄语键盘布局。这个键盘没有学术领域中用于重音符号的锐音符号。
我可以手动完成。例如,在一个字符之后,и:
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 检查过并且它也有效。