Mini Shell

Direktori : /lib/python3.6/site-packages/orca/__pycache__/
Upload File :
Current File : //lib/python3.6/site-packages/orca/__pycache__/input_event.cpython-36.pyc

3

�p5[�h�@s�dZdZdZdZdZdZddlZddlZddlZddl	m
Z
dd	l	mZd
dlm
Z
d
dlmZd
d
lmZd
dlmZd
dlmZd
dlmZdZdZdZGdd�d�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�d�ZdS)z+Provides support for handling input events.z$Id$z
$Revision$z$Date$zQCopyright (c) 2005-2008 Sun Microsystems Inc.Copyright (c) 2011-2016 Igalia, S.L.ZLGPL�N)�Gdk)�GLib�)�debug)�keybindings)�keynames)�messages)�
orca_state)�settingsZkeyboardZbraillezmouse:buttonc@s$eZdZdd�Zdd�Zdd�ZdS)�
InputEventcCs||_tj�|_d|_dS)zCCreates a new KEYBOARD_EVENT, BRAILLE_EVENT, or MOUSE_BUTTON_EVENT.rN)�type�time�_clickCount)�selfZ	eventType�r�!/usr/lib/python3.6/input_event.py�__init__1s
zInputEvent.__init__cCs|jS)z9Return the count of the number of clicks a user has made.)r)rrrr�
getClickCount8szInputEvent.getClickCountcCsdS)z:Updates the count of the number of clicks a user has made.Nr)rrrr�
setClickCount=szInputEvent.setClickCountN)�__name__�
__module__�__qualname__rrrrrrrr/srcsZeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZ�fdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�ZdSd*d+�Zd,d-�Zd.d/�Z d0d1�Z!d2d3�Z"d4d5�Z#d6d7�Z$d8d9�Z%d:d;�Z&d<d=�Z'd>d?�Z(d@dA�Z)dBdC�Z*dDdE�Z+dFdG�Z,dTdIdJ�Z-dUdKdL�Z.dMdN�Z/dOdP�Z0dQdR�Z1�Z2S)V�
KeyboardEventrF�unknownZ	printableZmodifierZlocking�function�actionZ
navigationZdiacriticalZ
alphabeticZnumericZpunctuation�spacec	s�t�jt�|j|_|j|_|j|_|j|_|j|_d|_|j	|_	|j
|_
|tjtj
gk|_tj|_d|_tj|_tj|_d|_d|_d|_d|_d|_d|_|jr�|jj|�|jj|_|js�|jjj�|_|jtj @o�|j	o�t!|j�dk�rt"|jd�}|dk�rt#|d�|_|j�r0t$j%d7_%ndt$_%d|_&|jt'j(k}y|jj)�}Wnd}YnX|�pv|t'j*k}|j+��r�t$j,|_&|�o�t-j.|_/�n�|j0��r�t$j1|_&|�o�t-j2|_/�np|j3��r�t$j4|_&|�o�t-j5|_/|j6��r0|t$_7�n<|j8��rt$j9|_&|�ot-j:|_/�n|j;��r:t$j<|_&|�o4t-j=|_/n�|j>��rzt$j?|_&t-j@|_/|j/dk�rjt-jA|_/|j/�ot||_/n�|jB��r�t$jC|_&|�o�t-jD�p�t-jE|_/n�|jF��r�t$jG|_&|�o�t-jH�p�t-jE|_/nb|jI��r�t$jJ|_&|�o�t-jK�p�t-jE|_/n8|jL��r"t$jM|_&|�ot-jN�pt-jE|_/nt$jO|_&d|_/|j>��sJ|j/�oFt-jP|_/|j3��s\|jQ�tjR�rp|�rpdt$_7t$j7�r�|jtjSO_|jT�\|_|_dS)zxCreates a new InputEvent of type KEYBOARD_EVENT.

        Arguments:
        - event: the AT-SPI keyboard event
        �Nrr� �@F)U�superr�KEYBOARD_EVENT�idr�hw_code�	modifiers�event_string�keyval_name�is_text�	timestampr	�lastInputEvent�lastNonModifierKeyEvent�is_duplicate�activeScript�_script�_app�activeWindow�_windowZlocusOfFocus�_obj�_handler�	_consumer�_should_consume�_consume_reason�_did_consume�_result_reasonZcheckKeyboardEventDataZapp�	utilitiesrZCTRL_MODIFIER_MASK�len�ord�chrr�duplicateCount�keyType�pyatspi�KEY_PRESSED_EVENTZgetRoleZ
