Last active
December 7, 2023 08:37
-
-
Save acple/5411138 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; SandS for AutoHotkey | |
;; ===初期設定========================================================== | |
;; 多重起動の制御をforceに指定 | |
#SingleInstance force | |
;; 環境変数を無視する | |
#NoEnv | |
;; キーボードフックを有効にする | |
#InstallKeybdHook | |
;; タスクトレイアイコンを表示しない (コメントアウト) | |
;; #Notrayicon | |
;; SendModeをInputに指定 | |
SendMode Input | |
;; Inputでキャッチするキーのリスト | |
EndKeys := "{LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}" | |
EndKeys .= "{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}" | |
EndKeys .= "{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}" | |
EndKeys .= "{BS}{Capslock}{Numlock}{PrintScreen}{Pause}" | |
;; ===Space Down======================================================== | |
;; SpaceDownホットキーの実行可能スレッド数を2にする | |
#MaxThreadsPerHotkey 2 | |
;; SpaceDown時の動作 | |
Space:: | |
;; Spaceキーの状態が既にOnの時はSpaceキーを送信 (キーリピート用) | |
if SandS_KeyState | |
{ | |
Send, {Space} | |
SandS_AnyKeyDown := True | |
return | |
} | |
;; Spaceキーの状態判定をOnにする | |
SandS_KeyState := True | |
;; キー入力判定を初期化 | |
SandS_AnyKeyDown := False | |
;; 1打目の入力を拾うまで待機 | |
Input, SandS_InputKey, L1, %EndKeys% | |
;; 何も押さずにSpaceキーを上げた場合は終了 | |
if (ErrorLevel == "NewInput") | |
return | |
;; クリティカル開始 | |
Critical | |
;; ShiftキーDown | |
Send, {LShift Down} | |
;; 入力されたキー、特殊キーを送信する | |
if SandS_InputKey | |
Send, %SandS_InputKey% | |
else ifInString, ErrorLevel, Endkey: | |
{ | |
;; EndKeysでキャッチしたキーを送信 | |
SandS_InputKey := substr(ErrorLevel, 8) | |
Send, {%SandS_InputKey% Down} | |
} | |
;; キー入力判定をOnにする | |
SandS_AnyKeyDown := True | |
;; クリティカル終了 | |
Critical, Off | |
return | |
;; ===Space Up========================================================== | |
;; SpaceUpホットキーの実行可能スレッド数を1にする | |
#MaxThreadsPerHotkey 1 | |
;; Space Up時の動作 | |
Space Up:: | |
;; Inputの待機を終了させる | |
;; キー先行入力対策 一時的に入力を保持する | |
Input, SandS_InputTemp, T0.002, %EndKeys% | |
;; キー入力がない場合はスペースを送信 | |
if !SandS_AnyKeyDown | |
Send, {Space} | |
;; Spaceキーの状態判定をOffにする | |
SandS_KeyState := False | |
;; ShiftキーUp | |
Send, {LShift Up} | |
;; 保持したキーデータを送信 | |
if SandS_InputTemp | |
Send, %SandS_InputTemp% | |
else ifInString, ErrorLevel, Endkey: | |
{ | |
SandS_InputTemp := substr(ErrorLevel, 8) | |
Send, {%SandS_InputTemp% Down} | |
} | |
return | |
;; ===Backslash-Underline置換=========================================== | |
;; Inputで取得したsc073とsc07Dの区別がつかないため | |
;; {sc073}('\')を+{sc073}('_')に置き換える | |
;; {LShift}はSpaceと同時に押された時にInputに食わせるためのダミー | |
sc073:: SendEvent, {LShift Down}_{LShift Up} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Cool script, really useful. There is one small thing that I would like to change, but I don't know how. Perhaps You can help me, I would be very thankful.
When I press & hold the space bar (now acting as a shift key) after about one second (maybe it's less?) it switches to behave like normal space bar again. I want to increase that time so that, for example, when i press & hold the space bar (so that it acts as shift) it won't switch to behaving like normal space bar for another 5-6 seconds. I hope that I explained what I need clear enough.
Can You help me find that line of code where I can change that 'switch time' between shift & space when no other key is pressed with it?
Thanks in advance!