如何将 Ctrl+箭头绑定到 Home 和 End 键?xmodmap 不起作用

如何将 Ctrl+箭头绑定到 Home 和 End 键?xmodmap 不起作用

在 Windows 上,我曾经通过 ahk 绑定Ctrl+LeftHomeCtrl+ 右到End

现在我正在努力在 Ubuntu 中实现这种行为。我尝试编辑/etc/inputrc

"\e[1;5C": end-of-line
"\e[1;5D": beginning-of-line

它有效,但仅限于终端窗口。我也尝试过 xmodmap:

xmodmap -e "keycode 113=Left NoSymbol Home"

但它不起作用。
奇怪的是,如果我在 xmodmap 中绑定到Shift+,它就会起作用:Left

xmodmap -e "keycode 113=Left Home"

我的猜测是Ctrl+ Left(跳过单词)的默认行为在某种程度上优先于 xmodmap 绑定。

在哪里可以找到默认绑定的位置以及如何删除它?或者,也许我可以在那里绑定所需的行为?

我在 Ubuntu 12.04

答案1

自动键可以进行这样的绑定,但它需要在后台运行服务(如 ahk,但与 xmodmap 不同)。

配置一个“短语”,其中文本为<home>,粘贴方法为Keyboard,热键为<ctrl>-<left>

自动键图形用户界面

答案2

我在 Ubuntu 工作站上使用 Apple 铝制键盘,以下 xmodmap 命令为我完成了此操作:

# remap Ctrl_L to ModeSwitch, then use it to map arrow keys so that
# they act like on the MacBook keyboard with Fn key pressed 
xmodmap -e "keycode 37=Mode_switch"
xmodmap -e "keycode 113 = Left NoSymbol Home"
xmodmap -e "keycode 114 = Right NoSymbol End"
xmodmap -e "keycode 111 = Up NoSymbol Prior"
xmodmap -e "keycode 116 = Down NoSymbol Next"

这非常完美,因为我的Caps Lock按键使用 Ubuntu 键盘偏好设置重新映射到 Control 功能,所以不需要左 Control 键。由于它位于 MacBook 键盘上 Fn 键的位置,因此在台式机和 MacBook 键盘之间切换不会影响肌肉记忆。

答案3

Autokey 对我来说很管用。默认的 Autokey 行为是:同时映射right ctrl+arrowleft ctrl+ arrow。而我只想要right ctrl,因为我习惯于left ctrl导航单词。

这是我在 Autokey 中使用的脚本:

output = system.exec_command('xinput query-state "AT Translated Set 2 keyboard" | grep down', getOutput=True)
# 105 is right ctrl
if 'key[105]=down' in output:
    keyboard.send_keys('<end>')
else:
    keyboard.send_keys('<ctrl>+<right>')

注意:你的键盘名称可能不同。请尝试所有键盘。我有 3 个设备,但只有一个能用

xinput list --name-only | grep -i keyb
Virtual core keyboard
Virtual core XTEST keyboard
AT Translated Set 2 keyboard

PS 我从 GitHub 安装了 Autokey,因为 Ubuntu 软件中的包已损坏。

相关内容