linux - 在 Linux 上重新映射 Win、Ctrl 和 Alt 键

标签 linux emacs configuration keyboard

问题:

如何在 Linux 系统范围内重新映射(交换)修改键?

说明:

我想在我的 PC 上安装 Debian Jessie 以将其与 Emacs 一起使用。我有一台装有 Emacs 的 MacBook,主要使用它。以下是笔记本电脑上按键的排列方式:

fn ctrl alt cmd 空格键 cmd 替代

fn 在我的 Emacs 工作流程中未使用,其他键配置如下:

  • ctrl 充当 Hyper
  • alt 充当 Meta
  • cmd 作为Control

这些配置简化了我的 Emacs 体验(大拇指点击 Control cmd 键)并且我习惯了这种键绑定(bind)。

默认 alt 用作 Meta,而 ctrl 用作 Control,交换键,大拇指放在 Meta

我想在 Linux 上以同样的方式配置我的键,这是我电脑键盘上的内容:

ctrl win alt 空格键 alt win 菜单 ctrl

因此,为了对应我的笔记本电脑键,我希望将 win 键映射到 Alt 修饰符,并将 alt 键映射到Control 修饰符。在这种情况下,ctrl 可以用作 Super 修饰符,而 menu 可以保持不变。

是否可以在 Linux (Debian) 上进行系统范围内的此类配置?


最后,我通过以下配置成功实现了我的目标:

!file ~/.Xmodmap

clear control
clear mod1
clear mod4


keycode 37  = Super_L     
! left  Ctrl becomes Super
keycode 64  = Control_L
! left  Alt  becomes Control 
keycode 133 = Alt_L Meta_L
! left  Win  becomes Alt
keycode 108 = Control_R
! right Alt  becomes Control 
keycode 134 = Alt_R Meta_R
! right Win  becomes Alt
keycode 105 = Super_R
! right Ctrl becomes Super


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

还有,这里是similar question有非常有用和简单的指南。

最佳答案

除使用 xmodmap 外,可能更容易检查由 setxkbmap 提供的键盘布局选项。这些选项实现了常见的 xmodmap 更改,因此它们很可能包含您想要的内容。

例如,我喜欢 -option ctrl:nocaps,它在 caps lock 所在的位置添加了另一个 control。考虑文件 /usr/share/X11/xkb/rules/base.lst 以获得标准选项列表。

但是,xmodmapsetxkbmap 都不包括纯文本 tty 终端(非 X)的键盘设置。

关于linux - 在 Linux 上重新映射 Win、Ctrl 和 Alt 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32148927/

相关文章:

linux - 使用重命名重命名具有日期模式的多个文件

找不到 libcrypto 库错误

python - 更改文件创建日期

c++ - 构造函数中初始化列表的缩进是错误的

spring - 如何使 Spring Boot 默认为 application/json;charset=utf-8 而不是 application/json;charset=iso-8859-1

mysql - 无法在Raspberry Pi上下载MySQL软件

emacs - 在 Emacs 中使用主要模式进入次要模式

emacs - 使用 ido 模式时阻止 Tramp 打开远程目录

php - 在 PHP 中,将配置参数加载到应用程序变量中的正确方法是什么?

configuration - nginx 到 localhost 的配置是否正确?