If you are like me, you don't have volume control keys and maybe want to assign function keys to volume control keys. (I simply suggest to use function keys because that's all I got as free keys on my Apple keyboard M2452. If your keyboard has multimedia keys or wheel, obviously you don't want to do this.)
I was looking for a way to bind unassigned function keys to volume control keys without using Apple scripts or thrid party applications. The reasons that I didn't want to use them are:
- AppleScript runs slow and it shows up in Dock for a short period of time. (According to Rammjet, you can use Dock Dodger to avoid this short appearance.)
- When AppleScript runs, it takes away the system focus from the current application. For example, a full-screened DVD Player shrinks back to a window of normal size because AppleScript takes the focus. (According to Rammjet, you can change the way that AppleScript lunches a script such that the system focus doesn't move to AppleScript.)
- Without a Bezel icon, the user should solely rely on the sound to judge the volume level.
- Usually third party applications which binds keys to scripts stay on Menu Bar or Dock and they need to be run at least once every time after reboot (or need to be registered as a Login Item.)
- None of above.
- It runs fast and whenever assigned function keys are pressed, the system receives corresponding virtual volume control key signals. Hence Apple original Bezel icons trivially show up.
- This third party application doesn't stay anywhere on screen (and runs as a background daemon).
Here's a detailed demonstration of binding F9 key to Volume Down key. (Don't get scared. It's just step by step instructions.)
- Download and install ControllerMate. It requires rebooting the system. Reboot the system.
- Run System Preferences, select Keyboard & Mouse, and choose Keyboard Shortcut. Make sure that F9 key is not assigned to any actions. Close System Preferences.
- Run ControllerMate in Applications folder. Then under Window menu, select Keystrokes Palette. (You should see Volume Down, Volume Up, Mute, and Media Eject keys in Keystokes Palette window.)
- On the left panel of ControllerMate window, click Programming button and check Start Page to enable this diagram page (not for editing but for key binding action).
- On Palette window, choose Controller from the drop down list. Your keyboard icon should show up. Click your keyboard icon.
- Press F9 key to find the blinking F9 key icon on Palette window. Drag and drop the icon the the right panel of ControllerMate window. Drag and drop Volume Down key icon on Keystrokes Palette window to the right panel of ControllerMate window. Grab OFF in F9 icon to drop it on Volume Down icon in ControllerMate window. They should be connected.
- Save and quit ControllerMate.
- Hold down F9 key to see if a Bezel shows up while the volume is decreasing.
P.S. As of today (11 February 2008) at my best knowledge, there's no application that catches volume key signals (because OS X intercepts them before applications receive them) and that there's no application which can generate volume key signals except ControllerMate. Hence if you find out either how to generate volume key signals or binaries in the file system doing volume control functions, you wouldn't need any additional application to be installed. If you find any of these, please report to the community.
P.P.S. It is not surprising that I am not the first one who asks the above (original) question. But it is surprising that some one already had the exact same (partial) solution and posted here, and I couldn't find it. Oh, well, what a pollution. Thanks to Mebster, here's the link to the little Q&A which happened ages ago.