如何将Caps Lock键设为第三个Shift键?

如何使Caps Lock键像另一个Shift键一样工作?

这里有很多关于重新分配或启动自定义命令的问题。 我只是希望它像另一个Shift键一样工作。 我不希望任何其他键改变他们所做的,只是那个。

键盘布局/大写锁定键行为不会这样做,我不明白如何在CCSM中重新映射它。

我现在正在使用英国键盘,但我学会了在美国键盘上键入,较小的左Shift键是DRIVING ME NUTS。

扩展@ Zacharee1答案:

使用cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

然后使用gksu gedit /usr/share/X11/xkb/symbols/pc或您喜欢的编辑器进行编辑。

找到说()的行(22):

key { [ Caps_Lock ] };

并将其更改为

key { [ Shift_L ] };

和第(36)行说:

modifier_map Lock { Caps_Lock };

并将其更改为

//modifier_map Lock { Caps_Lock }; (应该将其注释掉,实际上禁用锁定)

测试表明Num Lock仍然按预期工作。 进一步的测试表明,即使是未经修改的系统,16.04键盘指示灯似乎有点诵读困难。 登录时滚动锁定指示灯亮起,但滚动锁定关闭,Num Lock指示灯熄灭,但Num锁定。 点击左Ctrl键似乎解决了这种行为,我不确定它是否与我使用KVM切换器有关(这是可能的)

注意:进一步的测试表明,即使没有KVM切换器, NumLock指示灯仍然是片状的 ,并且必须轻敲两次才能与NumLock同步如果您始终保持开启,您可以忽略灯光或者如果它困扰您,您可以点击它两次让它恢复同步。 为什么会发生这种情况可能是一个新问题的基础……

原始问题的另一个简单解决方案是简单地获得便宜的美国键盘并使用美国键盘映射。

来源:@ Zacharee1对/usr/share/X11/xkb/symbols/pc回答和分析以及试错测试

您可以通过调整如何更改CapsLock键来生成“a”来实现目标? (例如)。

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, ISO_Left_Tab ] }; key  { [ Return ] }; key  { [ Caps_lock ] }; key  { [ Num_Lock ] }; 

编辑

 key  { [ Caps_lock ] }; 

成为

 key  { [ Shift_L, Caps_Lock ] }; 

代替。 ( Caps_Lock之后的Shift_L,可能是不必要的。)

重新启动你的显示管理器(通常是sudo service lightdm restart ),现在将解锁大写。 ( 注意:我的测试机器使用GNOME,所以我不得不重新启动gdm 。但是,这导致了后备TTY中的一些奇怪的闪烁,并且gdm从未重新启动。我不得不完全重启。)

这个我实际上能够测试,并且可以确认它有效。

改编自Ubuntu 13.04中的Permanent xmodmap

14.04

单行:

 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指示的代码。