+
     iO  c                   s   ^ RI t ^ RIt^ RIt^ RIHt ^ RIHtHtHt ^ RI	t	^ RI
HtHtHtHtHtHt ^ RIHtHt ^ RIHtHtHtHtHt ^ RIHt ^ RIHt ^ R	IHtH t H!t! ^ R
I"H#t#H$t$ ^ RI%H&t& ^ RI'H(t( R t)R R lt*R R lt+ ! R R]4      t,R# )i    N)partial)DictTupleOptional)EV_RELEV_ABS	REL_WHEEL
REL_HWHEELREL_WHEEL_HI_RESREL_HWHEEL_HI_RES)InputCombinationInputConfig)MappingREL_XY_SCALINGWHEEL_SCALINGWHEEL_HI_RES_SCALINGDEFAULT_REL_RATE)GlobalUInputs)Transformation)MappingHandlerHandlerEnumsInputEventHandler)
InputEventEventActions)logger)get_evdev_constant_namec                 sh    W,          V,           p\         P                  ! V^4      p\        V4      V3# i   )mathZfmodint)valueweight	remainderZscaleds   &&& `/usr/lib/python3.14/site-packages/inputremapper/injection/mapping_handlers/abs_to_rel_handler.pycalculate_outputr!   8   s-    ^i'F		&!$Iv;	!!    c                s    V ^8  d   QhRR/#    returnN format   "r    __annotate__r*   A   s      d r"   c                sp  "   RV n         RV n        Rp\        P                  ! 4       p\        V P                  P
                  ,          p\        V,          pV P                  '       g   \        V P                  VV4      w  rQV P                  \        V P                  P                  V4       \        P                  ! 4       V,
          p\        R^V P                  P
                  ,          V,
          4      p\        P                  ! V4      G Rj  xL
  \        P                  ! 4       pK  RV n         R#  L$5i)zStart injecting events.TF        N)_running_stoptimer   mappingrel_rater   r!   _value_writer   output_codemaxasynciosleep)selfr   startZrate_compensationr   r   
