Hacker-Typer-Anwendung für Windows

1491
Kaivosukeltaja

Ich muss ein paar Screencasts machen, die einige Programmiertechniken demonstrieren. Ich weiß bereits, was ich für jeden von ihnen tippen werde, und ich möchte alle Verzögerungen und Unbequemlichkeiten durch Tippfehler minimieren und versuchen zu überlegen, was ich als Nächstes tun sollte.

Gibt es eine Software, mit der ich einen Teil des Texts in einen Puffer einfügen und nach dem Zufallsprinzip die Tasten masht und meinen Puffer einzeln in das gerade aktive Fenster ausgeben lässt? Ein bisschen wie ein einheimischer anpassbarer Hacker-Typer . Könnte es mit einem AutoHotkey-Skript oder ähnlichem gemacht werden? Vorschläge für Anwendungen für andere Plattformen sind erwünscht, wenn keine für die Windows-Plattform vorhanden sind.

4
Nur um klar zu sein, Sie möchten die Tastatur zerdrücken, oder? Sie möchten nicht nur, dass die Textblöcke sofort angezeigt werden? Dane vor 11 Jahren 1
Ja, ich möchte, dass jedes Mal, wenn ich eine Taste drücke, ein Zeichen erscheint. Wenn ich eine Pause mache, sollte auch die Ausgabe angehalten werden. Kaivosukeltaja vor 11 Jahren 0
Suchen Sie jemanden, der das AutoHotKey-Skript für Sie schreibt? Dane vor 11 Jahren 0

2 Antworten auf die Frage

4
Dane

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:

  1. 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.
  2. Lesen Sie eine Nur-Text-Datei in den Speicher.
  3. Stapeln Sie mehrere Hotkey-Definitionen für so ziemlich jede Taste auf der Tastatur für Ihre einzige Skriptaktion.
  4. Verwenden Sie StringLeft und StringTrimLeft, um ein einzelnes Zeichen aus Ihrer großen Variablen abzurufen und es aus der Variablen zu löschen.
  5. 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.

Genial! Das funktioniert perfekt, abgesehen von den GUI-Korrekturen und einigen Anpassungen für meine skandinavische Tastatur, die ich wahrscheinlich mit Hilfe der Online-Dokumente lösen kann. Tausend Dank für die Hilfe! Kaivosukeltaja vor 11 Jahren 0
Oh, hey, @ Kaivosukeltaja, ich habe mein Skript überarbeitet, bevor ich deinen Kommentar und deine Zustimmung gesehen habe. Das aktualisierte Skript verfügt über eine grafische Benutzeroberfläche und einige Verbesserungen (insbesondere "SendMode InputThenPlay"). Ich habe eine Zeile im Format "a ::" für jeden Schlüssel, den ich neu zuordnen möchte. Es kann so einfach sein, ein paar Zeilen mit den zusätzlichen Tasten Ihrer Tastatur hinzuzufügen. Dane vor 11 Jahren 1
Gerecht! Ich würde wieder aufsteigen, wenn ich könnte. Dies ist eine großartige Demonstration der Kraft von AutoHotkey in den Händen von jemandem, der weiß, was er tut. Kaivosukeltaja vor 11 Jahren 0
0
Elliot DeNolf

Ich habe geschrieben, was Dane beschrieben hat. Das sollte den Trick tun. Er liest eine Textdatei ein, teilt sich nach Zeilen auf und gibt dann die Zeichen dieser Zeile nacheinander mit einer konfigurierbaren Verzögerung ein.

FileRead, text, C:\test.txt /* Alternatively: text = (ltrim this is the first sentence. sentence 2 here. sentence 3 hello. sentence 4 reporting in. ) */  pos := 1 StringSplit, lines, text, `n  ^Space:: ; Ctrl + Space line := lines%pos% loop, Parse, line { SendInput % A_Loopfield Sleep 100 ; Adjust this for delay between keys } ++pos Return 

Ich war mir beim "Mashing" von Knöpfen nicht so sicher, deshalb habe ich nichts dazu gemacht.

Auf diese Weise kann der Benutzer jeweils eine Zeile eingeben, die teilweise dort liegt. Sie können im Grunde dasselbe Skript ausführen, aber StringSplit nach Zeichen (geben Sie einfach kein Trennzeichen an). Ich befürchtete, dass dies eine extreme Anzahl von Variablen sein könnte, aber es könnte auch in Ordnung sein. Außerdem stelle ich mir vor, dass er während des Tippens neue Zeilen hinzufügen möchte. Dane vor 11 Jahren 0