libx11 0.0.4 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -5
  3. data/.travis.yml +1 -1
  4. data/Rakefile +1 -9
  5. data/example/aliases.rb +2 -0
  6. data/example/create_window.rb +15 -13
  7. data/example/window_manager.rb +30 -22
  8. data/lib/libx11.rb +4 -2
  9. data/lib/libx11/keysymdef.rb +2272 -0
  10. data/lib/libx11/version.rb +1 -1
  11. data/lib/libx11/x.rb +148 -0
  12. data/lib/libx11/xlib.rb +42 -0
  13. data/lib/libx11/xlib/display.rb +52 -0
  14. data/lib/libx11/xlib/xany_event.rb +13 -0
  15. data/lib/libx11/xlib/xbutton_event.rb +23 -0
  16. data/lib/libx11/xlib/xcirculate_event.rb +15 -0
  17. data/lib/libx11/xlib/xcirculate_request_event.rb +15 -0
  18. data/lib/libx11/xlib/xclient_message_event.rb +24 -0
  19. data/lib/libx11/xlib/xcolormap_event.rb +16 -0
  20. data/lib/libx11/xlib/xconfigure_event.rb +21 -0
  21. data/lib/libx11/xlib/xconfigure_request_event.rb +22 -0
  22. data/lib/libx11/xlib/xcreate_window_event.rb +20 -0
  23. data/lib/libx11/xlib/xcrossing_event.rb +25 -0
  24. data/lib/libx11/xlib/xdestroy_window_event.rb +14 -0
  25. data/lib/libx11/xlib/xerror_event.rb +15 -0
  26. data/lib/libx11/xlib/xevent.rb +77 -0
  27. data/lib/libx11/xlib/xexpose_event.rb +18 -0
  28. data/lib/libx11/xlib/xfocus_change_event.rb +15 -0
  29. data/lib/libx11/xlib/xgeneric_event.rb +14 -0
  30. data/lib/libx11/xlib/xgeneric_event_cookie.rb +16 -0
  31. data/lib/libx11/xlib/xgraphics_expose_event.rb +21 -0
  32. data/lib/libx11/xlib/xgravity_event.rb +16 -0
  33. data/lib/libx11/xlib/xkey_event.rb +23 -0
  34. data/lib/libx11/xlib/xkeymap_event.rb +14 -0
  35. data/lib/libx11/xlib/xmap_event.rb +15 -0
  36. data/lib/libx11/xlib/xmap_request_event.rb +18 -0
  37. data/lib/libx11/xlib/xmapping_event.rb +16 -0
  38. data/lib/libx11/xlib/xmotion_event.rb +23 -0
  39. data/lib/libx11/xlib/xno_expose_event.rb +15 -0
  40. data/lib/libx11/xlib/xproperty_event.rb +16 -0
  41. data/lib/libx11/xlib/xreparent_event.rb +18 -0
  42. data/lib/libx11/xlib/xresize_request_event.rb +15 -0
  43. data/lib/libx11/xlib/xselection_clear_event.rb +15 -0
  44. data/lib/libx11/xlib/xselection_event.rb +17 -0
  45. data/lib/libx11/xlib/xselection_request_event.rb +18 -0
  46. data/lib/libx11/xlib/xunmap_event.rb +15 -0
  47. data/lib/libx11/xlib/xvisibility_event.rb +14 -0
  48. data/libx11.gemspec +1 -1
  49. metadata +56 -13
  50. data/HACKING.md +0 -14
  51. data/ext/libx11_ruby/constants.c +0 -182
  52. data/ext/libx11_ruby/display.c +0 -197
  53. data/ext/libx11_ruby/extconf.rb +0 -6
  54. data/ext/libx11_ruby/libx11_ruby.c +0 -13
  55. data/ext/libx11_ruby/libx11_ruby.h +0 -14
  56. data/ext/libx11_ruby/window.c +0 -33
  57. data/ext/libx11_ruby/xerror_event.c +0 -104
  58. data/ext/libx11_ruby/xevent.c +0 -134
