问题描述
在过去,过去我曾经使用xmodmap
来防止Caps Lock
按钮工作,然后告诉Launchy来处理按键操作。我似乎无法再这样做了。
禁用Caps Lock
正常行为的最佳方法是什么,并让它做其他事情?
最佳解决方法
来自howtogeek.com,它对任何操作系统都有很好的答案。
对于Linux(包括Ubuntu):
setxkbmap -option <OPTION>
例如,<OPTION>
可以是:
-
caps:none
– 禁用大写锁定。 -
caps:super
– Caps Lock成为额外的Super(又名Win键)。 -
caps:ctrl_modifier
– Caps Lock成为一个额外的Ctrl。 -
caps:numlock
– Caps Lock成为额外的Num Lock。 -
caps:escape
– Caps Lock成为额外的Escape。 -
caps:backspace
– Caps Lock成为额外的Backspace。 -
caps:swapescape
– Caps Lock变为Escape,Escape变为Caps Lock
注意:不推荐使用Xmodmap,而选择setxkbmap。
次佳解决方法
您可以通过转到keyboard-> Layouts-> options->大写锁定行为并选择“禁用大写锁定”来禁用它。
编辑:
我不知道为什么用另一个键盘键看起来不方便。
但在使用CTRL
+ Super
+ Space
尝试后,Launchy可以正常使用。
你需要white-list launchy
到托盘图标。请参阅如何访问并启用系统托盘中的更多图标?。您还需要将其添加到启动应用程序,因为它不会打开时不起作用。
毕竟,作为Launcy的替代品,请尝试使用Synapse与gnome和unity进行最佳集成。
第三种解决方法
在Ubuntu 11.10 – 13.04
-
打开“键盘布局”应用程序,然后单击“”Options””按钮。
-
重新绑定选项列表将会出现。选择“Caps Lock键行为”。
-
选择首选的Caps Lock重新调整选项。
第四种方法
这基本上是对https://askubuntu.com/a/223674/22073提供的答案的修改。
您还可以使用XKBOption
修改Caps Lock的行为。这些更改甚至传播到虚拟控制台(/dev /tty [1-6]或Ctrl-Alt-F [1-6])。
例如,要禁用Caps Lock,您将在/etc/default/keyboard
中拥有以下内容:
# Check /usr/share/doc/keyboard-configuration/README.Debian for
# documentation on what to do after having modified this file.
# The following variables describe your keyboard and can have the same
# values as the XkbModel, XkbLayout, XkbVariant and XkbOptions options
# in /etc/X11/xorg.conf.
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS="caps:none"
# If you don't want to use the XKB layout on the console, you can
# specify an alternative keymap. Make sure it will be accessible
# before /usr is mounted.
# KMAP=/etc/console-setup/defkeymap.kmap.gz
然后你会运行:
sudo dpkg-reconfigure keyboard-configuration
有关XKBOPTIONS自定义的完整列表,请查看/usr/share/X11/xkb/rules/base.lst
。这是我的Ubuntu 13.10机器的完整列表:http://sprunge.us/cUZO
更多信息可以在ArchLinux维基上找到:https://wiki.archlinux.org/index.php/Keyboard_Configuration_in_Xorg
第五种方法
要将无用的caps_lock重新映射到基本班次,请执行此操作
xmodmap -e "keycode 66 = Shift_L"
第六种方法
以下方法使用Compiz的组合在制作key-press时启动应用程序。
综上所述 –
-
更改Caps Lock键的行为以模仿另一个键。
-
配置compiz以侦听新模仿的密钥并运行自定义脚本。
更改大写锁定键
要更改Caps Lock键的行为,您可以使用xmodmap
,如下所示:
-
创建文件,例如”capslock”
-
将以下内容复制并粘贴到文件中
keycode 66 = cent clear Lock add Control = cent
-
现在运行xmodmap来识别您的更改:
xmodmap capslock
要永久运行,请将此命令添加到启动应用程序。
按下Caps Lock现在只是模仿按下”cent”键 – 请注意,这不是键盘上实际存在的键。
您可以获得KeySym names from here列表。
配置Compiz
启动CompizConfig设置管理器
在常规部分中,确保已启用”Commands”并配置命令,如下所示:
注:启用键绑定并使用“抓取组合键”识别您的”cent”键。不幸的是,你不能让compiz识别上限锁定键。
显然 – 更改”firefox”用于启动”launchy”的任何命令
现在,当你点击Caps Lock键时,compiz将识别映射的”cent”键并运行命令 – 在本例中为firefox – 在你的情况下为”launchy”。
第七种方法
-
使用xev命令。当你按Enter键时,xev将启动。 xev将关于密钥的所有输入和poops信息都带入命令行。我建议将鼠标放在xev窗口的退出键上,按下大写锁定(或任何你想要查找的键),然后立即退出xev。我的系统上的相关行,大写锁定看起来像:
KeyPress event, serial 36, synthetic NO, window 0x4400001, root 0x27a, subw 0x0, time 19164277, (16,-9), root:(1156,46), state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 36, synthetic NO, window 0x4400001, root 0x27a, subw 0x0, time 19164397, (16,-9), root:(1156,46), state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False
请注意
keycode
(66)和keysym
(0xffe5)。您现在也可以获取另一个键的数据 – 您实际上没有使用的键,以及在您想要使用大写锁定按钮的上下文中,它不执行任何操作。所以,如果你想要大写锁定来激活Unity搜索框(就像超级通常那样),也许可以使用`,例如。在我的机器上:
keycode 49 (keysym 0x60, grave)
-
使用xmodmap将新密钥的功能绑定到Caps Lock按钮。我很确定你想要使用如下命令:
xmodmap -e "keycode 66=0x60"
现在,如果您在文本框中点击物理大写锁定按钮,则会出现严重字符(`)。但是,如果您将快捷键映射到它,它将执行其他操作。如果您希望能够在文本框中使用它,可能会使用左移或f10替换大写锁定,或者看起来不会影响您要使用的命令的其他内容。
-
测试它以确保我给你的命令按照你想要的方式工作。
-
转到启动应用程序,并将该命令添加到启动应用程序。这样,每次启动时钥匙都会正常切换。
-
舞蹈。
(向企业大喊)Change Keybindings (hardware to software)
另外,有关xmodmap的更多帮助:
http://www.xfree86.org/4.2.0/xmodmap.1.html
http://www.in-ulm.de/~mascheck/X11/xmodmap.html
第八种方法
Ubuntu 16.04
Wernight的答案中的setxkbmap -option <OPTION>
似乎立即为我工作。
但是它会在重新启动时消失。为了解决这个问题,我加入了我的startup applications
-
搜索并运行
Startup Applications
>>单击添加 -
输入
/usr/bin/setxkbmap -option <OPTION>
作为命令(注意:完整路径很重要)
用caps:escape
替换<OPTION>
(我用它作为vi)
背景
我刚刚从15.10升级到16.04,无论我以前用什么来映射它都停止工作。
参考资料