The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Tk_CreateBindingTable, Tk_DeleteBindingTable, Tk_CreateBinding, Tk_DeleteBinding, Tk_GetBinding, Tk_GetAllBindings, Tk_DeleteAllBindings, Tk_BindEvent - invoke scripts in response to X events

SYNOPSIS

 B<#include E<lt>tk.hE<gt>>

 Tk_BindingTable
 B<Tk_CreateBindingTable(>I<interp>B<)>

 B<Tk_DeleteBindingTable(>I<bindingTable>B<)>

 unsigned long
 B<Tk_CreateBinding(>I<interp, bindingTable, object, eventString, script, append>B<)>

 int
 B<Tk_DeleteBinding(>I<interp, bindingTable, object, eventString>B<)>

 char *
 B<Tk_GetBinding(>I<interp, bindingTable, object, eventString>B<)>

 B<Tk_GetAllBindings(>I<interp, bindingTable, object>B<)>

 B<Tk_DeleteAllBindings(>I<bindingTable, object>B<)>

 B<Tk_BindEvent(>I<bindingTable, eventPtr, tkwin, numObjects, objectPtr>B<)>

ARGUMENTS

Tcl_Interp *interp (in)
 Interpreter to use when invoking bindings in binding table.  Also
 used for returning results and errors from binding procedures.
Tk_BindingTable bindingTable (in)
 Token for binding table;  must have been returned by some previous
 call to B<Tk_CreateBindingTable>.
ClientData object (in)
 Identifies object with which binding is associated.
char *eventString (in)
 String describing event sequence.
char *script (in)
 Tcl script to invoke when binding triggers.
int append (in)
 Non-zero means append I<script> to existing script for binding,
 if any; zero means replace existing script with new one.
XEvent *eventPtr (in)
 X event to match against bindings in I<bindingTable>.
Tk_Window tkwin (in)
 Identifier for any window on the display where the event occurred.
 Used to find display-related information such as key maps.
int numObjects (in)
 Number of object identifiers pointed to by I<objectPtr>.
ClientData *objectPtr (in)
 Points to an array of object identifiers:  bindings will be considered
 for each of these objects in order from first to last.

DESCRIPTION

 These procedures provide a general-purpose mechanism for creating
 and invoking bindings.
 Bindings are organized in terms of I<binding tables>.
 A binding table consists of a collection of bindings plus a history
 of recent events.
 Within a binding table, bindings are associated with I<objects>.
 The meaning of an object is defined by clients of the binding package.
 For example, Tk keeps uses one binding table to hold all of the bindings
 created by the B<bind> command.
 For this table, objects are pointers to strings such as window names, class
 names, or other binding tags such as B<all>.
 Tk also keeps a separate binding table for each canvas widget, which manages
 bindings created by the canvas's B<bind> widget command;  within
 this table, an object is either a pointer to the internal structure for a
 canvas item or a Tk_Uid identifying a tag.

 The procedure B<Tk_CreateBindingTable> creates a new binding
 table and associates I<interp> with it (when bindings in the
 table are invoked, the scripts will be evaluated in I<interp>).
 B<Tk_CreateBindingTable> returns a token for the table, which
 must be used in calls to other procedures such as B<Tk_CreateBinding>
 or B<Tk_BindEvent>.

 B<Tk_DeleteBindingTable> frees all of the state associated
 with a binding table.
 Once it returns the caller should not use the I<bindingTable>
 token again.

 B<Tk_CreateBinding> adds a new binding to an existing table.
 The I<object> argument identifies the object with which the
 binding is to be associated, and it may be any one-word value.
 Typically it is a pointer to a string or data structure.
 The I<eventString> argument identifies the event or sequence
 of events for the binding;  
 See the B<bind> manual entry for a description of its format.
 I<script> is the Tcl script to be evaluated when the binding
 triggers.
 I<append> indicates what to do if there already
 exists a binding for I<object> and I<eventString>:  if I<append>
 is zero then I<script> replaces the old script;  if I<append>
 is non-zero then the new script is appended to the old one.
 B<Tk_CreateBinding> returns an X event mask for all the events
 associated with the bindings.
 This information may be useful to invoke B<XSelectInput> to
 select relevant events, or to disallow the use of certain events
 in bindings.
 If an error occurred while creating the binding (e.g., I<eventString>
 refers to a non-existent event), then 0 is returned and an error
 message is left in I<interp-E<gt>result>.

 B<Tk_DeleteBinding> removes from I<bindingTable> the
 binding given by I<object> and I<eventString>, if
 such a binding exists.
 B<Tk_DeleteBinding> always returns TCL_OK.
 In some cases it may reset I<interp-E<gt>result> to the default
 empty value.

 B<Tk_GetBinding> returns a pointer to the script associated
 with I<eventString> and I<object> in I<bindingTable>.
 If no such binding exists then NULL is returned and an error
 message is left in I<interp-E<gt>result>.

 B<Tk_GetAllBindings> returns in I<interp-E<gt>result> a list
 of all the event strings for which there are bindings in
 I<bindingTable> associated with I<object>.
 If there are no bindings for I<object> then an empty
 string is returned in I<interp-E<gt>result>.

 B<Tk_DeleteAllBindings> deletes all of the bindings in
 I<bindingTable> that are associated with I<object>.

 B<Tk_BindEvent> is called to process an event.
 It makes a copy of the event in an internal history list associated
 with the binding table, then it checks for bindings that match
 the event.
 B<Tk_BindEvent> processes each of the objects pointed to
 by I<objectPtr> in turn.
 For each object, it finds all the bindings that match the current
 event history, selects the most specific binding using the priority
 mechanism described in the documentation for B<bind>,
 and invokes the script for that binding.
 If there are no matching bindings for a particular object, then
 the object is skipped.
 B<Tk_BindEvent> continues through all of the objects, handling
 exceptions such as errors, B<break>, and B<continue> as
 described in the documentation for B<bind>.
 

KEYWORDS

 binding, event, object, script