hakeの日記

Windows環境でプログラミングの勉強をしています。

徒然に

  • dipusさんトコでRuby1.8.4-5が公開されてます。multibyte関連でreadlineを作り直したとのコト、後で自前のRubyも同じように直してみよう。
  • あさあさみっくさんがIRC用のRubyスクリプトを設計されています。ソフト設計もこうやって手順を踏んで行うものなんだなぁと関心してしまいます。自分の場合、オブジェクト指向の意味も良く知らずに思いつきで書き始めて、結局、1個の巨大クラスとサブルーチン的な意味しかないメソッドでグダグダな内容になってしまうので反省することしきりです(^^ゞ

X/Qt - キーの入れ替え

Fn+O、Fn+PでBrace「{ }」を入力させるようにする設定について。とりあえずKeyHelperで何もしない場合について設定してみる。といってもX上でどうやったら良いのか検討も付かないのでX/Qt関連のページを見てまわったら、どうやらxmodmapというものを使用するらしい。ググったところ、こんなページをみつけた。
早速xevを起動してFn+O、Fn+Pのキーコードをみると142と143であることがわかった。xmodmap -pkeの出力をみるとこのキーコードには何も定義されていないので~/.Xmodmapというファイルを作って

keycode 142 = braceleft
keycode 143 = braceright

として、~/.xinitrc内でxmodmap ~/.Xmodmap させるように記述。X/Qtを再起動させると見事Braceが入力できるようになった。


この状態でKeyHelper側の設定を有効にするとBraceが入力できなくなる、ま、キーコードが違うんだから当然といえば当然な話。このときのコードをxevでみるとControl+Shift+不等号になっている、KeyHelper.xmlで設定しているとおり。xmodmapの出力をみるとLess(Greater)のShift付きはちゃんとBraceになっている。ということはControlが邪魔してる?
ならば、この状態でQtでのBraceのコードはどうなっているかとKeyHelperConfでみるとControlが押されていない。ということでkeyhelper.xmlの該当部分をControlなしに書き換えてみる

<define code="2015">
	<map key="Less"/>
	<map_modifier Shift="On"/>
</define>
<define code="2016">
	<map key="Greater"/>
	<map_modifier Shift="On"/>
</define>

そしたらちゃんとBraceが入力できるようになったよ、もちろんQtのアプリ上でもOK。というわけでSL-C3000のKeyHelperの設定をそのままSL-C860に持ってきて使用したのがマズかったらしいですね。結局xmodmapの設定は不要になってしまったけど、キー入れ替えの勉強にはなりました。
あ、でもSL-C3000X/Qt-2を使用するときには上手くいかないのかもしれないなぁ。

xmodmapの参考

UNIXの部屋(http://x68000.q-e-d.net/~68user/unix/