10 REM > BLib.DeepKey 0.10 07-Jun-2012 J.G.Harston
   20 :
   30 :
   40 REM FNdeep_inkey(time%) and FNdeep_get
   50 REM ----------------------------------
   60 REM Returns -1 if no key pressed within time% in centiseconds
   70 REM  or b0-b8  : character code (b8=1 if function/editing key)
   80 REM     b9     : reserved
   90 REM     b10    : RightAlt
  100 REM     b11    : RightCtrl
  110 REM     b12    : RightShift
  120 REM     b13    : LeftAlt
  130 REM     b14    : LeftCtrl
  140 REM     b15    : LeftShift
  150 REM     b16    : Alt pending
  160 REM     b17    : Scroll Lock
  170 REM     b18    : NumLock
  180 REM     b19    : Shift
  190 REM     b20    : Caps Lock
  200 REM     b21    : reserved
  210 REM     b22    : Ctrl
  220 REM     b23    : Shift Lock
  230 REM     b24-b31: physical key pressed
  240 :
  250 DEFFNdeep_inkey(T%):LOCALC%,M%,K%,S%:C%=INKEY(T%):IFC%=-1:=-1
  260 IFC%=0:C%=GET:IFC%:C%=(C%OR&100)EOR((C%AND15)>9AND&40)
  270 S%=0:FORK%=4TO9:S%=(S%<<1)OR(INKEY-K%AND1):NEXT
  280 SYS6,&CA,,&FFTO,M%:SYS6,&7ATO,K%:=C%OR(S%<<10)OR((M%EOR&14)<<16)OR(K%<<24)
  290 :
  300 DEFFNdeep_get:LOCALA%:REPEAT:A%=FNdeep_inkey(10):UNTILA%<>-1:=A%
  310 :