time_takenr6   s   &       r    _run_normal_outputr:   A   s     DMDJIIIKE )4<<+@+@@//Fjjj+KK
 	FDLL44e<YY[5(
C!dll333zABmmE"""		DM 	#s   A%D6(B'D6D4%D6c                sJ    V ^8  d   QhR\         \        \        3,          RR/# )r$   codesr%   N)r   r   r'   r)   r    r*   r*   _   s"      sCx T r"   c                sd  "   \         \        3pRV n        RV n        RR.p\        P                  ! 4       pV P                  '       g   \        \        V4      4       FH  p\        V P                  W%,          W5,          4      w  qcV&   V P                  \        W,          V4       KJ  	  \        P                  ! 4       V,
          p\        P                  ! \        R^V P                  P                  ,          V,
          4      4      G Rj  xL
  \        P                  ! 4       pK  RV n        R#  L$5i)zStart injecting wheel events.

made to inject both REL_WHEEL and REL_WHEEL_HI_RES events, because otherwise
wheel output doesn't work for some people. See issue #354
TFr+   N)r   r   r,   r-   r.   Zrangelenr!   r1   r2   r   r5   r6   r4   r/   r0   )r7   r;   Zweightsr   r8   Zir   r9   s   &&      r    _run_wheel_outputr=   _   s      23GDMDJc
IIIKEjjjs5z"A"2
#EQ< KK%0 # YY[5(
mmCa$,,*?*?&?:%MNOOO		DM 	Ps   AD0CD0	D.
%D0c                   s   a a ] tR t^|t oRtV3R lV 3R lltR tR t]R 4       t	RV3R lR llt
V3R	 lR
 ltR tV3R lR ltV3R lR ltV3R lR ltV3R ltRtVtV ;t# )AbsToRelHandlerz4Handler which transforms an EV_ABS to EV_REL events.c                s0   < V ^8  d   QhRS[ RS[RS[RR/# )r$   combinationr/   global_uinputsr%   N)r
   r   r   r(   __classdict__   "r    r*   AbsToRelHandler.__annotate__   s3     !: !:%!: !: &	!: 
!:r"   c                s  < \         SV `  WV4       VP                  \        R 7      ;p'       g   Q hWPn        ^ V n        RV n        RV n        RV n        V P                  P                  \        \        \        \        39   dW   V P                  P                  \        \        39   d   \        \        3pM\        \        3p\        \         WR7      V n        R# \        \$        V 4      V n        R# ))type_FTN)r;   )Zsuper__init__Zfind_analog_input_configr   	_map_axisr1   r,   r-   
_transformr/   r3   r   r   r   r	   r    r=   _runr:   )r7   r?   r/   r@   Z_Zmap_axisr;   	__class__s   &&&&,  r    rF   ZAbsToRelHandler.__init__   s     	~> (@@v@NNNON!
 <<##	(
 
 ||''I7G+HH"$45#%67 14EDI   2D9DIr"   c                s`    \        V P                  P                  !  pR V RV P                   2# )zAbsToRelHandler for "z" )r   rG   Ztype_and_code)r7   Znames   & r    __str__ZAbsToRelHandler.__str__   s.    &(D(DE&tfBt~~.>??r"   c                sJ    R \        V 4       R\        \        V 4      4       R2# )Z< at Z>)ZstrZhexZidr7      &r    __repr__ZAbsToRelHandler.__repr__   s#    3t9+T#bh-22r"   c                s    R V P                   P                  4        RV P                   P                  4        RV P                   P                   2# )z	maps to: Z rL   )r/   Zget_output_name_constantZget_output_type_codetarget_uinputrM   rN   r    childZAbsToRelHandler.child   sJ     ==?@||00234||))*,	
r"   c                sF   < V ^8  d   QhRS[ RS[P                  RS[RS[/# )r$   eventsourcesuppressr%   )r   evdevZInputDeviceboolrA   rC   r    r*   rD      s9     $ $$ !!$ 	$
 
$r"   c                s    VP                   V P                  P                   8w  d   R # \        P                  VP                  9   d
   RV n        R# V P                  '       g   VP                  RR7      \        ,           Uu/ uF  pV^ ,          V^,          bK  	  pp\        WQP                  ,          P                  WQP                  ,          P                  V P                  P                  V P                  P                  V P                  P                   R7      V n        V P                  VP"                  4      pW`n        V^ 8X  d
   RV n        R# V P&                  '       g%   \(        P*                  ! V P-                  4       4       R# u upi )FT)absinfo)Zmax_Zmin_deadzonegainexpo)Zinput_match_hashrG   r   ZrecenterZactionsr-   rH   Zcapabilitiesr   r   Zcoder4   Zminr/   rX   rY   rZ   r   r1   r,   r5   Zensure_futurerI   )r7   rR   rS   rT   ZentryrW   Ztransformeds   &&&&   r    notifyZAbsToRelHandler.notify   s+    !!T^^%D%DD  EMM1DJ $000>vFFE a%("F   -ZZ(,,ZZ(,,..\\&&\\&&DO ooekk2!!DJ}}}!!$))+.-s   Fc                s   < V ^8  d   QhRR/# r#   r&   rA   rC   r    r*   rD      s      t r"   c                s    R V n         R# )TN)r-   rM   rN   r    resetZAbsToRelHandler.reset   s	    
r"   c                s    V^ 8X  d   R#  V P                   P                  WV3V P                  P                  4       R#   \         d    \
        P                  ! RYT4        R# i ; i)zInject.NzOverflowError (%s, %s, %s))r@   Zwriter/   rP   ZOverflowErrorr   Zerror)r7   rE   Zkeycoder   s   &&&&r    r2   ZAbsToRelHandler._write   s`     A:	N%%')C)C  	NLL5uuM	Ns   2? #A&%A&c                s    < V ^8  d   QhRS[ /# r$   r%   )rV   rA   rC   r    r*   rD      s     + + +r"   c                s2    \        V P                  4      ^8  # r   )r<   input_configsrM   rN   r    needs_wrappingZAbsToRelHandler.needs_wrapping   s    4%%&**r"   c                s$   < V ^8  d   QhRS[ RR/# )r$   handlerr%   N)r   rA   rC   r    r*   rD      s      '8 T r"   c                s    Q hFr&   )r7   r`   s   &&r    set_sub_handlerZAbsToRelHandler.set_sub_handler   s    ur"   c                s6   < V ^8  d   QhRS[ S[S[3,          /# r]   )r   r
   r   rA   rC   r    r*   rD      s      4 0, >? r"   c                s|    V P                  4       '       d&   \        V P                  4      \        P                  /# / # )N)r_   r
   r^   r   Z
axisswitchrM   rN   r    	wrap_withZAbsToRelHandler.wrap_with   s2      $T%7%78,:Q:QRR	r"   c                sf   < V ^8  d   Qh/ S[ ;R&   S[;R&   S[;R&   S[;R&   S[S[,          ;R&   # )r$   rG   r1   r,   r-   rH   )r   ZfloatrV   r   r   rA   rC   r    r*   rD   |   sH        M	 
 N  K  (( r"   )rG   rI   r,   r-   rH   r1   ra   )Z__name__Z
__module__Z__qualname__Z__firstlineno__Z__doc__rF   rK   rO   ZpropertyrQ   r[   r\   r2   r_   rb   rc   Z__annotate_func__Z__static_attributes__Z__classdictcell__Z__classcell__)rJ   rB   s   @@r    r>   r>   |   ss     >!: !:F@3 
 
$ $L N+ +  s  r"   r>   )-r5   r   r.   Z	functoolsr    Ztypingr   r   r   rU   Zevdev.ecodesr   r   r   r   r   r	   Z"inputremapper.configs.input_configr
   r   Zinputremapper.configs.mappingr   r   r   r   r   Z&inputremapper.injection.global_uinputsr   Z7inputremapper.injection.mapping_handlers.axis_transformr   Z8inputremapper.injection.mapping_handlers.mapping_handlerr   r   r   Zinputremapper.input_eventr   r   Zinputremapper.logging.loggerr   Zinputremapper.utilsr   r!   r:   r=   r>   r&   r"   r    <module>rd      sq   (     ( (   M  A R 
 ? / 7"<:|n |r"   