crazy HP envy 15 feature keys

My day-job computer is a HP Envy 15. It’s generally speaking a good, fast machine. But it has a couple of serious defects: one is the dreadful battery life, the other is the truly awful addition of a row of “feature” keys on the left-hand side of the keyboard. Using KeyTweak, I was able to disable or re-map all the keys except the Print key. That key sends the standard Windows key combination CTRL+p, and thus cannot be re-mapped because it’s sending two keystrokes rather than one. I’ve lived with this for the past couple of years, but I’m constantly hitting that Print key and opening up modal print dialogs all over the place. It’s particularly galling given the fact that I can’t remember the last time I actually had to print something! More than once I’ve considered simply ripping the key out of the keyboard…  Anyway, today I managed to bypass the problem by using Autohotkey:

  1. Download and install Autohotkey.
  2. Create a text file in your startup folder called something like disableprint.ahk
  3. Save the text file with the following content:   ^p::return
  4. The script will run on login and prevent CTRL+p from ever working again…

I realise this is old hat to most folk, but I really struggled to find a straight answer to disabling the Windows print shortcut, hence this post. Perhaps it will help someone else in the same situation.


I went down a few blind alleys before making this work, but if you have a Snow Leopard DVD then the answer is pretty easy. The reason I’m documenting this is because there is such a variety of advice out there – I need to keep a reminder of the quickest solution for me.

  1. Right-click the Command Prompt icon and choose Run As Administrator.
  2. Change to your DVD drive with Boot Camp DVD in it, F: in my case.
  3. cd to Boot Camp\drivers\apple
  4. Run bootcamp64.msi – it will attempt to install all the drivers. [I did try to install just the keyboard driver, but the usual UK/US keys got swapped around.]
  5. Reboot. Afterwards, I found that one or two of my devices didn’t work (sound for example) – removing them from Device Manager and then scanning for hardware changes resolved those problems. [Obviously this could be risky – there is a chance that a system critical driver could get stuffed up and you won’t be able to boot.]

The keys all output the correct characters on the screen, i.e. the characters which the keys physically have on them! Media keys, eject button and sound controls work. (The sound buttons show the Apple volume icons on screen when used.) Brightness control does not work. Also the Apple Magic Mouse works OK, although it doesn’t seem to support gestures, which is a shame.

UPDATE 5th Sept 2011: The Apple software updater popped up today asking to upgrade a few things, and without thinking about I said “yes”. Unfortunately, one of the upgrades was Bootcamp 3.3 – after the reboot, some of the Apple keyboard keys stopped working. I downloaded the Bootcamp 3.3 installer from the Apple website and installed it – after the reboot, the keyboard worked OK again. I guess version 3.3 is a bit less fussy about what it’s installed on.

This is one of those stupid problems which wasted a lot of time before I realised what to do, so I’m sharing it here in the hope it saves someone else the grief. I recently replaced my Microsoft keyboard, but the Intellitype software was still installed. So I went into Programs and Features to uninstall it. When I clicked on Intellitype in the list of programs, the only available action was Change, no Uninstall. I then went on an internet wild goose chase, trying to find out how to uninstall. The answer was obvious – click Change and the install wizard will appear with a button to Remove. Part of me feels very stupid, but OTOH it’s pretty bad that Microsoft can’t keep own programs consistent with their own Windows standards!

I’ve been using a beta version of Sparrow for a while and it is very, very good. In fact, it’s rare for me to get so excited about a new piece of software. I’ve needed a proper offline client for Gmail for a long time. Internet speed & reliability up here in Orkney are not great, mobile internet is GPRS only, so offline is an essential feature for me. I’ve tried using Thunderbird and the built-in Mail client, but neither offer proper support for my favourite feature of Gmail – labels. Sparrow does a great job of handling labels, in fact I’d say it’s better than the gmail website. The user interface is very attractive and efficient to use; I wish my software could muster anything like the same elegance!

Here are some tips for using Sparrow which I would have found helpful when getting started:

  • The little arrow at the bottom right opens up a preview pane with messages organised by thread – this is my preferred view in fact.
  • When you first start it up, Sparrow appears to be doing nothing, but behind the scenes it’s downloading stuff. Choose Window > Activity to see what’s going on.
  • Labels will appear gradually as stuff is downloaded. If, like me, you’ve got several gigabytes of mail, you need to be patient!
  • You can have multiple gmail accounts with different avatar pictures – see Preferences > Accounts.
  • [Edit – 2011/02/09] The context-sensitive menu when composing a message has lots of good stuff in it, like the ability to capture & insert a screenshot, add a hyperlink, etc.
  • [Edit- 2011/02/09] There are keyboard shortcuts which you can read about here.

