libx11 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/bin/generate-constants +92 -0
  3. data/bin/generate-functions +64 -0
  4. data/bin/generate-structs +103 -0
  5. data/bin/typesym.rb +50 -0
  6. data/example/window_manager.rb +10 -14
  7. data/lib/libx11/version.rb +1 -1
  8. data/lib/libx11/x.rb +573 -132
  9. data/lib/libx11/xlib.rb +463 -28
  10. data/lib/libx11/xlib/depth.rb +11 -0
  11. data/lib/libx11/xlib/screen.rb +28 -0
  12. data/lib/libx11/xlib/screen_format.rb +12 -0
  13. data/lib/libx11/xlib/visual.rb +16 -0
  14. data/lib/libx11/xlib/{xany_event.rb → x_any_event.rb} +1 -1
  15. data/lib/libx11/xlib/x_arc.rb +14 -0
  16. data/lib/libx11/xlib/{xbutton_event.rb → x_button_event.rb} +2 -2
  17. data/lib/libx11/xlib/x_char2b.rb +10 -0
  18. data/lib/libx11/xlib/x_char_struct.rb +14 -0
  19. data/lib/libx11/xlib/{xcirculate_event.rb → x_circulate_event.rb} +1 -1
  20. data/lib/libx11/xlib/{xcirculate_request_event.rb → x_circulate_request_event.rb} +2 -2
  21. data/lib/libx11/xlib/{xclient_message_event.rb → x_client_message_event.rb} +0 -0
  22. data/lib/libx11/xlib/x_color.rb +14 -0
  23. data/lib/libx11/xlib/{xcolormap_event.rb → x_colormap_event.rb} +2 -2
  24. data/lib/libx11/xlib/{xconfigure_event.rb → x_configure_event.rb} +2 -2
  25. data/lib/libx11/xlib/{xconfigure_request_event.rb → x_configure_request_event.rb} +2 -2
  26. data/lib/libx11/xlib/{xcreate_window_event.rb → x_create_window_event.rb} +2 -2
  27. data/lib/libx11/xlib/{xcrossing_event.rb → x_crossing_event.rb} +4 -4
  28. data/lib/libx11/xlib/{xdestroy_window_event.rb → x_destroy_window_event.rb} +1 -1
  29. data/lib/libx11/xlib/x_edata_object.rb +14 -0
  30. data/lib/libx11/xlib/{xerror_event.rb → x_error_event.rb} +0 -0
  31. data/lib/libx11/xlib/{xevent.rb → x_event.rb} +34 -34
  32. data/lib/libx11/xlib/{xexpose_event.rb → x_expose_event.rb} +1 -1
  33. data/lib/libx11/xlib/x_ext_codes.rb +12 -0
  34. data/lib/libx11/xlib/{xfocus_change_event.rb → x_focus_change_event.rb} +2 -2
  35. data/lib/libx11/xlib/x_font_prop.rb +10 -0
  36. data/lib/libx11/xlib/x_font_set_extents.rb +10 -0
  37. data/lib/libx11/xlib/x_font_struct.rb +24 -0
  38. data/lib/libx11/xlib/{xgeneric_event.rb → x_generic_event.rb} +0 -0
  39. data/lib/libx11/xlib/{xgeneric_event_cookie.rb → x_generic_event_cookie.rb} +1 -1
  40. data/lib/libx11/xlib/{xgraphics_expose_event.rb → x_graphics_expose_event.rb} +1 -2
  41. data/lib/libx11/xlib/{xgravity_event.rb → x_gravity_event.rb} +1 -1
  42. data/lib/libx11/xlib/x_host_address.rb +11 -0
  43. data/lib/libx11/xlib/x_key_event.rb +23 -0
  44. data/lib/libx11/xlib/x_keyboard_control.rb +16 -0
  45. data/lib/libx11/xlib/x_keyboard_state.rb +15 -0
  46. data/lib/libx11/xlib/{xkeymap_event.rb → x_keymap_event.rb} +1 -1
  47. data/lib/libx11/xlib/{xmap_event.rb → x_map_event.rb} +2 -2
  48. data/lib/libx11/xlib/x_map_request_event.rb +14 -0
  49. data/lib/libx11/xlib/{xmapping_event.rb → x_mapping_event.rb} +1 -1
  50. data/lib/libx11/xlib/x_modifier_keymap.rb +10 -0
  51. data/lib/libx11/xlib/{xmotion_event.rb → x_motion_event.rb} +2 -2
  52. data/lib/libx11/xlib/{xno_expose_event.rb → x_no_expose_event.rb} +1 -1
  53. data/lib/libx11/xlib/x_pixmap_format_values.rb +11 -0
  54. data/lib/libx11/xlib/x_point.rb +10 -0
  55. data/lib/libx11/xlib/{xproperty_event.rb → x_property_event.rb} +1 -1
  56. data/lib/libx11/xlib/x_rectangle.rb +12 -0
  57. data/lib/libx11/xlib/{xreparent_event.rb → x_reparent_event.rb} +2 -2
  58. data/lib/libx11/xlib/{xresize_request_event.rb → x_resize_request_event.rb} +1 -1
  59. data/lib/libx11/xlib/x_segment.rb +12 -0
  60. data/lib/libx11/xlib/{xselection_clear_event.rb → x_selection_clear_event.rb} +1 -1
  61. data/lib/libx11/xlib/{xselection_event.rb → x_selection_event.rb} +1 -1
  62. data/lib/libx11/xlib/{xselection_request_event.rb → x_selection_request_event.rb} +1 -1
  63. data/lib/libx11/xlib/x_server_interpreted_address.rb +12 -0
  64. data/lib/libx11/xlib/x_set_window_attributes.rb +23 -0
  65. data/lib/libx11/xlib/x_text_item.rb +12 -0
  66. data/lib/libx11/xlib/x_text_item16.rb +12 -0
  67. data/lib/libx11/xlib/x_time_coord.rb +11 -0
  68. data/lib/libx11/xlib/{xunmap_event.rb → x_unmap_event.rb} +2 -2
  69. data/lib/libx11/xlib/{xvisibility_event.rb → x_visibility_event.rb} +1 -1
  70. data/lib/libx11/xlib/x_window_attributes.rb +31 -0
  71. data/lib/libx11/xlib/x_window_changes.rb +15 -0
  72. data/lib/libx11/xlib/xgc_values.rb +31 -0
  73. data/lib/libx11/xlib/xic_callback.rb +10 -0
  74. data/lib/libx11/xlib/xim_callback.rb +10 -0
  75. data/lib/libx11/xlib/xim_styles.rb +10 -0
  76. data/lib/libx11/xlib/xim_values_list.rb +10 -0
  77. data/lib/libx11/xlib/xmb_text_item.rb +12 -0
  78. data/lib/libx11/xlib/xom_char_set_list.rb +10 -0
  79. data/lib/libx11/xlib/xom_font_info.rb +11 -0
  80. data/lib/libx11/xlib/xom_orientation.rb +10 -0
  81. data/lib/libx11/xlib/xwc_text_item.rb +12 -0
  82. data/libx11.gemspec +2 -1
  83. metadata +105 -49
  84. data/lib/libx11/xlib/xkey_event.rb +0 -23
  85. data/lib/libx11/xlib/xmap_request_event.rb +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c49e109fc312f647725083299111726a4b292933
