Perm url with updates: http://xahlee.org/mswin/keyboard_macros.html
Keyboarding & Macros in Mac and Windows (How to Increase Your Computer Operation Efficiency)
Xah Lee, 2009-05-26, ..., 2010-09-18
I'm a operation efficiency nerd. When operating a computer, you have to switch apps, click links/checkbox/buttons, invoke menus, open/close window or tab, adjust volume, change songs, switch input focus, switch fields, input/edit text, or perform pointer oriented input such as in a image editing software. (here, we are excluding other forms of input such as voice) In general, all these are inputs, done by using input systems, a combination of software and hardware. Typically, the hardware is just keyboard and mouse (or touchpad or trackball). The software part is the interfaces used in the OS and various apps.
Operation efficiency means you are able to achieve a input task with the least number of units of physical exertion, basically means less keystrokes, less mouse travel, and most importantly, less brain work to carry the task out. (brain work, such as the need to eyeball a process, is actually the most costy.)
Example: Open a URL in Browser
As a concrete example, let's say you have a url in a text editor. Say you want to view that url in a browser. There are many ways to do that. One way, is to use mouse to select the url, right click to select the copy menu, switch or launch a browser (many ways to do this), put focus on the url field, then right click to paste it, then hit Enter to load the url. This method, is rather most typical. Here's the detail of each step.
Selecting Text and Copy
- Selecting text: Move your mouse and aim the pointer at the beginning of text you want to copy. Press and hold down left mouse button. Move your mouse and aim the pointer at the end of the text. Release the mouse left button.
- Copy Text: Move the mouse and aim the pointer at the selected text. Press the right mouse button (to bring up the contextual menu). Move the mouse and aim the pointer at the menu item “Copy”. Press the left mouse button.
A much more efficient method for copying text, is to simply hold the Ctrl, then press the c key, then release the Ctrl key. With this method, you don't have the visual/muscle coordination task of aiming the mouse pointer, which is required 2 times with the mouse method. Also, you do not have the visual selection process of choosing a menu, which requires you to scan the menu texts. Copying a text by 【Ctrl+c】 is purely a mechanical process, involves basically just a single step, and for those touch-typists, it's in muscle memory.
A even more efficient method that eliminate the “Selecting Text” step, is that in some editors such as Microsoft Visual Studio, you can press 【Ctrl+c】, and if there's no text selection, the whole line will be copied. So, it saves you the operation of select the line first.
As a example of a less efficient way, is to actually type the url text in the browser field instead of copy and paste. Some people actually do this.
Open a Web Browser Window
Now, here's several ways to open a web browser window.
- Method 1. Launch browser by Quick Launch: Move mouse and aim the pointer at the browser icon in your Quick Launch bar in your Task Bar. Press left mouse button.
- Method 2. Launch browser by Start Menu: Press the Start key on the keyboard. Move mouse and aim the pointer a menu item that is your browser.
- Method 3. Switching to browser: Press and hold down the Alt key. Press Tab key. Press Tab, visually check if the highlighted icon is the app you want. Repeat the previous step until your browser is highlighted. Release the Alt key.
- Method 4. Keyboard Special Button. Press the keyboard special button named “Web/Home”.
Of the above methods, the “web/home” keyboard button press is the most efficient. This button is available in many of today's keyboards since about early 2000. For exmaple Microsoft Natural Ergonomic 4000. Or, you could've setup one of your function keys to launch/switch browser. (See: AutoHotkey Basics.)
The second most efficient method above is launching by Quick Launch. Clicking a button on a button bar, and is more efficient than going thru menu.
Visit a URL in browser
- Select the URL Field in Browser by Mouse: Move mouse and aim the pointer at the url field. Press the left mouse button. (in modern browsers, this usually select the whole url in the field. Otherwise, you have to press 【Ctrl+a】 to select the text.)
- Pasting Text by Mouse: Press the mouse right button. Mov move the mouse and aim the pointer on the contextual menu item “Paste”. Press the Left mouse button.
Now, consider the following method by keyboard:
- Select the URL Field in Browser by Keyboard: Press and hold down Ctrl. Press l key.
- Pasting Text by Keyboard: Press and hold down Ctrl. Press v key.
The keyboard is much more efficient, again because it involves less hand/eye coordination, and no brain visual processing of scanning text in menu.
Now, let's consider a example case of extreme efficiency. If your text editor is Emacs, you can skip the steps of selecting url, copy the url, launching the browser, paste the url. All you have to do is place the cursor on the url, then call the command “browse-url”. This you can do by Typing 【Alt+x】, then type “brow”, then Tab to complete the name, then press Enter. This will copy the url, launch or switch to your default browser, and open the page of that url. And if you need to do this often, some people have setup a single key such as F8, so that pressing it does the whole thing.
How to Increase Your Computer Operation Efficiency
Here's some advice for Mac and Windows users for operational efficiency. The following list is roughly ordered from the most important tips first.
Learn Touch Typing
Most programers who don't touch type will start to groan when seeing this. Well, sorry fellas, but this is actually the most important tip for efficiency. Bite the bullet.
There is a question about whether to learn the Dvorak Keyboard Layout. If you don't already touch type, I highly recommend learning touch type with Dvorak. The drawback is that you won't be able to hop to any keyboard and start touch typing, at public libraries, or co-worker's computers, but you can always hunt-n-peck on QWERTY.
Use A Good Keyboard
Use a good keyboard, preferably Microsoft's ergonomic ones. For tips on choosing a good keyboard, see: Computer Keyboards Gallery.
I also recommend a keyboard with many special application launching keys and multimedia keys. The app launching keys are big time savers, and you can customize them to open your frequently used folders too. The multimedia keys such as Play/Pause, Mute, Next Song, are extremely useful if you use your computer to listen to music. Most of today's keyboard have these special keys.
I recommend Microsoft's Ergonomic 4000. It is a split, ergonomic, full-key, full-featured keyboard.
Master OS's shortcut system
Master OS's shortcut system. See:
“Master” means you know all the shortcuts in the OS, and you've examed and experienced and have decided which are better for you.
Learn The OS's Keyboard Config Settings
Learn the OS's ways to config the keyboard. On Windows, it's the keyboard icon under Window's Control Panel. On Mac, it's the Keyboard icon under System Preference. They allow you to tweak global keyboard hotkey settings, to various degrees.
If you have a Microsoft keyboard, i recommend the bundled IntelliType software. (comes in for both Windows and Mac versions) It lets you remap or disable keys or define macros to some extent.
Get A Keyboard Macro Tool
Note that there are also very good commercial ones. I've used QuicKeys on the Mac from 1991 to 2002. QuicKeys is now sold by http://startly.com/ (for Mac and Win). On the Mac, there's also Keyboard Maestro from http://www.keyboardmaestro.com/main/ i've used.
Learn A Scripting Lang
- Unix Shell Text Processing Tutorial (grep, cat, awk, sort, uniq)
- How to rsync, unison, wget, curl
- Mac OS X Resource Fork and Command Line Tips
On Windows, learn PowerShell. (See: PowerShell Tutorial) (There's also Visual Basic and cmd.exe, but PowerShell is the new .NET based shell that is more flexible, powerful, and suitable for automation and sys admin.)
Keyboard macros, launchers, shells, scripting langs, all work together as automation tools. For example, you often want a hotkey to invoke some script.
Learn OS's Keybinding API
Learn the OS's keybinding system or API. On the Mac it's the DefaultKeyBinding.dict system. It lets you re-define keys across OS to some extent by a simple config file. See: How To Create Your Own Keybinding In Mac OS X.
I'm not sure what's on Windows. Registry has a lot to do with keybindings at least. There are several tools too, see: How To Create Your Own Keybinding In Microsoft Windows.
Efficiency vs Effort in Learning and Setup
Note that efficient methods usually require you to spend time to learn the key shortcuts, learning the keyboard macro software, or learning scripting languages, and setting up your system.
If you spend only 1 hour a day on computer, apparently learning all the efficient methods is not worth it. How much time you invest in learning and setup these efficient methods depends how often you need to perform the task. Also, how easy it is to learn and setup a new system.