Cinnamon/Linux/Xorg에서 Scroll Lock 키가 비활성화된 이유는 무엇입니까?

Cinnamon/Linux/Xorg에서 Scroll Lock 키가 비활성화된 이유는 무엇입니까?

최근에 스크롤 잠금 키를 사용하여 백라이트를 전환하도록 설계된 백라이트 키보드를 구입했습니다. Scroll Lock 키를 눌렀을 때 Cinnamon이 올바르게 반응하지 않는다는 것을 금방 발견했습니다. 처음에는 다른 모든 것이 기본적으로 작동하기 때문에 키보드 백라이트가 DOA라고 생각했습니다. 재부팅 후 Xorg를 시작하기 전에 Scroll Lock 키를 사용하여 백라이트를 성공적으로 전환할 수 있다는 것을 발견했습니다. 그런 다음 Xorg(및 이후 cinnamon_session)를 시작한 후 이 기능이 다시 작동을 멈췄습니다.

Xorg를 시작한 후 백라이트가 제대로 작동하도록 하려면 xset led named "Scroll Lock"이 기능을 활성화 및 비활성화하려면 다음을 실행해야 했습니다.

xev몇 가지 조사 끝에 시작 시 주요 이벤트 정보를 터미널에 덤프하는 프로그램을 발견했습니다 . Scroll Lock 키를 누르면 터미널에 다음 정보가 표시됩니다.

KeyPress 이벤트, 시퀀스 34, 구성 NO, 창 0x2c00001, 루트 0x2df, subw 0x0, 시간 2609824, (410,0), 루트: (1724,142), 상태 0x0, 키코드 78 (keysym 0xff14, Scroll_Lock), same_screen YES, XLookupString은 0바이트를 제공합니다. XmbLookupString은 0바이트를 제공합니다. XFilterEvent는 다음을 반환합니다. False

KeyRelease 이벤트, 시퀀스 번호 37, 합성 NO, 창 0x2c00001, 루트 0x2df, subw 0x0, 시간 2609912, (410,0), 루트: (1724,142), 상태 0x0, 키코드 78 (keysym 0xff14, Scroll_Lock), same_screen YES , XLookupString은 0바이트를 제공합니다.

그래서 중요한 이벤트가 커널로 전송되고 있다는 것을 알고 있습니다.

또한 흥미롭게도 터미널에 있을 때(아직 Xorg 또는 Cinnamon을 시작하기 전) Scroll Lock을 사용할 때 이상한 동작을 관찰했습니다. 즉, 이 시점에서 백라이트가 예상대로 전환되지만 스크롤 잠금이 활성화되면 내가 입력하는 내용이 화면에 기록되지 않습니다. Scroll Lock을 비활성화한 후, 내가 작성한 모든 내용은 마치 이전에 버퍼링되었던 것처럼 즉시 터미널에 덤프됩니다.

너무 길어요.Scroll Lock과 Xorg의 관계는 무엇입니까?

답변1

저는 Cinnamon에 익숙하지 않지만 Scroll Lock 키를 활성화할 수는 있을 것입니다.

먼저, 사용 가능한 키보드 레귤레이터 슬롯이 있는지 확인해야 합니다. 달리기:

xmodmap -pm

그러면 현재 수정자 설정 목록이 인쇄됩니다. 행 중 하나에 키가 나열되지 않기를 바랍니다. 일반적으로 그렇습니다 mod3. 이런 경우라고 가정하면 다음을 사용하여 Scroll Lock을 활성화할 수 있습니다.

xmodmap -e "add mod3 = Scroll_Lock"

이제 Scroll Lock LED가 Scroll Lock 키 누름에 반응해야 합니다.

가능하다면 X가 시작 시 자동으로 이 작업을 수행하도록 할 수도 있습니다. 이를 수행하는 방법에는 여러 가지가 있습니다. 사용자별로 수행할 수 있지만 이와 같은 경우 전역적으로 설정하는 것이 합리적이라고 생각합니다.

하지만 이전에 이 작업을 수행한 적이 없으므로 자세한 내용을 제공하기 전에 테스트해 보는 것이 좋습니다. :)

좋아요 Modmap을 전역적으로 활성화하려는 시도가 KDE에서 작동하지 않습니다. :( 하지만 내 홈 디렉토리에서 활성화하면 제대로 작동하는 것 같습니다.

.Xmodmap다음 줄을 포함하는 홈 디렉터리에 파일을 만듭니다.

add mod3 = Scroll_Lock

가장 간단한 방법은 다음과 같습니다.

cd ~
echo >.Xmodmap "add mod3 = Scroll_Lock"

이제 X를 다시 시작하십시오(로그아웃하고 다시 로그인하십시오). Scroll Lock 키가 제대로 작동하기를 바랍니다. 그렇지 않은 경우 알려주십시오.

답변2

영구적인 해결책을 찾았습니다긴 밤을 보내고 반쯤 구운 용액을 많이 먹은 후.

# backup your symbols file
sudo cp /usr/share/X11/xkb/symbols/us{,.distribution} 

이 섹션에 다음 줄을 추가합니다 xkb_symbols "basic" {. 두 번째 줄이 존재하지 않더라도 걱정하지 마십시오. 일부 언어에서만 작동하며 내 시스템에는 존재하지 않습니다.

...
    modifier_map Mod3   { Scroll_Lock }; <==<< Add this line

    include "level3(ralt_switch)" <==<< before this line
};

언어를 전환하면 다른 레이아웃에서도 동일한 작업을 수행해야 할 수 있습니다.

또한 xkb 레이아웃이 있는 캐시가 있습니다. 새 키심 파일을 확인하려면 X 서버를 다시 시작하기 전에 이를 지워야 합니다.

sudo rm -f /var/lib/xkb/*

답변3

+ 라는 키보드 단축키가 활성화되면 예상대로 작동하지 않아 Scroll Lock방해가 될 수 있으므로 키 입력을 수동 활성화와 일치시키고 이전 상태에 따라 LED 상태를 전환하기로 결정했습니다.F12CtrlSpaceScroll Lockxset

다음과 같은 실행 가능한 스크립트를 만들었습니다 toggle_keyb_led.sh.

xset q | awk '/LED/{ if ($10 ~ "00000000") print "led"; else print "-led" }' | xargs xset

그러면 출력이 구문 분석 xset q되고 해당 행이 LED mask.

참고 1: 문제가 해결되지 않으면 xset -led; xset q | grep 'LED'현재 마스크 값이 무엇인지 확인하십시오.

노트 2xset led 3: 일부 사용자는 조명을 켜기 위해 달려야 합니다 . 이 경우 위 스크립트를 다시 작성하세요.


그런 다음 데스크탑 환경을 사용자 정의 바로가기로 사용하여 이 스크립트를 시작할 수 있습니다. 예를 들어(여기에서는 계피가 사용됨):

여기에 이미지 설명을 입력하세요.

관련 정보