เปิด NumLock ไว้เสมอ


8

ฉันได้ถอดฝาครอบปุ่ม Num Lock ออกทางกายภาพอยู่แล้วดังนั้นฉันจึงไม่กดโดยไม่ตั้งใจ (ฉันใช้แป้นพิมพ์ขนาดกะทัดรัดมาก) แต่ฉันเข้าใจว่ามีข้อผิดพลาดใน xorgที่สลับ Num Lock เป็นoffเมื่อฉันสลับเค้าโครงแป้นพิมพ์

ดังนั้นฉันต้องการสิ่งที่ป้องกันไม่ให้ Num Lock "ปิด" เลยหรืออีกวิธีหนึ่ง (อาจจะง่ายกว่า) ตรวจสอบสถานะ Num Lock และเปลี่ยนเป็น "เปิด" ทันทีที่สังเกตเห็นว่าเป็น "ปิด"

นี่คือคำตอบ Unix ที่ดูเหมือนว่าจะอยู่นี้ แต่สำหรับ 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.