NumLockを常にオンにしておく


29

右側に数字キーのある標準キーボードがあります(104キーキーボードと呼ばれます)。数字キーを数字キーとしてのみ使用したい。つまりNumLock、数字キーのオンとオフを切り替えたくありません。

ただし、NumLockNumlockがオフになり、もう一度押す必要がある場合があります(おそらく、私が誤ってキーを押す方法がわかりません)。これは非常に迷惑です。

NumLockのオフを無効にすることは可能ですか?

言い換えれば、数字キーを常に数字キーとして機能させ、numlockスイッチを無効にしたいのです。

DebianとLXDE(Openbox)を使用しています。


このスレッドがあります:ubuntuforums.org/showthread.php?t
slm

@MartinVegter ~/.config/openbox/autostartおよびの内容をここに投稿します~/.config/openbox/rc.xmlか?
リストサルミネン

numlockがオンであることを検出した場合にNumlockを再びトリガーするイベントが必要です。numlockの無効化は、で述べたように簡単xmodmapです。残っている質問は、そのイベントを取得する方法です......?
SHW

回答:


7

ここですべての答えを読んだ後、私はあなたが次のことができるのを見て驚いた。

<keybind key="Num_Lock">
  <action name="Execute">
    <command>numlockx on</command>
  </action>
</keybind>

したがって、を押すたびにNum、numlockが非アクティブになります。実行されnumlockx on、numlockが再アクティブ化されます。

名前はxev、キーコード77と名前Num_Lock

@MartinVegtersの場合numlockx on、イベントのNum処理後に間違いなく実行されるように、彼は数秒待つ必要がありました。カーネル内のnumlockの処理と実行の間には競合状態があるためnumlockx

この場合、次のdenumlock.shような小さなスクリプトを書くことができます

#!/bin/sh

sleep "$1"
numlockx on

キーバインディングで使用します

<command>/bin/sh denumlock.sh 1</command>

これは汚れていますが、機能します。

私がお勧めするのは、自分でテストできなかった次のものです。使用することを提案する最初の回答に従うことをお勧めします

xmodmap -e 'keycode 77 = Escape'

ただし、LXDEの場合は、Openboxで編集する方法とは異なるLXDE自動起動メカニズムを使用する必要があります~/.config/openbox/autostart

LXDEでは、明らかに、起動用のコマンドを保持する~/.config/lxsession/LXDE/autostartLubuntu を編集する必要~/.config/lxsession/Lubuntu/autostartがあります。(Arch docsLXDE docsを参照)そのファイルを作成してこの行を追加する必要があるかもしれません。

@xmodmap -e 'keycode 77 = Escape'

悲しいことに、私が言ったように、LXDEで実行しているVMしか持っていないため、これが機能するかどうかをテストできません。


1
ソリューションを試しました<keybind key="Num_Lock">が、残念ながら機能しません。コマンドnumlockx onが実行されている間、<kbd> NumLock </ kbd>はまだその機能をnumlockとしてリテールします。したがって、Numlockのオン/オフを切り替えることができます。
マーティンVegter 14年

他のソリューションについては、を使用してxmodmap、Risto Salminenが提案したソリューションを試してみたところ、コマンドは機能しましたが、すべてのキーバインディングが失われました。
マーティンVegter 14年

@MartinVegter Mhhあなたsleep 3; numlockx onはキーバインドを試すことができます。2番目の解決策では、自動起動で試しましたか?
ラファエルアーレンス14年

理由はわかりませんが、うまくいきませんsleep 3; /usr/bin/numlockx onNumLockオン/オフスイッチとして機能します。
マーティンVegter 14年

@MartinVegterは/usr/bin/numlockx onシステムで動作しますか?
ラファエルアーレンス14年

13

おそらく私が誤ってNumLockキーを押した

キーボードが(たとえば、雇用主ではなく)自分のものである場合は、キーボードから物理的に取り外してください

本当に必要な場合は、先のとがったものでそれを押すことができます。

ここに画像の説明を入力してください


4
ええ+1 シンプルはエレガントです。
ypercubeᵀᴹ

