如何使用AHK实现类似于Visual Studio的链接热键?

时间:2019-04-24 01:15:27

标签: autohotkey hotkeys chaining

我正在尝试为工作中的事物实现类似于视觉工作室的热键链接。

基本上,当我按Ctrl + Alt + F时,我要输入一种“格式模式”。我按的下一个键将确定要插入的文本。我希望一旦按下内部热键之一就停止“格式化模式”。但是,我还希望该选项必须手动取消,以防万一。

我尝试搜索热键的链接,并尝试了以下相当幼稚的代码:

;
;; Format Mode
;
^+f::

    ; Bold
    b::
        Send "<b></b>"
        Send {Left 4}
    return

    ; Italics
    i::
        Send "<i></i>"
        Send {Left 4}
    return

    ; Bulleted List
    u::
        Send "<u></u>"
        Send {Left 4}
    return

    ; Numbered List
    o::
        Send "<o></o>"
        Send {Left 4}
    return

    ; List Item
    l::
        Send "<li></li>"
        Send {Left 4}
    return

    ; Line Break
    r::
        Send "<br/>"
    return

return

我很确定 这是行不通的,但是我想我会试一下,以免让大家都以为我只是想吃汤匙

我并没有与AHK进行过很多合作,但是我已经足够使用它来在家中和工作中完成一些工作,但是它却很麻烦-就像我在AHK方面的经验一样

2 个答案:

答案 0 :(得分:2)

使用 Route::get('/password/reset/{token}', 'Auth\ResetPasswordController@showResetForm'); Route::post('/password/reset', 'Auth\ResetPasswordController@reset'); 命令,您可以使用相同的热键在action1 / Enable和action2 / Disable之间切换/切换。

您可以在记事本中对其进行测试。如果您再输入键t

按Ctrl + Shift + f键在两个相同的热键之间切换。

注意:对于您的热键,您可以稍微更改代码!您可以将所有热键放入#if Mode1,然后不使用任何热键进入#if Mode2

Example1.ahk

#if

答案 1 :(得分:2)

如史蒂夫柯迪所言,使用#If是一个不错的选择。以下是另一种可能适合您的解决方案。它使用您的^+f热键来激活特殊热键。专用热键也将在使用时自动停用。您可以选择f1手动将其取消。

^+f::
Hotkey , b , l_Bold , On
Hotkey , i , l_Italics , On
Hotkey , l , l_ListItem , On
Return

f1::
Hotkey , b , l_Bold , Off
Hotkey , i , l_Italics , Off
Hotkey , l , l_ListItem , Off
Return

l_Bold:
Hotkey , b , l_Bold , Off
Send , <b></b>{left 4}
Return
l_Italics:
Hotkey , i , l_Italics , Off
Send , <i></i>{left 4}
Return
l_Italics:
Hotkey , l , l_ListItem , Off
Send , <li></li>{left 5}
Return

下面是我正在查看的其他内容,但工作不正确。问题在于它将仍然发送专用密钥,并且您最终会得到类似<i>i</i>而不是<i></i>的信息。

f1::
KeyBdHook := DllCall(   "SetWindowsHookEx" , "int" , 13  , "uint" , RegisterCallback( "KeyBdProc" ) , "uint" , 0 , "uint" , 0 )
input
Return

KeyBdProc( nCode , wParam , lParam )
{
    global KeyBdHook
    Critical
    If ( wParam = 0x100 )
    {
        DllCall( "UnhookWindowsHookEx" , "ptr" , KeyBdHook )
        sKey := GetKeyName( Format( "vk{:x}" , NumGet( lParam + 0 , 0 , "int" ) ) )
        If ( sKey = "i" )
            Send , <i></i>{left 4}
        Else
            MsgBox , You pressed %sKey%
    }
}