Your explanation is good.
I thought about it further, and I think I have to partially
agree with the reasoning, because of a key point that we haven't mentioned yet here
, and I think it's a very important one. Without it the explanation is incomplete.
You explain correctly the cost savings of having a chip with microcode on the planar versus on the keyboard. No one in their right mind would consider implementing something like this on a keyboard, which as you say, is designed to be cheap, replaceable and disposable.
However - you avoided one important question - why would such a chip even be necessary
? After all, there are millions and millions of cheap, sub $10 desktop keyboards being sold, all of which are completely standard and interchangeable, and you can be 100% certain none of them have any such chips inside them. The only thing that makes them standard and interchangeable versus the laptop keyboards, is the fact that instead of sending some physical key coordinates they send standard scancodes
, depending on the semantics
of the key that was pressed.
Why don't the laptop keyboards work in the same way? The answer, I believe, is Because of the Fn key and the associated special key combos
You see, the Fn key is not standard. It does not have its own scan code, nor does it modify other keys in any standard way (like Ctrl/Alt/Shift do). It is a proprietary addition by each individual laptop manufacturer. Furthermore, the Fn key combinations are designed to be intercepted at a very low level, before being passed to the keyboard controller. Essentially the BIOS microcode you refer to captures the physical keypresses and decides what to do with them. In some cases it translates it to standard scancodes and sends them to the keyboard controller, in other cases it translates them to other commands. This is why the thinklight and the LCD brightness keys work the same in the pre-boot environment and in the operating system environment, this is why hibernation works without installing any special keyboard driver, etc.
Given the above I wholeheartedly agree that such microcode has to be implemented somewhere, and of course it doesn't make sense to do it on the keyboard.
So why did I say I only "partially" agree?
Because I still think that it is possible to manufacture the keyboards so that the key coordinate codes they send to the BIOS are representative of the semantics and not just the location of the key. Evidently, Thinkpads always have offered several keyboard layouts, with different positions (and in many cases even extra keys) on the same model, and all of these models are compatible and are processed correctly by the same BIOS.
It just seems as if the keyboards are programmed/designed to send their own proprietary list of keycodes, and the engineers went through the trouble to keep the tables assigning meaning to them consistent within all the layouts on the same model lines, but here they for whatever reason decided to throw away the existing tables and create a new and incompatible one. Needlessly, it seems.