This tip covers how to get Command and Option in the right place on an external PC keyboard, without stuffing them up on the built-in keyboard of a PowerBook. This is of great use to people who dock their laptop with a Windows keyboard, but don't like the "wrong" keyboard layout it produces and tire of constantly changing it back and forth in the system prefs. It would work with iBooks too.Part A: Getting the external keyboard right
- Click the Apple logo and open the System Preferences.
- Click the Keyboard & Mouse section, then select Modifier Keys on the Keyboard tab.
- Swap the functions for the Option and Command keys.
Part B: Fixing the internal keyboard
Using the instructions from snark.de (no affiliation), we are going to swap the Option and Command keys (again), but this time only on the internal keyboard. Note that it is a very good idea to first back up the file we are going to modify:
cp /System/Library/Extensions/AppleADBKeyboard.kext/Contents/Info.plist \
~/AppleADBKeyboard.backup.plist
- Open a Terminal window and run this command:
sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit \ /System/Library/Extensions/AppleADBKeyboard.kext/Contents/Info.plist - Find the section ADBVirtualKeys that looks like this:
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x3B,0x37,0x38,0x39,0x3A,0x7B,0x7C,0x7D,0x7E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x3C,0x3D,0x3E,0x36,0x7F - From the guide, we can see that we want to swap 0x37 (Command) and 0x3A (Option), so it looks like this when done:
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, 0x30,0x31,0x32,0x33,0x34,0x35,0x3B,0x3A,0x38,0x39,0x37,0x7B,0x7C,0x7D,0x7E,0x3F, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x3C,0x3D,0x3E,0x36,0x7F - Now you can reboot to apply the changes, or reload the kernel extension. The command to reload the extension is:
Note that this must be run as a single command, otherwise you won't be able to type the second part of the command.sudo kextunload /System/Library/Extensions/AppleADBKeyboard.kext && \ sudo kextload /System/Library/Extensions/AppleADBKeyboard.kext
Note: There is a comment in the snark.de guide about clearing a bunch of caches so the changes don't revert. I did this, and the changes haven't reverted yet. I wont repeat that info, it's all in the snark.de guide. The changes made may be reset during a system update. Presumably they can just be reapplied after the update. This was tested on a 12" 1.5Ghz Powerbook G4, running OS X 10.4.5.

