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/COPYING
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
ffi-ncurses
|
2
|
+
|
3
|
+
Copyright (c) 2008-2011 Sean O'Halpin sean.ohalpin at gmail.com
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
data/History.txt
CHANGED
@@ -1,3 +1,31 @@
|
|
1
|
+
= Changelog for ffi-ncurses
|
2
|
+
|
3
|
+
== 0.4.0 / 2011-09-25
|
4
|
+
|
5
|
+
* Supports all functions in ncursesw except the =vwprintw/vwscanw=
|
6
|
+
family.
|
7
|
+
* Added =ACS= constants (box characters). See =examples/acs.rb= and
|
8
|
+
=examples/wacs.rb=.
|
9
|
+
* Added support for =libpanelw=. See =examples/panel_simple.rb=.
|
10
|
+
* Better examples. See =examples/viewer.rb= for a simple but complete
|
11
|
+
file viewing application.
|
12
|
+
* Methods with boolean arguments now =true= or =false= as well as 1 or
|
13
|
+
0.
|
14
|
+
* Start of a compatibility layer for the existing C extension-based
|
15
|
+
Ncurses Ruby libraries - require 'ffi-ncurses/ncurses'. Runs all
|
16
|
+
the examples from ncurses-ruby without changes (except those relying
|
17
|
+
on menus and forms). See =examples/ncurses/*.rb=.
|
18
|
+
* Sets the locale (using FFI::Locale.setlocale(LC_ALL, "")) in ruby
|
19
|
+
1.8.x to enable UTF-8 input. See =examples/getkey.rb= to see how to
|
20
|
+
distinguish between function keys and Unicode characters.
|
21
|
+
|
22
|
+
== 0.3.4 / 2010-08-28
|
23
|
+
|
24
|
+
* Added MIT licence (License.txt, COPYING)
|
25
|
+
* Bumped version
|
26
|
+
* Added nested PDat struct to WinStruct
|
27
|
+
* Reformatted comments for rocco
|
28
|
+
|
1
29
|
== 0.3.3 / 2010-08-24
|
2
30
|
|
3
31
|
* Depends on ffi again (>= 0.6.3)
|
@@ -7,16 +35,17 @@
|
|
7
35
|
* Included keydefs.rb by default
|
8
36
|
* Examples have been tested with:
|
9
37
|
- jruby-1.5.1
|
10
|
-
- rbx-1.0.0-20100514
|
11
38
|
- ree-1.8.7-2010.02
|
12
39
|
- ruby-1.8.6-p399
|
13
40
|
Note: the examples require "ffi-ncurses/ord-shim" to add
|
14
41
|
Integer#ord
|
15
|
-
- ruby-1.8.7-
|
42
|
+
- ruby-1.8.7-p302
|
16
43
|
- ruby-1.9.2-p0
|
44
|
+
* Sadly not compatible with Rubinius (rbx-1.0.0-20100514)
|
17
45
|
* Removed attempt to load XCurses (PDCurses)
|
18
46
|
* Removed dependency on bones
|
19
|
-
- no Rakefile any more - just use
|
47
|
+
- no Rakefile any more - just use
|
48
|
+
gem build ffi-ncurses.gemspec
|
20
49
|
|
21
50
|
== 0.3.2 / 2009-02-16
|
22
51
|
|
data/README.rdoc
CHANGED
@@ -2,34 +2,67 @@
|
|
2
2
|
|
3
3
|
Author: Sean O'Halpin
|
4
4
|
|
5
|
-
A wrapper for ncurses
|
6
|
-
|
7
|
-
|
5
|
+
A pure-ruby wrapper for {http://invisible-island.net/ncurses/ ncursesw
|
6
|
+
5.x} using the {https://github.com/ffi/ffi ffi} library.
|
7
|
+
|
8
|
+
All of the core ncursesw functions are supported along with the Panel
|
9
|
+
library. The main things left to do are support for the Menu and Form
|
10
|
+
libraries.
|
8
11
|
|
9
12
|
The API is a transliteration of the C API rather than an attempt to
|
10
13
|
provide an idiomatic Ruby object-oriented API. The intent is to
|
11
14
|
provide a 'close to the metal' wrapper around the ncurses library upon
|
12
15
|
which you can build your own abstractions.
|
13
16
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
17
|
+
Please note that this documentation does not cover individual
|
18
|
+
ncursesw methods. For that you'll need to refer to existing
|
19
|
+
ncursesw documentation. For example, to find out about +addstr+,
|
20
|
+
use:
|
21
|
+
|
22
|
+
$ man addstr
|
23
|
+
|
24
|
+
One benefit of using a minimal wrapper approach is that you can use
|
25
|
+
existing examples and man pages to find out how to use the library. To
|
26
|
+
get an overview of ncurses, use:
|
27
|
+
|
28
|
+
$ man ncurses
|
29
|
+
|
30
|
+
Having said that, this release also includes a wrapper that emulates
|
31
|
+
the existing Ncurses library API. To use it, substitute
|
32
|
+
|
33
|
+
require 'ffi-ncurses/ncurses'
|
34
|
+
|
35
|
+
for
|
36
|
+
|
37
|
+
require 'ncurses'
|
18
38
|
|
19
|
-
|
20
|
-
|
39
|
+
or create a file called 'ncurses.rb' on your +$LOAD_PATH+ ($:) that
|
40
|
+
requires +ffi-ncurses/ncurses.rb+.
|
21
41
|
|
22
|
-
|
42
|
+
Below you'll find some very preliminary notes on usage. See the
|
43
|
+
examples directory for real working examples, which among other things
|
44
|
+
show how to input and output UTF-8, deal with pointers and handle wide
|
45
|
+
characters.
|
23
46
|
|
24
|
-
|
47
|
+
This version of ffi-ncurses defaults to loading ncursesw, the 'wide
|
48
|
+
character' version which supports UTF-8 and double width characters.
|
25
49
|
|
26
|
-
|
50
|
+
Tested on Ubuntu 10.04 with ruby1.8.7 and 1.9.2 using ffi (>= 0.6.3)
|
51
|
+
and JRuby 1.6.4 (head). A previous version of the library was tested
|
52
|
+
on Mac OS X 10.04. Please let me know if anything has stopped working.
|
27
53
|
|
28
|
-
|
54
|
+
Rubinius is not supported as its FFI does not provide the required
|
55
|
+
API, especially for dealing with buffers and pointers.
|
29
56
|
|
30
|
-
|
57
|
+
This is still very much a work-in-progress, so expect some rough edges
|
58
|
+
(and please {https://github.com/seanohalpin/ffi-ncurses/issues report
|
59
|
+
them}). Having said that, you can do quite a lot with it as it is.
|
31
60
|
|
32
|
-
|
61
|
+
= Install
|
62
|
+
|
63
|
+
$ [sudo] gem install ffi-ncurses
|
64
|
+
|
65
|
+
= Usage
|
33
66
|
|
34
67
|
Load the library with:
|
35
68
|
|
@@ -38,7 +71,7 @@ Load the library with:
|
|
38
71
|
FFI::NCurses methods can be called as module methods:
|
39
72
|
|
40
73
|
begin
|
41
|
-
|
74
|
+
FFI::NCurses.initscr
|
42
75
|
FFI::NCurses.clear
|
43
76
|
FFI::NCurses.addstr("Hello world!")
|
44
77
|
FFI::NCurses.refresh
|
@@ -49,15 +82,13 @@ FFI::NCurses methods can be called as module methods:
|
|
49
82
|
|
50
83
|
or as included methods:
|
51
84
|
|
52
|
-
require 'ffi-ncurses'
|
53
85
|
include FFI::NCurses
|
86
|
+
|
54
87
|
begin
|
55
|
-
|
56
|
-
start_color
|
57
|
-
curs_set 0
|
58
|
-
raw
|
88
|
+
initscr
|
59
89
|
cbreak
|
60
90
|
noecho
|
91
|
+
curs_set 0
|
61
92
|
clear
|
62
93
|
move 10, 10
|
63
94
|
standout
|
@@ -82,22 +113,23 @@ or as included methods:
|
|
82
113
|
|
83
114
|
== Typical initialization
|
84
115
|
|
85
|
-
|
116
|
+
FFI::NCurses.initscr
|
86
117
|
FFI::NCurses.start_color
|
87
118
|
FFI::NCurses.curs_set 0
|
88
119
|
FFI::NCurses.raw
|
89
|
-
FFI::NCurses.cbreak
|
90
120
|
FFI::NCurses.noecho
|
91
|
-
FFI::NCurses.keypad(stdscr, true)
|
121
|
+
FFI::NCurses.keypad(FFI::NCurses.stdscr, true)
|
92
122
|
|
93
123
|
== Colours
|
94
124
|
|
95
125
|
start_color
|
96
126
|
init_pair(1, FFI::NCurses::COLOR_BLACK, FFI::NCurses::COLOR_RED)
|
97
127
|
attr_set FFI::NCurses::A_NORMAL, 1, nil
|
98
|
-
addch("A"[0].ord) # works in both 1.8.
|
128
|
+
addch("A"[0].ord) # works in both 1.8.7 and 1.9.x
|
99
129
|
addch("Z"[0].ord | COLOR_PAIR(1))
|
100
130
|
|
131
|
+
See +examples/color.rb+ for an example of use.
|
132
|
+
|
101
133
|
== Cursor
|
102
134
|
|
103
135
|
=== Turn cursor off
|
@@ -123,25 +155,30 @@ or as included methods:
|
|
123
155
|
ch = wgetch(inner_win)
|
124
156
|
delwin(win)
|
125
157
|
|
126
|
-
rescue
|
158
|
+
rescue => e
|
127
159
|
FFI::NCurses.endwin
|
128
|
-
|
160
|
+
raise
|
129
161
|
ensure
|
130
162
|
FFI::NCurses.endwin
|
131
163
|
end
|
132
164
|
|
133
|
-
==
|
165
|
+
== Panels
|
134
166
|
|
135
|
-
|
167
|
+
See +examples/panel_simple.rb+ for how to use panels.
|
168
|
+
|
169
|
+
== Mouse handling
|
136
170
|
|
137
|
-
|
171
|
+
NOTE: In previous versions of ffi-ncurses, the ncurses mouse API was
|
172
|
+
included separately. You now no longer need to <tt>require
|
173
|
+
'ffi-ncurses/mouse'</tt> to get mouse support.
|
138
174
|
|
139
|
-
|
175
|
+
To use the mouse with ffi-ncurses, you first need to specify that you
|
176
|
+
want keypad translation with:
|
140
177
|
|
141
|
-
keypad stdscr,
|
178
|
+
keypad stdscr, true
|
142
179
|
|
143
180
|
otherwise your program will receive the raw mouse escape codes,
|
144
|
-
instead of KEY_MOUSE mouse event codes.
|
181
|
+
instead of +KEY_MOUSE+ mouse event codes.
|
145
182
|
|
146
183
|
Specify which events you want to handle with:
|
147
184
|
|
@@ -169,31 +206,63 @@ or
|
|
169
206
|
|
170
207
|
if FFI::NCurses.BUTTON_PRESS(mouse_event[:bstate], 1)
|
171
208
|
|
172
|
-
The possible button states are: PRESS
|
173
|
-
and TRIPLE_CLICK
|
209
|
+
The possible button states are: +PRESS+, +RELEASE+, +CLICK+,
|
210
|
+
+DOUBLE_CLICK+ and +TRIPLE_CLICK+.
|
174
211
|
|
175
|
-
|
212
|
+
See +examples/mouse.rb+ for a complete example.
|
176
213
|
|
177
214
|
== Specifying which curses library to use
|
178
215
|
|
179
216
|
You can specify which variant of curses you want to use by setting the
|
180
217
|
environment variable +RUBY_FFI_NCURSES_LIB+ to the one you want. For
|
181
|
-
example, to use PDCurses X11 curses lib, use:
|
218
|
+
example, to use the PDCurses X11 curses lib, use:
|
219
|
+
|
220
|
+
RUBY_FFI_NCURSES_LIB=XCurses ruby examples/example.rb
|
221
|
+
|
222
|
+
You could also use this to specify ncursesw-dbg for example to get
|
223
|
+
access to the +trace+ functions.
|
224
|
+
|
225
|
+
= Examples
|
226
|
+
|
227
|
+
+examples/acs_chars.rb+ :: How to display box drawing characters
|
228
|
+
+examples/attributes.rb+ :: How to set attributes
|
229
|
+
+examples/color.rb+ :: How to initialize and use colour
|
230
|
+
+examples/cursor.rb+ :: How to turn the cursor on and off
|
231
|
+
+examples/doc-eg1.rb+ :: Example 1 from the documentation
|
232
|
+
+examples/doc-eg2.rb+ :: Example 2 from the documentation
|
233
|
+
+examples/doc-eg3.rb+ :: Example 3 from the documentation
|
234
|
+
+examples/example.rb+ :: An example showing off the main features of ncurses
|
235
|
+
+examples/getkey.rb+ :: How to get Unicode input
|
236
|
+
+examples/getsetsyx.rb+ :: Shows how to use the getsetyx function
|
237
|
+
+examples/globals.rb+ :: Display ncurses global variables
|
238
|
+
+examples/hello.rb+ :: Hello world
|
239
|
+
+examples/hellowide.rb+ :: Hello world using wide characters
|
240
|
+
+examples/keys.rb+ :: How to use the getch function. See getkey for a more general solution
|
241
|
+
+examples/mouse.rb+ :: How to use the mouse
|
242
|
+
+examples/multiterm.rb+ :: How to display on more than one tty
|
243
|
+
+examples/newterm.rb+ :: How to use +newterm+ so you can pipe stdin into an ncurses program
|
244
|
+
+examples/panel_simple.rb+ :: How to use panels
|
245
|
+
+examples/printw-variadic.rb+:: How to call the +printw+ method
|
246
|
+
+examples/ripoffline.rb+ :: An example of the +ripoffline+ method
|
247
|
+
+examples/softkeys.rb+ :: How to set up soft keys (function key labels)
|
248
|
+
+examples/stdscr.rb+ :: Shows that +initscr+ returns same value as +stdscr+
|
249
|
+
+examples/temp_leave.rb+ :: How to temporarily shell out from an ncurses program
|
250
|
+
+examples/viewer.rb+ :: A simple file viewer (lesser than less) that shows how to use pads and pop up windows
|
251
|
+
+examples/wacs_chars.rb+ :: How to display wide (Unicode) box drawing characters
|
252
|
+
+examples/windows.rb+ :: Move a window about the screen
|
253
|
+
|
254
|
+
= Issues
|
255
|
+
|
256
|
+
Please report any issues on the {https://github.com/seanohalpin/ffi-ncurses/issues github issues} page.
|
182
257
|
|
183
|
-
|
258
|
+
= Trivia
|
184
259
|
|
185
|
-
|
186
|
-
|
187
|
-
|
260
|
+
While researching ncurses on Google, I innocently entered "curses
|
261
|
+
getsx" as a search term. NSFW and definitely not one for "I'm Feeling
|
262
|
+
Lucky".
|
188
263
|
|
189
264
|
= TO DO
|
190
265
|
|
191
|
-
== Complete translation of core functions to Darwin (Mac OS X)
|
192
|
-
|
193
|
-
There are some macros in darwin ncurses.h which I haven't
|
194
|
-
implemented yet. I'm working on it but if there are any you
|
195
|
-
desperately need let me know.
|
196
|
-
|
197
266
|
== Tests
|
198
267
|
|
199
268
|
This is tricky - I'm not sure exactly how to properly test a wrapper
|
@@ -209,17 +278,8 @@ the output. However, this is not really ready for prime time yet.
|
|
209
278
|
Things got a bit messy as I switched between the Linux and Mac
|
210
279
|
versions. The examples should be more focussed.
|
211
280
|
|
212
|
-
|
281
|
+
= Credits
|
213
282
|
|
214
|
-
|
215
|
-
forms and menus. I would rather spend time implementing similar
|
216
|
-
functionality on top of a portable text console library (or porting
|
217
|
-
rbcurses). However, in the interests of completeness, I suppose I
|
218
|
-
ought to at least scope it out.
|
219
|
-
|
220
|
-
= Trivia
|
283
|
+
Thanks to rahul and manveru for their support!
|
221
284
|
|
222
|
-
While researching ncurses on Google, I innocently entered "curses
|
223
|
-
getsx" as a search term. NSFW and definitely not one for "I'm Feeling
|
224
|
-
Lucky".
|
225
285
|
|
data/Rakefile
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
3
|
+
|
4
|
+
require 'ffi-ncurses/version'
|
5
|
+
project = FFI::NCurses
|
6
|
+
|
7
|
+
require 'rake/testtask'
|
8
|
+
require 'yard'
|
9
|
+
|
10
|
+
Rake::TestTask.new(:spec) do |spec|
|
11
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
12
|
+
end
|
13
|
+
|
14
|
+
task :default => %w(spec)
|
15
|
+
|
16
|
+
YARD::Rake::YardocTask.new do |t|
|
17
|
+
t.files = ['lib/**/*.rb']
|
18
|
+
t.options = %w[--readme README.rdoc]
|
19
|
+
end
|
20
|
+
|
21
|
+
desc "Build #{project::NAME}-#{project::VERSION} gem"
|
22
|
+
task :gem do
|
23
|
+
system "gem build #{project::NAME}.gemspec"
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "Push #{project::NAME}-#{project::VERSION} gem to rubygems.org"
|
27
|
+
task :release => :gem do
|
28
|
+
system "gem push #{project::NAME}-#{project::VERSION}.gem"
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: utf-8; -*-
|
3
|
+
require 'ffi-ncurses'
|
4
|
+
|
5
|
+
include FFI::NCurses
|
6
|
+
|
7
|
+
def main
|
8
|
+
begin
|
9
|
+
initscr
|
10
|
+
|
11
|
+
addstr("Upper left corner "); addch(ACS_ULCORNER); addstr("\n");
|
12
|
+
addstr("Lower left corner "); addch(ACS_LLCORNER); addstr("\n");
|
13
|
+
addstr("Lower right corner "); addch(ACS_LRCORNER); addstr("\n");
|
14
|
+
addstr("Tee pointing right "); addch(ACS_LTEE); addstr("\n");
|
15
|
+
addstr("Tee pointing left "); addch(ACS_RTEE); addstr("\n");
|
16
|
+
addstr("Tee pointing up "); addch(ACS_BTEE); addstr("\n");
|
17
|
+
addstr("Tee pointing down "); addch(ACS_TTEE); addstr("\n");
|
18
|
+
addstr("Horizontal line "); addch(ACS_HLINE); addstr("\n");
|
19
|
+
addstr("Vertical line "); addch(ACS_VLINE); addstr("\n");
|
20
|
+
addstr("Large Plus or cross over "); addch(ACS_PLUS); addstr("\n");
|
21
|
+
addstr("Scan Line 1 "); addch(ACS_S1); addstr("\n");
|
22
|
+
addstr("Scan Line 3 "); addch(ACS_S3); addstr("\n");
|
23
|
+
addstr("Scan Line 7 "); addch(ACS_S7); addstr("\n");
|
24
|
+
addstr("Scan Line 9 "); addch(ACS_S9); addstr("\n");
|
25
|
+
addstr("Diamond "); addch(ACS_DIAMOND); addstr("\n");
|
26
|
+
addstr("Checker board (stipple) "); addch(ACS_CKBOARD); addstr("\n");
|
27
|
+
addstr("Degree Symbol "); addch(ACS_DEGREE); addstr("\n");
|
28
|
+
addstr("Plus/Minus Symbol "); addch(ACS_PLMINUS); addstr("\n");
|
29
|
+
addstr("Bullet "); addch(ACS_BULLET); addstr("\n");
|
30
|
+
addstr("Arrow Pointing Left "); addch(ACS_LARROW); addstr("\n");
|
31
|
+
addstr("Arrow Pointing Right "); addch(ACS_RARROW); addstr("\n");
|
32
|
+
addstr("Arrow Pointing Down "); addch(ACS_DARROW); addstr("\n");
|
33
|
+
addstr("Arrow Pointing Up "); addch(ACS_UARROW); addstr("\n");
|
34
|
+
addstr("Board of squares "); addch(ACS_BOARD); addstr("\n");
|
35
|
+
addstr("Lantern Symbol "); addch(ACS_LANTERN); addstr("\n");
|
36
|
+
addstr("Solid Square Block "); addch(ACS_BLOCK); addstr("\n");
|
37
|
+
addstr("Less/Equal sign "); addch(ACS_LEQUAL); addstr("\n");
|
38
|
+
addstr("Greater/Equal sign "); addch(ACS_GEQUAL); addstr("\n");
|
39
|
+
addstr("Pi "); addch(ACS_PI); addstr("\n");
|
40
|
+
addstr("Not equal "); addch(ACS_NEQUAL); addstr("\n");
|
41
|
+
addstr("UK pound sign "); addch(ACS_STERLING); addstr("\n");
|
42
|
+
|
43
|
+
refresh
|
44
|
+
getch
|
45
|
+
rescue => e
|
46
|
+
endwin
|
47
|
+
raise
|
48
|
+
ensure
|
49
|
+
endwin
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
main
|