==================================
Keybind Directive - Single Trigger
==================================

keybind = ctrl+shift+a=toggle
keybind = ctrl+j=toggle

---

(document
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (key)))
    (keybind_action
     (action_name))))))

================================
Keybind Directive - Special Keys
================================

keybind = ctrl+up=toggle
keybind = ctrl+down=toggle
keybind = ctrl+left=toggle
keybind = ctrl+right=toggle
keybind = ctrl+plus=toggle
keybind = ctrl+minus=toggle
keybind = ctrl+f1=toggle
keybind = ctrl+f2=toggle
keybind = ctrl+f3=toggle
keybind = ctrl+f4=toggle
keybind = ctrl+f5=toggle
keybind = ctrl+f6=toggle
keybind = ctrl+f7=toggle
keybind = ctrl+f8=toggle
keybind = ctrl+f9=toggle
keybind = ctrl+f10=toggle
keybind = ctrl+f11=toggle
keybind = ctrl+f12=toggle

---

(document
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name)))))
      (directive
        (keybind_directive
          (property)
          (keybind_value
            (keybind_trigger
              (chord
                (modifier_key)
                (key)))
            (keybind_action
              (action_name))))))

=====================================
Keybind Directive - Multiple Triggers
=====================================

keybind = ctrl+shift+a>a=toggle
keybind = ctrl+j>ctrl+j=toggle

---

(document
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (modifier_key)
      (key))
     (chord
      (key)))
    (keybind_action
     (action_name)))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (key))
     (chord
      (modifier_key)
      (key)))
    (keybind_action
     (action_name))))))

=====================================
Keybind Directive - Keybind Modifiers
=====================================

keybind = all:ctrl+shift+a=toggle
keybind = global:ctrl+shift+a=toggle
keybind = local:ctrl+shift+a=toggle
keybind = unconsumed:ctrl+shift+a=toggle
keybind = global:unconsumed:ctrl+shift+a=toggle

---

(document
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_modifier)
    (keybind_trigger
     (chord
      (modifier_key)
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_modifier)
    (keybind_trigger
     (chord
      (modifier_key)
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_modifier)
    (keybind_trigger
     (chord
      (modifier_key)
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_modifier)
    (keybind_trigger
     (chord
      (modifier_key)
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_modifier)
    (keybind_modifier)
    (keybind_trigger
     (chord
      (modifier_key)
      (modifier_key)
      (key)))
    (keybind_action
     (action_name))))))

=====================================
Keybind Directive - Action Parameters
=====================================

keybind = ctrl+shift+a=foo:BAR
keybind = ctrl+shift+a=foo:bar baz
keybind = ctrl+shift+a=foobar:"A B"

---

(document
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)
     (action_argument (string))))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)
     (action_argument (string))))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)
     (action_argument (string)))))))


=====================================
Keybind Directive - Key Prefix
=====================================

keybind = ctrl+shift+physical:a=foo:BAR

---

(document
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (modifier_key)
      (key 
       (key_qualifier))))
    (keybind_action
     (action_name)
     (action_argument (string)))))))

================================
Keybind Directive - Special Keys
================================

keybind = ctrl+ö=action
keybind = ctrl+up=action
keybind = ctrl+plus=action
keybind = ctrl+f10=action

---

(document
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (key)))
    (keybind_action
     (action_name))))))

=================================
Keybind Directive - Clear Keyword
=================================

keybind = clear

---

(document
 (directive
  (keybind_directive
   (property)
   (keybind_value))))

=================================
Keybind Directive - Quoted Values
=================================

keybind = "clear"
keybind = "ctrl+a=foo:bar"

---

(document
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (string))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (string)))))

===============================
Keybind Directive - Empty Value
===============================

keybind =

---

(document
 (directive
  (keybind_directive
   (property))))


====================================
Keybind Directive - Action Arguments
====================================

keybind = ctrl+a=action:string
keybind = ctrl+a=action:#
keybind = ctrl+a=action:"something "
keybind = ctrl+a=action:10
keybind = ctrl+a=action:-10
keybind = ctrl+a=action:- 10
keybind = ctrl+a=action:true

---

(document
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)
     (action_argument
      (string))))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)
     (action_argument
      (string))))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)
     (action_argument
      (string))))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)
     (action_argument
      (number))))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)
     (action_argument
      (number))))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)
     (action_argument
      (string))))))
 (directive
  (keybind_directive
   (property)
   (keybind_value
    (keybind_trigger
     (chord
      (modifier_key)
      (key)))
    (keybind_action
     (action_name)
     (action_argument
      (boolean)))))))
