libx11 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
- }