首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过systemd运行xmodmap

通过systemd运行xmodmap
EN

Unix & Linux用户
提问于 2022-04-05 17:06:10
回答 1查看 345关注 0票数 0

我有一个启动脚本,有时在启动时运行,有时不运行(我不知道为什么)。这对我来说是个问题,因为脚本交换了键盘上的键,所以我需要在桌面加载后交换键。我编写了一个systemd服务,但它无法工作。这是我的服务档案。

代码语言:javascript
复制
# /etc/systemd/system/keySwap.service

[Unit]
Description=Swaps right Option key with Right CMD key
After=display-manager.service

[Service]
ExecStart=/home/jedrek/keyboard_keys_swapper.sh

[Install]
WantedBy=default.target

在图形环境中,当我在终端中手动运行服务时,它会出错。

代码语言:javascript
复制
sudo systemctl start keySwap
sudo systemctl status keySwap

● keySwap.service - Swaps right Option key with Right CMD key
     Loaded: loaded (/etc/systemd/system/keySwap.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Tue 2022-04-05 18:57:24 CEST; 4s ago
    Process: 12028 ExecStart=/home/jedrek/keyboard_keys_swapper.sh (code=exited, status=1/FAILURE)
   Main PID: 12028 (code=exited, status=1/FAILURE)

kwi 05 18:57:24 Home systemd[1]: Started Swaps right Option key with Right CMD key.
kwi 05 18:57:24 Home keyboard_keys_swapper.sh[12029]: xmodmap:  unable to open display ''
kwi 05 18:57:24 Home keyboard_keys_swapper.sh[12030]: xmodmap:  unable to open display ''
kwi 05 18:57:24 Home systemd[1]: keySwap.service: Main process exited, code=exited, status=1/FAILURE
kwi 05 18:57:24 Home systemd[1]: keySwap.service: Failed with result 'exit-code'.

shell脚本只需交换键:

代码语言:javascript
复制
#!/bin/bash
xmodmap -e "keycode 108 = Super_R"
xmodmap -e "keycode 134 = ISO_Level3_Shift"

我知道xmodmap需要加载图形桌面,所以我不明白为什么它不能工作。我该如何解决我的问题?

EN

回答 1

Unix & Linux用户

发布于 2022-04-07 18:18:21

通常,systemd服务是使用X11做任何事情的错误地方。这应该在提供登录提示之前初始化显示的脚本中完成,或者作为用户会话启动脚本的一部分完成。

此外,xmodmap似乎是更改键绑定的过时方法,因为国际化工具也会重新映射键盘,任何使用xmodmap的尝试充其量都是暂时的,因为I18n工具将在键盘更改、屏幕锁定或解锁以及用户GUI会话管理器重新初始化时更改xmodmap。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/698104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档