+
     i  c                   s   ^ RI HtHtHtHtHtHt ^ RIt^ RIt	^ RI
t	^ RIHt RtRtRtR]P                   P"                  ]! ]P                   P&                  P)                  4       ]P                   P(                  P)                  4       ,          4      /R]P                   P"                  . ]! RR4      O]P                   P,                  . R	 ]! ^ ^4       4       OR
 ]! ^^4       4       O/R]P                   P"                  . ]! RR4      O]P                   P.                  . ]! ^ ^4      O//t]P                   P"                  . ]R,          ]P                   P"                  ,          O]R,          ]P                   P"                  ,          O]P                   P.                  . ]R,          ]P                   P.                  ,          O/]R&    ! R R]P2                  4      t ! R R4      t ! R R4      tR# )    )DictUnionTupleOptionalListTypeN)loggerzinput-remapperZkeyboardZgamepadi0  i?  c           
   #   sl   "   T F*  pV\         P                  ! ^ \        \        ^ ^ ^ 4      3x  K,  	  R# 5i)r    N)evdevAbsInfoMIN_ABSMAX_ABS.0Zi   & K/usr/lib/python3.14/site-packages/inputremapper/injection/global_uinputs.py	<genexpr>r   '   s/      *A EMM!Wgq!Q?@*s   24c           
   #   sZ   "   T F!  q\         P                  ! ^ R^^ ^ ^ 4      3x  K#  	  R# 5i)r    Ni)r   r	   r   r   r   r   r   +   s(     O=N%--2q!Q23=Ns   )+Zmousei  i  zkeyboard + mousec                   sT   a a ] tR t^>t oRtV 3R ltV3R lR ltV3R ltRtVt	V ;t
# )UInputNc                sh   < VR ,          p\         P                  ! RV4       \        SV `  ! V/ VB  R# )namezcreating UInput device: "%s"N)r   debugZsuper__init__)selfZargsZkwargsr   	__class__s   &*, r   r   ZUInput.__init__A   s-    f~3T:$)&)    c                :   < V ^8  d   QhRS[ S[S[S[3,          /#    eventr   intZformat__classdict__   "r   __annotate__UInput.__annotate__F   s"     
F 
FeCcM2 
Fr   c                s    V P                   f   V P                  RR7      V n         V^,          V P                   P                  V^ ,          . 4      9   # )zrCheck if an event can be emitted by the UIinput.

Wrong events might be injected if the group mappings are wrong,
F)Zabsinfo)_capabilities_cachecapabilitiesget)r   r      &&r   can_emitZUInput.can_emitF   sL     ##+'+'8'8'8'GD$Qx43377a"EEEr   c                s6   < V ^8  d   Qh/ S[ S[,          ;R&   # )r   r#   )r   r   r   r    r   r!   r"   >   s     !$. r   )r#   )__name__
__module____qualname____firstlineno__r#   r   r'   Z__annotate_func____static_attributes____classdictcell__Z__classcell__)r   r   s   @@r   r   r   >   s#     *.*

F 
F  r   r   c                   s<   a  ] tR t^St o RtRRRR/R ltR tRtV tR# )	FrontendUInputzCUinput which can not actually send events, for use in the frontend.eventsNr   zpy-evdev-uinputc               s`    Wn         W n        \        P                  ! R V P                  4       R# )z!creating fake UInput device: "%s"N)r/   r   r   r   )r   r/   r   _Z__s   &$$*,r   r   ZFrontendUInput.__init__V   s    	8$))Dr   c                s    V P                   # N)r/   r      &r   r$   ZFrontendUInput.capabilities]   s    {{r   )r/   r   )	r(   r)   r*   r+   __doc__r   r$   r,   r-   r      @r   r.   r.   S   s)     ME$ E-> E r   r.   c                   s   a  ] tR t^at o RtV 3R lR ltR t]V 3R lR l4       t]V 3R lR l4       t	R	 t
R
 tV 3R lR ltV 3R lR ltV 3R lR ltRtV tR# )GlobalUInputszDManages all UInputs that are shared between all injection processes.c                sV   < V ^8  d   QhRS[ S[S[,          S[S[,          3,          /# )r   uinput_factory)r   r   r   r.   r   r    r   r!   GlobalUInputs.__annotate__d   s(     . .d6lD,@@A.r   c                s     / V n         Wn        R # r1   )devices_uinput_factory)r   r8   r&   r   r   ZGlobalUInputs.__init__d   s     BD-r   c                sV    \        R  V P                  P                  4        4       4      # )c              3   s*   "   T F	  w  rVx  K  	  R # 5ir1    )r   r0   uinput   &  r   r   Z)GlobalUInputs.__iter__.<locals>.<genexpr>l   s     A,@yqF,@s   )Ziterr:   itemsr2   r3   r   __iter__ZGlobalUInputs.__iter__k   s     ADLL,>,>,@AAAr   c                s2   < V ^8  d   QhRS[ RS[RS[RS[/# )r   targettype_codereturn)strr   Zboolr   r    r   r!   r9   o   s/     A A AC As At Ar   c                sl    \         P                  V / 4      P                  V4      pVRJ;'       d    W#9   # )zACheck if the uinput with the target name is capable of the event.NDEFAULT_UINPUTSr%   )rA   rB   rC   r$      &&& r   can_default_uinput_emitZ%GlobalUInputs.can_default_uinput_emitn   s7     '**626::5A4'@@D,@@r   c                s<   < V ^8  d   QhRS[ RS[ RS[S[,          /# )r   rB   rC   rD   )r   r   rE   r   r    r   r!   r9   u   s&     
 
