≪ 2009年01月18日 | Top | 2009年01月20日 ≫

2009年01月19日

●SolarisでのCtrlとCapsLockキーがらみの設定

家ではAの横にCtrlがあるSunのType6とHHKのキーボードを使っており、猛烈にコマンドを打つ場合にAの隣のCtrlを押す癖がついているので、Aの横がCaps Lockになっているキーボードはついつい勢いで押し間違えてしまうことが多い。

と言うことで、Solarisをリモートから使う分には全く問題ないけど、ノートPCにクライアントとしてセットアップして使う場合に左CtrlとCapsLockキーを入れ替えたりCapsLockをCtrlキーにしたくなる場合がある。
一般的にこういった場合はCapsLockと左Ctrlを入れ替えて使う人が多いのだが、私はCapsLockを使うことが全く無いので、左CtrlとCapsLockを入れ替えずに、CapsLockをCtrlキーとして使っている。左Ctrlを押しても、CapsLockを押してもCtrlと言うわけである。
で、毎回ノートPCにセットアップするたびに検索してるので書いておく。

コンソール画面と、X上でそれぞれ違うシステムでキーボードマップを実現しているので、それぞれの設定が必要になってくる。

コンソール:キーテーブルを直接編集する
USキーボードなら/usr/share/lib/keytables/type_6/usに、
日本語キーボードなら/usr/share/lib/keytables/type_6/japan
に以下のコードを追加する。

#Caps Lockキーをctrlにする
key 57 all shiftkeys+leftctrl up shiftkeys+leftctrl
#左ctrlキーをCapsLockにする場合
#key 224 all shiftkeys+capslock

日本語キーボードならtype_6/japanと直感的にわかるけど、USキーボードだからと言って /usr/share/lib/keytables/type_101/usに設定してしまうとややこしいことになる。

X(ユーザーごと):xmodmapコマンドでの実装
ログイン時に自動実行された~/dtprofile スクリプトからxmodmapコマンドがrcファイルを読み込ませて呼ばれる
~/.xmodmaprc

!Caps Lockキーをctrlにする
remove Lock = Caps_Lock
keysym Control_L = Caps_Lock
add Lock = Caps_Lock
!左ctrlキーをCapsLockにする場合
!remove Control = Control_L
!keysym Caps_Lock = Control_L
!add Control = Control_L

~/.dtprofile

# swap ctrl and caps lock key
if [ -f ~/.xmodmaprc ] ; then
/usr/openwin/bin/xmodmap ~/.xmodmaprc
fi