📄 gtk-bindings.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"><title>Bindings</title><meta name="generator" content="DocBook XSL Stylesheets V1.73.2"><link rel="start" href="index.html" title="GTK+ Reference Manual"><link rel="up" href="gtkbase.html" title="Part II. GTK+ Core Reference"><link rel="prev" href="GtkSettings.html" title="Settings"><link rel="next" href="gtk-Standard-Enumerations.html" title="Standard Enumerations"><meta name="generator" content="GTK-Doc V1.9 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="part" href="gtk.html" title="Part I. GTK+ Overview"><link rel="part" href="gtkbase.html" title="Part II. GTK+ Core Reference"><link rel="part" href="gtkobjects.html" title="Part III. GTK+ Widgets and Objects"><link rel="chapter" href="ch01.html" title="Object Hierarchy"><link rel="chapter" href="ch02.html" title="Widget Gallery"><link rel="chapter" href="WindowWidgets.html" title="Windows"><link rel="chapter" href="DisplayWidgets.html" title="Display Widgets"><link rel="chapter" href="ButtonWidgets.html" title="Buttons and Toggles"><link rel="chapter" href="NumericEntry.html" title="Numeric/Text Data Entry"><link rel="chapter" href="TextWidgetObjects.html" title="Multiline Text Editor"><link rel="chapter" href="TreeWidgetObjects.html" title="Tree, List and Icon Grid Widgets"><link rel="chapter" href="MenusAndCombos.html" title="Menus, Combo Box, Toolbar"><link rel="chapter" href="Actions.html" title="Action-based menus and toolbars"><link rel="chapter" href="SelectorWidgets.html" title="Selectors (File/Font/Color/Input Devices)"><link rel="chapter" href="LayoutContainers.html" title="Layout Containers"><link rel="chapter" href="Ornaments.html" title="Ornaments"><link rel="chapter" href="ScrollingWidgets.html" title="Scrolling"><link rel="chapter" href="Printing.html" title="Printing"><link rel="chapter" href="MiscObjects.html" title="Miscellaneous"><link rel="chapter" href="AbstractObjects.html" title="Abstract Base Classes"><link rel="chapter" href="PlugSocket.html" title="Cross-process Embedding"><link rel="chapter" href="SpecialObjects.html" title="Special-purpose features"><link rel="chapter" href="RecentDocuments.html" title="Recently Used Documents"><link rel="chapter" href="Builder.html" title="Interface builder"><link rel="chapter" href="DeprecatedObjects.html" title="Deprecated"><link rel="part" href="migrating.html" title="Part IV. Migrating from Previous Versions of GTK+"><link rel="chapter" href="gtk-migrating-checklist.html" title="Migration Checklist"><link rel="chapter" href="gtk-migrating-GtkFileChooser.html" title="Migrating from GtkFileSelection to GtkFileChooser"><link rel="chapter" href="gtk-migrating-GtkAction.html" title="Migrating from old menu and toolbar systems to GtkAction"><link rel="chapter" href="gtk-migrating-GtkComboBox.html" title="Migrating from GtkOptionMenu and GtkCombo to GtkComboBox and GtkComboBoxEntry"><link rel="chapter" href="gtk-migrating-GtkIconView.html" title="Migrating from GnomeIconList to GtkIconView"><link rel="chapter" href="gtk-migrating-GtkAboutDialog.html" title="Migrating from GnomeAbout to GtkAboutDialog"><link rel="chapter" href="gtk-migrating-GtkColorButton.html" title="Migrating from GnomeColorPicker to GtkColorButton"><link rel="chapter" href="gtk-migrating-GtkAssistant.html" title="Migrating from GnomeDruid to GtkAssistant"><link rel="chapter" href="gtk-migrating-GtkRecentChooser.html" title="Migrating from EggRecent to GtkRecentChooser"><link rel="chapter" href="gtk-migrating-GtkLinkButton.html" title="Migrating from GnomeHRef to GtkLinkButton"><link rel="chapter" href="gtk-migrating-GtkBuilder.html" title="Migrating from libglade to GtkBuilder"><link rel="chapter" href="gtk-migrating-tooltips.html" title="Migrating from GtkTooltips to GtkTooltip"><link rel="part" href="pt05.html" title="Part V. GTK+ Tools"><link rel="glossary" href="glossary.html" title="Glossary"><link rel="index" href="ix01.html" title="Index"><link rel="index" href="ix02.html" title="Index of deprecated symbols"><link rel="index" href="ix03.html" title="Index of new symbols in 2.2"><link rel="index" href="ix04.html" title="Index of new symbols in 2.4"><link rel="index" href="ix05.html" title="Index of new symbols in 2.6"><link rel="index" href="ix06.html" title="Index of new symbols in 2.8"><link rel="index" href="ix07.html" title="Index of new symbols in 2.10"><link rel="index" href="ix08.html" title="Index of new symbols in 2.12"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="GtkSettings.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="gtkbase.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">GTK+ Reference Manual</th><td><a accesskey="n" href="gtk-Standard-Enumerations.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr><tr><td colspan="5" class="shortcuts"><nobr><a href="#id3258941" class="shortcut">Top</a>  |  <a href="#id3259492" class="shortcut">Description</a></nobr></td></tr></table><div class="refentry" lang="en"><a name="gtk-Bindings"></a><div class="titlepage"></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><a name="id3258941"></a><span class="refentrytitle">Bindings</span></h2><p>Bindings — Key bindings for individual widgets</p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">#include <gtk/gtk.h> <a class="link" href="gtk-Bindings.html#GtkBindingSet">GtkBindingSet</a>; <a class="link" href="gtk-Bindings.html#GtkBindingEntry">GtkBindingEntry</a>; <a class="link" href="gtk-Bindings.html#GtkBindingSignal">GtkBindingSignal</a>; <a class="link" href="gtk-Bindings.html#GtkBindingArg">GtkBindingArg</a>;#define <a class="link" href="gtk-Bindings.html#gtk-binding-entry-add">gtk_binding_entry_add</a>void <a class="link" href="gtk-Bindings.html#gtk-binding-entry-add-signall">gtk_binding_entry_add_signall</a> (<a class="link" href="gtk-Bindings.html#GtkBindingSet">GtkBindingSet</a> *binding_set, <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint">guint</a> keyval, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Windows.html#GdkModifierType">GdkModifierType</a> modifiers, const <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar">gchar</a> *signal_name, <ahref="/usr/share/gtk-doc/html/glib/glib-Singly-Linked-Lists.html#GSList">GSList</a> *binding_args);void <a class="link" href="gtk-Bindings.html#gtk-binding-entry-clear">gtk_binding_entry_clear</a> (<a class="link" href="gtk-Bindings.html#GtkBindingSet">GtkBindingSet</a> *binding_set, <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint">guint</a> keyval, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Windows.html#GdkModifierType">GdkModifierType</a> modifiers);<ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint">guint</a> <a class="link" href="gtk-Bindings.html#gtk-binding-parse-binding">gtk_binding_parse_binding</a> (<ahref="/usr/share/gtk-doc/html/glib/glib-Lexical-Scanner.html#GScanner">GScanner</a> *scanner);<a class="link" href="gtk-Bindings.html#GtkBindingSet">GtkBindingSet</a>* <a class="link" href="gtk-Bindings.html#gtk-binding-set-new">gtk_binding_set_new</a> (const <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar">gchar</a> *set_name);<a class="link" href="gtk-Bindings.html#GtkBindingSet">GtkBindingSet</a>* <a class="link" href="gtk-Bindings.html#gtk-binding-set-by-class">gtk_binding_set_by_class</a> (<ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer">gpointer</a> object_class);<a class="link" href="gtk-Bindings.html#GtkBindingSet">GtkBindingSet</a>* <a class="link" href="gtk-Bindings.html#gtk-binding-set-find">gtk_binding_set_find</a> (const <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar">gchar</a> *set_name);<ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean">gboolean</a> <a class="link" href="gtk-Bindings.html#gtk-bindings-activate">gtk_bindings_activate</a> (<a class="link" href="GtkObject.html" title="GtkObject">GtkObject</a> *object, <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint">guint</a> keyval, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Windows.html#GdkModifierType">GdkModifierType</a> modifiers);<ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean">gboolean</a> <a class="link" href="gtk-Bindings.html#gtk-bindings-activate-event">gtk_bindings_activate_event</a> (<a class="link" href="GtkObject.html" title="GtkObject">GtkObject</a> *object, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Event-Structures.html#GdkEventKey">GdkEventKey</a> *event);<ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean">gboolean</a> <a class="link" href="gtk-Bindings.html#gtk-binding-set-activate">gtk_binding_set_activate</a> (<a class="link" href="gtk-Bindings.html#GtkBindingSet">GtkBindingSet</a> *binding_set, <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint">guint</a> keyval, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Windows.html#GdkModifierType">GdkModifierType</a> modifiers, <a class="link" href="GtkObject.html" title="GtkObject">GtkObject</a> *object);void <a class="link" href="gtk-Bindings.html#gtk-binding-entry-add-signal">gtk_binding_entry_add_signal</a> (<a class="link" href="gtk-Bindings.html#GtkBindingSet">GtkBindingSet</a> *binding_set, <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint">guint</a> keyval, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Windows.html#GdkModifierType">GdkModifierType</a> modifiers, const <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar">gchar</a> *signal_name, <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint">guint</a> n_args, ...);void <a class="link" href="gtk-Bindings.html#gtk-binding-entry-skip">gtk_binding_entry_skip</a> (<a class="link" href="gtk-Bindings.html#GtkBindingSet">GtkBindingSet</a> *binding_set, <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint">guint</a> keyval, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Windows.html#GdkModifierType">GdkModifierType</a> modifiers);void <a class="link" href="gtk-Bindings.html#gtk-binding-entry-remove">gtk_binding_entry_remove</a> (<a class="link" href="gtk-Bindings.html#GtkBindingSet">GtkBindingSet</a> *binding_set, <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint">guint</a> keyval, <ahref="/usr/share/gtk-doc/html/gdk/gdk-Windows.html#GdkModifierType">GdkModifierType</a> modifiers);void <a class="link" href="gtk-Bindings.html#gtk-binding-set-add-path">gtk_binding_set_add_path</a> (<a class="link" href="gtk-Bindings.html#GtkBindingSet">GtkBindingSet</a> *binding_set, <a class="link" href="gtk-Standard-Enumerations.html#GtkPathType">GtkPathType</a> path_type, const <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar">gchar</a> *path_pattern, <a class="link" href="gtk-Standard-Enumerations.html#GtkPathPriorityType">GtkPathPriorityType</a> priority);</pre></div><div class="refsect1" lang="en"><a name="id3259492"></a><h2>Description</h2><p>GtkBinding provides a mechanism for configuring GTK+ key bindings through RC 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.</p><div class="refsect2" lang="en"><a name="id3259510"></a><h3>Installing a key binding</h3><a name="gtk-bindings-install"></a><p>A resource file binding consists of a 'binding' definition and a match statement to apply the binding to specific widget types. Details on the matching mechanism are described under <a class="link" href="gtk-Resource-Files.html#gtkrc-pathnames-and-patterns">Pathnames and patterns</a>.Inside the binding definition, key combinations are bound to specific signal emissions on the target widget. Key combinations are strings consisting of an optional <ahref="/usr/share/gtk-doc/html/gdk/gdk-Windows.html#GdkModifierType"><span class="type">GdkModifierType</span></a> name and <ahref="/usr/share/gtk-doc/html/gdk/gdk-Keyboard-Handling.html">key names</a> such as those defined in <code class="filename"><gdk/gdkkeysyms.h></code> or returned from <ahref="/usr/share/gtk-doc/html/gdk/gdk-Keyboard-Handling.html#gdk-keyval-name"><code class="function">gdk_keyval_name()</code></a>, they have to be parsable by <a class="link" href="gtk-Keyboard-Accelerators.html#gtk-accelerator-parse"><code class="function">gtk_accelerator_parse()</code></a>.Specifications of signal emissions consist of a string identifying the signal name, and a list of signal specific arguments in parenthesis.</p><p>For example for binding Control and the left or right cursor keys of a <a class="link" href="GtkEntry.html" title="GtkEntry"><span class="type">GtkEntry</span></a> widget to the <a class="link" href="GtkEntry.html#GtkEntry-move-cursor"><span class="type">"move-cursor"</span></a> signal, so movement occurs in 3 letter steps, the following binding can be used:</p><div class="informalexample"><pre class="programlisting">binding "MoveCursor3" { bind "<Control>Right" { "move-cursor" (visual-positions, 3, 0) } bind "<Control>Left" { "move-cursor" (visual-positions, -3, 0) }}class "GtkEntry" binding "MoveCursor3"</pre></div><p></p><a name="gtk-bindings-unbind"></a><p>GTK+ already defines a number of useful bindings for the widgets it provides.Because custom bindings set up in RC files take precedence over the default bindings shipped with GTK+, overriding existing bindings as demonstrated in <a class="link" href="gtk-Bindings.html#gtk-bindings-install">Installing a key binding</a>works as expected. The same mechanism can not be used to "unbind" existing bindings, however.</p><div class="informalexample"><pre class="programlisting">binding "MoveCursor3" { bind "<Control>Right" { } bind "<Control>Left" { }}class "GtkEntry" binding "MoveCursor3"</pre></div><p>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 matchingkey 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:</p><div class="informalexample"><pre class="programlisting">binding "MoveCursor3" { unbind "<Control>Right" unbind "<Control>Left"}class "GtkEntry" binding "MoveCursor3"</pre></div><p>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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -