How to Increase Your Computer Operation Efficiency
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, 2009-08-26
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.)
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 achieve 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. As a example of a less efficient way, is to actually type the url text in the browser field. As a example of more efficient way, is by pressing keys to copy & paste instead of using the mouse. (because, using the mouse to select a menu item, involves precision exertion and eyeballing brain work to hit the right menu item)
Now let's consider the task of switch/launching a web browser. There are different methods of varying efficiency. For example, a typical savvy user will press “Alt+Tab” to switch to it if it already launched. Otherwise, he may pull Start menu with mouse, then select the browser app from the menu. Or, she may press the Start key with keyboard, and press arrow keys to select the browser app from menu (this is more efficient).
But as a example of a more advanced system, is for someone to have a customized shortcut setup so one single button press will launch the right browser, and if it is already running, switching to it. (in fact, many keyboards have a special key for this, usually labled “Web/Home”.)
But, let's consider a even more advanced operation. For someone using emacs, he may have a scripted customization such that he presses one single button, and a browser is auto launched/switched and the url automatically loaded. (as you get more advanced in efficiency, you also needs more time in learning automation systems, from macro tools to scripting languages.)
I don't care if you are a linux user, whatever Ratpoison interface you are using, what command-line nutcase motherfuck you are, or how you've customized your keyboard with X11 xmodmap, i assure you, that i'm able to operate my Mac or Windows with my own custom setup more efficient than you, and faster than you too. (efficiency doesn't ensure fast, because speed involves performance aspect too (e.g. if you are a centenarian, doesn't matter how efficient your methods are, you are likely to be slower than a average 18 years old computer user.). But since i'm atheletic and touch type 85 wpm, so, adding my efficiency, i'm certainly faster too.)
I use a Dvorak keyboard layout, and on either Mac or Windows, i am intimately familiar with ALL its keyboard shortcuts. ALL. Not just that. I've also explored to the hilt on how to customize the system, may it be key macros, some system automation scripting, or some level of OS modification, on either OS. But that's not all. Even knowing all of the above, to become most efficient, you must have arrived at a operational method that symphonize each aspect of the system to achive maximum over all efficiency. (input aspects include: keyboard shortcuts, macros, key remappings, and physical keyboard hardware (those modifiers and extra buttons, their physical positions, software keymappings), and the OS behavior and each app's behavior). It is important that one must take all aspects into consideration if the goal is ultimate operational efficiency. For example, suppose you are a keyboard freak like many linux tech geekers who take every opportunity to insist that mouse users are idiots. However, if the task is opening various links in a browser, keyboard operation is a magnitude slower than using a mouse. This is just a obvious example, similar other obvious examples are operating image editing or drawing software, including many gaming situations or 3D modeling environment, where keyboard as a input system are simply unworkable.
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.
Use A Good Keyboard
Use a good keyboard, preferably Microsoft's ergonomic ones. For tips on choosing a good keyboard, see: Computer Keyboards Gallery.
Master OS's shortcut system
“Master” means you know all such shortcuts that exists by default, 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. (available for both Mac and Windows) 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. Try QuicKeys from 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
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 most suitable for automation here.)
Keyboard systems work together with scripting langs. 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.
Some Windows Shortcuts
The following are for Windows Vista.
Closing Tab or Window
|Ctrl+F4||Close current tab or window|
|Ctrl+w||Close current tab or window|
|“Ctrl+Tab” & “Ctrl+Shift+Tab”||Switch tabs|
|“Ctrl+PageUp” & “Ctrl+PageDown”||Switch tabs|
|“Win+Tab” and “Win+Shift+Tab”||Flip 3D|
|Win+Alt+Tab||Flip 3D (don't go away mode)|
|“Alt+Tab” & “Alt+Shift+Tab”||Switch apps/window|
|Ctrl+Alt+Tab||Switch apps/window (don't go away mode)|
|Win+t||Put focus on task bar|
|Win+b||Put focus on system tray|
|Win+m||minimize all windows|
|Win+Shift+m||un-minimize all windows|
|Win+Space||Start current window's system menu|
|Win+u||open ease of access folder|
Misc & Todo
What's window's shell command to launch a app? e.g. on osx, i can launch firefox at a url with “open -a firefox ‹url›”.
e.g. “start firefox yahoo.com”.
How to disable the Sleep key on the keyboard?
Go to the Control Panel, click on Classic View, then Power Options. There's a setting you can set.
Is there a way so that i can press a key and switch me to a particular app? That is, launch it if it is not running, otherwise just switch to it.
There no built-in way on Windows, but you can do it with AutoHotKey. Basically, you need a script that checks if the app you want is already running, if so, switch to it, else, launch it.
The solution is at this page: AutoHotKey Basics.
Is there a way to set a app to launch only a single process? For example, i prefer Firefox to have a single process with many tabs, so i don't have to Alt+Tab among several FireFox instances. Some app, such as Windows Mail, iTune, Skype etc, are apparently setup this way.
How to set a shortcut involving Win+‹key›?
When i press “Ctrl+Alt+Shift+3”, the MediaSmart DVD starts. How to disable this shortcut? (because the shortcut is meaningful in Second Life)
Don't know. Apparently, uninstall that software also takes off the shortcut. But there must be a proper way to just remove the shortcut.
For reasons unknown to me, Win+n seems to launch different apps. I do not know what sets these hotkeys. What's more strange, is that few weeks later, i noticed that the apps they launch changed. Here's what they are, before and after.
Win+1 = Google Chrome, hide show desktop? Win+2 = Safari, emacs Win+3 = Cygwin, Google Earth Win+4 = Gimp, Gimp Win+5 = Google Earth, InkScape Win+6 = IrfanView, IrfanView Win+7 = IE, XnView Win+8 = Firefox, IE Win+9 = Opera, Google Chrome Win+0 = Second Life, Firefox