event.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:15k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1996 Sun Microsystems, Inc.
  3. '" Copyright (c) 1998-2000 Ajuba Solutions.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: event.n,v 1.6.8.1 2004/10/28 10:19:29 dkf Exp $
  9. '" 
  10. .so man.macros
  11. .TH event n 8.3 Tk "Tk Built-In Commands"
  12. .BS
  13. '" Note:  do not modify the .SH NAME line immediately below!
  14. .SH NAME
  15. event - Miscellaneous event facilities: define virtual events and generate events
  16. .SH SYNOPSIS
  17. fBeventfI option fR?fIarg arg ...fR?
  18. .BE
  19. .SH DESCRIPTION
  20. .PP
  21. The fBeventfR command provides several facilities for dealing with
  22. window system events, such as defining virtual events and synthesizing
  23. events.  The command has several different forms, determined by the
  24. first argument.  The following forms are currently supported:
  25. .TP
  26. fBevent add <<fIvirtualfB>>fI sequence fR?fIsequence ...fR?
  27. Associates the virtual event fIvirtualfR with the physical
  28. event sequence(s) given by the fIsequencefR arguments, so that
  29. the virtual event will trigger whenever any one of the fIsequencefRs
  30. occurs.
  31. fIVirtualfR may be any string value and fIsequencefR may have
  32. any of the values allowed for the fIsequencefR argument to the
  33. fBbindfR command.
  34. If fIvirtualfR is already defined, the new physical event sequences
  35. add to the existing sequences for the event.
  36. .TP
  37. fBevent delete <<fIvirtualfB>> fR?fIsequencefR fIsequence ...fR?
  38. Deletes each of the fIsequencefRs from those associated with
  39. the virtual event given by fIvirtualfR.
  40. fIVirtualfR may be any string value and fIsequencefR may have
  41. any of the values allowed for the fIsequencefR argument to the
  42. fBbindfR command.
  43. Any fIsequencefRs not currently associated with fIvirtualfR
  44. are ignored.
  45. If no fIsequencefR argument is provided, all physical event sequences
  46. are removed for fIvirtualfR, so that the virtual event will not
  47. trigger anymore.
  48. .TP
  49. fBevent generate fIwindow event fR?fIoption value option value ...fR?
  50. Generates a window event and arranges for it to be processed just as if
  51. it had come from the window system.
  52. fIWindowfR gives the path name of the window for which the event
  53. .VS 8.3
  54. will be generated; it may also be an identifier (such as returned by
  55. fBwinfo idfR) as long as it is for a window in the current application.
  56. .VE
  57. fIEventfR provides a basic description of
  58. the event, such as fB<Shift-Button-2>fR or fB<<Paste>>fR.
  59. If fIWindowfR is empty the whole screen is meant, and coordinates
  60. are relative to the screen.
  61. fIEventfR may have any of the forms allowed for the fIsequencefR
  62. argument of the fBbindfR command except that it must consist
  63. of a single event pattern, not a sequence.
  64. fIOption-valuefR pairs may be used to specify additional
  65. attributes of the event, such as the x and y mouse position;  see
  66. EVENT FIELDS below.  If the fB-whenfR option is not specified, the
  67. event is processed immediately:  all of the handlers for the event
  68. will complete before the fBevent generatefR command returns.
  69. If the fB-whenfR option is specified then it determines when the
  70. event is processed.  Certain events, such as key events, require
  71. that the window has focus to receive the event properly.
  72. .TP
  73. fBevent info fR?<<fIvirtualfB>>fR?
  74. Returns information about virtual events.
  75. If the fB<<fIvirtualfB>>fR argument is omitted, the return value
  76. is a list of all the virtual events that are currently defined.
  77. If fB<<fIvirtualfB>>fR is specified then the return value is
  78. a list whose elements are the physical event sequences currently
  79. defined for the given virtual event;  if the virtual event is
  80. not defined then an empty string is returned.
  81. .SH "EVENT FIELDS"
  82. .PP
  83. The following options are supported for the fBevent generatefR
  84. command.  These correspond to the ``%'' expansions
  85. allowed in binding scripts for the fBbindfR command.
  86. .TP
  87. fB-abovefI windowfR
  88. fIWindowfR specifies the fIabovefR field for the event,
  89. either as a window path name or as an integer window id.
  90. Valid for fBConfigurefR events.
  91. Corresponds to the fB%afR substitution for binding scripts.
  92. .TP
  93. fB-borderwidthfI sizefR
  94. fISizefR must be a screen distance;  it specifies the
  95. fIborder_widthfR field for the event.
  96. Valid for fBConfigurefR events.
  97. Corresponds to the fB%BfR substitution for binding scripts.
  98. .TP
  99. fB-buttonfI numberfR
  100. fINumberfR must be an integer;  it specifies the fIdetailfR field
  101. for a fBButtonPressfR or fBButtonReleasefR event, overriding
  102. any button  number provided in the base fIeventfR argument.
  103. Corresponds to the fB%bfR substitution for binding scripts.
  104. .TP
  105. fB-countfI numberfR
  106. fINumberfR must be an integer;  it specifies the fIcountfR field
  107. for the event.  Valid for fBExposefR events.
  108. Corresponds to the fB%cfR substitution for binding scripts.
  109. .TP
  110. fB-deltafI numberfR
  111. fINumberfR must be an integer;  it specifies the fIdeltafR field
  112. for the fBMouseWheelfR event.  The fIdeltafR refers to the
  113. direction and magnitude the mouse wheel was rotated.  Note the value
  114. is not a screen distance but are units of motion in the mouse wheel.
  115. Typically these values are multiples of 120.  For example, 120 should
  116. scroll the text widget up 4 lines and -240 would scroll the text
  117. widget down 8 lines.  Of course, other widgets may define different
  118. behaviors for mouse wheel motion.  This field corresponds to the
  119. fB%DfR substitution for binding scripts.
  120. .TP
  121. fB-detailfI detailfR
  122. fIDetailfR specifies the fIdetailfR field for the event
  123. and must be one of the following:
  124. .RS
  125. .DS
  126. .ta 6c
  127. fBNotifyAncestor NotifyNonlinearVirtual
  128. NotifyDetailNone NotifyPointer
  129. NotifyInferior NotifyPointerRoot
  130. NotifyNonlinear NotifyVirtualfR
  131. .DE
  132. Valid for fBEnterfR, fBLeavefR, fBFocusInfR and
  133. fBFocusOutfR events.
  134. Corresponds to the fB%dfR substitution for binding scripts.
  135. .RE
  136. .TP
  137. fB-focusfI booleanfR
  138. fIBooleanfR must be a boolean value;  it specifies the fIfocusfR
  139. field for the event.
  140. Valid for fBEnterfR and fBLeavefR events.
  141. Corresponds to the fB%ffR substitution for binding scripts.
  142. .TP
  143. fB-heightfI sizefR
  144. fISizefR must be a screen distance;  it specifies the fIheightfR
  145. field for the event.  Valid for fBConfigurefR events.
  146. Corresponds to the fB%hfR substitution for binding scripts.
  147. .TP
  148. fB-keycodefI numberfR
  149. fINumberfR  must be an integer;  it specifies the fIkeycodefR
  150. field for the event.
  151. Valid for fBKeyPressfR and fBKeyReleasefR events.
  152. Corresponds to the fB%kfR substitution for binding scripts.
  153. .TP
  154. fB-keysymfI namefR
  155. fINamefR must be the name of a valid keysym, such as fBgfR,
  156. fBspacefR, or fBReturnfR;  its corresponding
  157. keycode value is used as the fIkeycodefR field for event, overriding
  158. any detail specified in the base fIeventfR argument.
  159. Valid for fBKeyPressfR and fBKeyReleasefR events.
  160. Corresponds to the fB%KfR substitution for binding scripts.
  161. .TP
  162. fB-modefI notifyfR
  163. fINotifyfR specifies the fImodefR field for the event and must be
  164. one of fBNotifyNormalfR, fBNotifyGrabfR, fBNotifyUngrabfR, or
  165. fBNotifyWhileGrabbedfR.
  166. Valid for fBEnterfR, fBLeavefR, fBFocusInfR, and
  167. fBFocusOutfR events.
  168. Corresponds to the fB%mfR substitution for binding scripts.  
  169. .TP
  170. fB-overridefI booleanfR
  171. fIBooleanfR must be a boolean value;  it specifies the
  172. fIoverride_redirectfR field for the event.
  173. Valid for fBMapfR, fBReparentfR, and fBConfigurefR events.
  174. Corresponds to the fB%ofR substitution for binding scripts.
  175. .TP
  176. fB-placefI wherefR
  177. fIWherefR specifies the fIplacefR field for the event;  it must be
  178. either fBPlaceOnTopfR or fBPlaceOnBottomfR.
  179. Valid for fBCirculatefR events.
  180. Corresponds to the fB%pfR substitution for binding scripts.
  181. .TP
  182. fB-rootfI windowfR
  183. fIWindowfR must be either a window path name or an integer window
  184. identifier;  it specifies the fIrootfR field for the event.
  185. Valid for fBKeyPressfR, fBKeyReleasefR, fBButtonPressfR,
  186. fBButtonReleasefR, fBEnterfR, fBLeavefR, and fBMotionfR
  187. events.
  188. Corresponds to the fB%RfR substitution for binding scripts.
  189. .TP
  190. fB-rootxfI coordfR
  191. fICoordfR must be a screen distance;  it specifies the fIx_rootfR
  192. field for the event.
  193. Valid for fBKeyPressfR, fBKeyReleasefR, fBButtonPressfR,
  194. fBButtonReleasefR, fBEnterfR, fBLeavefR, and fBMotionfR
  195. events.  Corresponds to the fB%XfR substitution for binding scripts.
  196. .TP
  197. fB-rootyfI coordfR
  198. fICoordfR must be a screen distance;  it specifies the fIy_rootfR
  199. field for the event.
  200. Valid for fBKeyPressfR, fBKeyReleasefR, fBButtonPressfR,
  201. fBButtonReleasefR, fBEnterfR, fBLeavefR, and fBMotionfR
  202. events.
  203. Corresponds to the fB%YfR substitution for binding scripts.
  204. .TP
  205. fB-sendeventfI booleanfR
  206. fIBooleanfR must be a boolean value;  it specifies the fIsend_eventfR
  207. field for the event.  Valid for all events.  Corresponds to the
  208. fB%EfR substitution for binding scripts.
  209. .TP
  210. fB-serialfI numberfR
  211. fINumberfR must be an integer;  it specifies the fIserialfR field
  212. for the event.  Valid for all events.
  213. Corresponds to the fB%#fR substitution for binding scripts.
  214. .TP
  215. fB-statefI statefR
  216. fIStatefR specifies the fIstatefR field for the event.
  217. For fBKeyPressfR, fBKeyReleasefR, fBButtonPressfR,
  218. fBButtonReleasefR, fBEnterfR, fBLeavefR, and fBMotionfR events
  219. it must be an integer value.
  220. For fBVisibilityfR events it must be one of fBVisibilityUnobscuredfR, 
  221. fBVisibilityPartiallyObscuredfR, or fBVisibilityFullyObscuredfR.
  222. This option overrides any modifiers such as fBMetafR or fBControlfR
  223. specified in the base fIeventfR.
  224. Corresponds to the fB%sfR substitution for binding scripts.
  225. .TP
  226. fB-subwindowfI windowfR
  227. fIWindowfR specifies the fIsubwindowfR field for the event, either
  228. as a path name for a Tk widget or as an integer window identifier.
  229. Valid for fBKeyPressfR, fBKeyReleasefR, fBButtonPressfR,
  230. fBButtonReleasefR, fBEnterfR, fBLeavefR, and fBMotionfR events.
  231. Similar to fB%SfR substitution for binding scripts.
  232. .TP
  233. fB-timefI integerfR
  234. fIIntegerfR must be an integer value;  it specifies the fItimefR field
  235. for the event.
  236. Valid for fBKeyPressfR, fBKeyReleasefR, fBButtonPressfR,
  237. fBButtonReleasefR, fBEnterfR, fBLeavefR, fBMotionfR,
  238. and fBPropertyfR events.
  239. Corresponds to the fB%tfR substitution for binding scripts.
  240. .TP
  241. fB-warpfI booleanfR
  242. fIbooleanfR must be a boolean value;  it specifies whether
  243. the screen pointer should be warped as well.
  244. Valid for fBKeyPressfR, fBKeyReleasefR, fBButtonPressfR,
  245. fBButtonReleasefR, and fBMotionfR events.  The pointer will
  246. only warp to a window if it is mapped.
  247. .TP
  248. fB-widthfI sizefR
  249. fISizefR must be a screen distance;  it specifies the fIwidthfR field
  250. for the event.
  251. Valid for fBConfigurefR events.
  252. Corresponds to the fB%wfR substitution for binding scripts.
  253. .TP
  254. fB-whenfI whenfR
  255. fIWhenfR determines when the event will be processed;  it must have one
  256. of the following values:
  257. .RS
  258. .IP fBnowfR 10
  259. Process the event immediately, before the command returns.
  260. This also happens if the fB-whenfR option is omitted.
  261. .IP fBtailfR 10
  262. Place the event on Tcl's event queue behind any events already
  263. queued for this application.
  264. .IP fBheadfR 10
  265. Place the event at the front of Tcl's event queue, so that it
  266. will be handled before any other events already queued.
  267. .IP fBmarkfR 10
  268. Place the event at the front of Tcl's event queue but behind any
  269. other events already queued with fB-when markfR.
  270. This option is useful when generating a series of events that should
  271. be processed in order but at the front of the queue.
  272. .RE
  273. .TP
  274. fB-xfI coordfR
  275. fICoordfR must be a screen distance;  it specifies the fIxfR field
  276. for the event.
  277. Valid for fBKeyPressfR, fBKeyReleasefR, fBButtonPressfR,
  278. fBButtonReleasefR, fBMotionfR, fBEnterfR, fBLeavefR,
  279. fBExposefR, fBConfigurefR, fBGravityfR, and fBReparentfR
  280. events.
  281. Corresponds to the fB%xfR substitution for binding scripts.
  282. If fIWindowfR is empty the coordinate is relative to the
  283. screen, and this option corresponds to the fB%XfR substitution
  284. for binding scripts.
  285. .TP
  286. fB-yfI coordfR
  287. fICoordfR must be a screen distance;  it specifies the fIyfR
  288. field for the event.
  289. Valid for fBKeyPressfR, fBKeyReleasefR, fBButtonPressfR,
  290. fBButtonReleasefR, fBMotionfR, fBEnterfR, fBLeavefR,
  291. fBExposefR, fBConfigurefR, fBGravityfR, and fBReparentfR
  292. events.
  293. Corresponds to the fB%yfR substitution for binding scripts.
  294. If fIWindowfR is empty the coordinate is relative to the
  295. screen, and this option corresponds to the fB%YfR substitution
  296. for binding scripts.
  297. .PP
  298. Any options that are not specified when generating an event are filled 
  299. with the value 0, except for fIserialfR, which is filled with the 
  300. next X event serial number.  
  301. .SH "VIRTUAL EVENT EXAMPLES"
  302. .PP
  303. In order for a virtual event binding to trigger, two things must
  304. happen.  First, the virtual event must be defined with the
  305. fBevent addfR command.  Second, a binding must be created for
  306. the virtual event with the fBbindfR command.
  307. Consider the following virtual event definitions:
  308. .CS
  309. event add <<Paste>> <Control-y>
  310. event add <<Paste>> <Button-2>
  311. event add <<Save>> <Control-X><Control-S>
  312. event add <<Save>> <Shift-F12>
  313. .CE
  314. In the fBbindfR command, a virtual event can be bound like any other
  315. builtin event type as follows:
  316. .CS
  317. bind Entry <<Paste>> {%W insert [selection get]}
  318. .CE
  319. The double angle brackets are used to specify that a virtual event is being
  320. bound.  If the user types Control-y or presses button 2, or if
  321. a fB<<Paste>>fR virtual event is synthesized with fBevent generatefR,
  322. then the fB<<Paste>>fR binding will be invoked.
  323. .PP
  324. If a virtual binding has the exact same sequence as a separate
  325. physical binding, then the physical binding will take precedence.
  326. Consider the following example:
  327. .CS
  328. event add <<Paste>> <Control-y> <Meta-Control-y>
  329. bind Entry <Control-y> {puts Control-y}
  330. bind Entry <<Paste>> {puts Paste}
  331. .CE
  332. When the user types Control-y the fB<Control-y>fR binding
  333. will be invoked, because a physical event is considered
  334. more specific than a virtual event, all other things being equal.
  335. However, when the user types Meta-Control-y the
  336. fB<<Paste>>fR binding will be invoked, because the
  337. fBMetafR modifier in the physical pattern associated with the 
  338. virtual binding is more specific than the fB<Control-yfR> sequence for
  339. the physical event.
  340. .PP
  341. Bindings on a virtual event may be created before the virtual event exists.
  342. Indeed, the virtual event never actually needs to be defined, for instance,
  343. on platforms where the specific virtual event would meaningless or
  344. ungeneratable.
  345. .PP
  346. When a definition of a virtual event changes at run time, all windows
  347. will respond immediately to the new definition.
  348. Starting from the preceding example, if the following code is executed:
  349. .CS
  350. bind <Entry> <Control-y> {}
  351. event add <<Paste>> <Key-F6>
  352. .CE
  353. the behavior will change such in two ways.  First, the shadowed
  354. fB<<Paste>>fR binding will emerge.
  355. Typing Control-y will no longer invoke the fB<Control-y>fR binding, 
  356. but instead invoke the virtual event fB<<Paste>>fR.  Second,
  357. pressing the F6 key will now also invoke the fB<<Paste>>fR binding.
  358. .SH "SEE ALSO"
  359. bind(n)
  360. .SH KEYWORDS
  361. event, binding, define, handle, virtual event