Create a "hacker typer" program that renders its own source code If you are unfamiliar with hacker typer, see hackertyper.net. In short, it is a program that outputs one chunk of a code base per keystroke for comedic effect. BUT, the hackertyper.net version is far too easy to implement. It simply outputs three characters at a time from an arbitrary piece of code. For this challenge, a program must output its own source code, and print one space delimited chunk of code per keystroke.
Details

One cannot hard code a file name for the program; it must determine its name dynamically. If the program compiles to an executable, it may append the standard file extension to the name of the executable (excluding the .exe if using Windows) and assume that the source file is within the executable's directory. For example, if a C executable is named &quot;hacker&quot;, it should pull its source code from a file named &quot;hacker.c&quot; in its same directory. If a compiled program has an extension, it should be dropped before determining the name of its source code (&quot;typer.exe&quot; -&gt; &quot;typer.cs&quot;).
Programs must contain at least 5 spaces, with at least one character between each space. This means that the smallest possible size for this challenge is 9 bytes. The spaces do not have to be crucial to the functioning of the program.
Any formatting (indentation, new lines, etc.) must be maintained in the output. This formatting may either be printed with the code that proceeds it or follows it, what matters is that the formatting be maintained.
Avoid using comments to satisfy the 5 space requirement unless there is no other way to implement the spaces in your language of choice.

EDIT: New lines can be used in place of, or in addition to, spaces as chunk separators.
HTML &amp; JavaScript, 123

&lt;head&gt;&lt;/head&gt;&lt;body onload="s=(a=document.all)[i=0].innerHTML" onkeyup="a[2].textContent += s.split(/(?= )/)[i++%6]"&gt;&lt;/body&gt;


This works similarly to hacker typer, but with its own source code. Let me know if I've misunderstood the rules.

And here's a styled version (170 characters):

&lt;head&gt;&lt;/head&gt;
&lt;body style="background:#000;color:lime" onload="s=(a=document.all)[i=0].innerHTML" onkeyup="a[3].textContent+=s.split(/(?=\s)/)[i++%6]"&gt;
&lt;pre&gt;&lt;/pre&gt;&lt;/body&gt;


I've made a demo. It's modified because JS Bin adds a lot of extra code, but the general idea is the same.