Cinnamon / Linux / Xorg에서 왜 Scroll Lock 키가 비활성화되어 있습니까?


13

최근에 Scroll Lock 키를 사용하여 백라이트를 토글하도록 설계된 백라이트 키보드를 구입했습니다. Scroll Lock 키를 눌렀을 때 시나몬이 제대로 응답하지 않는 것을 금방 알았습니다. 원래 키보드 백라이트는 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 (키심 0xff14, Scroll_Lock), same_screen YES, XLookupString은 0 바이트를 제공합니다. XmbLookupString은 0 바이트를 제공합니다. XFilterEvent는 다음을 리턴합니다. False

KeyRelease 이벤트, 시리얼 37, 합성 NO, 윈도우 0x2c00001, 루트 0x2df, 서브 w 0x0, 시간 2609912, (410,0), 루트 : (1724,142), 상태 0x0, 키 코드 78 (키심 0xff14, Scroll_Lock), same_screen YES, XLookupString은 0 바이트를 제공합니다.

따라서 핵심 이벤트가 커널로 전송되고 있음을 알고 있습니다.

또한 흥미롭게도 터미널에있을 때 (여전히 Xorg 또는 Cinnamon을 시작하기 전에) Scroll Lock을 사용하는 이상한 동작이 관찰되었습니다. 즉,이 시점에서 내 백라이트가 예상대로 토글되었지만 Scroll Lock이 활성화되면 입력 한 내용이 화면에 기록되지 않았습니다. Scroll Lock을 사용 안함으로 설정하면 내가 작성한 모든 내용이 마치 이전에 버퍼링 된 것처럼 즉시 터미널에 덤프됩니다.

tl; dr Scroll Lock 및 Xorg와의 거래는 무엇입니까?


@sherrellbc 에서이 문제를 해결하는 행운이 있습니까?
Pykler

답변:


10

Cinnamon에 익숙하지 않지만 Scroll Lock 키를 활성화 할 수 있습니다.

먼저 여분의 키보드 수정 자 슬롯이 있는지 확인해야합니다. 운영:

xmodmap -pm

현재 수정 자 설정 목록이 인쇄됩니다. 이 줄 중 하나에 키가 표시되지 않기를 바랍니다. 일반적으로 mod3. 이 경우 다음 명령으로 Scroll Lock을 활성화 할 수 있습니다.

xmodmap -e "add mod3 = Scroll_Lock"

Scroll Lock LED가 이제 Scroll Lock 키를 누르면 응답합니다.

그것이 작동한다면, X가 시작될 때마다 X가 자동으로 수행하기를 원할 것입니다. 이를 수행하는 방법에는 여러 가지가 있습니다. 사용자별로 수행 할 수 있지만 이와 같은 경우 전 세계적으로 설정하는 것이 합리적이라고 생각합니다.

그러나 나는 나 자신보다 먼저 이것을 한 적이 없으므로 자세한 내용을 제공하기 전에 테스트하는 것이 좋습니다. :)

확인. 전 세계적으로 해당 modmap을 활성화하려고 시도한 방법이 KDE에서 작동하지 않습니다. :( 그러나 내 홈 디렉토리에서 활성화하면 정상적으로 작동하는 것 같습니다.

.Xmodmap이 행을 포함하는 홈 디렉토리에 파일을 작성하십시오 .

add mod3 = Scroll_Lock

가장 쉬운 방법은 다음과 같습니다.

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

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


.Xmodmap 설정은 Ubuntu 16.04 / Unity에서 작동하지 않았지만 Pykler의 답변에 대한 영구적 인 해결책은 다음과 같이 작동했습니다. :)
Nebel54

7

밤새 구운 후 많은 구운 용액 으로 영원한 길찾았 습니다.

# 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/*

이것은 좋지만 askubuntu.com/a/1067921/274298 에 언급 된 gsettings 변경 및 xkboptions 변경과 함께 작동했습니다 .
peschü

2

Scroll Lock활성 (이름이 때 키보드 단축키를 방해 할 수 있습니다 F12, Ctrl+ Space예상대로 작동하지 않습니다), 나는 일치로 결정 Scroll Lock을 수동으로 출시 열쇠를 xset그 이전 상태에 관한 LED 상태를 토글.

다음과 같은 실행 스크립트를 작성했습니다 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'현재 마스크 값이 무엇인지 확인하십시오 .

참고 2 : 일부 사용자 xset led 3는 조명을 활성화 하기 위해 실행해야합니다 . 이 경우 위의 스크립트를 다시 작성하십시오.


그런 다음 데스크톱 환경을 사용하여이 스크립트를 사용자 정의 바로 가기로 시작할 수 있습니다 (Cinnamon 사용).

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.