+
    Qin  c                  sd  a  0 t $ R t^ RIHt RtRtRtRtRt^ RI	t	^ RI
Ht ^R	IHt ^R
IHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ]'       d$   ^ RIt]P8                  ! RR4       ^ RIHt ^RIH t   ! R R4      t!]!! 4       t"R]#R&   R R lt$R# )Provides typing echo support.)annotationsz$Id$z
$Revision$z$Date$zQCopyright (c) 2005-2008 Sun Microsystems Inc.Copyright (c) 2011-2025 Igalia, S.L.ZLGPLN)TYPE_CHECKING)braille)cmdnames)dbus_service)debug)input_event)keybindings)messages)settings)settings_manager)speech)AXText)AXUtilitiesAtspiz2.0)r   )defaultc                  sx   ] tR t^<tRtR R ltRVR R lltRWR R lltR R	 ltR
 R lt	]
P                  RXR R ll4       t]
P                  R R l4       t]
P                  R R l4       t]
P                  R R l4       t]
P                  R R l4       t]
P                  R R l4       t]
P                  R R l4       t]
P                  R R l4       t]
P                  R R l4       t]
P                  R R  l4       t]
P                  R! R" l4       t]
P                  R# R$ l4       t]
P                  R% R& l4       t]
P                  R' R( l4       t]
P                  R) R* l4       t]
P                  R+ R, l4       t]
P                  R- R. l4       t]
P                  R/ R0 l4       t]
P                  R1 R2 l4       t ]
P                  R3 R4 l4       t!]
P                  R5 R6 l4       t"]
P                  R7 R8 l4       t#]
P                  R9 R: l4       t$]
P                  R; R< l4       t%]
P                  R= R> l4       t&]
P                  R? R@ l4       t']
P                  RA RB l4       t(]
P                  RC RD l4       t)]
P                  RE RF l4       t*RG RH lt+RI RJ lt,RK RL lt-RM RN lt.RO RP lt/RQ RR lt0RS RT lt1RUt2R# )YTypingEchoPresenterr    c                   V ^8  d   QhRR/#    returnNone Zformat   "?/usr/lib/python3.14/site-packages/orca/typing_echo_presenter.py__annotate__ TypingEchoPresenter.__annotate__?   s     J J$ J    c                	s   V P                  R 4      V n        \        P                  ! 4       V n        RV n        Rp\        P                  ! \        P                  VR 4       \        P                  ! 4       pVP                  RV 4       R# )TNz2TYPING ECHO PRESENTER: Registering D-Bus commands.r   )get_handlers	_handlersr   KeyBindings	_bindings_delayed_terminal_pressr   print_message
LEVEL_INFOr   Zget_remote_controllerZregister_decorated_module)selfmsgZ
controller   &  r   __init__ZTypingEchoPresenter.__init__?   si    CGCTCTUYCZ2=2I2I2KIM$BE,,c48!779
,,-BDIr   c               s$    V ^8  d   QhRRRRRR/# )r   refreshbool
is_desktopr   zkeybindings.KeyBindingsr   r   r   r   r   r   I   s$      15	 r   c                sN   V'       dc   RV 2p\         P                  ! \         P                  VR4       V P                  P	                  R4       V P                  4        V P                  # V P                  P                  4       '       d   V P                  4        V P                  # )z.Returns the typing echo presenter keybindings.z9TYPING ECHO PRESENTER: Refreshing bindings.  Is desktop: Tz+TYPING ECHO PRESENTER: Refreshing bindings.)r   r#   r$   r!   Zremove_key_grabs_setup_bindingsZis_empty)r%   r)   r+   r&   s   &&& r   get_bindingsZ TypingEchoPresenter.get_bindingsI   s    
 Mj\ZC 0 0#t<NN++,YZ  " ~~ ^^$$&&  "~~r   c                    V ^8  d   QhRRRR/# )r   r)   r*   r   z(dict[str, input_event.InputEventHandler]r   r   r   r   r   r   X   s      D 5] r   c                s    V'       d9   Rp\         P                  ! \         P                  VR4       V P                  4        V P                  # )z+Returns the typing echo presenter handlers.z+TYPING ECHO PRESENTER: Refreshing handlers.T)r   r#   r$   _setup_handlersr   )r%   r)   r&      && r   r   Z TypingEchoPresenter.get_handlersX   s:     ?C 0 0#t<  "~~r   c               r   r   r   r   r   r   r   r   b   s     9 9 9r   c                s    / V n         \        P                  ! V P                  \        P
                  4      V P                   R&   Rp\        P                  ! \        P                  VR4       R# )z-Sets up the typing echo input event handlers.cycleKeyEchoHandlerz'TYPING ECHO PRESENTER: Handlers set up.TN)	r   r   ZInputEventHandlercycle_key_echor   ZCYCLE_KEY_ECHOr   r#   r$   r%   r&      & r   r/   Z#TypingEchoPresenter._setup_handlersb   s[      ))##'') 	,-
 8E,,c48r   c               r   r   r   r   r   r   r   r   o   s     9 9 9r   c           	     sH   \         P                  ! 4       V n        V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          4      4       Rp\        P                  ! \        P                  VR4       R# )z%Sets up the typing echo key bindings. r1   z'TYPING ECHO PRESENTER: Bindings set up.TN)r   r    r!   ZaddZ
