ffi-ncurses 0.3.3 → 0.4.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.
- data/COPYING +22 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +13 -0
- data/History.txt +32 -3
- data/README.rdoc +118 -58
- data/Rakefile +30 -0
- data/examples/acs_chars.rb +53 -0
- data/examples/acs_chars.rbc +1502 -0
- data/examples/{example-attributes.rb → attributes.rb} +0 -0
- data/examples/color.rb +63 -0
- data/examples/cursor.rb +27 -0
- data/examples/example.rb +17 -17
- data/examples/getkey.rb +212 -0
- data/examples/{example-getsetsyx.rb → getsetsyx.rb} +2 -2
- data/examples/globals.rb +38 -0
- data/examples/hello.rb +34 -0
- data/examples/hello.rbc +638 -0
- data/examples/hellowide.rb +59 -0
- data/examples/keys.rb +27 -0
- data/examples/{example-mouse.rb → mouse.rb} +2 -2
- data/examples/multiterm.rb +120 -0
- data/examples/ncurses/LICENSES_for_examples +26 -0
- data/examples/{ncurses-example.rb → ncurses/example.rb} +13 -80
- data/examples/ncurses/hello_ncurses.rb +57 -0
- data/examples/ncurses/rain.rb +220 -0
- data/examples/ncurses/read_line.rb +67 -0
- data/examples/ncurses/subwin.rb +71 -0
- data/examples/ncurses/tclock.rb +227 -0
- data/examples/newterm.rb +65 -0
- data/examples/panel_simple.rb +82 -0
- data/examples/{example-printw-variadic.rb → printw-variadic.rb} +1 -1
- data/examples/ripoffline.rb +86 -0
- data/examples/run-all.sh +14 -0
- data/examples/{example-softkeys.rb → softkeys.rb} +0 -0
- data/examples/{example-stdscr.rb → stdscr.rb} +2 -1
- data/examples/temp_leave.rb +99 -0
- data/examples/viewer.rb +350 -0
- data/examples/wacs_chars.rb +64 -0
- data/examples/windows.rb +73 -0
- data/ffi-ncurses.gemspec +39 -52
- data/lib/ffi-ncurses.rb +214 -474
- data/lib/ffi-ncurses/acs.rb +150 -0
- data/lib/ffi-ncurses/bool_wrappers.rb +66 -0
- data/lib/ffi-ncurses/functions.rb +450 -0
- data/lib/ffi-ncurses/keydefs.rb +136 -99
- data/lib/ffi-ncurses/mouse.rb +106 -106
- data/lib/ffi-ncurses/ncurses.rb +176 -0
- data/lib/ffi-ncurses/{ord-shim.rb → ord_shim.rb} +0 -0
- data/lib/ffi-ncurses/panel.rb +21 -0
- data/lib/ffi-ncurses/typedefs.rb +35 -0
- data/lib/ffi-ncurses/version.rb +7 -0
- data/lib/ffi-ncurses/widechars.rb +137 -0
- data/lib/ffi-ncurses/winstruct.rb +55 -33
- data/spec/attached_functions_spec.rb +42 -0
- metadata +95 -85
- data/examples/example-colour.rb +0 -63
- data/examples/example-cursor.rb +0 -22
- data/examples/example-hello.rb +0 -24
- data/examples/example-jruby.rb +0 -14
- data/examples/example-keys.rb +0 -25
- data/examples/example-windows.rb +0 -24
data/lib/ffi-ncurses/keydefs.rb
CHANGED
@@ -1,108 +1,145 @@
|
|
1
|
+
# -*- coding: utf-8; -*-
|
1
2
|
module FFI
|
2
3
|
module NCurses
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
KEY_RESET = 0531 # Reset or hard reset (unreliable)
|
4
|
+
module KeyDefs
|
5
|
+
KEY_TAB = 9
|
6
|
+
KEY_RETURN = 10
|
7
|
+
KEY_ESCAPE = 27
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
KEY_F0 = 0410 # Function keys. Space for 64
|
9
|
+
# Note: these are octal numbers.
|
10
|
+
KEY_CODE_YES = 0400 # A wchar_t contains a key code
|
11
|
+
KEY_MIN = 0401 # Minimum curses key
|
12
|
+
KEY_BREAK = 0401 # Break key (unreliable)
|
13
|
+
KEY_SRESET = 0530 # Soft (partial) reset (unreliable)
|
14
|
+
KEY_RESET = 0531 # Reset or hard reset (unreliable)
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
KEY_DOWN = 0402 # down-arrow key
|
17
|
+
KEY_UP = 0403 # up-arrow key
|
18
|
+
KEY_LEFT = 0404 # left-arrow key
|
19
|
+
KEY_RIGHT = 0405 # right-arrow key
|
20
|
+
KEY_HOME = 0406 # home key
|
21
|
+
KEY_BACKSPACE = 0407 # backspace key
|
22
|
+
KEY_F0 = 0410 # Function keys. Space for 64
|
23
|
+
|
24
|
+
KEY_DL = 0510 # delete-line key
|
25
|
+
KEY_IL = 0511 # insert-line key
|
26
|
+
KEY_DC = 0512 # delete-character key
|
27
|
+
KEY_IC = 0513 # insert-character key
|
28
|
+
KEY_EIC = 0514 # sent by rmir or smir in insert mode
|
29
|
+
KEY_CLEAR = 0515 # clear-screen or erase key
|
30
|
+
KEY_EOS = 0516 # clear-to-end-of-screen key
|
31
|
+
KEY_EOL = 0517 # clear-to-end-of-line key
|
32
|
+
KEY_SF = 0520 # scroll-forward key
|
33
|
+
KEY_SR = 0521 # scroll-backward key
|
34
|
+
KEY_NPAGE = 0522 # next-page key
|
35
|
+
KEY_PPAGE = 0523 # previous-page key
|
36
|
+
KEY_STAB = 0524 # set-tab key
|
37
|
+
KEY_CTAB = 0525 # clear-tab key
|
38
|
+
KEY_CATAB = 0526 # clear-all-tabs key
|
39
|
+
KEY_ENTER = 0527 # enter/send key
|
40
|
+
KEY_PRINT = 0532 # print key
|
41
|
+
KEY_LL = 0533 # lower-left key (home down)
|
42
|
+
KEY_A1 = 0534 # upper left of keypad
|
43
|
+
KEY_A3 = 0535 # upper right of keypad
|
44
|
+
KEY_B2 = 0536 # center of keypad
|
45
|
+
KEY_C1 = 0537 # lower left of keypad
|
46
|
+
KEY_C3 = 0540 # lower right of keypad
|
47
|
+
KEY_BTAB = 0541 # back-tab key
|
48
|
+
KEY_BEG = 0542 # begin key
|
49
|
+
KEY_CANCEL = 0543 # cancel key
|
50
|
+
KEY_CLOSE = 0544 # close key
|
51
|
+
KEY_COMMAND = 0545 # command key
|
52
|
+
KEY_COPY = 0546 # copy key
|
53
|
+
KEY_CREATE = 0547 # create key
|
54
|
+
KEY_END = 0550 # end key
|
55
|
+
KEY_EXIT = 0551 # exit key
|
56
|
+
KEY_FIND = 0552 # find key
|
57
|
+
KEY_HELP = 0553 # help key
|
58
|
+
KEY_MARK = 0554 # mark key
|
59
|
+
KEY_MESSAGE = 0555 # message key
|
60
|
+
KEY_MOVE = 0556 # move key
|
61
|
+
KEY_NEXT = 0557 # next key
|
62
|
+
KEY_OPEN = 0560 # open key
|
63
|
+
KEY_OPTIONS = 0561 # options key
|
64
|
+
KEY_PREVIOUS = 0562 # previous key
|
65
|
+
KEY_REDO = 0563 # redo key
|
66
|
+
KEY_REFERENCE = 0564 # reference key
|
67
|
+
KEY_REFRESH = 0565 # refresh key
|
68
|
+
KEY_REPLACE = 0566 # replace key
|
69
|
+
KEY_RESTART = 0567 # restart key
|
70
|
+
KEY_RESUME = 0570 # resume key
|
71
|
+
KEY_SAVE = 0571 # save key
|
72
|
+
KEY_SBEG = 0572 # shifted begin key
|
73
|
+
KEY_SCANCEL = 0573 # shifted cancel key
|
74
|
+
KEY_SCOMMAND = 0574 # shifted command key
|
75
|
+
KEY_SCOPY = 0575 # shifted copy key
|
76
|
+
KEY_SCREATE = 0576 # shifted create key
|
77
|
+
KEY_SDC = 0577 # shifted delete-character key
|
78
|
+
KEY_SDL = 0600 # shifted delete-line key
|
79
|
+
KEY_SELECT = 0601 # select key
|
80
|
+
KEY_SEND = 0602 # shifted end key
|
81
|
+
KEY_SEOL = 0603 # shifted clear-to-end-of-line key
|
82
|
+
KEY_SEXIT = 0604 # shifted exit key
|
83
|
+
KEY_SFIND = 0605 # shifted find key
|
84
|
+
KEY_SHELP = 0606 # shifted help key
|
85
|
+
KEY_SHOME = 0607 # shifted home key
|
86
|
+
KEY_SIC = 0610 # shifted insert-character key
|
87
|
+
KEY_SLEFT = 0611 # shifted left-arrow key
|
88
|
+
KEY_SMESSAGE = 0612 # shifted message key
|
89
|
+
KEY_SMOVE = 0613 # shifted move key
|
90
|
+
KEY_SNEXT = 0614 # shifted next key
|
91
|
+
KEY_SOPTIONS = 0615 # shifted options key
|
92
|
+
KEY_SPREVIOUS = 0616 # shifted previous key
|
93
|
+
KEY_SPRINT = 0617 # shifted print key
|
94
|
+
KEY_SREDO = 0620 # shifted redo key
|
95
|
+
KEY_SREPLACE = 0621 # shifted replace key
|
96
|
+
KEY_SRIGHT = 0622 # shifted right-arrow key
|
97
|
+
KEY_SRSUME = 0623 # shifted resume key
|
98
|
+
KEY_SSAVE = 0624 # shifted save key
|
99
|
+
KEY_SSUSPEND = 0625 # shifted suspend key
|
100
|
+
KEY_SUNDO = 0626 # shifted undo key
|
101
|
+
KEY_SUSPEND = 0627 # suspend key
|
102
|
+
KEY_UNDO = 0630 # undo key
|
103
|
+
KEY_MOUSE = 0631 # Mouse event has occurred
|
104
|
+
KEY_RESIZE = 0632 # Terminal resize event
|
105
|
+
KEY_EVENT = 0633 # We were interrupted by an event
|
106
|
+
|
107
|
+
KEY_MAX = 0777 # Maximum key value is 0633 [SOH: sic in ncurses.h]
|
21
108
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
KEY_CTAB = 0525 # clear-tab key
|
36
|
-
KEY_CATAB = 0526 # clear-all-tabs key
|
37
|
-
KEY_ENTER = 0527 # enter/send key
|
38
|
-
KEY_PRINT = 0532 # print key
|
39
|
-
KEY_LL = 0533 # lower-left key (home down)
|
40
|
-
KEY_A1 = 0534 # upper left of keypad
|
41
|
-
KEY_A3 = 0535 # upper right of keypad
|
42
|
-
KEY_B2 = 0536 # center of keypad
|
43
|
-
KEY_C1 = 0537 # lower left of keypad
|
44
|
-
KEY_C3 = 0540 # lower right of keypad
|
45
|
-
KEY_BTAB = 0541 # back-tab key
|
46
|
-
KEY_BEG = 0542 # begin key
|
47
|
-
KEY_CANCEL = 0543 # cancel key
|
48
|
-
KEY_CLOSE = 0544 # close key
|
49
|
-
KEY_COMMAND = 0545 # command key
|
50
|
-
KEY_COPY = 0546 # copy key
|
51
|
-
KEY_CREATE = 0547 # create key
|
52
|
-
KEY_END = 0550 # end key
|
53
|
-
KEY_EXIT = 0551 # exit key
|
54
|
-
KEY_FIND = 0552 # find key
|
55
|
-
KEY_HELP = 0553 # help key
|
56
|
-
KEY_MARK = 0554 # mark key
|
57
|
-
KEY_MESSAGE = 0555 # message key
|
58
|
-
KEY_MOVE = 0556 # move key
|
59
|
-
KEY_NEXT = 0557 # next key
|
60
|
-
KEY_OPEN = 0560 # open key
|
61
|
-
KEY_OPTIONS = 0561 # options key
|
62
|
-
KEY_PREVIOUS = 0562 # previous key
|
63
|
-
KEY_REDO = 0563 # redo key
|
64
|
-
KEY_REFERENCE = 0564 # reference key
|
65
|
-
KEY_REFRESH = 0565 # refresh key
|
66
|
-
KEY_REPLACE = 0566 # replace key
|
67
|
-
KEY_RESTART = 0567 # restart key
|
68
|
-
KEY_RESUME = 0570 # resume key
|
69
|
-
KEY_SAVE = 0571 # save key
|
70
|
-
KEY_SBEG = 0572 # shifted begin key
|
71
|
-
KEY_SCANCEL = 0573 # shifted cancel key
|
72
|
-
KEY_SCOMMAND = 0574 # shifted command key
|
73
|
-
KEY_SCOPY = 0575 # shifted copy key
|
74
|
-
KEY_SCREATE = 0576 # shifted create key
|
75
|
-
KEY_SDC = 0577 # shifted delete-character key
|
76
|
-
KEY_SDL = 0600 # shifted delete-line key
|
77
|
-
KEY_SELECT = 0601 # select key
|
78
|
-
KEY_SEND = 0602 # shifted end key
|
79
|
-
KEY_SEOL = 0603 # shifted clear-to-end-of-line key
|
80
|
-
KEY_SEXIT = 0604 # shifted exit key
|
81
|
-
KEY_SFIND = 0605 # shifted find key
|
82
|
-
KEY_SHELP = 0606 # shifted help key
|
83
|
-
KEY_SHOME = 0607 # shifted home key
|
84
|
-
KEY_SIC = 0610 # shifted insert-character key
|
85
|
-
KEY_SLEFT = 0611 # shifted left-arrow key
|
86
|
-
KEY_SMESSAGE = 0612 # shifted message key
|
87
|
-
KEY_SMOVE = 0613 # shifted move key
|
88
|
-
KEY_SNEXT = 0614 # shifted next key
|
89
|
-
KEY_SOPTIONS = 0615 # shifted options key
|
90
|
-
KEY_SPREVIOUS = 0616 # shifted previous key
|
91
|
-
KEY_SPRINT = 0617 # shifted print key
|
92
|
-
KEY_SREDO = 0620 # shifted redo key
|
93
|
-
KEY_SREPLACE = 0621 # shifted replace key
|
94
|
-
KEY_SRIGHT = 0622 # shifted right-arrow key
|
95
|
-
KEY_SRSUME = 0623 # shifted resume key
|
96
|
-
KEY_SSAVE = 0624 # shifted save key
|
97
|
-
KEY_SSUSPEND = 0625 # shifted suspend key
|
98
|
-
KEY_SUNDO = 0626 # shifted undo key
|
99
|
-
KEY_SUSPEND = 0627 # suspend key
|
100
|
-
KEY_UNDO = 0630 # undo key
|
101
|
-
KEY_MOUSE = 0631 # Mouse event has occurred
|
102
|
-
KEY_RESIZE = 0632 # Terminal resize event
|
103
|
-
KEY_EVENT = 0633 # We were interrupted by an event
|
109
|
+
module KeyHelper
|
110
|
+
# Ctrl + letter
|
111
|
+
if ?A == "A"
|
112
|
+
# 1.9+
|
113
|
+
def KEY_CTRL(letter)
|
114
|
+
(letter.ord & ~0b0100000) - ?A.ord + 1
|
115
|
+
end
|
116
|
+
else
|
117
|
+
# 1.8.x
|
118
|
+
def KEY_CTRL(letter)
|
119
|
+
(letter[0] & ~0b0100000) - ?A + 1
|
120
|
+
end
|
121
|
+
end
|
104
122
|
|
105
|
-
|
123
|
+
# Value of function key n
|
124
|
+
def KEY_F(n)
|
125
|
+
KEY_F0 + n
|
126
|
+
end
|
127
|
+
end
|
128
|
+
include KeyHelper
|
129
|
+
extend KeyHelper
|
106
130
|
|
131
|
+
# For convenience
|
132
|
+
|
133
|
+
# Control keys
|
134
|
+
('A'..'Z').each do |c|
|
135
|
+
const_set "KEY_CTRL_#{c}", KEY_CTRL(c)
|
136
|
+
end
|
137
|
+
|
138
|
+
# Function keys
|
139
|
+
(1..64).each do |c|
|
140
|
+
const_set "KEY_F#{c}", KEY_F(c)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
include KeyDefs
|
107
144
|
end
|
108
145
|
end
|
data/lib/ffi-ncurses/mouse.rb
CHANGED
@@ -1,105 +1,104 @@
|
|
1
|
-
require 'ffi-ncurses'
|
2
1
|
module FFI
|
3
2
|
module NCurses
|
3
|
+
module Mouse
|
4
4
|
|
5
|
-
|
5
|
+
NCURSES_MOUSE_VERSION = 1
|
6
6
|
|
7
|
-
|
7
|
+
# mouse interface
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
if NCURSES_MOUSE_VERSION > 1
|
10
|
+
def self.NCURSES_MOUSE_MASK(b,m)
|
11
|
+
((m) << (((b) - 1) * 5))
|
12
|
+
end
|
13
|
+
else
|
14
|
+
def self.NCURSES_MOUSE_MASK(b,m)
|
15
|
+
((m) << (((b) - 1) * 6))
|
16
|
+
end
|
12
17
|
end
|
13
|
-
else
|
14
|
-
def self.NCURSES_MOUSE_MASK(b,m)
|
15
|
-
((m) << (((b) - 1) * 6))
|
16
|
-
end
|
17
|
-
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
19
|
+
NCURSES_BUTTON_RELEASED = 001
|
20
|
+
NCURSES_BUTTON_PRESSED = 002
|
21
|
+
NCURSES_BUTTON_CLICKED = 004
|
22
|
+
NCURSES_DOUBLE_CLICKED = 010
|
23
|
+
NCURSES_TRIPLE_CLICKED = 020
|
24
|
+
NCURSES_RESERVED_EVENT = 040
|
25
|
+
|
26
|
+
# event masks
|
27
|
+
BUTTON1_RELEASED = NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED)
|
28
|
+
BUTTON1_PRESSED = NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_PRESSED)
|
29
|
+
BUTTON1_CLICKED = NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_CLICKED)
|
30
|
+
BUTTON1_DOUBLE_CLICKED = NCURSES_MOUSE_MASK(1, NCURSES_DOUBLE_CLICKED)
|
31
|
+
BUTTON1_TRIPLE_CLICKED = NCURSES_MOUSE_MASK(1, NCURSES_TRIPLE_CLICKED)
|
32
|
+
|
33
|
+
BUTTON2_RELEASED = NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_RELEASED)
|
34
|
+
BUTTON2_PRESSED = NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_PRESSED)
|
35
|
+
BUTTON2_CLICKED = NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_CLICKED)
|
36
|
+
BUTTON2_DOUBLE_CLICKED = NCURSES_MOUSE_MASK(2, NCURSES_DOUBLE_CLICKED)
|
37
|
+
BUTTON2_TRIPLE_CLICKED = NCURSES_MOUSE_MASK(2, NCURSES_TRIPLE_CLICKED)
|
38
|
+
|
39
|
+
BUTTON3_RELEASED = NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_RELEASED)
|
40
|
+
BUTTON3_PRESSED = NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_PRESSED)
|
41
|
+
BUTTON3_CLICKED = NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_CLICKED)
|
42
|
+
BUTTON3_DOUBLE_CLICKED = NCURSES_MOUSE_MASK(3, NCURSES_DOUBLE_CLICKED)
|
43
|
+
BUTTON3_TRIPLE_CLICKED = NCURSES_MOUSE_MASK(3, NCURSES_TRIPLE_CLICKED)
|
44
|
+
|
45
|
+
BUTTON4_RELEASED = NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_RELEASED)
|
46
|
+
BUTTON4_PRESSED = NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_PRESSED)
|
47
|
+
BUTTON4_CLICKED = NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_CLICKED)
|
48
|
+
BUTTON4_DOUBLE_CLICKED = NCURSES_MOUSE_MASK(4, NCURSES_DOUBLE_CLICKED)
|
49
|
+
BUTTON4_TRIPLE_CLICKED = NCURSES_MOUSE_MASK(4, NCURSES_TRIPLE_CLICKED)
|
50
|
+
|
51
|
+
#
|
52
|
+
# In 32 bits the version-1 scheme does not provide enough space for a 5th
|
53
|
+
# button, unless we choose to change the ABI by omitting the reserved-events.
|
54
|
+
#
|
55
|
+
|
56
|
+
if NCURSES_MOUSE_VERSION > 1
|
57
|
+
|
58
|
+
BUTTON5_RELEASED = NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_RELEASED)
|
59
|
+
BUTTON5_PRESSED = NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED)
|
60
|
+
BUTTON5_CLICKED = NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_CLICKED)
|
61
|
+
BUTTON5_DOUBLE_CLICKED = NCURSES_MOUSE_MASK(5, NCURSES_DOUBLE_CLICKED)
|
62
|
+
BUTTON5_TRIPLE_CLICKED = NCURSES_MOUSE_MASK(5, NCURSES_TRIPLE_CLICKED)
|
63
|
+
|
64
|
+
BUTTON_CTRL = NCURSES_MOUSE_MASK(6, 0001)
|
65
|
+
BUTTON_SHIFT = NCURSES_MOUSE_MASK(6, 0002)
|
66
|
+
BUTTON_ALT = NCURSES_MOUSE_MASK(6, 0004)
|
67
|
+
REPORT_MOUSE_POSITION = NCURSES_MOUSE_MASK(6, 0010)
|
68
|
+
|
69
|
+
else
|
70
|
+
|
71
|
+
BUTTON1_RESERVED_EVENT = NCURSES_MOUSE_MASK(1, NCURSES_RESERVED_EVENT)
|
72
|
+
BUTTON2_RESERVED_EVENT = NCURSES_MOUSE_MASK(2, NCURSES_RESERVED_EVENT)
|
73
|
+
BUTTON3_RESERVED_EVENT = NCURSES_MOUSE_MASK(3, NCURSES_RESERVED_EVENT)
|
74
|
+
BUTTON4_RESERVED_EVENT = NCURSES_MOUSE_MASK(4, NCURSES_RESERVED_EVENT)
|
75
|
+
|
76
|
+
BUTTON_CTRL = NCURSES_MOUSE_MASK(5, 0001)
|
77
|
+
BUTTON_SHIFT = NCURSES_MOUSE_MASK(5, 0002)
|
78
|
+
BUTTON_ALT = NCURSES_MOUSE_MASK(5, 0004)
|
79
|
+
REPORT_MOUSE_POSITION = NCURSES_MOUSE_MASK(5, 0010)
|
80
80
|
|
81
|
-
|
81
|
+
end
|
82
82
|
|
83
|
-
|
83
|
+
ALL_MOUSE_EVENTS = (REPORT_MOUSE_POSITION - 1)
|
84
84
|
|
85
|
-
class << self
|
86
85
|
# macros to extract single event-bits from masks
|
87
|
-
def
|
86
|
+
def BUTTON_RELEASE(e, x)
|
88
87
|
((e) & (001 << (6 * ((x) - 1))))
|
89
88
|
end
|
90
|
-
def
|
89
|
+
def BUTTON_PRESS(e, x)
|
91
90
|
((e) & (002 << (6 * ((x) - 1))))
|
92
91
|
end
|
93
|
-
def
|
92
|
+
def BUTTON_CLICK(e, x)
|
94
93
|
((e) & (004 << (6 * ((x) - 1))))
|
95
94
|
end
|
96
|
-
def
|
95
|
+
def BUTTON_DOUBLE_CLICK(e, x)
|
97
96
|
((e) & (010 << (6 * ((x) - 1))))
|
98
97
|
end
|
99
|
-
def
|
98
|
+
def BUTTON_TRIPLE_CLICK(e, x)
|
100
99
|
((e) & (020 << (6 * ((x) - 1))))
|
101
100
|
end
|
102
|
-
def
|
101
|
+
def BUTTON_RESERVED_EVENT(e, x)
|
103
102
|
((e) & (040 << (6 * ((x) - 1))))
|
104
103
|
end
|
105
104
|
|
@@ -112,36 +111,37 @@ module FFI
|
|
112
111
|
# ((m) << (((b) - 1) * 6))
|
113
112
|
# end
|
114
113
|
# end
|
115
|
-
end
|
116
114
|
|
117
|
-
|
118
|
-
|
115
|
+
# def mouse_trafo(y, x, to_screen)
|
116
|
+
# end
|
119
117
|
|
120
|
-
|
121
|
-
|
118
|
+
# already defined in keydefs.rb
|
119
|
+
# KEY_MOUSE = 0631 # Mouse event has occurred
|
122
120
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
121
|
+
#FFI.add_typedef :ulong, :mmask_t
|
122
|
+
class MEVENT < FFI::Struct
|
123
|
+
layout :id, :short,
|
124
|
+
:x, :int,
|
125
|
+
:y, :int,
|
126
|
+
:z, :int,
|
127
|
+
# :bstate, :mmask_t
|
128
|
+
:bstate, :ulong
|
129
|
+
end
|
132
130
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
131
|
+
functions =
|
132
|
+
[
|
133
|
+
[:getmouse, [MEVENT], :int],
|
134
|
+
[:ungetmouse, [MEVENT], :int],
|
135
|
+
]
|
136
|
+
|
137
|
+
functions.each do |function|
|
138
|
+
begin
|
139
|
+
attach_function(*function)
|
140
|
+
rescue Object => e
|
141
|
+
(@unattached_functions ||= []) << function
|
142
|
+
end
|
144
143
|
end
|
145
144
|
end
|
145
|
+
include Mouse
|
146
146
|
end
|
147
147
|
end
|