web-dev-qa-db-ja.com

Windows用のハッカータイパースタイルのアプリケーション

いくつかのプログラミング手法を示す一連のスクリーンキャストを作成する必要があります。それぞれに何を入力するかはすでにわかっているので、タイプミスによる遅延や厄介さを最小限に抑え、次に何をすべきかを考えたいと思います。

テキストのチャンクをバッファに貼り付けてから、キーをランダムにマッシュして、バッファを現在アクティブなウィンドウに一度に1文字ずつ出力できるソフトウェアはありますか?ネイティブのカスタマイズ可能なもののようなもの ハッカータイパー 。ある種のAutoHotkeyスクリプトまたは同様のものでそれを行うことができますか? Windowsプラットフォームにアプリケーションが存在しない場合は、他のプラットフォーム用のアプリケーションの提案を歓迎します。

4
Kaivosukeltaja

はい、 AutoHotKey を使用できます。他の誰かがすぐにこれを作成できると確信していますが、少なくともスクリプトの可能な構造を想像することはできます。

  1. サスペンドホットキー を定義し、サスペンドを開始して、マッシュしたくないときにキーボードを使用できるようにします。または、さらに、 #IfWinActive を使用して、マッシングキー関数をこれを実行する1つのウィンドウに制限します。
  2. プレーンテキストファイルを読み取る メモリに。
  3. 複数のスタック ホットキー定義 1つのスクリプトアクションのキーボードのほぼすべてのキーに対して。
  4. StringLeft および StringTrimLeft を使用して、大きな変数から1文字を取得し、それを変数から削除します。
  5. 送信 を使用して、つかんだキャラクターを送信します。 {Enter}{Tab}の送信を処理するには、少し置換または条件付きで行う必要があるかもしれませんが、そうではないかもしれません。

これが私のスクリプトです:

#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

#IfWinActiveビットのコメントを外すことで、これをメモ帳でのみ機能させることができます。

私が持っています Ctrl+` スクリプトを一時停止するためのホットキーとして定義されています。

4
Dane

デーンの説明を書きました。これでうまくいくはずです。テキストファイルを読み込み、行ごとに分割してから、設定可能な遅延を使用してその行の文字を1つずつ入力します。

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

ボタンの「マッシング」についてはあまり確信が持てなかったので、それについては何も含めませんでした。

0
Elliot DeNolf