Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Jul 2009 23:58:03 +0400 (MSD)
From:      Eygene Ryabinkin <rea-fbsd@codelabs.ru>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   usb/137190: [usb][patch] inhibit spurious button releases for some complex mices
Message-ID:  <20090727195803.573AAB8090@phoenix.codelabs.ru>
Resent-Message-ID: <200907272000.n6RK0Bd4028252@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         137190
>Category:       usb
>Synopsis:       [usb][patch] inhibit spurious button releases for some complex mices
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-usb
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jul 27 20:00:10 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Eygene Ryabinkin
>Release:        FreeBSD 8.0-BETA2 amd64
>Organization:
Code Labs
>Environment:

System: FreeBSD 8.0-BETA2 amd64

>Description:

My Microsoft Wireless Laser Mouse 5000 shows weird behaviour when I do
press some button and trying to select the text inside the terminal
moving the pointer: looks like extra button press/release events are
generated.  Running 'xev' I see such events in the utility's output.

>How-To-Repeat:

Get the mentioned mice and try to select some text in the terminal:
you'll likely won't be able to select everything you want.

>Fix:

The problem is that this mice is "complex": it has other output descriptors
whose output also goes to the ums(4) driver.  It produces no data that will
be consumed by the driver, but due to the logics of the callback function,
variable 'buttons' will be different from the initial softc's button state
of some button was physically pressed when this "foreign" data comes.

