我在 Debian 上运行 xfce4。我想为 home 和 end 键分配键盘快捷键(具体来说,将光标移动到行的开头和结尾)。
在设置管理器中,有一个 GUI 界面,用于为命令分配键盘快捷键。但是,如何为另一个键(home 或 end)设置键盘快捷键(例如 ctrl+a 或 ctrl+e)?
谢谢!
答案1
我尝试了几种工具,例如xmodmap
和xbindkeys
来xdotool
分配Ctrl-Left到Home和Ctrl-Right到End。
问题是:作为结果,它发送Ctrl- Left-Home和Ctrl- Right-End因为按键未释放并且没有任何效果...
我必须创建一个带有 sleep 的脚本:
$ cat HomeEnd.sh
#!/bin/bash
sleep .2
KEY=${1?key}
xdotool key ${KEY}
然后我使用“设置管理器”>“键盘”>“应用程序快捷方式”或使用命令行分配了一个快捷方式:
$ xfconf-query -c xfce4-keyboard-shortcuts -p "/commands/custom/<Ctrl>Left" -s "${HOME}/bin/HomeEnd.sh Home" -n -t string
$ xfconf-query -c xfce4-keyboard-shortcuts -p "/commands/custom/<Ctrl>Right" -s "${HOME}/bin/HomeEnd.sh End" -n -t string
现在它可以工作了,我只需敲击Ctrl或松开按键即可。LeftCtrlRight
答案2
现在最简单的方法是使用 AutoKey:
https://github.com/autokey/autokey/wiki
要调用一系列按键,您需要创建一个新脚本:
keyboard.send_keys("<ctrl>+a")
并将其分配给热键。
答案3
这可能是一个答案,但目的是提供有用的提示。
如果我没看错的话,您正在尝试将单个密钥绑定到几个键按下。给出的例子是重新映射End到Ctrl+ E(这可能更容易理解)。
xmodmap
和xbindkeys
经典的方法是使用xev
X 工具检查您的键码,例如xmodmap
重新映射键,如中所述这个答案在askubuntu.com。但这不允许您重新映射答案中提到的几个键对于这个问题。
另一种方法是使用xbindkeys
抓取密钥和xvkbd
发送密钥,其答案是这个帖子。然而,正如评论中有人提到的,这种方法也有其自身的警告,会导致焦点丢失。
其实,有类似的问题被要求将几个按键重新映射到另外几个按键(这比您的要求难一级)。不幸的是,答案明确提到您无法通过xmodmap
并建议使用来实现这一目标xbindkeys
。
选择:xdotool
前段时间,我仍在使用两键鼠标(我知道,相当旧的硬件)并尝试模拟鼠标中键单击。然后,我发现xdotool
它能够模拟鼠标点击以及键盘按键。
我的建议是,使用xdotool
模拟键盘按键End(这会给你一串命令)。然后使用此命令在 Xfce4 中分配自定义快捷方式Ctrl+ E,该快捷方式位于设置管理器 > 键盘 > 应用程序快捷方式。
要使用 构建命令xdotool
,您可以参考几个例子其中之一引述如下。
示例:将 Firefox 网址栏聚焦
WID=`xdotool search "Mozilla Firefox" | head -1` xdotool windowactivate --sync $WID xdotool key --clearmodifiers ctrl+l # As of version 2.20100623, you can do this simpler version of above: xdotool search "Mozilla Firefox" windowactivate --sync key --clearmodifiers ctrl+l
我已经有一段时间没有使用这个工具了,所以我无法对你的问题给出准确的答案。在我看来,xdotool
与 Xfce4 一起使用应用程序快捷方式是您可以在 Debian Xfce 上尝试的最佳解决方案。