Debian/Xfce:home 和 end 键的键盘快捷键

Debian/Xfce:home 和 end 键的键盘快捷键

我在 Debian 上运行 xfce4。我想为 home 和 end 键分配键盘快捷键(具体来说,将光标移动到行的开头和结尾)。

在设置管理器中,有一个 GUI 界面,用于为命令分配键盘快捷键。但是,如何为另一个键(home 或 end)设置键盘快捷键(例如 ctrl+a 或 ctrl+e)?

谢谢!

答案1

我尝试了几种工具,例如xmodmapxbindkeysxdotool分配Ctrl-LeftHomeCtrl-RightEnd

问题是:作为结果,它发送Ctrl- Left-HomeCtrl- 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

这可能是一个答案,但目的是提供有用的提示。

如果我没看错的话,您正在尝试将单个密钥绑定到几个键按下。给出的例子是重新映射EndCtrl+ E(这可能更容易理解)。

xmodmapxbindkeys

经典的方法是使用xevX 工具检查您的键码,例如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 上尝试的最佳解决方案。

相关内容