The following patch makes ums(4) to be resistant to such callback input.
--- 0007-ums-avoid-spurious-button-releases-for-complex-mices.patch begins here ---
begin 644 0007-ums-avoid-spurious-button-releases-for-complex-mices.patch
M1G)O;2`U,#8S9F1F-F,Y-&4P8C0Q-#4W8V8Y-C!C-F8S86)A9#$R9#@S.30X
M($UO;B!397`@,3<@,#`Z,#`Z,#`@,C`P,0I&<F]M.B!%>6=E;F4@4GEA8FEN
M:VEN(#QR96$M9F)S9$!C;V1E;&%B<RYR=3X*1&%T93H@36]N+"`R-R!*=6P@
M,C`P.2`Q-CHU.#HU."`K,#0P,`I3=6)J96-T.B!;4$%40T@@-R\W72!U;7,Z
M(&%V;VED('-P=7)I;W5S(&)U='1O;B!R96QE87-E<R!F;W(@8V]M<&QE>"!M
M:6-E<PH*4V]M92!M:6-E<R`H36EC<F]S;V9T(%=I<F5L97-S($QA<V5R($UO
M=7-E(#4P,#`@:7,@;VYE(&]F('1H96TI(')E<&]R=`II;G!U="!I=&5M('9I
M82!M=6QT:7!L92!R97!O<G0@9&5S8W)I<'1O<G,@86YD(&YO="!A;&P@9&%T
M82!I<PIR96-O9VYI>F5D(&)Y('5M<R@T*2!D<FEV97(N("!7:&5N('-U8V@@
M(F9O<F5I9VX@9&%T82(@8V]M97,@:6X@86YD('-O;64*;6]U<V4@8G5T=&]N
M('=A<R!A;')E861Y('!R97-S960L('1H:7,@=VEL;"!E9F9E8W1I=F5L>2!Z
M97)O(&]U="!B=71T;VX*<W1A=&4Z("=B=71T;VYS)R!A<F4@:6YI=&EA;&EZ
M960@=&\@>F5R;R!A="!T:&4@8F5G:6YN:6YG(&]F('1H92!H86YD;&5R"F%N
M9"!S;V9T8R!D871A(&ES(&UO9&EF:65D(&EF('1H92!B=71T;VX@<W1A=&4@
M:6X@<V]F=&,@:7-N)W0@=&AE('-A;64*87,@=&AE(&)U='1O;B!D871A(&9R
M;VT@)V)U='1O;G,G+@H*06YY('-U8G-E<75E;G0@;6]U<V4@;6]V97,@=VET
M:"!B=71T;VX@<&AY<VEC86QL>2!H96QD('=I;&P@<')O9'5C90IE>'1R82!M
M;W5S92!P<F5S<V5S("AA9V%I;BP@=&AE('-P=7)I;W5S(&]N97,I.B!M;W9E
M(&UA:V5S(&UI8V4@=&\@<V5N9`IT:&4@<&%C:V5T('=I=&@@=&AE(&1A=&$@
M=&AA="!W:6QL(&)E(')E8V]G;FEZ960@8GD@=&AE(&1R:79E<CL@86QL"B)R
M96QE87-E9"(@8G5T=&]N<R!W:6QL(&)E+"!O9B!C;W5R<V4L(")P<F5S<V5D
M(&%G86EN(B!W:&5N('1H:7,@9&%T80IW:6QL(&)E('!R;V-E<W-E9"X*"D%N
M;W1H97(@=F%R:6%B;&4@=V%S(&EN=')O9'5C960@=&\@9FQA9R!I9B!W92!H
M860@<V5E;B!A;GD@9&%T82!I=&5M<PIT:&%T(&)E;&]N9R!T;R!U<R!A;F0@
M<V]F=&,@<W1A=&4@:7,@8VAA;F=E9"!O;FQY(&EF('1H92!F;&%G(&ES"FYO
M;BUZ97)O+@H*4VEG;F5D+6]F9BUB>3H@17EG96YE(%)Y86)I;FMI;B`\<F5A
M+69B<V1`8V]D96QA8G,N<G4^"BTM+0H@<WES+V1E=B]U<V(O:6YP=70O=6US
M+F,@?"`@(#,V("LK*RLK*RLK*RLK*RLK*RLK*RLK*RLK*RLK*RLK+2TM+2TM
M+0H@,2!F:6QE<R!C:&%N9V5D+"`R.2!I;G-E<G1I;VYS*"LI+"`W(&1E;&5T
M:6]N<R@M*0H*9&EF9B`M+6=I="!A+W-Y<R]D978O=7-B+VEN<'5T+W5M<RYC
M(&(O<WES+V1E=B]U<V(O:6YP=70O=6US+F,*:6YD97@@,C!B8V0S,RXN.#EE
M,3@U,B`Q,#`V-#0*+2TM(&$O<WES+V1E=B]U<V(O:6YP=70O=6US+F,**RLK
M(&(O<WES+V1E=B]U<V(O:6YP=70O=6US+F,*0$`@+3(P,BPV("LR,#(L-R!`
M0"!U;7-?:6YT<E]C86QL8F%C:RAS=')U8W0@=7-B7WAF97(@*GAF97(L('5S
M8E]E<G)O<E]T(&5R<F]R*0H@"75I;G0X7W0@:3L*(`EU:6YT.%]T(&ED.PH@
M"6EN="!L96X["BL)=6YS:6=N960@:6YT(&=O=%]M:6YE7V1A=&$@/2`P.PH@
M"B`)=7-B9%]X9F5R7W-T871U<RAX9F5R+"`F;&5N+"!.54Q,+"!.54Q,+"!.
M54Q,*3L*(`I`0"`M,C0R+#$X("LR-#,L,S4@0$`@=6US7VEN=')?8V%L;&)A
M8VLH<W1R=6-T('5S8E]X9F5R("IX9F5R+"!U<V)?97)R;W)?="!E<G)O<BD*
M(`D)"7T*(`D)?0H@"BL)+RH**PD@*B`G9V]T7VUI;F5?9&%T82<@:7,@=7-E
M9"!A<R!T:&4@9FQA9R!T:&%T('=E(&AA9"!C;VYS=6UE9`HK"2`J(&%T(&QE
M87-T(&]N92!I=&5M('1H870@8F5L;VYG<R!T;R!U<RX@(%1H:7,@9W5A<F1S
M('5M<R@T*0HK"2`J(&9R;VT@=&AE(&EN<'5T(&1A=&$@=VET:"!T:&4@)V9O
M<F5I9VXG(')E<&]R="!)1',Z('=H96X@<W5C:`HK"2`J(&1A=&$@8V]M97,L
M(&ET('=I;&P@8F4@<')O8V5S<V5D(&)Y('1H:7,@:&%N9&QE<BX@($YO(&ET
M96US"BL)("H@=VEL;"!B92!M;V1I9FEE9"P@8G5T('-I;F-E('1H92!B=71T
M;VX@<W1A=&4@:7,@:6YI=&EA;&EZ960**PD@*B!T;R!Z97)O(&%T('1H92!B
M96=I;FYI;F<@;V8@=&AE(&AA;F1L97(L('1H:7,@9F]R96EG;B!D871A"BL)
M("H@=VEL;"!L96%D('1O('1H92!B=71T;VX@<W1A=&4@8VAA;F=E(&EF('-O
M;64@8G5T=&]N(&ES"BL)("H@8W5R<F5N=&QY('!R97-S960N("!4:&ES('=I
M;&P@<')O9'5C92!S<'5R:6]U<R!C;&EC:W,**PD@*B!A;F0@=V4@;75S="!A
M=F]I9"!T:&5M+@HK"2`J+PH@"7)E<&5A=#H*(`D):68@*"AI;F9O+3YS8U]F
M;&%G<R`F(%5-4U]&3$%'7U=?05A)4RD@)B8*+0D)("`@("AI9"`]/2!I;F9O
M+3YS8U]I:61?=RDI"BL)"2`@("`H:60@/3T@:6YF;RT^<V-?:6ED7W<I*2![
M"B`)"0ED=R`K/2!H:61?9V5T7V1A=&$H8G5F+"!L96XL("9I;F9O+3YS8U]L
M;V-?=RD["BL)"0EG;W1?;6EN95]D871A*RL["BL)"7T*(`HM"0EI9B`H*&EN
M9F\M/G-C7V9L86=S("8@54U37T9,04=?6%]!6$E3*2`F)B`*+0D)("`@("AI
M9"`]/2!I;F9O+3YS8U]I:61?>"DI"BL)"6EF("@H:6YF;RT^<V-?9FQA9W,@
M)B!535-?1DQ!1U]87T%825,I("8F"BL)"2`@("`H:60@/3T@:6YF;RT^<V-?
M:6ED7W@I*2!["B`)"0ED>"`K/2!H:61?9V5T7V1A=&$H8G5F+"!L96XL("9I
M;F9O+3YS8U]L;V-?>"D["BL)"0EG;W1?;6EN95]D871A*RL["BL)"7T*(`H@
M"0EI9B`H*&EN9F\M/G-C7V9L86=S("8@54U37T9,04=?65]!6$E3*2`F)@HM
M"0D@("`@*&ED(#T](&EN9F\M/G-C7VEI9%]Y*2D**PD)("`@("AI9"`]/2!I
M;F9O+3YS8U]I:61?>2DI('L*(`D)"61Y(#T@+6AI9%]G971?9&%T82AB=68L
M(&QE;BP@)FEN9F\M/G-C7VQO8U]Y*3L**PD)"6=O=%]M:6YE7V1A=&$K*SL*
M*PD)?0H@"B`)"6EF("@H:6YF;RT^<V-?9FQA9W,@)B!535-?1DQ!1U]:7T%8
M25,I("8F"B`)"2`@("`H:60@/3T@:6YF;RT^<V-?:6ED7WHI*2!["D!`("TR
M-C(L,3$@*S(X,"PQ-"!`0"!U;7-?:6YT<E]C86QL8F%C:RAS=')U8W0@=7-B
M7WAF97(@*GAF97(L('5S8E]E<G)O<E]T(&5R<F]R*0H@"0D):68@*&EN9F\M
M/G-C7V9L86=S("8@54U37T9,04=?4D566BD*(`D)"0ET96UP(#T@+71E;7`[
M"B`)"0ED>B`M/2!T96UP.PHK"0D)9V]T7VUI;F5?9&%T82LK.PH@"0E]"B`*
M(`D):68@*"AI;F9O+3YS8U]F;&%G<R`F(%5-4U]&3$%'7U1?05A)4RD@)B8*
M+0D)("`@("AI9"`]/2!I;F9O+3YS8U]I:61?="DI"BL)"2`@("`H:60@/3T@
M:6YF;RT^<V-?:6ED7W0I*2!["B`)"0ED="`M/2!H:61?9V5T7V1A=&$H8G5F
M+"!L96XL("9I;F9O+3YS8U]L;V-?="D["BL)"0EG;W1?;6EN95]D871A*RL[
M"BL)"7T*(`H@"0EF;W(@*&D@/2`P.R!I(#P@:6YF;RT^<V-?8G5T=&]N<SL@
M:2LK*2!["B`)"0EI9B`H:60@(3T@:6YF;RT^<V-?:6ED7V)T;EMI72D*0$`@
M+3(W-"PQ,R`K,CDU+#$T($!`('5M<U]I;G1R7V-A;&QB86-K*'-T<G5C="!U
M<V)?>&9E<B`J>&9E<BP@=7-B7V5R<F]R7W0@97)R;W(I"B`)"0EI9B`H:&ED
M7V=E=%]D871A*&)U9BP@;&5N+"`F:6YF;RT^<V-?;&]C7V)T;EMI72DI('L*
M(`D)"0EB=71T;VYS('P]("@Q(#P\(%5-4U]"550H:2DI.PH@"0D)?0HK"0D)
M9V]T7VUI;F5?9&%T82LK.PH@"0E]"B`*(`D):68@*"LK:6YF;R`A/2`F<V,M
M/G-C7VEN9F];54U37TE.1D]?34%872D*(`D)"6=O=&\@<F5P96%T.PH@"BT)
M"6EF("AD>"!\?"!D>2!\?"!D>B!\?"!D="!\?"!D=R!\?`HM"0D@("`@*&)U
M='1O;G,@(3T@<V,M/G-C7W-T871U<RYB=71T;VXI*2!["BL)"6EF("AG;W1?
M;6EN95]D871A("8F("AD>"!\?"!D>2!\?"!D>B!\?"!D="!\?"!D=R!\?`HK
M"0D@("`@*&)U='1O;G,@(3T@<V,M/G-C7W-T871U<RYB=71T;VXI*2D@>PH@
M"B`)"0E$4%))3E1&3B@V+"`B>#HE9"!Y.B5D('HZ)60@=#HE9"!W.B5D(&)U
M='1O;G,Z,'@E,#AX7&XB+`H@"0D)("`@(&1X+"!D>2P@9'HL(&1T+"!D=RP@
78G5T=&]N<RD["BTM(`HQ+C8N,RXQ"@H`
`
end
--- 0007-ums-avoid-spurious-button-releases-for-complex-mices.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090727195803.573AAB8090>