ROLE_TERMINAL�isNavigationKey�TYPE_NAVIGATIONr
ZenableNavigationKeys�
shouldEcho�isActionKey�TYPE_ACTIONZenableActionKeys�
isModifierKey�
TYPE_MODIFIERZenableModifierKeys�isOrcaModifier�orcaModifierPressed�
isFunctionKey�
TYPE_FUNCTIONZenableFunctionKeys�isDiacriticalKey�TYPE_DIACRITICALZenableDiacriticalKeys�isLockingKey�TYPE_LOCKINGZpresentLockingKeysZonlySpeakDisplayedText�isAlphabeticKey�TYPE_ALPHABETICZenableAlphabeticKeysZenableEchoByCharacter�isNumericKey�TYPE_NUMERICZenableNumericKeys�isPunctuationKey�TYPE_PUNCTUATIONZenablePunctuationKeys�isSpace�
TYPE_SPACEZenableSpace�TYPE_UNKNOWNZ
enableKeyEchor�bypassNextCommand�ORCA_MODIFIER_MASK�
shouldConsume)r�event�valueZ
_isPressedZroleZ_mayEcho)�	__class__rrrTs�


















zKeyboardEvent.__init__cCs�tj}t|t�s0|j|jks0|j|jtjkr:d|_dS|j	�|_|j
rNdS|jtj
kr^dS|jdkrz|jd7_dSd|_dS)z:Updates the count of the number of clicks a user has made.rN�)r	r*�
isinstancerr%r
r
�doubleClickTimeoutrrr+rr>ZKEY_RELEASED_EVENT)rZ	lastEventrrrr�s

zKeyboardEvent.setClickCountcCs0|sdS|j|jkr,|j|jkr,|j|jkSdS)NF)rr#r()r�otherrrr�__eq__�s
zKeyboardEvent.__eq__cCszd|jd|jd|jd|jd|jd|jd|jd|jd	tj�d
|j	d|j
d|jS)
NzKEYBOARD_EVENT:  type=%d
z                 id=%d
z                 hw_code=%d
z                 modifiers=%d
z#                 event_string=(%s)
z"                 keyval_name=(%s)
z                 is_text=%s
z                 timestamp=%d
z                 time=%f
z                 keyType=%s
z                 clickCount=%s
z                 shouldEcho=%s
)rr"r#r$r%r&r'r(r
r=rrB)rrrr�__str__�szKeyboardEvent.__str__cCsLtj}|sdS|j�s |j�r$dS|j|jkrH|j|jkrH|j|jkSdS)NF)r	r*�isPressedKeyr"r#r$)rZlastrrr�$_isReleaseForLastNonModifierKeyEvent�sz2KeyboardEvent._isReleaseForLastNonModifierKeyEventcCs|jr|jtjkS|jdkS)z(Return True if this is a navigation key.�Left�Right�Up�Down�Home�End)rfrgrhrirjrk)r=rrAr%)rrrrr@szKeyboardEvent.isNavigationKeycCs|jr|jtjkS|jdkS)	z%Return True if this is an action key.�Return�Escape�Tab�	BackSpace�Delete�Page_Up�	Page_Down)rlrmrnrorprqrr)r=rrDr%)rrrrrCs
zKeyboardEvent.isActionKeycCs.|jr|jtjkSt|j�dks$dS|jj�S)z)Return True if this is an alphabetic key.rF)r=rrPr9r%�isalpha)rrrrrOs
zKeyboardEvent.isAlphabeticKeycCs|jr|jtjkS|jjd�S)z5Return True if this is a non-spacing diacritical key.Zdead_)r=rrLr%�
startswith)rrrrrK&szKeyboardEvent.isDiacriticalKeyc
Cs|jr|jtjkS|jd
kS)z&Return True if this is a function key.�F1�F2�F3�F4�F5�F6�F7�F8�F9�F10�F11�F12)rurvrwrxryrzr{r|r}r~rr�)r=rrJr%)rrrrrI.s
zKeyboardEvent.isFunctionKeycCs@|jr|jtjkSdddg}|j|kr*dStjs<|jtjkSdS)z%Return True if this is a locking key.�	Caps_Lock�Num_LockZScroll_LockFT)r=rrNr%r	rXr
�orcaModifierKeys)rZlockingKeysrrrrM8s

