由于物理密钥损坏,如何为会话管理器(或至少 SLiM)设置 xmodmap 文件

由于物理密钥损坏,如何为会话管理器(或至少 SLiM)设置 xmodmap 文件

我已将笔记本电脑设置为直接启动到 SLiM 作为 X 会话管理器。

然而,我笔记本电脑上的“M”键坏了。我在登录时通过使用 xmodmap 将无关的菜单键重新映射到它来解决这个问题。

keycode 135 = m

我在 .xinitrc 文件中调用了 xmodmap,如下所示:

xmodmap ~/.xmodmaprc

登录后效果相当好。但是,我的用户名包含“m”,因此我无法直接使用笔记本电脑键盘输入它。default_user在我的作品中添加一行/etc/slim.conf至少允许我登录,但如果我输错密码,我必须插入 USB 键盘或完全重新启动系统以获得第二次机会。

我发现这个问题在 Stack Exchange 上,因此我将 .xmodmaprc 文件复制到它指定的路径(`/etc/X11/Xmodmap)。然而,这并没有奏效。

我怎样才能让它在整个系统范围内工作?我的发行版是 Arch,如果有帮助的话。

答案1

我自己没有arch,但是在网上看包装的东西xorgxinit你应该有这个文件:

/etc/X11/xinit/xinitrc

在其中添加 xmodmap 命令,它应该可以工作:该脚本由服务器启动时执行。

更好的,似乎它执行了下面的所有文件/etc/X11/xinit/xinitrc.d/,因此只需在其中添加一个执行 xmodmap 的可执行文件即可。

答案2

我曾经尝试使用 XKB 为物理密钥损坏的情况编写一个通用解决方案;我将配置更改保存在https://gitorious.org/xkb-replace-broken。我没有清理它。 (也就是说,不幸的是,我没有提交最初的未更改状态,因此检查我引入的更改并不容易。我可以尝试清理它,并在完成后发布生成的修订历史记录。)如果我记得正确,它起作用了。

我的想法是(为了拥有一个功能齐全的键盘)重新映射最低级别的按键(按键代码),以便所有组合和布局都使用新的物理按键,该物理按键必须替换损坏的按键(在我的例子中为“T”) 。

您可以在中看到新的键码映射“nohack”分支中的最后一次提交。我分叉/usr/share/X11/xkb/keycodes/evdev/usr/share/X11/xkb/keycodes/evdev-with-broken-t改变行:

alias <AD05> = <PAUS>;

(在我的第一个版本中,我认为这是一个 hack,我只是编辑了 pristine /usr/share/X11/xkb/keycodes/evdev。该 hack 在链接提交中被撤消。我确信“hack”版本确实有效,但不太确定“nohack”分支。 )

然后我定义了一个新的 XKB 选项(“broken:t”——参见上面的提交),并在XKB的配置文件xorg.conf(当然,我认为您也可以使用不同的语法将类似的选项放入 ALTLinux 中;或者要求您xinit或类似人员setxkbmap在启动时使用这些选项运行。)

答案3

X 服务器在登录屏幕上未完全加载。 XSession.d 中的所有内容都会在您登录后加载。登录屏幕上运行的唯一内容是 gdm(如果您正在运行 gnome)和一个基本的 X 服务器。要在登录之前连接到 X 服务器,您需要修改 /etc/gdm/PreSession/Default 脚本。

您可以将 xbindkeys 设置为从 gdm 中的 PreSession 脚本启动,以便您可以在登录之前让 X 重新映射您的密钥。

相关内容