-->

Thursday, July 11, 2013

円記号とバックスラッシュを区別して入力したい - Linux コンソール編

やりたいこと

日本語キーボードの
円記号(¥)を入力したら円記号(¥, 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のブログ - コンソールのキーマップ変更

No comments:

Post a Comment