嗨!我目前从 Mac 切换到 Linux,仍在尝试弄清楚如何调整一些键盘快捷键。
例如,我通过添加以下命令将 Ctrl + 右箭头映射到设置中的 End 键:
zsh -c "xdotool getactivewindow key End"
对于单行程序来说,这可以正常工作。但在邮件客户端、文本编辑器等中,我没有跳转到行尾,而是跳转到整个文本块的末尾。但是 End 键将光标设置为当前行的末尾,而不是整个块。我在这里遗漏了什么?当然,Ctrl + Left 也是如此,它被映射到 Home 键。
当我尝试将 Alt + Left 和 Alt + Right 映射到 Ctrl + Left 和 Ctrl + Right 时,出现了第二个问题。通过按 Alt + Left,我想跳转到上一个单词,反之亦然,使用 Alt + Right:
zsh -c "xdotool getactivewindow key Control_L+Right"
按下 Alt + Right 时没有任何反应。我猜它不起作用是因为它引用了另一个自定义快捷方式。添加短暂的 sleep 0.2s 不起作用:
zsh -c "sleep 0.2s && xdotool getactivewindow key Control_L+Right"
当我按下 Alt + Left 时,如果我在释放箭头键后释放 Alt 键,它就会正常工作。预期的行为是只需按住 alt 并按下箭头键即可逐字移动光标...
有没有人遇到同样的问题或有人找到了解决方案?
提前致谢!
答案1
通过添加 --clearmodifiers 标志,我设法使所有快捷方式按预期工作。根据 xdotool 手册:
任何带有 --clearmodifiers 标志的命令都将尝试清除命令期间的任何活动输入修饰符,然后恢复它们。
因此我将以下命令添加到我的自定义++Alt快捷方式中:ShiftLeft
zsh -c "xdotool getactivewindow key --clearmodifiers Shift+Control_L+Left"
Ctrl此解决方案还解决了+键跳转到段落开头和结尾的问题Arrow。现在光标会跳转到单行的开头和结尾。