Message ID | 45706882.ZrxtpIdaNX@pebbles.site (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sun, Nov 16, 2014 at 11:18:31PM +0100, Stefan Brüns wrote: > Without the change either no scancode would be reported on release > of force_release keys, or - if the key is marked as force_release > erroneously - the release event and the scancode would be reported > in separate reports to the input layer. > > Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> > --- > > Originally sent on 28.9.2014, but somehow got lost. > Resending as per Dmitrys request from 24.10.2014 Applied, thank you, but please next time don't use Kmail for patches - it line-wrapped the patch and encoded it as quoted-printable. Thanks! > > drivers/input/keyboard/atkbd.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c > index 2dd1d0d..6375ae6 100644 > --- a/drivers/input/keyboard/atkbd.c > +++ b/drivers/input/keyboard/atkbd.c > @@ -456,8 +456,9 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, > unsigned char data, > > keycode = atkbd->keycode[code]; > > - if (keycode != ATKBD_KEY_NULL) > - input_event(dev, EV_MSC, MSC_SCAN, code); > + if (!(atkbd->release && test_bit(code, atkbd->force_release_mask))) > + if (keycode != ATKBD_KEY_NULL) > + input_event(dev, EV_MSC, MSC_SCAN, code); > > switch (keycode) { > case ATKBD_KEY_NULL: > @@ -511,6 +512,7 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, > unsigned char data, > input_sync(dev); > > if (value && test_bit(code, atkbd->force_release_mask)) { > + input_event(dev, EV_MSC, MSC_SCAN, code); > input_report_key(dev, keycode, 0); > input_sync(dev); > } > -- > 1.8.4.5 > > > -- > Stefan Brüns / Bergstraße 21 / 52062 Aachen > home: +49 241 53809034 mobile: +49 151 50412019 > work: +49 2405 49936-424
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c index 2dd1d0d..6375ae6 100644 --- a/drivers/input/keyboard/atkbd.c +++ b/drivers/input/keyboard/atkbd.c @@ -456,8 +456,9 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data, keycode = atkbd->keycode[code]; - if (keycode != ATKBD_KEY_NULL) - input_event(dev, EV_MSC, MSC_SCAN, code); + if (!(atkbd->release && test_bit(code, atkbd->force_release_mask))) + if (keycode != ATKBD_KEY_NULL) + input_event(dev, EV_MSC, MSC_SCAN, code); switch (keycode) {
Without the change either no scancode would be reported on release of force_release keys, or - if the key is marked as force_release erroneously - the release event and the scancode would be reported in separate reports to the input layer. Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> --- Originally sent on 28.9.2014, but somehow got lost. Resending as per Dmitrys request from 24.10.2014 drivers/input/keyboard/atkbd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) case ATKBD_KEY_NULL: @@ -511,6 +512,7 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data, input_sync(dev); if (value && test_bit(code, atkbd->force_release_mask)) { + input_event(dev, EV_MSC, MSC_SCAN, code); input_report_key(dev, keycode, 0); input_sync(dev); }