USB 親指シフトキーボード(コンパクト)

更に追記: X で「メタキー」の設定を加えてみました.

追記: nicola コンソーシアムの web からリンクされてしまったようなので,少し手を加えてみました.

富士通コンポーネントからコンパクトタイプの USB 親指シフトキーボードが発売されたので,早速 get して試してみました.

キーボードの機能

モードレス

キーとスキャンコードが常に一致しています. というわけで,親指シフト入力には何らかのドライバが必要となります.

これについては異論のある方もいるようですが,私はこれで正解だと思います. というのは,キーボード自身が親指シフト処理を行おうとすると,キーボード自体が何らかの「状態」を保持する必要があります.

が,現代の PC では複数のスクリーン(ウィンドウ)を扱うものが主流です. となると,この方式では,ウィンドウを切替える際のことを考えると,PC 側でもキーボードの状態を保持・追跡する必要が出てくるわけで. それだったら「状態」は PC 側で一括管理した方がドライバの作りはすっきりします.

親指キー

親指左・親指右キーはそれぞれ無変換・変換キーと同等です. Windows 環境でも「変換」と「は」キーの同時押して「み」が入力できたりして,全く区別が付きません. いろいろ実験してみたのですが,おそらくは,キースイッチ自体が「変換」や「無変換」キーと並列に接続されているのだと推測されます.

これはちょっと残念,という気もします. が,ソフト的には普通の日本語 USB キーボードと全く同じと考えることができるので,全く悪いことばかりというわけでもありません. あと,親指シフトには,親指キーと変換・無変換が一緒になったタイプもありますが,このタイプの操作も受け付けてくれる,という効果もあったりします.

キーレイアウト

写真ではわかりにくいので,アスキーアートで書いてみました. うまく表示されるかなぁ.

┏━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━━━┓
┃Es┃1┃2┃3┃4┃5┃6┃7┃8┃9┃0┃−┃^┃\┃BS    ┃
┣━┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻━━━┫
┃半全┃Q┃W┃E┃R┃T┃Y┃U┃I┃O┃P┃@┃[┃Enter   ┃
┣━━┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┓      ┃
┃英数  ┃A┃S┃D┃F┃G┃H┃J┃K┃L┃;┃:┃]┃      ┃
┣━━━┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻━━━┫
┃Shift   ┃Z┃X┃C┃V┃B┃N┃M┃,┃.┃/┃,┃Shift   ┃
┣━┳━┳┻┳┻┳┻┳┻━┻┳┻━┻┳┻┳┻┳┻┳┻┳┻┳━┳━┫
┃Ct┃Fn┃田┃Al┃Tb┃親指左┃親指右┃空┃ひ┃Al┃田┃目┃↑┃Ct┃
┗━┻━┻━┻━┻━┻┳━━╋━━┳┻━┻━┻━┻━╋━╋━╋━┫
                      ┃無変┃変換┃                ┃←┃↓┃→┃
                      ┗━━┻━━┛                ┗━┻━┻━┛

Linux で使うには

基本的には,普通の日本語 USB キーボードと同じ扱いです. カーネルさえ日本語 USB キーボードに対応していれば,あとは「日本語 USB キーボード」のように使うことができます.

親指シフト入力をするには,Q's nicolatter などの IM が必要です.

カーネル

まずは日本語 USB キーボードが使える環境が必要なのですが,標準の Linux カーネルの場合,2.4.10 以降のものを使用する必要があります. ただし,ディストリビューションによっては独自にパッチが当ててあって,カーネルのバージョン表記がこれより古くても対応していることがあるかもしれません.

カーネルが日本語 USB キーボードに対応していない場合,日本語キーボードの固有のキー(「円記号」「\」「ひらがな」「変換」「無変換」)のキーをうまく取り扱えません.

で,この確認方法ですが,一番確実なのはコンソールで showkey -s コマンド,です. 変換キーなどが PS/2 の日本語キーボードと同じスキャンコードを出力しているのを確認しましょう.

コンソールの設定

ええと,USB キーボードドライバさえ有効になっていれば,それだけでもキートップの通りの英数文字・記号が入力できます. が,私の場合はこの配置がちょっと気に入らないので,カスタマイズ.

普通のキーボードの tab キーがある位置には,「半角/全角」キーがあるのですがこいつを tab に割り当てます. コンソールでの親指シフトはちと面倒なので,これは設定しないことにします.

Vine などの RedHat 6.x 系のディストリビューションでは,/usr/lib/kbd/keymaps/i386/qwerty に jp106.kmap.gz というファイルがあるので,これを元にします. 手順としては,

  1. 圧縮を解除しつつ,複製を作成
    gzcat /usr/lib/kbd/keymaps/i386/qwerty/jp106.kmap.gz > jp106_Thumb
  2. 編集
    キーコードの 41 番が「半角/全角」キーなので,このエントリを以下のように書き換えます.
    keycode  41 = Tab              Tab
            alt     keycode  41 = Meta_Tab 
    
  3. 再圧縮
    gzip jp106_Thumb
  4. ディレクトリに移動
    mv jp106_Thumb.gz /usr/lib/kbd/keymaps/i386/qwerty
  5. kbdconfig コマンドでこの設定を選択してやります.

