1キー3文字とは
1つのキーに3文字コードを割り当てます。 通常文字,左シフト文字,右シフト文字の三つの状態で入力します。 今回作るキーボードの要の機能です。
キーボードからコードを受け取り各状態における文字コードに変換する作業は、 本来ホスト(PC)側のデバイスドライバーで処理すべきことです。 仮想キー コードでも左右のシフトキーが判別できるのでアプリケーションでもOKかな。
でもキーボードを作るので、従来ドライバーに合わせてエミュレーション処理をさせて頂きます。
左手側のキーに右側に文字を追加、右手側のキーに左側に文字を追加しました。 文字の追加には色々意見があると思います。
なぜこの様にするのか、キーボードを小型化するのと右小指の割り当てを減らす事が目的です。 ついでに同時打鍵(親指シフト)も対応します。
us104キーボードを変更して上段の1から0のキーと-キーを3文字にしています。 これによって、幅が1キー分減っています。
アルファベットのキーには文字を追加していません。 左右のシフト状態とも同じ大文字にしています。 Caps Lockとの兼ね合いでエミュレーションが複雑にならない様にしています。
同時打鍵について
左右のシフトキーを使用して3文字入力するので特に必要はありません。 但し同時打鍵ができる方が良いと思います。
同時打鍵の代表格は、親指シフトキーボードです。 基本的な考え方は、同じですが英数時でも動作する点が違います。 親指シフトキーボードは、日本語入力時のみ機能します。 今回作るキーボードは、常時機能させることができます。
なぜ常時機能するのかと言うと同時打鍵のシフトキー側は、従来のシフトキーに成り代わる為です。 英字の大文字も同時打鍵で入力できます。
同時打鍵のためスペースバーを2分割しています。 単独打鍵では、どちらも空白を入力します。
同時打鍵がいらない場合は、長いスペースバーでも可能です。
NICOLA配列ではどうなるか は、また後で。
入力方法は?
通常打鍵(左右シフトキー入力)
通常打鍵、左シフトを押しながらの打鍵、右シフトを押しながらの打鍵の3種で文字を入力します。
同時打鍵
ピアノを弾く様に文字キーと空白キー(同時打鍵用シフトキー)を同時に押すことです。
左右の空白キーは、単独打鍵で空白を入力します。 左空白キーと右空白キーを同時に押し場合 左右何方かのシフト+空白となります。
同時打鍵は、下記の様に動作します。
- 左空白キー 文字キーと同時に押すと、左空白キーを離すまで左シフトキーとして機能します。
- 右空白キー 文字キーと同時に押すと、右空白キーを離すまで右シフトキーとして機能します。
同時打鍵の機能(空白キーをシフトキーに変更する機能)は、キーボード側で処理します。 OS側で処理すること出来ますが、同時打鍵しないキーボードと共用するためです。