2
0

X11Structs.cs 28 KB

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