KeyBindingZDEFAULT_MODIFIER_MASKZNO_MODIFIER_MASKr   r   r#   r$   r3   r4   r   r,   Z#TypingEchoPresenter._setup_bindingso   su     %002""11,,45	7	8 8E,,c48r   Nc               s(    V ^8  d   QhRRRRRRRR/# )r   scriptzdefault.Script | Noneeventzinput_event.InputEvent | Nonenotify_userr*   r   r   r   r   r   r   r      s2     0 0%0 -0 	0
 
0r   c                s   RVRVRV.p\         P                  ! \         P                  VR4       \        P                  ! 4       pRRRrpVP                  R4      p	VP                  R4      p
VP                  R4      pWV3R	8X  d'   RRRrp\        P                  p\        P                  pMWV3R
8X  d'   RRRrp\        P                  p\        P                  pMWV3R8X  d'   RRRrp\        P                  p\        P                  pMWV3R8X  d'   RRRrp\        P                  p\        P                  pMTWV3R8X  d'   RRRrp\        P                  p\        P                   pM%RRRrp\        P"                  p\        P$                  pVP'                  RV4       VP'                  RV4       VP'                  RV4       Ve   V'       d   VP)                  W4       R# )z"Cycle through the key echo levels.z.TYPING ECHO PRESENTER: cycle_key_echo. Script:zEvent:znotify_user:TFenableKeyEchoenableEchoByWordenableEchoBySentence)FFF)TFF)FTF)FFT)TTF)r   Zprint_tokensr$   r   get_managerget_settingr	   ZKEY_ECHO_KEY_FULLZKEY_ECHO_KEY_BRIEFZKEY_ECHO_WORD_FULLZKEY_ECHO_WORD_BRIEFZKEY_ECHO_SENTENCE_FULLZKEY_ECHO_SENTENCE_BRIEFZKEY_ECHO_KEY_AND_WORD_FULLZKEY_ECHO_KEY_AND_WORD_BRIEFZKEY_ECHO_WORD_AND_SENTENCE_FULLZ KEY_ECHO_WORD_AND_SENTENCE_BRIEFZKEY_ECHO_NONE_FULLZKEY_ECHO_NONE_BRIEFset_settingZpresent_message)r%   r6   r7   r8   ZtokensmanagerZnew_keyZnew_wordZnew_sentenceZkeywordsentenceZfullZbriefs   &&&&          r   r2   Z"TypingEchoPresenter.cycle_key_echo~   s    CFE>;@5++VT:"..0-2E5L!!/2""#56&&'=>x $9915ueW--D//E"&::16eW..D00E"&::16tW22D44E"&::15tUW66D88E"&9916dW;;D==E16uW..D00EOW5.92LA+""4/r   c               r   r   r   r*   r   r   r   r   r   r      s     K Kd Kr   c                J    \         P                  ! 4       P                  R4      # )zTReturns whether echo of key presses is enabled. See also get_character_echo_enabled.r9   r   r<   r=   r%      &r   get_key_echo_enabledZ(TypingEchoPresenter.get_key_echo_enabled   s      ++-99/JJr   c                    V ^8  d   QhRRRR/# r   valuer*   r   r   r   r   r   r   r      s      $ 4 r   c                    RV R2p\         P                  ! \         P                  VR4       \        P                  ! 4       P                  RV4       R# )zRSets whether echo of key pressses is enabled. See also set_character_echo_enabled.z2TYPING ECHO PRESENTER: Setting enable key echo to .Tr9   r   r#   r$   r   r<   r>   r%   rJ   r&   r0   r   set_key_echo_enabledZ(TypingEchoPresenter.set_key_echo_enabled   sG     C5'KE,,c48$$&22?EJr   c               r   rB   r   r   r   r   r   r      s     S SD Sr   c                rC   )z7Returns whether echo of inserted characters is enabled.enableEchoByCharacterrD   rE   rF   r   get_character_echo_enabledZ.TypingEchoPresenter.get_character_echo_enabled         ++-99:QRRr   c               rH   rI   r   r   r   r   r   r      s        r   c                rK   )z4Sets whether echo of inserted characters is enabled.z8TYPING ECHO PRESENTER: Setting enable character echo to rL   TrP   rM   rN   r0   r   set_character_echo_enabledZ.TypingEchoPresenter.set_character_echo_enabled   sH     IqQE,,c48$$&223JERr   c               r   rB   r   r   r   r   r   r      s     N Nt Nr   c                rC   )z%Returns whether word echo is enabled.r:   rD   rE   rF   r   get_word_echo_enabledZ)TypingEchoPresenter.get_word_echo_enabled         ++-99:LMMr   c               rH   rI   r   r   r   r   r   r      s      4 D r   c                rK   )z"Sets whether word echo is enabled.z3TYPING ECHO PRESENTER: Setting enable word echo to rL   Tr:   rM   rN   r0   r   set_word_echo_enabledZ)TypingEchoPresenter.set_word_echo_enabled   sH     DE7!LE,,c48$$&223EuMr   c               r   rB   r   r   r   r   r   r      s     R R4 Rr   c                rC   )z)Returns whether sentence echo is enabled.r;   rD   rE   rF   r   get_sentence_echo_enabledZ-TypingEchoPresenter.get_sentence_echo_enabled         ++-99:PQQr   c               rH   rI   r   r   r   r   r   r            t  r   c                rK   )z&Sets whether sentence echo is enabled.z7TYPING ECHO PRESENTER: Setting enable sentence echo to rL   Tr;   rM   rN   r0   r   set_sentence_echo_enabledZ-TypingEchoPresenter.set_sentence_echo_enabled   sH     HwaPE,,c48$$&223I5Qr   c               r   rB   r   r   r   r   r   r           R RT Rr   c                rC   )zHReturns whether alphabetic keys will be echoed when key echo is enabled.enableAlphabeticKeysrD   rE   rF   r   get_alphabetic_keys_enabledZ/TypingEchoPresenter.get_alphabetic_keys_enabled   rX   r   c               rH   rI   r   r   r   r   r   r             $ r   c                rK   )zESets whether alphabetic keys will be echoed when key echo is enabled.z9TYPING ECHO PRESENTER: Setting enable alphabetic keys to rL   Tr\   rM   rN   r0   r   set_alphabetic_keys_enabledZ/TypingEchoPresenter.set_alphabetic_keys_enabled   I     J%PQRE,,c48$$&223I5Qr   c               r   rB   r   r   r   r   r   r      s     O O$ Or   c                rC   )zEReturns whether numeric keys will be echoed when key echo is enabled.enableNumericKeysrD   rE   rF   r   get_numeric_keys_enabledZ,TypingEchoPresenter.get_numeric_keys_enabled   s      ++-99:MNNr   c               rH   rI   r   r   r   r   r   r     s      d t r   c                rK   )zBSets whether numeric keys will be echoed when key echo is enabled.z6TYPING ECHO PRESENTER: Setting enable numeric keys to rL   Tra   rM   rN   r0   r   set_numeric_keys_enabledZ,TypingEchoPresenter.set_numeric_keys_enabled  sH     GugQOE,,c48$$&223FNr   c               r   rB   r   r   r   r   r   r          S Sd Sr   c                rC   )zIReturns whether punctuation keys will be echoed when key echo is enabled.enablePunctuationKeysrD   rE   rF   r   get_punctuation_keys_enabledZ0TypingEchoPresenter.get_punctuation_keys_enabled  rR   r   c               rH   rI   r   r   r   r   r   r           $ 4 r   c                rK   )zFSets whether punctuation keys will be echoed when key echo is enabled.z:TYPING ECHO PRESENTER: Setting enable punctuation keys to rL   Tre   rM   rN   r0   r   set_punctuation_keys_enabledZ0TypingEchoPresenter.set_punctuation_keys_enabled  I     K5'QRSE,,c48$$&223JERr   c               r   rB   r   r   r   r   r   r     s     I I4 Ir   c                rC   )zBReturns whether space key will be echoed when key echo is enabled.enableSpacerD   rE   rF   r   get_space_enabledZ%TypingEchoPresenter.get_space_enabled  s      ++-99-HHr   c               rH   rI   r   r   r   r   r   r   !  s      t  r   c                rK   )z?Sets whether space key will be echoed when key echo is enabled.z/TYPING ECHO PRESENTER: Setting enable space to rL   Trj   rM   rN   r0   r   set_space_enabledZ%TypingEchoPresenter.set_space_enabled   sG     @waHE,,c48$$&22=%Hr   c               r   rB   r   r   r   r   r   r   *       P P4 Pr   c                rC   )zFReturns whether modifier keys will be echoed when key echo is enabled.enableModifierKeysrD   rE   rF   r   get_modifier_keys_enabledZ-TypingEchoPresenter.get_modifier_keys_enabled)        ++-99:NOOr   c               rH   rI   r   r   r   r   r   r   0  rY   r   c                rK   )zCSets whether modifier keys will be echoed when key echo is enabled.z7TYPING ECHO PRESENTER: Setting enable modifier keys to rL   Trn   rM   rN   r0   r   set_modifier_keys_enabledZ-TypingEchoPresenter.set_modifier_keys_enabled/  H     HwaPE,,c48$$&223GOr   c               r   rB   r   r   r   r   r   r   9  rm   r   c                rC   )zFReturns whether function keys will be echoed when key echo is enabled.enableFunctionKeysrD   rE   rF   r   get_function_keys_enabledZ-TypingEchoPresenter.get_function_keys_enabled8  rp   r   c               rH   rI   r   r   r   r   r   r   ?  rY   r   c                rK   )zCSets whether function keys will be echoed when key echo is enabled.z7TYPING ECHO PRESENTER: Setting enable function keys to rL   Trs   rM   rN   r0   r   set_function_keys_enabledZ-TypingEchoPresenter.set_function_keys_enabled>  rr   r   c               r   rB   r   r   r   r   r   r   H  s     N N Nr   c                rC   )zDReturns whether action keys will be echoed when key echo is enabled.enableActionKeysrD   rE   rF   r   get_action_keys_enabledZ+TypingEchoPresenter.get_action_keys_enabledG  rU   r   c               rH   rI   r   r   r   r   r   r   N  s      T d r   c                rK   )zASets whether action keys will be echoed when key echo is enabled.z5TYPING ECHO PRESENTER: Setting enable action keys to rL   Trv   rM   rN   r0   r   set_action_keys_enabledZ+TypingEchoPresenter.set_action_keys_enabledM  sH     FeWANE,,c48$$&223EuMr   c               r   rB   r   r   r   r   r   r   W  r[   r   c                rC   )zHReturns whether navigation keys will be echoed when key echo is enabled.enableNavigationKeysrD   rE   rF   r   get_navigation_keys_enabledZ/TypingEchoPresenter.get_navigation_keys_enabledV  rX   r   c               rH   rI   r   r   r   r   r   r   ]  r^   r   c                rK   )zESets whether navigation keys will be echoed when key echo is enabled.z9TYPING ECHO PRESENTER: Setting enable navigation keys to rL   Try   rM   rN   r0   r   set_navigation_keys_enabledZ/TypingEchoPresenter.set_navigation_keys_enabled\  r`   r   c               r   rB   r   r   r   r   r   r   f  rd   r   c                rC   )zIReturns whether diacritical keys will be echoed when key echo is enabled.enableDiacriticalKeysrD   rE   rF   r   get_diacritical_keys_enabledZ0TypingEchoPresenter.get_diacritical_keys_enablede  rR   r   c               rH   rI   r   r   r   r   r   r   l  rg   r   c                rK   )zFSets whether diacritical keys will be echoed when key echo is enabled.z:TYPING ECHO PRESENTER: Setting enable diacritical keys to rL   Tr|   rM   rN   r0   r   set_diacritical_keys_enabledZ0TypingEchoPresenter.set_diacritical_keys_enabledk  ri   r   c               r   rB   r   r   r   r   r   r   u  s     
A 
AD 
Ar   c                s    \         P                  ! 4       pVP                  R4      pVe   V# VP                  R4      '       * # )z+Returns whether locking keys are presented.presentLockingKeysZonlySpeakDisplayedTextrD   )r%   r?   resultr'   r   get_locking_keys_presentedZ.TypingEchoPresenter.get_locking_keys_presentedt  sC     #..0$$%9:M&&'?@@@r   c               r.   )r   rJ   zbool | Noner   r*   r   r   r   r   r   r     s        r   c                rK   )z(Sets whether locking keys are presented.z7TYPING ECHO PRESENTER: Setting present locking keys to rL   Tr   rM   rN   r0   r   set_locking_keys_presentedZ.TypingEchoPresenter.set_locking_keys_presented  rr   r   c               $    V ^8  d   QhRRRRRR/# r   r6   default.ScriptobjzAtspi.Accessibler   r*   r   r   r   r   r   r     s#      ^ BR W[ r   c                s0   V P                  4       '       g   R# \        P                  ! V4      p\        P                  ! W#^,
          4      ^ R w  rE\        P                  ! W%^,
          4      ^ R w  rgV\        P
                  R,           9   d   VR9   g   R# \        P                  ! W'4      ^ ,          pV'       g+   Rp	\        P                  ! \        P                  V	R4       R# VP                  P                  W(R7      p