zKeyboardEvent.isLockingKeyc
Cs(|jr|jtjkS|j�rdS|jdkS)z&Return True if this is a modifier key.T�Alt_L�Alt_R�	Control_L�	Control_R�Shift_L�Shift_R�Meta_L�Meta_R�ISO_Level3_Shift)	r�r�r�r�r�r�r�r�r�)r=rrFrGr%)rrrrrEGszKeyboardEvent.isModifierKeycCs.|jr|jtjkSt|j�dks$dS|jj�S)z%Return True if this is a numeric key.rF)r=rrRr9r%�	isnumeric)rrrrrQUs
zKeyboardEvent.isNumericKeyTcCsF|rtjrdS|jtjkrdS|jdkrBdtjkrB|jtj@rBdSdS)z-Return True if this is the Orca modifier key.FTZKP_0Z	KP_Insert)	r	rXr%r
r�r&r$rZSHIFT_MODIFIER_MASK)rZcheckBypassModerrrrG`s


zKeyboardEvent.isOrcaModifiercCstjr
dS|jtj@S)z)Return True if this key is Orca modified.F)r	rXr$rrY)rrrr�isOrcaModifiedpszKeyboardEvent.isOrcaModifiedcCs*|jdkrdSt|j�dks dS|jj�S)z'Return True if this is a printable key.r� TrF)rr�)r%r9�isprintable)rrrr�isPrintableKeyxs

zKeyboardEvent.isPrintableKeycCs|jtjkS)z"Returns True if the key is pressed)rr>r?)rrrrrd�szKeyboardEvent.isPressedKeycCsN|jr|jtjkSt|j�dks$dS|j�s4|j�r8dS|jj�oL|jj�S)z)Return True if this is a punctuation key.rF)	r=rrTr9r%rOrQr��isspace)rrrrrS�szKeyboardEvent.isPunctuationKeycCs|jr|jtjkS|jdkS)z%Return True if this is the space key.rr�)rr�)r=rrVr%)rrrrrU�szKeyboardEvent.isSpacecCs,|j�sdStjrdStj}|o*|jj|�S)z�Returns True if the script will echo this event as part of
        character echo. We do this to not double-echo a given printable
        character.F)r�r	�learnModeEnabledr,r8ZwillEchoCharacter)r�scriptrrr�isCharacterEchoable�sz!KeyboardEvent.isCharacterEchoablecCsD|j�sdS|jdkrtj}n|jdkr0tj}ndS|jd|>@S)z�Returns True if the event locked a locking key, False if the
        event unlocked a locking key, and None if we do not know or this
        is not a locking key.Nr�r�r)rMr%r>ZMODIFIER_SHIFTLOCKZMODIFIER_NUMLOCKr$)r�modrrr�getLockingState�s

zKeyboardEvent.getLockingStatecCs$|j�}|dkrdS|stjStjS)zmReturns the string which reflects the locking state we wish to
        include when presenting a locking key.Nr)r�rZLOCKING_KEY_STATE_OFFZLOCKING_KEY_STATE_ON)r�lockedrrr�getLockingStateString�sz#KeyboardEvent.getLockingStateStringcCstj|j�S)zAReturns the string to be used for presenting the key to the user.)r�
getKeyNamer%)rrrrr��szKeyboardEvent.getKeyNamecCs|jS)zAReturns the object believed to be associated with this key event.)r1)rrrr�	getObject�szKeyboardEvent.getObjectcCspytjj|jj�}Wnd}YnX|sLytjjd�}Wnd}YnXy|j|�}Wnd}YnX|S)N�default)r
ZkeyBindingsMap�getr-r�getInputHandler)rZbindingsZhandlerrrr�_getUserHandler�s


zKeyboardEvent._getUserHandlercCs|js
dS|jsdS|jrdStjr(dStjr2dS|j�pF|jjj|�|_	|jj
|�}|j�rf|dfStjr�|j
dkr�|jj|_dS|j
dkr�|jr�|jj|_dS|j
dkr�|jr�|jj|_dS|j|_dS|j��r�|j��s�d Sd!Stj�r|jj|_d"S|j	�sd#S|dfS)$z.Returns True if this event should be consumed.F�No timestamp�No active script when received�Is duplicate�Capturing keys�Bypass next commandz)Is release for last non-modifier keyeventrmT�Exiting Learn Moderu�Showing Helprvrw�Listing shortcuts�
In Learn Mode�#Non-Orca modifier not in Learn Mode�
Orca modifier�Listing notifications�
No handlerzScript indication)Fr�)Fr�)Fr�)Fr�)Fr�)Tr�)Tr�)rvrw)Tr�)Tr�)Fr�)Tr�)Tr�)Fr�)r(r-r+r	�
capturingKeysrXr�ZkeyBindingsr�r2ZconsumesKeyboardEventrer�r%Z
exitLearnModer3r$ZshowHelpZlistOrcaShortcuts�_presentHandlerrErGZlistNotificationsModeEnabledZlistNotifications)rZscriptConsumesrrrrZ�sJ






zKeyboardEvent.shouldConsumecCs|jdk	r|jSdS)z(Returns True if this event was consumed.NF)r6)rrrr�
didConsume"s
zKeyboardEvent.didConsumecCs|js
dS|j|jjkS)NF)r2�__func__r)r�methodrrr�isHandledBy*szKeyboardEvent.isHandledByNcCs|j�r|jj�|jj|�S)N)rdr-ZpresentationInterruptZpresentKeyboardEvent)r�
inputEventrrr�_present0s
zKeyboardEvent._presentcCs.|js
dS|jjr*|jjr*|jj|jj�dS)NFT)r2r��descriptionr-�presentMessage)rZinput_eventrrrr�6s
zKeyboardEvent._presentHandlercCsDtj�}d|j|jf}|jr,d|tjf}d|jjj�|f}t	j
t	j|d�d|j}t	j
t	j|d�d|j
}t	j
t	j|d�d|j}t	j
t	j|d�d	|j|jf}t	j
t	j|d�|j�\|_|_|j|jkr�d
|j|jf}t	j
t	j|d�dtj�|}t	j
t	j|d�d|jjj�|f}t	j
t	j|d�|jS)
zProcesses this input event.z	'%s' (%d)z%s DUPLICATE EVENT #%iz
vvvvv PROCESS %s: %s vvvvvFzHOST_APP: %sTzWINDOW:   %szLOCATION: %szCONSUME:  %s (%s)zCONSUMED: %s (%s)zTOTAL PROCESSING TIME: %.4fz^^^^^ PROCESS %s: %s ^^^^^
)r
r%r#r+rr<r�
value_name�upperr�println�
LEVEL_INFOr.r0r1r4r5�_processr6r7)r�	startTime�data�msgrrr�process?s.


zKeyboardEvent.processcCs�|t_|j�s|t_|jsdS|jr(dS|j�|j�sB|jdfStj	rLdS|j
�rXdStjrp|j�sldt_dS|jszdS|jp�|j
s�dS|js�|j
jr�tjd|j�dSdS)zProcesses this input event.F�No active script�Is duplicatezConsumed based on handler�Capturing keysT�
Orca modifier�Bypass next command�Should not consume�No consumer or handlerr�Will be consumed�Unaddressed case)Fr�)Fr�)Fr�)Tr�)Fr�)Fr�)Fr�)Tr�)Fr�)r	r)rEr*r-r+r�rdr4r�rGrXr3r2rrZtimeout_add�_consume)rrrrr�ds4
zKeyboardEvent._processcCs�tj�}d|j|jf}d|jjj�|f}tjtj|d�|j	rN|j	|�n|j
jrf|j
j|j|�dtj�|}tjtj|d�d|jjj�|f}tjtj|d�dS)Nz	'%s' (%d)zvvvvv CONSUME %s: %s vvvvvFzTOTAL PROCESSING TIME: %.4fTz^^^^^ CONSUME %s: %s ^^^^^)
r
r%r#rr�r�rr�r�r3r2rr-)rr�r�r�rrrr��szKeyboardEvent._consume)T)N)N)3rrrr<rHrWZTYPE_PRINTABLErFrNrJrDrArLrPrRrTrVrrrbrcrer@rCrOrKrIrMrErQrGr�r�rdrSrUr�r�r�r�r�r�rZr�r�r�r�r�r�r��
__classcell__rr)r]rrBs^y	
	



;

	%)rcseZdZ�fdd�Z�ZS)�BrailleEventcst�jt�||_dS)z�Creates a new InputEvent of type BRAILLE_EVENT.

        Arguments:
        - event: the integer BrlTTY command for this event.
        N)r r�
BRAILLE_EVENTr[)rr[)r]rrr�szBrailleEvent.__init__)rrrrr�rr)r]rr��sr�c	s`eZdZy"ejj�Zejje�Zej	�Z
WndZ
YnX�fdd�Zdd�Zdd�Z
�ZS)�MouseButtonEventNcs�t�jt�|j|_|j|_|jjd�|_	|jt
d�d�|_tj
|_d|_d|_|j	r`|j�|jsjdS|jjj�|_|js�dS|jjj|j|j|j|j�|_dS)z4Creates a new InputEvent of type MOUSE_BUTTON_EVENT.�pz
mouse:button:rN���)r r�MOUSE_BUTTON_EVENTZdetail1�xZdetail2�yr�endswith�pressedr9�buttonr	r,r-Zwindow�obj�_validateCoordinatesr8r/ZdescendantAtPointZany_data)rr[)r]rrr�s"zMouseButtonEvent.__init__cCsz|js
dS|jj�\}}}tj|j|d|j|d�dkrDdSd|j|j||f}tjtj|d�|||_|_dS)N��zGWARNING: Event coordinates (%i, %i) may be bogus. Updating to (%i, %i).T)	�_pointerZget_position�mathZsqrtr�r�rr�r�)rZscreenr�r�r�rrrr��s&z%MouseButtonEvent._validateCoordinatescCsh|js
dStj}t|t�s$d|_dS|j|jtjkr^|j	|j	kr^|jdkr^|jd7_dSd|_dS)z:Updates the count of the number of clicks a user has made.Nrr�)
r�r	r)r_r�rr
r
r`r�)rr)rrrr�s

