May the source be with you, but remember the KISS principle ;-)
Home Switchboard Unix Administration Red Hat TCP/IP Networks Neoliberalism Toxic Managers
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and  bastardization of classic Unix

Windows Keyboard and Mouse Utilities

News Programmable Keyboards Recommended Links Windows Keyboard Macrorecoders and Keystroke Log Utilities  Microsoft Windows Keyboard remapping
Clipboard managers ArsClip AutoHotkey Mousekeys Keyloggers
Logitech Setpoint Logitech Gaming Software Microsoft IntelliType Microsoft IntelliPoint Expect
Techniques for 'driving' Windows applications Microsoft Windows shortcuts How to pipe text from shell to windows cut and paste buffer  Humor Etc

There are multiple techniques for "driving" Windows applications Among them ( :

But for day-to-day keyboard and mouse usage there are only four major classes of Windows utilities:

Stable and unstable combinations of Utilities

You can emulate most features of programmable keyboard using AutoHotkey with a regular keyboard, but it's just less convenient and reliable then hardware (driver) implementation. At the same time AutoHotkey is definitely more powerful and flexible then either Microsoft Intellitype or Logitech keyboard/mouse driver. One problem is using AutoHotKey is that few combination of other drivers and utilities with it is stable. In general Microsoft Intellipoint is not compatible with almost any other similar driver including, surprisingly, Microsoft Intellipoint (I think they overlap quite a bit and their existence as two separate packages is just the case when right hand in Microsoft does not know what left hand is doing). I strongly recommend replace Intellitype with XMouseButtonControl if you use Microsoft mouse. AutoHotkey is almost as bad as Intellipoint, if not worse. It is better to use it either alone or with minimal additional programs if you need to use it at all. Here are some more or less stable combinations.

  1. Stable both on Windows XP and Windows 7 (can be used with Microsoft keyboard like Sidewinder X6 which positively needs IntelliType and Microsoft mouse (which theoretically can benefit from Intellitype, but I suspect that even Intellitype + Intellipoint combination is unstable and should be avoided).
  2. Stable on Windows XP and Windows 7 (usable with Sidewinder X6 and Logitach Performace MX mouse)
  3. Relatively stable on Windows XP and Windows 7

Here are some unstable combinations that I experienced

  1. Highly unstable both on Windows XP and Windows 7
  2. Highly unstable both on Windows XP and Windows 7
  3. Moderately unstable on Windows XP and Windows 7
  4. Moderately unstable on Windows XP and Windows 7

Top Visited
Past week
Past month


Old News ;-)

[Sep 14, 2012 ] Automating Desktop Tasks in XP by Mitch Tulloch

04/12/2005 | O'Reilly Media
Back in days of yore, when Windows 3.1 ruled the land, one utility I found incredibly useful was Macro Recorder (recorder.exe). This simple tool let you record a series of mouse clicks and keystrokes and play them back, and it provided a simple method for performing repetitive tasks. I found I could be a lot more productive in certain aspects of my work when I used Recorder, and when Windows 95 came out I was dismayed to find that Recorder was no more.

Fortunately, over the years a number of third-party replacements for Recorder have emerged; most of these are powerful tools that can do much more than the original Recorder utility. Using these tools, you can create whole collections of macros, nest macros from within other macros, assign hot key combinations for triggering them, limit their operation to specific programs, schedule times when these macros will automatically run, specify that they run when certain conditions are fulfilled, launch batch files and scripts from macros, allow user input during a macro's operation, and much more.

I frequently use several of these programs to speed and simplify certain tasks such as changing the screen resolution or color depth for my display, changing skins for programs and themes for my desktop, selecting a new default printer from the network, switching between different folder options when using Windows Explorer, accessing deeply nested menu options in Microsoft Office programs, and generally doing just about anything that requires lots of steps or that can't easily be done from the command line. I also find the programs useful in performing standard IT tasks such as copying data into databases, importing or exporting data into spreadsheets, generating reports, testing applications and web sites, and so on.

Below, in no particular order, is a list of five macro recording tools for Windows that I've tried at various times. I've included brief descriptions of their notable features; all of them support the creation of basic mouse click/keystroke macros (and usually a whole lot more). I'd be interested in your comments in regard to which of these tools, if any, you use on a regular basis, and what you use them for.

That's a quick overview of what I've tried in the field of desktop automation for my Windows XP workstation. Feel free to use the Talkback feature at the end of this article to mention other macro tools that have helped you be more productive, and let me know some of the tasks for which you find such tools useful.

I still miss Macro Recorder sometimes....

Mitch Tulloch is the author of Windows Server Hacks

[Jul 31, 2012] vTask Studio - Features

vTask Studio includes all the features you need to automate your computer, such as launching apps, mouse actions, and loops. Of course, it goes beyond the basics, and also includes advanced automation capabilities such as checkpoints and database queries.

However, what really sets vTask apart are its unique features like image matching and an integrated EXE compiler. And all of that functionality is contained inside of a program that is only 1 megabyte in size! vTask is very efficiently written, something we're proud of.

[Jul 31, 2012] vTask Studio - Support

TinyTask 1.50

Our most popular freeware, TinyTask provides quick & easy automation by recording/playback. It is a case study in minimalist programming: the entire program is only 33k -- and over 14k are graphics, which means the executable portion is very small and efficient. It is used as the test harness for the "Recording" feature of vTask Studio.

New: now includes an EXE compiler! Turn your recordings into standalone programs. If you were stranded on a deserted island, this is the one program you would want.

There's no installer, required files, or anything unnecessary; just a tiny program, which doesn't touch your registry or system folders. Enjoy!

TyperTask 1.20

Increase your efficiency by automating your keyboard with TyperTask! This tool simulates keyboard typing, and can be used to instantly type common phrases. Use it to automate chat conversations, website logins, programming code blocks, HTML tags, or anything else you can imagine.

It even has advanced automation features, including launching programs, window activation, delays, and mouse clicks, so it's capable of performing complex tasks. Configuration is easy with simple text files. It has vTask's powerful keyboard simulation engine, so it can handle international codes and system keys such as <Control>.

The included help file demonstrates many TyperTask uses. No installation required.

[Apr 18, 2008] CoScripter

A useful Firefox plug-in

CoScripter is a system for recording, automating, and sharing processes performed in a web browser such as printing photos online, requesting a vacation hold for postal mail, or checking flight arrival times.

Instructions for processes are recorded and stored in easy-to-read text here on the CoScripter web site, so anyone can make use of them.

If you are having trouble with a web-based process, check to see if someone has written a CoScript for it!

Keyboard shortcut to paste clipboard content into command prompt window (Win XP)

Stack Overflow
personally use a little AutoHotkey script to remap certain keyboard functions, for the console window (CMD) I use:
; Redefine only when the active window is a console window  
#IfWinActive ahk_class ConsoleWindowClass 
; Close Command Window with Ctrl+w 
WinGetTitle sTitle 
If (InStr(sTitle, "-")=0) {  
        Send EXIT{Enter} 
} else { 
        Send ^w 
; Ctrl+up / Down to scroll command window back and forward 
Send {WheelUp} 
Send {WheelDown} 
; Paste in command window 
; Spanish menu (Editar->Pegar, I suppose English version is the same, Edit->Paste) 
Send !{Space}ep 

Microsoft Windows 2000 Scripting Guide - Sending Keystrokes to a Program

Sending Keystrokes to a Program

Microsoft® Windows® 2000 Scripting Guide

By providing scripts with access to most COM objects, WSH enables you to automate applications that have a COM-based object model. Unfortunately, some applications, especially older ones, do not have a COM-based object model. To automate these applications, WSH provides a way to send keystrokes to these applications.

When you use the WshShell SendKeys method to send keystrokes to an application, your script mimics a human typing on the keyboard. To send a single keyboard character, you pass SendKeys the character itself as a string argument. For example, "x" to send the letter x. To send a space, send the string " ". This is exactly what a user would do if he or she was working with the application: to type the letter x, the user would simply press the x key on the keyboard.

When you use the SendKeys method, special keys that do not have a direct text representation (for example, CTRL or ALT) are represented by special characters. Table 3.16 lists these SendKeys representations for commonly used keys.

Table 3.16 SendKeys Representations of Common Keys

Key SendKeys Representation














{ENTER} or ~



































All function keys, like F1, are represented by the button name contained within braces for example, {F1} for the F1 button and {F2} for the F2 button.

For example, the following script starts Notepad and then types the sentence, "This is a test."

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "Notepad.exe"
Do Until Success = True
    Success = objShell.AppActivate("Notepad")
    Wscript.Sleep 1000
objShell.SendKeys "This is a test."

When the script runs, Notepad will open, and the sample sentence will be typed in, as shown in Figure 3.12.

Figure 3.12 Controlling Notepad by Using SendKeys

See full-sized image.


You can send repeated keystrokes by using the SendKeys method. For example, to send the letter a ten times, you send the string "{a 10}". You must include a space between the keystroke and the number. SendKeys allows you to send only repeated single keystrokes. You cannot send multiple characters using repeated keystrokes; for example, this command will fail: {dog 10}.

You should be aware that sending keystrokes to an application is not the optimal method for automating a procedure. If you have an application in your enterprise that you need to automate and it has no COM-based object model, you might consider this technique. However, you should first examine whether other methods exist for automating that particular application.

Although SendKeys can be used effectively, there are several potential problems with this approach:

This timing issue is especially troublesome, simply because scripts tend to run much faster than GUI applications. For example, this simple script, which starts Calculator and then tries to type the number 2 into the application, is coded correctly but will likely fail when run (Calculator will start, but the number 2 will not be entered):

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "Calc.exe"
objShell.AppActivate "Calculator"
objShell.SendKeys "2"

The script fails not because of a syntax issue but because of a timing issue. As quickly as it can, the script issues commands to:

1. Start Calculator.
2. Switch the focus to Calculator (using the AppActivate method).
3. Send the number 2 to Calculator.

Unfortunately, the script runs faster than Calculator can load. As a result, the number 2 is sent, and the script terminates, before Calculator can finish loading and start accepting keystrokes.

There are at least two ways of working around this problem. First, you might be able to estimate how long it will take an application to load and then pause the script for that amount of time. For example, in this script the Run method is called, and then the script pauses for 5 seconds, giving Calculator time to load:

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "Calc.exe"
Wscript.Sleep 5000
objShell.AppActivate "Calculator"
objShell.SendKeys "2"

Of course, is some cases it might be difficult to estimate how long it will take before an application is loaded and ready to accept keystrokes. In that case, you can call the AppActivate method and check the return value.

Using AppActivate

Before sending keystrokes to an application, you must first ensure that the application is running and that the focus is on the application (that is, the application is running in the active window). You can use the AppActivate method to set the focus on an application. The AppActivate method brings the specified window to the foreground so that you can then start using the WshShell SendKeys method to send keystrokes to the application.

The AppActivate method takes a single parameter that can be either a string containing the title of the application as it appears in the title bar or the process ID of the application. The AppActivate method returns a Boolean value that indicates whether the procedure call has been successful. If the value is False, AppActivate has failed, usually because it was unable to find the application (possibly because that application had not finished loading).

You can place your script in a loop, periodically calling AppActivate until the return value is True. At that point, the application is loaded and prepared to accept keystrokes.

For example, this script checks the return value for AppActivate. If this value is False, the script pauses for 1 second and then checks the value again. This continues until the return value is True, meaning that the application is loaded and ready for use. At that point, the script continues.

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "Calc.exe"
Do Until Success = True
    Success = objShell.AppActivate("Calculator")
    Wscript.Sleep 1000
objShell.SendKeys "2"

When the script is determining which application to activate, the given title is compared to the title of each window visible on-screen. If no exact match exists, the AppActivate method sets the focus to the first window whose title begins with the given text. If a window still cannot be found, the first window whose title string ends with the text is given the focus. The partial matching with the leading and trailing text of title bars ensures that AppActivate works with applications, such as Notepad, that display the name of the currently opened document on the title bar. (For example, when you first start Notepad, the window title is Untitled - Notepad, not Notepad.)

This means that when setting the focus to the Calculator, you can use one of the following lines of code:

objShell.AppActivate "Calculator"
objShell.AppActivate "Calc"
objShell.AppActivate "C"

Of course, this shortcut method of referring to a window can cause problems. For example, suppose you use this line of code:

objShell.AppActivate "Calc"

If you happen to be working on a Microsoft Word document named Calculations.doc, the keystrokes might be sent to the Word document instead of Calculator.

The script in Listing 3.30 demonstrates a more practical use of the SendKeys method: It starts and sets focus to the Microsoft Management Console (MMC) and then sends keystrokes that cause the Add/Remove Snap-in and Add Standalone Snap-in dialog boxes to be displayed. The script automates the first part of the common task of constructing custom MMC snap-in tools.

Listing 3.30 Sending Keystrokes to a GUI Application

Const iNormalFocus = 1
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "mmc.exe",iNormalFocus

Wscript.Sleep 300

objShell.AppActivate "Console1"
Wscript.Sleep 100
objShell.SendKeys "^m"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{ENTER}"

AutoIt v3 - Automate and Script Windows Tasks - For Free!

AutoIt v3 is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting. It uses a combination of simulated keystrokes, mouse movement and window/control manipulation in order to automate tasks in a way not possible or reliable with other languages (e.g. VBScript and SendKeys). AutoIt is also very small, self-contained and will run on all versions of Windows out-of-the-box with no annoying "runtimes" required!

AutoIt was initially designed for PC "roll out" situations to reliably automate and configure thousands of PCs. Over time it has become a powerful language that supports complex expressions, user functions, loops and everything else that veteran scripters would expect.


AutoIt has been designed to be as small as possible and stand-alone with no external .dll files or registry entries required making it safe to use on Servers. Scripts can be compiled into stand-alone executables with Aut2Exe.

Also supplied is a combined COM and DLL version of AutoIt called AutoItX that allows you to add the unique features of AutoIt to your own favourite scripting or programming languages!

Best of all, AutoIt continues to be FREE - but if you want to support the time, money and effort spent on the project and web hosting then you may donate using the link to your left in the menu.

[Feb 29, 2008] Project details for Key Scripter

Key Scripter listens to key press/release events from a keyboard device and sends fake key events to an X display
. It supports gaming keypads such as the Nostromo SpeedPad and allows the creation and usage of complicated key scripts for games and other applications.

Release focus: Major feature enhancements

This release also supports Windows. A Win32 binary has been added to the download packages. To compile the source files on Windows, the latest release of MinGW is required. Additionally, this release fixes a few memory allocation bugs, adds support for wildcard binds, and provides improvements to debug messages. The example configuration file has been extended with extra features.

Andrei Romanov [contact developer]

[Nov 25, 2007] AutoHotkey - Free Mouse and Keyboard Macro Program with Hotkeys and AutoText Nice addition to windows.

AutoHotkey is a free, open-source utility for Windows. With it, you can:

Getting started might be easier than you think. Check out the quick-start tutorial.

More About Hotkeys

AutoHotkey unleashes the full potential of your keyboard, joystick, and mouse. For example, in addition to the typical Control, Alt, and Shift modifiers, you can use the Windows key and the Capslock key as modifiers. In fact, you can make any key or mouse button act as a modifier. For these and other capabilities, see Advanced Hotkeys.

Other Features

License: GNU General Public License

Free Workspace Macro Pro

Automate & schedule tasks easily. Reliable macro program & Windows automation software with macro scripting & task scheduler. Record keyboard & mouse or write macro scripts to create macros. User-friendly macro recorder & task automation tool. Features unique SMART macro technology, macro editing, repeat options, easy macro language, Turbo-speed replay, IE plug-in & customizable UI.

Use it to automate and schedule routine business processes like checking inventory, importing data into Excel or generating reports. Use advanced editing capabilities to optimize recorded macro scripts. Use it to perform system maintenance functions, test applications and web pages, automate data entry at high-speeds, intelligently copy data from one application to another etc. All with just a single click! The possibilities are endless. Rely on this 'Record once & play anytime' macro automation utility.

Use the add-on program Launch-n-Go to launch automation macros using hotkeys or keywords.

ShortKeys 98 Lite

A free keyboard-macro creator for all your Windows application, for saving repetitive keystrokes.

AutoMate Pro

Put your PC on autopilot by programming it to execute a variety of repetitive tasks. Automatically check e-mail, scan for viruses, back up files, and much more with this powerful utility. AutoMate lets you send keystrokes, button clicks, mouse movements, and positioning info on any specified schedule or trigger.

Macro Scheduler

Schedule programs to run at predefined times, and use the macro recorder facility to send keystrokes or mouse clicks that automate the task. Macro Scheduler features over 100 built-in commands that will make it easy for you to record macros and provide some level of automation that fits your program execution needs.


Invisible Stealth Keystroke and Activity Logger
Location: winsite-winnt archive Directory: miscutil/ Size: 138.6K

Invisible Stealth Keystroke and Activity Logger
File date: March 2, 1999
Archive: winsite-winnt Directory: miscutil/ Size: 138.6K

"the "Macro Express" program works very well and is relatively inexpensive compared to many others" [added Sept 08, 2004, thanks to Ron Perrella for the link]

Key Scripter by Andrei Romanov

This is for X allocations

Key Scripter listens to key press/release events from a keyboard device and sends fake key events to an X display. It supports gaming keypads such as the Nostromo SpeedPad and allows the creation and usage of complicated key scripts for games and other applications.

Recommended Links

Top Visited

Bulletin Latest Past week Past month
Google Search



Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers :   Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy


War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotesSomerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose BierceBernard Shaw : Mark Twain Quotes


Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 :  Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method  : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law


Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D

Copyright © 1996-2021 by Softpanorama Society. was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.

This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to to buy a cup of coffee for authors of this site


The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.

Last modified: March 12, 2019