起動時にNumLockキーを自動的にONにする

 起動時にNumLockが自動的にOnになっていなくてイライラしたことがある人いますよね(^^? そんなあなたに贈る(^^、自動Onの方法です。方法は2通りあるのですが、お手軽な方を先に書いておきます。

その1: rc.localで

 キーボードのLEDを操作するためにsetledsというプログラムを使用します。このプログラムはconsole-tools-19990302_jp-13というパッケージに入っているので、もし、/usr/bin/setledsが存在しない時にはこのパッケージをインストールしましょう。書式は setleds [{+|-}num] [{+|-}caps] [{+|-}scroll]で、それぞれ標準入力のLED(NumLock/CapsLock/ScrollLock)をコントロールできます。で、起動時にNumLockをONにするには、rc.local(Vineでは/etc/rc.d/rc.local)の末尾に以下のように記述します。

for tty in /dev/tty[1-9]*; do
     setleds -D +num < $tty  # NumLock(num)をON(+)にする
done

参照:

http://www.cc.kumamoto-it.ac.jp/~g0801635/skill/map

その2: カーネルソースを変更して

 個人的には上の方が設定方法としては望ましいと思います。楽ですし。でもまぁ、カーネルソースに変更を加えてもできるよってことで。ちなみに私のマシンは上の方法を発見する前にこちらを見つけてしまったため、この設定もしてあります(排他的じゃないから)。

 /usr/src/linux/drivers/char/keyboard.cをお好きなエディタで開いて、次の場所を探してください(ここでは2.2.14のカーネルを例にとります)。

#ifndef KBD_DEFMODE
#define KBD_DEFMODE ((1 << VC_REPEAT) | (1 << VC_META))
#endif

#ifndef KBD_DEFLEDS
/*
 * Some laptops take the 789uiojklm,. keys as number pad when NumLock
 * is on. This seems a good reason to start with NumLock off.
 */
#define KBD_DEFLEDS 0
#endif

 これで再起動後からはコンソール上でNumLockがOnになっているはずです。

#ifndef KBD_DEFMODE
#define KBD_DEFMODE ((1 << VC_REPEAT) | (1 << VC_META))
#endif
#define KBD_DEFLEDS (1 << VC_NUMLOCK)
#ifndef KBD_DEFLEDS
/*
 * Some laptops take the 789uiojklm,. keys as number pad when NumLock
 * is on. This seems a good reason to start with NumLock off.
 */
#define KBD_DEFLEDS 0
#endif

 あまりよくCの文法を知らないため、場所に関して他のところがいいのかはわかりませんし、BIOSとのからみもよくわかってないのですが(すみません)、BIOSでNumLockを起動時にOnにしてあればとりあえず動くはずです。ただカーネルソースにも書かれているようにノートパソコンとかのことを考慮してこのような標準になっているため、できることならrc.localで設定する方がいいんではないでしょうか。

参照:

http://www.fk.urban.ne.jp/home/kishida/ironna/linuxini.html

最後に…

 ここに書かれているのは、いずれも「起動時にコンソールで」という条件であって、まだwdmなどでX上からログインする場合など、X起動時に自動的にOnにする方法はわかりません。linux-usersのMLとかでも質問は出ているものの回答はないようです。まぁ、Linuxを始めUnix系OSはめったに再起動するものじゃないから必要ない、といわれりゃそれまでなんですけど。もし方法があるなら、下記のメールアドレスに連絡ください。

ホームに戻る

このページに対する感想がありましたら、dellin@thekeyboard.comまでメールください。