Lots of different methods and recommendations out there on the WWW for this. Here are two which appear to work, especially when used at the same time.
First, a VBS which has to be run from a group policy set to loopback mode:
'''''''''''''''''''' ' Disable StickyKeys, Filter Keys, and ToggleKeys '''''''''''''''''''' On Error Resume Next Set ObjShell = Wscript.CreateObject("Wscript.Shell") RegKey = "HKCU\Control Panel\Accessibility\" ObjShell.RegWrite RegKey & "StickyKeys\Flags", "0", "REG_SZ" ObjShell.RegWrite RegKey & "Keyboard Response\Flags", "0", "REG_SZ" ObjShell.RegWrite RegKey & "ToggleKeys\Flags", "0", "REG_SZ" ObjShell.RegDelete RegKey & "Keyboard Response\Last BounceKey Setting" ObjShell.RegDelete RegKey & "Keyboard Response\Last Valid Delay" ObjShell.RegDelete RegKey & "Keyboard Response\Last Valid Repeat" ObjShell.RegDelete RegKey & "Keyboard Response\Last Valid Wait" Set ObjShell = Nothing
And second, an ADM file which can import as a new administrative template into a group policy. It goes in automatically as a user-mode policy:
CLASS MACHINE CLASS USER CATEGORY "Control Panel" CATEGORY "Accessibility Lockdown" KEYNAME "Software\Policies\Accessibility" POLICY "Automatic Reset" KEYNAME "Software\Policies\Accessibility" VALUENAME "TimeoutConfig" VALUEON NUMERIC 1 VALUEOFF NUMERIC 0 ACTIONLISTON KEYNAME "Control Panel\Accessibility\Timeout" VALUENAME "Flags" VALUE "3" END ACTIONLISTON ACTIONLISTOFF KEYNAME "Control Panel\Accessibility\Timeout" VALUENAME "Flags" VALUE "2" END ACTIONLISTOFF PART "Timeout after idle for" DROPDOWNLIST REQUIRED KEYNAME "Control Panel\Accessibility\Timeout" VALUENAME "TimeToWait" ITEMLIST NAME "5 minutes" VALUE "300000" NAME "10 minutes" VALUE "600000" NAME "15 minutes" VALUE "900000" NAME "20 minutes" VALUE "1200000" NAME "25 minutes" VALUE "1500000" NAME "30 minutes" VALUE "1800000" END ITEMLIST END PART END POLICY POLICY "Disable StickyKeys (including shortcut)" KEYNAME "Software\Policies\Accessibility" VALUENAME "StickyKeysLockdown" VALUEON NUMERIC 1 VALUEOFF NUMERIC 0 ACTIONLISTON KEYNAME "Control Panel\Accessibility\StickyKeys" VALUENAME "Flags" VALUE "506" END ACTIONLISTON ACTIONLISTOFF KEYNAME "Control Panel\Accessibility\StickyKeys" VALUENAME "Flags" VALUE "510" END ACTIONLISTOFF END POLICY POLICY "Disable FilterKeys (including shortcut)" KEYNAME "Software\Policies\Accessibility" VALUENAME "FilterKeysLockdown" VALUEON NUMERIC 1 VALUEOFF NUMERIC 0 ACTIONLISTON KEYNAME "Control Panel\Accessibility\Keyboard Response" VALUENAME "Flags" VALUE "122" END ACTIONLISTON ACTIONLISTOFF KEYNAME "Control Panel\Accessibility\Keyboard Response" VALUENAME "Flags" VALUE "126" END ACTIONLISTOFF END POLICY POLICY "Disable ToggleKeys (including shortcut)" KEYNAME "Software\Policies\Accessibility" VALUENAME "ToggleKeysLockdown" VALUEON NUMERIC 1 VALUEOFF NUMERIC 0 ACTIONLISTON KEYNAME "Control Panel\Accessibility\ToggleKeys" VALUENAME "Flags" VALUE "58" END ACTIONLISTON ACTIONLISTOFF KEYNAME "Control Panel\Accessibility\ToggleKeys" VALUENAME "Flags" VALUE "62" END ACTIONLISTOFF END POLICY POLICY "Disable High Contrast (including shortcut)" KEYNAME "Software\Policies\Accessibility" VALUENAME "HighContrastLockdown" VALUEON NUMERIC 1 VALUEOFF NUMERIC 0 ACTIONLISTON KEYNAME "Control Panel\Accessibility\HighContrast" VALUENAME "Flags" VALUE "122" VALUENAME "Pre-High Contrast Scheme" VALUE "" END ACTIONLISTON ACTIONLISTOFF KEYNAME "Control Panel\Accessibility\HighContrast" VALUENAME "Flags" VALUE "126" END ACTIONLISTOFF END POLICY POLICY "Disable MouseKeys (including shortcut)" KEYNAME "Software\Policies\Accessibility" VALUENAME "MouseKeysLockdown" VALUEON NUMERIC 1 VALUEOFF NUMERIC 0 ACTIONLISTON KEYNAME "Control Panel\Accessibility\MouseKeys" VALUENAME "Flags" VALUE "58" END ACTIONLISTON ACTIONLISTOFF KEYNAME "Control Panel\Accessibility\MouseKeys" VALUENAME "Flags" VALUE "62" END ACTIONLISTOFF END POLICY END CATEGORY END CATEGORY