如何在Ubuntu 16.04中持续重映射密钥?

这适用于本届会议:

costales@dev:~/Desktop$ xmodmap -e "keycode 166 = less" costales@dev:~/Desktop$ xmodmap -e "keycode 167 = greater" 

然后我创建了这个配置文件:

 costales@dev:~/Desktop$ cat ~/.Xmodmap keycode 166 = less keycode 167 = greater costales@dev:~/Desktop$ 

但重启后它无法正常工作。 重启后如何强制设置重映射?

我一直在使用16.04,它似乎使用sddm作为它的桌面管理器。 之前它曾经是LightDM和GDM。 它的predacessors都被记录为自动加载~/.Xmodmap但我找不到任何明确说sddm的东西。

因此,建议仅使用新脚本强制加载它。 您只需要运行xmodmap ~/.Xmodmap ,您可以通过多种方式执行此操作:

  • 通过图形启动工具添加它
  • 编辑~/.xinitrc来运行它。
  • ~/.config/autostart/添加新的.desktop配置

可能有几十种其他方法来管理它,基本上做同样的事情。

我添加了一个包含以下内容的文件/etc/X11/Xsession.d/80_xmodmap

 #!/bin/sh # Set custom keycodes # # This file is sourced by Xsession(5), not executed. # The "|| true" is to ensure that the Xsession script does not terminate on error USRMODMAP="$HOME/.Xmodmap" if [ -x /usr/bin/xmodmap ]; then if [ -f "$USRMODMAP" ]; then /usr/bin/xmodmap "$USRMODMAP" || true fi fi 

这每次都有效。

打开gnome-session-properties。 添加命令和名称。 桌面文件将在〜/ .config / autostart中创建。

remenber:使用绝对路径 ,例如/home/xxx/.Xmodmap。 永远不要用’〜’作为你的家庭目录。

导航

 /usr/share/X11/xkb/symbols 

使用sudo权限,在编辑器中打开您想要编辑的布局。 替换值。

重新启动后,将应用更改。


以下是我用于重新映射键盘的示例,因为键盘硬件问题。

键盘重映射示例

因为.Xmodmap文件比xkb更容易编辑,所以我使用.Xmodmap作为’源’文件,然后将其转换为xkb (当前标准)并使用.bashrc方法在启动时自动加载。

这是在这里发布的一些简单步骤。

完美运行,并且在删除对.Xmodmap的支持时使用xkb future-proofs。

在Google上搜索后,我能够解决笔记本电脑有故障的重新映射问题。 重新映射后,Thinkpad T400上的所有故障键都能正常工作。 此外,它是永久性的,没有CPU核心上的额外负载。

  • 首先使用以下命令查找键盘布局或键码。

     xevv -event keyboard 
  • 例如,在我的Thinkpad T400键码上发现如下:

     Keycode of "z" key is 52 Keycode of "x" key is 53 Keycode of "c" key is 54 Keycode of "v" key is 55 Keycode of "F6" key is 72 Keycode of "F10" key is 76 Keycode of "F11" key is 95 Keycode of "F12" key is 96 
  • 通过分配function键“F6”“F10”“F11”“F12”重新映射字符键“z”“x”“c”“v”。

  • 修改如下所示的行(如果出现问题,则在进行任何更改之前备份文件,以便轻松回滚)。

     sudo vi /usr/share/X11/xkb/keycodes/evdev 
  • 找到行并更改值如下:

      = 72;  = 76;  = 95;  = 96; 
  • 注释这些行或删除行:

     //  = 72; //  = 76; //  = 95; //  = 96; 
  • 保存并退出。

  • 重新映射特殊键。

  • 如果出现问题,在更改回滚之前备份文件。

     cd /usr/share/X11/xkb/symbols/ sudo vi pc 
  • 在函数“xkb_symbols”编辑“{”中添加或修改以下行

     key [SCLK] { [ Prior ] }; key [PAUS] { [ Next ] }; 
  • 保存并退出。

  • 清除缓存。

     sudo rm -rf /var/lib/xkb/* 
  • 重启。