NumLock을 항상 켜두십시오


8

Num Lock 키 캡을 이미 물리적으로 제거 했으므로 실수로 누르지 않습니다 (매우 컴팩트 한 키보드 사용). 그러나 xorg 에는 off키보드 레이아웃을 전환 할 때 Num Lock을 토글 하는 버그 가 있음을 알고 있습니다 .

따라서 Num Lock "off"를 전혀 막지 않거나 Num Lock 상태를 모니터링하고 "off"가 표시되면 즉시 "on"으로 설정하는 것이 필요합니다.

다음은 이 문제를 해결하는 것 유닉스 대답은하지만 LXDE에있다. 이 아이디어를 Ubuntu 15.04 및 Unity에서 작동 시키려면 어떻게해야합니까?

나는 모니터링하는 방법을 알고 또는의 Num Lock 상태, 또는 어떻게 프로그래밍 방식의 Num Lock 상태를 변경하는 방법을 조회하지 않지만 여기에 솔루션은 그 사용하는 모든 시간을 실행하는 간단한 스크립트. 작동하는 것처럼 들리지만 항상 실행하는 것이 똑똑하지 않은가요?

답변:


9

물론 버그를 수정하는 것이 가장 깨끗하지만 해결 방법으로 아래의 백그라운드 스크립트가 작업을 수행합니다.

#!/usr/bin/env python3
import subprocess
import time

key = "org.gnome.settings-daemon.peripherals.keyboard numlock-state"
while True:
    time.sleep(1)
    state = subprocess.check_output([
        "/bin/bash", "-c", "gsettings get "+key]).decode("utf-8").strip()
    if state != "'on'":
        subprocess.Popen([
            "/bin/bash", "-c", "gsettings set "+key+" 'on'"])

사용하는 방법

  • 위의 스크립트를 빈 파일로 복사하여 다른 이름으로 저장하십시오. NM_on.py
  • 다음 명령을 사용하여 백그라운드에서 테스트 실행하십시오.

    python3 /path/to/NM_on.py
    
  • 모두 제대로 작동하면 시작 응용 프로그램 : Dash> 시작 응용 프로그램> 추가에 추가하고 다음 명령을 추가하십시오.

    /bin/bash -c "sleep 10 && python3 /path/to/NM_on.py"
    

설명

현재 Num Lock상태를 여러 가지 방법으로 얻을 수 있습니다 .

  • 명령을 실행 :

    xset q
    

    다음과 같은 출력을 제공합니다.

    Keyboard Control:
      auto repeat:  on    key click percent:  0    LED mask:  00000000
      XKB indicators:
        00: Caps Lock:   off    01: Num Lock:    off    02: Scroll Lock: off
        03: Compose:     off    04: Kana:        off    05: Sleep:       off
        06: Suspend:     off    07: Mute:        off    08: Misc:        off
        09: Mail:        off    10: Charging:    off    11: Shift Lock:  off
        12: Group 2:     off    13: Mouse Keys:  off
      auto repeat delay:  500    repeat rate:  33
    .....
    

    또는 다음 명령으로

    gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state
    

    단순히 어떤 반환 'on', 'off'또는 'unknown'.

    후자는 매우 가볍기 때문에 백그라운드 스크립트에서 매우 잘 사용하여 초당 한 번 확인하고 'on'필요한 경우 다음 명령으로 값을으로 설정할 수 있습니다 .

    gsettings set org.gnome.settings-daemon.peripherals.keyboard numlock-state 'on'
    

그리고 그것은 ...


편집하다

어떤 이유로 든, 나는 당신이 비슷한 해결책으로 다른 대답을 언급 한 마지막 단락을 놓쳤습니다.

순전히 이론적으로, 나는 현재 상태를 확인하지 않고 설정 을 맹목적으로 (재) 적용 하는 스크립트에 항상 문제가 있습니다. 명령이 있으면 그렇게하는 주장 이 있을 수 있습니다

gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state

현재 가치 를 얻으려면 단순히 실행하는 것이 더 까다로울 것입니다.

numlockx on

에 (재) 설정하십시오 numlockx on .
두 명령이 모두 완료되어야하는 시점을 살펴보면 (적어도 표시 임) 다른 방법 일 것입니다. 명령

gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state

더 "경량"인 것 같습니다.

백그라운드 스크립트를 실행하는 것은 나쁜 생각입니까?

물론, 백그라운드 스크립트를 실행할 이유가 없다면, 그렇지 않습니다. 동시에, 경우 백그라운드 스크립트를 잘 작성 철저 절차는 스마트 최적화, 테스트 및 경우 가 프로세서의 직업에 눈에 띄는 효과를 추가하지 않는 것이 중요 추가하는 경우, 그렇지 해결로 사용하기에 바보가 될 것입니다 기능성 또는 시간 절약

나는 적어도 4-8 개의 백그라운드 스크립트를 계속 실행하고 있습니다. 대부분은 다시 시작하지 않고 몇 주 동안 합니다. 노인 시스템에 아무런 영향을주지 않았습니다. 어쨌든 시스템은 수많은 루프를 실행하고 있음을 명심하십시오.


이것은 훌륭하고 훌륭하게 설명됩니다. 정말 고마워!
Torben Gundtofte-Bruun

@ TorbenGundtofte-Bruun 천만에요! 답이 찾고있는 것이라면 수락 하시겠습니까?
Jacob Vlijm

2
물론, 나는 그것을 먼저 구현하고 테스트하고 싶었습니다 :-) 이제는 나중에 설치를위한 요리 책의 일부입니다.
Torben Gundtofte-Bruun

내 Num Lock이 꺼져 gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state있어도 여전히을 반환합니다 'on'.
Rodrigo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.