Linux Mint 13을 실행하는 노트북에 openbox를 설정하고 있습니다. Caps Lock 키가 추가 제어 키 역할을 하도록 하고 싶습니다. 필요한 설정을 파일에 넣고 ~/.Xmodmap
다음을 실행하여 확인했습니다.
xmodmap ~/.Xmodmap
잘 작동합니다.
그러나 Openbox 세션에 다시 로그인하면 이러한 중요한 변경 사항이 없습니다. 위 xmodmap
명령을 실행하면 다시 작동하지만 시작 시 자동으로 발생하도록 하고 싶습니다.
흥미로운 점은 내 파일에 zenity
다음 테스트 명령을 추가했다는 것입니다.~/.config/openbox/autostart
zenity --info --text=Hello
그러면 작은 대화 상자 창이 생성되고 대화 상자가 닫힌 후에만 종료됩니다.
이제 Openbox 세션에 다시 로그인하면 Caps Lock이 Ctrl 키 역할을 합니다.~까지zenity 대화 상자가 닫힙니다. 대화 상자가 닫히면 Caps Lock 키가 기본 동작으로 돌아갑니다.
Google에서 이에 대한 정보를 찾을 수 없어서 여기에 도움을 요청합니다. 무엇이 잘못될 수 있는지에 대한 아이디어가 있나요?
고쳐 쓰다:
나는 이 문제를 해결하려고 노력해 왔으며 실험에서 파일을 복사하고 /usr/bin/xmodmap
다음 bash 스크립트로 /usr/bin/xmodmap_
바꾸었습니다./usr/bin/xmodmap
#!/bin/bash
{
echo '-------'
date
echo xmodmap "$@"
} >> ~/xmodmap-calls
exec /usr/bin/xmodmap_ "$@"
그래서 내 시스템에서 어떤 빌어먹을 스크립트를 실행할 때마다 xmodmap
나는 그것에 대해 알고 있습니다.
그런 다음 다시 로그인하여 내 ~/xmodmap-calls
파일 에서 ~/.Xmodmap
예상했던 my 를 실행하는 항목 하나만 발견했습니다. 따라서 xmodmap
내 변경 사항을 덮어쓰지 는 않을 것 같습니다 .
다음으로, 나는 구글링을 통해 이 setxkbmap
명령에 대해 알게 되었는데, 분명히 동일한 일을 하는 것 같습니다. 또한 위의 xmodmap과 유사한 실행 파일을 교체했습니다. 범인으로부터 명령을 받았습니다!
setxkbmap -option terminate:ctrl_alt_bksp
나는 그것이 무엇을 하는지 전혀 모르지만 그것을 실행한 후 xmodmap ~/.Xmodmap
(설정이 올바르게 적용된 상태에서) 위 명령을 실행하면 변경 사항이 재설정됩니다!편집하다: 정말 흥미롭네요. setxkbmap
매개변수 없이 명령 만 수행하면 됩니다 xmodmap ~/.Xmodmap
. 명령을 통해 변경 사항을 덮어쓰면 됩니다.
이제 알아내야 할 두 가지가 있습니다. 이 문제가 어디 setxkbmap
에서 실행되고 있고 왜 그리고 어떻게 해결해야 하는지입니다. 아직 조사 중이지만 진지하게 도움이 필요할 수 있습니다. :)
업데이트 2
그거로 지옥에 xmodmap
. setxkbmap
어디서 호출해야 할지 모르겠지만 setxkbmap
명령을 사용하여 Caps Lock이 Ctrl처럼 작동하도록 하는 방법을 찾았습니다.
setxkbmap -option ctrl:nocaps
오픈박스를 시작하기 직전. 잘했습니다. Caps Lock 키는 여전히 Ctrl 키 역할을 합니다. xmodmap
절대로 실행되지 않습니다.
이런 내용을 아시는 분이 조금이나마 통찰력을 주실 수 있도록 질문을 여기에 남깁니다. 또한 저 이후에 이 문제에 직면한 사람들을 위해 :)
업데이트 3
이것은 .config/openbox/autostart
pedrosaurio가 요청한 내 콘텐츠입니다.
#!/bin/bash
# Set the wallpaper.
feh --bg-scale /wall.png
# Set default brightness.
xbacklight -time 1 '=40'
# Compositing.
xcompmgr &
# The panel.
tint2 &
# Start a terminal too.
roxterm &
내가 아는 한 이것은 키보드와 관련이 없습니다. 또한 이것은 내 세션을 시작하는 스크립트입니다. (lightdm으로 실행)
#!/bin/bash
setxkbmap -option ctrl:nocaps
exec openbox-session
답변1
비슷한 문제가 발생했습니다. ibus에 의한 것으로 밝혀졌습니다. 해당 서비스가 필요하지 않았기 때문에 방금 제거했습니다.
setxkbmap을 스크립트로 대체하는 트릭을 이용해 범인을 찾았지만, ps -AF --forest
setxkbmap의 호출자를 식별하는 기능도 추가했습니다.
답변2
자동 시작 스크립트를 모르면 올바른 구문을 사용하지 않고 앰퍼샌드( &
)를 사용하여 백그라운드에서 명령을 실행하지 않을 것입니다.
.config/openbox/autostart
다음과 같이 파일을 편집해 보세요 .
# Run the system-wide support stuff
#. $GLOBALAUTOSTART
# Programs to launch at startup
# Programs that will run after Openbox has started
(sleep 1 && xmodmap ~/.Xmodmap ) &
의심스러우면 openbox wiki를 확인하고 &
각 항목 뒤에 나오는 모든 예제가 무엇인지 확인하세요.