1
悲しいことに、私のNumLuckのデフォルトの状態は間違っています:(
MichaelChirico

6

私のラップトップキーボード(Ubuntu 10.04)では、キーボードロックが現在オンになっています。

$ xmodmap -pke|grep 77
keycode  77 = Num_Lock Pointer_EnableKeys Num_Lock Pointer_EnableKeys
keycode 177 = XF86Phone NoSymbol XF86Phone
$ xmodmap -e "keycode 77 ="

出来上がり!numlockは無効になりました。

xmodmap -e "keycode  77 = Num_Lock Pointer_EnableKeys Num_Lock Pointer_EnableKeys"

再び元に戻します。(たぶんNum_lockのgrepingはより良いアイデアだったでしょうが、要点はわかります)。

@Martin Vegterのコメントに返信してください。

[OK]を、あなたのバインディング遺跡xmodmapをあなたのコメントへの返信で、理解しました。

Openboxのドキュメントを確認しました

〜/ .config / openbox / lxde-rc.xmlを見てください

ls -l lxde-rc.xml (rc.xmlもありますか?、確認してください)。

バックアップとしてそれのコピーを取ります

(エディターを使用)numlock(たぶんnmlk)を検索します。

このようなものが見えますか?

<keybind key="Numlock">
<action name="whatEverItSays"/>
</keybind>

コメントアウトするか、キーバインドのKey-Valueを代替に変更します(例:Alt-Numlockで切り替え)

key="A-Numlock"

例えば

するために、コメントアウト

<!-Commented out from here
    <keybind key="Numlock">
    <action name="whatEverItSays"/>
    </keybind>
To Here -->

または

Alt + Numlockトグルに変更

<keybind key="A-Numlock">
  <action name="whatEverItSays"/>
</keybind>

変更を保存してログアウト/ログインまたは再起動します。


問題は、いずれかであるxmodmap(つまりは、コマンドxmodmap -e 'keycode 77 = Escape'で定義されている)私の既存のキーバインドを破壊する.config/openbox/lxde-rc.xml
マーティンVegter

1
より良いフォーマットを得るために上記で回答しました。
X Tian

お返事をありがとうございます。ただし、my .config/openbox/lxde-rc.xmlには、Numlockまたはを含む行はありませんNum_Lock。作成しても効果はありません:<keybind key = "Num_Lock"> <action name = "Execute"> <command> / bin / true </ command> </ action> </ keybind>
Martin Vegter

1
ホームディレクトリのファイルの前に別の設定ファイルが読み込まれている必要があります。/ etc / xdg / openboxと/ usr / share / ...を探すことをお勧めします。これが役に立たない場合は、あきらめる必要があります-ごめんなさい。
Xティエン

3.4.7からログを変更(openbox)「同じレベルの複数のバインディングを翻訳できなかった場合、キーバインディングを修正する(Openboxキーバインディングの動作を停止するVMWareを修正)」
X Tian

5

でnumlockキーコードを見つけますxev。たとえば、ここでは、Num_Lockは77です。

xmodmapを使用してキーコードを再マッピングします。

  • 現在のXセッションでは、シェル内でを使用しますxmodmap -e 'keycode 77 = '
  • 将来のすべてのXセッションに対して、~/.xprofile場所内でxmodmap -e 'keycode 77 = '

    編集:注:ソフトウェアがNum Lock状態を変更している場合は機能しません。


1
コマンドはxmodmap -e 'keycode 77 = '動作しますが、それは深刻な問題が発生します。すべての私のキーバインディングが動作を停止
マーティンVegter

さて、あなたはそれを有効で無害なキーにマップしようと試みることができます。同様にxmodmap -e 'keycode 77 = Escape'(YMMV、ESCは私にとって安全だと思われます)。〜/ .Xmodmapファイルはありますか?はいの場合、の代わりに~/.xprofilekeycode 77 = Escapeこのファイルの最後に配置します。
emp。ジャスティン

1
問題は、いずれかであるxmodmap(つまりは、コマンドxmodmap -e 'keycode 77 = Escape'で定義されている)私の既存のキーバインドを破壊する.config/openbox/lxde-rc.xml
マーティンVegter

4

NumLockキーマ​​ッピングを何もマッピングしないで削除します。最初に実行xevしてNum Lockを押し(おそらく77を出力します)、次にコマンドを実行します。

xmodmap -e "keycode # = """

#はNumLockのキーコードです。

また~/.xprofile、xセッションでNumLockを無効にするためにこれを配置します。


元の質問が明確でない場合:numlockをオフにしたくない。私は反対が欲しい。私はそれが(私は常にオンのNumLockをしたい)オフにすることができないようにしたい
マーティンVegter

ああ、明らかに、私の考えに誤りがありました。知らせてくれてありがとう。:)答えを改善できるかどうかを確認します。
リストサルミネン

これは私のシステムには影響しません:xmodmap -e "remove Lock = Num_Lock"
マーティンVegter

これでコマンドは動作しますが、すべてのキーバインディングが破壊されます。すべてのキー割り当てが機能しなくなります。
マーティンヴェグター

スーパーユーザーに関するこの回答によれば、そうすべきではありません。
リストサルミネン

4

キーボードオプションの写真LinuxMint 17.2では、他のバージョンのUbuntuでキーボード設定に移動し、そのページのレイアウトに小さな「オプション」ボタンが表示されると思います。

そこから「その他の互換性オプション」に進み、「数字キーは常に数字を入力する」をチェックします

これは私にとって命の恩人です。数字を入力して、ページのどこか他の場所に移動するのは、私にとって大したことではありません。乾杯!;)


1
この答えにはもっと多くのポイントがあるはずです!
カルロスガント

これは、コマンドラインから、setxkbmap -option numpad:macまたはで設定Option "XkbOptions" "numpad:mac"することでも実行できますxorg.conf
j123b567