@@ -0,0 +1,18 @@
1
+ module LibX11
2
+ module Xlib
3
+ class XSelectionRequestEvent < FFI::Struct
4
+ layout(
5
+ :type, :int,
6
+ :serial, :ulong,
7
+ :send_event, :Bool,
8
+ :display, Display.ptr,
9
+ :owner, :Window,
10
+ :requestor, :Window,
11
+ :selection, :Atom,
12
+ :target, :Atom,
13
+ :property, :Atom,
14
+ :time, :Time,
15
+ )
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ module LibX11
2
+ module Xlib
3
+ class XUnmapEvent < FFI::Struct
4
+ layout(
5
+ :type, :int,
6
+ :serial, :ulong,
7
+ :send_event, :Bool,
8
+ :display, Display.ptr,
9
+ :event, :Window,
10
+ :window, :Window,
11
+ :from_configure, :Bool,
12
+ )
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ module LibX11
2
+ module Xlib
3
+ class XVisibilityEvent < FFI::Struct
4
+ layout(
5
+ :type, :int,
6
+ :serial, :ulong,
7
+ :send_event, :Bool,
8
+ :display, Display.ptr,
9
+ :window, :Window,
10
+ :state, :int,
11
+ )
12
+ end
13
+ end
14
+ end
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.bindir = 'exe'
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ['lib']
21
- spec.extensions = ['ext/libx11_ruby/extconf.rb']
22
21
 
22
+ spec.add_dependency 'ffi', '~> 1.9'
23
23
  spec.add_development_dependency 'bundler', '~> 1.11'
24
24
  spec.add_development_dependency 'rake', '~> 10.0'
25
25
  spec.add_development_dependency 'rake-compiler'
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libx11
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-14 00:00:00.000000000 Z
11
+ date: 2016-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ffi
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.9'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.9'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -84,33 +98,62 @@ description: Ruby binding of libx11 mostly for xlib
84
98
  email:
85
99
  - takashikkbn@gmail.com
86
100
  executables: []
87
- extensions:
88
- - ext/libx11_ruby/extconf.rb
101
+ extensions: []
89
102
  extra_rdoc_files: []
90
103
  files:
91
104
  - ".gitignore"
92
105
  - ".rspec"
93
106
  - ".travis.yml"
94
107
  - Gemfile
95
- - HACKING.md
96
108
  - LICENSE.txt
97
109
  - README.md
98
110
  - Rakefile
99
111
  - bin/console
100
112
  - bin/setup
101
113
  - bin/window-manager
114
+ - example/aliases.rb
102
115
  - example/create_window.rb
103
116
  - example/window_manager.rb
104
- - ext/libx11_ruby/constants.c
105
- - ext/libx11_ruby/display.c
106
- - ext/libx11_ruby/extconf.rb
107
- - ext/libx11_ruby/libx11_ruby.c
108
- - ext/libx11_ruby/libx11_ruby.h
109
- - ext/libx11_ruby/window.c
110
- - ext/libx11_ruby/xerror_event.c
111
- - ext/libx11_ruby/xevent.c
112
117
  - lib/libx11.rb
118
+ - lib/libx11/keysymdef.rb
113
119
  - lib/libx11/version.rb
120
+ - lib/libx11/x.rb
121
+ - lib/libx11/xlib.rb
122
+ - lib/libx11/xlib/display.rb
123
+ - lib/libx11/xlib/xany_event.rb
124
+ - lib/libx11/xlib/xbutton_event.rb
125
+ - lib/libx11/xlib/xcirculate_event.rb
126
+ - lib/libx11/xlib/xcirculate_request_event.rb
127
+ - lib/libx11/xlib/xclient_message_event.rb
128
+ - lib/libx11/xlib/xcolormap_event.rb
129
+ - lib/libx11/xlib/xconfigure_event.rb
130
+ - lib/libx11/xlib/xconfigure_request_event.rb
131
+ - lib/libx11/xlib/xcreate_window_event.rb
132
+ - lib/libx11/xlib/xcrossing_event.rb
133
+ - lib/libx11/xlib/xdestroy_window_event.rb
134
+ - lib/libx11/xlib/xerror_event.rb
135
+ - lib/libx11/xlib/xevent.rb
136
+ - lib/libx11/xlib/xexpose_event.rb
137
+ - lib/libx11/xlib/xfocus_change_event.rb
138
+ - lib/libx11/xlib/xgeneric_event.rb
139
+ - lib/libx11/xlib/xgeneric_event_cookie.rb
140
+ - lib/libx11/xlib/xgraphics_expose_event.rb
141
+ - lib/libx11/xlib/xgravity_event.rb
142
+ - lib/libx11/xlib/xkey_event.rb
143
+ - lib/libx11/xlib/xkeymap_event.rb
144
+ - lib/libx11/xlib/xmap_event.rb
145
+ - lib/libx11/xlib/xmap_request_event.rb
146
+ - lib/libx11/xlib/xmapping_event.rb
147
+ - lib/libx11/xlib/xmotion_event.rb
148
+ - lib/libx11/xlib/xno_expose_event.rb
149
+ - lib/libx11/xlib/xproperty_event.rb
150
+ - lib/libx11/xlib/xreparent_event.rb
151
+ - lib/libx11/xlib/xresize_request_event.rb
152
+ - lib/libx11/xlib/xselection_clear_event.rb
153
+ - lib/libx11/xlib/xselection_event.rb
154
+ - lib/libx11/xlib/xselection_request_event.rb
155
+ - lib/libx11/xlib/xunmap_event.rb
156
+ - lib/libx11/xlib/xvisibility_event.rb
114
157
  - libx11.gemspec
