上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- -- l スポンサー広告 l top
順に打鍵時においてバックスペースの挙動が定義できるようになったので設定ファイルを組もうと思ったが、余りにも複雑怪奇になりすぎたのでとりあえず組む前に整理してみようと思う
狙い
DvorakJPで現在タイプしている文字がIME上でひらがなとして出力されるまで、バックスペースしても適切なキーストロークを排出する
特にcを打ったあとBSで文字を消して打つときに前にタイプしたひらがなを上書きしてしまう事態を回避する


例1:「あい」と打ちたいとき
「あc」ーBS→「あ」ーi→「き」
例2:「こうりゃく」と打ちたいとき
「こうrg」ーBS→「こうrh」
など多数

ベースとなる配列表
DvorakJP(Cを常に出力する MS-IME 版)

最長タイプ数…4
cch(母音OR準母音)
という事で4文字タイプするかまたはひらがなが確定するまでは適切なキーマップを返すように設定したい


●単打
エンター、←キー、スペースキー、数字、記号、母音、準母音、{n}{n}
子音を全てBSキーで消した時
子音(Y)一文字BS,子音(Y)2文字BSBS,子音(Y)3文字BSBSBS,子音(Y)4文字BSBSBSBS
(数字、記号、母音、準母音は該当キーなし設定でまかなえそうだが、←、エンター、スペースキー打鍵時に単打に戻すには設定の必要がありそう。)


●準母音として扱うタイミング
子音,Y,Hグループ+H,Nグループ+N,C+HY,CC+HYN
子音+その他子音BS,子音+その他子音*2BSBS,子音+その他子音*3BSBSBS
Y+その他子音BS,Y+その他子音*2BSBS,Y+その他子音*3BSBSBS
Hグループ+H+その他子音BS,Hグループ+H+その他子音*2BSBS
Nグループ+N+その他子音BS,Nグループ+N+その他子音*2BSBS
C+HY+その他子音BS,C+HY+その他子音*2BSBS
CC+HYN+その他子音BS
(CCがらみとC+子音のどちらが優先されるか。一番処理が複雑になりそうな箇所)


●準母音かつhをyとして扱うタイミング
Hグループ
Hグループ+子音(Y)BS,Hグループ+子音(Y)*2BSBS,Hグループ+子音(Y)*3BSBSBS


●準母音かつnをyとして扱うタイミング
Nグループ
Nグループ+子音(Y)BS,Nグループ+子音(Y)*2BSBS,Nグループ+子音(Y)*3BSBSBS


●cの出力
{c}
{c}+子音(Y)BS,{c}+子音(Y)*2BSBS,{c}+子音(Y)*3BSBSBS


●ccの出力
cc
cc+子音(Y)BS,cc+子音(Y)*2BSBS


あとは内部の処理の問題
例えばC+子音(YやHを含む)とC+Yは競合した時にどちらが優先されるのかなど。



全く別件だが、設定を通して同時打鍵と順に打鍵を分ける必要性について考えてみた
DvorakJでは同時打鍵とはいえ、一つのキーを押してから指定時間以内に別のキーが押されたかという判断で判断している。
Shiftキーのように本当に同時に打鍵しているかどうかを判断するものではない
すると指定時間の制限を取っ払ったものが順に打鍵であると考えることができる
もしそうだとしたら、同時打鍵と順に打鍵をひとつのファイルで混在することが可能ではないか
あくまで推測の域をでないのでこれ以上何か言えるわけでもないが…

Shiftキーのような挙動を実現しようと思ったらキーを押したことと離したことを検知できなくてはならない。
おそらくこのソフトでは押したことだけを検知しているのでそういった扱いになっているのだろう
とはいえこの仕様はAutoHotkey_Lによるものだと思われるので、修正は難しいと推測される




2010.05.10 Mon l DvorakJ l コメント (1) トラックバック (0) l top

コメント

No title
こんばんは。

ご明察のとおり、同時に打鍵する配列と順に打鍵する配列を隔てるものは、制限時間内に規定のキーストロークを入力する仕様か否か、ということです。現在のところ、両者の処理は別個独立したものとなっています。
このふたつを融合させる作業を少しずつすすめています。同時に打鍵する配列を順に打鍵する配列のひとつとして組み込むことになるでしょう。

Shift キーのような動作、すなわち何かのキーを実際に押し下げているときに文字キーを打鍵するという動作を実現することは、実は簡単なのです。といいますのも、Shift キーのみ、私が意図的にあのような動作を実現させたのですから。
注意しなければならないことがあります。omine3 さんからの要望どおり実装すると問題が生じてしまうのです。同時に打鍵するために使用するキーを単独で使用するときは、キーを実際に押し上げねばなりません。たとえば、[無変換] を(ずっと)物理的に押し下げているときに、[無変換] + [A] を出力できるようにするとしましょう。すると、[無変換]を単独で使用したいときは、[無変換]を押すだけではなく、押し上げねばなりません。そこまでしないと、キーが単独で押されたとAutoHotkeyが判断しないのです。
そうはいっても、こういう動作をあえて望む方もいらっしゃいます。そこで、同時に打鍵する配列や順に打鍵する配列で、上記のような設定を使用するかどうかを選択できるようにする予定です。これは、直接入力用の配列でも、順に打鍵する配列を使用出来るよう改良したあとで実装する予定です。
2010.05.10 Mon l blechmusik. URL l 編集

コメントの投稿












トラックバック

トラックバック URL
http://omine3.blog119.fc2.com/tb.php/109-4b929101
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。