Frei wählbare Tastenkombis

  • Hallo.
    Ich möchte dem User die Chance geben die Tastenkombinationen frei zu wählen. Allerdings weiß ich noch nicht so genau wie ich das anstellen soll.


    Wenn er z.B. STRG+U drückt sollte das erstmal in ner ini gespeichert werden, aber nachher auch im Programm funktionieren. Habe mir gedacht HotKeySet ist da zu unflexibel ich würds in ner While abrufen. Habt ihr vll. n paar tipps wie man das am einfachsten Lösen könnte? vorallem die tastenkombis abzufragen und auch vom "fur den user verständlich" umzuwandeln in "für das script verständlich" und umgekehrt?

    • Offizieller Beitrag

    Oder du gibst Auswahlfelder vor. Prüfe aber vor Verwendung auf Sinnhaftigkeit ('ALT+F4' od. 'STRG+ALT+ENTF') ;)
    Wobei das nicht unbedingt optimal ist, da häufig "Taste1_down - Taste2 - Taste1_up" verwendet werden muß. Das kannst du aber noch anpassen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    Opt("GUIOnEventMode", 1)
    Global Enum $sSTRG, $sALT, $sSHIFT, $sWIN, $iAnz
    Global $aS[$iAnz], $sCombo = 'a', $sSEND

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("Form1", 518, 143, 192, 114)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $Group1 = GUICtrlCreateGroup("", 24, 32, 257, 57)
    $cbSTRG = GUICtrlCreateCheckbox("STRG", 32, 56, 65, 17)
    GUICtrlSetOnEvent(-1, "cbSTRGClick")
    $cbSHIFT = GUICtrlCreateCheckbox("SHIFT", 96, 56, 57, 17)
    GUICtrlSetOnEvent(-1, "cbSHIFTClick")
    $cbALT = GUICtrlCreateCheckbox("ALT", 160, 56, 49, 17)
    GUICtrlSetOnEvent(-1, "cbALTClick")
    $cbWIN = GUICtrlCreateCheckbox("WIN", 216, 56, 57, 17)
    GUICtrlSetOnEvent(-1, "cbWINClick")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("+", 296, 53, 14, 24)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $Group2 = GUICtrlCreateGroup("", 320, 32, 105, 57)
    $Combo1 = GUICtrlCreateCombo("", 333, 55, 80, 25)
    GUICtrlSetOnEvent(-1, "Combo1Change")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $btOK = GUICtrlCreateButton('OK', 450, 55, 40, 20)
    GUICtrlSetOnEvent(-1, 'btOKClick')
    GUICtrlSetData($Combo1, 'a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|0|1|2|3|4|5|6|7|8|9|F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12', 'a')

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func btOKClick()
    $sSEND = '"'
    For $i = 0 To $iAnz -1
    If $aS[$i] <> '' Then $sSEND &= $aS[$i]
    Next
    $sSEND &= $sCombo & '"'
    MsgBox(0, 'Kombi', $sSEND)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func cbALTClick()
    $aS[$sALT] = ''
    If BitAND(GUICtrlRead($cbALT), $GUI_CHECKED) Then $aS[$sALT] = '!'
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func cbSHIFTClick()
    $aS[$sSHIFT] = ''
    If BitAND(GUICtrlRead($cbSHIFT), $GUI_CHECKED) Then $aS[$sSHIFT] = '+'
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func cbSTRGClick()
    $aS[$sSTRG] = ''
    If BitAND(GUICtrlRead($cbSTRG), $GUI_CHECKED) Then $aS[$sSTRG] = '^'
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func cbWINClick()
    $aS[$sWIN] = ''
    If BitAND(GUICtrlRead($cbWIN), $GUI_CHECKED) Then $aS[$sWIN] = '#'
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Combo1Change()
    $sCombo = GUICtrlRead($Combo1)
    If StringLen($sCombo) > 1 Then $sCombo = '{' & $sCombo & '}'
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Form1Close()
    Exit
    EndFunc

    [/autoit]