
    Eg                     6   d dl Z  e j                  dd       d dlmZmZmZmZmZ d dlm	Z
 d dlZd dlZd dlmZ e
j                  e
j                   e
j"                  e
j$                  e
j&                  e
j(                  e
j*                  e
j,                  e
j.                  e
j0                  e
j2                  e
j4                  e
j6                  e
j8                  e
j:                  e
j<                  e
j>                  e
j@                  e
jB                  e
jD                  e
jF                  e
jH                  e
jJ                  e
jL                  e
jN                  e
jP                  e
jR                  e
jT                  gZ+ G d dej                        Z, G d	 d
ej                        Z-y)    NCDesktopEnumsz3.0)GtkGObjectGdkGioCinnamonDesktop)MediaKeyType)settingsc                   (     e Zd ZdZ fdZd Z xZS )ShortcutActionzZ
    A class representing a group of keybindings for a specific
    media key action.
    c                     t         t        |           || _        || _        g | _        | j                  D ]9  }t        j                  |      \  }}}| j
                  j                  |||f       ; y N)	superr   __init__actionbindingsparsedr   accelerator_parse_with_keycodeappend)selfr   r   bindingkeycodesmods	__class__s          3/usr/share/cinnamon-screensaver/util/keybindings.pyr   zShortcutAction.__init__.   sh    nd,. }} 	3G"AA'JCKKUD12	3    c                 r    | j                   D ](  }||d   k(  s||d   v s||d   k(  s| j                  c S  y)Nr         )r   r   )r   r   keycoder   r   s        r   activatezShortcutAction.activate;   sG    {{ 	#Gwqz!W
%:PQ
@R{{"	# r   )__name__
__module____qualname____doc__r   r#   __classcell__r   s   @r   r   r   )   s    3r   r   c                   .     e Zd ZdZ fdZd Zd Z xZS )KeyBindingsz
    Receives keystrokes from the EventHandler - it checks for media key
    activation, as well as special keys like Escape or Tab, and performs the
    appropriate actions.
    c                    t         t        |           || _        t        j
                  | _        t        j                  j                         | _
        t        j                  d      | _        g | _        | j                          y )Nz+org.cinnamon.desktop.keybindings.media-keys)	schema_id)r   r+   r   manager
singletonsKeybindingHandlerClientclientr   Keymapget_defaultkeymapr   Settingsmedia_key_settingsshortcut_actionsload_bindings)r   r.   r   s     r   r   zKeyBindings.__init__H   s^    k4)+ 88jj,,."%,,9f"g "r   c                     g | _         t        D ]W  }| j                  j                  t	        j
                  |            }t        ||      }| j                   j                  |       Y y r   )r7   ALLOWED_ACTIONSr6   get_strvr   desktop_get_media_key_stringr   r   )r   	action_idr   r   s       r   r8   zKeyBindings.load_bindingsV   s[     "( 	1I..778d8den8opH#Ix8F!!((0	1r   c                    |j                   t        j                  j                  k7  ryt        j                  |j
                  t        j                  j                  t        j                  j                  z   z        }|dk(  rH|j                  t        j                  k(  r+t        j                  r| j                  j                          y|j                  t        j                  t        j                  fv ryt        j                  r	|j                  t        j                   t        j"                  fv rU|j                  t        j"                  k(  r| j                  j%                  d       y| j                  j%                  d       y|j                  t        j&                  t        j(                  t        j*                  fv rMt-        | j                  j/                         t0        j2                        r| j                  j5                          yt7        j8                         rZ| j:                  D ]K  }|j=                  |j                  |j>                  |      }|dk(  r0| j@                  jC                  |        y y)NFr   Tr!   )"typer   	EventType	KEY_PRESSModifierTypestate	MOD2_MASK	LOCK_MASKkeyval
KEY_EscapestatusAwaker.   cancel_unlockingKEY_MenuKEY_F10KEY_TabKEY_ISO_Left_Tabpropagate_tab_event	KEY_space
KEY_ReturnKEY_KP_Enter
isinstanceget_focused_widgetr   Buttonpropagate_activationr
   get_allow_shortcutsr7   r#   hardware_keycoder1   handle_keybinding)r   eventfiltered_stateentryress        r   maybe_handle_eventzKeyBindings.maybe_handle_event`   s   ::000))%++#:J:J:T:TWZWgWgWqWq:q8r*rsQ5<<3>>#A||--/<<CLL#++66<<||S-A-ABB<<3#7#77LL44T:  LL44U;,,3==#..#BRBR"SST\\<<>

K113'')..  nnU\\53I3I>Z"9KK11#6  r   )r$   r%   r&   r'   r   r8   r^   r(   r)   s   @r   r+   r+   B   s    
1$r   r+   ).girequire_versiongi.repositoryr   r   r   r   r   gi.repository.CDesktopEnumsr	   MKrH   r/   utilr
   MUTE	VOLUME_UPVOLUME_UP_QUIETVOLUME_DOWNVOLUME_DOWN_QUIETMIC_MUTEEJECTPLAYPAUSESTOPPREVIOUSNEXTREWINDFORWARDREPEATRANDOMTOUCHPADTOUCHPAD_ONTOUCHPAD_OFFSHUTDOWNSUSPEND	HIBERNATESCREEN_BRIGHTNESS_UPSCREEN_BRIGHTNESS_DOWNROTATE_VIDEOKEYBOARD_BRIGHTNESS_UPKEYBOARD_BRIGHTNESS_DOWNKEYBOARD_BRIGHTNESS_TOGGLEr:   r   r+    r   r   <module>r      s)   
   ?E * A A :   77<<%%>>'';;88778877;;7799::9999;;>>??;;::<<**,,??,,..0072:W__ 2B'// Br   