Re:[PATCH v9] tty: Fix the keyboard led light display problem
From: 常廉志
Date: Mon Nov 01 2021 - 08:35:59 EST
> Switching from the desktop environment to the tty environment,
> the state of the keyboard led lights and the state of the keyboard
> lock are inconsistent. This is because the attribute kb->kbdmode
> of the tty bound in the desktop environment (Xorg) is set to
> VC_OFF, which causes the ledstate and kb->ledflagstate
> values of the bound tty to always be 0, which causes the switch
> from the desktop When to the tty environment, the LED light
> status is inconsistent with the keyboard lock status.
>
> Signed-off-by: lianzhi chang <changlianzhi@xxxxxxxxxxxxx>
> ---
> v7-->v8:
> Optimize the implementation of kbd_update_ledstate function
>
> Why not adopt the opinions of Greg KH and Andy Shevchenko:
> (1) In the structure struct input_dev, the definition of led is
> like this: unsigned long led[BITS_TO_LONGS(LED_CNT)]; If you
> define it like this: unsigned long newstate = *dev->led; I
> always feel that there is still big end and Little endian problem.
> (2) The test_bit function is used to avoid the problem of large
> and small ends, and the current algorithm (v8) also exists
> elsewhere in the kernel: the atkbd_set_leds function (drivers/
> input/keyboard/atkbd.c).
> (3) In the current keyboard.c code, the code is already very good,
> and it is already relatively independent. If you modify the type
> of ledstate to u64 or modify the macro definitions such as
> VC_NUMLOCK, it feels that it is not very meaningful, and this It
> will also cause other related modifications. Of course, this is
> only my current opinion. If everyone still feels that it is
> necessary to modify, I will do it this way. Of course, this
> process may be a bit longer, and I think it is necessary to
> conduct more tests.
>
> v9: Change description information: xorg-->Xorg
> ……
Hi, friends, I would like to ask whether this version of patch is possible, if not,
I will try my best to find a way to complete the next version!
Thanks.
--
lianzhi chang