There are a couple of things it would be nice to see added to Sparrow:

  • Sort conversations in reverse.
  • Add labels when composing a message.

But these are minor things. Sparrow is a really excellent email client which I wholeheartedly recommend. And customer support ( has so far been very good, in my experience at least.

I keep forgetting how to do this in LINQPad so I’m making a note of it here. The scenario is that I had a table called Qualifiers and wanted to delete several rows in it which had an ID beginning “ts”. The following code will filter out those rows into a collection then delete them when SubmitChanges is called.

Qualifiers.DeleteAllOnSubmit(from q in Qualifiers where q.Id.StartsWith(“ts”) select q);


This problem has been bugging me for months – when I try to Open or Save As in Windows 7 , I can’t sort the list of files using the column headers. If I click on any header, nothing happens, no error message either. Today, I found this post on a web board:

Sure enough, after a bit of clicking on the little dropdown arrows next to the header titles, I was able to sort the files normally again. Specifically, I changed it to use a date range (today) to filter the list, then removed that filter again. Phew! Many thanks to that poster (Imperfect1).

Updated 18/11: So the problem recurred the next time I used the dialog box. If I clicked on the little arrow, I noticed it says “computing filters”. If I wait until it stops saying that, sorting etc starts working again. If I can work out how to get it to stop (or speed up) “computing filters”, I’ll update this post again.

I expect everyone has already seen this piss-take history of programming languages. My two favourites, FWIW:

1987 – Larry Wall falls asleep and hits Larry Wall’s forehead on the keyboard. Upon waking Larry Wall decides that the string of characters on Larry Wall’s monitor isn’t random but an example program in a programming language that God wants His prophet, Larry Wall, to design. Perl is born.

1995 – Brendan Eich reads up on every mistake ever made in designing a programming language, invents a few more, and creates LiveScript. Later, in an effort to cash in on the popularity of Java the language is renamed JavaScript. Later still, in an effort to cash in on the popularity of skin diseases the language is renamed ECMAScript.

I’ve been wondering for a while what the philosophy is behind Newsgator’s change of direction from enterprise-focused newsfeed aggregation to wrapping a social face around Sharepoint. This post goes some way to explain that change, but I need to spend some time thinking about whether or not I agree that the majority of the users here at my organisation fit the new use-case…

I never thought the login screen for Windows XP was particularly good. But the Windows Vista login screen is just terrible! It’s fine if you’re using it as a home computer with a few users. But when it’s a domain computer, the login screen is horrible, for several reasons. Firstly, it’s extremely unintuitive – what the hell does Switch User mean when I haven’t logged in yet? Secondly, it makes me click twice to get to the stage of typing in my username. Thirdly, I have to know the name of my domain and the syntax for specifying domain\username because… Finally, my personal favourite, it defaults to the local PC name for the domain when you’re switching user. What on earth were Microsoft thinking when they decided that would be good idea? What possible scenario does this address? I thought they would surely fix this in the service pack, but no. In fact, this same functionality is still present in Windows 7. I actually really like many of the improvements in Vista and 7, but this “feature” is just baffling. Every time I see it, I am more amazed at how stupid it is. OK, rant over, just had to get that off my chest ;)

I’m currently slogging my way through learning Entity Framework. I saw it demonstrated at an NHS Scotland developers’ network event and was inspired to give it a try. I think the way I’ve been using TableAdapters and classes is not too far from what Entity Framework does, but obviously EF makes things a lot easier and more robust. It also forces me to make sure my database table relationships are in good order, which is no bad thing ;)

As part of getting into EF, one of the technologies which I’m learning for first time is LINQ. Yes, I know, I should have been looking at it long before this, but that’s just the way things worked out. Anyway, thanks to the Programming Entity Framework book from by Julia Lerman, I’ve found LINQPad. What a wonderful utility this is. Not only can I immediately see potential for more efficient and satisfying database querying, but it also works as a way of knocking up quick bits of test code in C#. If you’re learning LINQ then I’d say you can’t do without LINQPad. Hopefully the boss will let me buy the autocomplete version…

@davidrendall on Twitter