X の設定

ここでのキー割当の変更も,単に私の好みによるものです. 「キートップ通りのキー割当がいい」という場合はこの設定は不要で,Q's nicolatter をインストール・設定すれば,親指シフト入力できるようになります.

まず,キーボード自身のキー割り当てについて.

と,割当を替えました. なお,Ctrl と Caps の入れ換えは,XF86Config の設定の方で行っています.

┏━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━━━┓
┃Es┃1┃2┃3┃4┃5┃6┃7┃8┃9┃0┃−┃^┃\┃BS    ┃
┣━┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻━━━┫
┃Tab ┃Q┃W┃E┃R┃T┃Y┃U┃I┃O┃P┃@┃[┃Enter   ┃
┣━━┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┓      ┃
┃Ctrl  ┃A┃S┃D┃F┃G┃H┃J┃K┃L┃;┃:┃]┃      ┃
┣━━━┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻━━━┫
┃Shift   ┃Z┃X┃C┃V┃B┃N┃M┃,┃.┃/┃,┃Shift   ┃
┣━┳━┳┻┳┻┳┻┳┻━┻┳┻━┻┳┻┳┻┳┻┳┻┳┻┳━┳━┫
┃CL┃Fn┃◇┃Al┃無┃Kspc  ┃sp    ┃変┃ひ┃Al┃◇┃目┃↑┃Ct┃
┗━┻━┻━┻━┻━┻┳━━╋━━┳┻━┻━┻━┻━╋━╋━╋━┫
                      ┃Kspc┃sp  ┃                ┃←┃↓┃→┃
                      ┗━━┻━━┛                ┗━┻━┻━┛

以下のコマンドを実行することにより,キー割当を変更することができます.

xmodmap -e 'keycode 129 = space'        # Henkan
xmodmap -e 'keycode 131 = KP_Space'     # Muhenkan
xmodmap -e 'keycode 65  = Henkan'       # Space
xmodmap -e 'keycode 23  = Muhenkan'     # Tab
xmodmap -e 'keycode 49  = Tab'          # Hankaku_Zenkaku

xmodmap -e 'keycode 115 = Meta_L'       # Left Windows
xmodmap -e 'keycode 116 = Meta_R'       # Right Windows
xmodmap -e 'add Mod3 = Meta_L Meta_R'   # for modifier key

最後の3行では,ウィンドウズキーをメタキーに設定しています. 邪魔ものでかつ使えないのは癪なので設定してみました. Emacs で「メタ」キーとして使うことができます (が,私は ESC キーを押す人なので,あまり関係なかったりしますが).

なお,keycode は,環境・設定により異なる値となることがあるので,設定前には xev コマンドでキーに割り当てられたキーコードを調べると良いでしょう.

KeyRelease event, serial 18, synthetic NO, window 0x4800001,
    root 0x26, subw 0x0, time 3093188213, (70,84), root:(226,184),
    state 0x0, keycode 131 (keysym 0xff80, KP_Space), same_screen YES,
    XLookupString gives 1 characters:  " "
ターミナルから xev を起動すると,四角いウィンドウが現れ,このウィンドウが受け取ったイベントが延々とダンプされます. というわけで,四角いウィンドウにマウスカーソルを合わせ,ここで調べたいキーを叩けば,そのキーに対するキーコードわかります. 上記画面の keycode がそれです. また,keysym という部分には,現在割り当てられているキーシンボルが表示されます. というわけで,キーの入れ替えがうまくいってるかチェックするのにも使うことができます.

まぁ,xmodmap では,keysym コマンドで指定を行えば環境にあまり依存しない指定ができるのですが,実行を繰り返すうちに「入れ替えの入れ換え」みたいになってわけわからなくなるので…

あとは,IM の方の設定を行えば OK. Q's nicolatter の場合は,nicoconf と keyconf コマンドで設定を行えます.

おまけ: Japanist の電子辞書

このキーボードには Japanist という,Windows の IME が附属しています. Linux で使うには不要なのですが,この中に EPWING 形式の辞典が複数収録されています. この辞書を(Windows で)ハードディスクにインストールすると,Linux からは ebview で使用することができました. ライセンスでは「一人で使用する場合は複数マシンにインストール可能」ということなので,問題ないとは思います.

「まったく無駄」だと思っていたのが存外役に立ったのでラッキー,という気分. このキーボードの高い値段も,他のコンパクトキーボードの値段+Japanist のお値段とすると,こんなもんかな,とは思います. でも,Linux で使う時,とか,一人で複数枚のキーボード(会社と自宅)を買う場合とかは,Japanist がなくても困らない場合もあるわけで. というわけで,Japanist 無しでの単体でも販売してくれるといいなぁ,とか思ったりもします.


Linux のお部屋のもくじ
いまいくんのページのもくじ
2003 年 6 月 25 日更新
imai@jr0bak.homelinux.net