13. Specific keyboard shortcuts
Prev | Chapter 2. Writing a configuration file for XXE | Next

## 13. Specific keyboard shortcuts

The `binding` element allows to specify a binding which is specific to a given document type. A `binding` element binds a user input, for example a sequence of key strokes, to a command.

Excerpts from `rng_section_config/common.incl` (same file for all variants):

    <property name="$c blockList">
      {http://www.xmlmind.com/ns/sect}paragraph=paragraph
    </property>

    <binding>
      <keyPressed code="ENTER" />
      <command name="insertNewlineOrSplitBlock" />
    </binding>

    ...

    <binding>
      <keyPressed code="DELETE" />
      <command name="deleteSelectionOrJoinBlockOrDeleteChar" />
    </binding>

    <binding>
      <keyPressed code="BACK_SPACE" />
      <command name="deleteSelectionOrJoinBlockOrDeleteChar"
               parameter="backwards" />
    </binding>

    ...

    <binding>
      <keyPressed code="ENTER" modifiers="shift" />
      <command name="sect.insertBreak" />
    </binding>

When a user presses the ENTER, DELETE, or BACK_SPACE key while the caret is found inside a `paragraph` element, we want XXE to behave like any word-processor. This is precisely what do commands `insertNewlineOrSplitBlock in XMLmind XML Editor - Commands` and `deleteSelectionOrJoinBlockOrDeleteChar` in XMLmind XML Editor - Commands. However for these commands to work, the elements behaving like paragraphs (or list items) must have been specified. For the "Simple Section" configuration, this specification is simply:

    <property name="$c blockList">
      {http://www.xmlmind.com/ns/sect}paragraph=paragraph
    </property>

Notice "`$c blockList`", which is a shorthand for "``configuration_name` blockList`".

| When the user presses Shift+ENTER, we want XXE to add a `break` element at caret location. Moreover, if the newly inserted `break` element is not immediately followed by a text node, we want XXE to automatically add a text node and move the caret to this new empty text node.

Prev | Up | Next
12.1. About the table editing command | Home | 13.1. About macro commands