Fn Lock indicator in Lenovo laptop | Kernel update Policy

So, my Fn Lock indicator works and doesn’t work on the version of kernel it is on. It didn’t used to work on linux version 4. It worked in linux 5 on stable branch and not in lts branch. It is not working again right now in my linux 6.1 kernel. Can anyone tell me how is it working and not working ?

Additionally, I also wanna query something about Kernel update policy.
So today I received an stable update in my system and during the entire update I didn’t receive any kernel update at all. I remember downgrading to Stable kernel 5.15.8(something) so that my indicator could work. Now I got to know that the kernel I previously downgraded isn’t supported, I had to manually upgrade it. Normally during an update the package manager would normally remove the previous kernel and install the kernel that is to be supported and up-to-date with branch it is on.
I would love to know if I lack any knowledge on these things.

System:
  Kernel: 6.1.0-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 12.2.0
    Desktop: KDE Plasma v: 5.26.4 Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Laptop System: LENOVO product: 82B1 v: Lenovo Legion 5 
    serial: <superuser required>
    serial: <superuser required> UEFI: LENOVO v: FSCN14WW date: 08/26/2020
Battery:
  ID-1: BAT0 charge: 50.7 Wh (100.0%) condition: 50.7/60.0 Wh (84.5%)
    volts: 17.2 min: 15.4 model: Celxpert L19C4PC0 status: full
CPU:
  Info: 8-core model: AMD Ryzen 7 4800H with Radeon Graphics bits: 64
    type: MT MCP arch: Zen 2 rev: 1 cache: L1: 512 KiB L2: 4 MiB L3: 8 MiB
  Speed (MHz): avg: 2728 high: 2900 min/max: 1400/2900 boost: disabled
    cores: 1: 2900 2: 2900 3: 2900 4: 2900 5: 2900 6: 2900 7: 2900 8: 2900
    9: 1664 10: 1397 11: 2900 12: 2900 13: 2900 14: 2900 15: 2900 16: 2900
    bogomips: 92658
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
Graphics:
  Device-1: AMD Renoir vendor: Lenovo driver: amdgpu v: kernel arch: GCN-5.1
    bus-ID: 05:00.0 temp: 31.0 C
  Device-2: IMC Networks Integrated Camera type: USB driver: uvcvideo
    bus-ID: 3-3:2
  Display: x11 server: X.Org v: 21.1.6 driver: X: loaded: modesetting
    dri: radeonsi gpu: amdgpu resolution: 1920x1080~144Hz
  API: OpenGL v: 4.6 Mesa 22.3.1 renderer: AMD Radeon Graphics (renoir LLVM
    14.0.6 DRM 3.49 6.1.0-1-MANJARO) direct render: Yes
Audio:
  Device-1: AMD ACP/ACP3X/ACP6x Audio Coprocessor vendor: Lenovo driver: N/A
    bus-ID: 05:00.5
  Device-2: AMD Family 17h/19h HD Audio vendor: Lenovo driver: snd_hda_intel
    v: kernel bus-ID: 05:00.6
  Sound API: ALSA v: k6.1.0-1-MANJARO running: yes
  Sound Server-1: JACK v: 1.9.21 running: no
  Sound Server-2: PulseAudio v: 16.1 running: yes
  Sound Server-3: PipeWire v: 0.3.63 running: yes
Network:
  Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
    vendor: Lenovo driver: r8169 v: kernel port: 2000 bus-ID: 03:00.0
  IF: eno1 state: down mac: <filter>
  Device-2: Intel Wi-Fi 6 AX200 driver: iwlwifi v: kernel bus-ID: 04:00.0
  IF: wlp4s0 state: up mac: <filter>
Bluetooth:
  Device-1: Intel AX200 Bluetooth type: USB driver: btusb v: 0.8 bus-ID: 5-3:3
  Report: rfkill ID: hci0 rfk-id: 4 state: down bt-service: enabled,running
    rfk-block: hardware: no software: yes address: see --recommends
Drives:
  Local Storage: total: 476.94 GiB used: 148.31 GiB (31.1%)
  ID-1: /dev/nvme0n1 vendor: SK Hynix model: HFS512GD9TNI-L2A0B
    size: 476.94 GiB temp: 27.9 C
Partition:
  ID-1: / size: 468.09 GiB used: 148.31 GiB (31.7%) fs: ext4
    dev: /dev/nvme0n1p2
  ID-2: /boot/efi size: 299.4 MiB used: 288 KiB (0.1%) fs: vfat
    dev: /dev/nvme0n1p1
Swap:
  ID-1: swap-1 type: file size: 512 MiB used: 0 KiB (0.0%) file: /swapfile
Sensors:
  System Temperatures: cpu: 33.4 C mobo: N/A gpu: amdgpu temp: 31.0 C
  Fan Speeds (RPM): N/A
Info:
  Processes: 338 Uptime: 24m Memory: 15 GiB used: 3.6 GiB (24.0%)
  Init: systemd Compilers: gcc: 12.2.0 clang: 14.0.6 Packages: 1488 Shell: Zsh
  v: 5.9 inxi: 3.3.24

Hope you have a great day.

i googled and found this

First, determine the keycode for the fn key on your keyboard. You can do this by using the showkey command and pressing the fn key. The keycode for the fn key will be displayed on the terminal.

Next, use the setkeycodes command to remap the fn key to the key value of the fn lock indicator. For example, if the keycode for the fn key is 200, you can use the following command to remap the fn key to the fn lock indicator:

setkeycodes 200 133

This will enable the fn lock indicator on your Lenovo Legion 5 running Manjaro. You can verify this by pressing the fn key on your keyboard and checking if the indicator light on your keyboard or the on-screen notification appears.

Note that these steps may vary depending on the specific keyboard layout you are using on your Lenovo Legion 5. If you are having trouble following these steps or if the fn lock indicator is still not appearing, you may need to consult the documentation or support resources for your specific keyboard.

I am confused right now !!
Can you help me ?
My fnLock Indicator is activated or deactivated when pressing Fn + Esc.
So, using showkey command in console mode gives keycode upon pressing Esc key is 1.
but when I do the same in X11 command xev it say this upon pressing Esc

KeyPress event, serial 40, synthetic NO, window 0x4a00001,
    root 0x728, subw 0x0, time 844483, (13,634), root:(973,663),
    state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    XLookupString gives 1 bytes: (1b) "
mbLookupString gives 1 bytes: (1b) "
FilterEvent returns: False

where it says keycode 9 now when I press Fn key… I am confused what is the actual keycode 1 or 9 ?

as you said to find out the keycode of Fn however, both the program showkey or xev don’t show any output. I am stuck in just step one of the process you taught me. :pleading_face:
I am afraid if I am going to be a trouble for you.