NumLockを常にオンに保つ


8

Num Lockキーキャップはすでに物理的に取り外しているので、誤って押してしまうことはありません(非常にコンパクトなキーボードを使用しています)。しかしoffキーボードのレイアウトを切り替えるとNum Lockが切り替わるxorgのバグあることを理解しています。

ですから、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
    
  • すべてが正常に機能する場合は、スタートアップアプリケーションに追加します。ダッシュ>スタートアップアプリケーション>追加、次のコマンドを追加します。

    /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'

    後者は非常に軽量であるため、バックグラウンドスクリプトで非常によく使用して1秒に1回チェックし'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 2015

@ TorbenGundtofte-Bruunどういたしまして!答えがあなたが探しているものである場合、それを受け入れることを検討しますか?
Jacob Vlijm 2015年

2
もちろん、私は最初にそれを実装してテストしたかっただけです:-)そして今、それは将来のインストールのための私のクックブックの一部です。
Torben Gundtofte-Bruun 2015

Num Lockをオフにしてgsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-stateも、が返されます'on'
ロドリゴ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.