blechmusikの日記

いろいろなことを書いています。

下駄配列の実装が完了しました

お知らせ

DvorakJに下駄配列*1の実装が完了しました。以下のウェブページにて DvorakJ の最新版を公開しています。

これにより、USBメモリに DvorakJ を入れて持ち運べば、Dvorak 配列と下駄配列をどこでもすぐに併用できます。


後日追記:
Dvorak配列なんて使用したくないという方へ。以下のものをご使用ください。

下駄配列をQWERTY配列のまま使用できます。これは2ちゃんねるの下駄配列スレにて公開されていたスクリプトをコンパイルしたものです*2
その他ウェブページでも、下駄配列を実装したフリーウェアが公開されています。

AutoHotkey により作成したようです。AutoHotkeyって本当に便利なソフトウェアですね。


以下、下駄配列の実装にあたり気づいた点などを書き残しておきます。

下駄配列の実装と塗り下駄配列の実装上の差異

DvorakJ には下駄配列の派生である塗り下駄配列を以前から実装していました。それは、2ちゃんねるの下駄配列スレ*3で公開されていたAutoHotkey*4用スクリプトを基礎としました。
今回の下駄配列の実装は、塗り下駄配列の文字の定義部分を変更しただけのものです。よって、同時打鍵の判定は塗り下駄配列のものとなんら変わりません。

同時打鍵の判定時間の設定

2ちゃんねるの下駄配列スレで公開されていたAutoHotkey用スクリプトは、同時打鍵の判定時間をあらかじめ設定しておくものでした。
DvorakJではウィンドウ内のスライダーで同時打鍵の判定時間を調節できるようにしました*5。直接数字を入力することもできます。

英字モードで出力するしかない記号を、ひらがななどのモードで出力する方法

AutoHotkeyIMEの状態を取得したり変更するには、IME.ahkを利用すればよいでしょう。様々ウェブサイトで言及されているIME_Func.ahkよりも新しいものです。最新版は「AutoHotokeyを流行らせるアップローダ」*6の「089.zip」に収録されています。

下駄配列では、「,」「.」「\」の三つの記号を未確定状態で出力させます。この三つの記号は、「英数モード」でなければ、未確定状態では出力できません。よって、これらの記号をAutoHotkeyで未確定状態で出力させるには、つぎのようにします。

第1段階
ひらがななどのモードから英数モードに切り替えます
第2段階
「,」「.」「\」を出力します
第3段階
ひらがななどのモードに戻します

第1段階の切り替えでは、IME.ahkIME_SetConvMode(ConvMode,WinTitle="")を使用します。その前に、第3段階のために、あらかじめ現在の設定を保存しておきましょう。IME_GetConvMode(WinTitle="")で、現在の設定を取得できます。
第2段階の処理はただ出力するだけですね。
問題は第3段階の処理です。これを第2段階の処理と同一のスレッドで行うことはできません。よって、第3段階の処理は、第2段階とは別個のスレッドにより実現することとします。DvorakJでは、0.1秒ごとにIMEが有効か無効かを判定していますので、この処理のついでに、ひらがななどのモードに戻すよう設定しました。


これらの処理により、下駄配列の記号の設定をDvorakJにそのまま実装しました。

下駄配列の実装はかな入力をもととする?それともローマ字入力をもととする?

IME.ahkでは、かな入力とローマ字入力の切り替えのみならず、全角や半角の切り替えも簡単にできます。よって、AutoHotkeyでは日本語入力の状態を簡単に切り替えることができます。
では、下駄配列の実装はかな入力をもととした方がよいのでしょうか。それともローマ字入力をもととした方がよいのでしょうか。
かな入力をもととすれば、「か」と「゛」で「が」を出力できるようになります。ローマ字入力をもととしたらそのような芸当はできません。その一方、数字と記号の出力はローマ字をもととした方が処理が遙かに簡単です。
下駄配列では、月配列のいわゆる2-263版*7とは異なり、あえて濁点と半濁点の記号を単独で使用する必要性はありません。そこで、DvorakJではローマ字入力をもととして下駄配列を実装しました。

かな入力とローマ字入力の差異の考察――配列の実装の側面から

DvorakJPや塗り下駄配列をDvorakJに実装しているときに以下のことを考えていました。それは、このシフトの状態を保持するのはいつまでか、そしてこのシフトの状態でこのキーを押すと何が出力されるのだろうか、ということです。ここでいうシフトという語句を定義するならば、次のキーの入力により文字をはじめて出力する設定、といったところでしょうか。
かな入力であれローマ字入力であれ、通常のキーボードを使用する限り、すべての文字を出力することはできません。結局のところ、配列の実装の側面からかな入力とローマ字入力を定義し直せばつぎのようにいえるでしょう。ローマ字入力とは、単打で出力できるひらがなが「あいうえお」に限ります。一方、かな入力とは、単打で出力できるひらがなが「あいうえお」に限りません。
要は、AutoHotkeyで何かしらの配列を実装するときには、かな入力用の配列かローマ字入力用の配列かということはあまり気にせず、シフトの状態に気を配ればよろし、ってことです。

*1:"下駄配列って何だ?" < http://urawa.cool.ne.jp/kou-y/geta.html >

*2:http://p2.chbox.jp/read.php?url=http%3A//pc11.2ch.net/test/read.cgi/pc/1201883108/199

*3:"pc / 快適!下駄配列その1" < http://p2.chbox.jp/read.php?host=pc11.2ch.net&bbs=pc&key=1201883108&ls=l50 >

*4:"AutoHotkey - Free Mouse and Keyboard Macro Program with Hotkeys and AutoText" < http://www.autohotkey.com/ >

*5:"Gui,Add,Slider" < http://lukewarm.s101.xrea.com/commands/Gui_Add_Slider.html >

*6:http://lukewarm.s101.xrea.com/up/

*7:"「月」 --- 中指シフト新JIS配列"