Take the 2-minute tour ×

How can I disable the F Lock key on my Microsoft Natural Ergonomic Keyboard 4000 (v1.0)?

I don't want to physically disable the key so I would like a software fix. The keyboard is connected by USB and does not have a PS/2 connector.

share|improve this question

4 Answers 4

up vote 9 down vote accepted

Jason Tsang maintains a registry edit for Intellitype Pro keyboards to disable the F-lock key.

share|improve this answer
Looks good, but OMG, what a dirty hack! IntelliType's F key fudge is essentially a set of per-application macros. jtsang.mvps.org/usb_intellitype.html –  Damian Powell Aug 3 '10 at 16:30
@Damian Powell - yeah it's not ideal, but the Fkey is a mess anyways. –  JNK Aug 3 '10 at 16:37
That did the trick nicely. Thanks, @JNK. –  Damian Powell Aug 3 '10 at 18:03
Glad it helped! –  JNK Aug 3 '10 at 18:13
Good answer. I have been using this for years. This time around, I used Damian's script below, which I highly recommend. That way, you won't revert your custom key bindings to what they were in 2006. –  Neil Whitaker Mar 25 '11 at 20:20

The answer from @JNK led me to the URL below which describes how to simulate disabling the F Lock key by changing the configuration of IntelliType Pro.

The files on that page are specific to an older version of IntelliType and so I was apprehensive about using them incase I lost some other functionality from IntelliType. However, by comparing the original and modified files supplied there, I was able to write the following PowerShell 2 script which will make the equivalent changes to the commands.xml file for whichever version of IntelliType you happen to have installed.

If you don't know anything about PowerShell, then will probably be useless to you. If you do understand PowerShell - enjoy!

#requires -version 2
set-strictmode -version latest

$keyCodes = @(302, 203, 204, 307, 308, 309, 900, 901, 902, 401, 311, 310)
$matchRegex = '^\s*<C({0})\s.*$' -f ($keyCodes -join '|')

# This used to be:
#   $filename = "$env:ProgramFiles\Microsoft IntelliType Pro\commands.xml"
$fileName = "$env:ProgramFiles\Microsoft Mouse and Keyboard Center\commands.xml"
$backupFileName = $fileName -replace "\.xml$", ".original.xml"

if (-not (test-path $backupFileName)) {
    write-verbose "Backing up commands.xml"
    cp $fileName $backupFileName

$file = (get-content $fileName) -replace $matchRegex, ""

$xml = [xml]$file
$allAppsStd = $xml.DPGCmd.ALL.Application |
    ?{ $_.UniqueName -eq "StandardSupport" }

$nextFKey = 1

$keyCodes | %{
    $elemName = "C{0}" -f $_
    $fkey = "F{0}" -f $nextFKey


    $new = $xml.CreateElement($elemName)

    $new.SetAttribute("Type", "5")
    $new.SetAttribute("KeySeq", $fkey)

    $allAppsStd.AppendChild($new) | out-null

share|improve this answer
YOU ROCK! This needs to be run from a PowerShell prompt with administrator rights, and the appropriate process bit-width (32-bit or 64-bit... what's the right word to use). –  M. Dudley May 10 '12 at 20:15
@emddudley Is the phrase you're looking for "word length"? –  Damian Powell May 12 '12 at 0:15

The advice on Jason's Intellitype page didn't work on Windows 7. I re-mapped the functions of the keys (help, undo, etc.) to the actual Function keystroke using the keyboard software provided. Hit configure, choose from list of commands, keystroke... the the required F key when the window pops, & ok.

share|improve this answer

Put F-lock into the setting you want, then pop the key off. The keys are designed to come out without much effort, and will snap back in with no problem.

The keyboard will also remember the state of F-lock even after its powered down.

share|improve this answer

Your Answer