VP                  WVR7       R# )	zASpeaks the sentence prior to the caret if at a sentence boundary.F    z!.?:;zETYPING ECHO PRESENTER: At a sentence boundary, but no sentence found.Tr   stringr   )rW   r   get_caret_offsetget_character_at_offsetr   
whitespaceZget_sentence_at_offsetr   r#   r$   speech_generatorvoicespeak_message)r%   r6   r   offsetZcharZstartZprevious_charZprevious_startrA   r&   r   s   &&&        r   echo_previous_sentenceZ*TypingEchoPresenter.echo_previous_sentence  s     --//((-44S1*EaK(.(F(FsTUI(VWXY[(\%))H44'9Q00EaHYC 0 0#t<''--#-GX#6r   c               r   r   r   r   r   r   r   r     s#       >N SW r   c                s   V P                  4       '       g   R# \        P                  ! V4      pVR8X  d   \        P                  ! V4      pV^ 8:  d   R# \        P                  ! W#^,
          4      ^ R w  rEV\
        P                  \
        P                  ,           R,           9  d   R# \        P                  ! W%^,
          4      ^ R w  rEV\
        P                  \
        P                  ,           R,           9   d   R# \        P                  ! W%4      ^ ,          pV'       g   R# VP                  P                  W&R7      pVP                  WgVR7       R# )z9Speaks the word prior to the caret if at a word boundary.Fr   r   r   Tr   )rT   r   r   Zget_character_countr   r   Zpunctuationr   Zget_word_at_offsetr   r   r   )r%   r6   r   r   Z	prev_charZ
