[gforth] / gforth / ekey.fs  

gforth: gforth/ekey.fs

Diff for /gforth/ekey.fs between version 1.21 and 1.22

version 1.21, Sat Nov 8 19:43:50 2008 UTC version 1.22, Sun Nov 23 20:49:37 2008 UTC
Line 175 
Line 175 
   
 create ekey-buffer 8 chars allot  create ekey-buffer 8 chars allot
 2variable ekey-buffered  2variable ekey-buffered
   
 [IFUNDEF] #esc  27 Constant #esc  [THEN]  [IFUNDEF] #esc  27 Constant #esc  [THEN]
   
 : esc-prefix ( -- u )  : esc-prefix ( -- u )
Line 344 
Line 343 
     if      if
         drop clear-ekey-buffer          drop clear-ekey-buffer
         esc-prefix          esc-prefix
     then ;      then
       [IFDEF] max-single-byte
           dup max-single-byte u>= if
               clear-ekey-buffer
               ekey-buffered char-append-buffer
               ekey-buffer 1 u8addrlen 1 +do
                   key? 0= ?leave
                   key ekey-buffered char-append-buffer
               loop
               ekey-buffer 1 u8addrlen ekey-buffered @ = if
                   ekey-buffer xc@+ nip         else
                   ekey-buffered 2@ unkeys key  then
           then
       [THEN]
   ;
   
   [IFDEF] max-single-byte
   : ekey>char ( u -- u false | c true ) \ facility-ext e-key-to-char
       \G Convert keyboard event @var{u} into character @code{c} if possible.
       dup max-single-byte u< ; \ k-left must be first!
   : ekey>xchar ( u -- u false | xc true ) \ xchar-ext e-key-to-xchar
       \G Convert keyboard event @var{u} into xchar @code{xc} if possible.
       dup k-left u< ; \ k-left must be first!
   : ekey>fkey ( u1 -- u2 f ) \ X:ekeys
   \G If u1 is a keyboard event in the special key set, convert
   \G keyboard event @var{u1} into key id @var{u2} and return true;
   \G otherwise return @var{u1} and false.
       ekey>xchar 0= ;
   [ELSE]
 : ekey>char ( u -- u false | c true ) \ facility-ext e-key-to-char  : ekey>char ( u -- u false | c true ) \ facility-ext e-key-to-char
     \G Convert keyboard event @var{u} into character @code{c} if possible.      \G Convert keyboard event @var{u} into character @code{c} if possible.
     dup k-left u< ; \ k-left must be first!      dup k-left u< ; \ k-left must be first!
   
 : ekey>fkey ( u1 -- u2 f ) \ X:ekeys  : ekey>fkey ( u1 -- u2 f ) \ X:ekeys
 \G If u1 is a keyboard event in the special key set, convert  \G If u1 is a keyboard event in the special key set, convert
 \G keyboard event @var{u1} into key id @var{u2} and return true;  \G keyboard event @var{u1} into key id @var{u2} and return true;
 \G otherwise return @var{u1} and false.  \G otherwise return @var{u1} and false.
     ekey>char 0= ;      ekey>char 0= ;
   [THEN]
   
 ' key? alias ekey? ( -- flag ) \ facility-ext e-key-question  ' key? alias ekey? ( -- flag ) \ facility-ext e-key-question
 \G True if a keyboard event is available.  \G True if a keyboard event is available.


Generate output suitable for use with a patch program
Legend:
Removed from v.1.21  
changed lines
  Added in v.1.22

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help