真の同時押し

大岡さんのブログ「大岡俊彦の作品置き場」ではキーの同時打鍵に関連して「真の同時押し」という言葉がまれによく使われることがあって、いまいち意味がピンときていなかったのですが、「【薙刀式】「同時押し」という用語の混乱と整理」や「【薙刀式】「でき」と相互シフト」という記事を読んで、ようやく理解ができました。

筆者は「2つのキーが押下されている時間帯に重なりがある」状態を「同時押し」というのだと思っており、それを疑うことがなかったのです。なので、その状態をさらに超える「真」の状態とは何ぞや、となっていたわけですが、分かってみれば何のことはない、この「押下されている時間帯に重なりがある」状態を「真の同時押し」と呼んでいるだけのことだったのです。

真の同時押し

「真の同時押し」というのは、元は DvorakJ の用語のようです。じゃあ単なる「同時押し」は何かというと、「ある決められた時間内に複数のキーが押されること」。たとえば「100msec以内は同時打鍵」という条件のもとで、「Aというキーが押された後、80msec後にBというキーが押された」というようなケース。

ここでキモなのは、「押された時刻」だけしか関知していないこと。キーが離されるタイミングは無視されていることです。なので、下図のようなケースも「同時押し」として扱われることになるわけです。

重なりのない同時押し

NIKOLA(いわゆる「親指シフト」)も上図のような「同時押し」が規格となっているようです。(「【薙刀式】「同時押し」という用語の混乱と整理」のコメント欄参照)

ただ大岡さんによると、この「同時押し」は、いろいろと制約時間の調整をしたけどなじめなかったとのこと。結局「真の同時押し」を採用することに落ち着いたようです。

筆者は、冒頭にも書いた通り、「2つのキーが押下されている時間帯に重なりがある」状態を同時押しだと考えていたので、漢直WS (筆者が作成して公開している、漢直・かな入力用のエミュレータ)では、上図のような「重なりのない同時押し」は扱えません。でもそれは大した問題にはならないだろうと考えています。おそらく「同時打鍵」を意識して2つのキーを打つときは、たいていは押下時間帯に重なりができるだろうと思われるからです。

もし「重なりのない同時押し」も必要なのであれば、同時打鍵による配列の他に、親指シフトキーなどを第1打鍵とする複数ストロークの順次打鍵配列も定義しておくこともできます。

実際、筆者が現在使用している「のにいると」配列は、スペースキーによる同時打鍵方式と、スペースキーによる前置方式を併用しています。打鍵列によっては、スペースキーとの同時打鍵よりも、スペースキーを打鍵してから文字キーを打鍵する順次打鍵によるシフトのほうが打鍵のタイミングが取りやすかったりするためです。

参考までに現在の「のにいると」の定義を載せておきます。漢直WSでは同じ構造を持つ配列を複数の箇所で参照するための記法を用意しています。ここには

-40>{
#load CENTER_SHIFT
}

という記述が2回出てきますが、 "#combination successive" ~ "#end combination" で囲まれているのが同時打鍵、何もないほうが順次打鍵となります。

;; 単打ひらがな
{
    1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |  0 | "-" | "^" || た || て || め || ら || さ || は || の || っ || る || と || り || が || こ || ま || を |
  " " |
  
  -48>"/"
}

#store CENTER_SHIFT
   ! |    | の ||    |    |    || ) || ー ||
   ぎ || じ || ぐ || そ || よ ||
   ふ || 。 || ろ || や || え ||
   ぜ || み || げ || ず || ゆ ||
   
  -1>"「」!{Left}"
#end store

#store LEFT_SHIFT
      |    |    |    |    |    |    |    |    |    |
      |    |    |    |    || ぞ || ょ ||
      |    |    |    |    || ゃ || ぇ ||
      |    |    |    |    || ぬ || ゅ ||
#end store

#store LEFT_SHIFT2
      |    |    |    |    |    |    |    |    |    |
      |    |    |    |    || ぞ ||にょ||
      |    |    |    |    ||にゃ|| ぇ ||
      |    |    |    |    || ぬ |    |にゅ||

  -$,>ません
#end store

#store RIGHT_SHIFT
      |    |    |    |    |    |    |    |    |    |
      || じ || ※ |    |    |    |    |    |
   ぶ || ー ||    |    |    |    |    |    |
   ※ || ぁ ||    |    |    |    |    |    |

#ignoreWarning overwrite
   -T>ください
#end store

#store RIGHT_SHIFT2
      |    |    |    |    |    |    |    |    |    |
      || じ ||    |    |    |    |    |    |
   ぷ || ぃ ||    |    |    |    |    |    |
      || ぁ ||    |    |    |    |    |    |
#end store

;; 3→「う」
&$3>{
      |    |    |    |    |    |    |    |    |    |
      |    |    |    |    |めう|かう|らう|れう|さう|
      |    |    |    |    |っう|いう|るう|なう|とう|
      |    |    |    |    |こう|すう|まう|もう|をう|
}

%$3>{
      |    |    |    |    |    |    |    |    |    |
      |    |    |    |    |うめ|うか|うら|うれ|うさ|
      |    |    |    |    |うっ|うい|うる|うな|うと|
      |    |    |    |    |うこ|うす|うま|うも|    |
}

;; センターシフト

#combination successive
-40>{
#load CENTER_SHIFT
}

#end combination

;; Space前置
-40>{
#load CENTER_SHIFT
  -40>" "
}

#combination
-40,d>{
#load LEFT_SHIFT
}

-40,d,f>{
#load LEFT_SHIFT2
}

-40,k>{
#load RIGHT_SHIFT
}

-40,k,j>{
#load RIGHT_SHIFT2
}

-40,J,I>いう
-40,L,$;>など
-40,N,P>ござ
-40,Q,J>きゃ
-40,Q,$.>きゅ
-40,Q,L>きぇ
-40,Q,O>きょ
-40,W,J>ぎゃ
-40,W,$.>ぎゅ
-40,W,L>ぎぇ
-40,W,O>ぎょ
-40,E,J>しゃ
-40,E,$.>しゅ
-40,E,L>しぇ
-40,E,O>しょ
-40,E,O,I>しょう
-40,R,J>じゃ
-40,R,$.>じゅ
-40,R,L>じぇ
-40,R,O>じょ
-40,V,J>ちゃ
-40,V,$.>ちゅ
-40,V,L>ちぇ
-40,V,O>ちょ
-40,A,J>ひゃ
-40,A,$.>ひゅ
-40,A,L>ひぇ
-40,A,O>ひょ
#-40,S,J>びゃ
#-40,S,$.>びゅ
#-40,S,L>びぇ
#-40,S,O>びょ
-40,C,J>みゃ
-40,C,$.>みゅ
-40,C,L>みぇ
-40,C,O>みょ
-40,X,J>りゃ
-40,X,$.>りゅ
-40,X,L>りぇ
-40,X,O>りょ

#end combination

この記事が気に入ったらサポートをしてみませんか?