DvorakJ で、文字キーを Shift キーとして動作させることはできないかとの問い合わせを受けた*1。具体的には、右下にある文字キー[\]を Shift として使用したいとのことだ。たとえば、英数入力で [\] を押しながら [A] と [S] を順に打鍵すると、"AS" を大文字で出力するようになる。このような処理をレジストリを書き換えずに実現することが課題だ。
実行ファイルの DvorakJ を使用する限りでは、キー・フックの設定上、文字キーを上記のように動作することはできない。
しかし、DvorakJ のスクリプト版につぎのような設定を施せば、希望通りの動作を実現できる。
- DvorakJ のスクリプト版を取得する。DvorakJ の source フォルダにある ahk_source.zip を展開し、展開したファイルやフォルダを DvorakJ.exe が存在するフォルダにそのまま移動する。
- DvorakJ.ahk の 551 行目に以下のスクリプトを追記する
- AutoHotkey_L (unicode version) を導入する。AutoHotkey_L の "Get It" から "Unicode binaries" を選択する。ダウンロードしたファイル "AutoHotkey.exe" を展開し、DvorakJ.exe と同じフォルダに移動する。
- AutoHotkey.exe に DvorakJ.ahk をドラッグアンド・ドロップして、DvorakJ の スクリプト版を起動する
追記する設定はつぎのとおりだ。sc073、つまり [\] のキーを押し下げている状態で文字キーを打鍵すると、[Shift] + [文字]として処理するものである。
/* * 文字キー [\] / [_] を [Shift] のように動作させる * 新 JIS 配列用の設定 * * 2009-12-23 - blechmusik2の日記 * http://d.hatena.ne.jp/blechmusik2/20091223#c1279519208 * * 2010-07-20 - blechmusik2の日記 * http://d.hatena.ne.jp/blechmusik2/20100720/1279555514#c1279599459 */ sc073 & sc010:: ; q sc073 & sc011:: ; w sc073 & sc012:: ; e sc073 & sc013:: ; r sc073 & sc014:: ; t sc073 & sc015:: ; y sc073 & sc016:: ; u sc073 & sc017:: ; i sc073 & sc018:: ; o sc073 & sc019:: ; p sc073 & sc01A:: ; @ sc073 & sc01B:: ; [ sc073 & sc01E:: ; a sc073 & sc01F:: ; s sc073 & sc020:: ; d sc073 & sc021:: ; f sc073 & sc022:: ; g sc073 & sc023:: ; h sc073 & sc024:: ; j sc073 & sc025:: ; k sc073 & sc026:: ; l sc073 & sc027:: ; ; sc073 & sc028:: ; : sc073 & sc02B:: ; ] sc073 & sc02C:: ; z sc073 & sc02D:: ; x sc073 & sc02E:: ; c sc073 & sc02F:: ; v sc073 & sc030:: ; b sc073 & sc031:: ; n sc073 & sc032:: ; m sc073 & sc033:: ; , sc073 & sc034:: ; . sc073 & sc035:: ; / ;sc073 & sc073:: ; \ と _ sc_hex := GetScanCode_ThisCharKey("h") onKeyDown( "_" . sc_hex ) onKeyDown("_shift") return
DvorakJ の実行ファイルと同様、上記の設定を USB メモリで持ち運べる。追記した DvorakJ.ahk と各種設定ファイル*2、そして AutoHotkey_L の実行プログラムたる "AutoHotkey.exe" を一緒に持ち歩くことで、問い合わせどおりの処理を実現できる。
注意することは、上記の設定は同時に打鍵する配列か、順にも同時にも打鍵する配列においてのみ動作するということだ。月配列のような順に打鍵する配列では、正常に動作しない。順に打鍵する配列で上記のような設定を使用するならば、順にも同時にも打鍵する配列としてその配列を設定しなおすこと。
追記
DvorakJ を使用しつつ、特定の文字キーを Shift キーとして動作させる - blechmusik2の日記のyogotaro さんのコメントを受けて、記事を大幅に書き換えた。
*1:2009-12-23 - blechmusik2の日記の yogotaro さんのコメントを参照。
*2:DvorakJ 以下のフォルダにあるファイルすべてを指す。