prev_startr@   r   s   &&&     r   echo_previous_wordZ&TypingEchoPresenter.echo_previous_word  s    ))++((-R<//4FQ; !' > >sQJ OPQRT U	F..1B1BBXMM !' > >sQRN STUVX Y	**V->->>II((9!<''--#-CTc2r   c               r.   r   r7   input_event.KeyboardEventr   r*   r   r   r   r   r   r     s     t t0I td tr   c                s   VP                  4       pV'       g   VP                  4       MRpRV R2p\        P                  ! \        P                  VR4       VP                  4       '       g+   Rp\        P                  ! \        P                  VR4       R# V P                  4       pVP                  4       '       d   VP                  4       pV^8X  d+   Rp\        P                  ! \        P                  VR4       R# V^8H  ;'       d    T;'       d    V P                  4       pRV R	2p\        P                  ! \        P                  VR4       V# VP                  4       '       d+   R
p\        P                  ! \        P                  VR4       R# V P                  V4      '       d+   Rp\        P                  ! \        P                  VR4       R# VP                  4       '       d?   V P                  4       pRV R	2p\        P                  ! \        P                  VR4       V# V'       g+   Rp\        P                  ! \        P                  VR4       R# VP                  4       '       d?   V P                  4       pRV R	2p\        P                  ! \        P                  VR4       V# VP!                  4       '       d?   V P#                  4       pRV R	2p\        P                  ! \        P                  VR4       V# VP%                  4       '       d?   V P                  4       pRV R	2p\        P                  ! \        P                  VR4       V# VP'                  4       '       d?   V P)                  4       pRV R	2p\        P                  ! \        P                  VR4       V# \*        P,                  ! VP/                  4       4      '       dA   VP                  4       '       d+   Rp\        P                  ! \        P                  VR4       R# VP1                  4       '       d?   V P3                  4       pRV R	2p\        P                  ! \        P                  VR4       V# VP5                  4       '       d?   V P7                  4       pRV R	2p\        P                  ! \        P                  VR4       V# VP9                  4       '       d?   V P;                  4       pRV R	2p\        P                  ! \        P                  VR4       V# VP=                  4       '       d?   V P?                  4       pRV R	2p\        P                  ! \        P                  VR4       V# VPA                  4       '       dW   V PC                  4       ;'       g    V PE                  4       pRV R	2p\        P                  ! \        P                  VR4       V# Rp\        P                  ! \        P                  VR4       R# )z:Returns whether the given keyboard event should be echoed.z
(obscured)z4TYPING ECHO PRESENTER: should_echo_keyboard_event: 'z'?TzFTYPING ECHO PRESENTER: Not echoing keyboard event: key is not pressed.Fz:TYPING ECHO PRESENTER: Echoing Orca modifier double-click.z=TYPING ECHO PRESENTER: Echoing modifier Orca modifier event: rL   zBTYPING ECHO PRESENTER: Not echoing keyboard event due to modifier.zITYPING ECHO PRESENTER: Not echoing keyboard event: is character echoable.z7TYPING ECHO PRESENTER: Echoing locking keyboard event: zKTYPING ECHO PRESENTER: Not echoing keyboard event: key echo is not enabled.z:TYPING ECHO PRESENTER: Echoing navigation keyboard event: z6TYPING ECHO PRESENTER: Echoing action keyboard event: z8TYPING ECHO PRESENTER: Echoing modifier keyboard event: z8TYPING ECHO PRESENTER: Echoing function keyboard event: zDTYPING ECHO PRESENTER: Not echoing keyboard event: is password text.z;TYPING ECHO PRESENTER: Echoing diacritical keyboard event: z:TYPING ECHO PRESENTER: Echoing alphabetic keyboard event: z7TYPING ECHO PRESENTER: Echoing numeric keyboard event: z;TYPING ECHO PRESENTER: Echoing punctuation keyboard event: z5TYPING ECHO PRESENTER: Echoing space keyboard event: zDTYPING ECHO PRESENTER: Not echoing keyboard event: key type unknown.)#should_obscureget_key_namer   r#   r$   is_pressed_keyrG   Zis_orca_modifierZget_click_countro   is_alt_control_or_orca_modifiedis_character_echoableZis_locking_keyr   Zis_navigation_keyrz   Zis_action_keyrw   Zis_modifier_keyZis_function_keyrt   r   is_password_text
get_objectZis_diacritical_keyr}   Zis_alphabetic_keyr]   Zis_numeric_keyrb   Zis_punctuation_keyrf   Zis_spacerk   rQ   )r%   r7   r   Znamer&   Zkey_echo_enabledZclick_countr   s   &&      r   should_echo_keyboard_eventZ.TypingEchoPresenter.should_echo_keyboard_event  s    --/+9u!!#|DTF"ME,,c48##%%ZC 0 0#t<446!!##//1KaR##E$4$4c4@ A%__*:__t?]?]?_FQRXQYYZ[C 0 0#t<M 0022VC 0 0#t<%%e,,]C 0 0#t<!!446FKF8STUC 0 0#t<M_C 0 0#t<""$$557FNvhVWXC 0 0#t<M  113FJ6(RSTC 0 0#t<M  ""335FLVHTUVC 0 0#t<M  ""335FLVHTUVC 0 0#t<M''(8(8(:;;@T@T@V@VXC 0 0#t<##%%668FOPVxWXYC 0 0#t<M""$$557FNvhVWXC 0 0#t<M!!224FKF8STUC 0 0#t<M##%%668FOPVxWXYC 0 0#t<M>>++-RR1P1P1RFI&QRSC 0 0#t<MTE,,c48r   c               r.   r   r   r   r   r   r   r   6  s      +D  r   c                s   V P                  4       '       g   R# VP                  4       '       d+   Rp\        P                  ! \        P                  VR4       R# VP                  4       '       g+   Rp\        P                  ! \        P                  VR4       R# VP                  4       p\        P                  ! V4      '       d+   Rp\        P                  ! \        P                  VR4       R# \        P                  ! V4      '       g   \        P                  ! V4      '       d+   Rp\        P                  ! \        P                  VR4       R# Rp\        P                  ! \        P                  VR4       R# )zJReturns True if the script will echo this event as part of character echo.Fz>TYPING ECHO PRESENTER: Not character echoable due to modifier.TzDTYPING ECHO PRESENTER: Not character echoable, is not printable key.z@TYPING ECHO PRESENTER: Not character echoable, is password text.zCTYPING ECHO PRESENTER: Character echoable, is editable or terminal.zATYPING ECHO PRESENTER: Not character echoable, no reason to echo.)rQ   r   r   r#   r$   is_printable_keyr   r   r   Zis_editableis_terminal)r%   r7   r&   r   s   &&  r   r   Z)TypingEchoPresenter.is_character_echoable6  s    ..000022RC 0 0#t<%%''XC 0 0#t< '',,TC 0 0#t<""3'';+B+B3+G+GWC 0 0#t<QE,,c48r   c               r   r   r6   r   r7   r   r   r   r   r   r   r   r   r   U  s(     C C~ C>W C\` Cr   c                s8   Rp\         P                  ! \         P                  VR4       RpVP                  4       '       d   VP	                  4       pVP
                  P                  VR7      p\        P                  ! Y%'       d   V^ ,          4       R# R4       R# )z Speaks the given keyboard event.z0TYPING ECHO PRESENTER: Presenting keyboard eventTN)r   )	r   r#   r$   r   r   r   r   r   Zspeak_key_event)r%   r6   r7   r&   Zkey_namer   s   &&&   r   _speak_key_eventZ$TypingEchoPresenter._speak_key_eventU  sx     AE,,c48!!##))+H''--X->u%eAhBTBr   c               r   )r   r6   r   r7   zAtspi.Eventr   r   r   r   r   r   r   r   b  s"     0 0. 0 0Y] 0r   c                sB   V P                   f+   Rp\        P                  ! \        P                  VR4       R# V P                   P	                  4       VP
                  8w  d+   Rp\        P                  ! \        P                  VR4       R# V P                   P                  4       P                  4       pVP                  P                  4       V8X  dM   Rp\        P                  ! \        P                  VR4       V P                  WP                   4       RV n         R# R# )zOEchoes a previously delayed terminal key press if it matches the inserted text.Nz:TYPING ECHO PRESENTER: No rejected terminal press to echo.TzJTYPING ECHO PRESENTER: Delayed terminal press does not match event source.z6TYPING ECHO PRESENTER: Echoing delayed terminal press.)
