
Preamble
No guarantee is made of the overall effect of the registry files contained in this zip file. You only my assurance that these have worked for me and for many others, and that I do not personally know of any problems. Running them is your own responsibility. If problems result, use the provided undo.reg file or restore your registry from the a backup that you have you made.


Purpose:  
This registry file takes advantage of the scan code mapper which is found in Windows 2000, Windows XP (and most likely going forward).  While the F Lock key is a hardware switch on the keyboard that cannot be programmatically controlled by the OS, we can use the above scan code mapper to essentially remap certain keys of our choosing.


Contents:
There are two registry files included in this zip file.

2gfl-f.reg - This registry file will essentially flip the F Lock state of your either your Natural Multimedia Keyboard, Multimedia Keyboard, Wireless Optical Desktop Keyboard, Wireless Optical Desktop Pro Keyboard or Wireless Optical Desktop for Bluetooth Keyboard.  Therefore, when F Lock is OFF (not lit), the function keys will function like normal (i.e. F1 will be F1, F2 will be F2 and so on).  When F Lock is ON (lit), the function keys will function as "enhanced" function keys (i.e. F1 will be Help, F2 will be Undo, F3 will be Redo and so on).  Note that this registry file will not work properly with the Office Keyboard.

undo.reg - This registry file will undo the changes caused by 2GFL-F.reg


Caveats:   
A system reboot is required to activate these key mappings. 

The mappings stored in the registry work at system level and apply to all users. These mappings cannot be set to work differently depending on the current user. 

The current implementation restricts the functionality of the map such that mappings always apply to all keyboards connected to the system. It is not currently possible to create a map on a per-keyboard basis.

More info can be found here:
http://www.microsoft.com/hwdev/tech/input/w2kscan-map.asp

Tech Info:
(The following information in this section is courtesy of Doug Harrison)

For the Natural Multimedia Keyboard, Multimedia Keyboard, Wireless Optical Desktop Keyboard, Wireless Optical Desktop Pro Keyboard or Wireless Optical Desktop for Bluetooth Keyboard, the scan codes are determined in the following manner.

F Lock Off (not lit)

Key	Make	Flag	Scancode
	Code
F1	0x3B	2	0xE03B	
F2	0x08	2	0xE008	
F3	0x07	2	0xE007	
F4	0x3E	2	0xE03E	
F5	0x3F	2	0xE03F	
F6	0x40	2	0xE040	
F7	0x41	2	0xE041	
F8	0x42	2	0xE042	
F9	0x43	2	0xE043	
F10	0x23	2	0xE023	
F11	0x57	2	0xE057	
F12	0x58	2	0xE058	


F Lock On (lit)

Key	Make	Flag	Scancode
	Code
F1	0x3B	0	0x003B
F2	0x3C	0	0x003C
F3	0x3D	0	0x003D
F4	0x3E	0	0x003E
F5	0x3F	0	0x003F
F6	0x40	0	0x0040
F7	0x41	0	0x0041
F8	0x42	0	0x0042
F9	0x43	0	0x0043
F10	0x44	0	0x0044
F11	0x57	0	0x0057
F12	0x58	0	0x0058


Notes: Flags is a driver-level concept. It maps to scan codes like this:
If Make Code is 0x3b and Flags is 2, then the scan code is 0xE03B.
Otherwise, if Flags is 0, then the scan code is 0x003B.

The mskey program reports scan codes of 0xFF3B when the Scancode Mapper needs 0xE03B.


Thanks to Doug Harrison for the technical explanation of how the scan codes are derived for the keyboards when F Lock is off as well as verifcation of the provided registry files.
