On Thu, Oct 14, 2021 at 12:50:31PM +0800, changlianzhi@xxxxxxxxxxxxx wrote: > Subject: [PATCH] input&tty: Fix the keyboard led light display problem > > > 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> > > > > --- > > > > drivers/input/input.c | 7 ++++++- > > > > drivers/tty/vt/keyboard.c | 30 +++++++++++++++++++++++++++++- > > > > include/linux/kbd_kern.h | 2 ++ > > > > 3 files changed, 37 insertions(+), 2 deletions(-) > > > > > > > > diff --git a/drivers/input/input.c b/drivers/input/input.c > > > > index ccaeb2426385..43c09700bf68 100644 > > > > --- a/drivers/input/input.c > > > > +++ b/drivers/input/input.c > > > > @@ -25,6 +25,7 @@ > > > > #include <linux/rcupdate.h> > > > > #include "input-compat.h" > > > > #include "input-poller.h" > > > > +#include <linux/kbd_kern.h> > > > > MODULE_AUTHOR("Vojtech Pavlik <vojtech@xxxxxxx>"); > > > > MODULE_DESCRIPTION("Input core"); > > > > @@ -472,8 +473,12 @@ void input_inject_event(struct input_handle *handle, > > > > rcu_read_lock(); > > > > grab = rcu_dereference(dev->grab); > > > > - if (!grab || grab == handle) > > > > + if (!grab || grab == handle) { > > > > input_handle_event(dev, type, code, value); > > > > + > > > > + if (type == EV_LED && code < LED_SCROLLL) > > > > + update_value_ledstate(code, value); > > > > + } > > > > rcu_read_unlock(); > > > > spin_unlock_irqrestore(&dev->event_lock, flags); > > > > diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c > > > > index c7fbbcdcc346..0240915cdfef 100644 > > > > --- a/drivers/tty/vt/keyboard.c > > > > +++ b/drivers/tty/vt/keyboard.c > > > > @@ -1140,6 +1140,31 @@ static unsigned char getledstate(void) > > > > return ledstate & 0xff; > > > > } > > > > +void update_value_ledstate(unsigned int flag, unsigned int value) > > > > +{ > > > > + unsigned int bit; > > > > + > > > > + switch (flag) { > > > > + case LED_NUML: > > > > + bit = VC_NUMLOCK; > > > > + break; > > > > + case LED_CAPSL: > > > <snip> Something went very wrong with this patch submission :( Please fix up your email client and try again, or just use 'git send-email' directly, as that should be all that you need here. thanks, greg k-h