重新映射Ctrl,Alt& Ubuntu 13.10中的超级密钥

时间:2014-02-18 05:38:36

标签: ubuntu emacs ubuntu-13.10 xmodmap

我正在尝试重新映射键盘的最后一行以模仿Happy Hacking Keyboard布局。我创建了一个.Xmodmap文件,其中包含键码更改。下面仅显示使用xmodmap -pke > ~/.Xmodmap生成的Xmodmap文件中手动更改的行。

keycode 37 = Super_L NoSymbol Super_L
keycode 64 = Control_L NoSymbol Control_L
keycode 105 = Super_R NoSymbol Super_R
keycode 108 = Control_R NoSymbol Control_R
keycode 133 = Alt_L Meta_L Alt_L Meta_L
keycode 134 = Alt_R Meta_R Alt_R Meta_R

使用

加载上述更改
xmodmap ~/.Xmodmap

通过运行xev Alt 键验证更改: Ctrl 超级键: Alt Ctrl 键:超级

但是,当我运行emacs时,它仍然是 Alt 键: Alt 超级键:超级 &安培; Ctrl key: Ctrl 。并且,只能通过按 Alt + Ctrl + t 而不是 Alt + 超级 + t 。这些应用程序仍然反映默认的键盘布局,而不是根据我$HOME/.Xmodmap文件中的新配置。

xmodmap ~/.Xmodmap添加到$HOME/.xinitrc文件中,以便更改在应用程序之间保持不变。这不是工作。

另外,将以下代码添加到/etc/X11/xinit/xinitrc。但这也不起作用。

if [ -f $HOME/.Xmodmap ]; then
    /usr/bin/xmodmap $HOME/.Xmodmap
fi

请提供您的建议。

感谢您的时间。

-Girish

一个小背景:

最近从Windows切换到Ubuntu。我使用Emacs编写代码,并发现在HHK中映射键是有效的。它避免伤害手腕的小指和RSI。

6 个答案:

答案 0 :(得分:9)

有关信息,如果您不想进入Xmodmap的痛苦,您也可以通过gnome设置做很多事情。

sudo apt-get install gnome-tweak-tool,打开它,转到打字,然后查看 Ctrl键位置 Alt / Win键行为的选项EM>:

enter image description here

您可能也可以通过gsettings执行此操作,但我不确定确切的配置条目名称。

答案 1 :(得分:8)

最后,让键盘模仿HHK布局(键盘的最后一行)。

在对新键映射进行更改之前,必须添加命令以清除修饰键。然后,启用修改键。

clear control
clear mod1
clear mod4

keycode 37 = Super_L NoSymbol Super_L
keycode 64 = Control_L NoSymbol Control_L
keycode 105 = Super_R NoSymbol Super_R
keycode 108 = Control_R NoSymbol Control_R
keycode 133 = Alt_L Meta_L Alt_L Meta_L
keycode 134 = Alt_R Meta_R Alt_R Meta_R

add control = Control_L Control_R
add mod1 = Alt_L Alt_R
add mod4 = Super_L Super_R

感谢@ d4gg4d分享你的Xmodmap文件。否则,我不会想出来的。

答案 2 :(得分:2)

我成功地使用以下xmodmap在ubuntu系统中交换右手ctrlalt

https://github.com/d4gg4d/my-emacs/blob/master/.Xmodmap

但是13.10 ubuntu在重新映射时遭受了不好的打击。因此,我认为您的问题也与此问题有关:

https://askubuntu.com/questions/363075/xmodmap-doesnt-work-for-two-layouts/405553#405553

我怀疑在下次ubuntu版本中修复后,在登录期间自动启动xmodmap将无效。

答案 3 :(得分:2)

  1. 打开配置 / usr / share / X11 / xkb / symbols / pc
  2. 使用Super_L和Control_L修改行(使用LCTL和RWIN以及使用RCTL
  3. 交换LWIN
    key <LWIN> {    [ Super_L       ]   };
    key <LCTL> {    [ Control_L     ]   };
    key <RWIN> {    [ Super_R       ]   };
    key <RCTL> {    [ Control_R     ]   };
    

     3.删除缓存rm -rf / var / lib / xkb / *  4.重新启动X

答案 4 :(得分:1)

是的,Ubuntu因弄乱你的设置而臭名昭着。 如果我理解正确,您希望在启动时运行xmodmap

目前适用于我的是通过启动应用程序运行它(只需从短划线输入)。 按添加并填写此命令:

xmodmap .Xmodmap

答案 5 :(得分:0)

如果您想要Alt作为Ctrl(即将ctrl映射到alt),Super作为Alt,Ctrl作为Super,并且想要左手和右手,那么在我的ubuntu 16.10上你可以简单地执行以下任何操作: / p>

  1. hwjp's answer一样,使用Gnome的工具选择altwin:ctrl_alt_win选项,
  2. 在KDE中同样查看altwin:ctrl_alt_win选项的系统设置/输入设备/键盘/高级,
  3. 在终端上写setxkbmap -option altwin:ctrl_alt_win。请注意,这由setxkbmap -option撤消。
  4. 这个避免使用xmodmap ,KDE / Gnome设置仍然是持久的。

    顺便说一下,我会做同样的事情,但我的华硕笔记本电脑没有正确的赢取密钥。因此,为了在左侧执行相同操作并且仅在右侧使用控件交换alt,我在/ usr / share / X11 / xkb / symbols /中添加了一个xkb选项,我可以再次打开/关闭像setxkbmap -option tp500:emacs_b_row这样的东西。如果您想知道如何操作,可以在askubuntu上关注this answer。请注意,在最后一个链接中你可能不需要他的第4步,你需要sudo权力。用户259819,这种方法比xkb solution感觉更合适和温和。

    我可能已将此答案添加为评论,但我的声誉很低!