JISかな配列のShiftキー活用

分割キーボードで得たスペースキー2個をAHKでSandS・EandSに設定し、楽にShift入力出来るようになった。
更にShift同時押しが未割当のキーを活用して文字を割り当てる。

Shift割当を変更するキー

  • Shift無しと同じ文字が出るキー
  • 実用度の低い,,,,
  • 使用頻度が高いが押しにくい

変更後

BSDel
()
  • 濁点が付く文字に濁音を割当
  • 英字入力の記号を持ってくる
    • 全角 ,,
    • 半角 (,),"
  • 使用頻度の高い記号を追加
    • ,
  • 遠いキーの記号を移動
    • ,,,BS,Del
  • 遠いキーへの割当は保留
    • ,

濁音を各キーShift入力にしたので、キーに使用頻度の高い「ー」を割当。単打も出来るように「゛」、Shift+に「゜」を割当。(当初逆にしていたが使用頻度的に「゛」を優先)

「っ」はあらゆる音に付く促音であり「つ」を発音する訳ではないので、独立させて押しやすい位置に割当。

かな入力でタッチタイプ出来るようShift押しを活用する配列は多数あるが、自分はなぜそのキーのShiftでその文字が出るのかの理由付け、関連性が欲しい。Shift+で「ぁ」、Shift+で「が」、Shift+で「~」。50音順配列、フリック入力は速度こそ劣るものの理由付けが完璧なので気持ちよさがある。

右Shift割当

BSDel
()
  • 半濁音

しばらく左Shift+右Shift同時押しにしていたが、3キー押しはダルいので右Shiftに変更。

AHK

日本語入力時のみ適用させる為、IME.ahkのIME_GET関数を使用する。
IME制御 – eamat @Cabinet – atwiki

Shift同時押しにキー割当

Shift同時押しへの割当は通常+q::Send,q@だが、運用中のSandS・EandSと共存させる。

#If ((IME_GET() != 0) and GetKeyState("Shift"))
{
	2::
		Send, {U+3076} ;ふ→ぶ
		SpKey := 1
		EnKey := 1
	Return
	n::
		Send, {U+FF01} ;み→!
		SpKey := 1
		EnKey := 1
	Return
}

SpKeyEnKeyは「仮想Shift押下中に他キーを押したので{Space}{Enter}の出力は要らないよ」という情報を渡す為に使っている変数。

キー送信はSendInputの方が早いが、SandS・EandSのInput待ちに対応する為Sendにしている。

{U+xxxx}の文字コードは任意のツールで取得。
都度変換ボタンを押さなくてもいい物が使いやすい。
【WEBツール】Unicode 変換

Shift無しキーの変更

#If ((IME_GET() != 0) and GetKeyState("Shift") = 0)
{
	@::
		Send, {U+30FC} ;゛→ー
	Return
	[::
		Send, {U+309B} ;゜→゛
	Return
}

右Shift同時押しにキー割当

#If ((IME_GET() != 0) and GetKeyState("RShift"))
{
	4::
		Send, {U+3094} ;ぅ→ゔ
		SpKey := 1
		EnKey := 1
	Return
	f::
		Send, {U+3071} ;は→ぱ
		SpKey := 1
		EnKey := 1
	Return
}

両Shift同時押しにキー割当

右Shiftにした為現在は使用していない。

#If ((IME_GET() != 0) and GetKeyState("LShift") and GetKeyState("RShift"))
{
	f::
		Send, {U+3071} ;は→ぱ
		SpKey := 1
		EnKey := 1
	Return
}

ATOK設定

ATOKはShift+BackSpaceが前文字削除になっていなかったので、BackSpaceと同じ機能を設定。


参考
更新
  • 2023.12 両Shift押しから右Shift押しに運用変更