Ja, Sie können AutoHotKey verwenden . Ich bin mir sicher, dass jemand anderes dies in kürzester Zeit ausarbeiten kann, aber ich kann mir zumindest eine mögliche Struktur des Skripts vorstellen:
- Definieren Sie einen Suspend-Hotkey und starten Sie den Suspend-Modus, damit Sie Ihre Tastatur verwenden können, wenn Sie nicht mischen möchten. Alternativ oder zusätzlich verwenden Sie #IfWinActive, um die Mashing -Key-Funktion auf das Fenster zu beschränken, in dem Sie dies tun.
- Lesen Sie eine Nur-Text-Datei in den Speicher.
- Stapeln Sie mehrere Hotkey-Definitionen für so ziemlich jede Taste auf der Tastatur für Ihre einzige Skriptaktion.
- Verwenden Sie StringLeft und StringTrimLeft, um ein einzelnes Zeichen aus Ihrer großen Variablen abzurufen und es aus der Variablen zu löschen.
- Verwenden Sie Senden, um den Charakter zu senden, den Sie ergriffen haben. Möglicherweise müssen Sie einen wenig Ersatz oder ein bedingten handhaben tun zu senden
und
, aber vielleicht auch nicht.
Hier ist mein Skript:
#UseHook ; Avoid loops of the Send command triggering the hotkey again. AutoTrim, Off ; Don't auto-trim spaces and tabs from the beginning and end of the sourcetext. SendMode InputThenPlay ; Try to prevent the user from corrupting the buffer text. Suspend, On ; Start suspended FileRead, MasherBuffer, magic-button-masher-text.txt if ErrorLevel MasherBuffer = Type or paste text here. You can also drag-and-drop text files here. Gui, +Resize +MinSize400x200 Gui, Add, Text,, When you are ready, un-suspend this script (Ctrl and `` together will toggle the suspension).`nType any character on the main QWERTY keyboard to send the characters from the buffer instead. Gui, Add, Edit, vMasherBuffer, %MasherBuffer% Gui, Show,, Magic Button Masher Buffer Return GuiSize: if ErrorLevel = 1 ; The window has been minimized. No action needed. return ; Otherwise, the window has been resized or maximized. Resize the MasherBuffer control to match. NewWidth := A_GuiWidth - 20 NewHeight := A_GuiHeight - 50 GuiControl, Move, MasherBuffer, W%NewWidth% H%NewHeight% return GuiDropFiles: Loop, parse, A_GuiEvent, `n { FileRead, AddToBuffer, %A_LoopField% MasherBuffer = %MasherBuffer%`n`n%AddToBuffer% } GuiControl,, MasherBuffer, %MasherBuffer% return ^`::Suspend !`::Gui, Show,, Magic Button Masher Buffer ; #IfWinActive ahk_class Notepad ; This limits the button masher to Notepad. `:: 1:: 2:: 3:: 4:: 5:: 6:: 7:: 8:: 9:: 0:: -:: =:: q:: w:: e:: r:: t:: y:: u:: i:: o:: p:: [:: ]:: \:: a:: s:: d:: f:: g:: h:: j:: k:: l:: `;:: ':: z:: x:: c:: v:: b:: n:: m:: ,:: .:: /:: Space:: GuiControlGet, MasherBuffer StringLeft, outbound, MasherBuffer, 1 StringTrimLeft, MasherBuffer, MasherBuffer, 1 GuiControl,, MasherBuffer, %MasherBuffer% if outbound = %A_Space% Send else if outbound = %A_Tab% Send else Send {%outbound%} return
Sie können dies nur in Notepad funktionieren lassen, indem Sie das #IfWinActive-Bit auskommentieren.
Ich habe Ctrl+ `einen Hotkey definiert, um das Skript auszusetzen.