在 Windows 上,我曾经通过 ahk 绑定Ctrl+Left到Home和Ctrl+ 右到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+arrow和left 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 软件中的包已损坏。