| \ ekey etc. |
\ ekey etc. |
| |
|
| \ Copyright (C) 1999,2002 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. |
| |
|
| : 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: |
| 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 |
| 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 |
| 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 event is available. |
| |
|
| \ : esc? ( -- flag ) recursive |
\ : esc? ( -- flag ) recursive |
| \ key? 0= |
\ key? 0= |