Luôn bật NumLock


8

Tôi đã gỡ bỏ nắp khóa Num Lock một cách vật lý, vì vậy tôi không vô tình nhấn nó (tôi sử dụng bàn phím rất nhỏ gọn). Nhưng tôi hiểu rằng có một lỗi trong xorg đã tắt Num Lock offkhi tôi chuyển bố cục bàn phím.

Vì vậy, tôi cần một cái gì đó ngăn chặn Num Lock "tắt", hoặc cách khác (có lẽ dễ dàng hơn?) Theo dõi trạng thái Num Lock và bật "bật" ngay khi nó thông báo rằng nó "tắt".

Đây là một câu trả lời Unix dường như để giải quyết vấn đề này, nhưng đối với LXDE. Tôi cần làm gì để ý tưởng này hoạt động trong Ubuntu 15.04 và Unity?

Tôi không biết cách theo dõi hoặc truy vấn trạng thái Num Lock hoặc cách lập trình thay đổi trạng thái Num Lock theo chương trình, nhưng đây là một giải pháp sử dụng tập lệnh đơn giản chạy mọi lúc. Nghe có vẻ như nó sẽ hoạt động nhưng tôi không chắc rằng nó thông minh để chạy mọi lúc?

Câu trả lời:


9

Tất nhiên, sạch nhất sẽ là sửa lỗi, nhưng như một cách giải quyết, tập lệnh nền bên dưới sẽ thực hiện công việc:

#!/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'"])

Cách sử dụng

  • Sao chép tập lệnh ở trên vào một tệp trống, lưu nó dưới dạng NM_on.py
  • Chạy thử nó trong nền với lệnh:

    python3 /path/to/NM_on.py
    
  • Nếu tất cả đều hoạt động tốt, hãy thêm nó vào Ứng dụng khởi động: Dash> Ứng dụng khởi động> Thêm, thêm lệnh:

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

Giải trình

Chúng ta có thể có được Num Locktrạng thái hiện tại theo nhiều cách:

  • chạy lệnh:

    xset q
    

    sẽ cung cấp một đầu ra như:

    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
    .....
    

    hoặc với lệnh:

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

    mà chỉ đơn giản là trả về 'on', 'off'hoặc 'unknown'.

    Vì cái sau có trọng lượng cực kỳ nhẹ, chúng tôi rất có thể sử dụng nó trong tập lệnh nền để kiểm tra một lần mỗi giây và đặt giá trị thành 'on', nếu cần, bằng lệnh:

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

và vì vậy nó ...


Biên tập

Vì một số lý do, tôi đã bỏ lỡ đoạn cuối cùng của bạn, trong đó bạn đề cập đến một câu trả lời khác với một giải pháp tương tự.

Về mặt lý thuyết, tôi luôn gặp vấn đề với các tập lệnh áp dụng các cài đặt một cách mù quáng mà không kiểm tra trạng thái hiện tại. Có thể có một đối số để làm như vậy, nếu lệnh

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

để có được giá trị hiện tại, sẽ đòi hỏi nhiều hơn mà chỉ cần chạy

numlockx on

để (lại) bộ numlockx on .
Nhìn vào thời gian cả hai lệnh cần kết thúc (ít nhất là một dấu hiệu), tuy nhiên, đó là cách khác; lệnh

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

dường như là "trọng lượng nhẹ" hơn.

Chạy một kịch bản nền một ý tưởng tồi?

Tất nhiên, nếu bạn không có lý do để chạy một kịch bản nền, thì đừng. Đồng thời, nếu một kịch bản nền được viết tốt, được kiểm tra kỹ lưỡng, các quy trình được tối ưu hóa một cách thông minh và nếu nó không thêm bất kỳ hiệu ứng đáng chú ý nào vào nghề nghiệp của bộ xử lý, thì thật ngu ngốc nếu không sử dụng như một cách giải quyết nếu nó thêm quan trọng chức năng hoặc giúp bạn tiết kiệm thời gian.

Tôi liên tục có ít nhất 4-8 tập lệnh nền đang chạy. Hầu hết trong số họ trong nhiều tuần mà không cần khởi động lại. Không bao giờ nhận thấy bất kỳ ảnh hưởng, trên (các) hệ thống cũ của tôi. Hãy nhớ rằng hệ thống của bạn đang chạy rất nhiều vòng.


Điều này là tuyệt vời - và giải thích tuyệt vời. Cảm ơn bạn rất nhiều!
Torben Gundtofte-Bruun

@ TorbenGundtofte-Bruun Chào mừng bạn! Nếu câu trả lời là những gì bạn đang tìm kiếm, bạn sẽ xem xét chấp nhận nó?
Jacob Vlijm

2
Chắc chắn, tôi chỉ muốn thực hiện và thử nghiệm nó trước :-) và bây giờ nó là một phần trong cuốn sách nấu ăn của tôi để cài đặt trong tương lai.
Torben Gundtofte-Bruun

Khi Num Lock của tôi tắt, gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-statevẫn trả về 'on'.
Rodrigo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.