当前位置: 首页 > article >正文

archlinux按键映射按键自定义

我想把右ALT映射成Super键,也就是mod4键位,折腾了半天没有成功。问AI也没有解决,与是只好自己去看wiki了,发现原来很简单。只是我没有clear。
https://wiki.archlinuxcn.org/wiki/Xmodmap

安装xorg

sudo pacman -S xorg

直接选择全部安装。
基础操作。

xmodmap
#显示按键信息
xmodmap -pke
#生成配置文件
xmodmap -pke > ~/.xmodmap
#编辑配置文件
nvim ~/.xmodmap

实战

我这里实现目标是ALT_R 当作 Super_L使用。

1. 生成配置文件

#生成配置文件
xmodmap -pke > ~/.xmodmap

2. 修饰键

xmodmap也可以用来覆盖修饰键,例如交换Control和Super(即 Windows 键)。

打印当前完整的修饰符表:

itkey@archlinux: ~ $ xmodmap -pm
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Alt_L (0xcc),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        ISO_Level5_Shift (0xcb),  Hyper_L (0xcf)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce)
mod5        ISO_Level3_Shift (0x5c)

3. 重新安排修饰键位

注意:xmodmap是区分大小写的。使用不正确的大小写,如Mode_Switch,(正确的是 Mode_switch)会导致错误。

在重排之前,需要清除修饰键。原来的键和新的键都得清除。例如,如果您打算将Caps_Lock换到A键,将B换成NumLock键,那么Caps_Lock,Num_Lock,A,B四个键都得清除,然后分配键位,最后再把他们加回来。

~/.Xmodmap
[...]
clear lock
clear mod2
keycode  38 = Caps_Lock
keycode  77 = Num_Lock
add lock = Caps_Lock
add mod2 = Num_Lock

我这里是要把Alt_R当作Super_L使用的,所以要先clear mod1和mod4

1 清除原修饰键

文件的开头

clear mod1
clear mod4

2 修改按键的映射

找到ALT_R 的配置,修改成Super_L

! keycode 108 = Alt_R NoSymbol Alt_R
keycode 108 = Super_L NoSymbol Super_L

这里的!是注释

3 加回来修饰键

文档末尾

! 加回修饰键
add mod1 = Alt_L Alt_R
add mod4 = Super_L Super_R

激活自定义映射表

对于GDM、XDM或LightDM,不需要特别激活~/.Xmodmap。对于startx,请使用:

~/.xinitrc
[[ -f ~/.Xmodmap ]] && xmodmap ~/.Xmodmap
也可以编辑全局启动脚本 /etc/X11/xinit/xinitrc。

总结

不看wiki真容易搞错。我一开始就不清楚要修改的键要clear一下,而且涉及的两个键都要clear,最后在加一下,确实感觉繁琐。

http://www.lryc.cn/news/2379234.html

相关文章:

  • 【python】字典和数组的数组
  • 软考IPSEC案例分析
  • C++(23):容器类<vector>
  • Hugo 安装保姆级教程(搭建个人blog)
  • tomcat查看状态页及调优信息
  • 从坏道扫描到错误修复:HD Tune实战指南
  • 将嵌入映射到 Elasticsearch 字段类型:semantic_text、dense_vector、sparse_vector
  • 【LeetCode 热题100】17:电话号码的字母组合(详细解析)(Go语言版)
  • 解决uni-app开发中的“TypeError: Cannot read property ‘0‘ of undefined“问题
  • 翻译:20250518
  • 西门子1200/1500博图(TIA Portal)寻址方式详解
  • 《Python星球日记》 第78天:CV 基础与图像处理
  • 踩坑:uiautomatorviewer.bat 打不开
  • Atcoder Beginner Contest 406
  • 记录一次win11本地部署deepseek的过程
  • 嵌入式STM32学习——外部中断EXTI与NVIC的基础练习⭐
  • 进程状态并详解S和D状态
  • 数据获取_Python
  • <前端小白> 前端网页知识点总结
  • 历史数据分析——宁波海运
  • 小结:jvm 类加载过程
  • OpenCv高阶(八)——摄像头调用、摄像头OCR
  • Java开发经验——阿里巴巴编码规范实践解析3
  • MySQL——6、内置函数
  • MySQL如何查看某个表所占空间大小?(表空间大小查看方法)
  • 软件架构之-论软件系统架构评估以及应用
  • 低延迟与高性能的技术优势解析:SmartPlayer VS VLC Media Player
  • pytorch小记(十九):深入理解 PyTorch 的 `torch.randint()` 与 `.long()` 转换
  • 深入解析Spring Boot与微服务架构:从入门到实践
  • 【交互 / 差分约束】