如何在Windows 10中使用自动热键模拟超级键

kxkpmulp  于 2023-04-07  发布在  Windows
关注(0)|答案(3)|浏览(186)

我正在将我的Mac工作流程迁移到Windows。有一件事我离不开hyper键,它是Ctrl + Option + Shift + Cmd的组合。我使用Karabiner应用程序将Capslock重新Map到这个Hyper键。我听说Autohotkey是Windows* 的 *Karabiner替代品。你们能帮我在Windows中模拟这个功能吗?
我的理想结果是:

  • 完全停用Capslock,因为我很少使用它
  • 切换Capslock将执行ESC
  • 按住Capslock将执行Ctrl + Alt + Shift + Windows。例如,Capslock + C将是Ctrl+Alt+Shift+Windows+C

非常感谢提前!
以下是我尝试的ahk脚本,但它根本不起作用:(

;-----------------------------------------
; hyper key for windows
;=========================================

; --------------------------------------------------------------
; notes
; --------------------------------------------------------------
; ! = alt
; ^ = ctrl
; + = shift
; # = lwin|rwin
;
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#UseHook
#InstallKeybdHook
#SingleInstance force

SendMode Input

;; deactivate capslock completely
SetCapslockState, AlwaysOff

;; remap capslock to hyper
Capslock::
SendInput {Blind}{Ctrl Down}{Alt Down}{Shift Down}{LWin Down}
return

Capslock up::
SendInput {Blind}{Ctrl Up}{Alt Up}{Shift Up}{LWin Up}
return

;; vim navigation with hyper
^!+#h:: SendInput {Blind}{Left}
^!+#h up:: SendInput {Blind}{Left Up}
^!+#l:: SendInput {Blind}{Right}
^!+#k:: SendInput {Blind}{Up}
^!+#j:: SendInput {Blind}{Down}

;; popular hotkeys with hyper
^!+#c::^c
^!+#v::^v
9rbhqvlz

9rbhqvlz1#

感谢任何人试图帮助我,我自己找出了问题,并希望分享它的情况下,任何人遇到这个问题。

#NoEnv ; recommended for performance and compatibility with future autohotkey releases.
#UseHook
#InstallKeybdHook
#SingleInstance force

SendMode Input

;; deactivate capslock completely
SetCapslockState, AlwaysOff

;; remap capslock to hyper
;; if capslock is toggled, remap it to esc

;; note: must use tidle prefix to fire hotkey once it is pressed
;; not until the hotkey is released
~Capslock::
    ;; must use downtemp to emulate hyper key, you cannot use down in this case 
    ;; according to https://autohotkey.com/docs/commands/Send.htm, downtemp is as same as down except for ctrl/alt/shift/win keys
    ;; in those cases, downtemp tells subsequent sends that the key is not permanently down, and may be 
    ;; released whenever a keystroke calls for it.
    ;; for example, Send {Ctrl Downtemp} followed later by Send {Left} would produce a normal {Left}
    ;; keystroke, not a Ctrl{Left} keystroke
    Send {Ctrl DownTemp}{Shift DownTemp}{Alt DownTemp}{LWin DownTemp}
    KeyWait, Capslock
    Send {Ctrl Up}{Shift Up}{Alt Up}{LWin Up}
    if (A_PriorKey = "Capslock") {
        Send {Esc}
    }
return

;; vim navigation with hyper
~Capslock & h:: Send {Left}
~Capslock & l:: Send {Right}
~Capslock & k:: Send {Up}
~Capslock & j:: Send {Down}

;; popular hotkeys with hyper
~Capslock & c:: Send ^{c}
~Capslock & v:: Send ^{v}
tmb3ates

tmb3ates2#

你可以在这里使用一个卡拉宾纳随员:https://github.com/Vonng/Capslock/blob/master/win/CapsLock.ahk
它Map了您在Mac上使用的相同热键

;Summary:                                                             |
;o----------------------o---------------------------------------------o
;|CapsLock;             | {ESC}  Especially Convient for vim user     |
;|CaspLock + `          | {CapsLock}CapsLock Switcher as a Substituent|
;|CapsLock + hjklwb     | Vim-Style Cursor Mover                      |
;|CaspLock + uiop       | Convient Home/End PageUp/PageDn             |
;|CaspLock + nm,.       | Convient Delete Controller                  |
;|CapsLock + zxcvay     | Windows-Style Editor                        |
;|CapsLock + Direction  | Mouse Move                                  |
;|CapsLock + Enter      | Mouse Click                                 |
;|CaspLock + {F1}~{F6}  | Media Volume Controller                     |
;|CapsLock + qs         | Windows & Tags Control                      |
;|CapsLock + ;'[]       | Convient Key Mapping                        |
;|CaspLock + dfert      | Frequently Used Programs (Self Defined)     |
;|CaspLock + 123456     | Dev-Hotkey for Visual Studio (Self Defined) |
;|CapsLock + 67890-=    | Shifter as Shift                            |

要安装它,请从doc执行以下操作:
1.右键单击桌面。
1.在菜单中找到“新建”。
1.单击“新建”菜单中的“自动热键脚本”。
1.为脚本指定一个新名称。它必须以.ahk扩展名结尾。例如:MyScript.ahk
1.在桌面上找到新创建的文件并右键单击它。
1.单击“编辑脚本”。
1.应该会弹出一个窗口,可能是记事本。如果是这样,成功!
1.保存文件。
1.双击桌面上的文件/图标来运行它。打开记事本或(任何你可以输入的东西),然后按CtrlJ
1.万岁!你的第一个脚本完成了。去拿一些奖励零食,然后继续阅读本教程的其余部分。

laik7k3q

laik7k3q3#

一个更新版本的@babygau的script的AutoHotkey v2,我刚刚整理出来,如果它可以帮助任何人:)

#Requires AutoHotkey v2.0
; recommended for performance and compatibility with future autohotkey releases.
#UseHook
#SingleInstance force

InstallKeybdHook()

SendMode "Input"

;; deactivate capslock completely
SetCapslockState("AlwaysOff")

global CapslockIsDown := false

SetTimer(HandleCapslock, 50)

HandleCapslock() {
    global CapslockIsDown

    if (!CapslockIsDown && GetKeyState("Capslock", "P")) {
        CapslockIsDown := true
        Send("{Ctrl DownTemp}{Shift DownTemp}{Alt DownTemp}{LWin DownTemp}")
    } else if (CapslockIsDown && !GetKeyState("Capslock", "P")) {
        CapslockIsDown := false
        Send("{Ctrl Up}{Shift Up}{Alt Up}{LWin Up}")
        if (A_PriorKey == "Capslock") {
            Send("{Esc}")
        }
    }
}

;; vim navigation with hyper
Hotkey "~Capslock & h", SendLeft
Hotkey "~Capslock & l", SendRight
Hotkey "~Capslock & k", SendUp
Hotkey "~Capslock & j", SendDown

SendLeft(ThisHotkey) {
    Send("{Left}")
}

SendRight(ThisHotkey) {
    Send("{Right}")
}

SendUp(ThisHotkey) {
    Send("{Up}")
}

SendDown(ThisHotkey) {
    Send("{Down}")
}

;; popular hotkeys with hyper
Hotkey "~Capslock & c", SendCtrlC
Hotkey "~Capslock & v", SendCtrlV
SendCtrlC(ThisHotkey) {
    Send("^c")
}

SendCtrlV(ThisHotkey) {
    Send("^v")
}

相关问题