event-types.c 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937
  1. /* Copyright 2001-2003 by Norbert Freudemann, David Frese */
  2. #include "xlib.h"
  3. #define EENTER(c, i, n, f) s48_record_set_2(c, e, i, f(c, xe->n))
  4. #define EENTER_START(c, rtype, dbundle) \
  5. s48_ref_t e = s48_make_record_2(c, rtype); \
  6. EENTER(c, 0, type, scx_enter_event_type); \
  7. EENTER(c, 1, serial, s48_enter_long_2); \
  8. EENTER(c, 2, send_event, s48_enter_boolean_2); \
  9. s48_record_set_2(c, e, 3, scx_enter_display(c, dbundle));
  10. #define EENTER_END() \
  11. return e
  12. s48_ref_t scx_key_event_binding = NULL;
  13. s48_ref_t scx_enter_key_event(s48_call_t call, XKeyEvent* xe,
  14. scx_event_bundle *display_bundle) {
  15. EENTER_START(call, scx_key_event_binding, display_bundle);
  16. EENTER(call, 4, window, scx_enter_window);
  17. EENTER(call, 5, root, scx_enter_window);
  18. EENTER(call, 6, subwindow, scx_enter_window);
  19. EENTER(call, 7, time, scx_enter_time);
  20. EENTER(call, 8, x, s48_enter_long_2);
  21. EENTER(call, 9, y, s48_enter_long_2);
  22. EENTER(call, 10, x_root, s48_enter_long_2);
  23. EENTER(call, 11, y_root, s48_enter_long_2);
  24. EENTER(call, 12, state, scx_enter_state_set);
  25. EENTER(call, 13, keycode, scx_enter_keycode);
  26. EENTER(call, 14, same_screen, s48_enter_boolean_2);
  27. EENTER_END();
  28. }
  29. s48_ref_t scx_button_event_binding = NULL;
  30. s48_ref_t scx_enter_button_event(s48_call_t call, XButtonEvent* xe,
  31. scx_event_bundle *display_bundle) {
  32. EENTER_START(call, scx_button_event_binding, display_bundle);
  33. EENTER(call, 4, window, scx_enter_window);
  34. EENTER(call, 5, root, scx_enter_window);
  35. EENTER(call, 6, subwindow, scx_enter_window);
  36. EENTER(call, 7, time, scx_enter_time);
  37. EENTER(call, 8, x, s48_enter_long_2);
  38. EENTER(call, 9, y, s48_enter_long_2);
  39. EENTER(call, 10, x_root, s48_enter_long_2);
  40. EENTER(call, 11, y_root, s48_enter_long_2);
  41. EENTER(call, 12, state, scx_enter_state_set);
  42. EENTER(call, 13, button, scx_enter_button);
  43. EENTER(call, 14, same_screen, s48_enter_boolean_2);
  44. EENTER_END();
  45. }
  46. s48_ref_t scx_motion_event_binding = NULL;
  47. s48_ref_t scx_enter_motion_event(s48_call_t call, XMotionEvent* xe,
  48. scx_event_bundle *display_bundle) {
  49. EENTER_START(call, scx_motion_event_binding, display_bundle);
  50. EENTER(call, 4, window, scx_enter_window);
  51. EENTER(call, 5, root, scx_enter_window);
  52. EENTER(call, 6, subwindow, scx_enter_window);
  53. EENTER(call, 7, time, scx_enter_time);
  54. EENTER(call, 8, x, s48_enter_long_2);
  55. EENTER(call, 9, y, s48_enter_long_2);
  56. EENTER(call, 10, x_root, s48_enter_long_2);
  57. EENTER(call, 11, y_root, s48_enter_long_2);
  58. EENTER(call, 12, state, scx_enter_state_set);
  59. EENTER(call, 13, is_hint, s48_enter_boolean_2);
  60. EENTER(call, 14, same_screen, s48_enter_boolean_2);
  61. EENTER_END();
  62. }
  63. s48_ref_t scx_crossing_event_binding = NULL;
  64. s48_ref_t scx_enter_crossing_event(s48_call_t call, XCrossingEvent* xe,
  65. scx_event_bundle *display_bundle) {
  66. EENTER_START(call, scx_crossing_event_binding, display_bundle);
  67. EENTER(call, 4, window, scx_enter_window);
  68. EENTER(call, 5, root, scx_enter_window);
  69. EENTER(call, 6, subwindow, scx_enter_window);
  70. EENTER(call, 7, time, scx_enter_time);
  71. EENTER(call, 8, x, s48_enter_long_2);
  72. EENTER(call, 9, y, s48_enter_long_2);
  73. EENTER(call, 10, x_root, s48_enter_long_2);
  74. EENTER(call, 11, y_root, s48_enter_long_2);
  75. EENTER(call, 12, mode, scx_enter_notify_mode);
  76. EENTER(call, 13, detail, scx_enter_notify_detail);
  77. EENTER(call, 14, same_screen, s48_enter_boolean_2);
  78. EENTER(call, 15, focus, s48_enter_boolean_2);
  79. EENTER(call, 16, state, scx_enter_state_set);
  80. EENTER_END();
  81. }
  82. s48_ref_t scx_focus_change_event_binding = NULL;
  83. s48_ref_t scx_enter_focus_change_event(s48_call_t call, XFocusChangeEvent* xe,
  84. scx_event_bundle *display_bundle) {
  85. EENTER_START(call, scx_focus_change_event_binding, display_bundle);
  86. EENTER(call, 4, window, scx_enter_window);
  87. EENTER(call, 5, mode, scx_enter_notify_mode);
  88. EENTER(call, 6, detail, scx_enter_notify_detail);
  89. EENTER_END();
  90. }
  91. s48_ref_t scx_expose_event_binding = NULL;
  92. s48_ref_t scx_enter_expose_event(s48_call_t call, XExposeEvent* xe,
  93. scx_event_bundle *display_bundle) {
  94. EENTER_START(call, scx_expose_event_binding, display_bundle);
  95. EENTER(call, 4, window, scx_enter_window);
  96. EENTER(call, 5, x, s48_enter_long_2);
  97. EENTER(call, 6, y, s48_enter_long_2);
  98. EENTER(call, 7, width, s48_enter_long_2);
  99. EENTER(call, 8, height, s48_enter_long_2);
  100. EENTER(call, 9, count, s48_enter_long_2);
  101. EENTER_END();
  102. }
  103. s48_ref_t scx_graphics_expose_event_binding = NULL;
  104. s48_ref_t scx_enter_graphics_expose_event(s48_call_t call, XGraphicsExposeEvent* xe,
  105. scx_event_bundle *display_bundle) {
  106. EENTER_START(call, scx_graphics_expose_event_binding, display_bundle);
  107. EENTER(call, 4, drawable, scx_enter_drawable);
  108. EENTER(call, 5, x, s48_enter_long_2);
  109. EENTER(call, 6, y, s48_enter_long_2);
  110. EENTER(call, 7, width, s48_enter_long_2);
  111. EENTER(call, 8, height, s48_enter_long_2);
  112. EENTER(call, 9, count, s48_enter_long_2);
  113. EENTER(call, 10, major_code, s48_enter_long_2);
  114. EENTER(call, 11, minor_code, s48_enter_long_2);
  115. EENTER_END();
  116. }
  117. s48_ref_t scx_no_expose_event_binding = NULL;
  118. s48_ref_t scx_enter_no_expose_event(s48_call_t call, XNoExposeEvent* xe,
  119. scx_event_bundle *display_bundle) {
  120. EENTER_START(call, scx_no_expose_event_binding, display_bundle);
  121. EENTER(call, 4, drawable, scx_enter_drawable);
  122. EENTER(call, 5, major_code, s48_enter_long_2);
  123. EENTER(call, 6, minor_code, s48_enter_long_2);
  124. EENTER_END();
  125. }
  126. s48_ref_t scx_visibility_event_binding = NULL;
  127. s48_ref_t scx_enter_visibility_event(s48_call_t call, XVisibilityEvent* xe,
  128. scx_event_bundle *display_bundle) {
  129. EENTER_START(call, scx_visibility_event_binding, display_bundle);
  130. EENTER(call, 4, window, scx_enter_window);
  131. EENTER(call, 5, state, scx_enter_visibility_state);
  132. EENTER_END();
  133. }
  134. s48_ref_t scx_create_window_event_binding = NULL;
  135. s48_ref_t scx_enter_create_window_event(s48_call_t call, XCreateWindowEvent* xe,
  136. scx_event_bundle *display_bundle) {
  137. EENTER_START(call, scx_create_window_event_binding, display_bundle);
  138. EENTER(call, 4, parent, scx_enter_window);
  139. EENTER(call, 5, window, scx_enter_window);
  140. EENTER(call, 6, x, s48_enter_long_2);
  141. EENTER(call, 7, y, s48_enter_long_2);
  142. EENTER(call, 8, width, s48_enter_long_2);
  143. EENTER(call, 9, height, s48_enter_long_2);
  144. EENTER(call, 10, border_width, s48_enter_long_2);
  145. EENTER(call, 11, override_redirect, s48_enter_boolean_2);
  146. EENTER_END();
  147. }
  148. s48_ref_t scx_destroy_window_event_binding = NULL;
  149. s48_ref_t scx_enter_destroy_window_event(s48_call_t call, XDestroyWindowEvent* xe,
  150. scx_event_bundle *display_bundle) {
  151. EENTER_START(call, scx_destroy_window_event_binding, display_bundle);
  152. EENTER(call, 4, event, scx_enter_window);
  153. EENTER(call, 5, window, scx_enter_window);
  154. EENTER_END();
  155. }
  156. s48_ref_t scx_unmap_event_binding = NULL;
  157. s48_ref_t scx_enter_unmap_event(s48_call_t call, XUnmapEvent* xe,
  158. scx_event_bundle *display_bundle) {
  159. EENTER_START(call, scx_unmap_event_binding, display_bundle);
  160. EENTER(call, 4, event, scx_enter_window);
  161. EENTER(call, 5, window, scx_enter_window);
  162. EENTER(call, 6, from_configure, s48_enter_boolean_2);
  163. EENTER_END();
  164. }
  165. s48_ref_t scx_map_event_binding = NULL;
  166. s48_ref_t scx_enter_map_event(s48_call_t call, XMapEvent* xe,
  167. scx_event_bundle *display_bundle) {
  168. EENTER_START(call, scx_map_event_binding, display_bundle);
  169. EENTER(call, 4, event, scx_enter_window);
  170. EENTER(call, 5, window, scx_enter_window);
  171. EENTER(call, 6, override_redirect, s48_enter_boolean_2);
  172. EENTER_END();
  173. }
  174. s48_ref_t scx_map_request_event_binding = NULL;
  175. s48_ref_t scx_enter_map_request_event(s48_call_t call, XMapRequestEvent* xe,
  176. scx_event_bundle *display_bundle) {
  177. EENTER_START(call, scx_map_request_event_binding, display_bundle);
  178. EENTER(call, 4, parent, scx_enter_window);
  179. EENTER(call, 5, window, scx_enter_window);
  180. EENTER_END();
  181. }
  182. s48_ref_t scx_reparent_event_binding = NULL;
  183. s48_ref_t scx_enter_reparent_event(s48_call_t call, XReparentEvent* xe,
  184. scx_event_bundle *display_bundle) {
  185. EENTER_START(call, scx_reparent_event_binding, display_bundle);
  186. EENTER(call, 4, event, scx_enter_window);
  187. EENTER(call, 5, window, scx_enter_window);
  188. EENTER(call, 6, parent, scx_enter_window);
  189. EENTER(call, 7, x, s48_enter_long_2);
  190. EENTER(call, 8, y, s48_enter_long_2);
  191. EENTER(call, 9, override_redirect, s48_enter_boolean_2);
  192. EENTER_END();
  193. }
  194. s48_ref_t scx_configure_event_binding = NULL;
  195. s48_ref_t scx_enter_configure_event(s48_call_t call, XConfigureEvent* xe,
  196. scx_event_bundle *display_bundle) {
  197. EENTER_START(call, scx_configure_event_binding, display_bundle);
  198. EENTER(call, 4, event, scx_enter_window);
  199. EENTER(call, 5, window, scx_enter_window);
  200. EENTER(call, 6, x, s48_enter_long_2);
  201. EENTER(call, 7, y, s48_enter_long_2);
  202. EENTER(call, 8, width, s48_enter_long_2);
  203. EENTER(call, 9, height, s48_enter_long_2);
  204. EENTER(call, 10, border_width, s48_enter_long_2);
  205. EENTER(call, 11, above, scx_enter_window);
  206. EENTER(call, 12, override_redirect, s48_enter_boolean_2);
  207. EENTER_END();
  208. }
  209. s48_ref_t scx_gravity_event_binding = NULL;
  210. s48_ref_t scx_enter_gravity_event(s48_call_t call, XGravityEvent* xe,
  211. scx_event_bundle *display_bundle) {
  212. EENTER_START(call, scx_gravity_event_binding, display_bundle);
  213. EENTER(call, 4, event, scx_enter_window);
  214. EENTER(call, 5, window, scx_enter_window);
  215. EENTER(call, 6, x, s48_enter_long_2);
  216. EENTER(call, 7, y, s48_enter_long_2);
  217. EENTER_END();
  218. }
  219. s48_ref_t scx_resize_request_event_binding = NULL;
  220. s48_ref_t scx_enter_resize_request_event(s48_call_t call, XResizeRequestEvent* xe,
  221. scx_event_bundle *display_bundle) {
  222. EENTER_START(call, scx_resize_request_event_binding, display_bundle);
  223. EENTER(call, 4, window, scx_enter_window);
  224. EENTER(call, 5, width, s48_enter_long_2);
  225. EENTER(call, 6, height, s48_enter_long_2);
  226. EENTER_END();
  227. }
  228. s48_ref_t scx_configure_request_event_binding = NULL;
  229. s48_ref_t scx_enter_configure_request_event(s48_call_t call, XConfigureRequestEvent* xe,
  230. scx_event_bundle *display_bundle) {
  231. XWindowChanges WC;
  232. EENTER_START(call, scx_configure_request_event_binding, display_bundle);
  233. EENTER(call, 4, parent, scx_enter_window);
  234. EENTER(call, 5, window, scx_enter_window);
  235. WC.x = xe->x;
  236. WC.y = xe->y;
  237. WC.width = xe->width;
  238. WC.height = xe->height;
  239. WC.border_width = xe->border_width;
  240. WC.sibling = xe->above;
  241. WC.stack_mode = xe->detail;
  242. s48_record_set_2(call, e, 6,
  243. scx_enter_window_changes(call, &WC, xe->value_mask));
  244. EENTER_END();
  245. }
  246. s48_ref_t scx_circulate_event_binding = NULL;
  247. s48_ref_t scx_enter_circulate_event(s48_call_t call, XCirculateEvent* xe,
  248. scx_event_bundle *display_bundle) {
  249. EENTER_START(call, scx_circulate_event_binding, display_bundle);
  250. EENTER(call, 4, event, scx_enter_window);
  251. EENTER(call, 5, window, scx_enter_window);
  252. EENTER(call, 6, place, scx_enter_place);
  253. EENTER_END();
  254. }
  255. s48_ref_t scx_circulate_request_event_binding = NULL;
  256. s48_ref_t scx_enter_circulate_request_event(s48_call_t call,
  257. XCirculateRequestEvent* xe,
  258. scx_event_bundle *display_bundle) {
  259. EENTER_START(call, scx_circulate_request_event_binding, display_bundle);
  260. EENTER(call, 4, parent, scx_enter_window);
  261. EENTER(call, 5, window, scx_enter_window);
  262. EENTER(call, 6, place, scx_enter_place);
  263. EENTER_END();
  264. }
  265. s48_ref_t scx_property_event_binding = NULL;
  266. s48_ref_t scx_enter_property_event(s48_call_t call, XPropertyEvent* xe,
  267. scx_event_bundle *display_bundle) {
  268. EENTER_START(call, scx_property_event_binding, display_bundle);
  269. EENTER(call, 4, window, scx_enter_window);
  270. EENTER(call, 5, atom, scx_enter_atom);
  271. EENTER(call, 6, time, scx_enter_time);
  272. EENTER(call, 7, state, scx_enter_property_state);
  273. EENTER_END();
  274. }
  275. s48_ref_t scx_selection_clear_event_binding = NULL;
  276. s48_ref_t scx_enter_selection_clear_event(s48_call_t call,
  277. XSelectionClearEvent* xe,
  278. scx_event_bundle *display_bundle) {
  279. EENTER_START(call, scx_selection_clear_event_binding, display_bundle);
  280. EENTER(call, 4, window, scx_enter_window);
  281. EENTER(call, 5, selection, scx_enter_atom);
  282. EENTER(call, 6, time, scx_enter_time);
  283. EENTER_END();
  284. }
  285. s48_ref_t scx_selection_request_event_binding = NULL;
  286. s48_ref_t scx_enter_selection_request_event(s48_call_t call,
  287. XSelectionRequestEvent* xe,
  288. scx_event_bundle *display_bundle) {
  289. EENTER_START(call, scx_selection_request_event_binding, display_bundle);
  290. EENTER(call, 4, owner, scx_enter_window);
  291. EENTER(call, 5, requestor, scx_enter_window);
  292. EENTER(call, 6, selection, scx_enter_atom);
  293. EENTER(call, 7, target, scx_enter_atom);
  294. EENTER(call, 8, property, scx_enter_atom);
  295. EENTER(call, 9, time, scx_enter_time);
  296. EENTER_END();
  297. }
  298. s48_ref_t scx_selection_event_binding = NULL;
  299. s48_ref_t scx_enter_selection_event(s48_call_t call, XSelectionEvent* xe,
  300. scx_event_bundle *display_bundle) {
  301. EENTER_START(call, scx_selection_event_binding, display_bundle);
  302. EENTER(call, 4, requestor, scx_enter_window);
  303. EENTER(call, 5, selection, scx_enter_atom);
  304. EENTER(call, 6, target, scx_enter_atom);
  305. EENTER(call, 7, property, scx_enter_atom);
  306. EENTER(call, 8, time, scx_enter_time);
  307. EENTER_END();
  308. }
  309. s48_ref_t scx_colormap_event_binding = NULL;
  310. s48_ref_t scx_enter_colormap_event(s48_call_t call, XColormapEvent* xe,
  311. scx_event_bundle *display_bundle) {
  312. EENTER_START(call, scx_colormap_event_binding, display_bundle);
  313. EENTER(call, 4, window, scx_enter_window);
  314. EENTER(call, 5, colormap, scx_enter_colormap);
  315. EENTER(call, 6, new, s48_enter_boolean_2);
  316. EENTER(call, 7, state, scx_enter_colormap_state);
  317. EENTER_END();
  318. }
  319. s48_ref_t scx_client_message_event_binding = NULL;
  320. s48_ref_t scx_enter_client_message_event(s48_call_t call,
  321. XClientMessageEvent* xe,scx_event_bundle *display_bundle) {
  322. EENTER_START(call, scx_client_message_event_binding, display_bundle);
  323. EENTER(call, 4, window, scx_enter_window);
  324. s48_record_set_2(call, e, 5, scx_enter_property(call, xe->message_type,
  325. xe->format,
  326. xe->data.b,
  327. (20 / (xe->format >> 3))));
  328. EENTER_END();
  329. }
  330. s48_ref_t scx_mapping_event_binding = NULL;
  331. s48_ref_t scx_enter_mapping_event(s48_call_t call, XMappingEvent* xe,
  332. scx_event_bundle *display_bundle) {
  333. EENTER_START(call, scx_mapping_event_binding, display_bundle);
  334. EENTER(call, 4, window, scx_enter_window);
  335. EENTER(call, 5, request, scx_enter_mapping_request);
  336. EENTER(call, 6, first_keycode, scx_enter_keycode);
  337. EENTER(call, 7, count, s48_enter_long_2);
  338. EENTER_END();
  339. }
  340. s48_ref_t scx_keymap_event_binding = NULL;
  341. s48_ref_t scx_enter_keymap_event(s48_call_t call, XKeymapEvent* xe,
  342. scx_event_bundle *display_bundle) {
  343. s48_ref_t temp; int i;
  344. EENTER_START(call, scx_keymap_event_binding, display_bundle);
  345. temp = s48_make_vector_2(call, 32*8, s48_enter_long_as_fixnum_2(call, 0));
  346. for (i = 0; i < 32; i++) {
  347. int j; char b = xe->key_vector[i];
  348. for (j = 0; j < 8; j++)
  349. s48_vector_set_2(call, temp, i*8 + j,
  350. s48_enter_long_as_fixnum_2(call, (b & (1 << j)) ? 1 : 0));
  351. }
  352. s48_record_set_2(call, e, 4, temp);
  353. EENTER_END();
  354. }
  355. s48_ref_t scx_enter_event(s48_call_t call, XEvent* e,
  356. scx_event_bundle* bundle) {
  357. switch (e->type) {
  358. case KeyPress : case KeyRelease :
  359. return scx_enter_key_event(call, (XKeyEvent*)e, bundle);
  360. case ButtonPress : case ButtonRelease :
  361. return scx_enter_button_event(call, (XButtonEvent*)e, bundle);
  362. case MotionNotify :
  363. return scx_enter_motion_event(call, (XMotionEvent*)e, bundle);
  364. case EnterNotify : case LeaveNotify :
  365. return scx_enter_crossing_event(call, (XCrossingEvent*)e, bundle);
  366. case FocusIn : case FocusOut :
  367. return scx_enter_focus_change_event(call, (XFocusChangeEvent*)e, bundle);
  368. case KeymapNotify :
  369. return scx_enter_keymap_event(call, (XKeymapEvent*)e, bundle);
  370. case Expose :
  371. return scx_enter_expose_event(call, (XExposeEvent*)e, bundle);
  372. case GraphicsExpose :
  373. return scx_enter_graphics_expose_event(call, (XGraphicsExposeEvent*)e, bundle);
  374. case NoExpose :
  375. return scx_enter_no_expose_event(call, (XNoExposeEvent*)e, bundle);
  376. case VisibilityNotify :
  377. return scx_enter_visibility_event(call, (XVisibilityEvent*)e, bundle);
  378. case CreateNotify :
  379. return scx_enter_create_window_event(call, (XCreateWindowEvent*)e, bundle);
  380. case DestroyNotify :
  381. return scx_enter_destroy_window_event(call, (XDestroyWindowEvent*)e, bundle);
  382. case UnmapNotify :
  383. return scx_enter_unmap_event(call, (XUnmapEvent*)e, bundle);
  384. case MapNotify :
  385. return scx_enter_map_event(call, (XMapEvent*)e, bundle);
  386. case MapRequest :
  387. return scx_enter_map_request_event(call, (XMapRequestEvent*)e, bundle);
  388. case ReparentNotify :
  389. return scx_enter_reparent_event(call, (XReparentEvent*)e, bundle);
  390. case ConfigureNotify :
  391. return scx_enter_configure_event(call, (XConfigureEvent*)e, bundle);
  392. case ConfigureRequest :
  393. return scx_enter_configure_request_event(call, (XConfigureRequestEvent*)e, bundle);
  394. case GravityNotify :
  395. return scx_enter_gravity_event(call, (XGravityEvent*)e, bundle);
  396. case ResizeRequest :
  397. return scx_enter_resize_request_event(call, (XResizeRequestEvent*)e, bundle);
  398. case CirculateRequest :
  399. return scx_enter_circulate_request_event(call, (XCirculateRequestEvent*)e, bundle);
  400. case PropertyNotify :
  401. return scx_enter_property_event(call, (XPropertyEvent*)e, bundle);
  402. case SelectionClear :
  403. return scx_enter_selection_clear_event(call, (XSelectionClearEvent*)e, bundle);
  404. case SelectionRequest :
  405. return scx_enter_selection_request_event(call, (XSelectionRequestEvent*)e, bundle);
  406. case SelectionNotify :
  407. return scx_enter_selection_event(call, (XSelectionEvent*)e, bundle);
  408. case ColormapNotify :
  409. return scx_enter_colormap_event(call, (XColormapEvent*)e, bundle);
  410. case ClientMessage :
  411. return scx_enter_client_message_event(call, (XClientMessageEvent*)e, bundle);
  412. case MappingNotify :
  413. return scx_enter_mapping_event(call, (XMappingEvent*)e, bundle);
  414. default: return s48_false_2(call);
  415. } /* switch end */
  416. }
  417. /*** extraction ****************************************************/
  418. #define EEXTRACT(c, i, name, f) xe->name = f(c, s48_record_ref_2(c, e, i))
  419. #define EEXTRACT_START(c, rtype) \
  420. s48_check_record_type_2(c, e, rtype); \
  421. EEXTRACT(c, 0, type, scx_extract_event_type); \
  422. EEXTRACT(c, 1, serial, s48_extract_long_2); \
  423. EEXTRACT(c, 2, send_event, s48_extract_boolean_2); \
  424. EEXTRACT(c, 3, display, scx_extract_display)
  425. void scx_extract_key_event(s48_call_t call, s48_ref_t e, XKeyEvent* xe) {
  426. EEXTRACT_START(call, scx_key_event_binding);
  427. EEXTRACT(call, 4, window, scx_extract_window);
  428. EEXTRACT(call, 5, root, scx_extract_window);
  429. EEXTRACT(call, 6, subwindow, scx_extract_window);
  430. EEXTRACT(call, 7, time, scx_extract_time);
  431. EEXTRACT(call, 8, x, s48_extract_long_2);
  432. EEXTRACT(call, 9, y, s48_extract_long_2);
  433. EEXTRACT(call, 10, x_root, s48_extract_long_2);
  434. EEXTRACT(call, 11, y_root, s48_extract_long_2);
  435. EEXTRACT(call, 12, state, scx_extract_state_set);
  436. EEXTRACT(call, 13, keycode, scx_extract_keycode);
  437. EEXTRACT(call, 14, same_screen, s48_extract_boolean_2);
  438. }
  439. void scx_extract_button_event(s48_call_t call, s48_ref_t e, XButtonEvent* xe) {
  440. EEXTRACT_START(call, scx_button_event_binding);
  441. EEXTRACT(call, 4, window, scx_extract_window);
  442. EEXTRACT(call, 5, root, scx_extract_window);
  443. EEXTRACT(call, 6, subwindow, scx_extract_window);
  444. EEXTRACT(call, 7, time, scx_extract_time);
  445. EEXTRACT(call, 8, x, s48_extract_long_2);
  446. EEXTRACT(call, 9, y, s48_extract_long_2);
  447. EEXTRACT(call, 10, x_root, s48_extract_long_2);
  448. EEXTRACT(call, 11, y_root, s48_extract_long_2);
  449. EEXTRACT(call, 12, state, scx_extract_state_set);
  450. EEXTRACT(call, 13, button, scx_extract_button);
  451. EEXTRACT(call, 14, same_screen, s48_extract_boolean_2);
  452. }
  453. void scx_extract_motion_event(s48_call_t call, s48_ref_t e, XMotionEvent* xe) {
  454. EEXTRACT_START(call, scx_motion_event_binding);
  455. EEXTRACT(call, 4, window, scx_extract_window);
  456. EEXTRACT(call, 5, root, scx_extract_window);
  457. EEXTRACT(call, 6, subwindow, scx_extract_window);
  458. EEXTRACT(call, 7, time, scx_extract_time);
  459. EEXTRACT(call, 8, x, s48_extract_long_2);
  460. EEXTRACT(call, 9, y, s48_extract_long_2);
  461. EEXTRACT(call, 10, x_root, s48_extract_long_2);
  462. EEXTRACT(call, 11, y_root, s48_extract_long_2);
  463. EEXTRACT(call, 12, state, scx_extract_state_set);
  464. EEXTRACT(call, 13, is_hint, s48_extract_boolean_2);
  465. EEXTRACT(call, 14, same_screen, s48_extract_boolean_2);
  466. }
  467. void scx_extract_crossing_event(s48_call_t call, s48_ref_t e, XCrossingEvent* xe) {
  468. EEXTRACT_START(call, scx_crossing_event_binding);
  469. EEXTRACT(call, 4, window, scx_extract_window);
  470. EEXTRACT(call, 5, root, scx_extract_window);
  471. EEXTRACT(call, 6, subwindow, scx_extract_window);
  472. EEXTRACT(call, 7, time, scx_extract_time);
  473. EEXTRACT(call, 8, x, s48_extract_long_2);
  474. EEXTRACT(call, 9, y, s48_extract_long_2);
  475. EEXTRACT(call, 10, x_root, s48_extract_long_2);
  476. EEXTRACT(call, 11, y_root, s48_extract_long_2);
  477. EEXTRACT(call, 12, mode, scx_extract_notify_mode);
  478. EEXTRACT(call, 13, detail, scx_extract_notify_detail);
  479. EEXTRACT(call, 14, same_screen, s48_extract_boolean_2);
  480. EEXTRACT(call, 15, focus, s48_extract_boolean_2);
  481. EEXTRACT(call, 16, state, scx_extract_state_set);
  482. }
  483. void scx_extract_focus_change_event(s48_call_t call, s48_ref_t e,
  484. XFocusChangeEvent* xe) {
  485. EEXTRACT_START(call, scx_focus_change_event_binding);
  486. EEXTRACT(call, 4, window, scx_extract_window);
  487. EEXTRACT(call, 5, mode, scx_extract_notify_mode);
  488. EEXTRACT(call, 6, detail, scx_extract_notify_detail);
  489. }
  490. void scx_extract_expose_event(s48_call_t call, s48_ref_t e, XExposeEvent* xe) {
  491. EEXTRACT_START(call, scx_expose_event_binding);
  492. EEXTRACT(call, 4, window, scx_extract_window);
  493. EEXTRACT(call, 5, x, s48_extract_long_2);
  494. EEXTRACT(call, 6, y, s48_extract_long_2);
  495. EEXTRACT(call, 7, width, s48_extract_long_2);
  496. EEXTRACT(call, 8, height, s48_extract_long_2);
  497. EEXTRACT(call, 9, count, s48_extract_long_2);
  498. }
  499. void scx_extract_graphics_expose_event(s48_call_t call, s48_ref_t e,
  500. XGraphicsExposeEvent* xe) {
  501. EEXTRACT_START(call, scx_graphics_expose_event_binding);
  502. EEXTRACT(call, 4, drawable, scx_extract_drawable);
  503. EEXTRACT(call, 5, x, s48_extract_long_2);
  504. EEXTRACT(call, 6, y, s48_extract_long_2);
  505. EEXTRACT(call, 7, width, s48_extract_long_2);
  506. EEXTRACT(call, 8, height, s48_extract_long_2);
  507. EEXTRACT(call, 9, count, s48_extract_long_2);
  508. EEXTRACT(call, 10, major_code, s48_extract_long_2);
  509. EEXTRACT(call, 11, minor_code, s48_extract_long_2);
  510. }
  511. void scx_extract_no_expose_event(s48_call_t call, s48_ref_t e,
  512. XNoExposeEvent* xe) {
  513. EEXTRACT_START(call, scx_no_expose_event_binding);
  514. EEXTRACT(call, 4, drawable, scx_extract_drawable);
  515. EEXTRACT(call, 5, major_code, s48_extract_long_2);
  516. EEXTRACT(call, 6, minor_code, s48_extract_long_2);
  517. }
  518. void scx_extract_visibility_event(s48_call_t call, s48_ref_t e,
  519. XVisibilityEvent* xe) {
  520. EEXTRACT_START(call, scx_visibility_event_binding);
  521. EEXTRACT(call, 4, window, scx_extract_window);
  522. EEXTRACT(call, 5, state, scx_extract_visibility_state);
  523. }
  524. void scx_extract_create_window_event(s48_call_t call, s48_ref_t e,
  525. XCreateWindowEvent* xe) {
  526. EEXTRACT_START(call, scx_create_window_event_binding);
  527. EEXTRACT(call, 4, parent, scx_extract_window);
  528. EEXTRACT(call, 5, window, scx_extract_window);
  529. EEXTRACT(call, 6, x, s48_extract_long_2);
  530. EEXTRACT(call, 7, y, s48_extract_long_2);
  531. EEXTRACT(call, 8, width, s48_extract_long_2);
  532. EEXTRACT(call, 9, height, s48_extract_long_2);
  533. EEXTRACT(call, 10, border_width, s48_extract_long_2);
  534. EEXTRACT(call, 11, override_redirect, s48_extract_boolean_2);
  535. }
  536. void scx_extract_destroy_window_event(s48_call_t call, s48_ref_t e,
  537. XDestroyWindowEvent* xe) {
  538. EEXTRACT_START(call, scx_destroy_window_event_binding);
  539. EEXTRACT(call, 4, event, scx_extract_window);
  540. EEXTRACT(call, 5, window, scx_extract_window);
  541. }
  542. void scx_extract_unmap_event(s48_call_t call, s48_ref_t e, XUnmapEvent* xe) {
  543. EEXTRACT_START(call, scx_unmap_event_binding);
  544. EEXTRACT(call, 4, event, scx_extract_window);
  545. EEXTRACT(call, 5, window, scx_extract_window);
  546. EEXTRACT(call, 6, from_configure, s48_extract_boolean_2);
  547. }
  548. void scx_extract_map_event(s48_call_t call, s48_ref_t e, XMapEvent* xe) {
  549. EEXTRACT_START(call, scx_map_event_binding);
  550. EEXTRACT(call, 4, event, scx_extract_window);
  551. EEXTRACT(call, 5, window, scx_extract_window);
  552. EEXTRACT(call, 6, override_redirect, s48_extract_boolean_2);
  553. }
  554. void scx_extract_map_request_event(s48_call_t call, s48_ref_t e,
  555. XMapRequestEvent* xe) {
  556. EEXTRACT_START(call, scx_map_request_event_binding);
  557. EEXTRACT(call, 4, parent, scx_extract_window);
  558. EEXTRACT(call, 5, window, scx_extract_window);
  559. }
  560. void scx_extract_reparent_event(s48_call_t call, s48_ref_t e,
  561. XReparentEvent* xe) {
  562. EEXTRACT_START(call, scx_reparent_event_binding);
  563. EEXTRACT(call, 4, event, scx_extract_window);
  564. EEXTRACT(call, 5, window, scx_extract_window);
  565. EEXTRACT(call, 6, parent, scx_extract_window);
  566. EEXTRACT(call, 7, x, s48_extract_long_2);
  567. EEXTRACT(call, 8, y, s48_extract_long_2);
  568. EEXTRACT(call, 9, override_redirect, s48_extract_boolean_2);
  569. }
  570. void scx_extract_configure_event(s48_call_t call, s48_ref_t e,
  571. XConfigureEvent* xe) {
  572. EEXTRACT_START(call, scx_configure_event_binding);
  573. EEXTRACT(call, 4, event, scx_extract_window);
  574. EEXTRACT(call, 5, window, scx_extract_window);
  575. EEXTRACT(call, 6, x, s48_extract_long_2);
  576. EEXTRACT(call, 7, y, s48_extract_long_2);
  577. EEXTRACT(call, 8, width, s48_extract_long_2);
  578. EEXTRACT(call, 9, height, s48_extract_long_2);
  579. EEXTRACT(call, 10, border_width, s48_extract_long_2);
  580. EEXTRACT(call, 11, above, scx_extract_window);
  581. EEXTRACT(call, 12, override_redirect, s48_extract_boolean_2);
  582. }
  583. void scx_extract_gravity_event(s48_call_t call, s48_ref_t e, XGravityEvent* xe) {
  584. EEXTRACT_START(call, scx_gravity_event_binding);
  585. EEXTRACT(call, 4, event, scx_extract_window);
  586. EEXTRACT(call, 5, window, scx_extract_window);
  587. EEXTRACT(call, 6, x, s48_extract_long_2);
  588. EEXTRACT(call, 7, y, s48_extract_long_2);
  589. }
  590. void scx_extract_resize_request_event(s48_call_t call, s48_ref_t e,
  591. XResizeRequestEvent* xe) {
  592. EEXTRACT_START(call, scx_resize_request_event_binding);
  593. EEXTRACT(call, 4, window, scx_extract_window);
  594. EEXTRACT(call, 5, width, s48_extract_long_2);
  595. EEXTRACT(call, 6, height, s48_extract_long_2);
  596. }
  597. void scx_extract_configure_request_event(s48_call_t call, s48_ref_t e,
  598. XConfigureRequestEvent* xe) {
  599. XWindowChanges WC;
  600. EEXTRACT_START(call, scx_configure_request_event_binding);
  601. EEXTRACT(call, 4, parent, scx_extract_window);
  602. EEXTRACT(call, 5, window, scx_extract_window);
  603. xe->value_mask = scx_extract_window_changes(call,
  604. s48_record_ref_2(call, e, 6), &WC);
  605. xe->x = WC.x;
  606. xe->y = WC.y;
  607. xe->width = WC.width;
  608. xe->height = WC.height;
  609. xe->border_width = WC.border_width;
  610. xe->above = WC.sibling;
  611. xe->detail = WC.stack_mode;
  612. }
  613. void scx_extract_circulate_event(s48_call_t call, s48_ref_t e,
  614. XCirculateEvent* xe) {
  615. EEXTRACT_START(call, scx_circulate_event_binding);
  616. EEXTRACT(call, 4, event, scx_extract_window);
  617. EEXTRACT(call, 5, window, scx_extract_window);
  618. EEXTRACT(call, 6, place, scx_extract_place);
  619. }
  620. void scx_extract_circulate_request_event(s48_call_t call, s48_ref_t e,
  621. XCirculateRequestEvent* xe) {
  622. EEXTRACT_START(call, scx_circulate_request_event_binding);
  623. EEXTRACT(call, 4, parent, scx_extract_window);
  624. EEXTRACT(call, 5, window, scx_extract_window);
  625. EEXTRACT(call, 6, place, scx_extract_place);
  626. }
  627. void scx_extract_property_event(s48_call_t call, s48_ref_t e,
  628. XPropertyEvent* xe) {
  629. EEXTRACT_START(call, scx_property_event_binding);
  630. EEXTRACT(call, 4, window, scx_extract_window);
  631. EEXTRACT(call, 5, atom, scx_extract_atom);
  632. EEXTRACT(call, 6, time, scx_extract_time);
  633. EEXTRACT(call, 7, state, scx_extract_property_state);
  634. }
  635. void scx_extract_selection_clear_event(s48_call_t call, s48_ref_t e,
  636. XSelectionClearEvent* xe) {
  637. EEXTRACT_START(call, scx_selection_clear_event_binding);
  638. EEXTRACT(call, 4, window, scx_extract_window);
  639. EEXTRACT(call, 5, selection, scx_extract_atom);
  640. EEXTRACT(call, 6, time, scx_extract_time);
  641. }
  642. void scx_extract_selection_request_event(s48_call_t call, s48_ref_t e,
  643. XSelectionRequestEvent* xe) {
  644. EEXTRACT_START(call, scx_selection_request_event_binding);
  645. EEXTRACT(call, 4, owner, scx_extract_window);
  646. EEXTRACT(call, 5, requestor, scx_extract_window);
  647. EEXTRACT(call, 6, selection, scx_extract_atom);
  648. EEXTRACT(call, 7, target, scx_extract_atom);
  649. EEXTRACT(call, 8, property, scx_extract_atom);
  650. EEXTRACT(call, 9, time, scx_extract_time);
  651. }
  652. void scx_extract_selection_event(s48_call_t call, s48_ref_t e,
  653. XSelectionEvent* xe) {
  654. EEXTRACT_START(call, scx_selection_event_binding);
  655. EEXTRACT(call, 4, requestor, scx_extract_window);
  656. EEXTRACT(call, 5, selection, scx_extract_atom);
  657. EEXTRACT(call, 6, target, scx_extract_atom);
  658. EEXTRACT(call, 7, property, scx_extract_atom);
  659. EEXTRACT(call, 8, time, scx_extract_time);
  660. }
  661. void scx_extract_colormap_event(s48_call_t call, s48_ref_t e,
  662. XColormapEvent* xe) {
  663. EEXTRACT_START(call, scx_colormap_event_binding);
  664. EEXTRACT(call, 4, window, scx_extract_window);
  665. EEXTRACT(call, 5, colormap, scx_extract_colormap);
  666. EEXTRACT(call, 6, new, s48_extract_boolean_2);
  667. EEXTRACT(call, 7, state, scx_extract_colormap_state);
  668. }
  669. void scx_extract_client_message_event(s48_call_t call, s48_ref_t e,
  670. XClientMessageEvent* xe) {
  671. int nelements, i;
  672. char* data; int bytes;
  673. EEXTRACT_START(call, scx_client_message_event_binding);
  674. EEXTRACT(call, 4, window, scx_extract_window);
  675. scx_extract_property(call, s48_record_ref_2(call, e, 5),
  676. &xe->message_type, &xe->format,
  677. &data, &nelements);
  678. if (xe->format == 32) bytes = nelements * 4;
  679. else if (xe->format == 16) bytes = nelements * 2;
  680. else bytes = nelements;
  681. for (i = 0; i < 20; i++)
  682. if (i < bytes)
  683. xe->data.b[i] = data[i];
  684. else
  685. xe->data.b[i] = 0;
  686. free(data);
  687. }
  688. void scx_extract_mapping_event(s48_call_t call, s48_ref_t e, XMappingEvent* xe) {
  689. EEXTRACT_START(call, scx_mapping_event_binding);
  690. EEXTRACT(call, 4, window, scx_extract_window);
  691. EEXTRACT(call, 5, request, scx_extract_mapping_request);
  692. EEXTRACT(call, 6, first_keycode, scx_extract_keycode);
  693. EEXTRACT(call, 7, count, s48_extract_long_2);
  694. }
  695. void scx_extract_keymap_event(s48_call_t call, s48_ref_t e, XKeymapEvent* xe)
  696. {
  697. s48_ref_t temp; int i;
  698. EEXTRACT_START(call, scx_keymap_event_binding);
  699. xe->window = (Window)0;
  700. temp = s48_record_ref_2(call, e, 4);
  701. for (i = 0; i < 32; i++) {
  702. int j; char* b = &xe->key_vector[i];
  703. for (j = 0; j < 8; j++)
  704. *b |= (s48_extract_long_2(call, s48_vector_ref_2(call, temp, i*8 + j))
  705. == 0 ? 0 : 1) << j;
  706. }
  707. }
  708. void scx_extract_event(s48_call_t call, s48_ref_t se, XEvent* e) {
  709. int t;
  710. t = scx_extract_event_type(call, s48_record_ref_2(call, se, 0));
  711. switch (t) {
  712. case KeyPress : case KeyRelease :
  713. scx_extract_key_event(call, se, (XKeyEvent*)e); break;
  714. case ButtonPress : case ButtonRelease :
  715. scx_extract_button_event(call, se, (XButtonEvent*)e); break;
  716. case MotionNotify :
  717. scx_extract_motion_event(call, se, (XMotionEvent*)e); break;
  718. case EnterNotify : case LeaveNotify :
  719. scx_extract_crossing_event(call, se, (XCrossingEvent*)e); break;
  720. case FocusIn : case FocusOut :
  721. scx_extract_focus_change_event(call, se, (XFocusChangeEvent*)e); break;
  722. case KeymapNotify :
  723. scx_extract_keymap_event(call, se, (XKeymapEvent*)e); break;
  724. case Expose :
  725. scx_extract_expose_event(call, se, (XExposeEvent*)e); break;
  726. case GraphicsExpose :
  727. scx_extract_graphics_expose_event(call, se, (XGraphicsExposeEvent*)e); break;
  728. case NoExpose :
  729. scx_extract_no_expose_event(call, se, (XNoExposeEvent*)e); break;
  730. case VisibilityNotify :
  731. scx_extract_visibility_event(call, se, (XVisibilityEvent*)e); break;
  732. case CreateNotify :
  733. scx_extract_create_window_event(call, se, (XCreateWindowEvent*)e); break;
  734. case DestroyNotify :
  735. scx_extract_destroy_window_event(call, se, (XDestroyWindowEvent*)e); break;
  736. case UnmapNotify :
  737. scx_extract_unmap_event(call, se, (XUnmapEvent*)e); break;
  738. case MapNotify :
  739. scx_extract_map_event(call, se, (XMapEvent*)e); break;
  740. case MapRequest :
  741. scx_extract_map_request_event(call, se, (XMapRequestEvent*)e); break;
  742. case ReparentNotify :
  743. scx_extract_reparent_event(call, se, (XReparentEvent*)e); break;
  744. case ConfigureNotify :
  745. scx_extract_configure_event(call, se, (XConfigureEvent*)e); break;
  746. case ConfigureRequest :
  747. scx_extract_configure_request_event(call, se, (XConfigureRequestEvent*)e); break;
  748. case GravityNotify :
  749. scx_extract_gravity_event(call, se, (XGravityEvent*)e); break;
  750. case ResizeRequest :
  751. scx_extract_resize_request_event(call, se, (XResizeRequestEvent*)e); break;
  752. case CirculateRequest :
  753. scx_extract_circulate_request_event(call, se, (XCirculateRequestEvent*)e); break;
  754. case PropertyNotify :
  755. scx_extract_property_event(call, se, (XPropertyEvent*)e); break;
  756. case SelectionClear :
  757. scx_extract_selection_clear_event(call, se, (XSelectionClearEvent*)e); break;
  758. case SelectionRequest :
  759. scx_extract_selection_request_event(call, se, (XSelectionRequestEvent*)e); break;
  760. case SelectionNotify :
  761. scx_extract_selection_event(call, se, (XSelectionEvent*)e); break;
  762. case ColormapNotify :
  763. scx_extract_colormap_event(call, se, (XColormapEvent*)e); break;
  764. case ClientMessage :
  765. scx_extract_client_message_event(call, se, (XClientMessageEvent*)e); break;
  766. case MappingNotify :
  767. scx_extract_mapping_event(call, se, (XMappingEvent*)e); break;
  768. }
  769. }
  770. void scx_init_event_types() {
  771. scx_key_event_binding = s48_get_imported_binding_2("scx-key-event");
  772. scx_button_event_binding = s48_get_imported_binding_2("scx-button-event");
  773. scx_motion_event_binding = s48_get_imported_binding_2("scx-motion-event");
  774. scx_crossing_event_binding = s48_get_imported_binding_2("scx-crossing-event");
  775. scx_focus_change_event_binding =
  776. s48_get_imported_binding_2("scx-focus-change-event");
  777. scx_expose_event_binding = s48_get_imported_binding_2("scx-expose-event");
  778. scx_graphics_expose_event_binding =
  779. s48_get_imported_binding_2("scx-graphics-expose-event");
  780. scx_no_expose_event_binding = s48_get_imported_binding_2("scx-no-expose-event");
  781. scx_visibility_event_binding = s48_get_imported_binding_2("scx-visibility-event");
  782. scx_create_window_event_binding =
  783. s48_get_imported_binding_2("scx-create-window-event");
  784. scx_destroy_window_event_binding =
  785. s48_get_imported_binding_2("scx-destroy-window-event");
  786. scx_unmap_event_binding = s48_get_imported_binding_2("scx-unmap-event");
  787. scx_map_event_binding = s48_get_imported_binding_2("scx-map-event");
  788. scx_map_request_event_binding =
  789. s48_get_imported_binding_2("scx-map-request-event");
  790. scx_reparent_event_binding = s48_get_imported_binding_2("scx-reparent-event");
  791. scx_configure_event_binding = s48_get_imported_binding_2("scx-configure-event");
  792. scx_gravity_event_binding = s48_get_imported_binding_2("scx-gravity-event");
  793. scx_resize_request_event_binding =
  794. s48_get_imported_binding_2("scx-resize-request-event");
  795. scx_configure_request_event_binding =
  796. s48_get_imported_binding_2("scx-configure-request-event");
  797. scx_circulate_event_binding = s48_get_imported_binding_2("scx-circulate-event");
  798. scx_circulate_event_binding =
  799. s48_get_imported_binding_2("scx-circulate-request-event");
  800. scx_property_event_binding = s48_get_imported_binding_2("scx-property-event");
  801. scx_selection_clear_event_binding =
  802. s48_get_imported_binding_2("scx-selection-clear-event");
  803. scx_selection_request_event_binding =
  804. s48_get_imported_binding_2("scx-selection-request-event");
  805. scx_selection_event_binding = s48_get_imported_binding_2("scx-selection-event");
  806. scx_colormap_event_binding = s48_get_imported_binding_2("scx-colormap-event");
  807. scx_client_message_event_binding =
  808. s48_get_imported_binding_2("scx-client-message-event");
  809. scx_mapping_event_binding = s48_get_imported_binding_2("scx-mapping-event");
  810. scx_keymap_event_binding = s48_get_imported_binding_2("scx-keymap-event");
  811. }