Ich hatte das Prinzip der kaskadierenden Hotkeys bereits hier gepostet. In dieser Variante war es aber recht unflexibel und auch recht aufwändig zu installieren.
Jetzt habe ich das als AddOn, basierend auf .properties, erstellt. So lassen sich Änderungen ganz einfach in der Properties-Datei einpflegen. (Die ownhotkeys.properties ist, wie alle anderen Properties-Dateien, über das Menü "Optionen" in SciTE erreichbar).
Damit eine eigene Properties-Datei auch nutzbar ist, muss man entsprechende Einträge vornehmen. Wer das gern per Hand machen möchte, kann die manuelle Installation verwenden. Wer es bequemer mag, nutzt den Installer. Dateien, an denen Änderungen vorgenommen werden, werden vorher gesichert. Sollte die Sicherung fehlschlagen, bricht die Installation ab.
Die Installation muss aus SciTE heraus gestartet werden. (OHK_Installer.au3 im entpackten Ordner ausführen)
Zur Funktionsweise zitiere ich mal aus meinem o.a. Thread
ZitatSciTE hat ja bereits alle Sequenzen von Ctrl+Key vorbelegt. Das ist natürlich unschön, da man für eigene Hotkeys dann auf umständliche Kombinationen zurückgreifen muss, die einem fast die Finger brechen. Oder man muss die voreingestellten Hotkeys ummappen.
Aber das hat ein Ende. Die Lösung: Cascading Hotkeys
Das funktioniert recht simpel. Ich habe mir als Trigger die Sequenz "Ctrl+Win" ausgewählt. Das beißt sich mit keinem anderen Hotkey und läßt sich schön mit 2 Fingern einer Hand erledigen. Ist dieser Hotkey gedrückt, läßt man die Win-Taste wieder los aber hält die Ctrl-Taste weiterhin gedrückt und wählt nun die beliebige Taste für die zweite Ctrl+Key-Sequenz. Somit ergeben sich Hotkeys der Form: "Ctrl+Win, Ctrl+X" oder "Ctrl+Win, Ctrl+F2" usw..
In der vorigen Variante gab es das Problem, dass sich keine au3-Skripte starten liessen. Um das zu ermöglichen wird jetzt die "shell.dll" (von SciTE-RU) verwendet.
Es werden einige Funktionen mitgeliefert, die ihr im Installer den Hotkeys zuordnen könnt (oder auch jederzeit später in der Properties-Datei).
Gerade die Funktionen zum Text/Zeilen verschieben möchte ich nicht mehr missen.
Wenn ihr alle vordefinierten Hotkeys nutzt, sind dieses 65 :D. Das kann man aber gern noch um Hotkeys in Kombination mit ", . _ etc." erweitern, falls mal Bedarf besteht.
!! DEMO ANGUCKEN !!
Ein Hinweis noch:
Mit "OHK.ExecuteAU3()" lassen sich AutoIt-Skripte ausführen. Sofern diese Skripte eine Konsolenausgabe enthalten (ConsoleWrite) muss diese Ausgabe vom aufrufenden Lua-Skript an die SciTE-Output-Pane übergeben werden. Dazu habe ich die "SciTE_Output.au3" beigefügt, die vom Installer in euren User-Include-Ordner kopiert wird. In den betreffenden AU3-Skripten muss dann nur der Funktionsname "ConsoleWrite" durch "_SciTE_Output" ersetzt werden und "#Include <SciTE_Output.au3>" eingefügt werden.
Edit: 29.10.2013
Zur Ergänzung noch die Funktion "OHK.ShellExecute()". Mit ihr lassen sich dann exe-Dateien und beliebige Dateien mit ihrem verknüpften Programm aufrufen.
Werde es später noch in die Dateien einbetten, hier schonmal die Funktion (einfach in die OHKFuncs.lua reinkopieren)
autoit.de/wcf/attachment/23022/
Edit 15.11.2016
Nach langem mal eine kleine Anpassung, die ihr bitte selbst in die Datei einpflegt:
Da ich es bisher nie verwendet hatte, war mir nicht aufgefallen, dass bei Nutzung der SciTE-Variablen ( $(FilePath) etc. ) als Parameter in Befehlszeilen, Backslash nicht escaped werden. Deshalb habe ich nun eine Makrofunktion erstellt, die mit identischen Namen wie die SciTE-Variablen funktioniert, aber (wie in AutoIt) durch @ gekennzeichnet werden ( "$(FilePath)" = "@FilePath", "$(FileDir)"="@FileDir", usw. ).
['@SciteDefaultHome'] = props['SciteDefaultHome'], -- directory in which the Global Options file is found
EDIT 08.07.2019
Anpassung der Debugfunktion zur Verwendung in Lua-Skripten
In der Datei OHKfuncs.lua die Funktion OHK.DebugToConsole mit der folgenden Version ersetzen:
--[[ DebugToConsole() --> also recognizes array variables like (*.au3): $a[$i][0], (*.lua): a.b.c[k][v]
editor:InsertText(editor.CurrentPos, '\nConsoleWrite("@@_Debug_line" & @TAB & @TAB & @ScriptLineNumber & " var: '..sVar..' --> " & '..sDebug..' & @LF'..sErr..')')