无法使用 systemd 服务中的 loadkeys 更改键映射

无法使用 systemd 服务中的 loadkeys 更改键映射

我的 Packard-Bell 笔记本电脑键盘有 2 个非标准按键,它们与导航箭头组合在一起,形成 2 行 x 3 列子块,而不是传统的倒 T 形。当然,现成的 Linux 内核无法识别这些键。

setkeycodes我可以以 root 身份使用命令来激活它们loadkeys

为了避免手动启动命令,我设计了一个 systemd 单元(.service 文件),以便在启动期间配置键盘。

直到最近,当我将我的笔记本电脑从非常旧的 Fedora 版本升级到 Fedora 35 时,这种方法一直运行良好。

我现在在我尝试修改的所有地图上都收到“keymap x:权限被拒绝”。我不明白为什么。

除非我错了,否则系统 systemd 服务启动的所有命令都以 root 身份运行。因此,loadkeys 应该有权访问任何文件(我必须将映射文件从用户目录移动到 /etc 以修复“没有此类文件或目录”错误)并能够更改控制台映射。

由于担心可能出现竞争条件,我更改了依赖项,以便在达到 multi-user.target 之后(而不是之前的某个时间)启动服务,并且我确信每个分区都已安装并准备就绪。但这并没有修复错误。

我怀疑我的服务是在某个非特权用户下运行的,但我无法猜测是哪个(我无法使用id或者whoami因为命令不是由 shell 解释的,并且我无法将输出重定向到某个文件以供以后使用)。

Man 说添加 User= 或 Group= 是没有用的,因为单位已经归 root 所有。

更新:我能够检查该服务是否以root.因此,键盘映射 x:权限被拒绝没有意义。如果我直接以 root 身份运行该命令(而不是通过systemctl),则loadkeys工作正常。

所以呢?你能指出我的方向吗?

答案1

用户:

$ localectl set-keymap 'YourKeyboardMapName" 

如果是 selinux,

根:

# /sbin/restorecon -v /.hcwd  (to avoid selinux complaints)

相关内容