这是一个脚本,我可以获取或运行它来设置我的键盘布局:
#!/bin/bash
# Testing to only apply the layout to Kinesis keyboard.
# Get Device ID with: `xinput -list | grep -i key
debug_out=/tmp/layout_kinesis.log
echo "layout_kinesis start" >> $debug_out 2>&1
echo $SHELL >> $debug_out 2>&1
date >> $debug_out 2>&1
whoami >> $debug_out 2>&1
kinesis_device_id=$(xinput --list | grep "05f3:0007[[:blank:]]*id=" | sed -n "s/^.*id=\(\S*\).*/\1/p") >> $debug_out 2>&1
echo "layout_kinesis id $kinesis_device_id" >> $debug_out 2>&1
if [ ! -z "$kinesis_device_id" ] ; then
echo "layout_kinesis on display $DISPLAY" >> $debug_out 2>&1
xkbcomp -i $kinesis_device_id /home/gauthier/kinesis/kinesis_swe_us.conf $DISPLAY >> $debug_out 2>&1
fi
echo "layout_kinesis id done" >> $debug_out 2>&1
抱歉重定向热潮,我变得偏执了。
当我在登录时运行或获取它时,这会起作用。
现在我想为任何登录的人进行设置,只要键盘已连接。我将脚本复制到/etc/profile.d/layout_kinesis.sh
.它具有以下权限:-rwxr-xr-x 1 root root
.
布局未加载。
调试输出文件似乎是合理的(stderr
需要重定向xkbcomp
:否则会出现弹出窗口“您想继续吗?”),shell是/bin/bash
,用户是我的用户,id
(9)和DISPLAY
(:0
)似乎是正确的,我得到了一堆警告xkbcomp
但他们像往常一样。
登录后从终端仿真器手动采购/etc/profile.d/layout_kinesis.sh
可以使其工作,那么为什么一开始就不行呢?看起来来源正确,但效果并不存在。其他启动文件会覆盖此设置吗?
我调查过的事情:
- 中没有提及
xkbcomp
或。setxkbmap
/etc/profile.d/
~/.profile
与, 没有~/.bash_profile
也没有任何关系~/.bash_login
这是在 Ubuntu 20.04 上。