Blog Post

Sysinternals Blog
2 MIN READ

Make demo typing easy with DemoType in ZoomIt v8.0

johnstep's avatar
johnstep
Icon for Microsoft rankMicrosoft
Feb 06, 2024

DemoType is a ZoomIt feature that allows you to synthesize keystrokes from a script. Queue code blocks or Copilot prompts and send them to target windows during a live demo. Additionally, ZoomIt counteracts editor specific auto formatting, allowing a script to be interchangeable between target windows. Watch a video overview here.

 

Standard mode

 

Default behavior immediately begins injecting keystrokes to the target window upon pressing the DemoType hotkey (e.g. Ctrl + 7). No user input is required. ZoomIt will simply run to the end of the current text segment and exit, returning control to the user.

 

User-driven mode

 

You can select the option to drive input with typing. Toggle this behavior in the ZoomIt options dialog. One user key press will trigger one output character in 1:1 injection ratio.


You can adjust the injection ratio between 1:1, 1:2, and 1:3 with the speed slider in the ZoomIt options dialog. Upon reaching the end of the current text segment in user-driven mode, DemoType will continuie blocking keyboard input until you press space bar.

 

Input Script

 

Your script can be sourced from a file or from the clipboard. To use the clipboard, you must put the control keyword [start] at the beginning of your selection. This deliberate safety prefix is meant to stop you from unintentionally presenting sensitive data in the clipboard.


To use a file, select it from the ZoomIt options dialog. If you were previously sourcing input from the clipboard and would like to switch to file, set the clipboard to some text that doesn’t include the [start] prefix, or clear the clipboard via Windows Settings > System > Clipboard > Clear clipboard data.


The [end] control keyword is used to split your script into text segments. It is important to note that DemoType will look to the left and right of an [end] and absorb a single newline from each side if present. This allows you to format your script and pad an [end] with newlines that won’t render.

 

Cancelling DemoType

 

To cancel an active session, press escape. DemoType will also quit if focus is changed to a different window. Terminating a DemoType session mid text segment will hop to the next text segment. To hop back to the previous text segment, enter the DemoType hotkey with the Shift key in the opposite mode (e.g. Ctrl + Shift + 7).

 

Control Keywords

 

Use the following keywords throughout your script to control behavior.

[start] is a safety prefix only used when tagging clipboard data as a viable script
[end] is a delimiter to segment your script into snippets
[enter], [up], [down], [left], [right] synthesizes keystrokes
[pause:n] synthesizes a pause of n seconds
[paste] with a closing [/paste] allows you to inject a chunk of text via the clipboard

Updated Feb 06, 2024
Version 3.0
  • feO2x's avatar
    feO2x
    Copper Contributor

    This is an awesome feature! Thank you so much for implementing it!

    I have found one issue while using DemoType: when using a keyboard layout other than English US, some characters will be projected to other characters:

     

    For example, with a German keyboard layout, the C# code "public class Foo { }" will be written like "public class Foo { 0". Also, array brackets in C# "[]" show similar issues. The workaround is to switch to an English US keyboard layout in Windows.  

  • Hey John -- any chance y'all could publish a demo video to show this in action? A picture is worth a thousand words; a video is worth a million. 🙂

  • johnstep 

    Hi

    for me on Win 10 + Firefox + 24" monitor the video is useless. In original size it is too small and too dark, in fullscreen the resolution it terrible and nothing can be recognized.

     

     

  • johnstep - I had missed that link in the first paragraph, so thanks. As Pierre mentioned, though, it's way too low resolution to understand what's going on. (Having an audio narration (as Mark's video from Feb 1 has) would also help.)

    Thanks again.

  • John_1972's avatar
    John_1972
    Copper Contributor

    Unless I'm mistaken, the passage about the [paste] keyword does not correspond to the little demo Mark Russinovich gives on X. (https://twitter.com/markrussinovich/status/1752922987370836136 )

    Paste just pastes in text from the script. It is very similar to what happens to segments between [end] tags but you just don't get the illusion anything is being typed live. Or am I missing something?

  • Batfleck's avatar
    Batfleck
    Copper Contributor

    Can we get support for languages that contain mutated vowels, like "ä", "ö", etc.? Without support, the tools can't be used with languages like German. Are there any workarounds?