시스템 전체의 키 바인딩이 어디서 오는지 확인하고 제거하려면 어떻게 해야 합니까?

시스템 전체의 키 바인딩이 어디서 오는지 확인하고 제거하려면 어떻게 해야 합니까?

키보드 레이아웃을 폴란드어로 전환했습니다. 여기서 Alt_R은 다양한 비라틴어 문자를 생성하는 데 사용됩니다. 그 중 일부는 작동하고 일부는 작동하지 않습니다.

  • Alt_R-l예상대로 "ł"을 생성합니다.
  • Alt_R-c"ć"를 생성해야 하지만 Chromium을 시작합니다.
  • 다른 여러 Alt_R 키 조합도 다양한 프로그램을 시작하거나 현재 창을 약간 아래로 이동하거나 아무 작업도 수행하지 않을 수 있습니다.

이 기능은 어디에서 왔습니까? 내 설정->키보드 대화 상자 또는 ~/.Xmodmap에는 아무것도 없습니다. 시스템 전체 키보드 단축키나 기타 키보드 수정을 정의할 수 있는 곳은 어디입니까? 전체 목록이 있나요?

Alt_R-c더 좋은 점은 어떤 응용 프로그램/시스템이 키 조합에 반응하는지 알아 내어 키 바인딩이 저장되는 위치를 알 수 있는 방법이 있습니까 ?

이것은 Xubuntu 20.04.3에 있습니다.

답변1

핵심 기호가 있습니다.XF86LogGrabInfo이 버튼을 누르면 X 서버는 모든 정보를 인쇄합니다.인상로그 파일(보통 /var/log/Xorg.$DISPLAY.log)에 있습니다. 설치한 경우 xdotool다음과 같은 명령으로 키를 트리거할 수 있습니다.

xdotool key XF86LogGrabInfo

여기에서 범인 X11 클라이언트를 식별할 수 있습니다. 예를 들어, 어떤 X11 클라이언트가 "Space" 키를 잘못 사용했는지 확인하려면 먼저 space키심에 바인딩된 키코드를 가져옵니다.

$ xkbcomp $DISPLAY - | grep SPCE
    <SPCE> = 65;
    key <SPCE> {         [           space ] };

xev( +press를 사용할 수도 있습니다 Space) 다음을 통해 검색합니다 Xorg.$DISPLAY.log.

$ awk '/registered grabs of client/{c=$0}/detail 65/{if(c)print c; c=""; print}' /var/log/Xorg.0.log
[452727.209]   Printing all registered grabs of client pid 32055 openbox --config-file /home/pi/.config/openbox/lxde-pi-rc.xml
[452727.220]     detail 65 (mask 0), modifiersDetail 8 (mask 0)
[452727.220]     detail 65 (mask 0), modifiersDetail 24 (mask 0)
[452727.220]     detail 65 (mask 0), modifiersDetail 10 (mask 0)
[452727.220]     detail 65 (mask 0), modifiersDetail 26 (mask 0)
[452727.241]     detail 65 (mask 0), modifiersDetail 12 (mask 0)
[452727.241]     detail 65 (mask 0), modifiersDetail 28 (mask 0)
[452727.241]     detail 65 (mask 0), modifiersDetail 14 (mask 0)
[452727.241]     detail 65 (mask 0), modifiersDetail 30 (mask 0)

modifiersDetail 8Mod1Mask으로Alt

그래서 키 조합을 openbox훔치는 거죠 .Alt-Space


클라이언트의 pid와 명령줄이 항상 정확한 것은 아닙니다. 프로세스의 pid와 명령줄입니다.연결됨Xorg 유닉스 도메인 소켓으로 동시에 포크하고 하위 프로세스가 소켓 파일 설명자를 상속하는 경우 소켓이 더 이상 존재하지 않을 수 있습니다. (이것은 SO_PEERCRED"인증"을 순진하게 오용하는 일반적인 문제입니다. 이야기가 길어집니다 ;-) )

관련 정보