Changeset main,28 for main/input.lisp


Ignore:
Timestamp:
11/04/2007 06:19:33 AM (19 years ago)
Author:
David Owen <dsowen@…>
branch-nick:
tui-new
revision id:
dsowen@fugue88.ws-20071104061933-b5oiof728551luy5
Message:

Major overhaul to get rid of CDK stuff, and modularize all the ncurses stuff.
Using CLOS for genericity.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/input.lisp

    r15 r28  
    22;;;; Lisp will detect typos, &c.
    33
    4 (defpackage #:input
    5   (:use #:cl #:cffi)
    6   (:export #:%wget-wch))
     4(defpackage #:tui-input
     5  (:use #:cl #:cffi #:tui-window)
     6  (:export #:read-key))
    77
    8 (in-package #:input)
     8(in-package #:tui-input)
    99
    1010
     
    1313;;; they should be symbolized in a wrapper.
    1414
    15 (defconstant +ok+ 0)
    16 (defconstant +err+ -1)
    1715(defconstant +key-code-yes+ #o0400)
    1816
     
    140138    (let ((r (wget-wch raw-window ch)))
    141139      (cond
    142         ((= r +ok+)
     140        ((= r cdk::+ok+)
    143141         (code-char (mem-ref ch 'wchar)))
    144142        ((= r +key-code-yes+)
    145143         (getf +key-table+ (mem-ref ch 'wchar) :key-unknown))
    146         ((= r +err+)
     144        ((= r cdk::+err+)
    147145         nil)
    148146        (t (error "Should not be here."))))))
     147
     148(defun read-key (window)
     149  (%wget-wch (window-pointer window)))
    149150
    150151
    151152
    152153(defun test ()
    153   (let ((screen (cdk::c-init-curses-screen)))
     154  (with-screen (s)
    154155    (cdk::c-cbreak)
    155156    (cdk::c-noecho)
    156157    (cdk::c-nonl)
    157     (cdk::c-keypad screen t)
     158    (cdk::c-keypad (window-pointer s) t)
    158159    (loop
    159        (let ((c (%wget-wch screen)))
     160       (let ((c (read-key s)))
    160161         (when (and (characterp c) (char= c #\Esc))
    161162           (return))
     
    165166                   (keyword "~&~A~%")
    166167                   (t "~&UNKNOWN: ~A~%"))
    167                  c))))
    168   (cdk::c-end-curses))
     168                 c)))))
Note: See TracChangeset for help on using the changeset viewer.