X11Structs.cs 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150
  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. // NOT COMPLETE
  26. using System;
  27. using System.ComponentModel;
  28. using System.Collections;
  29. using System.Diagnostics;
  30. using System.Runtime.InteropServices;
  31. /// X11 Version
  32. namespace System.Windows.Forms {
  33. //
  34. // In the structures below, fields of type long are mapped to IntPtr.
  35. // This will work on all platforms where sizeof(long)==sizeof(void*), which
  36. // is almost all platforms except WIN64.
  37. //
  38. [StructLayout(LayoutKind.Sequential)]
  39. internal struct XAnyEvent {
  40. internal XEventName type;
  41. internal IntPtr serial;
  42. internal bool send_event;
  43. internal IntPtr display;
  44. internal IntPtr window;
  45. }
  46. [StructLayout(LayoutKind.Sequential)]
  47. internal struct XKeyEvent {
  48. internal XEventName type;
  49. internal IntPtr serial;
  50. internal bool send_event;
  51. internal IntPtr display;
  52. internal IntPtr window;
  53. internal IntPtr root;
  54. internal IntPtr subwindow;
  55. internal IntPtr time;
  56. internal int x;
  57. internal int y;
  58. internal int x_root;
  59. internal int y_root;
  60. internal int state;
  61. internal int keycode;
  62. internal bool same_screen;
  63. }
  64. [StructLayout(LayoutKind.Sequential)]
  65. internal struct XButtonEvent {
  66. internal XEventName type;
  67. internal IntPtr serial;
  68. internal bool send_event;
  69. internal IntPtr display;
  70. internal IntPtr window;
  71. internal IntPtr root;
  72. internal IntPtr subwindow;
  73. internal IntPtr time;
  74. internal int x;
  75. internal int y;
  76. internal int x_root;
  77. internal int y_root;
  78. internal int state;
  79. internal int button;
  80. internal bool same_screen;
  81. }
  82. [StructLayout(LayoutKind.Sequential)]
  83. internal struct XMotionEvent {
  84. internal XEventName type;
  85. internal IntPtr serial;
  86. internal bool send_event;
  87. internal IntPtr display;
  88. internal IntPtr window;
  89. internal IntPtr root;
  90. internal IntPtr subwindow;
  91. internal IntPtr time;
  92. internal int x;
  93. internal int y;
  94. internal int x_root;
  95. internal int y_root;
  96. internal int state;
  97. internal byte is_hint;
  98. internal bool same_screen;
  99. }
  100. [StructLayout(LayoutKind.Sequential)]
  101. internal struct XCrossingEvent {
  102. internal XEventName type;
  103. internal IntPtr serial;
  104. internal bool send_event;
  105. internal IntPtr display;
  106. internal IntPtr window;
  107. internal IntPtr root;
  108. internal IntPtr subwindow;
  109. internal IntPtr time;
  110. internal int x;
  111. internal int y;
  112. internal int x_root;
  113. internal int y_root;
  114. internal NotifyMode mode;
  115. internal NotifyDetail detail;
  116. internal bool same_screen;
  117. internal bool focus;
  118. internal int state;
  119. }
  120. [StructLayout(LayoutKind.Sequential)]
  121. internal struct XFocusChangeEvent {
  122. internal XEventName type;
  123. internal IntPtr serial;
  124. internal bool send_event;
  125. internal IntPtr display;
  126. internal IntPtr window;
  127. internal int mode;
  128. internal NotifyDetail detail;
  129. }
  130. [StructLayout(LayoutKind.Sequential)]
  131. internal struct XKeymapEvent {
  132. internal XEventName type;
  133. internal IntPtr serial;
  134. internal bool send_event;
  135. internal IntPtr display;
  136. internal IntPtr window;
  137. internal byte key_vector0;
  138. internal byte key_vector1;
  139. internal byte key_vector2;
  140. internal byte key_vector3;
  141. internal byte key_vector4;
  142. internal byte key_vector5;
  143. internal byte key_vector6;
  144. internal byte key_vector7;
  145. internal byte key_vector8;
  146. internal byte key_vector9;
  147. internal byte key_vector10;
  148. internal byte key_vector11;
  149. internal byte key_vector12;
  150. internal byte key_vector13;
  151. internal byte key_vector14;
  152. internal byte key_vector15;
  153. internal byte key_vector16;
  154. internal byte key_vector17;
  155. internal byte key_vector18;
  156. internal byte key_vector19;
  157. internal byte key_vector20;
  158. internal byte key_vector21;
  159. internal byte key_vector22;
  160. internal byte key_vector23;
  161. internal byte key_vector24;
  162. internal byte key_vector25;
  163. internal byte key_vector26;
  164. internal byte key_vector27;
  165. internal byte key_vector28;
  166. internal byte key_vector29;
  167. internal byte key_vector30;
  168. internal byte key_vector31;
  169. }
  170. [StructLayout(LayoutKind.Sequential)]
  171. internal struct XExposeEvent {
  172. internal XEventName type;
  173. internal IntPtr serial;
  174. internal bool send_event;
  175. internal IntPtr display;
  176. internal IntPtr window;
  177. internal int x;
  178. internal int y;
  179. internal int width;
  180. internal int height;
  181. internal int count;
  182. }
  183. [StructLayout(LayoutKind.Sequential)]
  184. internal struct XGraphicsExposeEvent {
  185. internal XEventName type;
  186. internal IntPtr serial;
  187. internal bool send_event;
  188. internal IntPtr display;
  189. internal IntPtr drawable;
  190. internal int x;
  191. internal int y;
  192. internal int width;
  193. internal int height;
  194. internal int count;
  195. internal int major_code;
  196. internal int minor_code;
  197. }
  198. [StructLayout(LayoutKind.Sequential)]
  199. internal struct XNoExposeEvent {
  200. internal XEventName type;
  201. internal IntPtr serial;
  202. internal bool send_event;
  203. internal IntPtr display;
  204. internal IntPtr drawable;
  205. internal int major_code;
  206. internal int minor_code;
  207. }
  208. [StructLayout(LayoutKind.Sequential)]
  209. internal struct XVisibilityEvent {
  210. internal XEventName type;
  211. internal IntPtr serial;
  212. internal bool send_event;
  213. internal IntPtr display;
  214. internal IntPtr window;
  215. internal int state;
  216. }
  217. [StructLayout(LayoutKind.Sequential)]
  218. internal struct XCreateWindowEvent {
  219. internal XEventName type;
  220. internal IntPtr serial;
  221. internal bool send_event;
  222. internal IntPtr display;
  223. internal IntPtr parent;
  224. internal IntPtr window;
  225. internal int x;
  226. internal int y;
  227. internal int width;
  228. internal int height;
  229. internal int border_width;
  230. internal bool override_redirect;
  231. }
  232. [StructLayout(LayoutKind.Sequential)]
  233. internal struct XDestroyWindowEvent {
  234. internal XEventName type;
  235. internal IntPtr serial;
  236. internal bool send_event;
  237. internal IntPtr display;
  238. internal IntPtr xevent;
  239. internal IntPtr window;
  240. }
  241. [StructLayout(LayoutKind.Sequential)]
  242. internal struct XUnmapEvent {
  243. internal XEventName type;
  244. internal IntPtr serial;
  245. internal bool send_event;
  246. internal IntPtr display;
  247. internal IntPtr xevent;
  248. internal IntPtr window;
  249. internal bool from_configure;
  250. }
  251. [StructLayout(LayoutKind.Sequential)]
  252. internal struct XMapEvent {
  253. internal XEventName type;
  254. internal IntPtr serial;
  255. internal bool send_event;
  256. internal IntPtr display;
  257. internal IntPtr xevent;
  258. internal IntPtr window;
  259. internal bool override_redirect;
  260. }
  261. [StructLayout(LayoutKind.Sequential)]
  262. internal struct XMapRequestEvent {
  263. internal XEventName type;
  264. internal IntPtr serial;
  265. internal bool send_event;
  266. internal IntPtr display;
  267. internal IntPtr parent;
  268. internal IntPtr window;
  269. }
  270. [StructLayout(LayoutKind.Sequential)]
  271. internal struct XReparentEvent {
  272. internal XEventName type;
  273. internal IntPtr serial;
  274. internal bool send_event;
  275. internal IntPtr display;
  276. internal IntPtr xevent;
  277. internal IntPtr window;
  278. internal IntPtr parent;
  279. internal int x;
  280. internal int y;
  281. internal bool override_redirect;
  282. }
  283. [StructLayout(LayoutKind.Sequential)]
  284. internal struct XConfigureEvent {
  285. internal XEventName type;
  286. internal IntPtr serial;
  287. internal bool send_event;
  288. internal IntPtr display;
  289. internal IntPtr xevent;
  290. internal IntPtr window;
  291. internal int x;
  292. internal int y;
  293. internal int width;
  294. internal int height;
  295. internal int border_width;
  296. internal IntPtr above;
  297. internal bool override_redirect;
  298. }
  299. [StructLayout(LayoutKind.Sequential)]
  300. internal struct XGravityEvent {
  301. internal XEventName type;
  302. internal IntPtr serial;
  303. internal bool send_event;
  304. internal IntPtr display;
  305. internal IntPtr xevent;
  306. internal IntPtr window;
  307. internal int x;
  308. internal int y;
  309. }
  310. [StructLayout(LayoutKind.Sequential)]
  311. internal struct XResizeRequestEvent {
  312. internal XEventName type;
  313. internal IntPtr serial;
  314. internal bool send_event;
  315. internal IntPtr display;
  316. internal IntPtr window;
  317. internal int width;
  318. internal int height;
  319. }
  320. [StructLayout(LayoutKind.Sequential)]
  321. internal struct XConfigureRequestEvent {
  322. internal XEventName type;
  323. internal IntPtr serial;
  324. internal bool send_event;
  325. internal IntPtr display;
  326. internal IntPtr window;
  327. internal int width;
  328. internal int height;
  329. }
  330. [StructLayout(LayoutKind.Sequential)]
  331. internal struct XCirculateEvent {
  332. internal XEventName type;
  333. internal IntPtr serial;
  334. internal bool send_event;
  335. internal IntPtr display;
  336. internal IntPtr xevent;
  337. internal IntPtr window;
  338. internal int place;
  339. }
  340. [StructLayout(LayoutKind.Sequential)]
  341. internal struct XCirculateRequestEvent {
  342. internal XEventName type;
  343. internal IntPtr serial;
  344. internal bool send_event;
  345. internal IntPtr display;
  346. internal IntPtr parent;
  347. internal IntPtr window;
  348. internal int place;
  349. }
  350. [StructLayout(LayoutKind.Sequential)]
  351. internal struct XPropertyEvent {
  352. internal XEventName type;
  353. internal IntPtr serial;
  354. internal bool send_event;
  355. internal IntPtr display;
  356. internal IntPtr window;
  357. internal IntPtr atom;
  358. internal IntPtr time;
  359. internal int state;
  360. }
  361. [StructLayout(LayoutKind.Sequential)]
  362. internal struct XSelectionClearEvent {
  363. internal XEventName type;
  364. internal IntPtr serial;
  365. internal bool send_event;
  366. internal IntPtr display;
  367. internal IntPtr window;
  368. internal IntPtr selection;
  369. internal IntPtr time;
  370. }
  371. [StructLayout(LayoutKind.Sequential)]
  372. internal struct XSelectionRequestEvent {
  373. internal XEventName type;
  374. internal IntPtr serial;
  375. internal bool send_event;
  376. internal IntPtr display;
  377. internal IntPtr owner;
  378. internal IntPtr requestor;
  379. internal IntPtr selection;
  380. internal IntPtr target;
  381. internal IntPtr property;
  382. internal IntPtr time;
  383. }
  384. [StructLayout(LayoutKind.Sequential)]
  385. internal struct XSelectionEvent {
  386. internal XEventName type;
  387. internal IntPtr serial;
  388. internal bool send_event;
  389. internal IntPtr display;
  390. internal IntPtr requestor;
  391. internal IntPtr selection;
  392. internal IntPtr target;
  393. internal IntPtr property;
  394. internal IntPtr time;
  395. }
  396. [StructLayout(LayoutKind.Sequential)]
  397. internal struct XColormapEvent {
  398. internal XEventName type;
  399. internal IntPtr serial;
  400. internal bool send_event;
  401. internal IntPtr display;
  402. internal IntPtr window;
  403. internal IntPtr colormap;
  404. internal bool c_new;
  405. internal int state;
  406. }
  407. [StructLayout(LayoutKind.Sequential)]
  408. internal struct XClientMessageEvent {
  409. internal XEventName type;
  410. internal IntPtr serial;
  411. internal bool send_event;
  412. internal IntPtr display;
  413. internal IntPtr window;
  414. internal IntPtr message_type;
  415. internal int format;
  416. internal IntPtr ptr1;
  417. internal IntPtr ptr2;
  418. internal IntPtr ptr3;
  419. internal IntPtr ptr4;
  420. internal IntPtr ptr5;
  421. }
  422. [StructLayout(LayoutKind.Sequential)]
  423. internal struct XMappingEvent {
  424. internal XEventName type;
  425. internal IntPtr serial;
  426. internal bool send_event;
  427. internal IntPtr display;
  428. internal IntPtr window;
  429. internal int request;
  430. internal int first_keycode;
  431. internal int count;
  432. }
  433. [StructLayout(LayoutKind.Sequential)]
  434. internal struct XErrorEvent {
  435. internal XEventName type;
  436. internal IntPtr display;
  437. internal IntPtr resourceid;
  438. internal IntPtr serial;
  439. internal byte error_code;
  440. internal byte request_code;
  441. internal byte minor_code;
  442. }
  443. [StructLayout(LayoutKind.Sequential)]
  444. internal struct XTimerNotifyEvent {
  445. internal XEventName type;
  446. internal EventHandler handler;
  447. }
  448. [StructLayout(LayoutKind.Sequential)]
  449. internal struct XEventPad {
  450. internal IntPtr pad0;
  451. internal IntPtr pad1;
  452. internal IntPtr pad2;
  453. internal IntPtr pad3;
  454. internal IntPtr pad4;
  455. internal IntPtr pad5;
  456. internal IntPtr pad6;
  457. internal IntPtr pad7;
  458. internal IntPtr pad8;
  459. internal IntPtr pad9;
  460. internal IntPtr pad10;
  461. internal IntPtr pad11;
  462. internal IntPtr pad12;
  463. internal IntPtr pad13;
  464. internal IntPtr pad14;
  465. internal IntPtr pad15;
  466. internal IntPtr pad16;
  467. internal IntPtr pad17;
  468. internal IntPtr pad18;
  469. internal IntPtr pad19;
  470. internal IntPtr pad20;
  471. internal IntPtr pad21;
  472. internal IntPtr pad22;
  473. internal IntPtr pad23;
  474. }
  475. [StructLayout(LayoutKind.Explicit)]
  476. internal struct XEvent {
  477. [ FieldOffset(0) ] internal XEventName type;
  478. [ FieldOffset(0) ] internal XAnyEvent AnyEvent;
  479. [ FieldOffset(0) ] internal XKeyEvent KeyEvent;
  480. [ FieldOffset(0) ] internal XButtonEvent ButtonEvent;
  481. [ FieldOffset(0) ] internal XMotionEvent MotionEvent;
  482. [ FieldOffset(0) ] internal XCrossingEvent CrossingEvent;
  483. [ FieldOffset(0) ] internal XFocusChangeEvent FocusChangeEvent;
  484. [ FieldOffset(0) ] internal XExposeEvent ExposeEvent;
  485. [ FieldOffset(0) ] internal XGraphicsExposeEvent GraphicsExposeEvent;
  486. [ FieldOffset(0) ] internal XNoExposeEvent NoExposeEvent;
  487. [ FieldOffset(0) ] internal XVisibilityEvent VisibilityEvent;
  488. [ FieldOffset(0) ] internal XCreateWindowEvent CreateWindowEvent;
  489. [ FieldOffset(0) ] internal XDestroyWindowEvent DestroyWindowEvent;
  490. [ FieldOffset(0) ] internal XUnmapEvent UnmapEvent;
  491. [ FieldOffset(0) ] internal XMapEvent MapEvent;
  492. [ FieldOffset(0) ] internal XMapRequestEvent MapRequestEvent;
  493. [ FieldOffset(0) ] internal XReparentEvent ReparentEvent;
  494. [ FieldOffset(0) ] internal XConfigureEvent ConfigureEvent;
  495. [ FieldOffset(0) ] internal XGravityEvent GravityEvent;
  496. [ FieldOffset(0) ] internal XResizeRequestEvent ResizeRequestEvent;
  497. [ FieldOffset(0) ] internal XConfigureRequestEvent ConfigureRequestEvent;
  498. [ FieldOffset(0) ] internal XCirculateEvent CirculateEvent;
  499. [ FieldOffset(0) ] internal XCirculateRequestEvent CirculateRequestEvent;
  500. [ FieldOffset(0) ] internal XPropertyEvent PropertyEvent;
  501. [ FieldOffset(0) ] internal XSelectionClearEvent SelectionClearEvent;
  502. [ FieldOffset(0) ] internal XSelectionRequestEvent SelectionRequestEvent;
  503. [ FieldOffset(0) ] internal XSelectionEvent SelectionEvent;
  504. [ FieldOffset(0) ] internal XColormapEvent ColormapEvent;
  505. [ FieldOffset(0) ] internal XClientMessageEvent ClientMessageEvent;
  506. [ FieldOffset(0) ] internal XMappingEvent MappingEvent;
  507. [ FieldOffset(0) ] internal XErrorEvent ErrorEvent;
  508. [ FieldOffset(0) ] internal XKeymapEvent KeymapEvent;
  509. [ FieldOffset(0) ] internal XTimerNotifyEvent TimerNotifyEvent;
  510. //[MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst=24)]
  511. //[ FieldOffset(0) ] internal int[] pad;
  512. [ FieldOffset(0) ] internal XEventPad Pad;
  513. }
  514. [StructLayout(LayoutKind.Sequential)]
  515. internal struct XSetWindowAttributes {
  516. internal IntPtr background_pixmap;
  517. internal IntPtr background_pixel;
  518. internal IntPtr border_pixmap;
  519. internal IntPtr border_pixel;
  520. internal Gravity bit_gravity;
  521. internal Gravity win_gravity;
  522. internal int backing_store;
  523. internal IntPtr backing_planes;
  524. internal IntPtr backing_pixel;
  525. internal bool save_under;
  526. internal IntPtr event_mask;
  527. internal IntPtr do_not_propagate_mask;
  528. internal bool override_redirect;
  529. internal IntPtr colormap;
  530. internal IntPtr cursor;
  531. }
  532. [StructLayout(LayoutKind.Sequential)]
  533. internal struct XWindowAttributes {
  534. internal int x;
  535. internal int y;
  536. internal int width;
  537. internal int height;
  538. internal int border_width;
  539. internal int depth;
  540. internal IntPtr visual;
  541. internal IntPtr root;
  542. internal int c_class;
  543. internal Gravity bit_gravity;
  544. internal Gravity win_gravity;
  545. internal int backing_store;
  546. internal IntPtr backing_planes;
  547. internal IntPtr backing_pixel;
  548. internal bool save_under;
  549. internal IntPtr colormap;
  550. internal bool map_installed;
  551. internal MapState map_state;
  552. internal IntPtr all_event_masks;
  553. internal IntPtr your_event_mask;
  554. internal IntPtr do_not_propagate_mask;
  555. internal bool override_direct;
  556. internal IntPtr screen;
  557. }
  558. [StructLayout(LayoutKind.Sequential)]
  559. internal struct XTextProperty {
  560. internal string value;
  561. internal IntPtr encoding;
  562. internal int format;
  563. internal IntPtr nitems;
  564. }
  565. internal enum XWindowClass {
  566. InputOutput = 1,
  567. InputOnly = 2
  568. }
  569. internal enum XEventName {
  570. KeyPress = 2,
  571. KeyRelease = 3,
  572. ButtonPress = 4,
  573. ButtonRelease = 5,
  574. MotionNotify = 6,
  575. EnterNotify = 7,
  576. LeaveNotify = 8,
  577. FocusIn = 9,
  578. FocusOut = 10,
  579. KeymapNotify = 11,
  580. Expose = 12,
  581. GraphicsExpose = 13,
  582. NoExpose = 14,
  583. VisibilityNotify = 15,
  584. CreateNotify = 16,
  585. DestroyNotify = 17,
  586. UnmapNotify = 18,
  587. MapNotify = 19,
  588. MapRequest = 20,
  589. ReparentNotify = 21,
  590. ConfigureNotify = 22,
  591. ConfigureRequest = 23,
  592. GravityNotify = 24,
  593. ResizeRequest = 25,
  594. CirculateNotify = 26,
  595. CirculateRequest = 27,
  596. PropertyNotify = 28,
  597. SelectionClear = 29,
  598. SelectionRequest = 30,
  599. SelectionNotify = 31,
  600. ColormapNotify = 32,
  601. ClientMessage = 33,
  602. MappingNotify = 34,
  603. TimerNotify = 100,
  604. LASTEvent
  605. }
  606. [Flags]
  607. internal enum SetWindowValuemask {
  608. BackPixmap = 1,
  609. BackPixel = 2,
  610. BorderPixmap = 4,
  611. BorderPixel = 8,
  612. BitGravity = 16,
  613. WinGravity = 32,
  614. BackingStore = 64,
  615. BackingPlanes = 128,
  616. BackingPixel = 256,
  617. OverrideRedirect = 512,
  618. SaveUnder = 1024,
  619. EventMask = 2048,
  620. DontPropagate = 4096,
  621. ColorMap = 8192,
  622. Cursor = 16384
  623. }
  624. internal enum CreateWindowArgs {
  625. CopyFromParent = 0,
  626. ParentRelative = 1,
  627. InputOutput = 1,
  628. InputOnly = 2
  629. }
  630. internal enum Gravity {
  631. ForgetGravity = 0,
  632. NorthWestGravity= 1,
  633. NorthGravity = 2,
  634. NorthEastGravity= 3,
  635. WestGravity = 4,
  636. CenterGravity = 5,
  637. EastGravity = 6,
  638. SouthWestGravity= 7,
  639. SouthGravity = 8,
  640. SouthEastGravity= 9,
  641. StaticGravity = 10
  642. }
  643. internal enum XKeySym {
  644. XK_BackSpace = 0xFF08,
  645. XK_Tab = 0xFF09,
  646. XK_Clear = 0xFF0B,
  647. XK_Return = 0xFF0D,
  648. XK_Home = 0xFF50,
  649. XK_Left = 0xFF51,
  650. XK_Up = 0xFF52,
  651. XK_Right = 0xFF53,
  652. XK_Down = 0xFF54,
  653. XK_Page_Up = 0xFF55,
  654. XK_Page_Down = 0xFF56,
  655. XK_End = 0xFF57,
  656. XK_Begin = 0xFF58,
  657. XK_Menu = 0xFF67,
  658. XK_Shift_L = 0xFFE1,
  659. XK_Shift_R = 0xFFE2,
  660. XK_Control_L = 0xFFE3,
  661. XK_Control_R = 0xFFE4,
  662. XK_Caps_Lock = 0xFFE5,
  663. XK_Shift_Lock = 0xFFE6,
  664. XK_Meta_L = 0xFFE7,
  665. XK_Meta_R = 0xFFE8,
  666. XK_Alt_L = 0xFFE9,
  667. XK_Alt_R = 0xFFEA,
  668. XK_Super_L = 0xFFEB,
  669. XK_Super_R = 0xFFEC,
  670. XK_Hyper_L = 0xFFED,
  671. XK_Hyper_R = 0xFFEE,
  672. }
  673. [Flags]
  674. internal enum EventMask {
  675. NoEventMask = 0,
  676. KeyPressMask = 1<<0,
  677. KeyReleaseMask = 1<<1,
  678. ButtonPressMask = 1<<2,
  679. ButtonReleaseMask = 1<<3,
  680. EnterWindowMask = 1<<4,
  681. LeaveWindowMask = 1<<5,
  682. PointerMotionMask = 1<<6,
  683. PointerMotionHintMask = 1<<7,
  684. Button1MotionMask = 1<<8,
  685. Button2MotionMask = 1<<9,
  686. Button3MotionMask = 1<<10,
  687. Button4MotionMask = 1<<11,
  688. Button5MotionMask = 1<<12,
  689. ButtonMotionMask = 1<<13,
  690. KeymapStateMask = 1<<14,
  691. ExposureMask = 1<<15,
  692. VisibilityChangeMask = 1<<16,
  693. StructureNotifyMask = 1<<17,
  694. ResizeRedirectMask = 1<<18,
  695. SubstructureNotifyMask = 1<<19,
  696. SubstructureRedirectMask= 1<<20,
  697. FocusChangeMask = 1<<21,
  698. PropertyChangeMask = 1<<22,
  699. ColormapChangeMask = 1<<23,
  700. OwnerGrabButtonMask = 1<<24
  701. }
  702. internal enum GrabMode {
  703. GrabModeSync = 0,
  704. GrabModeAsync = 1
  705. }
  706. [StructLayout(LayoutKind.Sequential)]
  707. internal struct XStandardColormap {
  708. internal IntPtr colormap;
  709. internal IntPtr red_max;
  710. internal IntPtr red_mult;
  711. internal IntPtr green_max;
  712. internal IntPtr green_mult;
  713. internal IntPtr blue_max;
  714. internal IntPtr blue_mult;
  715. internal IntPtr base_pixel;
  716. internal IntPtr visualid;
  717. internal IntPtr killid;
  718. }
  719. [StructLayout(LayoutKind.Sequential, Pack=2)]
  720. internal struct XColor {
  721. internal IntPtr pixel;
  722. internal ushort red;
  723. internal ushort green;
  724. internal ushort blue;
  725. internal byte flags;
  726. internal byte pad;
  727. }
  728. internal enum Atom {
  729. AnyPropertyType = 0,
  730. XA_PRIMARY = 1,
  731. XA_SECONDARY = 2,
  732. XA_ARC = 3,
  733. XA_ATOM = 4,
  734. XA_BITMAP = 5,
  735. XA_CARDINAL = 6,
  736. XA_COLORMAP = 7,
  737. XA_CURSOR = 8,
  738. XA_CUT_BUFFER0 = 9,
  739. XA_CUT_BUFFER1 = 10,
  740. XA_CUT_BUFFER2 = 11,
  741. XA_CUT_BUFFER3 = 12,
  742. XA_CUT_BUFFER4 = 13,
  743. XA_CUT_BUFFER5 = 14,
  744. XA_CUT_BUFFER6 = 15,
  745. XA_CUT_BUFFER7 = 16,
  746. XA_DRAWABLE = 17,
  747. XA_FONT = 18,
  748. XA_INTEGER = 19,
  749. XA_PIXMAP = 20,
  750. XA_POINT = 21,
  751. XA_RECTANGLE = 22,
  752. XA_RESOURCE_MANAGER = 23,
  753. XA_RGB_COLOR_MAP = 24,
  754. XA_RGB_BEST_MAP = 25,
  755. XA_RGB_BLUE_MAP = 26,
  756. XA_RGB_DEFAULT_MAP = 27,
  757. XA_RGB_GRAY_MAP = 28,
  758. XA_RGB_GREEN_MAP = 29,
  759. XA_RGB_RED_MAP = 30,
  760. XA_STRING = 31,
  761. XA_VISUALID = 32,
  762. XA_WINDOW = 33,
  763. XA_WM_COMMAND = 34,
  764. XA_WM_HINTS = 35,
  765. XA_WM_CLIENT_MACHINE = 36,
  766. XA_WM_ICON_NAME = 37,
  767. XA_WM_ICON_SIZE = 38,
  768. XA_WM_NAME = 39,
  769. XA_WM_NORMAL_HINTS = 40,
  770. XA_WM_SIZE_HINTS = 41,
  771. XA_WM_ZOOM_HINTS = 42,
  772. XA_MIN_SPACE = 43,
  773. XA_NORM_SPACE = 44,
  774. XA_MAX_SPACE = 45,
  775. XA_END_SPACE = 46,
  776. XA_SUPERSCRIPT_X = 47,
  777. XA_SUPERSCRIPT_Y = 48,
  778. XA_SUBSCRIPT_X = 49,
  779. XA_SUBSCRIPT_Y = 50,
  780. XA_UNDERLINE_POSITION = 51,
  781. XA_UNDERLINE_THICKNESS = 52,
  782. XA_STRIKEOUT_ASCENT = 53,
  783. XA_STRIKEOUT_DESCENT = 54,
  784. XA_ITALIC_ANGLE = 55,
  785. XA_X_HEIGHT = 56,
  786. XA_QUAD_WIDTH = 57,
  787. XA_WEIGHT = 58,
  788. XA_POINT_SIZE = 59,
  789. XA_RESOLUTION = 60,
  790. XA_COPYRIGHT = 61,
  791. XA_NOTICE = 62,
  792. XA_FONT_NAME = 63,
  793. XA_FAMILY_NAME = 64,
  794. XA_FULL_NAME = 65,
  795. XA_CAP_HEIGHT = 66,
  796. XA_WM_CLASS = 67,
  797. XA_WM_TRANSIENT_FOR = 68,
  798. XA_LAST_PREDEFINED = 68
  799. }
  800. [StructLayout(LayoutKind.Sequential)]
  801. internal struct XScreen {
  802. internal IntPtr ext_data;
  803. internal IntPtr display;
  804. internal IntPtr root;
  805. internal int width;
  806. internal int height;
  807. internal int mwidth;
  808. internal int mheight;
  809. internal int ndepths;
  810. internal IntPtr depths;
  811. internal int root_depth;
  812. internal IntPtr root_visual;
  813. internal IntPtr default_gc;
  814. internal IntPtr cmap;
  815. internal IntPtr white_pixel;
  816. internal IntPtr black_pixel;
  817. internal int max_maps;
  818. internal int min_maps;
  819. internal int backing_store;
  820. internal bool save_unders;
  821. internal IntPtr root_input_mask;
  822. }
  823. [Flags]
  824. internal enum ChangeWindowFlags {
  825. CWX = 1<<0,
  826. CWY = 1<<1,
  827. CWWidth = 1<<2,
  828. CWHeight = 1<<3,
  829. CWBorderWidth = 1<<4,
  830. CWSibling = 1<<5,
  831. CWStackMode = 1<<6
  832. }
  833. internal enum StackMode {
  834. Above = 0,
  835. Below = 1,
  836. TopIf = 2,
  837. BottomIf = 3,
  838. Opposite = 4
  839. }
  840. [StructLayout(LayoutKind.Sequential)]
  841. internal struct XWindowChanges {
  842. internal int x;
  843. internal int y;
  844. internal int width;
  845. internal int height;
  846. internal int border_width;
  847. internal IntPtr sibling;
  848. internal StackMode stack_mode;
  849. }
  850. [Flags]
  851. internal enum ColorFlags {
  852. DoRed = 1<<0,
  853. DoGreen = 1<<1,
  854. DoBlue = 1<<2
  855. }
  856. internal enum NotifyMode {
  857. NotifyNormal = 0,
  858. NotifyGrab = 1,
  859. NotifyUngrab = 2
  860. }
  861. internal enum NotifyDetail {
  862. NotifyAncestor = 0,
  863. NotifyVirtual = 1,
  864. NotifyInferior = 2,
  865. NotifyNonlinear = 3,
  866. NotifyNonlinearVirtual = 4,
  867. NotifyPointer = 5,
  868. NotifyPointerRoot = 6,
  869. NotifyDetailNone = 7
  870. }
  871. [StructLayout(LayoutKind.Sequential)]
  872. internal struct MotifWmHints {
  873. internal IntPtr flags;
  874. internal IntPtr functions;
  875. internal IntPtr decorations;
  876. internal IntPtr input_mode;
  877. internal IntPtr status;
  878. }
  879. [Flags]
  880. internal enum MotifFlags {
  881. Functions = 1,
  882. Decorations = 2,
  883. InputMode = 4,
  884. Status = 8
  885. }
  886. [Flags]
  887. internal enum MotifFunctions {
  888. All = 0x01,
  889. Resize = 0x02,
  890. Move = 0x04,
  891. Minimize = 0x08,
  892. Maximize = 0x10,
  893. Close = 0x20
  894. }
  895. [Flags]
  896. internal enum MotifDecorations {
  897. All = 0x01,
  898. Border = 0x02,
  899. ResizeH = 0x04,
  900. Title = 0x08,
  901. Menu = 0x10,
  902. Minimize = 0x20,
  903. Maximize = 0x40,
  904. }
  905. [Flags]
  906. internal enum MotifInputMode {
  907. Modeless = 0,
  908. ApplicationModal = 1,
  909. SystemModal = 2,
  910. FullApplicationMondal = 3
  911. }
  912. internal enum KeyMasks {
  913. ShiftMask = (1 << 0),
  914. LockMask = (1 << 1),
  915. ControlMask = (1 << 2)
  916. }
  917. [StructLayout (LayoutKind.Sequential)]
  918. internal struct XModifierKeymap {
  919. public int max_keypermod;
  920. public IntPtr modifiermap;
  921. }
  922. internal enum PropertyMode {
  923. Replace = 0,
  924. Prepend = 1,
  925. Append = 2
  926. }
  927. [StructLayout (LayoutKind.Sequential)]
  928. internal struct XKeyBoardState {
  929. int key_click_percent;
  930. int bell_percent;
  931. uint bell_pitch, bell_duration;
  932. IntPtr led_mask;
  933. int global_auto_repeat;
  934. AutoRepeats auto_repeats;
  935. [StructLayout (LayoutKind.Explicit)]
  936. struct AutoRepeats {
  937. [FieldOffset (0)]
  938. byte first;
  939. [FieldOffset (31)]
  940. byte last;
  941. }
  942. }
  943. [Flags]
  944. internal enum GCFunction {
  945. GCFunction = 1<<0,
  946. GCPlaneMask = 1<<1,
  947. GCForeground = 1<<2,
  948. GCBackground = 1<<3,
  949. GCLineWidth = 1<<4,
  950. GCLineStyle = 1<<5,
  951. GCCapStyle = 1<<6,
  952. GCJoinStyle = 1<<7,
  953. GCFillStyle = 1<<8,
  954. GCFillRule = 1<<9,
  955. GCTile = 1<<10,
  956. GCStipple = 1<<11,
  957. GCTileStipXOrigin = 1<<12,
  958. GCTileStipYOrigin = 1<<13,
  959. GCFont = 1<<14,
  960. GCSubwindowMode = 1<<15,
  961. GCGraphicsExposures = 1<<16,
  962. GCClipXOrigin = 1<<17,
  963. GCClipYOrigin = 1<<18,
  964. GCClipMask = 1<<19,
  965. GCDashOffset = 1<<20,
  966. GCDashList = 1<<21,
  967. GCArcMode = 1<<22
  968. }
  969. internal enum GCJoinStyle {
  970. JoinMiter = 0,
  971. JoinRound = 1,
  972. JoinBevel = 2
  973. }
  974. internal enum GCLineStyle {
  975. LineSolid = 0,
  976. LineOnOffDash = 1,
  977. LineDoubleDash = 2
  978. }
  979. internal enum GCCapStyle {
  980. CapNotLast = 0,
  981. CapButt = 1,
  982. CapRound = 2,
  983. CapProjecting = 3
  984. }
  985. internal enum GCFillStyle {
  986. FillSolid = 0,
  987. FillTiled = 1,
  988. FillStippled = 2,
  989. FillOpaqueStppled = 3
  990. }
  991. internal enum GCFillRule {
  992. EvenOddRule = 0,
  993. WindingRule = 1
  994. }
  995. internal enum GCArcMode {
  996. ArcChord = 0,
  997. ArcPieSlice = 1
  998. }
  999. internal enum GCSubwindowMode {
  1000. ClipByChildren = 0,
  1001. IncludeInferiors = 1
  1002. }
  1003. [StructLayout (LayoutKind.Sequential)]
  1004. internal struct XGCValues {
  1005. internal GXFunction function;
  1006. internal IntPtr plane_mask;
  1007. internal IntPtr foreground;
  1008. internal IntPtr background;
  1009. internal int line_width;
  1010. internal GCLineStyle line_style;
  1011. internal GCCapStyle cap_style;
  1012. internal GCJoinStyle join_style;
  1013. internal GCFillStyle fill_style;
  1014. internal GCFillRule fill_rule;
  1015. internal GCArcMode arc_mode;
  1016. internal IntPtr tile;
  1017. internal IntPtr stipple;
  1018. internal int ts_x_origin;
  1019. internal int ts_y_origin;
  1020. internal IntPtr font;
  1021. internal GCSubwindowMode subwindow_mode;
  1022. internal bool graphics_exposures;
  1023. internal int clip_x_origin;
  1024. internal int clib_y_origin;
  1025. internal IntPtr clip_mask;
  1026. internal int dash_offset;
  1027. internal byte dashes;
  1028. }
  1029. internal enum GXFunction {
  1030. GXclear = 0x0, /* 0 */
  1031. GXand = 0x1, /* src AND dst */
  1032. GXandReverse = 0x2, /* src AND NOT dst */
  1033. GXcopy = 0x3, /* src */
  1034. GXandInverted = 0x4, /* NOT src AND dst */
  1035. GXnoop = 0x5, /* dst */
  1036. GXxor = 0x6, /* src XOR dst */
  1037. GXor = 0x7, /* src OR dst */
  1038. GXnor = 0x8, /* NOT src AND NOT dst */
  1039. GXequiv = 0x9, /* NOT src XOR dst */
  1040. GXinvert = 0xa, /* NOT dst */
  1041. GXorReverse = 0xb, /* src OR NOT dst */
  1042. GXcopyInverted = 0xc, /* NOT src */
  1043. GXorInverted = 0xd, /* NOT src OR dst */
  1044. GXnand = 0xe, /* NOT src OR NOT dst */
  1045. GXset = 0xf /* 1 */
  1046. }
  1047. internal enum NetWindowManagerState {
  1048. Remove = 0,
  1049. Add = 1,
  1050. Toggle = 2
  1051. }
  1052. internal enum RevertTo {
  1053. None = 0,
  1054. PointerRoot = 1,
  1055. Parent = 2
  1056. }
  1057. internal enum MapState {
  1058. IsUnmapped = 0,
  1059. IsUnviewable = 1,
  1060. IsViewable = 2
  1061. }
  1062. }