To make this work you have to use a third party tool: Karabiner.
To enable this you have to create a filter for the external keyboard and invert all function/consumer keys.
Prerequisites:
- Download, install and open Karabiner
- Open in the menulet Karabiner -> Preferences
- Open the tab Misc & Uninstall
- Hit the button Launch EventViewer
- Hit the tab Devices
- Make a note of the vendor and product ID of the external keyboard
- Close the EventViewer
- Hit the button Open private.xml
- Open the file private.xml with an appropriate editor
Enter the customized keycode and replace the vendor and product ID by IDs found above
<?xml version="1.0"?>
<root>
<devicevendordef>
<vendorname>Apple</vendorname>
<vendorid>0x05ac</vendorid>
</devicevendordef>
<deviceproductdef>
<productname>ExternalKeyboard</productname>
<productid>0x0256</productid>
</deviceproductdef>
<item>
<name>Function to Consumer for External Keyboard</name>
<identifier>private.function2consumerExtK</identifier>
<device_only>DeviceVendor::Apple, DeviceProduct::ExternalKeyboard</device_only>
<autogen>__KeyToKey__ KeyCode::F1, ConsumerKeyCode::BRIGHTNESS_DOWN</autogen>
<autogen>__KeyToKey__ KeyCode::F2, ConsumerKeyCode::BRIGHTNESS_UP</autogen>
...
</item>
<item>
<name>Consumer to Function for External Keyboard</name>
<identifier>private.consumer2functionExtK</identifier>
<device_only>DeviceVendor::Apple, DeviceProduct::ExternalKeyboard</device_only>
<autogen>__KeyToKey__ KeyCode::BRIGHTNESS_DOWN, ModifierFlag::FN, KeyCode::F1</autogen>
<autogen>__KeyToKey__ KeyCode::BRIGHTNESS_UP, ModifierFlag::FN, KeyCode::F2</autogen>
...
</item>
</root>
Replace the ellipses by all other necessary consumer and function keys
Save the file
- Open in the menulet Karabiner -> Preferences the tab Change Key
- Hit the ReloadXML button
- Enable the remappings. They should be listed at the beginning.
The final behavior should be as following with the function lock activated:
Internal keyboard:
F1: F1
Fn+F1: brightness up
External keyboard:
F1: brightness up
Fn+F1: F1
etc.
If you disable or skip the Consumer to Function for External Keyboard part it should act like this:
F1: brightness up
Fn+F1: brightness up
which means that the "function key layer" is disabled and only the consumer key layer is working.
etc.
Other possible keycodes:
KeyCode::EXPOSE_ALL, KeyCode::F3</autogen>
KeyCode::DASHBOARD, KeyCode::F4</autogen>
KeyCode::LAUNCHPAD, KeyCode::F4</autogen>
ConsumerKeyCode::KEYBOARDLIGHT_LOW, KeyCode::F5</autogen>
ConsumerKeyCode::KEYBOARDLIGHT_HIGH, KeyCode::F6</autogen>
ConsumerKeyCode::MUSIC_PREV, KeyCode::F7</autogen>
ConsumerKeyCode::MUSIC_PLAY, KeyCode::F8</autogen>
ConsumerKeyCode::MUSIC_NEXT, KeyCode::F9</autogen>
ConsumerKeyCode::VOLUME_MUTE, KeyCode::F10</autogen>
ConsumerKeyCode::VOLUME_DOWN, KeyCode::F11</autogen>
ConsumerKeyCode::VOLUME_UP, KeyCode::F12</autogen>