问题描述
如何使 Caps Lock 键像另一个 Shift 键一样工作?
这里有很多关于重新分配它或让它启动自定义命令的问题。我只希望它像另一个 Shift 键一样工作。我不希望任何其他键改变它们的作用,只想改变这个键。
键盘布局/大写锁定键行为不起作用,我不明白如何在 CCSM 中重新映射它。
我现在使用的是英国键盘,但我学会了在美国键盘上打字,较小的左 Shift 键让我抓狂。
最佳回答
扩展@Zacharee1 的回答:
使用 cp /usr/share/X11/xkb/symbols/pc ~/pckeybak
进行备份
然后使用 gksu gedit /usr/share/X11/xkb/symbols/pc
或您最喜欢的编辑器进行编辑。
找到第 (22) 行:
key <CAPS> { [ Caps_Lock ] };
并将其更改为
key <CAPS> { [ Shift_L ] };
(36)行写道:
modifier_map Lock { Caps_Lock };
并将其更改为
//modifier_map Lock { Caps_Lock };
(应该将其注释掉以禁用锁定)
测试表明 Num Lock
仍按预期工作。进一步测试表明,即使是在未修改的系统上,16.04 中的键盘指示灯似乎也有点阅读障碍。登录时滚动锁定指示灯亮起,但滚动锁定指示灯熄灭,数字锁定指示灯熄灭,但数字锁定指示灯亮起。点击左侧的 Ctrl
键似乎可以解决此问题,我不确定这是否与我使用 KVM 切换器有关(这是可能的)
注意:进一步的测试表明,即使没有 KVM 开关,NumLock indicator light is flaky 也必须轻按两次才能与 NumLock 重新同步。如果您一直开着它,您可以忽略灯光,或者如果它打扰您,您可以轻按两次以使其重新同步。为什么会发生这种情况可能是新问题的基础…
解决原始问题的另一个简单的方法是简单地获取 inexpensive US keyboard 并使用美国键盘映射。
资料来源:@Zacharee1 对 /usr/share/X11/xkb/symbols/pc
的回答和分析以及反复试验
次佳回答
您可以通过调整 How to change CapsLock key to produce \u201ca\u201d? 来达到目的(例如)。
从 Caps Lock
键中删除 Lock
(= Caps Lock)修饰符,并声明此键发送 Shift_L
键符。
remove Lock = Caps_Lock
keysym Caps_Lock = Shift_L
或者,您可以删除 Lock
修饰符并添加 Shift
修饰符。
remove Lock = Caps_Lock
add Shift = Caps_Lock
不管怎样,这些行都会进入文件 ~/.Xmodmap
。通过使用 xmodmap ~/.Xmodmap
加载它进行测试;在默认环境下登录时会自动读取该文件(至少在 Gnome 时代是这样)。
第三种回答
忽略我之前失败的回答尝试,我发现了一些东西可以将大写锁定完全转换为左移。无需切换,我认为它很持久,而且非常简单。
首先,在介绍如何更改它之前,我建议先进行备份。
运行 sudo cp /usr/share/X11/xkb/symbols/pc ~/pckeybak
现在有了备份,我们开始编辑吧。
使用您最喜欢的文本编辑器以 root 身份编辑此文件:
/usr/share/X11/xkb/symbols/pc
找到如下所示的片段(它位于顶部附近,对我来说是第 22 行):
key <TAB> { [ Tab, ISO_Left_Tab ] };
key <RTRN> { [ Return ] };
key <CAPS> { [ Caps_lock ] };
key <NMLK> { [ Num_Lock ] };
编辑
key <CAPS> { [ Caps_lock ] };
成为
key <CAPS> { [ Shift_L, Caps_Lock ] };
(Shift_L,
后面的 Caps_Lock
可能是不必要的。)
重新启动显示管理器(通常是 sudo service lightdm restart
),此时 capslock 键将变为左移键。(注意:我的测试机使用 GNOME,因此我必须重新启动 gdm
。但是,这导致后备 TTY 出现一些奇怪的闪烁,并且 gdm
从未重新启动。我不得不完全重新启动。)
我实际上已经测试过这个,并且可以确认它有效。
改编自 Permanent xmodmap in Ubuntu 13.04
第四种回答
对于 14.04
one-liner:
xmodmap -e 'keycode 66=Shift_L'
但是,在意外情况下 66
不是正确的键码,首先在控制台中运行 xev
并按 CapsLock
。然后你会看到类似以下内容:
KeyPress event, serial 27, synthetic NO, window 0x1200001,
root 0x101, subw 0x0, time 6417361, (340,373), root:(342,393),
state 0x0, keycode XX (keysym 0x0207, Caps_Lock), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
正确的键码是 XX
中指示的键码。