やりたいこと
日本語キーボードの円記号(¥)を入力したら円記号(¥, U+00A5)
バックスラッシュ(\)を入力したらバックスラッシュ記号(\, U+005C)
を入力できるようにしたい。
Linux コンソールの場合
環境変数 LANG
UTF-8 を使用するシフトJISやEUC-JPでは円記号とバックスラッシュ記号の両方を同時に扱うことはできない。
(扱おうとしているから、あちこちで問題が起きているw)
両方を扱えるように、 ja_JP.UTF-8 あるいは en_US.UTF-8 などを使うことになる。
設定ファイル
日本語キーボードを使う場合は、通常 jp106 を次のファイルに設定する。
RedHat系
設定ファイル: /etc/sysconfig/keyboard
KEYTABLE="jp106"
参照キーマップファイル
/lib/kbd/keymaps/i386/qwerty/jp106.map.gz
Gentoo
しかし、このままでは円記号を入力してもバックスラッシュが入力され表示される。
設定ファイル: /etc/conf.d/keymaps
keymap="jp106"
参照キーマップファイル
/usr/share/keymaps/i386/qwerty/jp106.map.gz
その理由は、jp106 のキーマップファイル(jp106.map.gz)にある。
keycode = 124 backslash bar
円記号のキーコードがバックスラッシュとして定義されている
おそらく、これも EUC-JP がメインだった時代の歴史的な理由からこうなっていると思われる。
解決策
キーマップファイルを書き換える。
keycode = 124 yen bar
jp109.map.gz として保存し、新しいキーマップをロード
loadkeys jp109
問題なければ設定ファイルを jp109 で書き換える
Gentoo (kernel 3.8.13) |
CentOS 6.4 |
参考サイト
maoeのブログ - コンソールのキーマップ変更