물론 버그를 수정하는 것이 가장 깨끗하지만 해결 방법으로 아래의 백그라운드 스크립트가 작업을 수행합니다.
#!/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 개의 백그라운드 스크립트를 계속 실행하고 있습니다. 대부분은 다시 시작하지 않고 몇 주 동안 합니다. 노인 시스템에 아무런 영향을주지 않았습니다. 어쨌든 시스템은 수많은 루프를 실행하고 있음을 명심하십시오.