分割キーボードがよいという噂を聞いたので、Amazonで購入しました。
Mistel Barocco MD600v3 RGB Classic Black 英語US配列 62キー ブラック Cherry MX RGB 茶軸 MD600-BUSPDAAT3
日本語配列のものと間違って英字配列のものを購入してしまったのですが、入力モード切替で日本語入力にすることができたので、ギリギリセーフでした。
早速スクリプト
#NoEnv ; 他の環境変数に依存しない設定
SendMode Input ; より高速で信頼性の高い入力モードを設定
; スペースキーと特定のキーの組み合わせでの動作
Space & j::Send, {Left}
Space & k::Send, {Down}
Space & l::Send, {Right}
Space & i::Send, {Up}
Space & u::Send, {Backspace}
Space & f::Send, {Space}
Space & g::Send, {tab}
Space & d::Send, {Delete}
Space & h::Send, {Home}
Space & sc027::Send, {End}
; Space + O と Shift + Space + O の動作を区別するスクリプト
~Space & o::
if (GetKeyState("Shift", "P")) {
Send, +{Enter} ; Shift + Enter を送信
} else {
Send, {Enter} ; 通常の Enter を送信
}
return
; Spaceキー単独でのアクションは無効化
Space::return
#UseHook
; Space + Q で "!" を入力
Space & q::Send, {Raw}!
; Space + W でダブルクォーテーションを入力
Space & w::Send, {Raw}""
; Space + E で "#" を入力
Space & e::Send, {Raw}#
; Space + R で "$" を入力
Space & r::Send, {Raw}$
SpaceKey+いろいろなキーで矢印やらなんやらを設定しています。
解説
#NoEnv
は、スクリプトが外部の環境変数に依存しないように設定するためのものです。これにより、スクリプトの動作がより予測可能になります。
SendMode Input は、キー送信の方法としてInputを選択しています。これはより高速で信頼性の高い入力方法です。
スペースキーと別のキー(j, k, l, i, u, f, g, y
)の組み合わせによって特定のキー入力を行います。例えば、Space & j
は左矢印キー、Space & k
は下矢印キーとして機能します。
Space & f::Send, {Space}
は、スペースキーとfキーの組み合わせでスペースを入力するためのマッピングです。
スペースキーとoキーが同時に押されたときの動作を定義しています。Shiftキーが同時に押されていれば、Shift + Enter
を送信し、そうでなければ通常のEnterを送信します。
スペースキーと特定の文字キー(q, w, e, r
)の組み合わせで特殊文字(! ", #, $
)を入力するためのものです。
{Raw}
モードを使用して、文字がそのまま(エスケープされずに)送信されるようにしています。
というわけで
このキーボードには物理的にLayerを使用してキーマッピングを設定できるのですが、それを使用せずAutoHotKeyですべて設定しました。
AutoHotKeyの設定方法は以下を参照。
https://musikirin.com/post/2017/10/30/mistel-barocco-md600-3/
https://qiita.com/mugiajinoocha/items/499040fa6751487e009b
物理的に設定したい場合参考となりそうな記事
https://qiita.com/Takuan_Oishii/items/0f7a0d278980265b69a5