시작 시 명령을 실행하여 Caps Lock과 Ctrl을 교체합니다.

시작 시 명령을 실행하여 Caps Lock과 Ctrl을 교체합니다.

왜 이것이 예상대로 작동하지 않는지 조금 혼란 스럽습니다. 내 목표는 Caps Lock 키를 제어에 매핑하는 것입니다. 저는 데비안을 사용하고 있습니다. 이를 위해 다음 명령을 사용합니다.

/usr/bin/setxkbmap -layout "$(setxkbmap -print | awk -F + '/xkb_symbols/ {print $2}')" -option ctrl:nocaps

터미널을 통해 실행하면 완벽하게 작동합니다. 그러나 나는 이 작업이 시작 시나 로그인 시에 수행되기를 원하며 항상 수동으로 수행하기를 원합니다. 이 명령을 XFCE의 자동 시작 세션 응용 프로그램에 추가하고 해당 명령을 내 ~/.profile. 여전히 수동으로 수행해야 합니다(올바르게 매핑한 후). 내가 뭘 잘못했나요?

답변1

setxkbmap명령이 추가된 후에 실행되지 않는 이유 ~/.profile는 쉘(아마도 bash)이 다음과 같은 경우에만 파일을 읽기 때문입니다.로그인쉘이 시작되었습니다. X터미널 에뮬레이터 에서 로그인 셸을 시작하지 마세요. 를 사용하고 있지만 setxkbmap시스템에 더 나은 방법을 사용할 수 있는 경우 추가하세요 . 다음과 같이 섹션을 수정하세요.~/.bashrcBashdebianXKBOPTIONS/etc/default/keyboard

root@debian:/home/ja# cat /etc/default/keyboard
# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS="ctrl:nocaps"

BACKSPACE="guess"

이제 아래 설명된 대로 이 명령을 실행합니다 man 7 keyboard.

udevadm trigger --subsystem-match=input --action=change

재부팅할 필요도 없습니다 lightdm. 다음 시작 시 설정이 자동으로 적용됩니다 lightdm. /etc/default/keyboard나는 단지 내 안에 있었다 Debian 9.4.

답변2

내 생각에 더 좋은 방법은 홈 디렉터리에 .xsessionrc 파일을 만드는 것입니다.

cat .xsessionrc 
setxkbmap -option ctrl:nocaps

이 파일은 각 세션이 시작될 때 읽혀집니다.
이렇게 하면 사용자의 세션만 영향을 받습니다.
다른 사용자들은 이해하지 못합니다.
Debian과 NetBSD에서는 문제가 없습니다.

관련 정보