: _tbl^ ( swap input tbl ) _atbl = IF _dtbl ELSE _atbl THEN ; : (key) 0 _2nd! 0 ( lastchr ) BEGIN _alock@ IF _atbl ELSE _dtbl THEN OVER 0x80 ( alpha ) = IF _tbl^ _2nd@ IF _alock^ THEN THEN SWAP 0x81 = _2nd! _gti + C@ DUP 0 0x80 >< UNTIL ( loop if not in range ) ( lowercase? ) _2nd@ IF DUP 'A' 'Z' =><= IF 0x20 OR THEN THEN ; : KBD$ 0 [ KBD_MEM LITN ] C! ;