Nikep Software Lab.

ニケプ ソフトウェアラボ 〜 Nikep Software Lab.

便利でフリーなソフトウェアとウェブサービスをご提供するサイトです。  ホーム » ソフトウェア » 日本語キーボードを英語キーボードとして使う
ホームソフトウェアWEBサービスブログ趣味のページ自己紹介
日本語キーボードと英語キーボード配置キーマップの入れ換え方■Linux console■X Window System■Windows2000Windows詳細

日本語キーボードを英語キーボードとして使う

日本語キーボードと英語キーボード

英語キーボード

私はずっと英語キーボードを使っている。特に思想上の拘りがあるわけではなくて、単に慣れているというのが理由です。始めて本格的にプログラミングを始めた SUN のワークステーションが英語キーボードでした。

日本語キーボード(JIS配列)は、記号(:;+など)の位置が異なっていることと、無変換など余分なキーが付いているところが違う。(DQNなオヤジが国語学者か何かと決めたのだろう。日本人には、標準(共通)にしておけば良いものをわざわざ独自に変えることで、より仕事をした気分になる人が多い…)

デスクトップでは、キーボードは自分の好きなのを買えば良いので気にならないが、ラップトップでは日本語キーボードのしか売っていない上に、取り換えが難しいので始末が悪い。(デスクトップで英語キーボードの人は結構多いと思う。海外向けに英語キーボードパーツも生産しているのに、オプションにしてくれないのは不満だ) おまけに、私はあまりタイピングがうまくないので、交代交代で使っていると英語キーボードまで打てなくなってしまう。
したがって、個人で買う場合にはなんとか英語ノートを探すのであるが、今回会社から支給されたものには選択肢がなかった。

そこで、日本語キーボードを英語キーボードとして使えるように、キーマップを入れ換えてみることにした。 ターゲット環境は Linux(console, X)、Windows2000。

配置

まず、単純に英語キーマップに近付けることを考える。単にキーボードドライバを入れ替えるだけで は、 '[`]'(grave/backquote)と '[~]' (asciitilde)のキーが なくなってしまう。この不足は、Windowsではまだしも、UNIXを使う上ではありえないため、若干のキーマップ変更は必須である。

さて、どのように変更しようか。
以前、無変換のところに '[`]' '[~]' があるキーボードを 使っていたことがあり、親指で押せるキーは結構便利に思っていたのと、基本的に「無変換」とかの Spaceの横にある日本語キーは 使わないので、有効に割り当てようと思っていた。しかし、Xmodemap を眺めていたら、これらに個別の scancodeを 割り当てているようなので、そのまま生かすことにした。(これを使っているイカしたアプリケーションがあるかもしれない)。
キーが共通なのは英語を生かす (例えば'[6][&]'→'[6] [^]'、 '[^] [~]'→'[=] [+]'として、 '[`]'、'[~]' が足りなくて、 '[}]'、'[]]'が余っている。また、 '[¥] [|]'と'[-] [_]'が あるので、'[¥]'と'[_]'は重複している。また、英語キーボードでは Enter が縦長ではなくて横長なので、日本語キーボードを使うときに '[}][]]'を Enterと間違えて叩いてしまうことが多い。

というわけで、以下のようにすることに決定。

で、結局こうなります。 英語化された日本語キーボード

キーマップの入れ換え方

Linux console

keymap を変更します。/usr/lib/kbd/keymaps/i386/qwerty/ の下にus_jp_Ctrl_CAPS.kmap.zipを 置いて、/etc/sysconfig/keyboard を KEYTABLE="us_jp_Ctrl_CAPS" と変更します。

X Window System

Xmodemap を変更します。Xmodmap.zipを解凍して ~/.Xmodmap として置きます。システムによっては、~/.xinitrc などに、「xmodmap ~/.Xmodmap」などが必要かもしれません。

Windows 2000 / Windows XP / Windows Vista

二つの作業を行います。
  1. キーボードドライバを英語キーボードに変更する
  2. レジストリにキーを書き込む

キーボードドライバは、システム設定で変えて下さい。
レジストリをいじらなくてはなりません。具体的には、regedit を立ち上げて、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
に、"Scancode Map"を作成し、hex で以下を書き込みます。

00000000 00000000
06000000 1d003a00
3a001d00 1c002b00
29007300 2b007d00
00000000
(手順に関しては下に詳しいのがあります)
reg ファイルは、us_jp_Ctrl_CAPS.reg.zipを作ってみました。いきなりレジストリに結合されますので、中身が理解できる人だけ使って下さい。

と、ここまで書きましたが、「変換」とかのキーが 効いていないようです。使わないので気が付きませんでした。それで構わない方のみ実行して下さい。

これを解決するためには、日本語キーボードドライバから出発しないとならないと思われます。ですが、ここで紹介したレジストリの方法では、shift修飾だけを変えることができなくて、キーを入れ換えることしかできないのです。キーボードドライバを書き直したほうが良いかもしれません。どうもDDKが必要なようで無料では作れないようです。

さて、考えた通りのことは概ねできましたが、やっぱりなんだか使い難いなぁ。

※*.zip なファイルは解凍して使って下さい。

補足

Windows keyの入れ替え方詳細

検索エンジンからこのページにいらっしゃる方が多いのですが、多分Windowsのキーマップの入れ換え方を捜しているんではないかと 思い、詳細を記載しておきます。

なお、行った変更を元に戻したい場合は、registryから"Scancode Map"のキーを削除します。

構成は、ヘッダと中身、フッタからなります。

項目
サイズ
内容
ヘッダ
LONG x 2
全部0
データ長
LONG
フッタを含む残りのデータのLONG数
データ
SHORT x 2
前SHORT=スキャンコード、後SHORT=キーコード
データ

繰り返し
フッタ
LONG
全部0

記述はLONG(=4バイト)、SHORT(=2バイト)です。注意しなくてはならないのは、IntelCPUでリトルエンディアンになっていますので、byte orderがひっくり返っていることです。[12AB]は、[B,A,2,1]となります。

例を1つ、
キーマップのレジストリキー
この例では、記述は3つで、CapsLock(003A)を左Control(001D)と入れ替え、右ALT(E038)を押すと左WIN(E05B)のキーコードを吐くようにしています。

なお、スキャンコードは、マイクロソフトの文書ms-scancode.pdfに記載されています。最新はMSのサイトscancode.docにあります。

サイト内検索

ウェブ検索

開発したいものは、ありませんか?

ニケプソフトウェアラボではシステム構築やアプリケーション開発業務を請け負います。
詳細はこちらをご覧下さい。
御問い合わせはこちらまで
2004-2010 Shigeki Kaneko, all right reserved.