If I start up (eg.) cat on the Linux console, each release of the special Fn key inserts ^@ (that is, an ASCII NUL) into the input stream. Fn is a modifier key, it shouldn't result in anything when pressed alone (apart from a wakeup from S3). Showkey prints 0x00 0x81 0x8f 0x00 0x81 0x8f on release of the Fn key. Auto-repeat is also active for this key. The machine is a ThinkPad R50e laptop.
The Fn key is active in a thinkpad. If the kernel map assigns a keycode to it, it will work as any other key (well, as long as it is not pressed together with one of the ThinkPad ACPI hotkeys, that is). But I do wonder if something is broken in either your userspace, or your kernel. It should not be dumping NULLs in the input stream. Please inform us what kernel and userspace you're running, and please attach the kernel log.
My kernel is vanilla 2.6.37, its config and dmesg is attached to #27372. The userspace is Debian squeeze, but the issue is present in the early initramfs phase, if I boot with break=top: (initramfs) cat ^@ This early no modules are loaded, not even thinkpad_acpi, but the issue is present in the fully booted system as well.
Autolinkification actually works differently than I thought, let me try again... So kernel config is in attachment 44802 [details], and dmesg in attachment 44832 [details] (both belonging to bug 27372).
Could you please do: echo 1 > /sys/module/i8042/parameters/debug <wait 5-10 sec> Press Fn Release Fn <wait 5-10 sec> echo 0 > /sys/module/i8042/parameters/debug and post dmesg (lines mentioning i8042) please?
Created attachment 45752 [details] i8042 debug output i8042 debug output as requested in comment 4.
Tested with 2.6.38-rc6, the issue is still present.
Also seen on a Thinkpad T420s with 3.2.7.
Issue still present under 4.5.