在 Ubuntu 13.10 中重新映射 Ctrl、Alt 和 Super 键
Posted
技术标签:
【中文标题】在 Ubuntu 13.10 中重新映射 Ctrl、Alt 和 Super 键【英文标题】:Remap Ctrl, Alt & Super keys in Ubuntu 13.10 【发布时间】:2014-03-17 16:49:34 【问题描述】:我正在尝试重新映射键盘的最后一行以模仿 Happy Hacking 键盘布局。我创建了一个 .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,Super 键:Alt和 Ctrl 键:Super。
但是,当我运行emacs时,仍然是Alt key: Alt, Super key: Super & Ctrl键: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
请提供您的建议。
感谢您的宝贵时间。
-吉里什
一点背景:
最近从 Windows 切换到 Ubuntu。我使用 Emacs 编写代码,并发现像在 HHK 中那样映射键是有效的。避免伤害手腕的小指和RSI。
【问题讨论】:
欢迎来到 Stack Overflow。当问题尽可能简洁时,许多人会赞赏它,同时清楚地说明您要解决的问题。据我了解,您的问题是 Ubuntu 在启动时没有加载 xmodmap? 【参考方案1】:有关信息,如果您不想陷入 Xmodmap
的痛苦中,您还可以通过 gnome 设置做很多事情。
sudo apt-get install gnome-tweak-tool
,打开它,转到 Typing,然后查看 Ctrl 键位置 和 Alt/Win 键行为 的选项:
您也可以通过gsettings
执行此操作,但不确定确切的配置条目名称。
【讨论】:
下次我想交换密钥时会记住这一点。但是,当我切换到 KDE 并在其中应用时,xmodmap 脚本工作得很好。 这里没有说明如何使用xmodmap
解决问题。
这比使用xmodmap
解决了我的问题,谢谢!【参考方案2】:
最后,让键盘模仿 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 文件。否则,我不会弄明白的。
【讨论】:
我已经阅读了一千个关于此的主题,甚至没有人提到clear
/ add
关键字。非常感谢,它正在工作!
谢谢各位!很高兴知道有人欣赏这篇文章。
但是如何在启动操作系统时自动执行呢?你说的两种方法我都试过了,没用。【参考方案3】:
我成功地使用以下 xmodmap 在 ubuntu 系统中交换了我的右手 ctrl
和 alt
,
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 版本中修复此问题。
【讨论】:
感谢您分享此信息。是否有任何其他方法可以交换关键事件?我记得我曾使用一个名为 SharpKeys 的工具在 Windows 中做同样的事情。有没有类似的东西? 我尝试了 XKB 作为一种可能的解决方法,但它面临着同样的问题(至少快速试用)。 嗨,从您的 xmopmap 文件中,我观察到您必须使用clear
和 add
mod
和 control
键。您能告诉我在更改 Ctrl、Alt、Super 键时应该清除/添加哪些 mod
键吗?【参考方案4】:
-
打开配置/usr/share/X11/xkb/symbols/pc
使用 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
【讨论】:
【参考方案5】:是的,Ubuntu 因弄乱您的设置而臭名昭著。
如果我理解正确,您想在启动时运行xmodmap
。
目前对我有用的是通过启动应用程序运行它(只需从破折号中输入)。 按添加并填写以下命令:
xmodmap .Xmodmap
【讨论】:
是的,你是对的。我希望我的 Xmodmap 在启动时运行。我无法按照你的修复。你能详细说明一下吗? 对不起.. 学习缓慢。我在启动应用程序中添加了命令。马上要重启了。 可能是您系统上的某些东西搞砸了。作为一种变通方法,您可以将对 xmodmap 的调用放入 ~/.bashrc。每次启动图形终端时都会加载它。 我将xmodmap ~/.Xmodmap
添加到 ~/.bashrc。它没有达到预期的效果。会不会是 Xmodmap 文件的问题。这是定义映射的正确方法吗?
我在工作场所的代理后面。无法访问您的文件。【参考方案6】:
如果您希望 Alt 为 Ctrl(即,将 ctrl 映射到 alt)、Super 为 Alt 和 Ctrl 为 Super,并且希望左右手都使用,那么在我的 ubuntu 16.10 上,您可以简单地执行以下任何操作:
-
和hwjp's answer一样,使用Gnome的工具选择altwin:ctrl_alt_win选项,
在 KDE 中,类似地查看系统设置/输入设备/键盘/高级中的 altwin:ctrl_alt_win 选项,
在终端上写
setxkbmap -option altwin:ctrl_alt_win
。请注意,setxkbmap -option
已撤消此操作。
这避免使用 xmodmap,并且 KDE/Gnome 设置仍将保持不变。
顺便说一句,我也会这样做,但我的华硕笔记本电脑没有正确的 Win 键。因此,为了在左侧做同样的事情并且只在右侧交换 alt 和控件,我在 /usr/share/X11/xkb/symbols/ 添加了一个 xkb 选项,我可以再次打开/关闭类似setxkbmap -option tp500:emacs_b_row
。如果你想知道如何,你可以在 askubuntu 上关注this answer。请注意,在最后一个链接中,您可能不需要他的第 4 步,而您需要 sudo 电源。这种方法感觉比 user259819 的 xkb solution 更合适和良性。
我可能已将此答案添加为评论,但我的声誉很低!
【讨论】:
以上是关于在 Ubuntu 13.10 中重新映射 Ctrl、Alt 和 Super 键的主要内容,如果未能解决你的问题,请参考以下文章
升级到 Ubuntu 13.10 后,Apache 上的 laravel 项目出现 403 错误
Eclipse Kepler 在 Ubuntu 13.10 上经常崩溃