[patch 1/2] Fix shift-pgup problems in i8042.c

From: Vojtech Pavlik (vojtech@suse.cz)
Date: Wed Aug 21 2002 - 12:10:34 EST


Hi!

You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual.
'bk pull bk://linux-input.bkbits.net/linux-input' should work as well.

===================================================================

ChangeSet@1.510, 2002-08-21 19:00:13+02:00, vojtech@suse.cz
  Fix i8042.c to ignore fake key releases generated by AT keyboard
  in translated set 2. This fixes a problem where shift-pgup, with
  the pgup released first generated an unknown scancode warning and
  the shift remained stuck.

 i8042.c | 4 ++++
 1 files changed, 4 insertions(+)

===================================================================

diff -Nru a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
--- a/drivers/input/serio/i8042.c Wed Aug 21 19:00:39 2002
+++ b/drivers/input/serio/i8042.c Wed Aug 21 19:00:39 2002
@@ -54,6 +54,7 @@
 static struct serio i8042_aux_port;
 static unsigned char i8042_initial_ctr;
 static unsigned char i8042_ctr;
+static unsigned char i8042_last_e0;
 struct timer_list i8042_timer;
 
 #ifdef I8042_DEBUG_IO
@@ -366,12 +367,15 @@
                                         if (data > 0x7f) {
                                                 if (test_and_clear_bit(data & 0x7f, i8042_unxlate_seen)) {
                                                         serio_interrupt(&i8042_kbd_port, 0xf0, dfl);
+ if (i8042_last_e0 && (data == 0xaa || data == 0xb6))
+ set_bit(data & 0x7f, i8042_unxlate_seen);
                                                         data = i8042_unxlate_table[data & 0x7f];
                                                 }
                                         } else {
                                                 set_bit(data, i8042_unxlate_seen);
                                                 data = i8042_unxlate_table[data];
                                         }
+ i8042_last_e0 = (data == 0xe0);
                                 }
                                 serio_interrupt(&i8042_kbd_port, data, dfl);
                         }

===================================================================

This BitKeeper patch contains the following changesets:
+
## Wrapped with gzip_uu ##

begin 664 bkpatch5769
M'XL(`#?'8ST``[54;4_;,!#^7/^*DY`0")J<G==VZ@1C;$.;-,3@<^4Z;N,U
M=:K8H67*CY_3E@*58*\D413[[IX[^7F>[,&-D56_<UM^MU+D9`\^E<;V.Z8V
MTA,_W/JJ+-W:S\N9]#=9_FCJ*SVO+7'Q2VY%#K>R,OT.]8+MCKV;RW[GZOSC
MS9?3*T(&`SC+N9[(;]+"8$!L6=WR(C,GW.9%J3U;<6UFTG)/E+-FF]HP1.;N
MB"8!1G%#8PR31M",4AY2F2$+TS@DF\%.-F/OUJ>,8N3>81,QEL;D/5`OH@C(
M?$Q]1H'V^HA]&APA<Q^P`P='%+I(WL'_'?J,"/B@EJ!2#)DG'#JHB2XK"6,^
ME3"5=U#)0G(C#4RDEA6W,H/1'9Q>M\%1R:O,02@-JSF*5=BXXV4>7.?*P%@M
M72F'>56."CF#12X=N,G5V';GDWI^#`ME<P=A<PGMQGV_S)56QC[JRC74>JK+
MA08CN!9E)F'!*ZWTQ,6R#<8*VH',N-+M++864X]\AHB&*9++!P60[A]>A"!'
M\G;+C%VH0DURZ]5BT1*>5:J5X%J6OI.T*OW-N:[92#"@+(IIW`1.#*Q)L"6"
M4R$QI&/,=CG_-:(3%4T0L==$O9;.5N(O%+6B?[7I_P&9A2P($TJ;,.YALK)&
MNFL,[#UGC/"UC''Q6TYH1?>L%6:M2-E*?RN"OD*W6JP>IZ?+E[CZ"WE>1#%0
M8BRW2CBK&.=D-X+(>;7V][#@Q@XEOB$709P"(YWUI<9P\"0!]O?A(..6.\$`
M+CF'IH&']2@^/+RO[3BS#T?*KM/W7309'V_:U7K9GL+02*D/VZ9)Z.9;MWS2
?;O"XFT27N_V%BUR*J:EG@QA9)#"FY">W!0:/+P8`````
`
end

-- 
Vojtech Pavlik
SuSE Labs
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Aug 23 2002 - 22:00:23 EST