r"   r   r#   r$   r   Zsourcer   ZlowerZany_datar   )r%   r6   r7   r&   Z	characters   &&&  r   echo_delayed_terminal_pressZ/TypingEchoPresenter.echo_delayed_terminal_pressb  s     ''/NC 0 0#t<''224D^C 0 0#t<00==?EEG	>>!Y.JC 0 0#t<!!&*F*FG+/D(	 /r   c               r   r   r   r   r   r   r   r   v  s#      -  -.  -AZ  -_c  -r   c                s   VP                  4       P                  VP                  4      '       d+   Rp\        P                  ! \        P
                  VR4       R# VP                  4       '       g   VP                  P                  4        R# RV n	        V P                  V4      '       g   R# VP                  4       p\        P                  ! V4      '       dG   VP                  4       '       d1   Rp\        P                  ! \        P
                  VR4       W n	        R# VP                  4       ;p'       d>   VP!                  4       pV RV 2p\"        P$                  ! V\&        P(                  R7       V P+                  W4       R# )z!Presents the KeyboardEvent event.zBTYPING ECHO PRESENTER: Ignoring keyboard event, sleep mode active.TNz8TYPING ECHO PRESENTER: Delaying terminal key press echo.Z )Z	flashTime)Zget_sleep_mode_managerZis_active_for_appZappr   r#   r$   r   Z	utilitiesZ%clear_cached_command_state_deprecatedr"   r   r   r   r   r   Zget_locking_state_stringr   r   ZdisplayMessager
   ZbrailleFlashTimer   )r%   r6   r7   r&   r   Zlocking_state_stringZkeynames   &&&    r   echo_keyboard_eventZ'TypingEchoPresenter.echo_keyboard_eventv  s1    ((*<<VZZHHVC 0 0#t<##%%BBD'+$..u55 ""3''E,B,B,D,D
 MC 0 0#t<+0(#(#A#A#CCC((*GIQ345C""3(2K2KLf,r   )r!   r"   r   )FT)F)NNT)3Z__name__Z
