Ctrlswapmini用の「濁点分離かな配列」……8面キーマップすべてを贅沢に使用。
(未来:「かえで携帯配列(仮)」と「濁点分離かな配列」の動作チェックを完了。)
(未来:Ctrlswapmini用の「濁点分離かな配列」Part2……8面キーマップすべてを贅沢に使用。)
Ctrlswapminiでは、(かなめくり・英字めくり・ベル打ち大文字・ベル打ち小文字・ニコタッチ大文字・ニコタッチ小文字・制御・数字直接入力……の都合8モードを実現するために)内部的に8面のキーマップを切り替えて使うことが出来ます。
切り替え方法は常に手動であり、「文字送出と同時に特定のキーマップヘ移行」というような組み合わせ定義が出来ないので、純粋ローマ字入力&携帯ローマ字入力の再現は無理です。
一方で、これらのキーマップはキー入力で直接切り替えることが出来ます。
……これを利用すると、「中指連続プレフィックスシフト」的なシフト方法による入力法が使える、ということになります。
また、文字めくりモードで「文字をめくれないように1文字のみキーに定義する」と、単打鍵でその文字が確定します。
……ということは、シフト用に2〜3キーを確保して、残りのキーを「単独打鍵でかな文字を出力」と定義していけば、「1打鍵系かな入力・連続シフト版」が設定可能だということになります。
キー数が12個しかなく、かつキーマップが8面しかないので、いわゆる「清濁混合配列(約90文字)」を連続シフト化するためのスペースはありません。
ところが、「清濁分離配列(63文字)」は、【9キー×7シフト】にちょうど収まってしまうんですよね……というわけで、無理やり配列を作成してみました。
Ct面(センターシフト面)は、「0」キーを押すことで選択されます。
どの面で「0」キーを押しても、かならずCt面へ移行します。
今どのシフトモードにあるのかがわからなくなってしまったときには、「0」を一回押してCt面に移動するのが一番確実です。
(あるいは後述する理由により、英字めくり面に入っていない状態であれば「*#」と押せばR1面へ、また「#*」と押せばL1面へと必ず移行します)
L1〜L3面は、「*」キーを押すことにより順次選択されます。
L1面で「*」キーを押すと、L2面へ移行します。
L2面で「*」キーを押すと、L3面へ移行します。
そのほかの面で「*」キーを押すと、かならずL1面へ移行します(英字めくり面を除く)。
R1〜R3面は、「#」キーを押すことにより順次選択されます。
R1面で「#」キーを押すと、R2面へ移行します。
R2面で「#」キーを押すと、R3面へ移行します。
R3面で「#」キーを押すと、R4面へ移行します。
そのほかの面で「#」キーを押すと、かならずR1面へ移行します(英字めくり面を除く)。
文字の順序については、新JISかな資料における頻度順をほぼそのまま採用しました。
ただし、「た←→の」入れ替えをすることにより、高頻度濁音の「がじだで」4文字をシフト換えなしに打てるようにしています。
また、濁点は「5」キーへと配置していますので、その関係でCt面の前半が1文字ずつずれています。
シフトモードの変移確率は「Ct+L1+R1」の1打鍵範囲内のみで十分に高くなっているため、この方法論を用いてうまく配列を設計すれば、2.0打鍵方式を超える文字入力効率を確保できる……かもしれません。
なお、今回は場当たり的にR4面(キーマップ7)へと「英字めくり」面を設けました。この面については英字めくりの最下段を若干いじるのみとなるので、今回は手抜き記述しています。
Ct面(キーマップ0)、初期状態
0:Ct | 列1 | 列2 | 列3 |
---|---|---|---|
D段 | い | う | ん |
C段 | し | ゛ | か |
B段 | た | と | て |
A段 | Go L1 | Go Ct | Go R1 |
L1面(キーマップ1)
1:L1 | 列1 | 列2 | 列3 |
---|---|---|---|
D段 | の | き | 、 |
C段 | く | は | に |
B段 | こ | る | ょ |
A段 | Go L2 | Go Ct | Go R1 |
R1面(キーマップ2)
2:R1 | 列1 | 列2 | 列3 |
---|---|---|---|
D段 | つ | せ | な |
C段 | っ | を | り |
B段 | す | け | 。 |
A段 | Go L1 | Go Ct | Go R2 |
L2面(キーマップ3)
3:L2 | 列1 | 列2 | 列3 |
---|---|---|---|
D段 | さ | あ | ち |
C段 | そ | れ | ゅ |
B段 | ら | ふ | よ |
A段 | Go L3 | Go Ct | Go R1 |
R2面(キーマップ4)
4:R2 | 列1 | 列2 | 列3 |
---|---|---|---|
D段 | も | お | ほ |
C段 | え | ま | め |
B段 | ひ | み | わ |
A段 | Go L1 | Go Ct | Go R3 |
L3面(キーマップ5)
5:L3 | 列1 | 列2 | 列3 |
---|---|---|---|
D段 | や | ・ | へ |
C段 | ゜ | ろ | ね |
B段 | ー | ゃ | む |
A段 | Go L1 | Go Ct | Go R1 |
R3面(キーマップ6)
6:R3 | 列1 | 列2 | 列3 |
---|---|---|---|
D段 | ゆ | 」 | 「 |
C段 | ぃ | ぬ | ぇ |
B段 | ぁ | ぉ | ぅ |
A段 | Go L1 | Go Ct | Go R4 |
R4面(キーマップ7)
7:R4 | 列1 | 列2 | 列3 |
---|---|---|---|
D段 | 英字めくり用 | 英字めくり用 | 英字めくり用 |
C段 | 英字めくり用 | 英字めくり用 | 英字めくり用 |
B段 | 英字めくり用 | 英字めくり用 | 英字めくり用 |
A段 | 英字めくり用 | Go Ct | 英字めくり用 |
……まじめに連接を考慮して配列設計するとなると、結構大変かもしれないですね……うーん。
で、とりあえず定義を書いてみた。
Ctrlswapminiを触ったことがある方ならば、上記のような説明を読むよりも定義を見るほうが解りやすいですよね……ということで、早速定義を書いてみました。
ただし、私はまだW-ZERO3[es]を持っていませんので、Ctrlswapminiにこの定義を読ませたとして「本当に動くかどうか」は解りません。参考定義としてお読みいただく程度にとどめていただければ幸いです。
なお、この定義はCtrlswapmini作者様の標準定義を弄る形で作成させていただきました。
# 2006 Hiroyuki Ogasawara # http://hp.vector.co.jp/authors/VA004474/wince/wince.html # キーマップ制作:相沢かえで # http://d.hatena.ne.jp/maple_magician/ # # ctrlswapmini MultiShiftKanaTable.txt # ## ## 以下の配列案(暫定仕様)をctrlswapmini用に定義してみました。 ## http://d.hatena.ne.jp/maple_magician/20061013/1160666052 ## ## ## 英字入力については、標準的な「英字めくり入力」を使います。 ## かな入力については、「多面連続シフトかな配列」を使います。 ## ## この配列は、Ctrlswapminiが持つ仕掛けを素直に用いつつ、 ## 考え方・見方を変えるだけで風変わりな入力方法を実装できる ## ことを示すためのサンプルに過ぎません。 ## ## 覚えやすさ・打ちやすさについては一切考慮していませんし、 ## 文字の並べ替えを行う最適化計算をすれば確実に良くなる余地がある ## という状態ですので、実用配列として使うにはお勧めしません。 ## #------------------------------------------------------------------------------ # symbol →標準定義のまま。 #------------------------------------------------------------------------------ ## ここではわかりやすいように数値に名前を定義しています # key defcode SPACE '\x20' defcode RETURN '\x0d' defcode ; '\xba' # VK_SEMICOLON [;:] = [;+れ] defcode ^ '\xbb' # VK_EQUAL [=+] = [^~へ] defcode , '\xbc' # VK_COMMA [,<] = [,<ね] defcode - '\xbd' # VK_HYPHEN [- ] = [-=ほ] defcode . '\xbe' # VK_PERIOD [.>] = [.>る] defcode / '\xbf' # VK_SLASH [/?] = [/?め] defcode @ '\xc0' # VK_BACKQUOTE [`~] = [@`゛] 濁点 defcode [ '\xdb' # VK_LBRACKET [[{] = [[{゜] 半濁点 defcode \ '\xdc' # VK_BACKSLASH [\|] = [\|ー] defcode ] '\xdd' # VK_RBRACKET }] = }む] defcode : '\xde' # VK_APOSTROPHE ['"] = [:*け] defcode _ '\xe2' # VK_OEM_102 [<>] = [ _ろ] defcode KANJI '\x19' defcode ZSPACE '\xe5' # VK_PROCESSKEY # VK defcode VK_TAB '\x09' defcode VK_RETURN '\x0d' defcode VK_SHIFT '\x10' defcode VK_CONTROL '\x11' defcode VK_KANA '\x15' defcode VK_KANJI '\x19' defcode VK_PRIOR '\x21' defcode VK_NEXT '\x22' defcode VK_END '\x23' defcode VK_HOME '\x24' defcode VK_LEFT '\x25' defcode VK_UP '\x26' defcode VK_RIGHT '\x27' defcode VK_DOWN '\x28' defcode VK_LWIN '\x5b' defcode VK_RWIN '\x5c' defcode VK_APPS '\x5d' defcode VK_F1 '\x70' # SoftKey1 defcode VK_F2 '\x71' # SoftKey2 defcode VK_F3 '\x72' defcode VK_F4 '\x73' defcode VK_F5 '\x74' defcode VK_F6 '\x75' defcode VK_F7 '\x76' defcode VK_F8 '\x77' defcode VK_F9 '\x78' defcode VK_F10 '\x79' defcode VK_F11 '\x7a' defcode VK_F12 '\x7b' defcode VK_HANZEN '\xf3' # char attribute defcode ASCII '\x08' defcode KANA '\x01' defcode SHIFT '\x02' defcode DAKUTEN '\x10' defcode HANDAKUTEN '\x20' # command defcode MODECHANGE '\x1' defcode IME '\x2' defcode STATECLEAR '\x3' defcode KEYMAP '\x4' defcode CMD_CONVERT '\x5' defcode CMD_RCONVERT '\x6' # raw defcode DOWN '\x1' defcode UP '\x2' # key function defcode nop '\x0' defcode bell '\x1' defcode toggle '\x2' defcode reverse '\x3' defcode convert '\x4' defcode rconvert '\x5' # keymap #defcode bell_normal '\x0' #defcode bell_small '\x1' #defcode niko_normal '\x2' #defcode niko_small '\x3' #defcode ext_kana '\x4' #defcode ext_alphabet '\x5' #defcode rotate_cur '\x6' #defcode rotate_num '\x7' defcode Ct '\x0' defcode L1 '\x1' defcode R1 '\x2' defcode L2 '\x3' defcode R2 '\x4' defcode L3 '\x5' defcode R3 '\x6' defcode R4 '\x7' # (2006年10月15日2:49:40、上記#keymapを8行コメントアウトし書き換え) #------------------------------------------------------------------------------ # ex toggle kana →新JISかな頻度順の多面連続シフトかな配列化。 #------------------------------------------------------------------------------ ## ここからが拡張かな入力用の定義になります。 ## 各キー毎にトグル入力される文字を記述します。 ## attach は[*]で変換される文字を表します。 Keymap Ct Key toggle # [1] char KANA E # い Key toggle # [2] char KANA 4 # う Key toggle # [3] char KANA Y # ん Key toggle # [4] char KANA D # し Key toggle # [5] attach KANA @ # 濁点 Key toggle # [6] char KANA T # か Key toggle # [7] char KANA Q # た Key toggle # [8] char KANA S # と Key toggle # [9] char KANA W # て Key toggle # [*] command KEYMAP L1 # 切り替え Key toggle # [0] command KEYMAP Ct # 切り替え Key toggle # [#] command KEYMAP R1 # 切り替え Keymap L1 Key toggle # [1] char KANA K # の Key toggle # [2] char KANA G # き Key toggle # [3] char KANA SHIFT , # 、 Key toggle # [4] char KANA H # く Key toggle # [5] char KANA F # は Key toggle # [6] char KANA I # に Key toggle # [7] char KANA B # こ Key toggle # [8] char KANA . # る Key toggle # [9] char KANA SHIFT 9 # ょ Key toggle # [*] command KEYMAP L2 # 切り替え Key toggle # [0] command KEYMAP Ct # 切り替え Key toggle # [#] command KEYMAP R1 # 切り替え Keymap R1 Key toggle # [1] char KANA Z # つ Key toggle # [2] char KANA P # せ Key toggle # [3] char KANA U # な Key toggle # [4] char KANA SHIFT Z # っ Key toggle # [5] char KANA SHIFT 0 # を Key toggle # [6] char KANA L # り Key toggle # [7] char KANA R # す Key toggle # [8] char KANA : # け Key toggle # [9] char KANA SHIFT . # 。 Key toggle # [*] command KEYMAP L1 # 切り替え Key toggle # [0] command KEYMAP Ct # 切り替え Key toggle # [#] command KEYMAP R2 # 切り替え Keymap L2 Key toggle # [1] char KANA X # さ Key toggle # [2] char KANA 3 # あ Key toggle # [3] char KANA A # ち Key toggle # [4] char KANA C # そ Key toggle # [5] char KANA ; # れ Key toggle # [6] char KANA SHIFT 8 # ゅ Key toggle # [7] char KANA O # ら Key toggle # [8] char KANA 2 # ふ Key toggle # [9] char KANA 9 # よ Key toggle # [*] command KEYMAP L3 # 切り替え Key toggle # [0] command KEYMAP Ct # 切り替え Key toggle # [#] command KEYMAP R1 # 切り替え Keymap R2 Key toggle # [1] char KANA M # も Key toggle # [2] char KANA 6 # お Key toggle # [3] char KANA - # ほ Key toggle # [4] char KANA 5 # え Key toggle # [5] char KANA J # ま Key toggle # [6] char KANA / # め Key toggle # [7] char KANA V # ひ Key toggle # [8] char KANA N # み Key toggle # [9] char KANA 0 # わ Key toggle # [*] command KEYMAP L1 # 切り替え Key toggle # [0] command KEYMAP Ct # 切り替え Key toggle # [#] command KEYMAP R3 # 切り替え Keymap L3 Key toggle # [1] char KANA 7 # や Key toggle # [2] char KANA SHIFT / # ・ 中点 Key toggle # [3] char KANA ^ # へ Key toggle # [4] attach KANA [ # 半濁点 Key toggle # [5] char KANA _ # ろ Key toggle # [6] char KANA , # ね Key toggle # [7] char KANA \ # ー 伸ばし棒 Key toggle # [8] char KANA SHIFT 7 # ゃ Key toggle # [9] char KANA ] # む Key toggle # [*] command KEYMAP L1 # 切り替え Key toggle # [0] command KEYMAP Ct # 切り替え Key toggle # [#] command KEYMAP R1 # 切り替え Keymap R3 Key toggle # [1] char KANA 8 # ゆ Key toggle # [2] char KANA SHIFT ] # [79] 」 Key toggle # [3] char KANA SHIFT [ # [76] 「 Key toggle # [4] char KANA SHIFT E # ぃ Key toggle # [5] char KANA 1 # ぬ Key toggle # [6] char KANA SHIFT 5 # ぇ Key toggle # [7] char KANA SHIFT 3 # ぁ Key toggle # [8] char KANA SHIFT 6 # ぉ Key toggle # [9] char KANA SHIFT 4 # ぅ Key toggle # [*] command KEYMAP L1 # 切り替え Key toggle # [0] command KEYMAP Ct # 切り替え Key toggle # [#] command KEYMAP R4 # 切り替え #------------------------------------------------------------------------------ # ex toggle alphabet →「0」の内容を「*」に移動、「0」はCtへのジャンプ。 #------------------------------------------------------------------------------ Keymap R4 Key toggle # [1] char ASCII . # . char ASCII / # / char ASCII SHIFT _ # _ char ASCII @ # @ char ASCII 1 # 1 Key toggle # [2] char ASCII SHIFT A # A attach ASCII A # a char ASCII SHIFT B # B attach ASCII B # b char ASCII SHIFT C # C attach ASCII C # c char ASCII A # a attach ASCII SHIFT A # A char ASCII B # b attach ASCII SHIFT B # B char ASCII C # c attach ASCII SHIFT C # C char ASCII 2 # 2 Key toggle # [3] char ASCII SHIFT D # D attach ASCII D # d char ASCII SHIFT E # E attach ASCII E # e char ASCII SHIFT F # F attach ASCII F # f char ASCII D # d attach ASCII SHIFT D # D char ASCII E # e attach ASCII SHIFT E # E char ASCII F # f attach ASCII SHIFT F # F char ASCII 3 # 3 Key toggle # [4] char ASCII SHIFT G # G attach ASCII G # g char ASCII SHIFT H # H attach ASCII H # h char ASCII SHIFT I # I attach ASCII I # i char ASCII G # g attach ASCII SHIFT G # G char ASCII H # h attach ASCII SHIFT H # H char ASCII I # i attach ASCII SHIFT I # I char ASCII 4 # 4 Key toggle # [5] char ASCII SHIFT J # J attach ASCII J # j char ASCII SHIFT K # K attach ASCII K # k char ASCII SHIFT L # L attach ASCII L # l char ASCII J # j attach ASCII SHIFT J # J char ASCII K # k attach ASCII SHIFT K # K char ASCII L # l attach ASCII SHIFT L # L char ASCII 5 # 5 Key toggle # [6] char ASCII SHIFT M # M attach ASCII M # m char ASCII SHIFT N # N attach ASCII N # n char ASCII SHIFT O # O attach ASCII O # o char ASCII M # m attach ASCII SHIFT M # M char ASCII N # n attach ASCII SHIFT N # N char ASCII O # o attach ASCII SHIFT O # O char ASCII 6 # 6 Key toggle # [7] char ASCII SHIFT P # P attach ASCII P # p char ASCII SHIFT Q # Q attach ASCII Q # q char ASCII SHIFT R # R attach ASCII R # r char ASCII SHIFT S # S attach ASCII S # s char ASCII P # p attach ASCII SHIFT P # P char ASCII Q # q attach ASCII SHIFT Q # Q char ASCII R # r attach ASCII SHIFT R # R char ASCII S # s attach ASCII SHIFT S # S char ASCII 7 # 7 Key toggle # [8] char ASCII SHIFT T # T attach ASCII T # t char ASCII SHIFT U # U attach ASCII U # u char ASCII SHIFT V # V attach ASCII V # v char ASCII T # t attach ASCII SHIFT T # T char ASCII U # u attach ASCII SHIFT U # U char ASCII V # v attach ASCII SHIFT V # V char ASCII 8 # 8 Key toggle # [9] char ASCII SHIFT W # W attach ASCII W # w char ASCII SHIFT X # X attach ASCII X # x char ASCII SHIFT Y # Y attach ASCII Y # y char ASCII SHIFT Z # Z attach ASCII Z # z char ASCII W # w attach ASCII SHIFT W # W char ASCII X # x attach ASCII SHIFT X # X char ASCII Y # y attach ASCII SHIFT Y # Y char ASCII Z # z attach ASCII SHIFT Z # Z char ASCII 9 # 9 Key convert # [*] char ASCII SPACE # SPC char ASCII SHIFT 4 # $ char ASCII SHIFT 5 # % char ASCII SHIFT ; # + char ASCII SHIFT , # < char ASCII SHIFT - # = char ASCII SHIFT . # > char ASCII [ # [ char ASCII ] # ] char ASCII ^ # ^ char ASCII SHIFT 7 # ' char ASCII SHIFT [ # { char ASCII SHIFT \ # | char ASCII SHIFT ] # } char ASCII 0 # 0 Key toggle # [0] command KEYMAP Ct # 切り替え Key reverse # [#] char ASCII - # - char ASCII SHIFT 6 # & char ASCII \ # \ char ASCII ; # ; char ASCII : # : char ASCII SHIFT 2 # " char ASCII SHIFT 7 # ' char ASCII SHIFT 9 # ) char ASCII SHIFT 8 # ( char ASCII SHIFT ^ # ~ char ASCII SHIFT / # ? char ASCII SHIFT 1 # ! char ASCII . # . char ASCII , # , ## convert や reverse は、toggle と同じように記述することで ## 文字入力キーとして併用することができます。 ## 変換文字がない場合に文字入力します。 ## toggle で action が 1つしかない場合は、 ## 1回押しただけで反応する直接入力キーとして機能します。