zMouseButtonEvent.setClickCount)rrrrZDisplayZget_defaultZdisplayZget_default_seatZseatZget_pointerr�rr�rr�rr)r]rr��s


r�c@s&eZdZd	dd�Zdd�Zdd�ZdS)
�InputEventHandlerTcCs||_||_||_dS)aCreates a new InputEventHandler instance.  All bindings
        (e.g., key bindings and braille bindings) will be handled
        by an instance of an InputEventHandler.

        Arguments:
        - function: the function to call with an InputEvent instance as its
                    sole argument.  The function is expected to return True
                    if it consumes the event; otherwise it should return
                    False
        - description: a localized string describing what this InputEvent
                       does
        - learnModeEnabled: if True, the description will be spoken and
                            brailled if learn mode is enabled.  If False,
                            the function will be called no matter what.
        N)rr�r�)rrr�r�rrrr�szInputEventHandler.__init__cCs|sdS|j|jkS)z&Compares one input handler to another.F)r)rrarrrrbszInputEventHandler.__eq__c	CsVd}tjr(|jr(|jrR|j|j�d}n*y|j||�}Wntjtj�YnX|S)a�Processes an input event.  If learnModeEnabled is True,
        this will merely present the description of the input event via
        If learnModeEnabled is False, this will call the function bound
        to this InputEventHandler instance, passing the inputEvent as
        the sole argument to the function.

        This function is expected to return True if it consumes the
        event; otherwise it is expected to return False.

        Arguments:
        - script:     the script (if any) associated with this event
        - inputEvent: the input event to pass to the function bound
                      to this InputEventHandler instance.
        FT)	r	r�Z_learnModeEnabledr�r�rrZprintExceptionZLEVEL_SEVERE)rr�r��consumedrrr�processInputEvent
sz#InputEventHandler.processInputEventN)T)rrrrrbr�rrrrr��s
r�)�__doc__Z__id__�__version__Z__date__Z
__copyright__Z__license__r�r>r
Z
gi.repositoryrrrrrrrr	r
r!r�r�rrr�r�r�rrrr�<module>s8bC