外部キーボードが接続されているときにNumLockを自動的にオンにし、接続されていないときにオフにするようにUbuntuを設定するにはどうすればよいですか?


12

NumLockをオンにすると、フルサイズの外部キーボード(キーパッドを使用)を使用する場合に便利であり、ラップトップの組み込みキーボード(Fnを押さない限りキーボードの右sidに文字の代わりに数字を配置する)を使用する場合は非常に不便です。

そのため、外部キーボードを接続する(または接続したままブートする)たびにNumLockをオンにし、外部キーボードを取り外す(または分離した状態でブートする)たびにNumLockをオフにする必要があります。フルサイズの外部キーボードを使用することを好みますが、マウス、3Gモデム、外部ハード/フラッシュドライブと一緒にプラグインするのに十分な(3つだけの)USBポートがないため、これを頻繁に行います。

これを自動化できますか?非常に形式化可能で論理的に単純なタスクのようです:USBキーボードが接続されている場合(/ devにあるデバイスが存在しますか?)-NumLockがオンで、そうでない場合-NumLockはオフです。私のラップトップの内蔵キーボードはPS / 2接続型で、外部はUSBです。

おそらく自分でコーディングする必要がありますが、この場合はどこに置くべきですか?

Ubuntu 10.10を使用しています。

回答:


14

まず、numlockx をインストールしますここをクリックしてnumlockxをインストールします)。基本的に、これによりNum Lockの状態を設定するスクリプトを作成できます-詳細については、numlockxのマニュアルページを参照してください。

次に、udevルールの楽しさを詳しく調べる必要があります。まず、キーボードがどのように識別されるかを調べる必要があります。あなたはこれを行うことができます

ls /dev/input/by-id/

これにより、人間が読めるファイル名(特に読みにくい本当の名前へのソフトリンク)が得られます。私のキーボードは

/dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd

そのため、キーボードに関するすべての情報を見つける必要があります。やった

udevadm info -a -p $(udevadm info -q path -n /dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd)

もちろん、そこに独自のパスを挿入します。多くの情報が得られますが、キーボードに名前を付けてを持っている最初のブロックを見たいと思いますSUBSYSTEMS=="usb"。(USBコントローラーなどではありません)。私の場合、それは:

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2.3':
    KERNELS=="3-2.3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 2"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="a0"
    ATTRS{bMaxPower}==" 50mA"
    ATTRS{urbnum}=="6284"
    ATTRS{idVendor}=="058f"
    ATTRS{idProduct}=="9410"
    ATTRS{bcdDevice}=="0122"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{speed}=="1.5"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="3"
    ATTRS{devpath}=="2.3"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="KINESIS FREESTYLE KB700"
    ATTRS{product}=="KB700 Kinesis Freestyle"

これで、いくつかのルールを記述するのに十分な情報が得られました。お気に入りのエディターを使用して、以下を作成/etc/udev/rules.d/10-local.rulesして入力します。

BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="add",RUN+="/usr/bin/numlockx on"
BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="remove",RUN+="/usr/bin/numlockx off"

繰り返しますが、ここにキーボードの名前を入力し、異なる場合はATTRSを入力します。その後、動作するはずです:)

注:ルールファイルを作成するまですべてのコマンドを実行しましたが、これをテストすることはできませんでした。さらに調査を行う必要がある場合のソースは次のとおりです。


本当にありがとう。正直に言うと、私はそのような情報に近い答えを得ることを期待していませんでした。正しいだけでなく、+ 1以外にも授与できるといいのですが。私の質問にスターを付けて投票したすべての人があなたに報いることを願っています。
イヴァン


0

私がこのキーボードのNumLockがデフォルトでオンになっているため(これはMac Proのアルミ製キーボードです)、私がどうやって違うのかわかりません。トリックを行う必要があるいくつかの指示がここにあります。

お役に立てれば!


0

gnome-shellを使用している場合、パネルの「キーのロック」拡張機能にNumlock&Capslockステータスをインストールできます。ここで見つけてください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.