<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d6566853\x26blogName\x3d1%25+inspiration\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLUE\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttp://patke.blogspot.com/search\x26blogLocale\x3den\x26v\x3d2\x26homepageUrl\x3dhttp://patke.blogspot.com/\x26vt\x3d8220196945898414734', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>

Monday, March 09, 2009

I have been dissatisfied with the Windows clibboard for a long time now. Copying and pasting is so integral to my daily work that it is frustrating to be limited by such simple functionality.

Now - complaining about the windows clipboard is nothing new and a range of programs have been made available to make the clipboard more feature rich. I have tried many of these programs - including clipx (the best of a bad bunch) - but have always been distracted by the complexity of such programs. For example, I don't want everything I copy to be kept in memory indefinitely. I copy a lot and this approach ends of keeping track of a lot of junk I don't care about.

So in the end, I decided to write my own clipboard manager.

The first step in this process was to create a keyboard monitoring program so I can check for keyboard events (for example Ctrl+C). In creating this program, I realized that I was creating a program similar to AutoHotKey which would make it easy to provide functionality beyond a simple clipbourd manager. ...and well, I got carried away. This is a list of the keyboard combinations my clipboard manager currently uses:

Ctrl+C then Numpad1 = Save the clipboard information to the numpad1 memory slot.
Ctrl+1 = Retreive the clipboard information stored in the numpad1 memory slot.
Ctrl+C then Numpad9 = ditto.
Ctrl+9 = ditto.

Ctrl+Numpad0 = If the clipboard contains formatted text, clean the text up. Very helpful when pasting too / from word.

Ctrl+browser back key = Show the contents of the clipboard.

Ctrl+. = Shows the save clipbard contents window (below).

Ctrl+PrtScn = Takes a screenshot of the entire screen and presents this image seamlessly to the user. Then the user can take a "clip" of the screenshot and store the clip to memory. This makes it very easy to take partial screen shots (like those used in this blog post).

The final feature of my "clipboard manager" program is probably the most interesting - and difficult to explain. I noticed that I spend a lot of time in Windows Explorer looking for files. I also noticed that the directories I am working with tend to be dependent on the context of the work I am doing. So what I needed was a way to switch directory contexts. I achieved this by using a feature of Windows Vista I had not previously noticed - Windows Explorer Favourite Links.

A picture is worth a thousand words - so consider this screen shot:

By clicking on the "clipboard manager" icon in the taskbar, I am presented with a menu containing the possible contexts I can switch to. This list of contexts is the same as the list of folders in my homedirectory/Context directory. These folders contain a list of directory shortcuts. Clicking on a context replaces my current list of favorites with the "favorites" stored in one of my context folders. It also adds the contents of the "General" folder which contains links which are common across all my contexts.

A bit difficult to explain, but this feature has saved me A LOT of time and made it much easier for me to navigate on my computer.

...so much so that I thought I would share the idea with the world. :-)

I know what your thinking: What about releasing the code so everyone can use it? Well, two problems with this. One, the code is still in development - I don't think I am done adding features yet. Two, the program is very specific to my way of working and I am not sure how helpful it would be to others. ...it is even built specifically for the keyboard I use - a Microsoft Ergonomic 4000.

Comments: Post a Comment