7

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

通过运行xevie Altkey: CtrlSuperkey:AltCtrlkey:验证了更改Super

但是,当我运行 emacs 时,它仍然是Altkey: Alt, Superkey: Super& Ctrlkey: Ctrl。而且,终端仍然只能通过按Alt++而不是Ctrl++来启动。这些应用程序仍然反映默认的键盘布局,而不是按照我文件中的新配置。tAltSupert$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。

4

6 回答 6

13

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

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

在此处输入图像描述

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

于 2014-12-18T13:18:40.647 回答
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 文件。否则,我不会想出来的。

于 2014-02-24T13:50:02.617 回答
2

我成功地用下面的 xmodmap 交换了我的右手ctrlalt整个 ubuntu 系统,

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

我怀疑在登录期间自动启动 xmodmap 将无法正常工作,直到在下一个 ubuntu 版本中修复此问题。

于 2014-02-18T12:06:16.290 回答
2
  1. 打开配置/usr/share/X11/xkb/symbols/pc
  2. 使用 Super_L 和 Control_L 修改行(将 LWIN 与 LCTL 和 RWIN 以及与 RCTL
key <LWIN> {    [ Super_L       ]   };
key <LCTL> {    [ Control_L     ]   };
key <RWIN> {    [ Super_R       ]   };
key <RCTL> {    [ Control_R     ]   };

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

于 2015-05-07T07:01:56.813 回答
1

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

目前对我有用的是通过启动应用程序运行它(只需从破折号中输入)。按添加并填写以下命令:

xmodmap .Xmodmap
于 2014-02-18T08:46:20.637 回答
1

如果您希望 Alt 作为 Ctrl(即,将 ctrl 映射到 alt)、Super 作为 Alt 和 Ctrl 作为 Super,并且希望左右手都使用它,那么在我的 ubuntu 16.10 上,您可以简单地执行以下任何操作:

  1. hwjp 的回答一样,使用 Gnome 的工具选择 altwin:ctrl_alt_win 选项,
  2. 在 KDE 中,类似地查看 altwin:ctrl_alt_win 选项的 System Settings/Input Devices/Keyboard/Advanced,
  3. 在终端上写setxkbmap -option altwin:ctrl_alt_win. 请注意,这是由 撤消的setxkbmap -option

避免了使用 xmodmap并且 KDE/Gnome 设置仍将保持不变。

顺便说一句,我也会这样做,但我的华硕笔记本电脑没有正确的赢键。所以,为了在左侧做同样的事情并且只在右侧交换 alt 和控件,我在 /usr/share/X11/xkb/symbols/ 中添加了一个 xkb 选项,我可以再次打开/关闭类似的东西setxkbmap -option tp500:emacs_b_row。如果你想知道如何,你可以在 askubuntu 上关注这个答案。请注意,在最后一个链接中,您可能不需要他的第 4 步,而您需要 sudo 电源。这种方法感觉比user259819的 xkb解决方案更合适和良性。

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

于 2016-11-22T15:55:35.320 回答