forked from Minki/linux
Input: atkbd - handle keyboards generating scancode 0x7f
Extend bat_xl handling to do err_xl handling, so that keyboards using 0x7f scancode for regular keys can work. Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
8a409b0118
commit
903b126bff
@ -208,6 +208,7 @@ struct atkbd {
|
|||||||
unsigned char resend;
|
unsigned char resend;
|
||||||
unsigned char release;
|
unsigned char release;
|
||||||
unsigned char bat_xl;
|
unsigned char bat_xl;
|
||||||
|
unsigned char err_xl;
|
||||||
unsigned int last;
|
unsigned int last;
|
||||||
unsigned long time;
|
unsigned long time;
|
||||||
};
|
};
|
||||||
@ -296,15 +297,18 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
|
|||||||
if (atkbd->emul ||
|
if (atkbd->emul ||
|
||||||
!(code == ATKBD_RET_EMUL0 || code == ATKBD_RET_EMUL1 ||
|
!(code == ATKBD_RET_EMUL0 || code == ATKBD_RET_EMUL1 ||
|
||||||
code == ATKBD_RET_HANGUEL || code == ATKBD_RET_HANJA ||
|
code == ATKBD_RET_HANGUEL || code == ATKBD_RET_HANJA ||
|
||||||
code == ATKBD_RET_ERR ||
|
(code == ATKBD_RET_ERR && !atkbd->err_xl) ||
|
||||||
(code == ATKBD_RET_BAT && !atkbd->bat_xl))) {
|
(code == ATKBD_RET_BAT && !atkbd->bat_xl))) {
|
||||||
atkbd->release = code >> 7;
|
atkbd->release = code >> 7;
|
||||||
code &= 0x7f;
|
code &= 0x7f;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!atkbd->emul &&
|
if (!atkbd->emul) {
|
||||||
(code & 0x7f) == (ATKBD_RET_BAT & 0x7f))
|
if ((code & 0x7f) == (ATKBD_RET_BAT & 0x7f))
|
||||||
atkbd->bat_xl = !atkbd->release;
|
atkbd->bat_xl = !atkbd->release;
|
||||||
|
if ((code & 0x7f) == (ATKBD_RET_ERR & 0x7f))
|
||||||
|
atkbd->err_xl = !atkbd->release;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (code) {
|
switch (code) {
|
||||||
|
Loading…
Reference in New Issue
Block a user