首页 > 计算机技术 > 操作系统 > Arch Linux

linux系统中自定义键盘按键,解决delete键不起作用

原创 lihf8515 2026年02月19日 17:35
来源:本站 阅读:28

起因

笔者有一台笔记本键盘坏了,从网上购买了一款类似的键盘替换上,发现delete键不起作用,经使用按键检测工具检测发现,此键盘的delete键实际上是XF86AudioNext键,在windows中有SharpKeys工具映射一下就可以了。在linux中可以使用 xmodmap,这个几乎所有的linux系统默认都已安装了。

简介

xmodmap​ 是一个用于修改键盘映射和指针按钮映射的实用程序,通常在 X Window 系统上使用。

原理

X11是什么

X11,通常被称为 X Window System,是一种提供窗口系统的软件。它广泛用于 Unix 和 Unix-like 操作系统(比如 Linux),为用户提供图形界面。X11 基于客户端-服务器模型:

服务器:在用户的机器上运行,管理屏幕、键盘、鼠标等输入输出设备。
客户端:应用程序,连接到服务器并通过服务器显示图形界面。

什么是键盘映射

键盘映射: 指的是按键和字符(或功能)之间的映射关系。在 X11 中,每个按键被赋予一个 keycode,而每个 keycode 可以映射到一个或多个 keysyms(键符)。

Keycode:是一个数字,代表物理键盘上的一个特定的按键。每个按键的 keycode 是固定的,不会随不同的键盘布局或语言设置而改变。
Keysym:是一个表示按键功能的符号名。比如,字母 "A" 的 keysym 是 XK_A​,回车键的 keysym 是 XK_Return​

X11 如何处理键盘输入

当你在键盘上按下一个键时:
键盘硬件生成一个 keycode。
X 服务器接收到这个 keycode,并根据当前的键盘映射,将它转换成一个或多个 keysyms。
如果有程序(X 客户端)注册了对这些 keysyms 的兴趣,这些 keysyms 将被发送到这些程序。

安装

sudo apt-get update
sudo apt-get install x11-xserver-utils

安装完毕后,你可以通过在终端输入 xmodmap​ 来检查 xmodmap​ 是否成功安装。

xmodmap -h
usage:  xmodmap [-options ...] [filename]

where options include:
    -display host:dpy            X server to use
    -verbose, -quiet             turn logging on or off
    -n                           don't execute changes, just show like make
    -e expression                execute string
    -pm                          print modifier map
    -pk                          print keymap table
    -pke                         print keymap table as expressions
    -pp                          print pointer map
    -help                        print this usage message
    -grammar                     print out short help on allowable input
    -version                     print program version
    -                            read standard input

​-display host:dpy​: 此选项指定要使用的主机和显示器。
-grammar​: 此选项指示应在标准错误上打印描述文件中使用的表达式语法和带有 -e 表达式的帮助消息。
-verbose​: 解析输入时打印日志记录信息。
-quiet​: 此选项将关闭详细日志记录。这是默认设置。
​-n​: 这个选项表明 xmodmap 不应该改变映射,而应该显示它会做什么,就像 make(1) 在给定这个选项时所做的那样。
-e expression​ : 此选项指定要执行的表达式。可以从命令行指定任意数量的表达式。
-pm​: 此选项指示应在标准输出上打印当前修改器贴图。
-pk​: 此选项指示当前键盘映射表应打印在标准输出上。
-pke​: 此选项指示当前键盘映射表应以表达式的形式打印在标准输出上,这些表达式可以反馈给 xmodmap。
​-pp​: 此选项指示当前指针映射应打印在标准输出上。
-​: 单破折号表示应将标准输入用作输入文件。

示例

# 禁用左Alt键
xmodmap -e 'keycode 64 = ' 
# 禁用右Alt键
xmodmap -e 'keycode 108 = '
xmodmap -e 'keycode 67= '
xmodmap -e 'keycode 68= '
xmodmap -e 'keycode 69= '
xmodmap -e 'keycode 70= '
xmodmap -e 'keycode 71= '
xmodmap -e 'keycode 72= '
xmodmap -e 'keycode 73= '
xmodmap -e 'keycode 74= '
xmodmap -e 'keycode 75= '
xmodmap -e 'keycode 76= '
xmodmap -e 'keycode 95= '
xmodmap -e 'keycode 96= '
xmodmap -e 'keycode 133= '
xmodmap -e 'keycode 134= '

持久化

以上配置重启后就失效了,为了持久化这些改变,你可以在你的 home 目录下创建一个名为 .Xmodmap​ 的文件:

xmodmap -pke > ~/.Xmodmap

这会将当前键盘映射输出到 .Xmodmap​ 文件。然后你可以编辑这个文件来改变键映射,系统每次启动时都会读取这个文件。

比如,我这里是delete键不起作用,我找到下面这行,用!将这行注释掉

!keycode 119 = Delete NoSymbol Delete

再找到实际键值171这行注释掉,再加一行新的映射到delete键:

!keycode 171 = XF86AudioNext NoSymbol XF86AudioNext
keycode 171 = Delete NoSymbol Delete

有些桌面环境可能不会自动加载 .Xmodmap​。如果你发现你的映射在重启后没有被应用,你可以在你的桌面环境的自动启动脚本中添加以下命令:

xmodmap ~/.Xmodmap

作者
昵称:君子如兰
注册时间:2025-01-31 02:47:34
最近更新:2026-03-05 14:38:55
文章总数:100篇
原创 94篇   转载 6篇
友情链接: 海峰收银系统  
Copyright © 2009-2026 hfsoft.top All Rights Reserved.
中华人民共和国工业和信息化部ICP备案序号:皖ICP备2025073039号