source: project/release/5/ncurses/tags/2.0/ncurses.scm @ 37277

Last change on this file since 37277 was 37277, checked in by evhan, 2 years ago

ncurses: port to C5

File size: 19.6 KB
Line 
1;;;; ncurses.scm
2
3(declare
4  (fixnum-arithmetic)
5  (disable-interrupts)
6  (foreign-declare "#include <ncurses.h>"))
7
8(module ncurses
9
10  (endwin
11   initscr
12   box
13   copywin
14   delwin
15   addstr
16   getbegyx
17   getmaxyx
18   getparyx
19   getyx
20   getsyx
21   isendwin
22   mvwin
23   newpad
24   pnoutrefresh
25   prefresh
26   subpad
27   derwin
28   newwin
29   subwin
30   overwrite
31   overlay
32   refresh
33   wrefresh
34   scr_dump
35   scr_init
36   scr_restore
37   scr_set
38   setsyx
39   is_linetouched
40   is_wintouched
41   touchline
42   touchwin
43   untouchwin
44   wtouchln
45   leaveok
46   move
47   wmove
48   mvcur
49   doupdate
50   refresh
51   wnoutrefresh
52   wrefresh
53   addch
54   mvaddch
55   mvwaddch
56   waddch
57   addnstr
58   addstr
59   mvaddstr
60   mvaddnstr
61   mvwaddstr
62   mvwaddnstr
63   waddnstr
64   waddstr
65   clear
66   erase
67   wclear
68   werase
69   clearok
70   idlok
71   scrollok
72   setscrreg
73   wsetscrreg
74   clrtobot
75   wclrtobot
76   clrtoeol
77   wclrtoeol
78   delch
79   mvdelch
80   mvwdelch
81   wdelch
82   getstr
83   getnstr
84   mvgetnstr
85   mvgetstr
86   wgetnstr
87   mvwgetnstr
88   mvwgetstr
89   inch
90   mvinch
91   winch
92   mvwinch
93   insch
94   mvinsch
95   winsch
96   mvwinsch
97   deleteln
98   wdeleteln
99   echochar
100   wechochar
101   flushinp
102   insertln
103   winsertln
104   keyname
105   meta
106   nodelay
107   scrl
108   scroll
109   wscrl
110   unctrl
111   ungetch
112   wgetch
113   getch
114   cbreak
115   raw
116   nocbreak
117   noraw
118   def_prog_mode
119   def_shell_mode
120   reset_prog_mode
121   reset_shell_mode
122   delay_output
123   echo
124   noecho
125   halfdelay
126   has_ic
127   has_il
128   longname
129   nl
130   nonl
131   notimeout
132   timeout
133   wtimeout
134   resetty
135   savetty
136   can_change_color
137   COLOR_PAIR
138   has_colors
139   init_color
140   init_pair
141   pair_content
142   PAIR_NUMBER
143   start_color
144   COLORS
145   COLOR_PAIRS
146   attron
147   attroff
148   attrset
149   wattron
150   wattroff
151   wattrset
152   beep
153   curs_set
154   flash
155   intrflush
156   keypad
157   standout
158   standend
159   wstandout
160   wstandend
161   erasechar
162   killchar
163   stdscr
164   curscr
165   LINES
166   COLS
167   COLOR_BLACK
168   COLOR_RED
169   COLOR_GREEN
170   COLOR_MAGENTA
171   COLOR_YELLOW
172   COLOR_BLUE
173   COLOR_CYAN
174   COLOR_WHITE
175   A_NORMAL
176   A_UNDERLINE
177   A_REVERSE
178   A_BLINK
179   A_BOLD
180   A_DIM
181   A_ALTCHARSET
182   A_INVIS
183   A_ATTRIBUTES
184   A_CHARTEXT
185   A_COLOR
186   A_STANDOUT
187   A_PROTECT
188   A_LEFT
189   A_RIGHT
190   A_LOW
191   A_TOP
192   A_VERTICAL
193   ACS_ULCORNER
194   ACS_LLCORNER
195   ACS_URCORNER
196   ACS_LRCORNER
197   ACS_RTEE
198   ACS_LTEE
199   ACS_BTEE
200   ACS_TTEE
201   ACS_HLINE
202   ACS_VLINE
203   ACS_PLUS
204   ACS_S1
205   ACS_S9
206   ACS_CKBOARD
207   ACS_DEGREE
208   ACS_DIAMOND
209   ACS_PLMINUS
210   ACS_BULLET
211   ACS_LARROW
212   ACS_RARROW
213   ACS_DARROW
214   ACS_UARROW
215   ACS_LANTERN
216   ACS_BLOCK
217   KEY_CODE_YES
218   KEY_MIN
219   KEY_BREAK
220   KEY_SRESET
221   KEY_RESET
222   KEY_DOWN
223   KEY_UP
224   KEY_LEFT
225   KEY_RIGHT
226   KEY_HOME
227   KEY_BACKSPACE
228   KEY_F0
229   KEY_DL
230   KEY_IL
231   KEY_DC
232   KEY_IC
233   KEY_EIC
234   KEY_CLEAR
235   KEY_EOS
236   KEY_EOL
237   KEY_SF
238   KEY_SR
239   KEY_NPAGE
240   KEY_PPAGE
241   KEY_STAB
242   KEY_CTAB
243   KEY_CATAB
244   KEY_ENTER
245   KEY_PRINT
246   KEY_LL
247   KEY_A1
248   KEY_A3
249   KEY_B2
250   KEY_C1
251   KEY_C3
252   KEY_BTAB
253   KEY_BEG
254   KEY_CANCEL
255   KEY_CLOSE
256   KEY_COMMAND
257   KEY_COPY
258   KEY_CREATE
259   KEY_END
260   KEY_EXIT
261   KEY_FIND
262   KEY_HELP
263   KEY_MARK
264   KEY_MESSAGE
265   KEY_MOVE
266   KEY_NEXT
267   KEY_OPEN
268   KEY_OPTIONS
269   KEY_PREVIOUS
270   KEY_REDO
271   KEY_REFERENCE
272   KEY_REFRESH
273   KEY_REPLACE
274   KEY_RESTART
275   KEY_RESUME
276   KEY_SAVE
277   KEY_SBEG
278   KEY_SCANCEL
279   KEY_SCOMMAND
280   KEY_SCOPY
281   KEY_SCREATE
282   KEY_SDC
283   KEY_SDL
284   KEY_SELECT
285   KEY_SEND
286   KEY_SEOL
287   KEY_SEXIT
288   KEY_SFIND
289   KEY_SHELP
290   KEY_SHOME
291   KEY_SIC
292   KEY_SLEFT
293   KEY_SMESSAGE
294   KEY_SMOVE
295   KEY_SNEXT
296   KEY_SOPTIONS
297   KEY_SPREVIOUS
298   KEY_SPRINT
299   KEY_SREDO
300   KEY_SREPLACE
301   KEY_SRIGHT
302   KEY_SRSUME
303   KEY_SSAVE
304   KEY_SSUSPEND
305   KEY_SUNDO
306   KEY_SUSPEND
307   KEY_UNDO
308   KEY_MOUSE
309   KEY_RESIZE
310   KEY_F
311   ERR
312   printw
313   wprintw
314   mvprintw
315   mvwprintw
316   border
317   wborder
318   hline
319   whline
320   vline
321   wvline
322   mvhline
323   mvwhline
324   mvvline
325   mvwvline
326   bkgd
327   bkgdset
328   getbkgd
329   wbkgd
330   wbkgdset
331   wresize
332   use_default_colors
333   assume_default_colors)
334
335  (import (scheme))
336  (import (bind))
337  (import (chicken base))
338  (import (chicken condition))
339  (import (chicken foreign))
340  (import (chicken format))
341  (import-for-syntax (chicken format))
342  (import-for-syntax (chicken string))
343
344(bind-options export-constants: #t)
345
346(define-foreign-variable OK int)
347(define-foreign-variable ERR_ int "ERR")
348
349(define ERR ERR_)
350
351(define (check code)
352  (when (eq? code ERR_)
353    (signal 
354     (make-composite-condition
355      (make-property-condition 'exn 'message "curses error")
356      (make-property-condition 'curses) ) ) ) )
357
358(define (to-chtype x)
359  (if (char? x)
360      (char->integer x)
361      x) )
362
363(define-foreign-type ptr c-pointer)
364(define-foreign-type err int #f check)
365(define-foreign-type chtype int to-chtype integer->char)
366(define-foreign-type rchtype int to-chtype)
367(define-foreign-type win (c-pointer "WINDOW"))
368
369(define-syntax def
370  (er-macro-transformer
371   (lambda (sexp r c)
372     (let* ((rt-sexp (cadr sexp))
373            (name-sexp (caddr sexp))
374            (name-string (->string (strip-syntax name-sexp)))
375            (ats-sexp (cdddr sexp))
376            (%define (r 'define))
377            (%foreign-lambda (r 'foreign-lambda)))
378       `(,%define ,name-sexp
379          (,%foreign-lambda ,rt-sexp ,name-string ,@ats-sexp))))))
380
381(define-syntax defv
382  (er-macro-transformer
383   (lambda (sexp r c)
384     (let* ((rt-sexp (cadr sexp))
385            (name-sexp (caddr sexp))
386            (name-string (->string (strip-syntax name-sexp)))
387            (%tmp (r 'tmp))
388            (%begin (r 'begin))
389            (%define-foreign-variable (r 'define-foreign-variable))
390            (%define (r 'define)))
391       `(,%begin
392         (,%define-foreign-variable ,%tmp ,rt-sexp ,name-string)
393         (,%define (,name-sexp) ,%tmp))))))
394
395(define-syntax defc
396  (er-macro-transformer
397   (lambda (sexp r c)
398     (let* ((rt-sexp (cadr sexp))
399            (name-sexp (caddr sexp))
400            (name-string (->string (strip-syntax name-sexp)))
401            (%tmp (r 'tmp))
402            (%begin (r 'begin))
403            (%define-foreign-variable (r 'define-foreign-variable))
404            (%define (r 'define)))
405       `(,%begin
406         (,%define-foreign-variable ,%tmp ,rt-sexp ,name-string)
407         (,%define ,name-sexp ,%tmp))))))
408
409(def err endwin)
410(def ptr initscr)
411; newterm
412(def err box ptr chtype chtype)
413(def err copywin ptr ptr int int int int int int bool)
414(def err delwin ptr)
415
416(define-syntax getpos
417  (er-macro-transformer
418   (lambda (sexp r c)
419     (let ((m-sexp (cadr sexp))
420           (%define (r 'define))
421           (%lambda (r 'lambda))
422           (%let (r 'let))
423           (%get (r 'get))
424           (%foreign-lambda* (r 'foreign-lambda*))
425           (%void (r 'void))
426           (%pointer (r 'c-pointer))
427           (%int (r 'int))
428           (%sprintf (r 'sprintf))
429           (%let-location (r 'let-location))
430           (%location (r 'location))
431           (%values (r 'values)))
432       `(,%define ,m-sexp
433          (,%let ([,%get (,%foreign-lambda*
434                      ;; ISSUE: renaming the void return type doesn't seem to work.
435                      ;; ,%void
436                      void
437                      ([(,%pointer ,%int) yp] [(,%pointer ,%int) xp])
438                      ,(sprintf "int y, x; ~A(y, x); *yp = y; *xp = x;" (strip-syntax m-sexp)))])
439            (,%lambda ()
440              (,%let-location ([y ,%int] [x ,%int])
441                            (,%get (,%location y) (,%location x))
442                            (,%values y x)))))))))
443
444(define-syntax wgetpos
445  (er-macro-transformer
446   (lambda (sexp r c)
447     (let ((m-sexp (cadr sexp))
448           (%define (r 'define))
449           (%get (r 'get))
450           (%void (r 'void))
451           (%win (r 'win))
452           (%pointer (r 'c-pointer))
453           (%int (r 'int))
454           (%lambda (r 'lambda))
455           (%let-location (r 'let-location))
456           (%location (r 'location))
457           (%values (r 'values))
458           (%foreign-lambda* (r 'foreign-lambda*))
459           (%let (r 'let)))
460       `(,%define ,m-sexp
461          ;; ISSUE: renaming the void return type doesn't seem to work.
462          ;; (,%let ([,%get (,%foreign-lambda* ,%void ([,%win w] [(,%pointer ,%int) yp] [(,%pointer ,%int) xp])
463          (,%let ([,%get (,%foreign-lambda* void ([,%win w] [(,%pointer ,%int) yp] [(,%pointer ,%int) xp])
464                     ,(sprintf "int y, x; ~A(w, y, x); *yp = y; *xp = x;" (strip-syntax m-sexp)))])
465          (,%lambda (w)
466            (,%let-location ([y ,%int] [x ,%int])
467                            (,%get w (,%location y) (,%location x))
468                            (,%values y x)))))))))
469
470(wgetpos getbegyx)
471(wgetpos getmaxyx)
472(wgetpos getparyx)
473(wgetpos getyx)
474
475(getpos getsyx)
476
477(def bool isendwin)
478(def err mvwin win int int)
479(def ptr newpad int int)
480(def err pnoutrefresh win int int int int int int)
481(def err prefresh win int int int int int int)
482(def ptr subpad ptr int int int int)
483(def win derwin win int int int int)
484(def win newwin int int int int)
485(def win subwin win int int int int)
486(def err overwrite win win)
487(def err overlay win win)
488(def void refresh)
489(def void wrefresh win)
490(def err scr_dump c-string)
491(def err scr_init c-string)
492(def err scr_restore c-string)
493(def err scr_set c-string)
494(def void setsyx int int)
495(def bool is_linetouched win int)
496(def bool is_wintouched win)
497(def err touchline win int int)
498(def err touchwin win)
499(def err untouchwin win)
500(def err wtouchln win int int bool)
501(def void leaveok win bool)
502(def err move int int)
503(def err wmove win int int)
504(def err mvcur int int int int)
505(def err doupdate)
506(def err refresh)
507(def err wnoutrefresh win)
508(def err wrefresh win)
509(def err addch chtype)
510(def err mvaddch int int chtype)
511(def err mvwaddch win int int chtype)
512(def err waddch win chtype)
513(def err addnstr c-string int)
514(def err addstr c-string)
515(def err mvaddstr int int c-string)
516(def err mvaddnstr int int c-string int)
517(def err mvwaddstr win int int c-string)
518(def err mvwaddnstr win int int c-string int)
519(def err waddnstr win c-string int)
520(def err waddstr win c-string)
521(def err clear)
522(def err erase)
523(def err wclear win)
524(def err werase win)
525(def err clearok win bool)
526(def err idlok win bool)
527(def err scrollok win bool)
528(def err setscrreg int int)
529(def err wsetscrreg win int int)
530(def err clrtobot)
531(def err wclrtobot win)
532(def err clrtoeol)
533(def err wclrtoeol win)
534(def err delch)
535(def err mvdelch int int)
536(def void mvwdelch win int int)
537(def void wdelch win)
538(def err getstr c-pointer)
539(def err getnstr c-pointer int)
540(def err mvgetnstr int int c-pointer int)
541(def err mvgetstr int int c-pointer)
542(def err wgetnstr win c-pointer int)
543(def err mvwgetnstr win int int c-pointer int)
544(def err mvwgetstr win int int c-pointer)
545(def chtype inch)
546(def chtype mvinch int int)
547(def chtype winch win)
548(def chtype mvwinch win int int)
549(def chtype insch chtype)
550(def chtype mvinsch int int chtype)
551(def chtype winsch win chtype)
552(def chtype mvwinsch win int int chtype)
553(def err deleteln)
554(def err wdeleteln win)
555(def err echochar chtype)
556(def err wechochar win chtype)
557(def void flushinp)
558(def err insertln)
559(def err winsertln win)
560(def c-string keyname int)
561(def err meta win bool)
562(def err nodelay win bool)
563; scanw, wscanw, mvscanw, mvwscanw
564(def err scrl int)
565(def err scroll win)
566(def err wscrl win int)
567(def c-string unctrl chtype)
568(def void ungetch int)
569(def chtype wgetch win)
570(define (getch) (wgetch (stdscr)))
571(def err cbreak)
572(def err raw)
573(def err nocbreak)
574(def err noraw)
575(def err def_prog_mode)
576(def err def_shell_mode)
577(def err reset_prog_mode)
578(def err reset_shell_mode)
579; del_curterm, restartterm, set_curterm, setupterm
580(def err delay_output int)
581(def err echo)
582(def err noecho)
583; garbagedlines
584(def err halfdelay int)
585(def bool has_ic)
586(def bool has_il)
587(def c-string longname)
588(def err nl)
589(def err nonl)
590(def err notimeout win bool)
591(def void timeout int)
592(def void wtimeout win int)
593;  tputs
594(def err resetty)
595(def err savetty)
596; ripoffline
597; tgetent, tgetflag, tgetnum, tgetstr, tgoto, tigetflag, tigetnum, tigetstr, tparm
598(def bool can_change_color)
599; color_content
600(def int COLOR_PAIR int)
601(def bool has_colors)
602(def err init_color short short short short)
603(def err init_pair short short short)
604; bkgd
605(def void bkgdset chtype)
606(def void wbkgdset win chtype)
607(def int bkgd chtype)
608(def int wbkgd win chtype)
609(def chtype getbkgd win)
610; wresize
611(def int wresize win int int)
612; default_colors
613(def err use_default_colors)
614(def err assume_default_colors int int)
615
616(define pair_content
617  (let ([content (foreign-lambda err "pair_content" short (c-pointer short) (c-pointer short))])
618    (lambda (c)
619      (let-location ([f short] [b short])
620        (content c (location f) (location b))
621        (values f b) ) ) ) )
622
623(def int PAIR_NUMBER int)
624(def err start_color)
625
626(defv int COLORS)
627(defv int COLOR_PAIRS)
628
629(def err attron int)
630(def err attroff int)
631(def err attrset int)
632(def err wattron win int)
633(def err wattroff win int)
634(def err wattrset win int)
635(def void beep)
636(def err curs_set int)
637(def void flash)
638(def err intrflush win bool)
639(def err keypad win bool)
640(def void standout)
641(def void standend)
642(def void wstandout win)
643(def void wstandend win)
644; typeahead
645; vidattr, vid_attr, vidputs, vid_puts
646; slk_attroff, slk_attr_off, slk_attron, slk_attr_on, slk_attrset, slk_attr_set, slk_clear,, slk_color, slk_init, slk_label
647; slk_noutrefresh, slk_refresh, slk_restore, slk_set, slk_touch, slk_wset
648; baudrate
649(def char erasechar)
650(def char killchar)
651; erasewchar, killwchar
652; filter
653(defv win stdscr)
654(defv win curscr)
655(defv int LINES)
656(defv int COLS)
657
658(defc int COLOR_BLACK)
659(defc int COLOR_RED)
660(defc int COLOR_GREEN)
661(defc int COLOR_MAGENTA)
662(defc int COLOR_YELLOW)
663(defc int COLOR_BLUE)
664(defc int COLOR_CYAN)
665(defc int COLOR_WHITE)
666
667(defc int A_NORMAL)
668(defc int A_UNDERLINE)
669(defc int A_REVERSE)
670(defc int A_BLINK)
671(defc int A_BOLD)
672(defc int A_DIM)
673(defc int A_ALTCHARSET)
674(defc int A_INVIS)
675(defc int A_ATTRIBUTES)
676(defc int A_CHARTEXT)
677(defc int A_COLOR)
678(defc int A_STANDOUT)
679(defc int A_PROTECT)
680(defc int A_LEFT)
681(defc int A_RIGHT)
682(defc int A_LOW)
683(defc int A_TOP)
684(defc int A_VERTICAL)
685
686(defv rchtype ACS_ULCORNER)
687(defv rchtype ACS_LLCORNER)
688(defv rchtype ACS_URCORNER)
689(defv rchtype ACS_LRCORNER)
690(defv rchtype ACS_RTEE)
691(defv rchtype ACS_LTEE)
692(defv rchtype ACS_BTEE)
693(defv rchtype ACS_TTEE)
694(defv rchtype ACS_HLINE)
695(defv rchtype ACS_VLINE)
696(defv rchtype ACS_PLUS)
697
698(defv rchtype ACS_S1)
699(defv rchtype ACS_S9)
700(defv rchtype ACS_CKBOARD)
701(defv rchtype ACS_DEGREE)
702(defv rchtype ACS_DIAMOND)
703(defv rchtype ACS_PLMINUS)
704(defv rchtype ACS_BULLET)
705(defv rchtype ACS_LARROW)
706(defv rchtype ACS_RARROW)
707(defv rchtype ACS_DARROW)
708(defv rchtype ACS_UARROW)
709(defv rchtype ACS_LANTERN)
710(defv rchtype ACS_BLOCK)
711
712(bind #<<EOF
713___declare(export_constants, yes)
714#define KEY_CODE_YES    0400            /* A wchar_t contains a key code */
715#define KEY_MIN         0401            /* Minimum curses key */
716#define KEY_BREAK       0401            /* Break key (unreliable) */
717#define KEY_SRESET      0530            /* Soft (partial) reset (unreliable) */
718#define KEY_RESET       0531            /* Reset or hard reset (unreliable) */
719/*
720 * These definitions were generated by ./MKkey_defs.sh ./Caps
721 */
722#define KEY_DOWN        0402            /* down-arrow key */
723#define KEY_UP          0403            /* up-arrow key */
724#define KEY_LEFT        0404            /* left-arrow key */
725#define KEY_RIGHT       0405            /* right-arrow key */
726#define KEY_HOME        0406            /* home key */
727#define KEY_BACKSPACE   0407            /* backspace key */
728#define KEY_F0          0410            /* Function keys.  Space for 64 */
729#define KEY_DL          0510            /* delete-line key */
730#define KEY_IL          0511            /* insert-line key */
731#define KEY_DC          0512            /* delete-character key */
732#define KEY_IC          0513            /* insert-character key */
733#define KEY_EIC         0514            /* sent by rmir or smir in insert mode */
734#define KEY_CLEAR       0515            /* clear-screen or erase key */
735#define KEY_EOS         0516            /* clear-to-end-of-screen key */
736#define KEY_EOL         0517            /* clear-to-end-of-line key */
737#define KEY_SF          0520            /* scroll-forward key */
738#define KEY_SR          0521            /* scroll-backward key */
739#define KEY_NPAGE       0522            /* next-page key */
740#define KEY_PPAGE       0523            /* previous-page key */
741#define KEY_STAB        0524            /* set-tab key */
742#define KEY_CTAB        0525            /* clear-tab key */
743#define KEY_CATAB       0526            /* clear-all-tabs key */
744#define KEY_ENTER       0527            /* enter/send key */
745#define KEY_PRINT       0532            /* print key */
746#define KEY_LL          0533            /* lower-left key (home down) */
747#define KEY_A1          0534            /* upper left of keypad */
748#define KEY_A3          0535            /* upper right of keypad */
749#define KEY_B2          0536            /* center of keypad */
750#define KEY_C1          0537            /* lower left of keypad */
751#define KEY_C3          0540            /* lower right of keypad */
752#define KEY_BTAB        0541            /* back-tab key */
753#define KEY_BEG         0542            /* begin key */
754#define KEY_CANCEL      0543            /* cancel key */
755#define KEY_CLOSE       0544            /* close key */
756#define KEY_COMMAND     0545            /* command key */
757#define KEY_COPY        0546            /* copy key */
758#define KEY_CREATE      0547            /* create key */
759#define KEY_END         0550            /* end key */
760#define KEY_EXIT        0551            /* exit key */
761#define KEY_FIND        0552            /* find key */
762#define KEY_HELP        0553            /* help key */
763#define KEY_MARK        0554            /* mark key */
764#define KEY_MESSAGE     0555            /* message key */
765#define KEY_MOVE        0556            /* move key */
766#define KEY_NEXT        0557            /* next key */
767#define KEY_OPEN        0560            /* open key */
768#define KEY_OPTIONS     0561            /* options key */
769#define KEY_PREVIOUS    0562            /* previous key */
770#define KEY_REDO        0563            /* redo key */
771#define KEY_REFERENCE   0564            /* reference key */
772#define KEY_REFRESH     0565            /* refresh key */
773#define KEY_REPLACE     0566            /* replace key */
774#define KEY_RESTART     0567            /* restart key */
775#define KEY_RESUME      0570            /* resume key */
776#define KEY_SAVE        0571            /* save key */
777#define KEY_SBEG        0572            /* shifted begin key */
778#define KEY_SCANCEL     0573            /* shifted cancel key */
779#define KEY_SCOMMAND    0574            /* shifted command key */
780#define KEY_SCOPY       0575            /* shifted copy key */
781#define KEY_SCREATE     0576            /* shifted create key */
782#define KEY_SDC         0577            /* shifted delete-character key */
783#define KEY_SDL         0600            /* shifted delete-line key */
784#define KEY_SELECT      0601            /* select key */
785#define KEY_SEND        0602            /* shifted end key */
786#define KEY_SEOL        0603            /* shifted clear-to-end-of-line key */
787#define KEY_SEXIT       0604            /* shifted exit key */
788#define KEY_SFIND       0605            /* shifted find key */
789#define KEY_SHELP       0606            /* shifted help key */
790#define KEY_SHOME       0607            /* shifted home key */
791#define KEY_SIC         0610            /* shifted insert-character key */
792#define KEY_SLEFT       0611            /* shifted left-arrow key */
793#define KEY_SMESSAGE    0612            /* shifted message key */
794#define KEY_SMOVE       0613            /* shifted move key */
795#define KEY_SNEXT       0614            /* shifted next key */
796#define KEY_SOPTIONS    0615            /* shifted options key */
797#define KEY_SPREVIOUS   0616            /* shifted previous key */
798#define KEY_SPRINT      0617            /* shifted print key */
799#define KEY_SREDO       0620            /* shifted redo key */
800#define KEY_SREPLACE    0621            /* shifted replace key */
801#define KEY_SRIGHT      0622            /* shifted right-arrow key */
802#define KEY_SRSUME      0623            /* shifted resume key */
803#define KEY_SSAVE       0624            /* shifted save key */
804#define KEY_SSUSPEND    0625            /* shifted suspend key */
805#define KEY_SUNDO       0626            /* shifted undo key */
806#define KEY_SUSPEND     0627            /* suspend key */
807#define KEY_UNDO        0630            /* undo key */
808#define KEY_MOUSE       0631            /* Mouse event has occurred */
809#define KEY_RESIZE      0632            /* Terminal resize event */
810EOF
811)
812
813(define (KEY_F n) (+ KEY_F0 n))
814
815(define (printw . args) (addstr (apply sprintf args)))
816(define (wprintw w . args) (waddstr w (apply sprintf args)))
817(define (mvprintw y x . args) (mvaddstr y x (apply sprintf args)))
818(define (mvwprintw w y x . args) (mvwaddstr w y x (apply sprintf args)))
819
820;;; Suggested by anonymous contributor:
821
822(def err border chtype chtype chtype chtype chtype chtype chtype chtype)
823(def err wborder win chtype chtype chtype chtype chtype chtype chtype chtype)
824(def err hline chtype int)
825(def err whline win chtype int)
826(def err vline chtype int)
827(def err wvline win chtype int)
828(def err mvhline int int chtype int)
829(def err mvwhline win int int chtype int)
830(def err mvvline int int chtype int)
831(def err mvwvline win int int chtype int)
832)
Note: See TracBrowser for help on using the repository browser.