C 
s 
tCy 
r   c                s    \          Uu. uF)  pV\         V,          P                  V . 4      9   g   K'  VNK+  	  up# u upi )zCFind the names of default uinputs that are able to emit this event.rF   )rB   rC   r=   s   && r   find_fitting_default_uinputsZ*GlobalUInputs.find_fitting_default_uinputst   sE    
 *
)v.225"== F)
 	
 
s   $;;c                s4    / V n         V P                  4        R # r1   )r:   prepare_allr2   r3   r   resetZGlobalUInputs.reset}   s    r   c                s    \         P                  4        FS  w  rWP                  P                  4       9   d   K%  V P	                  \
         RV 2\
        VR7      V P                  V&   KU  	  R# )zGenerate UInputs. r   Zphysr/   N)rG   r?   r:   keysr;   DEV_NAME)r   r   r/   r>   r   rK   ZGlobalUInputs.prepare_all   s_    +113LD||((**!%!5!5 z4&) "6 "DLL	 4r   c                s    < V ^8  d   QhRS[ /# )r   r   )rE   r   r    r   r!   r9      s     
 
3 
r   c                s    V\         9  d   \        R4      hWP                  9   d   \        P                  ! RV4       R# V P                  \         RV 2\        \         V,          R7      V P                  V&   R# )zhGenerate a single uinput.

This has to be done in the main process before injections that use it start.
z-Could not find a matching uinput to generate.zTarget "%s" already existsNrM   rN   )rG   ZKeyErrorr:   r   r   r;   rP   r   r   r&   r   prepare_singleZGlobalUInputs.prepare_single   sk    
 &JKK<<LL5t<!11:Qtf%"4( 2 
Tr   c                r   r   r   r   r    r   r!   r9      s      5c3/ r   c                sN   V P                  V4      pV'       g    \        P                  P                  V4      hVP	                  V4      '       g    \        P                  P                  V4      h\        P                  ! W4       VP                  ! V!   VP                  4        R# )zWrite event to target uinput.N)	
get_uinputinputremapperZ
exceptionsZUinputNotAvailabler'   ZEventNotHandledr   writeZsyn)r   r   Ztarget_uinputr=   rH   r   rU   ZGlobalUInputs.write   sq    /**==mLLu%%**::5AAU#e

r   c                sJ   < V ^8  d   QhRS[ RS[S[P                  ,          /# )r   r   rD   )rE   r   r   r   r   r    r   r!   r9      s$     & &s &x'= &r   c                s    WP                   9  dH   \        P                  ! RV R2R\        V P                   P	                  4       4       2,           4       R# V P                   P                  V4      # )zUInput with name

Or None if there is no uinput with this name.

Parameters
----------
name
    uniqe name of the uinput device
zUInput "z" is unknown. zAvailable: N)r:   r   ZerrorlistrO   r%   rQ   r&   r   rS   ZGlobalUInputs.get_uinput   sb     ||#LL4&/T\\%6%6%8 9:;< ||%%r   )r;   r:   N)r(   r)   r*   r+   r4   r   r@   ZstaticmethodrI   rJ   rL   rK   rR   rU   rS   r,   r-   r5   r6   r   r7   r7   a   sj     N. .B A A
 
 


 
$ & &r   r7   i   i )Ztypingr   r   r   r   r   r   r   Zinputremapper.exceptionsrT   Zinputremapper.utilsZinputremapper.logging.loggerr   r
   r   rP   ZecodesZEV_KEYrV   ZKEYrO   ZrangeZEV_ABSZEV_RELrG   r   r.   r7   r<   r   r   <module>rW      s  ( < ;    /

 T%,,"2"2"7"7"9ELL<M<M<R<R<T"TU 3uUE23 
tT*

 PU4=NO
	 3uUE231uT401* 
LL 		$U\\%8%8	9		!%,,"5"5	6 
LL 		!%,,"5"5	6'" #FU\\ F* \& \&r   