1

AutoHotkey を使用して を にマップしCaps Lock、Total CommanderでasCtrlを使用しようとしています。Ctrl + KTab

SetCapsLockState AlwaysOff
Capslock::Ctrl

#ifWinActive ahk_class TTOTAL_CMD
  ^k::Send, {Tab}
#ifWinActive

Ctrl + K法線でリマップを使用すると、正常Ctrlに動作します。しかし、 で使用しようとするとCaps Lock + K、初めて機能しますが、 をリリースしていない間、 の代わりにCaps Lock送信されます。ログには次のように記載されています。kTab

008: SetCapslockState,AlwaysOff
009: Return (3.49)
; Hiting Ctrl + K twice.
081: Send,{Tab} (0.02)
081: Return (0.30)
081: Send,{Tab} (0.02)
081: Return (1.59)
; Hiting Caps Lock + K twice.
009: SetKeyDelay,-1
009: Send,{Blind}{Ctrl DownTemp}
009: Return (0.47)
081: Send,{Tab} (0.01)
081: Return (0.73)
; The second Tab is missing, a simple K sent.
009: SetKeyDelay,-1
009: Send,{Blind}{Ctrl Up}
009: Return (3.06)

Caps Lock + Kを押して放し、もう一度押したときのログは次のとおりです。

009: SetKeyDelay,-1
009: Send,{Blind}{Ctrl DownTemp}
009: Return (0.34)
081: Send,{Tab} (0.01)
081: Return (0.08)
009: SetKeyDelay,-1
009: Send,{Blind}{Ctrl Up}
009: Return (0.34)
009: SetKeyDelay,-1
009: Send,{Blind}{Ctrl DownTemp}
009: Return (0.19)
081: Send,{Tab} (0.01)
081: Return (0.06)
009: SetKeyDelay,-1
009: Send,{Blind}{Ctrl Up}
009: Return (3.00)

問題の原因は にあると思いますが、CapsLock::Ctrl解決策が見つかりませんでした。誰かがこの問題に遭遇しますか?

編集:

別の興味深い点は、単純なキーの代わりにコードを送信すると、caps ロックを解除せずに機能することです。

^e::PostMessage, 1075, 3005, , , ahk_class TTOTAL_CMD ; cm_SwitchToNextTab=3005;Switch to next Tab (as Ctrl+Tab) (see TOTALCMD.INC file)

ログには次のように記載されています。

008: SetCapslockState,AlwaysOff
009: Return (8.88)
; Ctrl + E twice.
058: PostMessage,1075,3005,,,ahk_class TTOTAL_CMD
058: Return (0.36)
058: PostMessage,1075,3005,,,ahk_class TTOTAL_CMD
058: Return (1.76)
009: SetKeyDelay,-1
; Caps Lock + E twice.
009: Send,{Blind}{Ctrl DownTemp}
009: Return (0.34)
058: PostMessage,1075,3005,,,ahk_class TTOTAL_CMD
058: Return (0.39)
058: PostMessage,1075,3005,,,ahk_class TTOTAL_CMD
058: Return (0.28)
009: SetKeyDelay,-1
009: Send,{Blind}{Ctrl Up}
009: Return (1.47)

; Caps Lock + E twice with releasing.
008: SetCapslockState,AlwaysOff
009: Return (2.54)
009: SetKeyDelay,-1
009: Send,{Blind}{Ctrl DownTemp}
009: Return (0.34)
058: PostMessage,1075,3005,,,ahk_class TTOTAL_CMD
058: Return (0.09)
009: SetKeyDelay,-1
009: Send,{Blind}{Ctrl Up}
009: Return (0.25)
009: SetKeyDelay,-1
009: Send,{Blind}{Ctrl DownTemp}
009: Return (0.23)
058: PostMessage,1075,3005,,,ahk_class TTOTAL_CMD
058: Return (0.08)
009: SetKeyDelay,-1
009: Send,{Blind}{Ctrl Up}
009: Return (1.98)
4

2 に答える 2

0

個人的には、^kキーを押してウィンドウがアクティブかどうかを確認し、そこから移動します。Untitled - Notepad を使用してテストしました。

CapsLock::Ctrl
^k::
{
    IfWinActive, Untitled - Notepad
        SendInput, {tab}
    else
        Msgbox
    return
}
于 2015-04-17T16:35:51.880 に答える