+/**
+ * SECTION:gtkbindings
+ * @Title: Bindings
+ * @Short_description: Key bindings for individual widgets
+ * @See_also: Keyboard Accelerators, Mnemonics, #GtkCssProvider
+ *
+ * #GtkBindingSet provides a mechanism for configuring GTK+ key bindings
+ * through CSS files. This eases key binding adjustments for application
+ * developers as well as users and provides GTK+ users or administrators
+ * with high key binding configurability which requires no application
+ * or toolkit side changes.
+ *
+ * <refsect2 id="gtk-bindings-install">
+ * <title>Installing a key binding</title>
+ * <para>
+ * A CSS file binding consists of a 'binding-set' definition and a match
+ * statement to apply the binding set to specific widget types. Details
+ * on the matching mechanism are described under
+ * <link linkend="gtkcssprovider-selectors">Selectors</link>
+ * in the #GtkCssProvider documentation. Inside the binding set definition,
+ * key combinations are bound to one or more specific signal emissions on
+ * the target widget. Key combinations are strings consisting of an optional
+ * #GdkModifierType name and <link linkend="gdk-Keyboard-Handling">key names</link>
+ * such as those defined in <filename><gdk/gdkkeysyms.h></filename>
+ * or returned from gdk_keyval_name(), they have to be parsable by
+ * gtk_accelerator_parse(). Specifications of signal emissions consist
+ * of a string identifying the signal name, and a list of signal specific
+ * arguments in parenthesis.
+ * </para>
+ * <para>
+ * For example for binding Control and the left or right cursor keys
+ * of a #GtkEntry widget to the #GtkEntry::move-cursor signal (so movement
+ * occurs in 3-character steps), the following binding can be used:
+ * <informalexample><programlisting>
+ * @binding-set MoveCursor3
+ * {
+ * bind "<Control>Right" { "move-cursor" (visual-positions, 3, 0) };
+ * bind "<Control>Left" { "move-cursor" (visual-positions, -3, 0) };
+ * };
+ * GtkEntry
+ * {
+ * gtk-key-bindings: MoveCursor3
+ * }
+ * </programlisting></informalexample>
+ * </para>
+ * </refsect2>
+ * <refsect2 id="gtk-bindings-unbind">
+ * <title>Unbinding existing key bindings</title>
+ * <para>
+ * GTK+ already defines a number of useful bindings for the widgets
+ * it provides. Because custom bindings set up in CSS files take
+ * precedence over the default bindings shipped with GTK+, overriding
+ * existing bindings as demonstrated in
+ * <link linkend="gtk-bindings-install">Installing a key binding</link>
+ * works as expected. The same mechanism can not be used to "unbind"
+ * existing bindings, however.
+ * <informalexample><programlisting>
+ * @binding-set MoveCursor3
+ * {
+ * bind "<Control>Right" { };
+ * bind "<Control>Left" { };
+ * };
+ * GtkEntry
+ * {
+ * gtk-key-bindings: MoveCursor3
+ * }
+ * </programlisting></informalexample>
+ * The above example will not have the desired effect of causing
+ * "<Control>Right" and "<Control>Left" key presses to
+ * be ignored by GTK+. Instead, it just causes any existing bindings
+ * from the bindings set "MoveCursor3" to be deleted, so when
+ * "<Control>Right" or "<Control>Left" are pressed, no
+ * binding for these keys is found in binding set "MoveCursor3".
+ * GTK+ will thus continue to search for matching key bindings, and will
+ * eventually lookup and find the default GTK+ bindings for entries which
+ * implement word movement. To keep GTK+ from activating its default
+ * bindings, the "unbind" keyword can be used like this:
+ * <informalexample><programlisting>
+ * @binding-set MoveCursor3
+ * {
+ * unbind "<Control>Right";
+ * unbind "<Control>Left";
+ * };
+ * GtkEntry
+ * {
+ * gtk-key-bindings: MoveCursor3
+ * }
+ * </programlisting></informalexample>
+ * Now, GTK+ will find a match when looking up "<Control>Right"
+ * and "<Control>Left" key presses before it resorts to its default
+ * bindings, and the match instructs it to abort ("unbind") the search,
+ * so the key presses are not consumed by this widget. As usual, further
+ * processing of the key presses, e.g. by an entry's parent widget, is
+ * now possible.
+ * </para>
+ * </refsect2>
+ */