我使用的是 Debian 9.11 和 MATE 桌面(pinebook pro)
我有一个 Init 脚本,它使用和/etc/init.d/customMapping
重新映射我的一些键。这里是setxkbmap
xmodmap
#! /bin/sh
### BEGIN INIT INFO
# Provides: customMapping
# Required-Start: $local_fs x11-common xserver display
# Required-Stop: $local_fs x11-common xserver display
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Custom keyboard mapping
# Description: This is a simple Init script
# Custom keyboard mapping
### END INIT INFO
#
# Some things that run always
echo "customMapping script"
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting script customMapping "
echo "start" >> /opt/test.txt
# Make Caps Lock a Control key
setxkbmap -option ctrl:nocaps > /opt/logs 2>&1
# Swap Left Control with Left Alt
setxkbmap -option ctrl:swap_lalt_lctl > /opt/logs 2>&1
# Make Pause/Break an End key
xmodmap -e "keycode 127 = End" > /opt/logs 2>&1
# Make Screen Lock a Home key
xmodmap -e "keycode 78 = Home" > /opt/logs 2>&1
;;
stop)
echo "Stopping custom Mapping"
;;
*)
echo "Usage: /etc/init.d/customMapping {start|stop}"
exit 1
;;
esac
exit 0
正如您所看到的,我在本节中尝试了几种关键字,Required-Start
但这不起作用,当我签入文件时,/opt/logs
我看到以下错误消息
无法打开显示“默认显示”
无法打开显示“默认显示”
xmodmap:无法打开显示“”
xmodmap:无法打开显示“”
我应该设置什么值Required-Start
才能让我的脚本访问display
(X 服务器)?另外,这些值是否Default-Start
正确?
谢谢
答案1
您确实不想将这些命令作为启动服务运行,而是希望在启动时作为 X 会话的一部分来执行某些命令。
如果它们在 init 脚本中运行,它们会在启动上下文中以 root 身份运行,而不是作为 X 会话的一部分运行。
您最好将这些命令放在 xinitrc 或 xsessionrc 中(取决于您启动 X 的方式)。