X11Structs.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
  1. // Permission is hereby granted, free of charge, to any person obtaining
  2. // a copy of this software and associated documentation files (the
  3. // "Software"), to deal in the Software without restriction, including
  4. // without limitation the rights to use, copy, modify, merge, publish,
  5. // distribute, sublicense, and/or sell copies of the Software, and to
  6. // permit persons to whom the Software is furnished to do so, subject to
  7. // the following conditions:
  8. //
  9. // The above copyright notice and this permission notice shall be
  10. // included in all copies or substantial portions of the Software.
  11. //
  12. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  13. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  14. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  15. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  16. // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  17. // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  18. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  19. //
  20. // Copyright (c) 2004 Novell, Inc.
  21. //
  22. // Authors:
  23. // Peter Bartok [email protected]
  24. //
  25. //
  26. // $Revision: 1.1 $
  27. // $Modtime: $
  28. // $Log: X11Structs.cs,v $
  29. // Revision 1.1 2004/07/09 05:21:25 pbartok
  30. // - Initial check-in
  31. //
  32. //
  33. // NOT COMPLETE
  34. using System;
  35. using System.ComponentModel;
  36. using System.Collections;
  37. using System.Diagnostics;
  38. using System.Runtime.InteropServices;
  39. /// X11 Version
  40. namespace System.Windows.Forms {
  41. #region X11 Structures
  42. [StructLayout(LayoutKind.Sequential, Pack=4)]
  43. internal struct XAnyEvent {
  44. internal XEventName type;
  45. internal int serial;
  46. internal bool send_event;
  47. internal IntPtr display;
  48. internal IntPtr window;
  49. }
  50. [StructLayout(LayoutKind.Sequential, Pack=4)]
  51. internal struct XKeyEvent {
  52. internal XEventName type;
  53. internal int serial;
  54. internal bool send_event;
  55. internal IntPtr display;
  56. internal IntPtr window;
  57. internal IntPtr root;
  58. internal IntPtr subwindow;
  59. internal int time;
  60. internal int x;
  61. internal int y;
  62. internal int x_root;
  63. internal int y_root;
  64. internal int state;
  65. internal int keycode;
  66. internal bool same_screen;
  67. }
  68. [StructLayout(LayoutKind.Sequential, Pack=4)]
  69. internal struct XButtonEvent {
  70. internal XEventName type;
  71. internal int serial;
  72. internal bool send_event;
  73. internal IntPtr display;
  74. internal IntPtr window;
  75. internal IntPtr root;
  76. internal IntPtr subwindow;
  77. internal int time;
  78. internal int x;
  79. internal int y;
  80. internal int x_root;
  81. internal int y_root;
  82. internal int state;
  83. internal int button;
  84. internal bool same_screen;
  85. }
  86. [StructLayout(LayoutKind.Sequential, Pack=4)]
  87. internal struct XMotionEvent {
  88. internal XEventName type;
  89. internal int serial;
  90. internal bool send_event;
  91. internal IntPtr display;
  92. internal IntPtr window;
  93. internal IntPtr root;
  94. internal IntPtr subwindow;
  95. internal int time;
  96. internal int x;
  97. internal int y;
  98. internal int x_root;
  99. internal int y_root;
  100. internal int state;
  101. internal byte is_hint;
  102. internal bool same_screen;
  103. }
  104. [StructLayout(LayoutKind.Sequential, Pack=4)]
  105. internal struct XCrossingEvent {
  106. internal XEventName type;
  107. internal int serial;
  108. internal bool send_event;
  109. internal IntPtr display;
  110. internal IntPtr window;
  111. internal IntPtr root;
  112. internal IntPtr subwindow;
  113. internal int time;
  114. internal int x;
  115. internal int y;
  116. internal int x_root;
  117. internal int y_root;
  118. internal int mode;
  119. internal int detail;
  120. internal bool same_screen;
  121. internal bool focus;
  122. internal int state;
  123. }
  124. [StructLayout(LayoutKind.Sequential, Pack=4)]
  125. internal struct XFocusChangeEvent {
  126. internal XEventName type;
  127. internal int serial;
  128. internal bool send_event;
  129. internal IntPtr display;
  130. internal IntPtr window;
  131. internal int mode;
  132. internal int detail;
  133. }
  134. [StructLayout(LayoutKind.Sequential, Pack=4)]
  135. internal struct XKeymapEvent {
  136. internal XEventName type;
  137. internal int serial;
  138. internal bool send_event;
  139. internal IntPtr display;
  140. internal IntPtr window;
  141. internal byte key_vector0;
  142. internal byte key_vector1;
  143. internal byte key_vector2;
  144. internal byte key_vector3;
  145. internal byte key_vector4;
  146. internal byte key_vector5;
  147. internal byte key_vector6;
  148. internal byte key_vector7;
  149. internal byte key_vector8;
  150. internal byte key_vector9;
  151. internal byte key_vector10;
  152. internal byte key_vector11;
  153. internal byte key_vector12;
  154. internal byte key_vector13;
  155. internal byte key_vector14;
  156. internal byte key_vector15;
  157. internal byte key_vector16;
  158. internal byte key_vector17;
  159. internal byte key_vector18;
  160. internal byte key_vector19;
  161. internal byte key_vector20;
  162. internal byte key_vector21;
  163. internal byte key_vector22;
  164. internal byte key_vector23;
  165. internal byte key_vector24;
  166. internal byte key_vector25;
  167. internal byte key_vector26;
  168. internal byte key_vector27;
  169. internal byte key_vector28;
  170. internal byte key_vector29;
  171. internal byte key_vector30;
  172. internal byte key_vector31;
  173. }
  174. [StructLayout(LayoutKind.Sequential, Pack=4)]
  175. internal struct XExposeEvent {
  176. internal XEventName type;
  177. internal int serial;
  178. internal bool send_event;
  179. internal IntPtr display;
  180. internal IntPtr window;
  181. internal int x;
  182. internal int y;
  183. internal int width;
  184. internal int height;
  185. internal int count;
  186. }
  187. [StructLayout(LayoutKind.Sequential, Pack=4)]
  188. internal struct XGraphicsExposeEvent {
  189. internal XEventName type;
  190. internal int serial;
  191. internal bool send_event;
  192. internal IntPtr display;
  193. internal IntPtr drawable;
  194. internal int x;
  195. internal int y;
  196. internal int width;
  197. internal int height;
  198. internal int count;
  199. internal int major_code;
  200. internal int minor_code;
  201. }
  202. [StructLayout(LayoutKind.Sequential, Pack=4)]
  203. internal struct XNoExposeEvent {
  204. internal XEventName type;
  205. internal int serial;
  206. internal bool send_event;
  207. internal IntPtr display;
  208. internal IntPtr drawable;
  209. internal int major_code;
  210. internal int minor_code;
  211. }
  212. [StructLayout(LayoutKind.Sequential, Pack=4)]
  213. internal struct XVisibilityEvent {
  214. internal XEventName type;
  215. internal int serial;
  216. internal bool send_event;
  217. internal IntPtr display;
  218. internal IntPtr window;
  219. internal int state;
  220. }
  221. [StructLayout(LayoutKind.Sequential, Pack=4)]
  222. internal struct XCreateWindowEvent {
  223. internal XEventName type;
  224. internal int serial;
  225. internal bool send_event;
  226. internal IntPtr display;
  227. internal IntPtr parent;
  228. internal IntPtr window;
  229. internal int x;
  230. internal int y;
  231. internal int width;
  232. internal int height;
  233. internal int border_width;
  234. internal bool override_redirect;
  235. }
  236. [StructLayout(LayoutKind.Sequential, Pack=4)]
  237. internal struct XDestroyWindowEvent {
  238. internal XEventName type;
  239. internal int serial;
  240. internal bool send_event;
  241. internal IntPtr display;
  242. internal IntPtr xevent;
  243. internal IntPtr window;
  244. }
  245. [StructLayout(LayoutKind.Sequential, Pack=4)]
  246. internal struct XUnmapEvent {
  247. internal XEventName type;
  248. internal int serial;
  249. internal bool send_event;
  250. internal IntPtr display;
  251. internal IntPtr xevent;
  252. internal IntPtr window;
  253. internal bool from_configure;
  254. }
  255. [StructLayout(LayoutKind.Sequential, Pack=4)]
  256. internal struct XMapEvent {
  257. internal XEventName type;
  258. internal int serial;
  259. internal bool send_event;
  260. internal IntPtr display;
  261. internal IntPtr xevent;
  262. internal IntPtr window;
  263. internal bool override_redirect;
  264. }
  265. [StructLayout(LayoutKind.Sequential, Pack=4)]
  266. internal struct XMapRequestEvent {
  267. internal XEventName type;
  268. internal int serial;
  269. internal bool send_event;
  270. internal IntPtr display;
  271. internal IntPtr parent;
  272. internal IntPtr window;
  273. }
  274. [StructLayout(LayoutKind.Sequential, Pack=4)]
  275. internal struct XReparentEvent {
  276. internal XEventName type;
  277. internal int serial;
  278. internal bool send_event;
  279. internal IntPtr display;
  280. internal IntPtr xevent;
  281. internal IntPtr window;
  282. internal IntPtr parent;
  283. internal int x;
  284. internal int y;
  285. internal bool override_redirect;
  286. }
  287. [StructLayout(LayoutKind.Sequential, Pack=4)]
  288. internal struct XConfigureEvent {
  289. internal XEventName type;
  290. internal int serial;
  291. internal bool send_event;
  292. internal IntPtr display;
  293. internal IntPtr xevent;
  294. internal IntPtr window;
  295. internal int x;
  296. internal int y;
  297. internal int width;
  298. internal int height;
  299. internal int border_width;
  300. internal IntPtr above;
  301. internal bool override_redirect;
  302. }
  303. [StructLayout(LayoutKind.Sequential, Pack=4)]
  304. internal struct XGravityEvent {
  305. internal XEventName type;
  306. internal int serial;
  307. internal bool send_event;
  308. internal IntPtr display;
  309. internal IntPtr xevent;
  310. internal IntPtr window;
  311. internal int x;
  312. internal int y;
  313. }
  314. [StructLayout(LayoutKind.Sequential, Pack=4)]
  315. internal struct XResizeRequestEvent {
  316. internal XEventName type;
  317. internal int serial;
  318. internal bool send_event;
  319. internal IntPtr display;
  320. internal IntPtr window;
  321. internal int width;
  322. internal int height;
  323. }
  324. [StructLayout(LayoutKind.Sequential, Pack=4)]
  325. internal struct XConfigureRequestEvent {
  326. internal XEventName type;
  327. internal int serial;
  328. internal bool send_event;
  329. internal IntPtr display;
  330. internal IntPtr window;
  331. internal int width;
  332. internal int height;
  333. }
  334. [StructLayout(LayoutKind.Sequential, Pack=4)]
  335. internal struct XCirculateEvent {
  336. internal XEventName type;
  337. internal int serial;
  338. internal bool send_event;
  339. internal IntPtr display;
  340. internal IntPtr xevent;
  341. internal IntPtr window;
  342. internal int place;
  343. }
  344. [StructLayout(LayoutKind.Sequential, Pack=4)]
  345. internal struct XCirculateRequestEvent {
  346. internal XEventName type;
  347. internal int serial;
  348. internal bool send_event;
  349. internal IntPtr display;
  350. internal IntPtr parent;
  351. internal IntPtr window;
  352. internal int place;
  353. }
  354. [StructLayout(LayoutKind.Sequential, Pack=4)]
  355. internal struct XPropertyEvent {
  356. internal XEventName type;
  357. internal int serial;
  358. internal bool send_event;
  359. internal IntPtr display;
  360. internal IntPtr window;
  361. internal IntPtr atom;
  362. internal int time;
  363. internal int state;
  364. }
  365. [StructLayout(LayoutKind.Sequential, Pack=4)]
  366. internal struct XSelectionClearEvent {
  367. internal XEventName type;
  368. internal int serial;
  369. internal bool send_event;
  370. internal IntPtr display;
  371. internal IntPtr window;
  372. internal IntPtr selection;
  373. internal int time;
  374. }
  375. [StructLayout(LayoutKind.Sequential, Pack=4)]
  376. internal struct XSelectionRequestEvent {
  377. internal XEventName type;
  378. internal int serial;
  379. internal bool send_event;
  380. internal IntPtr display;
  381. internal IntPtr owner;
  382. internal IntPtr requestor;
  383. internal IntPtr selection;
  384. internal IntPtr target;
  385. internal IntPtr property;
  386. internal int time;
  387. }
  388. [StructLayout(LayoutKind.Sequential, Pack=4)]
  389. internal struct XSelectionEvent {
  390. internal XEventName type;
  391. internal int serial;
  392. internal bool send_event;
  393. internal IntPtr display;
  394. internal IntPtr requestor;
  395. internal IntPtr selection;
  396. internal IntPtr target;
  397. internal IntPtr property;
  398. internal int time;
  399. }
  400. [StructLayout(LayoutKind.Sequential, Pack=4)]
  401. internal struct XColormapEvent {
  402. internal XEventName type;
  403. internal int serial;
  404. internal bool send_event;
  405. internal IntPtr display;
  406. internal IntPtr window;
  407. internal IntPtr colormap;
  408. internal bool c_new;
  409. internal int state;
  410. }
  411. [StructLayout(LayoutKind.Sequential, Pack=4)]
  412. internal struct XClientMessageEvent {
  413. internal XEventName type;
  414. internal int serial;
  415. internal bool send_event;
  416. internal IntPtr display;
  417. internal IntPtr window;
  418. internal IntPtr message_type;
  419. internal int format;
  420. internal int l0;
  421. internal int l1;
  422. internal int l2;
  423. internal int l3;
  424. internal int l4;
  425. }
  426. [StructLayout(LayoutKind.Sequential, Pack=4)]
  427. internal struct XMappingEvent {
  428. internal XEventName type;
  429. internal int serial;
  430. internal bool send_event;
  431. internal IntPtr display;
  432. internal IntPtr window;
  433. internal int request;
  434. internal int first_keycode;
  435. internal int count;
  436. }
  437. [StructLayout(LayoutKind.Sequential, Pack=4)]
  438. internal struct XErrorEvent {
  439. internal XEventName type;
  440. internal IntPtr display;
  441. internal IntPtr resourceid;
  442. internal int serial;
  443. internal byte error_code;
  444. internal byte request_code;
  445. internal byte minor_code;
  446. }
  447. [StructLayout(LayoutKind.Sequential, Pack=4)]
  448. internal struct XEventPad {
  449. internal int pad0;
  450. internal int pad1;
  451. internal int pad2;
  452. internal int pad3;
  453. internal int pad4;
  454. internal int pad5;
  455. internal int pad6;
  456. internal int pad7;
  457. internal int pad8;
  458. internal int pad9;
  459. internal int pad10;
  460. internal int pad11;
  461. internal int pad12;
  462. internal int pad13;
  463. internal int pad14;
  464. internal int pad15;
  465. internal int pad16;
  466. internal int pad17;
  467. internal int pad18;
  468. internal int pad19;
  469. internal int pad20;
  470. internal int pad21;
  471. internal int pad22;
  472. internal int pad23;
  473. }
  474. [StructLayout(LayoutKind.Explicit)]
  475. internal struct XEvent {
  476. [ FieldOffset(0) ] internal XEventName type;
  477. [ FieldOffset(0) ] internal XAnyEvent AnyEvent;
  478. [ FieldOffset(0) ] internal XKeyEvent KeyEvent;
  479. [ FieldOffset(0) ] internal XButtonEvent ButtonEvent;
  480. [ FieldOffset(0) ] internal XMotionEvent MotionEvent;
  481. [ FieldOffset(0) ] internal XCrossingEvent CrossingEvent;
  482. [ FieldOffset(0) ] internal XFocusChangeEvent FocusChangeEvent;
  483. [ FieldOffset(0) ] internal XExposeEvent ExposeEvent;
  484. [ FieldOffset(0) ] internal XGraphicsExposeEvent GraphicsExposeEvent;
  485. [ FieldOffset(0) ] internal XNoExposeEvent NoExposeEvent;
  486. [ FieldOffset(0) ] internal XVisibilityEvent VisibilityEvent;
  487. [ FieldOffset(0) ] internal XCreateWindowEvent CreateWindowEvent;
  488. [ FieldOffset(0) ] internal XDestroyWindowEvent DestroyWindowEvent;
  489. [ FieldOffset(0) ] internal XUnmapEvent UnmapEvent;
  490. [ FieldOffset(0) ] internal XMapEvent MapEvent;
  491. [ FieldOffset(0) ] internal XMapRequestEvent MapRequestEvent;
  492. [ FieldOffset(0) ] internal XReparentEvent ReparentEvent;
  493. [ FieldOffset(0) ] internal XConfigureEvent ConfigureEvent;
  494. [ FieldOffset(0) ] internal XGravityEvent GravityEvent;
  495. [ FieldOffset(0) ] internal XResizeRequestEvent ResizeRequestEvent;
  496. [ FieldOffset(0) ] internal XConfigureRequestEvent ConfigureRequestEvent;
  497. [ FieldOffset(0) ] internal XCirculateEvent CirculateEvent;
  498. [ FieldOffset(0) ] internal XCirculateRequestEvent CirculateRequestEvent;
  499. [ FieldOffset(0) ] internal XPropertyEvent PropertyEvent;
  500. [ FieldOffset(0) ] internal XSelectionClearEvent SelectionClearEvent;
  501. [ FieldOffset(0) ] internal XSelectionRequestEvent SelectionRequestEvent;
  502. [ FieldOffset(0) ] internal XSelectionEvent SelectionEvent;
  503. [ FieldOffset(0) ] internal XColormapEvent ColormapEvent;
  504. [ FieldOffset(0) ] internal XClientMessageEvent ClientMessageEvent;
  505. [ FieldOffset(0) ] internal XMappingEvent MappingEvent;
  506. [ FieldOffset(0) ] internal XErrorEvent ErrorEvent;
  507. [ FieldOffset(0) ] internal XKeymapEvent KeymapEvent;
  508. //[MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst=24)]
  509. //[ FieldOffset(0) ] internal int[] pad;
  510. [ FieldOffset(0) ] internal XEventPad Pad;
  511. }
  512. #endregion
  513. #region X11 Enumerations
  514. internal enum XWindowClass {
  515. InputOutput = 1,
  516. InputOnly = 2
  517. }
  518. internal enum XEventName {
  519. KeyPress = 2,
  520. KeyRelease = 3,
  521. ButtonPress = 4,
  522. ButtonRelease = 5,
  523. MotionNotify = 6,
  524. EnterNotify = 7,
  525. LeaveNotify = 8,
  526. FocusIn = 9,
  527. FocusOut = 10,
  528. KeymapNotify = 11,
  529. Expose = 12,
  530. GraphicsExpose = 13,
  531. NoExpose = 14,
  532. VisibilityNotify = 15,
  533. CreateNotify = 16,
  534. DestroyNotify = 17,
  535. UnmapNotify = 18,
  536. MapNotify = 19,
  537. MapRequest = 20,
  538. ReparentNotify = 21,
  539. ConfigureNotify = 22,
  540. ConfigureRequest = 23,
  541. GravityNotify = 24,
  542. ResizeRequest = 25,
  543. CirculateNotify = 26,
  544. CirculateRequest = 27,
  545. PropertyNotify = 28,
  546. SelectionClear = 29,
  547. SelectionRequest = 30,
  548. SelectionNotify = 31,
  549. ColormapNotify = 32,
  550. ClientMessage = 33,
  551. MappingNotify = 34,
  552. LASTEvent = 35
  553. }
  554. internal enum XWindowAttribute {
  555. CWBackPixmap = 1,
  556. CWBackPixel = 2,
  557. CWBorderPixmap = 4,
  558. CWBorderPixel = 8,
  559. CWBitGravity = 16,
  560. CWWinGravity = 32,
  561. CWBackingStore = 64,
  562. CWBackingPlanes = 128,
  563. CWBackingPixel = 256,
  564. CWOverrideRedirect = 512,
  565. CWSaveUnder = 1024,
  566. CWEventMask = 2048,
  567. CWDontPropagate = 4096,
  568. CWColorMap = 8192,
  569. CWCursor = 16384
  570. }
  571. internal enum XKeySym {
  572. XK_Shift_L = 0xFFE1,
  573. XK_Shift_R = 0xFFE2,
  574. XK_Control_L = 0xFFE3,
  575. XK_Control_R = 0xFFE4,
  576. XK_Caps_Lock = 0xFFE5,
  577. XK_Shift_Lock = 0xFFE6,
  578. XK_Meta_L = 0xFFE7,
  579. XK_Meta_R = 0xFFE8,
  580. XK_Alt_L = 0xFFE9,
  581. XK_Alt_R = 0xFFEA,
  582. XK_Super_L = 0xFFEB,
  583. XK_Super_R = 0xFFEC,
  584. XK_Hyper_L = 0xFFED,
  585. XK_Hyper_R = 0xFFEE,
  586. }
  587. #endregion
  588. }