shaunxer
shaunxer

Reputation: 52

(AHK) Creating variable hotkeys that gets the key names from a 2 char file name of a script

I'm trying to make something for our employees to use so that they dont have to alter the script itself to define hotkeys. This may only work for hotkeys which can be defined by a single character, but that's fine, as there are so many combinations that can be made with them, and they can be very easy to remember. The script would look only at 2 character AHK files (or 6 if you must include the extension) in the working directory. And the variables it would search for could be defined with RegEx so for the first hotkey, it would look like ^. and then second would look like .(?=.) Once a match is found, it would simply launch that matched file. Has something like this been done before? It seems so simple but I can't seem to find anything on it.

Edit: Elliot brought this to my attention: http://autohotkey.com/board/topic/60630-easy-editmanage-hotkeyshotstrings-plugin-ahk-l/

It's a neat script manager, and very useful, but it's not what I'm looking for.

I dont not want an additional interface. I want to be able to change the hotkeys by using the filename.

Upvotes: 0

Views: 781

Answers (2)

Schneyer
Schneyer

Reputation: 1257

Based on the answer of Forvin. Added the execution of the corresponding ahk script.

#Persistent
SetTimer, FindNewHotkeys, 2000
FindNewHotkeys:
    Loop, %A_ScriptDir%\*
    {
        RegExMatch(A_LoopFileName, "^(.)(.).ahk$", hk)

        If (hk)
        {
          Hotkey, ~%hk1% & ~%hk2%, HotkeyLabel
        }
    }
Return

HotkeyLabel:
  RegExMatch(A_ThisHotkey, "~(.) & ~(.)", hk)
  run, %hk1%%hk2%.ahk
Return

Upvotes: 1

Forivin
Forivin

Reputation: 15488

#Persistent
SetTimer, FindNewHotkeys, 2000

FindNewHotkeys:
    Loop, %A_ScriptDir%\*
    {
        RegExMatch(A_LoopFileName, "^(.)(.).ahk$", hk)

        If (hk)
            Hotkey, ~%hk1% & ~%hk2%, HotkeyLabel
    }
Return

HotkeyLabel:
    MsgBox, A hotkey has been pressed!
Return

Upvotes: 1

Related Questions