Oui, vous pouvez utiliser AutoHotKey . Je suis sûr que quelqu'un d'autre pourrait inventer ça en un rien de temps, mais je peux au moins imaginer une structure possible pour le script :
- Définir un Touche de suspension et commencer à suspendre, de sorte que vous pouvez utiliser votre clavier lorsque vous ne voulez pas être mashing. Alternativement, ou en plus, utilisez #IfWinActive pour limiter la fonction "mashing-keys" à la seule fenêtre dans laquelle vous allez effectuer cette opération.
-
Lire un fichier en texte clair en mémoire.
- Empiler plusieurs définitions des touches de raccourci pour à peu près toutes les touches du clavier pour votre seule script action.
- Utilisez StringLeft y StringTrimLeft pour récupérer un seul caractère de votre grande variable et le supprimer de la variable.
- Utilisez Envoyer pour envoyer le caractère que vous avez saisi. Vous devrez peut-être faire un petit remplacement ou une condition pour gérer l'envoi de
{Enter}
y {Tab}
mais peut-être pas.
Voici mon script :
#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 {Space}
else if outbound = %A_Tab%
Send {Tab}
else
Send {%outbound%}
return
Vous pouvez faire en sorte que cela ne fonctionne que dans le Bloc-notes en décommentant le bit #IfWinActive.
J'ai Ctrl + ` défini comme une touche de raccourci pour suspendre le script.
1 votes
Juste pour être clair, vous voulez avoir à taper sur le clavier, non ? Vous ne voulez pas simplement que les morceaux de texte apparaissent instantanément ?
0 votes
Oui, je veux qu'un caractère apparaisse chaque fois que j'appuie sur une touche. Lorsque je fais une pause, la sortie doit également faire une pause.
0 votes
Vous cherchez quelqu'un pour écrire le script d'AutoHotKey pour vous ?