3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AHK v2】スペースキーをFn化!誤爆対策付きSandS&特殊キーボード向け設定

3
Posted at

コンパクトキーボードや分割キーボード(Mistel MD770など)の操作性を劇的に向上させる、AutoHotkey v2.0用のスクリプトを紹介します。

スペースキーを「単押しでスペース」「長押しでFnキー」として使う、いわゆるSandS(Space and Space)設定に加え、タイピング時の誤動作を防ぐ工夫や、特殊配列向けのカスタマイズを盛り込んでいます。

SpaceキーのFn化: Spaceを押しながら I/J/K/L で矢印移動など、ホームポジションを崩さずに操作が完結します。

長押しキャンセル機能: Spaceを「250ミリ秒以上」長押しして離した場合はスペースが入力されません。通常のSandSで起こりがちな「文字入力中の意図しない誤爆」をしっかり防ぎます。

左Shift + 右Shift = アンダーバー(_): 一部のキーボードで入力しづらいアンダーバーを、両方のShiftキーの同時押しで簡単に入力できるようにしています。

修飾キーの引き継ぎ: Space + Shift + o で Shift + Enter として機能するなど、他の修飾キーとも自然に組み合わせられます。

💻 AutoHotkey v2.0 スクリプト
以下のコードをコピーし、.ahk 拡張子のファイルとして保存して実行してください。

#Requires AutoHotkey v2.0

; ==========================================
; Shiftキーの組み合わせ設定
; ==========================================
; 左Shift(<+) を押しながら 右Shift(RShift) を押すとアンダーバー(_)を入力
<+RShift::Send("{_}")

; ==========================================
; スペースキー単独の挙動(時間判定付き)
; ==========================================
*Space:: {
    startTime := A_TickCount ; スペースが押された瞬間の時間を記録
    KeyWait("Space")         ; スペースが離されるまで待機
    elapsedTime := A_TickCount - startTime ; 押していた時間を計算
    
    ; A_PriorKey: 他のキーを途中で押していないこと
    ; elapsedTime: 押していた時間が250ms未満であること
    if (A_PriorKey = "Space" && elapsedTime < 250) {
        Send("{Blind}{Space}")
    }
}

; ==========================================
; スペースキーとの組み合わせ(長押し時の挙動)
; ==========================================
; スペースキーが物理的に押されている間だけ、以下の設定を有効化します
#HotIf GetKeyState("Space", "P")

; --- 矢印移動 ---
*j::Send("{Blind}{Left}")
*i::Send("{Blind}{Up}")
*k::Send("{Blind}{Down}")
*l::Send("{Blind}{Right}")

; --- 削除系 ---
*u::Send("{Blind}{Backspace}")
*d::Send("{Blind}{Delete}")

; --- 行頭・行末 ---
*h::Send("{Blind}{Home}")
*sc027::Send("{Blind}{End}") ; sc027は日本語キーボードの「;」キー

; --- クリップボード・検索・全選択・エンター ---
*c::Send("^c")
*v::Send("^v")
*x::Send("^x")
*f::Send("^f")
*a::Send("^a")
*o::Send("{Blind}{Enter}") ; {Blind}指定によりShift+Enter等にも対応

#HotIf

💡 調整のポイント
スクリプト内の 250(ミリ秒)という数値が、長押しキャンセルのしきい値です。ご自身のタイピング速度に合わせて、キャンセルが早すぎる場合は 300 などに増やし、遅すぎる場合は 200 などに減らして調整してください。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?