Create an Automator service that runs a script like this:
if output muted of (get volume settings) then
set volume without output muted
else
set volume with output muted
end if
It doesn't show any feedback though. There's a small delay before Automator services are run. There's also a bug on 10.7 and 10.8 where the shortcuts for Automator services don't always work until the services menu is shown from the menu bar.
If someone else doesn't care about using additional applications, try FunctionFlip:
or KeyRemap4MacBook:
You can change individual keys by adding entries like this to private.xml:
<autogen>--KeyToKey-- KeyCode::F1, KeyCode::BRIGHTNESS_DOWN</autogen>
<autogen>--KeyToKey-- KeyCode::F2, KeyCode::BRIGHTNESS_UP</autogen>
<autogen>--KeyToKey-- KeyCode::F3, KeyCode::MISSION_CONTROL</autogen>
<autogen>--KeyToKey-- KeyCode::F4, KeyCode::LAUNCHPAD</autogen>
<autogen>--KeyToConsumer-- KeyCode::F5, ConsumerKeyCode::KEYBOARDLIGHT_LOW</autogen>
<autogen>--KeyToConsumer-- KeyCode::F6, ConsumerKeyCode::KEYBOARDLIGHT_HIGH</autogen>
<autogen>--KeyToConsumer-- KeyCode::F7, ConsumerKeyCode::MUSIC_PREV</autogen>
<autogen>--KeyToConsumer-- KeyCode::F8, ConsumerKeyCode::MUSIC_PLAY</autogen>
<autogen>--KeyToConsumer-- KeyCode::F9, ConsumerKeyCode::MUSIC_NEXT</autogen>
<autogen>--KeyToConsumer-- KeyCode::F10, ConsumerKeyCode::VOLUME_MUTE</autogen>
<autogen>--KeyToConsumer-- KeyCode::F11, ConsumerKeyCode::VOLUME_DOWN</autogen>
<autogen>--KeyToConsumer-- KeyCode::F12, ConsumerKeyCode::VOLUME_UP</autogen>
<autogen>--KeyToKey-- KeyCode::BRIGHTNESS_DOWN, ModifierFlag::FN, KeyCode::F1</autogen>
<autogen>--KeyToKey-- KeyCode::BRIGHTNESS_UP, ModifierFlag::FN, KeyCode::F2</autogen>
<autogen>--KeyToKey-- KeyCode::EXPOSE_ALL, ModifierFlag::FN, KeyCode::F3</autogen>
<autogen>--KeyToKey-- KeyCode::LAUNCHPAD, ModifierFlag::FN, KeyCode::F4</autogen>
<autogen>--KeyToKey-- KeyCode::VK_CONSUMERKEY_KEYBOARDLIGHT_LOW, ModifierFlag::FN, KeyCode::F5</autogen>
<autogen>--KeyToKey-- KeyCode::VK_CONSUMERKEY_KEYBOARDLIGHT_HIGH, ModifierFlag::FN, KeyCode::F6</autogen>
<autogen>--KeyToKey-- KeyCode::VK_CONSUMERKEY_MUSIC_PREV, ModifierFlag::FN, KeyCode::F7</autogen>
<autogen>--KeyToKey-- KeyCode::VK_CONSUMERKEY_MUSIC_PLAY, ModifierFlag::FN, KeyCode::F8</autogen>
<autogen>--KeyToKey-- KeyCode::VK_CONSUMERKEY_MUSIC_NEXT, ModifierFlag::FN, KeyCode::F9</autogen>
<autogen>--KeyToKey-- KeyCode::VK_CONSUMERKEY_VOLUME_MUTE, ModifierFlag::FN, KeyCode::F10</autogen>
<autogen>--KeyToKey-- KeyCode::VK_CONSUMERKEY_VOLUME_DOWN, ModifierFlag::FN, KeyCode::F11</autogen>
<autogen>--KeyToKey-- KeyCode::VK_CONSUMERKEY_VOLUME_UP, ModifierFlag::FN, KeyCode::F12</autogen>