115
158
  homepage: https://github.com/k0kubun/libx11-ruby
116
159
  licenses:
data/HACKING.md DELETED
@@ -1,14 +0,0 @@
1
- ## Type definitions
2
-
3
- ```c
4
- typedef unsigned char KeyCode;
5
- typedef unsigned long XID;
6
- typedef XID Window;
7
- typedef XID KeySym;
8
- ```
9
-
10
- ## Macros
11
-
12
- ```
13
- RTEST : Boolean -> Bool
14
- ```
@@ -1,182 +0,0 @@
1
- #include "libx11_ruby.h"
2
- #include <X11/keysym.h>
3
- #include <X11/Xlib.h>
4
-
5
- void
6
- Init_libx11_constants(void)
7
- {
8
- // reserved resource and constant definitions
9
- rb_define_const(rb_mLibX11, "NONE", LONG2NUM(None));
10
- rb_define_const(rb_mLibX11, "PARENT_RELATIVE", LONG2NUM(ParentRelative));
11
- rb_define_const(rb_mLibX11, "COPY_FROM_PARENT", LONG2NUM(CopyFromParent));
12
- rb_define_const(rb_mLibX11, "POINTER_WINDOW", LONG2NUM(PointerWindow));
13
- rb_define_const(rb_mLibX11, "INPUT_FOCUS", LONG2NUM(InputFocus));
14
- rb_define_const(rb_mLibX11, "POINTER_ROOT", LONG2NUM(PointerRoot));
15
- rb_define_const(rb_mLibX11, "ANY_PROPERTY_TYPE", LONG2NUM(AnyPropertyType));
16
- rb_define_const(rb_mLibX11, "ANY_KEY", LONG2NUM(AnyKey));
17
- rb_define_const(rb_mLibX11, "ANY_BUTTON", LONG2NUM(AnyButton));
18
- rb_define_const(rb_mLibX11, "ALL_TEMPORARY", LONG2NUM(AllTemporary));
19
- rb_define_const(rb_mLibX11, "CURRENT_TIME", LONG2NUM(CurrentTime));
20
- rb_define_const(rb_mLibX11, "NO_SYMBOL", LONG2NUM(NoSymbol));
21
-
22
- // input event masks
23
- rb_define_const(rb_mLibX11, "NO_EVENT_MASK", LONG2NUM(NoEventMask));
24
- rb_define_const(rb_mLibX11, "KEY_PRESS_MASK", LONG2NUM(KeyPressMask));
25
- rb_define_const(rb_mLibX11, "KEY_RELEASE_MASK", LONG2NUM(KeyReleaseMask));
26
- rb_define_const(rb_mLibX11, "BUTTON_PRESS_MASK", LONG2NUM(ButtonPressMask));
27
- rb_define_const(rb_mLibX11, "BUTTON_RELEASE_MASK", LONG2NUM(ButtonReleaseMask));
28
- rb_define_const(rb_mLibX11, "ENTER_WINDOW_MASK", LONG2NUM(EnterWindowMask));
29
- rb_define_const(rb_mLibX11, "LEAVE_WINDOW_MASK", LONG2NUM(LeaveWindowMask));
30
- rb_define_const(rb_mLibX11, "POINTER_MOTION_MASK", LONG2NUM(PointerMotionMask));
31
- rb_define_const(rb_mLibX11, "POINTER_MOTION_HINT_MASK", LONG2NUM(PointerMotionHintMask));
32
- rb_define_const(rb_mLibX11, "BUTTON1_MOTION_MASK", LONG2NUM(Button1MotionMask));
33
- rb_define_const(rb_mLibX11, "BUTTON2_MOTION_MASK", LONG2NUM(Button2MotionMask));
34
- rb_define_const(rb_mLibX11, "BUTTON3_MOTION_MASK", LONG2NUM(Button3MotionMask));
35
- rb_define_const(rb_mLibX11, "BUTTON4_MOTION_MASK", LONG2NUM(Button4MotionMask));
36
- rb_define_const(rb_mLibX11, "BUTTON5_MOTION_MASK", LONG2NUM(Button5MotionMask));
37
- rb_define_const(rb_mLibX11, "BUTTON_MOTION_MASK", LONG2NUM(ButtonMotionMask));
38
- rb_define_const(rb_mLibX11, "KEYMAP_STATE_MASK", LONG2NUM(KeymapStateMask));
39
- rb_define_const(rb_mLibX11, "EXPOSURE_MASK", LONG2NUM(ExposureMask));
40
- rb_define_const(rb_mLibX11, "VISIBILITY_CHANGE_MASK", LONG2NUM(VisibilityChangeMask));
41
- rb_define_const(rb_mLibX11, "STRUCTURE_NOTIFY_MASK", LONG2NUM(StructureNotifyMask));
42
- rb_define_const(rb_mLibX11, "RESIZE_REDIRECT_MASK", LONG2NUM(ResizeRedirectMask));
43
- rb_define_const(rb_mLibX11, "SUBSTRUCTURE_NOTIFY_MASK", LONG2NUM(SubstructureNotifyMask));
44
- rb_define_const(rb_mLibX11, "SUBSTRUCTURE_REDIRECT_MASK", LONG2NUM(SubstructureRedirectMask));
45
- rb_define_const(rb_mLibX11, "FOCUS_CHANGE_MASK", LONG2NUM(FocusChangeMask));
46
- rb_define_const(rb_mLibX11, "PROPERTY_CHANGE_MASK", LONG2NUM(PropertyChangeMask));
47
- rb_define_const(rb_mLibX11, "COLORMAP_CHANGE_MASK", LONG2NUM(ColormapChangeMask));
48
- rb_define_const(rb_mLibX11, "OWNER_GRAB_BUTTON_MASK", LONG2NUM(OwnerGrabButtonMask));
49
-
50
- // button masks
51
- rb_define_const(rb_mLibX11, "BUTTON1_MASK", LONG2NUM(Button1Mask));
52
- rb_define_const(rb_mLibX11, "BUTTON2_MASK", LONG2NUM(Button2Mask));
53
- rb_define_const(rb_mLibX11, "BUTTON3_MASK", LONG2NUM(Button3Mask));
54
- rb_define_const(rb_mLibX11, "BUTTON4_MASK", LONG2NUM(Button4Mask));
55
- rb_define_const(rb_mLibX11, "BUTTON5_MASK", LONG2NUM(Button5Mask));
56
- rb_define_const(rb_mLibX11, "ANY_MODIFIER", LONG2NUM(AnyModifier));
57
-
58
- // tty functions keys
59
- rb_define_const(rb_mLibX11, "XK_BackSpace", LONG2NUM(XK_BackSpace));
60
- rb_define_const(rb_mLibX11, "XK_Tab", LONG2NUM(XK_Tab));
61
- rb_define_const(rb_mLibX11, "XK_Linefeed", LONG2NUM(XK_Linefeed));
62
- rb_define_const(rb_mLibX11, "XK_Clear", LONG2NUM(XK_Clear));
63
- rb_define_const(rb_mLibX11, "XK_Return", LONG2NUM(XK_Return));
64
- rb_define_const(rb_mLibX11, "XK_Pause", LONG2NUM(XK_Pause));
65
- rb_define_const(rb_mLibX11, "XK_Scroll_Lock", LONG2NUM(XK_Scroll_Lock));
66
- rb_define_const(rb_mLibX11, "XK_Sys_Req", LONG2NUM(XK_Sys_Req));
67
- rb_define_const(rb_mLibX11, "XK_Escape", LONG2NUM(XK_Escape));
68
- rb_define_const(rb_mLibX11, "XK_Delete", LONG2NUM(XK_Delete));
69
-
70
- // latin 1
71
- rb_define_const(rb_mLibX11, "XK_space", LONG2NUM(XK_space));
72
- rb_define_const(rb_mLibX11, "XK_exclam", LONG2NUM(XK_exclam));
73
- rb_define_const(rb_mLibX11, "XK_quotedbl", LONG2NUM(XK_quotedbl));
74
- rb_define_const(rb_mLibX11, "XK_numbersign", LONG2NUM(XK_numbersign));
75
- rb_define_const(rb_mLibX11, "XK_dollar", LONG2NUM(XK_dollar));
76
- rb_define_const(rb_mLibX11, "XK_percent", LONG2NUM(XK_percent));
77
- rb_define_const(rb_mLibX11, "XK_ampersand", LONG2NUM(XK_ampersand));
78
- rb_define_const(rb_mLibX11, "XK_apostrophe", LONG2NUM(XK_apostrophe));
79
- rb_define_const(rb_mLibX11, "XK_quoteright", LONG2NUM(XK_quoteright));
80
- rb_define_const(rb_mLibX11, "XK_parenleft", LONG2NUM(XK_parenleft));
81
- rb_define_const(rb_mLibX11, "XK_parenright", LONG2NUM(XK_parenright));
82
- rb_define_const(rb_mLibX11, "XK_asterisk", LONG2NUM(XK_asterisk));
83
- rb_define_const(rb_mLibX11, "XK_plus", LONG2NUM(XK_plus));
84
- rb_define_const(rb_mLibX11, "XK_comma", LONG2NUM(XK_comma));
85
- rb_define_const(rb_mLibX11, "XK_minus", LONG2NUM(XK_minus));
86
- rb_define_const(rb_mLibX11, "XK_period", LONG2NUM(XK_period));
87
- rb_define_const(rb_mLibX11, "XK_slash", LONG2NUM(XK_slash));
88
- rb_define_const(rb_mLibX11, "XK_0", LONG2NUM(XK_0));
89
- rb_define_const(rb_mLibX11, "XK_1", LONG2NUM(XK_1));
90
- rb_define_const(rb_mLibX11, "XK_2", LONG2NUM(XK_2));
91
- rb_define_const(rb_mLibX11, "XK_3", LONG2NUM(XK_3));
92
- rb_define_const(rb_mLibX11, "XK_4", LONG2NUM(XK_4));
93
- rb_define_const(rb_mLibX11, "XK_5", LONG2NUM(XK_5));
94
- rb_define_const(rb_mLibX11, "XK_6", LONG2NUM(XK_6));
95
- rb_define_const(rb_mLibX11, "XK_7", LONG2NUM(XK_7));
96
- rb_define_const(rb_mLibX11, "XK_8", LONG2NUM(XK_8));
97
- rb_define_const(rb_mLibX11, "XK_9", LONG2NUM(XK_9));
98
- rb_define_const(rb_mLibX11, "XK_colon", LONG2NUM(XK_colon));
99
- rb_define_const(rb_mLibX11, "XK_semicolon", LONG2NUM(XK_semicolon));
100
- rb_define_const(rb_mLibX11, "XK_less", LONG2NUM(XK_less));
101
- rb_define_const(rb_mLibX11, "XK_equal", LONG2NUM(XK_equal));
102
- rb_define_const(rb_mLibX11, "XK_greater", LONG2NUM(XK_greater));
103
- rb_define_const(rb_mLibX11, "XK_question", LONG2NUM(XK_question));
104
- rb_define_const(rb_mLibX11, "XK_at", LONG2NUM(XK_at));
105
- rb_define_const(rb_mLibX11, "XK_A", LONG2NUM(XK_A));
106
- rb_define_const(rb_mLibX11, "XK_B", LONG2NUM(XK_B));
107
- rb_define_const(rb_mLibX11, "XK_C", LONG2NUM(XK_C));
108
- rb_define_const(rb_mLibX11, "XK_D", LONG2NUM(XK_D));
109
- rb_define_const(rb_mLibX11, "XK_E", LONG2NUM(XK_E));
110
- rb_define_const(rb_mLibX11, "XK_F", LONG2NUM(XK_F));
111
- rb_define_const(rb_mLibX11, "XK_G", LONG2NUM(XK_G));
112
- rb_define_const(rb_mLibX11, "XK_H", LONG2NUM(XK_H));
113
- rb_define_const(rb_mLibX11, "XK_I", LONG2NUM(XK_I));
114
- rb_define_const(rb_mLibX11, "XK_J", LONG2NUM(XK_J));
115
- rb_define_const(rb_mLibX11, "XK_K", LONG2NUM(XK_K));
116
- rb_define_const(rb_mLibX11, "XK_L", LONG2NUM(XK_L));
117
- rb_define_const(rb_mLibX11, "XK_M", LONG2NUM(XK_M));
118
- rb_define_const(rb_mLibX11, "XK_N", LONG2NUM(XK_N));
119
- rb_define_const(rb_mLibX11, "XK_O", LONG2NUM(XK_O));
120
- rb_define_const(rb_mLibX11, "XK_P", LONG2NUM(XK_P));
121
- rb_define_const(rb_mLibX11, "XK_Q", LONG2NUM(XK_Q));
122
- rb_define_const(rb_mLibX11, "XK_R", LONG2NUM(XK_R));
123
- rb_define_const(rb_mLibX11, "XK_S", LONG2NUM(XK_S));
124
- rb_define_const(rb_mLibX11, "XK_T", LONG2NUM(XK_T));
125
- rb_define_const(rb_mLibX11, "XK_U", LONG2NUM(XK_U));
126
- rb_define_const(rb_mLibX11, "XK_V", LONG2NUM(XK_V));
127
- rb_define_const(rb_mLibX11, "XK_W", LONG2NUM(XK_W));
128
- rb_define_const(rb_mLibX11, "XK_X", LONG2NUM(XK_X));
129
- rb_define_const(rb_mLibX11, "XK_Y", LONG2NUM(XK_Y));
130
- rb_define_const(rb_mLibX11, "XK_Z", LONG2NUM(XK_Z));
131
- rb_define_const(rb_mLibX11, "XK_bracketleft", LONG2NUM(XK_bracketleft));
132
- rb_define_const(rb_mLibX11, "XK_backslash", LONG2NUM(XK_backslash));
133
- rb_define_const(rb_mLibX11, "XK_bracketright", LONG2NUM(XK_bracketright));
134
- rb_define_const(rb_mLibX11, "XK_asciicircum", LONG2NUM(XK_asciicircum));
135
- rb_define_const(rb_mLibX11, "XK_underscore", LONG2NUM(XK_underscore));
136
- rb_define_const(rb_mLibX11, "XK_grave", LONG2NUM(XK_grave));
137
- rb_define_const(rb_mLibX11, "XK_quoteleft", LONG2NUM(XK_quoteleft));
138
- rb_define_const(rb_mLibX11, "XK_a", LONG2NUM(XK_a));
139
- rb_define_const(rb_mLibX11, "XK_b", LONG2NUM(XK_b));
140
- rb_define_const(rb_mLibX11, "XK_c", LONG2NUM(XK_c));
141
- rb_define_const(rb_mLibX11, "XK_d", LONG2NUM(XK_d));
142
- rb_define_const(rb_mLibX11, "XK_e", LONG2NUM(XK_e));
143
- rb_define_const(rb_mLibX11, "XK_f", LONG2NUM(XK_f));
144
- rb_define_const(rb_mLibX11, "XK_g", LONG2NUM(XK_g));
145
- rb_define_const(rb_mLibX11, "XK_h", LONG2NUM(XK_h));
146
- rb_define_const(rb_mLibX11, "XK_i", LONG2NUM(XK_i));
147
- rb_define_const(rb_mLibX11, "XK_j", LONG2NUM(XK_j));
148
- rb_define_const(rb_mLibX11, "XK_k", LONG2NUM(XK_k));
149
- rb_define_const(rb_mLibX11, "XK_l", LONG2NUM(XK_l));
150
- rb_define_const(rb_mLibX11, "XK_m", LONG2NUM(XK_m));
151
- rb_define_const(rb_mLibX11, "XK_n", LONG2NUM(XK_n));
152
- rb_define_const(rb_mLibX11, "XK_o", LONG2NUM(XK_o));
153
- rb_define_const(rb_mLibX11, "XK_p", LONG2NUM(XK_p));
154
- rb_define_const(rb_mLibX11, "XK_q", LONG2NUM(XK_q));
155
- rb_define_const(rb_mLibX11, "XK_r", LONG2NUM(XK_r));
156
- rb_define_const(rb_mLibX11, "XK_s", LONG2NUM(XK_s));
157
- rb_define_const(rb_mLibX11, "XK_t", LONG2NUM(XK_t));
158
- rb_define_const(rb_mLibX11, "XK_u", LONG2NUM(XK_u));
159
- rb_define_const(rb_mLibX11, "XK_v", LONG2NUM(XK_v));
160
- rb_define_const(rb_mLibX11, "XK_w", LONG2NUM(XK_w));
161
- rb_define_const(rb_mLibX11, "XK_x", LONG2NUM(XK_x));
162
- rb_define_const(rb_mLibX11, "XK_y", LONG2NUM(XK_y));
163
- rb_define_const(rb_mLibX11, "XK_z", LONG2NUM(XK_z));
164
- rb_define_const(rb_mLibX11, "XK_braceleft", LONG2NUM(XK_braceleft));
165
- rb_define_const(rb_mLibX11, "XK_bar", LONG2NUM(XK_bar));
166
- rb_define_const(rb_mLibX11, "XK_braceright", LONG2NUM(XK_braceright));
167
- rb_define_const(rb_mLibX11, "XK_asciitilde", LONG2NUM(XK_asciitilde));
168
-
169
- // GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes
170
- rb_define_const(rb_mLibX11, "GRAB_MODE_SYNC", INT2FIX(GrabModeSync));
171
- rb_define_const(rb_mLibX11, "GRAB_MODE_ASYNC", INT2FIX(GrabModeAsync));
172
-
173
- // Key masks
174
- rb_define_const(rb_mLibX11, "SHIFT_MASK", LONG2NUM(ShiftMask));
175
- rb_define_const(rb_mLibX11, "LOCK_MASK", LONG2NUM(LockMask));
176
- rb_define_const(rb_mLibX11, "CONTROL_MASK", LONG2NUM(ControlMask));
177
- rb_define_const(rb_mLibX11, "MOD1_MASK", LONG2NUM(Mod1Mask));
178
- rb_define_const(rb_mLibX11, "MOD2_MASK", LONG2NUM(Mod2Mask));
179
- rb_define_const(rb_mLibX11, "MOD3_MASK", LONG2NUM(Mod3Mask));
180
- rb_define_const(rb_mLibX11, "MOD4_MASK", LONG2NUM(Mod4Mask));
181
- rb_define_const(rb_mLibX11, "MOD5_MASK", LONG2NUM(Mod5Mask));
182
- }
@@ -1,197 +0,0 @@
1
- #include "libx11_ruby.h"
2
- #include <X11/Xlib.h>
3
-
4
- VALUE rb_cDisplay;
5
-
6
- static size_t
7
- display_dsize(const void *arg)
8
- {
9
- const Display *display = arg;
10
- return sizeof(display);
11
- }
12
-
13
- const rb_data_type_t display_type = {
14
- .wrap_struct_name = "libx11_display",
15
- .function = {
16
- .dmark = NULL,
17
- .dfree = NULL,
18
- .dsize = display_dsize,
19
- .reserved = { NULL, NULL },
20
- },
21
- .parent = NULL,
22
- .data = NULL,
23
- .flags = RUBY_TYPED_FREE_IMMEDIATELY,
24
- };
25
-
26
- Display*
27
- get_display_struct(VALUE display_object)
28
- {
29
- Display *display;
30
- TypedData_Get_Struct(display_object, Display, &display_type, display);
31
- return display;
32
- }
33
-
34
- /*
35
- * Xlib XOpenDisplay
36
- */
37
- static VALUE
38
- rb_libx11_xopen_display(int argc, VALUE *argv, RB_UNUSED_VAR(VALUE self))
39
- {
40
- Display *display;
41
-
42
- if (argc == 0) {
43
- display = XOpenDisplay(NULL);
44
- } else {
45
- VALUE display_name;
46
-
47
- rb_check_arity(argc, 1, 1);
48
- rb_scan_args(argc, argv, "10", &display_name);
49
- Check_Type(display_name, T_STRING);
50
- display = XOpenDisplay(RSTRING_PTR(display_name));
51
- }
52
- if (display == NULL) return Qnil;
53
- return TypedData_Wrap_Struct(rb_cDisplay, &display_type, display);
54
- }
55
-
56
- /*
57
- * Xlib XCloseDisplay
58
- */
59
- static VALUE
60
- rb_libx11_xclose_display(VALUE self, VALUE obj)
61
- {
62
- return INT2FIX(XCloseDisplay(get_display_struct(obj)));
63
- }
64
-
65
- /*
66
- * Xlib DefaultScreen
67
- */
68
- static VALUE
69
- rb_display_default_screen(VALUE self)
70
- {
71
- return INT2NUM(DefaultScreen(get_display_struct(self)));
72
- }
73
-
74
- /*
75
- * #define ConnectionNumber(dpy) (((_XPrivDisplay)dpy)->fd)
76
- */
77
- static VALUE
78
- rb_display_connection_number(VALUE self)
79
- {
80
- return INT2NUM(ConnectionNumber(get_display_struct(self)));
81
- }
82
-
83
- /*
84
- * Xlib XDisplayString
85
- */
86
- static VALUE
87
- rb_display_xdisplay_string(VALUE self)
88
- {
89
- return rb_str_new_cstr(XDisplayString(get_display_struct(self)));
90
- }
91
-
92
- /*
93
- * Xlib DefaultRootWindow
94
- */
95
- static VALUE
96
- rb_display_default_root_window(VALUE self)
97
- {
98
- return ULONG2NUM(DefaultRootWindow(get_display_struct(self)));
99
- }
100
-
101
- /*
102
- * Xlib BlackPixel
103
- */
104
- static VALUE
105
- rb_display_black_pixel(VALUE self, VALUE screen_obj)
106
- {
107
- return ULONG2NUM(BlackPixel(get_display_struct(self), FIX2INT(screen_obj)));
108
- }
109
-
110
- /*
111
- * Xlib WhitePixel
112
- */
113
- static VALUE
114
- rb_display_white_pixel(VALUE self, VALUE screen_obj)
115
- {
116
- return ULONG2NUM(WhitePixel(get_display_struct(self), FIX2INT(screen_obj)));
117
- }
118
-
119
- /*
120
- * Xlib XSelectInput
121
- */
122
- static VALUE
123
- rb_display_xselect_input(VALUE self, VALUE window, VALUE event_mask)
124
- {
125
- return INT2NUM(XSelectInput(get_display_struct(self), NUM2ULONG(window), NUM2LONG(event_mask)));
126
- }
127
-
128
- /*
129
- * Xlib XMapWindow
130
- */
131
- static VALUE
132
- rb_display_xmap_window(VALUE self, VALUE window)
133
- {
134
- return INT2NUM(XMapWindow(get_display_struct(self), NUM2ULONG(window)));
135
- }
136
-
137
- /*
138
- * Xlib XSync
139
- */
140
- static VALUE
141
- rb_display_xsync(VALUE self, VALUE discard)
142
- {
143
- return INT2NUM(XSync(get_display_struct(self), RTEST(discard)));
144
- }
145
-
146
- /*
147
- * Xlib XGrabKey
148
- */
149
- static VALUE
150
- rb_display_xgrab_key(VALUE self, VALUE keycode, VALUE modifiers, VALUE grab_window,
151
- VALUE owner_events, VALUE pointer_mode, VALUE keyboard_mode)
152
- {
153
- int ret = XGrabKey(get_display_struct(self), NUM2INT(keycode), NUM2UINT(modifiers), NUM2ULONG(grab_window),
154
- RTEST(owner_events), NUM2INT(pointer_mode), NUM2INT(keyboard_mode));
155
- return INT2NUM(ret);
156
- }
157
-
158
- /*
159
- * Xlib XUngrabKey
160
- */
161
- static VALUE
162
- rb_display_xungrab_key(VALUE self, VALUE keycode, VALUE modifiers, VALUE grab_window)
163
- {
164
- int ret = XUngrabKey(get_display_struct(self), NUM2INT(keycode), NUM2UINT(modifiers), NUM2ULONG(grab_window));
165
- return INT2NUM(ret);
166
- }
167
-
168
- /*
169
- * Xlib XKeysymToKeycode
170
- */
171
- static VALUE
172
- rb_display_xkeysym_to_keycode(VALUE self, VALUE keysym)
173
- {
174
- unsigned char keycode = XKeysymToKeycode(get_display_struct(self), NUM2ULONG(keysym));
175
- return INT2FIX((int)keycode);
176
- }
177
-
178
- void
179
- Init_libx11_display(void)
180
- {
181
- rb_define_singleton_method(rb_mLibX11, "xopen_display", rb_libx11_xopen_display, -1);
182
- rb_define_singleton_method(rb_mLibX11, "xclose_display", rb_libx11_xclose_display, 1);
183
-
184
- rb_cDisplay = rb_define_class_under(rb_mLibX11, "Display", rb_cData);
185
- rb_define_method(rb_cDisplay, "default_root_window", rb_display_default_root_window, 0);
186
- rb_define_method(rb_cDisplay, "default_screen", rb_display_default_screen, 0);
187
- rb_define_method(rb_cDisplay, "connection_number", rb_display_connection_number, 0);
188
- rb_define_method(rb_cDisplay, "xdisplay_string", rb_display_xdisplay_string, 0);
189
- rb_define_method(rb_cDisplay, "black_pixel", rb_display_black_pixel, 1);
190
- rb_define_method(rb_cDisplay, "white_pixel", rb_display_white_pixel, 1);
191
- rb_define_method(rb_cDisplay, "xmap_window", rb_display_xmap_window, 1);
192
- rb_define_method(rb_cDisplay, "xselect_input", rb_display_xselect_input, 2);
193
- rb_define_method(rb_cDisplay, "xsync", rb_display_xsync, 1);
194
- rb_define_method(rb_cDisplay, "xgrab_key", rb_display_xgrab_key, 6);
195
- rb_define_method(rb_cDisplay, "xungrab_key", rb_display_xungrab_key, 3);
196
- rb_define_method(rb_cDisplay, "xkeysym_to_keycode", rb_display_xkeysym_to_keycode, 1);
197
- }