libx11 0.0.3 → 0.0.4
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.
- checksums.yaml +4 -4
- data/ext/libx11_ruby/constants.c +126 -0
- data/ext/libx11_ruby/display.c +29 -62
- data/ext/libx11_ruby/window.c +3 -11
- data/ext/libx11_ruby/xevent.c +40 -10
- data/lib/libx11/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf8a8125c38441de5799294b392a46643be5565f
|
4
|
+
data.tar.gz: 5b74462ab0bfd00512336b07b7f105512d76392b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4df03edffcdeb0d4176d08ea55f18d2a8eb7ec5e8808c095394db07699a27e667483b420ca81e365d4c74b92645553cfcbc73562b0038964c8146786fc604fb
|
7
|
+
data.tar.gz: 298a98dc9ca4512601ae423be92db6a7001316edccfdcffb3cd19a601e949b5f308ef99f1c46eceb0519de07e4c17eeae44e088923fd0372cb42469d94517005
|
data/ext/libx11_ruby/constants.c
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#include "libx11_ruby.h"
|
2
|
+
#include <X11/keysym.h>
|
2
3
|
#include <X11/Xlib.h>
|
3
4
|
|
4
5
|
void
|
@@ -53,4 +54,129 @@ Init_libx11_constants(void)
|
|
53
54
|
rb_define_const(rb_mLibX11, "BUTTON4_MASK", LONG2NUM(Button4Mask));
|
54
55
|
rb_define_const(rb_mLibX11, "BUTTON5_MASK", LONG2NUM(Button5Mask));
|
55
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));
|
56
182
|
}
|
data/ext/libx11_ruby/display.c
CHANGED
@@ -23,6 +23,14 @@ const rb_data_type_t display_type = {
|
|
23
23
|
.flags = RUBY_TYPED_FREE_IMMEDIATELY,
|
24
24
|
};
|
25
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
|
+
|
26
34
|
/*
|
27
35
|
* Xlib XOpenDisplay
|
28
36
|
*/
|
@@ -51,12 +59,7 @@ rb_libx11_xopen_display(int argc, VALUE *argv, RB_UNUSED_VAR(VALUE self))
|
|
51
59
|
static VALUE
|
52
60
|
rb_libx11_xclose_display(VALUE self, VALUE obj)
|
53
61
|
{
|
54
|
-
|
55
|
-
Display *display;
|
56
|
-
|
57
|
-
TypedData_Get_Struct(obj, Display, &display_type, display);
|
58
|
-
ret = XCloseDisplay(display);
|
59
|
-
return INT2FIX(ret);
|
62
|
+
return INT2FIX(XCloseDisplay(get_display_struct(obj)));
|
60
63
|
}
|
61
64
|
|
62
65
|
/*
|
@@ -65,10 +68,16 @@ rb_libx11_xclose_display(VALUE self, VALUE obj)
|
|
65
68
|
static VALUE
|
66
69
|
rb_display_default_screen(VALUE self)
|
67
70
|
{
|
68
|
-
|
71
|
+
return INT2NUM(DefaultScreen(get_display_struct(self)));
|
72
|
+
}
|
69
73
|
|
70
|
-
|
71
|
-
|
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)));
|
72
81
|
}
|
73
82
|
|
74
83
|
/*
|
@@ -77,10 +86,7 @@ rb_display_default_screen(VALUE self)
|
|
77
86
|
static VALUE
|
78
87
|
rb_display_xdisplay_string(VALUE self)
|
79
88
|
{
|
80
|
-
|
81
|
-
|
82
|
-
TypedData_Get_Struct(self, Display, &display_type, display);
|
83
|
-
return rb_str_new_cstr(XDisplayString(display));
|
89
|
+
return rb_str_new_cstr(XDisplayString(get_display_struct(self)));
|
84
90
|
}
|
85
91
|
|
86
92
|
/*
|
@@ -89,12 +95,7 @@ rb_display_xdisplay_string(VALUE self)
|
|
89
95
|
static VALUE
|
90
96
|
rb_display_default_root_window(VALUE self)
|
91
97
|
{
|
92
|
-
|
93
|
-
Window window;
|
94
|
-
|
95
|
-
TypedData_Get_Struct(self, Display, &display_type, display);
|
96
|
-
window = DefaultRootWindow(display);
|
97
|
-
return ULONG2NUM(window);
|
98
|
+
return ULONG2NUM(DefaultRootWindow(get_display_struct(self)));
|
98
99
|
}
|
99
100
|
|
100
101
|
/*
|
@@ -103,11 +104,7 @@ rb_display_default_root_window(VALUE self)
|
|
103
104
|
static VALUE
|
104
105
|
rb_display_black_pixel(VALUE self, VALUE screen_obj)
|
105
106
|
{
|
106
|
-
|
107
|
-
int screen = FIX2INT(screen_obj);
|
108
|
-
|
109
|
-
TypedData_Get_Struct(self, Display, &display_type, display);
|
110
|
-
return ULONG2NUM(BlackPixel(display, screen));
|
107
|
+
return ULONG2NUM(BlackPixel(get_display_struct(self), FIX2INT(screen_obj)));
|
111
108
|
}
|
112
109
|
|
113
110
|
/*
|
@@ -116,11 +113,7 @@ rb_display_black_pixel(VALUE self, VALUE screen_obj)
|
|
116
113
|
static VALUE
|
117
114
|
rb_display_white_pixel(VALUE self, VALUE screen_obj)
|
118
115
|
{
|
119
|
-
|
120
|
-
int screen = FIX2INT(screen_obj);
|
121
|
-
|
122
|
-
TypedData_Get_Struct(self, Display, &display_type, display);
|
123
|
-
return ULONG2NUM(WhitePixel(display, screen));
|
116
|
+
return ULONG2NUM(WhitePixel(get_display_struct(self), FIX2INT(screen_obj)));
|
124
117
|
}
|
125
118
|
|
126
119
|
/*
|
@@ -129,12 +122,7 @@ rb_display_white_pixel(VALUE self, VALUE screen_obj)
|
|
129
122
|
static VALUE
|
130
123
|
rb_display_xselect_input(VALUE self, VALUE window, VALUE event_mask)
|
131
124
|
{
|
132
|
-
|
133
|
-
int ret;
|
134
|
-
|
135
|
-
TypedData_Get_Struct(self, Display, &display_type, display);
|
136
|
-
ret = XSelectInput(display, NUM2ULONG(window), NUM2LONG(event_mask));
|
137
|
-
return INT2NUM(ret);
|
125
|
+
return INT2NUM(XSelectInput(get_display_struct(self), NUM2ULONG(window), NUM2LONG(event_mask)));
|
138
126
|
}
|
139
127
|
|
140
128
|
/*
|
@@ -143,12 +131,7 @@ rb_display_xselect_input(VALUE self, VALUE window, VALUE event_mask)
|
|
143
131
|
static VALUE
|
144
132
|
rb_display_xmap_window(VALUE self, VALUE window)
|
145
133
|
{
|
146
|
-
|
147
|
-
int ret;
|
148
|
-
|
149
|
-
TypedData_Get_Struct(self, Display, &display_type, display);
|
150
|
-
ret = XMapWindow(display, NUM2ULONG(window));
|
151
|
-
return INT2NUM(ret);
|
134
|
+
return INT2NUM(XMapWindow(get_display_struct(self), NUM2ULONG(window)));
|
152
135
|
}
|
153
136
|
|
154
137
|
/*
|
@@ -157,12 +140,7 @@ rb_display_xmap_window(VALUE self, VALUE window)
|
|
157
140
|
static VALUE
|
158
141
|
rb_display_xsync(VALUE self, VALUE discard)
|
159
142
|
{
|
160
|
-
|
161
|
-
int ret;
|
162
|
-
|
163
|
-
TypedData_Get_Struct(self, Display, &display_type, display);
|
164
|
-
ret = XSync(display, RTEST(discard));
|
165
|
-
return INT2NUM(ret);
|
143
|
+
return INT2NUM(XSync(get_display_struct(self), RTEST(discard)));
|
166
144
|
}
|
167
145
|
|
168
146
|
/*
|
@@ -172,11 +150,7 @@ static VALUE
|
|
172
150
|
rb_display_xgrab_key(VALUE self, VALUE keycode, VALUE modifiers, VALUE grab_window,
|
173
151
|
VALUE owner_events, VALUE pointer_mode, VALUE keyboard_mode)
|
174
152
|
{
|
175
|
-
|
176
|
-
int ret;
|
177
|
-
|
178
|
-
TypedData_Get_Struct(self, Display, &display_type, display);
|
179
|
-
ret = XGrabKey(display, NUM2INT(keycode), NUM2UINT(modifiers), NUM2ULONG(grab_window),
|
153
|
+
int ret = XGrabKey(get_display_struct(self), NUM2INT(keycode), NUM2UINT(modifiers), NUM2ULONG(grab_window),
|
180
154
|
RTEST(owner_events), NUM2INT(pointer_mode), NUM2INT(keyboard_mode));
|
181
155
|
return INT2NUM(ret);
|
182
156
|
}
|
@@ -187,11 +161,7 @@ rb_display_xgrab_key(VALUE self, VALUE keycode, VALUE modifiers, VALUE grab_wind
|
|
187
161
|
static VALUE
|
188
162
|
rb_display_xungrab_key(VALUE self, VALUE keycode, VALUE modifiers, VALUE grab_window)
|
189
163
|
{
|
190
|
-
|
191
|
-
int ret;
|
192
|
-
|
193
|
-
TypedData_Get_Struct(self, Display, &display_type, display);
|
194
|
-
ret = XUngrabKey(display, NUM2INT(keycode), NUM2UINT(modifiers), NUM2ULONG(grab_window));
|
164
|
+
int ret = XUngrabKey(get_display_struct(self), NUM2INT(keycode), NUM2UINT(modifiers), NUM2ULONG(grab_window));
|
195
165
|
return INT2NUM(ret);
|
196
166
|
}
|
197
167
|
|
@@ -201,11 +171,7 @@ rb_display_xungrab_key(VALUE self, VALUE keycode, VALUE modifiers, VALUE grab_wi
|
|
201
171
|
static VALUE
|
202
172
|
rb_display_xkeysym_to_keycode(VALUE self, VALUE keysym)
|
203
173
|
{
|
204
|
-
|
205
|
-
unsigned char keycode;
|
206
|
-
|
207
|
-
TypedData_Get_Struct(self, Display, &display_type, display);
|
208
|
-
keycode = XKeysymToKeycode(display, NUM2ULONG(keysym));
|
174
|
+
unsigned char keycode = XKeysymToKeycode(get_display_struct(self), NUM2ULONG(keysym));
|
209
175
|
return INT2FIX((int)keycode);
|
210
176
|
}
|
211
177
|
|
@@ -218,6 +184,7 @@ Init_libx11_display(void)
|
|
218
184
|
rb_cDisplay = rb_define_class_under(rb_mLibX11, "Display", rb_cData);
|
219
185
|
rb_define_method(rb_cDisplay, "default_root_window", rb_display_default_root_window, 0);
|
220
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);
|
221
188
|
rb_define_method(rb_cDisplay, "xdisplay_string", rb_display_xdisplay_string, 0);
|
222
189
|
rb_define_method(rb_cDisplay, "black_pixel", rb_display_black_pixel, 1);
|
223
190
|
rb_define_method(rb_cDisplay, "white_pixel", rb_display_white_pixel, 1);
|
data/ext/libx11_ruby/window.c
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#include "libx11_ruby.h"
|
2
2
|
#include <X11/Xlib.h>
|
3
3
|
|
4
|
-
extern
|
4
|
+
extern Display* get_display_struct(VALUE);
|
5
5
|
|
6
6
|
/*
|
7
7
|
* Xlib XCreateSimpleWindow
|
@@ -10,11 +10,7 @@ static VALUE
|
|
10
10
|
rb_libx11_xcreate_simple_window(VALUE self, VALUE display_obj, VALUE parent_window, VALUE x, VALUE y,
|
11
11
|
VALUE width, VALUE height, VALUE border_width, VALUE border_color, VALUE background_color)
|
12
12
|
{
|
13
|
-
|
14
|
-
Window ret;
|
15
|
-
|
16
|
-
TypedData_Get_Struct(display_obj, Display, &display_type, display);
|
17
|
-
ret = XCreateSimpleWindow(display, NUM2ULONG(parent_window), NUM2INT(x), NUM2INT(y),
|
13
|
+
Window ret = XCreateSimpleWindow(get_display_struct(display_obj), NUM2ULONG(parent_window), NUM2INT(x), NUM2INT(y),
|
18
14
|
NUM2UINT(width), NUM2UINT(height), FIX2UINT(border_width), NUM2ULONG(border_color), NUM2ULONG(background_color));
|
19
15
|
return ULONG2NUM(ret);
|
20
16
|
}
|
@@ -25,11 +21,7 @@ rb_libx11_xcreate_simple_window(VALUE self, VALUE display_obj, VALUE parent_wind
|
|
25
21
|
static VALUE
|
26
22
|
rb_libx11_xdestroy_window(VALUE self, VALUE display_obj, VALUE window)
|
27
23
|
{
|
28
|
-
|
29
|
-
int ret;
|
30
|
-
|
31
|
-
TypedData_Get_Struct(display_obj, Display, &display_type, display);
|
32
|
-
ret = XDestroyWindow(display, NUM2ULONG(window));
|
24
|
+
int ret = XDestroyWindow(get_display_struct(display_obj), NUM2ULONG(window));
|
33
25
|
return INT2NUM(ret);
|
34
26
|
}
|
35
27
|
|
data/ext/libx11_ruby/xevent.c
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
#include "libx11_ruby.h"
|
2
2
|
#include <X11/Xlib.h>
|
3
3
|
|
4
|
-
VALUE rb_cXEvent;
|
4
|
+
VALUE rb_cXEvent, rb_cXKeyEvent;
|
5
5
|
|
6
|
-
extern
|
6
|
+
extern Display* get_display_struct(VALUE);
|
7
7
|
|
8
8
|
static void
|
9
9
|
xevent_dfree(void *arg)
|
@@ -38,14 +38,14 @@ const rb_data_type_t xevent_type = {
|
|
38
38
|
static VALUE
|
39
39
|
rb_libx11_xnext_event(VALUE self, VALUE obj)
|
40
40
|
{
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
41
|
+
XEvent *event = (XEvent *)malloc(sizeof(XEvent));
|
42
|
+
XNextEvent(get_display_struct(obj), event);
|
43
|
+
switch (event->type) {
|
44
|
+
case KeyPress:
|
45
|
+
return TypedData_Wrap_Struct(rb_cXKeyEvent, &xevent_type, event);
|
46
|
+
default:
|
47
|
+
return TypedData_Wrap_Struct(rb_cXEvent, &xevent_type, event);
|
48
|
+
}
|
49
49
|
}
|
50
50
|
|
51
51
|
static VALUE
|
@@ -57,14 +57,44 @@ rb_xevent_type(VALUE self)
|
|
57
57
|
return INT2NUM(event->type);
|
58
58
|
}
|
59
59
|
|
60
|
+
static VALUE
|
61
|
+
rb_xkey_event_state(VALUE self)
|
62
|
+
{
|
63
|
+
XEvent *event;
|
64
|
+
|
65
|
+
TypedData_Get_Struct(self, XEvent, &xevent_type, event);
|
66
|
+
return UINT2NUM(event->xkey.state);
|
67
|
+
}
|
68
|
+
|
69
|
+
/*
|
70
|
+
* KeySym XLookupKeysym(
|
71
|
+
* XKeyEvent* key_event,
|
72
|
+
* int index
|
73
|
+
* );
|
74
|
+
*/
|
75
|
+
static VALUE
|
76
|
+
rb_libx11_xlookup_keysym(VALUE self, VALUE event_obj, VALUE index)
|
77
|
+
{
|
78
|
+
XEvent *event;
|
79
|
+
unsigned long keysym;
|
80
|
+
|
81
|
+
TypedData_Get_Struct(event_obj, XEvent, &xevent_type, event);
|
82
|
+
keysym = XLookupKeysym(&event->xkey, NUM2INT(index));
|
83
|
+
return ULONG2NUM(keysym);
|
84
|
+
}
|
85
|
+
|
60
86
|
void
|
61
87
|
Init_libx11_xevent(void)
|
62
88
|
{
|
63
89
|
rb_define_singleton_method(rb_mLibX11, "xnext_event", rb_libx11_xnext_event, 1);
|
90
|
+
rb_define_singleton_method(rb_mLibX11, "xlookup_keysym", rb_libx11_xlookup_keysym, 2);
|
64
91
|
|
65
92
|
rb_cXEvent = rb_define_class_under(rb_mLibX11, "XEvent", rb_cData);
|
66
93
|
rb_define_method(rb_cXEvent, "type", rb_xevent_type, 0);
|
67
94
|
|
95
|
+
rb_cXKeyEvent = rb_define_class_under(rb_mLibX11, "XKeyEvent", rb_cXEvent);
|
96
|
+
rb_define_method(rb_cXKeyEvent, "state", rb_xkey_event_state, 0);
|
97
|
+
|
68
98
|
// event
|
69
99
|
rb_define_const(rb_cXEvent, "KEY_PRESS", INT2FIX(KeyPress));
|
70
100
|
rb_define_const(rb_cXEvent, "KEY_RELEASE", INT2FIX(KeyRelease));
|
data/lib/libx11/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libx11
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
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-
|
11
|
+
date: 2016-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|