__module__Z__qualname__Z__firstlineno____doc__r(   r-   r   r/   r,   r   Zcommandr2   ZgetterrG   ZsetterrO   rQ   rS   rT   rV   rW   rZ   r]   r_   rb   rc   rf   rh   rk   rl   ro   rq   rt   ru   rw   rx   rz   r{   r}   r~   r   r   r   r   r   r   r   r   r   Z__static_attributes__r   r   r   r   r   <   sZ   'J99 0 0d K K
   S S
   N N
   R R
   R R
   O O
   S S
   I I
   P P
   P P
   N N
   R R
   S S
   
A 
A  ,@tl>C0( -  -r   r   
_presenterc               r   )r   r   r   r   r   r   r   r   r     s      * r   c                 s    \         # )z!Returns the Typing Echo Presenter)r   r   r   r   get_presenterr     s
     r   )%__conditional_annotations__r   Z
__future__r   Z__id__Z__version__Z__date__Z__copyright__Z__license__r   Ztypingr   r5   r   r   r   r   r   r   r	   r
   r   r   Zax_textr   Zax_utilitiesr   ZgiZrequire_versionZgi.repositoryr   Zscriptsr   r   r   Z__annotations__r   )r   s   @r   <module>r      s   2 $ #7               %w&# Z	- Z	-x #6"7
 7r   