Network Users' Group ``wheel'' / Dai ISHIJIMA's Page / SL Zaurus関連 /
SKGをハックしてみる

初版: 2003/02/21
最終更新日: 2003/02/21


SKGをハックしてみる



☆はじめに

UNIX系OSで使うお気に入りのエディタは、 「SLザウルス向けNgをコンパイル」で紹介した Emacs互換の軽快なスクリーンエディタである「Ng」です。 このエディタは、SLザウルスで使うには、 Ctrlキーを多用するといった点で問題がありましたが、 「PS/2キーボードをSLザウルスにつなぐ」 ことができるようになって、 Happy Hacking Keyboardで使ってみると非常に快適に使えます。

Ngが快適に使えるようになると、さらに欲が出てくるもので、 軽快さをそこなわずに日本語の入力もできないものかと感じるようになりました。

幸い、Ng-1.4.3には「SKG」という「SKK」ライクな 日本語入力システムが付属しています。 そこで、ローマ字→かな変換のルールをチューニングしたり、 キーバインディングを変更したりして、 より「手に馴染む」ようにQuick&Dirty Hackをしてみました。


☆ローマ字→かな変換

SKGを使って、最初に気になったのは、このローマ字→かな変換です。 たとえば、「漢字変換」という文字列を入力したいとき、 普段使ってる(SKGではない)システムでは、
	k a n j i h e n k a n [SPC]
のように入力します。しかし、SKGでは、
	k a n n j i h e n n k a n n [SPC]
と「ん」のために「nn」と入力する必要がありました。 子音の前に「n」が一つだけあったら、「ん」に変換してほしいのですが、 あいにくそのようにはなっていませんでした。

幸い、SKGのローマ字変換ルールは 「SKG-ROMAN」というファイルに記述することになってますので、 これに手を入れるだけで、この問題の大部分を解決できます。 それは、たとえば、このファイルの

	ka か
	ki き
	ku く
	ke け
	ko こ
となっている部分を
	ka か
	nka んか
	ki き
	nki んき
	ku く
	nku んく
	ke け
	nke んけ
	ko こ
	nko んこ
のようにします。もちろん、すべてのルールについて「手で」、 『「n+子音」は「ん」を付加する』というのを追加していくのは アホらしいですが、こんなのはperl一発か、エディタのコピーと置換で 機械的に処理できますから(笑)。

ここまで処理すると、「漢字変換」と入れるときには、

	k a n j i h e n k a n n [SPC]
とタイプすればいいことになります。 最後だけ「n」の二度押しが必要ですが、 これはローマ字変換ルールの記述だけでうまくやる方法がわからなかったので、 skg.cに手を入れて解決しました。


☆キーバインディング

日本語入力モードの切り替えは「C-\」のトグル式が好みなんですが、 デフォルトではSKGの起動は「ESC C-k」、 SKGの終了は「C-g」です。 起動に関しては、設定ファイル「.ng」に
	(global-set-key "\^\\" 'skg-input)
と書けばよいのですが、終了キーはskg.cの450行目あたりに ハードコーディングされています。

また、カタカナを入力したいときは、 ローマ字を大文字で入力するという仕様になってますが、 これも、とりあえずひらがなで入力したあとで、 「C-n」や「C-p」で「後から変換」するのがわたしの手には馴染んでいます。 これは、『「C-n」を押したら 「バッファに入ってるローマ字の大文字小文字を入れ換える」 という処理』を追加することで解決しました。

こういった変更を加えたのが、 ng143-skg-hack.patch という パッチです。


☆コンパイル済みバイナリその他