4
- data.tar.gz: 7b2ac5739d3882da1e39c27fabb740c85fac86e8
3
+ metadata.gz: 854819b1ec364d4bbfcb3df95e7e7b33ef05cc8e
4
+ data.tar.gz: b375827e9805d96cd316cd4e51306e52fb3fd61d
5
5
  SHA512:
6
- metadata.gz: 52182f830e5d16b2aae4502a3a20e606fef47728fcb8891cac63404f16876c4cda6599b48b714d54afa3022ac4ca715de839bdefd6e01f85762c2d260249d2d6
7
- data.tar.gz: 9ae4c30c81d5c0f0aeea07033779a2a30d7899e843c7235ae06457dac0fa4e03e55d0cccb8e11261259dd7eb62291d8633877601b9484fab5be7cdeccf915495
6
+ metadata.gz: 9e08a4440c2dce4a1e00923181ebb039070d6883b0413d244cea19f88b926c32d80883f211875f2fe9337d527b6f6eca9e74cba44c0ecc1b9f982816bd704fa3
7
+ data.tar.gz: 9fe9991a6b16c20d734feadf30d7c81f97598d27da732b887bf0806273c0b909b57163486dde20860707860bbd41de7e2ae58b64d3e23ddbcf5ad6185f82e9f3
@@ -0,0 +1,92 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+
5
+ target = ARGV[0]
6
+ abort "'#{target}' does not exist" unless File.exist?(target)
7
+
8
+ source = File.read(target).split("\n")[109..714].join("\n")
9
+ source = source.gsub(%r[key/button], 'key button')
10
+ parts = source.split("\n\n")
11
+
12
+ class ConstGenerator
13
+ def initialize(parts)
14
+ @parts = parts
15
+ @entities = []
16
+ end
17
+
18
+ def write
19
+ @parts.each do |part|
20
+ inject_part(part)
21
+ end
22
+ source = <<~PREFIX + @entities.join("\n\n") + "\n" + <<~SUFFIX
23
+ module LibX11
24
+ module X
25
+ PREFIX
26
+ end
27
+ end
28
+ SUFFIX
29
+ File.write('lib/libx11/x.rb', source)
30
+ end
31
+
32
+ private
33
+
34
+ def inject_part(part)
35
+ entity = convert_part(part)
36
+ @entities << entity.gsub(/^/, ' ' * 4)
37
+ end
38
+
39
+ def convert_part(part)
40
+ part = part.strip
41
+ case part
42
+ when %r[\A/\*+ ?\n.*\n \*+/\z]m
43
+ part.gsub(/^../, '#').sub(/\/\z/, '')
44
+ when %r[\A/\* .+ \*/\z]m
45
+ part.gsub(/^/, '# ')
46
+ when %r[\A#ifndef None\n.+\n#endif\z]m
47
+ _, line = part.match(%r[\A#ifndef None\n(.+)\n#endif\z]m).to_a
48
+ convert_line(line)
49
+ when %r[\A#define[ \t]]
50
+ part = part.gsub(%r{/\*([^/]+)\*/}m) { '/*' + $1.gsub("\n", '').gsub("\t", '') + '*/' }
51
+ part.split("\n").map { |line| convert_line(line) }.join("\n")
52
+ when %r[\A/\*[^/]+\*/\n#define]
53
+ _, comment, rest = part.match(%r[\A(/\*[^/]+\*/)\n(#define.+)\z]m).to_a
54
+ "#{comment.gsub(/^/, '# ')}\n#{rest.split("\n").map {|l| convert_line(l)}.join("\n")}"
55
+ else
56
+ abort "Unprocessible entity:\n'#{part}'"
57
+ end
58
+ end
59
+
60
+ def convert_line(line)
61
+ case line
62
+ when %r{\A#define [^ ]+ +[^ \t]+\t/\* [^/]+ \*/\z}
63
+ _, const, spaces, value, comment = line.match(%r{\A#define ([^ ]+)( +)([^ \t]+)\t/\* ([^/]+) \*/\z}).to_a
64
+ "#{const}#{spaces}= #{convert_value(value)} # #{comment}"
65
+ when %r{\A#define [^ ]+\t+[^ ]+ *\z}
66
+ _, const, spaces, value = line.match(%r{\A#define ([^ ]+)(\t+)([^ ]+) *\z}).to_a
67
+ "#{const}#{spaces.gsub("\t", ' ')}= #{convert_value(value)}"
68
+ when %r{\A#define[\t ][^ \t]+[\t ]+[^\t ]+[\t ]+/\*[^/]+\*/\z}
69
+ _, const, spaces, value, comment = line.match(%r{\A#define[\t ]([^ \t]+)([\t ]+)([^\t ]+)[\t ]+/\*([^/]+)\*/\z}).to_a
70
+ "#{const}#{spaces.gsub("\t", ' ')}= #{convert_value(value)} # #{comment}"
71
+ when %r{\A[\t ]+\z}
72
+ "\n"
73
+ when %r{\A/\* .+ \*/\z}
74
+ _, comment = line.match(%r{\A/\* (.+) \*/\z}).to_a
75
+ "# #{comment}"
76
+ when %r{\A/\*\*.+\*\*/\z}
77
+ _, comment = line.match(%r{\A/\*(\*.+\*)\*/\z}).to_a
78
+ "# #{comment}"
79
+ when %r{\A#define [^ ]+( +)[^ ]+\z}
80
+ _, const, spaces, value = line.match(%r{\A#define ([^ ]+)( +)([^ ]+)\z}).to_a
81
+ "#{const}#{spaces}= #{convert_value(value)}"
82
+ else
83
+ abort "Unprocessible line:\n#{line.inspect}"
84
+ end
85
+ end
86
+
87
+ def convert_value(value)
88
+ value.gsub('0L', '0').gsub('1L', '1').gsub('(int)', '')
89
+ end
90
+ end
91
+
92
+ ConstGenerator.new(parts).write
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'strscan'
5
+ require_relative 'typesym'
6
+
7
+ target = ARGV[0]
8
+ abort "'#{target}' does not exist" unless File.exist?(target)
9
+
10
+ source = File.read(target)
11
+ decls = source.scan(/extern [^\n]+ [^ ]+ ?\([^\(\)]+\);/m)
12
+
13
+ class FFIGenerator
14
+ BLOCKING_FUNCTIONS = %w[XSync XNextEvent]
15
+
16
+ def initialize(decls)
17
+ @decls = decls
18
+ end
19
+
20
+ def print_ffi
21
+ @decls.each do |decl|
22
+ puts ffi_by_decl(decl)
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def preprocess(decl)
29
+ decl.gsub(/#if NeedWidePrototypes\n[^\n]+\n#else\n([^\n]+)\n#endif\n/m, '\1' << "\n")
30
+ end
31
+
32
+ def ffi_by_decl(decl)
33
+ if decl == 'extern Bool XSupportsLocale (void);'
34
+ return 'attach_function :XSupportsLocale, [], :bool'
35
+ end
36
+
37
+ definition, *params = preprocess(decl).split("\n")
38
+ params.delete_at(-1)
39
+ _, type, _, func = definition.match(/\Aextern ((unsigned )?[^ ]+ \**)([^ ]+) ?\(\z/).to_a
40
+
41
+ param_syms = params.map { |param| typesym(param_to_type(param))}
42
+ param_syms = [] if param_syms == [':void']
43
+
44
+ ffi = "attach_function :#{func}, [#{param_syms.join(', ')}], #{typesym(type.strip)}"
45
+ ffi.concat(', blocking: true') if BLOCKING_FUNCTIONS.include?(func)
46
+ ffi
47
+ rescue => e
48
+ puts
49
+ puts e.backtrace.join("\n")
50
+ abort "Failed to parse!:\n\n#{decl}\n\n#{e.message}"
51
+ end
52
+
53
+ def typesym(type)
54
+ Typesym.typesym(type)
55
+ end
56
+
57
+ def param_to_type(param)
58
+ s = StringScanner.new(param)
59
+ s.scan(/ +/)
60
+ s.scan_until(/(,|\/\*|\z)/).sub(/(,|\/\*)/, '').sub(/ ?_Xconst ?/, '').strip
61
+ end
62
+ end
63
+
64
+ FFIGenerator.new(decls).print_ffi
@@ -0,0 +1,103 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'active_support'
5
+ require 'active_support/core_ext'
6
+ require_relative 'typesym'
7
+
8
+ target = ARGV[0]
9
+ abort "'#{target}' does not exist" unless File.exist?(target)
10
+
11
+ source = File.read(target)
12
+ structs = source.scan(/typedef struct {[^{}]+} [^ ]+;/m)
13
+
14
+ class FFIWriter
15
+ def initialize(structs)
16
+ @structs = structs
17
+ end
18
+
19
+ def write_ffis
20
+ @structs.each do |struct|
21
+ write_ffi(struct)
22
+ end
23
+ end
24
+
25
+ private
26
+
27
+ def write_ffi(struct)
28
+ str = drop_comments(struct)
29
+ str = preprocess(str)
30
+ _, params, name = str.match(%r[typedef struct {([^{}]+)} ([^ ;]+);]m).to_a
31
+
32
+ result = source_prefix(name) + source_body(params) + source_suffix
33
+ File.write("lib/libx11/xlib/#{name.underscore}.rb", result)
34
+ end
35
+
36
+ def source_prefix(name)
37
+ <<~PREFIX
38
+ module LibX11
39
+ module Xlib
40
+ class #{name} < FFI::Struct
41
+ layout(
42
+ PREFIX
43
+ end
44
+
45
+ def source_body(params)
46
+ params = params.gsub(%r[/\*[^/]+\*/]m, '')
47
+ lines = params.strip.split("\n").map(&:strip)
48
+ lines = expand_multiple_vars(lines).reject(&:empty?)
49
+ layouts = lines.map do |line|
50
+ line = line.gsub(/\t/, ' ')
51
+ if line =~ /\[\d+\]/
52
+ _, type, var, num = line.match(/\A([^ ]+) ([^\*\[]+)\[(\d+)\]/).to_a
53
+ [":#{var}", "[:#{type}, #{num}]"]
54
+ else
55
+ _, type, var = line.match(/\A(.+ \**)([^ *]+);/).to_a
56
+ [":#{var}", Typesym.typesym(type.strip)]
57
+ end
58
+ end
59
+ build_layout(layouts)
60
+ end
61
+
62
+ def source_suffix
63
+ <<~SUFFIX
64
+ )
65
+ end
66
+ end
67
+ end
68
+ SUFFIX
69
+ end
70
+
71
+ def expand_multiple_vars(lines)
72
+ [].tap do |result|
73
+ lines.each do |line|
74
+ if line =~ /, /
75
+ first, *rest = line.split(', ')
76
+ _, type, var = first.match(/\A(.+ \**)([^ *]+)\z/).to_a
77
+ [var, *rest].each do |name|
78
+ result << "#{type}#{name.sub(/;\z/, '')};"
79
+ end
80
+ else
81
+ result << line
82
+ end
83
+ end
84
+ end
85
+ end
86
+
87
+ def drop_comments(str)
88
+ str.gsub(%r[/\*[^/\*]+\*/], '')
89
+ end
90
+
91
+ def build_layout(layouts)
92
+ max = layouts.map(&:first).map(&:length).max
93
+ layouts.map do |var, type|
94
+ "#{' ' * 8}#{var},#{' ' * (max - var.length)} #{type},"
95
+ end.join("\n").concat("\n")
96
+ end
97
+
98
+ def preprocess(str)
99
+ str.gsub(/#if defined\(__cplusplus\) \|\| defined\(c_plusplus\)\n[^\n]+\n#else\n([^\n]+)\n#endif\n/m, '\1' << "\n")
100
+ end
101
+ end
102
+
103
+ FFIWriter.new(structs).write_ffis
@@ -0,0 +1,50 @@
1
+ module Typesym
2
+ def self.typesym(type)
3
+ type = type.gsub(/ +\*\z/, '*').gsub(/ +\*\*\z/, '**')
4
+ case type
5
+ when 'Display*', 'XKeyEvent*', 'XEvent*', 'XMappingEvent*',
6
+ 'XGenericEventCookie*', 'Depth*', 'XFontProp*'
7
+ type.sub(/ ?\*\z/, '').concat('.ptr')
8
+ when 'XFontStruct*', 'XTimeCoord*', 'XModifierKeymap*', 'Visual*', 'XImage*',
9
+ 'XColor*', 'XGCValues*', 'XSetWindowAttributes*', 'XHostAddress*', 'Screen*',
10
+ 'XExtCodes*', 'XExtData*', 'XPixmapFormatValues*', 'XWindowChanges*',
11
+ 'XKeyboardControl*', 'XArc*', 'XChar2b*', 'XPoint*', 'XRectangle*', 'XSegment*',
12
+ 'XTextItem*', 'XTextItem16*', 'XKeyboardState*', 'XWindowAttributes*',
13
+ 'XCharStruct*', 'XOM', 'XOC', 'XFontSet', 'XFontSetExtents*',
14
+ 'XmbTextItem*', 'XwcTextItem*', 'XIM', 'XIC', 'XKeyPressedEvent*', 'XOrientation*',
15
+ 'XIMStyle*'
16
+ ':pointer'
17
+ when 'XID', 'Window', 'Time', 'KeyCode', 'int', 'Status', 'Drawable', 'void', 'Atom',
18
+ 'KeySym', 'Colormap', 'Pixmap', 'Cursor', 'Font', 'GC', 'GContext', 'long',
19
+ 'VisualID', 'XPointer', 'XIDProc', 'XConnectionWatchProc', 'XErrorHandler',
20
+ 'XIOErrorHandler', 'char', 'short', 'XOrientation', 'XIMProc', 'XICProc'
21
+ ":#{type}"
22
+ when 'char*', 'const char*'
23
+ ':string'
24
+ when 'int*', 'Atom*', 'char**', 'Colormap*', 'XFontStruct**', 'Bool*', 'KeySym*',
25
+ 'char **', 'XExtData**', 'Atom**', 'char***', 'Window**', 'Window*', 'struct _XExtData**',
26
+ 'unsigned long*', 'unsigned char*', 'void*', 'unsigned int*', 'unsigned char**', 'Pixmap*',
27
+ 'struct _XrmHashBucketRec*', 'XFontStruct***', 'wchar_t*', 'Status*', 'int**', 'wchar_t', 'char [32]',
28
+ 'KeyCode*'
29
+ ':pointer'
30
+ when 'unsigned int'
31
+ ':uint'
32
+ when 'unsigned long'
33
+ ':ulong'
34
+ when 'unsigned short'
35
+ ':ushort'
36
+ when 'Bool'
37
+ ':bool'
38
+ when 'unsigned char', 'unsigned'
39
+ ':uchar'
40
+ when 'XEDataObject'
41
+ 'XEDataObject.by_value'
42
+ when 'struct _XDisplay*'
43
+ 'Display.ptr'
44
+ when 'XRectangle', 'XCharStruct'
45
+ type
46
+ else
47
+ raise "Unprocessible type name: '#{type}'"
48
+ end
49
+ end
50
+ end
@@ -10,17 +10,15 @@ class XServer
10
10
 
11
11
  def self.bind_events(display, window, event_mask)
12
12
  wm_detected = false
13
- LibX11::Xlib.XSetErrorHandler(
14
- FFI::Function.new(:int, [LibX11::Xlib::Display.ptr, LibX11::Xlib::XErrorEvent.ptr]) do |display, error|
15
- if error[:error_code] == LibX11::X::BadAccess
16
- wm_detected = true
17
- end
18
- 0
13
+ LibX11::Xlib.XSetErrorHandler -> (display, error) do
14
+ if error[:error_code] == LibX11::X::BadAccess
15
+ wm_detected = true
19
16
  end
20
- )
17
+ 0
18
+ end
21
19
 
22
20
  LibX11::Xlib.XSelectInput(display, window, event_mask)
23
- LibX11::Xlib.XSync(display, 0)
21
+ LibX11::Xlib.XSync(display, false)
24
22
 
25
23
  if wm_detected
26
24
  abort 'Another window manager detected!'
@@ -40,12 +38,10 @@ XServer.with_connection do |display|
40
38
  LibX11::X::SubstructureNotifyMask,
41
39
  )
42
40
 
43
- LibX11::Xlib.XSetErrorHandler(
44
- FFI::Function.new(:int, [LibX11::Xlib::Display.ptr, LibX11::Xlib::XErrorEvent.ptr]) do |display, error|
45
- $stderr.puts "Error detected: (error_code=#{error[:error_code]})"
46
- 0
47
- end
48
- )
41
+ LibX11::Xlib.XSetErrorHandler -> (display, error) do
42
+ $stderr.puts "Error detected: (error_code=#{error[:error_code]})"
43
+ 0
44
+ end
49
45
 
50
46
  loop do
51
47
  event = LibX11::Xlib::XEvent.new
@@ -1,3 +1,3 @@
1
1
  module LibX11
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -4,145 +4,586 @@ module LibX11
4
4
  # RESERVED RESOURCE AND CONSTANT DEFINITIONS
5
5
  #****************************************************************
6
6
 
7
- None = 0 # universal null resource or null atom
8
- ParentRelative = 1 # background pixmap in CreateWindow and ChangeWindowAttributes
9
- CopyFromParent = 0 # border pixmap in CreateWindow and ChangeWindowAttributes special
10
- # VisualID and special window class passed to CreateWindow
11
- PointerWindow = 0 # destination window in SendEvent
12
- InputFocus = 1 # destination window in SendEvent
13
- PointerRoot = 1 # focus window in SetInputFocus
14
- AnyPropertyType = 0 # special Atom, passed to GetProperty
15
- AnyKey = 0 # special Key Code, passed to GrabKey
16
- AnyButton = 0 # special Button Code, passed to GrabButton
17
- AllTemporary = 0 # special Resource ID passed to KillClient
18
- CurrentTime = 0 # special Time
19
- NoSymbol = 0 # special KeySym
20
-
21
- #***************************************************************
7
+ None = 0 # universal null resource or null atom
8
+
9
+ ParentRelative = 1 # background pixmap in CreateWindow and ChangeWindowAttributes
10
+
11
+ CopyFromParent = 0 # border pixmap in CreateWindow and ChangeWindowAttributes special VisualID and special window class passed to CreateWindow
12
+
13
+ PointerWindow = 0 # destination window in SendEvent
14
+ InputFocus = 1 # destination window in SendEvent
15
+
16
+ PointerRoot = 1 # focus window in SetInputFocus
17
+
18
+ AnyPropertyType = 0 # special Atom, passed to GetProperty
19
+
20
+ AnyKey = 0 # special Key Code, passed to GrabKey
21
+
22
+ AnyButton = 0 # special Button Code, passed to GrabButton
23
+
24
+ AllTemporary = 0 # special Resource ID passed to KillClient
25
+
26
+ CurrentTime = 0 # special Time
27
+
28
+ NoSymbol = 0 # special KeySym
29
+
30
+ #****************************************************************
22
31
  # EVENT DEFINITIONS
23
- #***************************************************************
24
-
25
- # Input Event Masks. Used as event-mask window attribute and as arguments
26
- # to Grab requests. Not to be confused with event names.
27
-
28
- NoEventMask = 0
29
- KeyPressMask = (1<<0)
30
- KeyReleaseMask = (1<<1)
31
- ButtonPressMask = (1<<2)
32
- ButtonReleaseMask = (1<<3)
33
- EnterWindowMask = (1<<4)
34
- LeaveWindowMask = (1<<5)
35
- PointerMotionMask = (1<<6)
36
- PointerMotionHintMask = (1<<7)
37
- Button1MotionMask = (1<<8)
38
- Button2MotionMask = (1<<9)
39
- Button3MotionMask = (1<<10)
40
- Button4MotionMask = (1<<11)
41
- Button5MotionMask = (1<<12)
42
- ButtonMotionMask = (1<<13)
43
- KeymapStateMask = (1<<14)
44
- ExposureMask = (1<<15)
45
- VisibilityChangeMask = (1<<16)
46
- StructureNotifyMask = (1<<17)
47
- ResizeRedirectMask = (1<<18)
48
- SubstructureNotifyMask = (1<<19)
49
- SubstructureRedirectMask = (1<<20)
50
- FocusChangeMask = (1<<21)
51
- PropertyChangeMask = (1<<22)
52
- ColormapChangeMask = (1<<23)
53
- OwnerGrabButtonMask = (1<<24)
54
-
55
- # Event names. Used in "type" field in XEvent structures. Not to be
32
+ #****************************************************************
33
+
34
+ # /* Input Event Masks. Used as event-mask window attribute and as arguments
35
+ # to Grab requests. Not to be confused with event names. */
36
+
37
+ NoEventMask = 0
38
+ KeyPressMask = (1<<0)
39
+ KeyReleaseMask = (1<<1)
40
+ ButtonPressMask = (1<<2)
41
+ ButtonReleaseMask = (1<<3)
42
+ EnterWindowMask = (1<<4)
43
+ LeaveWindowMask = (1<<5)
44
+ PointerMotionMask = (1<<6)
45
+ PointerMotionHintMask = (1<<7)
46
+ Button1MotionMask = (1<<8)
47
+ Button2MotionMask = (1<<9)
48
+ Button3MotionMask = (1<<10)
49
+ Button4MotionMask = (1<<11)
50
+ Button5MotionMask = (1<<12)
51
+ ButtonMotionMask = (1<<13)
52
+ KeymapStateMask = (1<<14)
53
+ ExposureMask = (1<<15)
54
+ VisibilityChangeMask = (1<<16)
55
+ StructureNotifyMask = (1<<17)
56
+ ResizeRedirectMask = (1<<18)
57
+ SubstructureNotifyMask = (1<<19)
58
+ SubstructureRedirectMask = (1<<20)
59
+ FocusChangeMask = (1<<21)
60
+ PropertyChangeMask = (1<<22)
61
+ ColormapChangeMask = (1<<23)
62
+ OwnerGrabButtonMask = (1<<24)
63
+
64
+ # /* Event names. Used in "type" field in XEvent structures. Not to be
56
65
  # confused with event masks above. They start from 2 because 0 and 1
57
- # are reserved in the protocol for errors and replies.
58
-
59
- KeyPress = 2
60
- KeyRelease = 3
61
- ButtonPress = 4
62
- ButtonRelease = 5
63
- MotionNotify = 6
64
- EnterNotify = 7
65
- LeaveNotify = 8
66
- FocusIn = 9
67
- FocusOut = 10
68
- KeymapNotify = 11
69
- Expose = 12
70
- GraphicsExpose = 13
71
- NoExpose = 14
72
- VisibilityNotify = 15
73
- CreateNotify = 16
74
- DestroyNotify = 17
75
- UnmapNotify = 18
76
- MapNotify = 19
77
- MapRequest = 20
78
- ReparentNotify = 21
79
- ConfigureNotify = 22
80
- ConfigureRequest = 23
81
- GravityNotify = 24
82
- ResizeRequest = 25
83
- CirculateNotify = 26
84
- CirculateRequest = 27
85
- PropertyNotify = 28
86
- SelectionClear = 29
87
- SelectionRequest = 30
88
- SelectionNotify = 31
89
- ColormapNotify = 32
90
- ClientMessage = 33
91
- MappingNotify = 34
92
- GenericEvent = 35
93
- LASTEvent = 36
94
-
95
- # Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
96
- # state in various key-, mouse-, and button-related events.
97
-
98
- ShiftMask = (1<<0)
99
- LockMask = (1<<1)
100
- ControlMask = (1<<2)
101
- Mod1Mask = (1<<3)
102
- Mod2Mask = (1<<4)
103
- Mod3Mask = (1<<5)
104
- Mod4Mask = (1<<6)
105
- Mod5Mask = (1<<7)
106
-
107
- # button masks. Used in same manner as Key masks above. Not to be confused
108
- # with button names below.
109
-
110
- Button1Mask = (1<<8)
111
- Button2Mask = (1<<9)
112
- Button3Mask = (1<<10)
113
- Button4Mask = (1<<11)
114
- Button5Mask = (1<<12)
115
- AnyModifier = (1<<15)
116
-
117
- # GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes
118
-
119
- GrabModeSync = 0
120
- GrabModeAsync = 1
66
+ # are reserved in the protocol for errors and replies. */
67
+
68
+ KeyPress = 2
69
+ KeyRelease = 3
70
+ ButtonPress = 4
71
+ ButtonRelease = 5
72
+ MotionNotify = 6
73
+ EnterNotify = 7
74
+ LeaveNotify = 8
75
+ FocusIn = 9
76
+ FocusOut = 10
77
+ KeymapNotify = 11
78
+ Expose = 12
79
+ GraphicsExpose = 13
80
+ NoExpose = 14
81
+ VisibilityNotify = 15
82
+ CreateNotify = 16
83
+ DestroyNotify = 17
84
+ UnmapNotify = 18
85
+ MapNotify = 19
86
+ MapRequest = 20
87
+ ReparentNotify = 21
88
+ ConfigureNotify = 22
89
+ ConfigureRequest = 23
90
+ GravityNotify = 24
91
+ ResizeRequest = 25
92
+ CirculateNotify = 26
93
+ CirculateRequest = 27
94
+ PropertyNotify = 28
95
+ SelectionClear = 29
96
+ SelectionRequest = 30
97
+ SelectionNotify = 31
98
+ ColormapNotify = 32
99
+ ClientMessage = 33
100
+ MappingNotify = 34
101
+ GenericEvent = 35
102
+ LASTEvent = 36 # must be bigger than any event #
103
+
104
+ # /* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
105
+ # state in various key-, mouse-, and button-related events. */
106
+
107
+ ShiftMask = (1<<0)
108
+ LockMask = (1<<1)
109
+ ControlMask = (1<<2)
110
+ Mod1Mask = (1<<3)
111
+ Mod2Mask = (1<<4)
112
+ Mod3Mask = (1<<5)
113
+ Mod4Mask = (1<<6)
114
+ Mod5Mask = (1<<7)
115
+
116
+ # /* modifier names. Used to build a SetModifierMapping request or
117
+ # to read a GetModifierMapping request. These correspond to the
118
+ # masks defined above. */
119
+ ShiftMapIndex = 0
120
+ LockMapIndex = 1
121
+ ControlMapIndex = 2
122
+ Mod1MapIndex = 3
123
+ Mod2MapIndex = 4
124
+ Mod3MapIndex = 5
125
+ Mod4MapIndex = 6
126
+ Mod5MapIndex = 7
127
+
128
+ # /* button masks. Used in same manner as Key masks above. Not to be confused
129
+ # with button names below. */
130
+
131
+ Button1Mask = (1<<8)
132
+ Button2Mask = (1<<9)
133
+ Button3Mask = (1<<10)
134
+ Button4Mask = (1<<11)
135
+ Button5Mask = (1<<12)
136
+
137
+ AnyModifier = (1<<15) # used in GrabButton, GrabKey
138
+
139
+ # /* button names. Used as arguments to GrabButton and as detail in ButtonPress
140
+ # and ButtonRelease events. Not to be confused with button masks above.
141
+ # Note that 0 is already defined above as "AnyButton". */
142
+
143
+ Button1 = 1
144
+ Button2 = 2
145
+ Button3 = 3
146
+ Button4 = 4
147
+ Button5 = 5
148
+
149
+ # /* Notify modes */
150
+
151
+ NotifyNormal = 0
152
+ NotifyGrab = 1
153
+ NotifyUngrab = 2
154
+ NotifyWhileGrabbed = 3
155
+
156
+ NotifyHint = 1 # for MotionNotify events
157
+
158
+
159
+ # Notify detail
160
+
161
+ NotifyAncestor = 0
162
+ NotifyVirtual = 1
163
+ NotifyInferior = 2
164
+ NotifyNonlinear = 3
165
+ NotifyNonlinearVirtual = 4
166
+ NotifyPointer = 5
167
+ NotifyPointerRoot = 6
168
+ NotifyDetailNone = 7
169
+
170
+ # /* Visibility notify */
171
+
172
+ VisibilityUnobscured = 0
173
+ VisibilityPartiallyObscured = 1
174
+ VisibilityFullyObscured = 2
175
+
176
+ # /* Circulation request */
177
+
178
+ PlaceOnTop = 0
179
+ PlaceOnBottom = 1
180
+
181
+ # /* protocol families */
182
+
183
+ FamilyInternet = 0 # IPv4
184
+ FamilyDECnet = 1
185
+ FamilyChaos = 2
186
+ FamilyInternet6 = 6 # IPv6
187
+
188
+ # /* authentication families not tied to a specific protocol */
189
+ FamilyServerInterpreted = 5
190
+
191
+ # /* Property notification */
192
+
193
+ PropertyNewValue = 0
194
+ PropertyDelete = 1
195
+
196
+ # /* Color Map notification */
197
+
198
+ ColormapUninstalled = 0
199
+ ColormapInstalled = 1
200
+
201
+ # /* GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes */
202
+
203
+ GrabModeSync = 0
204
+ GrabModeAsync = 1
205
+
206
+ # /* GrabPointer, GrabKeyboard reply status */
207
+
208
+ GrabSuccess = 0
209
+ AlreadyGrabbed = 1
210
+ GrabInvalidTime = 2
211
+ GrabNotViewable = 3
212
+ GrabFrozen = 4
213
+
214
+ # /* AllowEvents modes */
215
+
216
+ AsyncPointer = 0
217
+ SyncPointer = 1
218
+ ReplayPointer = 2
219
+ AsyncKeyboard = 3
220
+ SyncKeyboard = 4
221
+ ReplayKeyboard = 5
222
+ AsyncBoth = 6
223
+ SyncBoth = 7
224
+
225
+ # /* Used in SetInputFocus, GetInputFocus */
226
+
227
+ RevertToNone = None
228
+ RevertToPointerRoot = PointerRoot
229
+ RevertToParent = 2
121
230
 
122
231
  #****************************************************************
123
232
  # ERROR CODES
124
233
  #****************************************************************
125
234
 
126
- Success = 0
127
- BadRequest = 1
128
- BadValue = 2
129
- BadWindow = 3
130
- BadPixmap = 4
131
- BadAtom = 5
132
- BadCursor = 6
133
- BadFont = 7
134
- BadMatch = 8
135
- BadDrawable = 9
136
- BadAccess = 10
137
- BadAlloc = 11
138
- BadColor = 12
139
- BadGC = 13
140
- BadIDChoice = 14
141
- BadName = 15
142
- BadLength = 16
143
- BadImplementation = 17
144
-
145
- FirstExtensionError = 128
235
+ Success = 0 # everything's okay
236
+ BadRequest = 1 # bad request code
237
+ BadValue = 2 # int parameter out of range
238
+ BadWindow = 3 # parameter not a Window
239
+ BadPixmap = 4 # parameter not a Pixmap
240
+ BadAtom = 5 # parameter not an Atom
241
+ BadCursor = 6 # parameter not a Cursor
242
+ BadFont = 7 # parameter not a Font
243
+ BadMatch = 8 # parameter mismatch
244
+ BadDrawable = 9 # parameter not a Pixmap or Window
245
+ BadAccess = 10 # depending on context: - key button already grabbed - attempt to free an illegal cmap entry - attempt to store into a read-only color map entry. - attempt to modify the access control list from other than the local host.
246
+ BadAlloc = 11 # insufficient resources
247
+ BadColor = 12 # no such colormap
248
+ BadGC = 13 # parameter not a GC
249
+ BadIDChoice = 14 # choice not in range or already used
250
+ BadName = 15 # font or color name doesn't exist
251
+ BadLength = 16 # Request length incorrect
252
+ BadImplementation = 17 # server is defective
253
+
254
+ FirstExtensionError = 128
146
255
  LastExtensionError = 255
256
+
257
+ #****************************************************************
258
+ # WINDOW DEFINITIONS
259
+ #****************************************************************
260
+
261
+ # /* Window classes used by CreateWindow */
262
+ # /* Note that CopyFromParent is already defined as 0 above */
263
+
264
+ InputOutput = 1
265
+ InputOnly = 2
266
+
267
+ # /* Window attributes for CreateWindow and ChangeWindowAttributes */
268
+
269
+ CWBackPixmap = (1<<0)
270
+ CWBackPixel = (1<<1)
271
+ CWBorderPixmap = (1<<2)
272
+ CWBorderPixel = (1<<3)
273
+ CWBitGravity = (1<<4)
274
+ CWWinGravity = (1<<5)
275
+ CWBackingStore = (1<<6)
276
+ CWBackingPlanes = (1<<7)
277
+ CWBackingPixel = (1<<8)
278
+ CWOverrideRedirect = (1<<9)
279
+ CWSaveUnder = (1<<10)
280
+ CWEventMask = (1<<11)
281
+ CWDontPropagate = (1<<12)
282
+ CWColormap = (1<<13)
283
+ CWCursor = (1<<14)
284
+
285
+ # /* ConfigureWindow structure */
286
+
287
+ CWX = (1<<0)
288
+ CWY = (1<<1)
289
+ CWWidth = (1<<2)
290
+ CWHeight = (1<<3)
291
+ CWBorderWidth = (1<<4)
292
+ CWSibling = (1<<5)
293
+ CWStackMode = (1<<6)
294
+
295
+ # /* Bit Gravity */
296
+
297
+ ForgetGravity = 0
298
+ NorthWestGravity = 1
299
+ NorthGravity = 2
300
+ NorthEastGravity = 3
301
+ WestGravity = 4
302
+ CenterGravity = 5
303
+ EastGravity = 6
304
+ SouthWestGravity = 7
305
+ SouthGravity = 8
306
+ SouthEastGravity = 9
307
+ StaticGravity = 10
308
+
309
+ # /* Window gravity + bit gravity above */
310
+
311
+ UnmapGravity = 0
312
+
313
+ # /* Used in CreateWindow for backing-store hint */
314
+
315
+ NotUseful = 0
316
+ WhenMapped = 1
317
+ Always = 2
318
+
319
+ # /* Used in GetWindowAttributes reply */
320
+
321
+ IsUnmapped = 0
322
+ IsUnviewable = 1
323
+ IsViewable = 2
324
+
325
+ # /* Used in ChangeSaveSet */
326
+
327
+ SetModeInsert = 0
328
+ SetModeDelete = 1
329
+
330
+ # /* Used in ChangeCloseDownMode */
331
+
332
+ DestroyAll = 0
333
+ RetainPermanent = 1
334
+ RetainTemporary = 2
335
+
336
+ # /* Window stacking method (in configureWindow) */
337
+
338
+ Above = 0
339
+ Below = 1
340
+ TopIf = 2
341
+ BottomIf = 3
342
+ Opposite = 4
343
+
344
+ # /* Circulation direction */
345
+
346
+ RaiseLowest = 0
347
+ LowerHighest = 1
348
+
349
+ # /* Property modes */
350
+
351
+ PropModeReplace = 0
352
+ PropModePrepend = 1
353
+ PropModeAppend = 2
354
+
355
+ #****************************************************************
356
+ # GRAPHICS DEFINITIONS
357
+ #****************************************************************
358
+
359
+ # /* graphics functions, as in GC.alu */
360
+
361
+ GXclear = 0x0 # 0
362
+ GXand = 0x1 # src AND dst
363
+ GXandReverse = 0x2 # src AND NOT dst
364
+ GXcopy = 0x3 # src
365
+ GXandInverted = 0x4 # NOT src AND dst
366
+ GXnoop = 0x5 # dst
367
+ GXxor = 0x6 # src XOR dst
368
+ GXor = 0x7 # src OR dst
369
+ GXnor = 0x8 # NOT src AND NOT dst
370
+ GXequiv = 0x9 # NOT src XOR dst
371
+ GXinvert = 0xa # NOT dst
372
+ GXorReverse = 0xb # src OR NOT dst
373
+ GXcopyInverted = 0xc # NOT src
374
+ GXorInverted = 0xd # NOT src OR dst
375
+ GXnand = 0xe # NOT src OR NOT dst
376
+ GXset = 0xf # 1
377
+
378
+ # /* LineStyle */
379
+
380
+ LineSolid = 0
381
+ LineOnOffDash = 1
382
+ LineDoubleDash = 2
383
+
384
+ # /* capStyle */
385
+
386
+ CapNotLast = 0
387
+ CapButt = 1
388
+ CapRound = 2
389
+ CapProjecting = 3
390
+
391
+ # /* joinStyle */
392
+
393
+ JoinMiter = 0
394
+ JoinRound = 1
395
+ JoinBevel = 2
396
+
397
+ # /* fillStyle */
398
+
399
+ FillSolid = 0
400
+ FillTiled = 1
401
+ FillStippled = 2
402
+ FillOpaqueStippled = 3
403
+
404
+ # /* fillRule */
405
+
406
+ EvenOddRule = 0
407
+ WindingRule = 1
408
+
409
+ # /* subwindow mode */
410
+
411
+ ClipByChildren = 0
412
+ IncludeInferiors = 1
413
+
414
+ # /* SetClipRectangles ordering */
415
+
416
+ Unsorted = 0
417
+ YSorted = 1
418
+ YXSorted = 2
419
+ YXBanded = 3
420
+
421
+ # /* CoordinateMode for drawing routines */
422
+
423
+ CoordModeOrigin = 0 # relative to the origin
424
+ CoordModePrevious = 1 # relative to previous point
425
+
426
+ # /* Polygon shapes */
427
+
428
+ Complex = 0 # paths may intersect
429
+ Nonconvex = 1 # no paths intersect, but not convex
430
+ Convex = 2 # wholly convex
431
+
432
+ # /* Arc modes for PolyFillArc */
433
+
434
+ ArcChord = 0 # join endpoints of arc
435
+ ArcPieSlice = 1 # join endpoints to center of arc
436
+
437
+ # /* GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into
438
+ # GC.stateChanges */
439
+
440
+ GCFunction = (1<<0)
441
+ GCPlaneMask = (1<<1)
442
+ GCForeground = (1<<2)
443
+ GCBackground = (1<<3)
444
+ GCLineWidth = (1<<4)
445
+ GCLineStyle = (1<<5)
446
+ GCCapStyle = (1<<6)
447
+ GCJoinStyle = (1<<7)
448
+ GCFillStyle = (1<<8)
449
+ GCFillRule = (1<<9)
450
+ GCTile = (1<<10)
451
+ GCStipple = (1<<11)
452
+ GCTileStipXOrigin = (1<<12)
453
+ GCTileStipYOrigin = (1<<13)
454
+ GCFont = (1<<14)
455
+ GCSubwindowMode = (1<<15)
456
+ GCGraphicsExposures = (1<<16)
457
+ GCClipXOrigin = (1<<17)
458
+ GCClipYOrigin = (1<<18)
459
+ GCClipMask = (1<<19)
460
+ GCDashOffset = (1<<20)
461
+ GCDashList = (1<<21)
462
+ GCArcMode = (1<<22)
463
+
464
+ GCLastBit = 22
465
+ # **************************************************************** * FONTS ****************************************************************
466
+
467
+ # /* used in QueryFont -- draw direction */
468
+
469
+ FontLeftToRight = 0
470
+ FontRightToLeft = 1
471
+
472
+ FontChange = 255
473
+
474
+ #****************************************************************
475
+ # IMAGING
476
+ #****************************************************************
477
+
478
+ # /* ImageFormat -- PutImage, GetImage */
479
+
480
+ XYBitmap = 0 # depth 1, XYFormat
481
+ XYPixmap = 1 # depth == drawable depth
482
+ ZPixmap = 2 # depth == drawable depth
483
+
484
+ #****************************************************************
485
+ # COLOR MAP STUFF
486
+ #****************************************************************
487
+
488
+ # /* For CreateColormap */
489
+
490
+ AllocNone = 0 # create map with no entries
491
+ AllocAll = 1 # allocate entire map writeable
492
+
493
+ # /* Flags used in StoreNamedColor, StoreColors */
494
+
495
+ DoRed = (1<<0)
496
+ DoGreen = (1<<1)
497
+ DoBlue = (1<<2)
498
+
499
+ #****************************************************************
500
+ # CURSOR STUFF
501
+ #****************************************************************
502
+
503
+ # /* QueryBestSize Class */
504
+
505
+ CursorShape = 0 # largest size that can be displayed
506
+ TileShape = 1 # size tiled fastest
507
+ StippleShape = 2 # size stippled fastest
508
+
509
+ #****************************************************************
510
+ # KEYBOARD/POINTER STUFF
511
+ #****************************************************************
512
+
513
+ AutoRepeatModeOff = 0
514
+ AutoRepeatModeOn = 1
515
+ AutoRepeatModeDefault = 2
516
+
517
+ LedModeOff = 0
518
+ LedModeOn = 1
519
+
520
+ # /* masks for ChangeKeyboardControl */
521
+
522
+ KBKeyClickPercent = (1<<0)
523
+ KBBellPercent = (1<<1)
524
+ KBBellPitch = (1<<2)
525
+ KBBellDuration = (1<<3)
526
+ KBLed = (1<<4)
527
+ KBLedMode = (1<<5)
528
+ KBKey = (1<<6)
529
+ KBAutoRepeatMode = (1<<7)
530
+
531
+ MappingSuccess = 0
532
+ MappingBusy = 1
533
+ MappingFailed = 2
534
+
535
+ MappingModifier = 0
536
+ MappingKeyboard = 1
537
+ MappingPointer = 2
538
+
539
+ #****************************************************************
540
+ # SCREEN SAVER STUFF
541
+ #****************************************************************
542
+
543
+ DontPreferBlanking = 0
544
+ PreferBlanking = 1
545
+ DefaultBlanking = 2
546
+
547
+ DisableScreenSaver = 0
548
+ DisableScreenInterval = 0
549
+
550
+ DontAllowExposures = 0
551
+ AllowExposures = 1
552
+ DefaultExposures = 2
553
+
554
+ # /* for ForceScreenSaver */
555
+
556
+ ScreenSaverReset = 0
557
+ ScreenSaverActive = 1
558
+
559
+ #****************************************************************
560
+ # HOSTS AND CONNECTIONS
561
+ #****************************************************************
562
+
563
+ # /* for ChangeHosts */
564
+
565
+ HostInsert = 0
566
+ HostDelete = 1
567
+
568
+ # /* for ChangeAccessControl */
569
+
570
+ EnableAccess = 1
571
+ DisableAccess = 0
572
+
573
+ # /* Display classes used in opening the connection
574
+ # * Note that the statically allocated ones are even numbered and the
575
+ # * dynamically changeable ones are odd numbered */
576
+
577
+ StaticGray = 0
578
+ GrayScale = 1
579
+ StaticColor = 2
580
+ PseudoColor = 3
581
+ TrueColor = 4
582
+ DirectColor = 5
583
+
584
+ # /* Byte order used in imageByteOrder and bitmapBitOrder */
585
+
586
+ LSBFirst = 0
587
+ MSBFirst = 1
147
588
  end
148
589
  end