有什么办法可以在按下CapsLock时禁用。Esc是的,我用的是 VIM!我实际上有一个替代的全大写键盘布局,Ctrl-6但我发现它很麻烦,并且更愿意让操作系统在Esc按下时禁用 CapsLock。另外,我经常通过 SSH 连接到其他服务器几个小时,所以我在那里使用的是库存 VIM。
请注意,我碰巧已经交换了CapsLock和Esc密钥。但是,当Esc按下该键时(该键恰好标记CapsLock
在键盘上并且位于 旁边A),我需要它来执行Escape
和Disable-CapsLock-If-It-Is-Enabled
。
这是在 Kubuntu 12.10 上。谢谢。
答案1
在 X11 中(在控制台上我不知道)你可以通过重新定义 Escape 键的行为来做到这一点。我查看了“shift(break_caps)”定义以了解它是如何工作的,并对其进行了调整。
看着这个答案在xkb上有关如何/在何处放置本地修改的文件并加载它们的更多详细信息。
为了执行您想要的操作,您需要在本地符号文件(例如:)中包含~/.xkb/symbols/mysymbols
如下部分:
partial modifier_keys
xkb_symbols "esc_breaks_caps" {
key <ESC> {
type = "ALPHABETIC",
actions [Group1] = [
SetMods(modifiers=none),
SetMods(modifiers=Lock,clearLocks)
]
};
};
并在本地键盘映射文件(例如:~/.xkb/keymap/mykbd
;您可以使用 创建它setxkbmap -print > ~/.xkb/keymap/mykbd
)中更改xkb_symbols
行以添加+mysymbols(esc_breaks_caps)
。
您现在可以使用以下命令加载它:xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
并且按下Esc将删除 CapsLock 状态(实际上,效果发生在发布Esc;我认为只有修饰语密钥立即生效;其他人的效果是在释放后。)
哦,如果您还想交换 Escape 和 CapsLock 键;然后使用它(并将“+mysymbols(esc_swap_and_breaks_caps)”放入 mykbd 文件中):
partial modifier_keys
xkb_symbols "esc_swap_and_breaks_caps" {
replace key <CAPS> {
type = "ALPHABETIC",
symbols = [ Escape, Escape ],
actions [Group1] = [
SetMods(modifiers=none),
SetMods(modifiers=Lock,clearLocks)
]
};
replace key <ESC> { [ CapsLock, CapsLock ] };
};
请注意物理键是<CAPS>
和<ESC>
;<CAPS>
(CapsLock键盘上刻有的键)发送 Escape 和<ESC>
(刻有的键Esc)发送 CapsLock,同时<CAPS>
(发送 Escape)也会取消设置大写锁定状态
答案2
将这些行添加到~/.Xmodmap
:
clear lock
keycode 0x42 = Escape
然后,键入命令:
xmodmap ~/.Xmodmap
您的Caps Lock密钥现在已重新映射到该Esc密钥。
参考网址。
还要经过这篇关于在 Ubuntu 中将 CapsLock 映射到 Escape 的好文章,这似乎是 unix.se 用户:)
答案3
我不确定这是否能回答您的问题,但要将Esc函数映射到CapsLock键,您可以使用以下命令:
setxkbmap -option "caps:escape"