見出し画像

大西配列↔QWERTY配列をAlt + Spaceで切り替えできるようにする【AutoHotKey】



【まえがき】QWERTYはダメ?


人づてに「QWERTYはダメ、大西配列は良い」とお聞きしました。
つまるところ、QWERTY配列は使いやすさを考慮してないとのこと。

実際にWikipediaを調べてみると…。

QWERTYはタイプライターの技術的な限界から打鍵速度を落としてアームの衝突を防ぐために考え出された配列だという説[4]

タイプライターのセールスマンが、顧客に対して簡単に美しく「typewriter」という単語の打鍵を披露できるようにしたものだという説。*(最上段のキーのみで、「typewriter」のほかにも「property」のスペルが打てる[5]。)

最も続けて打つことが多い文字、TとHのタイプバー(アームとも呼ばれるTypebar)を遠くに離すことで、内部の機械の故障を起こしにくくしたという説[6][7]

元々あった英文タイプライターの配列の数字を英字に置き換えた(1がI、0がOなど)のが基盤で、そこからモールス電信用途に改良した説[8]
(上記の補足にもなるが、既存配列に特許が絡み、それを回避していく内に現在の配列になった説[9])

Wikipedia

確かに、所説が4つほども上がるのに、一般的な打つ速度を考慮したとする文言が一つもないのは引っかかる。さすがにWikipeidaとて。
記載の歴史的背景からも「とりあえずこの配列で」というのが現代まで引き継がれてしまった感が否めない。

昔からの流れで本当に良いものに切り替えできず古い手法を取り続けるのは人間あるあるな出来事の一つに感じるが、毎日のように使用するQWERTYぐらいは、この引力に逆らいたいと思う。

とにもかくにも、実際に大西配列を使ってみないとわからない…!
ということで、下記の作業を行いました。

【本題】大西配列↔QWERTY配列を切り替えできるようにする


Windowsの場合、AutoHotKeyを用いるとキー配列をカスタムすることができる。 実際、大西配列公式サイトにもAutoHotKeyのデータが配布されてい
る。

ただ、そのままだと「WASDで移動するゲーム」や「急用なのでQWERTYで文字打ち」の際にQWERTYに戻すのが非常に手間…。

公式サイトで配布してるものを自由に改変して良いとのことなので、そこで今回はそのデータを改変しつつ、以下の要素を追加した。

  • 「Alt + Space」で大西配列↔QWERTYと切り替え

  • 「Alt」「Ctrl」を押してる最中だけQWRTYにする

; 入力モードと作業ディレクトリの設定
SendMode "Input"
SetWorkingDir(A_ScriptDir)

; 初期状態: リマッピングは無効
global toggle := false

; Alt + Spaceでリマッピングの有効/無効を切り替え
!Space:: {
    global toggle 
    toggle := !toggle
}

; CtrlまたはAltを押している間は標準配列に戻す
#HotIf toggle && !(GetKeyState("Ctrl", "P") || GetKeyState("Alt", "P"))

; カスタム配列: リマッピングするキーのマップ
-::/

w::l
e::u
r::,
t::.
y::f
u::w
i::r
o::y

a::e
s::i
d::a
f::o
g::-
h::k
j::t
k::n
l::s
sc027::h

b::sc027
n::g
m::d
,::m
.::j
/::b

#HotIf

「Alt」「Ctrl」はショートカットキーで用いることが多いため、こちらも押している間だけQWRTYに戻すように設定している。

ただし、大西配列の英数字の位置まで覚えた方にとってはこの配慮は不要かもしれない。
そこで、「Alt + Space」で大西配列↔QWERTYと切り替える機能だけのシンプルなものも用意した。

; 入力モードと作業ディレクトリの設定
SendMode "Input"
SetWorkingDir(A_ScriptDir)

; 初期状態: リマッピングは無効
global toggle := false

; Alt + Spaceでリマッピングの有効/無効を切り替え
!Space:: {
    global toggle 
    toggle := !toggle
}

#HotIf toggle

; 有効時使用するキーマップは以下に記載

-::/

w::l
e::u
r::,
t::.
y::f
u::w
i::r
o::y

a::e
s::i
d::a
f::o
g::-
h::k
j::t
k::n
l::s
sc027::h

b::sc027
n::g
m::d
,::m
.::j
/::b

#HotIf

自由に書き換えて使えば、他のショートカットキーに設定したり、他の配列にもできるはずです。
AutoHotKeyの基本的な使い方は以下に記述しました。

もしこの記事が役に立ったらいいねボタンで反応してくれると嬉しいです。(Noteに未登録でもできるらしいです。)

いいなと思ったら応援しよう!