Skip to content

Fn key and Fn lock feature

Christian edited this page May 13, 2026 · 29 revisions

Note

This page is dedicated exclusively to ThinkPads!

Stock BIOS (L series)

  • [2026-05-12] L440: BIOS 1.93 / ECP 1.11 (tested by killerbees19)
Stock BIOS settings Bit 0 @ 0x51
Bit 0 @ 0xc2
Bit 0 @ 0xc6
Bit 7 @ 0xc5 Bit 4 @ 0x0a
Bit 4 @ 0x51

(1) default value
(2) after Fn+Esc
 

FnLk LED state
(1) default state
(2) after Fn+Esc
(3) Fn keypress
Notes
sticky_fn=0
f1_to_f12_as_primary=0
0 0 0 / 1 off / on / - LED is off if hotkeys are active.
LED is on if F1-F12 are active.
Not affected by Fn keypress.
sticky_fn=0
f1_to_f12_as_primary=1
0 1 0 / 1 off / on / - LED is on if hotkeys are active.
LED is off if F1-F12 are active.
Not affected by Fn keypress.
sticky_fn=1
f1_to_f12_as_primary=0
1 0 0 / - off / - / on LED is always off by default.
LED is on while Fn key is active.
Fn+Esc is ignored!
sticky_fn=1
f1_to_f12_as_primary=1
1 1 0 / - off / - / on LED is always off by default.
LED is on while Fn key is active.
Fn+Esc is ignored!

Stock BIOS (T/X series)

  • [2026-05-08] T440p: BIOS 2.56 / ECP 1.13 (tested by killerbees19)
  • [2026-05-08] T450s: BIOS 1.37 / ECP 1.04 (tested by killerbees19)
  • [2026-05-13] X1 Carbon Gen 9: BIOS 1.77 / ECP 1.37
Stock BIOS settings Bit 3 @
0x00
Bit 4 @
0x03
Bits @
0x09
Bit 3 @ 0x3b
(1) default value
(2) after Fn+Esc
 
FnLk LED state
(1) default state
(2) after Fn+Esc
(3) Fn keypress
Notes
sticky_fn=0
f1_to_f12_as_primary=0
0 0 0x08 0 / 1 off / on / - LED is off if hotkeys are active.
LED is on if F1-F12 are active.
Not affected by Fn keypress.
sticky_fn=0
f1_to_f12_as_primary=1
0 0 0x04 0 / 1 off / on / - LED is on if hotkeys are active.
LED is off if F1-F12 are active.
Not affected by Fn keypress.
sticky_fn=1
f1_to_f12_as_primary=0
1 1 0x08 0 / - off / - / on LED is always off by default.
LED is on while Fn key is active.
Fn+Esc is ignored!
sticky_fn=1
f1_to_f12_as_primary=1
1 1 0x04 0 / - off / - / on LED is always off by default.
LED is on while Fn key is active.
Fn+Esc is ignored!

Test: EC Writes

Test Case
(T440p)
Bit 3 @
0x00
Bit 4 @
0x03
Bits @
0x09
Bit 3 @
0x3b
Sticky
Fn
FnLk
LED
F1-F12
mapping
Notes
cold boot (init) 0 0 0x08 0 off off hotkeys -
0x04 > 0x09 0 0 0x04 0 off off primary switched like BIOS
Fn+Esc pressed 0 0 0x04 1 off on hotkeys switched with Fn+Esc
0xd4 > 0x03 0 1 0x04 1 off off hotkeys LED is always off (except while pressing Fn)
Fn+Esc pressed 0 1 0x04 0 off off primary LED is always off (except while pressing Fn)
0xae > 0x00 1 1 0x04 0 on off primary LED represents sticky_fn state
0xc4 > 0x03 1 0 0x04 0 on off primary LED is always off
Fn+Esc pressed 1 0 0x04 1 on on hotkeys LED is always on
0x08 > 0x09 1 0 0x08 1 on on primary LED is always on
0x10 > 0x3b 1 0 0x08 0 on off hotkeys LED is always off

Sticky Fn State

Bits 0-1 in 0x0e are obviously reserved for sticky Fn operation! (Tested on T440p.)

  • 0x0: Fn key not pressed
  • 0x1: Fn key pressed (pressed once; waiting for another scancode)
  • 0x2: Fn key sticky (pressed twice; waiting until pressed again)

Coreboot (T/X series)

Bits (as of 2026-05-07)

  • Bit 3 @ 0x00: sticky_fn
  • Bit 3 @ 0x3b: f1_to_f12_as_primary (!)
  • Bit 4 @ 0xce: fn_ctrl_swap

Proposed Bit Usage

Pending Changes

  • CB:92601 ("ec/lenovo/h8: Implement FnLock LED")
    • CB:92602 ("mb/lenovo/haswell: Enable H8_HAS_FNLOCK_LED")
    • CB:92603 ("mb/lenovo/sklkbl_thinkpad: Enable H8_HAS_FNLOCK_LED")
  • CB:92604 ("ec/lenovo/h8: Fix 'f1_to_f12_as_primary' EC RAM registers")
  • CB:92605 ("[ABANDONED] ec/lenovo/h8: Implement FnLock LED")

Combined Patch Testing

Tested with branch fnx/builds/26.03+fnx2 on T440p, with CB:92604/CB:92601/CB:92602.

nvramtool settings Bit 3 @
0x00
Bit 4 @
0x03
Bits @
0x09
Bit 3 @ 0x3b
(1) default value
(2) after Fn+Esc
 
FnLk LED state
(1) default state
(2) after Fn+Esc
(3) Fn keypress
Notes
sticky_fn=0
f1_to_f12_as_primary=0
0 0 0x09 0 / 1 off / on / - LED is off if hotkeys are active.
LED is on if F1-F12 are active.
Not affected by Fn keypress.
sticky_fn=0
f1_to_f12_as_primary=1
0 0 0x05 0 / 1 off / on / - LED is on if hotkeys are active.
LED is off if F1-F12 are active.
Not affected by Fn keypress.
sticky_fn=1
f1_to_f12_as_primary=0
1 1 0x09 0 / 1 off / off / on LED is always off by default.
LED is on while Fn key is active.
Fn+Esc is not ignored!
sticky_fn=1
f1_to_f12_as_primary=1
1 1 0x05 0 / 1 off / off / on LED is always off by default.
LED is on while Fn key is active.
Fn+Esc is not ignored!

Result: New behaviour matches stock BIOS. However, Fn+Esc is functional with coreboot while sticky_fn=1 is enabled! (It's ignored with stock BIOS.)

Other Changes (Credits)

  • CB:51179 by Jamal Wright ("T440P: Enable FN Lock Inversion")

Clone this wiki locally