かな入力はもちろん、[後退]キーの配置まで、 力の及ぶ限り親指シフトキーボード(OASYSタイプ)にこだわってます。 ついでに、日本語入力関連の機能キー割り当てまでもが OAK (OASYSかな漢字変換) 仕様(^^;)。 なるべく、FM-TOWNS と同じになるようにしてるのですね。 お陰で、他のUNIX機では相変わらず日本語変換する方法を知らないままなのです。
ただし,日本語入力はXのみの設定です。
なお、コンソールとXとで別々に設定をしてあげる必要があります。 設定例
キーコード→文字の変換テーブルをシステムに登録してあげる必要があります。 plamo linux をインストールするときにキーボードを日本語配列に設定してある 場合には、jp106.map と云うファイルで指定されています。 実際のキーコードを調べて(後述)、テキストエディタでこのファイルを書き換え ます。 設定ファイルの例
なお、jp106.mapは/etc/rc.d/rc.keymapから呼び出されています。
/usr/bin/loadkeys /root/etc/jp106.map
の部分です。
Xを起動していない状態で、showkeyコマンドを使います。
showkeyでキーコードを調べようとしても無反応のキーがあります。
106キーボードの場合では、変換キーの横にある[カタカナ/ひらがな]というキーには、
キーコードが割り当てられていません。したがって、setkeycodesコマンドでキー
コードを割り当ててあげます。設定はrc.keymapに書いておくのがよいでしょう。
loadkeysコマンドよりも前に実行する必要がありますので、こんな感じになります。
/usr/bin/setkeycodes 0x70 91
これで、[カタカナ/ひらがな]キーにキーコード91を割り当てたことになります。
キーコードから文字への対応はjp106.mapに記述します。とりあえずは[空白]で
も割当てしておきます。
/usr/bin/loadkeys /root/etc/jp106.map
キー配列は、XKBとxmodmapで設定されています。 XKBは後から出来た枠組みであるみたいで、xmodmapだけで設定する枠組みも残されています。 元々はXに内包されていたキー設定の枠組みを高度化したのがXKBではないかと思います。
機体のキー設定を触るときにはXKB、ユーザ別にキー設定を触るのがxmodmap、という感じのようです。
ここでは、BSキーを「"]" (シフトで"}")」キーに変更します。
BSキーは[Ctrl]+[Alt]と同時押しすることでXを強制終了するように割り当てられています。 XKBを使っている場合、ほかのキーと同時押ししたときの動作を xmodmap で割当てしなおすことが出来ないようです。
なので、XKBの設定を触ります。
設定ファイルは、/usr/X11R6/lib/X11/xkb もしくは /etc/X11/xkb以下にあります。
symbols/jp と,symbols/srvr_ctrl の中で,
key <BKSP> {
type="CTRL+ALT",
symbols[Group1]= [ BackSpace, Terminate_Server ]
};
から
key <BKSP> {
type="TWO_LEVEL",
symbols[Group1]= [ bracketright, braceright ]
};
とします。
この場合でも、xmodmapで設定変更できるわけではなく、xkbで設定をしてしまったものです。
ちなみに、
key <BKSP> { [ bracketright, braceright ] };
とした場合には「"]" (シフトしても"]")」というキーになってしまいます。
また、ここで設定を変えても[Ctrl]+[Alt]+[BS]によるXの強制終了が無効になるわけではないようです。(どこに設定が残っているのかわかりませんでした。)
しかし、上記の方法だとユーザ全員のキー配置が変わってしまいます。 .XF86Configでユーザが個別に指定する方法を考えてみます。 (考えてみただけで試してませんので、うまくいかなかったらすみません。)
symbols/jp において
key <BKSP> {
type="CTRL+ALT",
symbols[Group1]= [ BackSpace, Terminate_Server ]
};
を消さないで、以下のようにパーシャルマップを追加してみます。
partial
xkb_symbols "bs_chgbracket"
key <BKSP> {
type="SHIFT",
symbols[Group1]= [ bracketright, braceright ]
};
rules/xfree86の ! option=symbolsの並びに
bs:chgbracket = +jp(bs_chgbracket)
追加します。
これで、.XF86Config で XkbOption に bs:chgbracket を指定するとかすると、 複数ユーザーにも対応できるんじゃないかと思います。
XKBの機能なので、mousekeyを使うのであれば、XKBは無効にしません。
その上で、mousekey機能の操作にはxkbsetコマンド(もしくはAccessX)を使います。
例えば、Xの起動時から有効にするためには、.xinitrc にコマンドを追加します。
xkbset m 'マウスキー機能をONにします。
xkbset exp m 'マウスキー機能のタイマーオフ時間を無限にします。
初期設定ではテンキーでマウスの操作をできるようになります。
クリックをキーボードに割り当てるためには、xmodmapを使います。
このへんが参考になります。
なお、テンキー周りの設定はXKBにあります。設定ファイルは compat/mousekeys です。
Gimpなどのフォトレタッチをマウスで使うときには、左クリック・ドラッグを多用します。このとき、マウスを操作している右手をかなり酷使することになってしまいます。とくにドラッグだと思ったようにマウスを動かすことができなくて困ります。
なので、キーボードの左手の方に、マウスクリックやドラッグを割り当てて、ボタン操作とカーソル移動操作を両手に分散させます。
外部コマンドという選択肢もあるようです。 α版 ということですが、 xkbの設定を触るためにはroot権限が必要だったりしますし。
[BS]キーを、XKBの設定を触らずにxmodmapで移動させるためには、XKBを無効にします。 以前は、XKBが[BS]キーを握り込んでしまうためか、うまく移動できなかったのでXKBそのものを無効にしてました。
/etc/X11/XF86Config の"InputDevice"セクションにスイッチがあります。
# Option "XkbDisable"
このように、頭に#が付いてコメントアウトされているのを、有効にします。
無かったら、以下のように書き込みます。
Option "XkbDisable"
設定ファイル群は、/usr/X11R6/lib/X11/xkb もしくは、/etc/X11/xkb 以下にあります。
*.dir と geometry/*、rules/*.xml は、設定ツールのための情報なので、viなどで設定変更するのであれば、あまり気にしなくていいみたいです。
rules/xfree86が設定ファイルの起点になっているそうなので、覗いてみます。
「!」で始まる行がコメント行ではなくて制御行らしいぞ、と思って眺めてみると他のフォルダでどのファイルを見るべきなのかが見えてきます。
例えば、
! model = geometry
...
jp106 = pc(jp106)
この「!」で始まる行がセクション界になっていて、
.XF86Configで model が jp106 という設定だったら、geometry はファイル pc (つまり、geometry/pcファイル)の jp106セクションを見る。
と解釈されるようです(見た感じの想像です...)。
ところで、書式は違いますが keymap/xfree86 も設定ファイルを調べる起点になりそうだなと思って覗いてみると、ちょっと違うファイルを見ることになっています。ううむ…。
キーコード→文字の変換テーブルを登録してあげる必要があります。 ~/.Xmodmap と云うファイルで指定されています。 実際のキーコードを調べて(後述)、テキストエディタでこのファイルを書き換え ます。 設定ファイルの例
なお、~/.Xmodmap は、~/.xinitrc から呼び出されています。
xmodmap .Xmodmap
の部分です。
xevコマンドを使います。
およそ xev で判明しますが、 .Xmodmapで記述するときに記号(!?#$%&=-+;:~等)の呼び名がわからないときに は、/usr/X11R6/include/X11/keysymdef.h を参照します。(といっても、 名前と記号の対照表が有るわけではなくて、名前が並んでいるだけなので、 実際にどんな字が出てくるかは設定してみないとわかりません。)
簡単に連想できなかったkeysymを書いておきます。