Possible Duplicate:
What peripherals or accessories help you program?

Outside the standard mouse/keyboard combination are there any other peripherals that you use to make you programming more efficient?

One option that I have considered is using AutoHotKey to script the buttons on a Logitech Wingman to run different functions/keystrokes that are not available on the keyboard.

+6  A: 

There has been a small plastic duck on the top of my monitor since 1984. (The monitors get upgraded, the duck remains. It's actually a broken RSPB pencil sharpener, rather than the canonical rubber variety.)

Pete Kirkham
+1 But what do you do with the duck while you are changing monitors? I recommend filling your coffee mug with watter and letting him have a little swim,
Is the duck your focal point? Takes the stress of looking at code?
John M
I imagine the duck is a friend who will interface with you in whatever way you need. He would be especially helpful while testing, as you can bounce test cases off him.
Dan Bryant
+3  A: 

I use AutoHotKey too, but I don't think using the mouse too much is a good idea. With the keyboard and AutoHotKey you have in your hands an infinite amount of commands and automation alternatives. Why do you need to assign a command to a combination of mouse clicks?

Why? Laziness mostly ... :) The hope is to replace commonly typed words/code blocks.
John M
+8  A: 

I have this thing called a coffee machine. It dispenses liquid energy and helps keep me going.

+4  A: 

In addition to keyboard and mice, of course extra monitors are likely the most important component here, in terms of number, size, and alignment.

Here are a few tips (from my own experience):

IMHO, the most important thing is aspect ratio. If you use an IDE (Eclipse/Visual Studio/etc.), I would strongly suggest that that your main monitor, the one showing your IDE, will be a widescreen. Most IDEs have a side-by-side structure, so it's super useful to have things like an outline or package view on the left and still enough space to see all the text. I am personally a fan of a 16:10 (like 1920:1200) over the HDTV 9:10 ratio.

Second, of course, is real estate. My vision is crap, but development is one of those things where you can't go wrong with extra space. My workplace supplies 20". I bought my own 26.5" 1920x1200 monitor for less than $300 and it really makes life difference. If you aggregate it over the time you spend in front of the monitor, it's worth every penny. Since you're coding, you could do well with any crappy TN panel. You don't really need perfect color reproduction for Eclipse or Visual Studio. So ignore the typical reviews or look for reviews on NewEgg where people discuss what they used for Dev.

Third, once you get a monitor, adjust the contrast (and the backlight, if you have access). Most monitors are configured out of the box to look good, and produce enough illumination to secure a parking lot in a shady neighborhood. Tune down the contrast to what is comfortable for you, and adjust throughout the day.

Fourth is color - A monitor is essentially a lamp that you stare into. Most IDEs use a white background. I found that I get a lot less eye fatigue by using a black background. On a mac, you can simply reverse everything in the "universal accessibility" config. On windows, your GFX card provides a setting to invert the colors. I keep my IDe monitor in an inverse. Be aware, this looks like crap, and you have to get used to a whole bunch of colors (e.g., red is now blue). Once you do, however, you might find your tolerance for staring at a monitor increasing tenfold. You may need to increase contrast, though. I keep my secondary monitor with normal colors.

If you follow the reverse contrast thing, check your glasses - if you use multifocals (some folks like myself do) and ,they get to be messed up around the edges.

I use 2x 17" Dell LCDs - what size are you using? How many?
John M
I started using two monitors a year or two ago, and I'm amazed at how much that helps. It's so nice to be able to have the code on one screen and the running program on another, or program output on one screen and a database query of the raw data on another, etc. You might be surprised at how often you want to compare two things. I suspect a really big monitor would be better still, as it would be more flexible.
I use a large primary monitor and a smaller secondary monitor. I like the ability to maximize windows and to have a different context - so even though I have a lot of real estate on the first monitor I still find the second one invaluable.
+1  A: 

I remember when I started University, the large CS labs were all Sun systems. The keyboards had an extra two columns of keys on the left-hand side (I think it was like this one:, but maybe it had even more extra buttons?). These extra buttons were supposed to help with things like running macros, and other dev tasks (though I'm not sure what "props" could have been for), but they never seemed to work, or were never enabled. There was one lab monitor who once bound them to macros for his WM.

Things I'd like to see: A keyboard with the number pad on the LEFT side (or better yet, a detachable numpad that can be snapped on to either side). For some kinds of work (especially with GUI-based design tools), there's a lot of back-and-forth between mouse and keyboard. The shorter that distance, the better.

As for scripting the Wingman for macros, how is that working? I imagine that there's a couple second's delay to get your hand onto the wingman, activate the button, and then go back to the keyboard. I'd rather just stick to a key-combination for a macro. Unless you use the wingman instead of a mouse, that might work better, But I don't really like joysticks at all. I have a Kensington Trackball with 4 buttons that can also be programmed (to a degree).

I wonder if anyone's used foot-based input devices to aid in progamming tasks. A gas-pedal bound to a "compile and run" button and the brake pedal to "Halt/break" could be fun. ;)

You got me thinking - I use a Kinesis Freestyle (propped up vertically) and it actually has a row of left hand keys (which I never use). I think remapping them will definitely help.
John M
I tried to use the Wingman enable scrolling ( I use a Logitech trackball with my left hand) but it didn't work well for that. The bulk of the unit makes it difficult to keep it really close to my keyboard (or on top of my vertical stand). I suppose that breaking it out of the case might work..but then some soldering might be required.
John M
I have definitely though about the pedals - If I ever run across a USB one at a garage-sale then I might give it a try. I would use the foot pedals to do 'Enter' and maybe another often pressed button.
John M
+1  A: 

Headphones and a 3x3, 4x4, and 5x5 cube. The cubes are for passing the time while I watch long unit tests run or need to sit on a conference call.


Personally, I find hot keys and macros are almost always more trouble than they are worth. It's just too hard for me to remember that hot-key-1 means this, hot-key-2 means that, etc. I'd rather just type a longish command.

Though something I'm surprised isn't being done (or if it is, I haven't seen it) is a configurable keyboard, where each key would have some mini-LCD panel so it could display the current value for that key. Then if you programmed hot-key-1 to be "Run the debugger" and hot-key-2 to be "Open a browser", it could actually show "Debug" and "Browser" or whatever on the keyboard. I would think that could be useful. Maybe with modern GUI environments it's easier to just put the buttons on the screen and use your mouse.

Antal S-Z
Oh, well then, I wonder if they sell them in six-packs.