version 1.9, 2003/08/25 14:17:44
|
version 1.13, 2005/12/31 15:46:08
|
Line 1
|
Line 1
|
\ ekey etc. |
\ ekey etc. |
|
|
\ Copyright (C) 1999,2002,2003 Free Software Foundation, Inc. |
\ Copyright (C) 1999,2002,2003,2004,2005 Free Software Foundation, Inc. |
|
|
\ This file is part of Gforth. |
\ This file is part of Gforth. |
|
|
Line 35
|
Line 35
|
: keycode ( "name" -- ; name execution: -- u ) |
: keycode ( "name" -- ; name execution: -- u ) |
create ; |
create ; |
|
|
keycode k-left |
\ most of the keys are also in pfe, except: |
keycode k-right |
\ k-insert, k-delete, k11, k12, s-k11, s-k12 |
keycode k-up |
|
keycode k-down |
keycode k-left ( -- u ) \ gforth |
keycode k-home |
keycode k-right ( -- u ) \ gforth |
keycode k-end |
keycode k-up ( -- u ) \ gforth |
keycode k-prior \ note: captured by xterm |
keycode k-down ( -- u ) \ gforth |
keycode k-next \ note: captured by xterm |
keycode k-home ( -- u ) \ gforth |
keycode k-insert \ not in pfe |
\G aka Pos1 |
127 constant k-delete \ not an escape sequence on my xterm, so use ASCII code |
keycode k-end ( -- u ) \ gforth |
|
keycode k-prior ( -- u ) \ gforth |
|
\G aka PgUp |
|
keycode k-next ( -- u ) \ gforth |
|
\G aka PgDn |
|
keycode k-insert ( -- u ) \ gforth |
|
127 constant k-delete ( -- u ) \ gforth |
|
\ not an escape sequence on my xterm, so use ASCII code |
|
|
\ function/keypad keys |
\ function/keypad keys |
keycode k1 |
keycode k1 ( -- u ) \ gforth |
keycode k2 |
keycode k2 ( -- u ) \ gforth |
keycode k3 |
keycode k3 ( -- u ) \ gforth |
keycode k4 |
keycode k4 ( -- u ) \ gforth |
keycode k5 |
keycode k5 ( -- u ) \ gforth |
keycode k6 |
keycode k6 ( -- u ) \ gforth |
keycode k7 |
keycode k7 ( -- u ) \ gforth |
keycode k8 |
keycode k8 ( -- u ) \ gforth |
keycode k9 |
keycode k9 ( -- u ) \ gforth |
keycode k10 |
keycode k10 ( -- u ) \ gforth |
keycode k11 \ not in pfe |
keycode k11 ( -- u ) \ gforth |
keycode k12 \ not in pfe |
keycode k12 ( -- u ) \ gforth |
\ shifted fuinction keys (don't work in xterm (same as unshifted, but |
\ shifted fuinction keys (don't work in xterm (same as unshifted, but |
\ s-k1..s-k8 work in the Linux console) |
\ s-k1..s-k8 work in the Linux console) |
keycode s-k1 |
keycode s-k1 ( -- u ) \ gforth |
keycode s-k2 |
keycode s-k2 ( -- u ) \ gforth |
keycode s-k3 |
keycode s-k3 ( -- u ) \ gforth |
keycode s-k4 |
keycode s-k4 ( -- u ) \ gforth |
keycode s-k5 |
keycode s-k5 ( -- u ) \ gforth |
keycode s-k6 |
keycode s-k6 ( -- u ) \ gforth |
keycode s-k7 |
keycode s-k7 ( -- u ) \ gforth |
keycode s-k8 |
keycode s-k8 ( -- u ) \ gforth |
keycode s-k9 |
keycode s-k9 ( -- u ) \ gforth |
keycode s-k10 |
keycode s-k10 ( -- u ) \ gforth |
keycode s-k11 \ not in pfe |
keycode s-k11 ( -- u ) \ gforth |
keycode s-k12 \ not in pfe |
keycode s-k12 ( -- u ) \ gforth |
|
|
\ helper word |
\ helper word |
\ print a key sequence: |
\ print a key sequence: |
Line 117 table constant esc-sequences \ and prefi
|
Line 125 table constant esc-sequences \ and prefi
|
create ekey-buffer 8 chars allot |
create ekey-buffer 8 chars allot |
2variable ekey-buffered |
2variable ekey-buffered |
|
|
27 constant #esc |
[IFUNDEF] #esc 27 Constant #esc [THEN] |
|
|
: esc-prefix ( -- u ) |
: esc-prefix ( -- u ) |
key? if |
key? if |
Line 199 set-current
|
Line 207 set-current
|
[ENDIF] |
[ENDIF] |
|
|
: clear-ekey-buffer ( -- ) |
: clear-ekey-buffer ( -- ) |
ekey-buffer 0 ekey-buffered 2! ; |
ekey-buffer 0 ekey-buffered 2! ; |
|
|
: ekey ( -- u ) \ facility-ext e-key |
: ekey ( -- u ) \ facility-ext e-key |
|
\G Receive a keyboard event @var{u} (encoding implementation-defined). |
key dup #esc = |
key dup #esc = |
if |
if |
drop clear-ekey-buffer |
drop clear-ekey-buffer |
Line 209 set-current
|
Line 218 set-current
|
then ; |
then ; |
|
|
: 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. |
dup 256 u< ; |
dup 256 u< ; |
|
|
' key? alias ekey? ( -- flag ) |
' key? alias ekey? ( -- flag ) \ facility-ext e-key-question |
|
\G True if a keyboard even is available. |
|
|
\ : esc? ( -- flag ) recursive |
\ : esc? ( -- flag ) recursive |
\ key? 0= |
\ key? 0= |