原因は最後に書きます。
まず解決方法です。
KE-complex_modifications-NAGINATA/src/json/japanese_naginata.json.rb
の899行目ごろからの shift_key() の定義を
def shift_key(key, char)
{
'type' => 'basic',
'from' => {
'simultaneous' => [
{
'key_code' => key,
},
{
'key_code' => SPACEBAR,
},
],
'simultaneous_options' => {
'to_after_key_up' => [
'set_variable' =>
{'name' => 'shifted', 'value' => 0}
]
}
},
'to' => ROMAN_SIMULTANEOUS_MAP[char],
'conditions' => CONDITIONS,
}
end
とします。そして、
def shifted_on()
{
'set_variable' => {
'name' => 'shifted',
'value' => 1
}
}
end
ROMAN_SIMULTANEOUS_MAP = {
'え' => [shifted_on(), key('e')],
'お' => [shifted_on(), key('o')],
'さ' => [shifted_on(), key('s'), key('a')],
'せ' => [shifted_on(), key('s'), key('e')],
'ち' => [shifted_on(), key('t'), key('i')],
'つ' => [shifted_on(), key('t'), key('u')],
'に' => [shifted_on(), key('n'), key('i')],
'ぬ' => [shifted_on(), key('n'), key('u')],
'ね' => [shifted_on(), key('n'), key('e')],
'の' => [shifted_on(), key('n'), key('o')],
'ふ' => [shifted_on(), key('h'), key('u')],
'ま' => [shifted_on(), key('m'), key('a')],
'み' => [shifted_on(), key('m'), key('i')],
'む' => [shifted_on(), key('m'), key('u')],
'め' => [shifted_on(), key('m'), key('e')],
'も' => [shifted_on(), key('m'), key('o')],
'や' => [shifted_on(), key('y'), key('a')],
'ゆ' => [shifted_on(), key('y'), key('u')],
'よ' => [shifted_on(), key('y'), key('o')],
'り' => [shifted_on(), key('r'), key('i')],
'わ' => [shifted_on(), key('w'), key('a')],
'を' => [shifted_on(), key('w'), key('o')],
'、' => [shifted_on(), key(COMMA)],
'。' => [shifted_on(), key(PERIOD)],
'選→' => [shifted_on(), key_with_repeat_shift(RIGHT_ARROW)],
'選←' => [shifted_on(), key_with_repeat_shift(LEFT_ARROW)],
}
を追加してください。
不具合の直接の原因は、スペースと文字キーの同時押し(初期設定は50ミリ秒以内)の時に、shiftedフラグがセットされなかったことです。
ただしこれらのキーを離したときにshiftedフラグがオフになってはうまくないので、
"to" で shiftedフラグをセットするように(ROMAN_SIMULTANEOUS_MAP はそのための配列定義)、
"to_after_key_up" でキーを2つとも離したときにshiftedフラグをオフにするように改造します。
なおこの方法では同時連続シフト(後置シフトからの連続シフト)になります。