다음은 키보드 레이아웃을 설정하기 위해 가져오거나 실행할 수 있는 스크립트입니다.
#!/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
: 그렇지 않으면 "계속하시겠습니까?" 팝업이 표시됨). 쉘은 이고 /bin/bash
사용자는 내 것입니다. id
(9) 및 DISPLAY
( :0
)는 올바른 것 같습니다. 많은 경고가 표시 xkbcomp
되지만 그들은 평소와 같습니다.
로그인한 후 터미널 에뮬레이터에서 수동으로 소싱하면 /etc/profile.d/layout_kinesis.sh
작동합니다. 그렇다면 애초에 안 될 이유가 무엇입니까? 소스는 맞는 것 같은데 효과는 없네요. 다른 시작 파일이 이 설정을 재정의합니까?
내가 조사한 것들:
- 또는 언급이 없습니다
xkbcomp
.setxkbmap
/etc/profile.d/
~/.profile
아무 관련도 없어,~/.bash_profile
아무 관련도 없어~/.bash_login
이것은 우분투 20.04에 있습니다.