2

ここでの他の回答は、numlockx onwith を使用することを提案しましたがxmodmap -e 'keycode 77 ='numlockx onそのxmodmapコマンドと一緒に私のシステムでは動作せず、エラーメッセージを表示します:

$ numlockx on
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  132 (XTEST)
  Minor opcode of failed request:  2 (X_XTestFakeInput)
  Value in failed request:  0x0
  Serial number of failed request:  17
  Current serial number in output stream:  20

またxmodmap -e 'keycode 77 ='、何らかの理由で設定すると、で作成したすべてのキーバインドが削除されxbindkeysます。

しかし、同様の質問に対するこの答えは私を助けてくれました。私の一部~/.xinitrc

numlockx on
xmodmap -e 'keycode 77 = NoSymbol Num_Lock'

このように、NumLockはそれ自体では何もしませんが、Shiftで押された場合、元の(ほとんど役に立たない)目的を果たし、最も重要なことにはnumlockx on、システムでの作業を妨げたり、xbindkeysキーバインドを台無しにしたりしません。


1

別の方法として、numlockキーを永久に無効にしたい場合。そのためには、キーコード77を変更して現在のキーマップファイルを変更します。

この値を「none」に設定すると、誤ってキーを押しても何も起こりません。

numlockx起動時に使用して起動し、変更されたキーマップファイルを起動スクリプトの~/.bashrcいずれか、またはなどで使用し/etc/profileます。

注:これはテストしていませんが、動作するはずです。


1

KDEを使用したOpenSuse 13.xでは、これがうまくいきました。

  • numlockxをインストール
  • カスタムショートカットを追加:
    • カスタムショートカット->編集->新規->グローバルショートカット->コマンド/ URL:
    • アクション名:NumLockOn
    • コメント:numlockをオンにしておく
    • トリガー:NumLockkに設定
    • アクション->コマンド/ URL:sh -c 'sleep 0.5; numlockx on'
    • 当てはまる
    • (完了)

NumLockがオフのために有効にする必要がある場合は、を使用します% numlockx on


これが必要です。Xubuntu 16.04に取り組んでいます。
kodmanyagha


0

それは最良の解決策ではないかもしれませんが、これは私のために働いた:

stdbuf -oL xinput test 11 | mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}' | bash

11はキーボードのIDです。行いxinput、あなたのキーボードIDを決定するために、リストを(私の場合、それは11です):

user@host:~$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ DualPoint Stick                           id=12   [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS DualPoint TouchPad          id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ USB 2.0 Camera                            id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]

明らかに、numlockxそれが機能するためにインストールする必要があります。

説明:

  • stdbuf -oL 出力ストリームのバッファリング操作をバッファリングされた行に変更します
  • xinput test 11 押されたキーを標準出力に出力します
  • mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}'印刷され、77(numlockキー)を含むすべての行に対して、コマンドを作成し/usr/bin/numlockx onます...
  • | bash ...それをbashにパイプして実行します。

このonelinerは、デスクトップ環境の初期スクリプトの1つに挿入するか、バックグラウンドで実行できます。


0

また、数字キーパッドの数字キーは常に数字であり、KP _...のものではないようにします。

私のソリューションは、Linuxリポジトリで使用するための再マッピングApple Keyboardの一部です。

基本的に、Num_LockをF20として、数値をそれ自体として再マップします。

このソリューションは、常に望ましい結果と、付加的な機能キーを提供します。


-1

次のスクリプトを作成し、実行可能にします chmod +x <filename>

#!/bin/bash
if [ -x /usr/bin/numlockx ];then
/usr/bin/numlockx on
fi

ファイルパスを入れます .config/openbox/autostart

または、数分ごとにチェックし、numlocksがオフの場合にスクリプトを実行するcronジョブとして配置します。

crontab -e 
*/1 * * * * <path-to-file>

または、ループでスクリプトを実行します。

#!/bin/bash
  x=0
  while [ x -eq 0 ];do
    if [ -x /usr/bin/numlockx ];then
    /usr/bin/numlockx on
    fi
  done

numlockxがない場合は、次の方法で取得できます。 sudo apt-get install numlockx


いいえ、これは確かに良い解決策ではありません。ごめんなさい
マーティンヴェグター

1
理由を説明してください。
Jeight

1
まあ、それは非常に汚い回避策だからです。根本的な問題を解決するのではなく、カーペットの下の症状を一掃するだけです。
マーティンヴェグター

残念ながら、xmodmapが機能しない場合、他のオプションはありません。numlockをチェックして有効にするスクリプトを作成しても、問題を解決することはできません。これは、キーを太く運指するためのチェックアンドバランスと考えてください。副作用はなく、スクリプトはいつでも簡単に停止/開始できます。回避策としてそれほど汚くないわけではありません。毎日使用しているプログラムの実際のソースコードでは、はるかに悪い結果が出ています。
Jeight

どうしてそんなに確実なのか、他の選択肢はないの?
マーティンVegter 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.