Thinkpad X1 Extreme: Fn key and Keyboard Firmware

‎11-27-201808:05 AM

Hello,

I recently purchased a brand new X1 Extreme, switching (like I suppose many people) from an older MacBook Pro. I am delighted with the machine, and in particular I found that the following key combinations are implemented in the same manner as the MacBook:

Fn + left = Home

Fn + right = End

However, some Fn key combinations are not implemented, and they do nothing. In particular:

Fn + up = Page Up

Fn + down = Page Down

Fn + backspace = Delete

Since the combinations are implemented by the keyboard controller firmware they cannot be added in software, much to the frustration of former Apple users.

So, my request is: would it please be possible to pass this request to the person who maintains the keyboard controller firmware on the X1 Extreme? Adding the missing combinations would maintain total compatibility with the current setup, and would increase the appeal of the X1 Extreme for all the MacBook refugees.

Re: Thinkpad X1 Extreme: Fn key and Keyboard Firmware

‎12-05-201810:58 AM

If you do add this "feature", please, please, please make it an option in BIOS that we can disable completely (and don't remove the physical Home/End/PgUp/PgDn keys). Having to use two hands to do something as simple as PgUp or PgDn defeats the purpose of having an efficient keyboard for those of us who type a lot. The current keyboard is one of the best mobile keyboards for typists, both for feel/feedback and layout.

Re: Thinkpad X1 Extreme: Fn key and Keyboard Firmware

‎05-29-201909:09 AM - edited ‎05-29-201909:28 AM

There might be a bit of confusion about the way the keyboard is handled. Let me clarify.At the hardware level, the keyboard is just a matrix of switches. The hardware keypresses are handled by a specialized microcontroller, with its own firmware; this controller handles things like keybounces, and eventually converts the keys, or key combinations, into "raw" key events that are passed to the software layer, like Windows, Linux, or whatever. The operating system receives the "raw" events and maps them, in software, to results like "page down", "Uppercase U with umlaut", "lowercase f", and so on.On some hardware platforms, notably Apple hardware, the "Fn" key has nothing special to it: the hardware keypress is just sent as a raw keyboard event. That means on Macs the software can tell that the actual "Fn" key was pressed, and you can map in software any "Fn" combination to whatever function or character you like. By default, the keyboard mapping (in software) maps "Fn+down" to PageDown, but you could make it print "G" instead, for example.On the X1 Extreme, conversely, the "Fn" key is special. The software layer knows nothing about it, and cannot tell that the key was pressed. Instead, the keyboard controller recognizes a fixed number of Fn key combinations, and converts them into different "raw" key events, exactly as if you had a larger keyboard with more keys. That is why the "Break" keycode can be generated by pressing "Fn+B", regardless of what the operating system is doing, or even if it is completely stuck. Conversely, Ctrl is just another key: you can map in software its role to whatever you like: it is just a matter of selecting (or creating) a keyboard mapping for Windows, or Linux, or whatever you are using. You can map "Ctrl-B" to any function or key, if you have the knowledge to alter the software keyboard map; you can even have the "Ctrl" key print "Q", if you like. That is just software: there are guides on the net to change the keyboard mapping to whatever you like.But, as I mentioned, "Fn" is special: only the fixed set of "Fn" combinations determined by the keyboard controller will generate raw events, and will look like additional physical keys. If you press "Fn+Down" on the X1 Extreme, the controller will just discard the event, and there is nothing you can do in software.Notably, the physical location on the keyboard of "Fn" and "Ctrl" keys is somewhat arbitrary: some people are used to having "Fn" in the bottom left corner, while others prefer to have "Ctrl" there, and "Fn" next to it. Because of this reason, it is possible to swap the two keys in the BIOS: the physical "Fn" key in the corner can be seen by the keyboard controller as "Ctrl", and vice versa. However, even in this case, the controller will consider "Fn" special: the physical "Crtl" key, remapped by the controller as "Fn", will still work as above, and only a fixed set of key combinations will be recognized.This is where the original request comes in. For people who are used to keyboards from Apple or other brands, some "Fn" combinations are customary, but they are unavailable on the X1 Extreme (and on some other Lenovo models). The request is to inform the keyboard controller firmware that those three key combinations are indeed valid, and should generate the same raw keyboard events as the pressure of the expected other key. That already happens right now with "Home" and "End": if you press "Fn+left arrow" the keyboard controller will generate the very same raw key event as if you had pressed the physical "Home" key: they are indistinguishable. No-one is suggesting that the "Home" key should be removed from its current location; the alternate key combinations are just an additional convenience for those used to it. Those that do not use them can just ignore them. Those that prefer to use "Ctrl" can create a software keyboard mapping to their liking. But if you want to map "Fn+down", "Fn+up", "Fn+backspace", right now there is nothing you can do, since the keyboard controller will never tell you that you pressed them.