<protocol name="zwp_action_route">
  <interface name="action_route" version="1">
    <enum name="mode">
      <description summary="types of state on the surface">
      </description>
      <entry name="focus_shared" value="1" summary="Activatable by any surface if its wl_client has focus">
      </entry>
      <entry name="focus_topmost" value="2" summary="Activatable by topmost surface with focus">
        <description summary="Restricts activation to only the top-most client"/>
      </entry>
      <entry name="exclusive" value="3" summary="Activatable by one surface at any time">
        <description summary="Allows activation for exactly one client at all times"/>
      </entry>
    </enum>
    <enum name="modifiers">
       <entry name="shift" value="1"></entry>
       <entry name="control" value="2"></entry>
       <entry name="alt" value="4"></entry>
       <entry name="win" value="8"></entry>
       <entry name="altgr" value="16"></entry>
    </enum>
    <request name="bind_action">
      <description summary="Request a new grab for a key press">
      </description>
      <arg name="id" type="new_id" interface="action_route_bind"/>
      <arg name="action" type="string"/>
    </request>
    <request name="grab_key">
      <description summary="Request a new grab for a key press">
      </description>
      <arg name="id" type="new_id" interface="action_route_key_grab"/>
      <arg name="surface" type="object" interface="wl_surface"/>
      <arg name="key" type="string"/>
      <arg name="mode" type="uint"/>
      <arg name="modifiers" type="uint"/>
      <arg name="action" type="string"/>
      <arg name="params" type="string" allow-null="true"/>
    </request>
  </interface>
  <interface name="action_route_bind" version="1">
   <enum name="state">
       <entry name="Rejected" value="0"></entry>
       <entry name="Active" value="1"></entry>
       <entry name="Queued" value="2"></entry>
    </enum>
    <event name="status">
       <description summary="Status update on a bind request"></description>
       <arg name="state" type="uint"/>
    </event>
    <request name="activate">
      <description summary="Activate a bind"/>
      <arg name="params" type="string" allow-null="true"/>
    </request>
    <request name="destroy" type="destructor">
      <description summary="Destroy a requested bind">
      </description>
    </request>
    <event name="end">
     <description summary="The bind has completed execution"/>
    </event>
  </interface>
  <interface name="action_route_key_grab" version="1">
    <enum name="state">
       <entry name="Rejected" value="0"></entry>
       <entry name="Active" value="1"></entry>
       <entry name="Queued" value="2"></entry>
    </enum>
    <event name="status">
       <description summary="Status update on a grab request"></description>
       <arg name="state" type="uint"/>
    </event>
    <request name="destroy" type="destructor">
      <description summary="Destroy a requested grab">
      </description>
    </request>
  </interface>
</protocol>
