anchor.diff:  	 51 of 1b 425b to multi-key endof          \ D-arrow
   	 52 of 1b 415b to multi-key endof          \ U-arrow
   	 53 of led-state NumLk xor set-led false endof   \ NumLk
  -	 54 of [char] / endof                      \ keypad / 
  +	 54 of [char] / endof                      \ keypad /
   	 55 of [char] * endof                      \ keypad *
   	 56 of [char] - endof                      \ keypad -
   	 57 of [char] + endof                      \ keypad +
   	 58 of 0d endof                            \ keypad Enter
  -	 89 of [char] \ endof	                   \ japanese yen
  +	 89 of [char] \ endof                      \ japanese yen
   	 dup of false endof                        \ other keys are false
        endcase
        to ret                                        \ store char
  
positive.code: 		     38 of [char] ? endof
  		     dup of ret endof              \ other keys are no change
  		 endcase
  		 to ret                            \ overwrite new char    
  	     then
  	 then
       then
       led-state NumLk and 0 <> if                   \ if NumLk is on
         scancode 
         case                                        \ translate scan code --> char
  	 59 of [char] 1 endof
  	 5a of [char] 2 endof
  
negative.code:     is-ctrl if                                           \ ctrl is pressed?
  	is-alt if                                        \ alt is pressed?
  	    4c = if                                      \ del is pressed?
  		s" reboot.... " usb-debug-print
  		\ reset-all                              \ reboot
  		drop false                               \ invalidate del key on top of stack
  	    then
  	    false                                        \ dummy for last drop
  	then
      then
      drop                                                 \ clear stack
  ;
  
  : get-ukbd-char ( ScanCode -- char|false )
      dup ctrl_alt_del_key                                 \ check ctrl+alt+del
      dup to scancode                                      \ store scan code
      case                                                 \ translate scan code --> char
  	 04 of [char] a endof
  	 05 of [char] b endof
  	 06 of [char] c endof
  	 07 of [char] d endof
  	 08 of [char] e endof
  	 09 of [char] f endof
  	 0a of [char] g endof
  	 0b of [char] h endof
  	 0c of [char] i endof
  	 0d of [char] j endof
  	 0e of [char] k endof
  	 0f of [char] l endof
  	 10 of [char] m endof
  	 11 of [char] n endof
  	 12 of [char] o endof
  	 13 of [char] p endof
  	 14 of [char] q endof
  	 15 of [char] r endof
  	 16 of [char] s endof
  	 17 of [char] t endof
  	 18 of [char] u endof
  	 19 of [char] v endof
  	 1a of [char] w endof
  	 1b of [char] x endof
  	 1c of [char] y endof
  	 1d of [char] z endof
  	 1e of [char] 1 endof
  	 1f of [char] 2 endof
  	 20 of [char] 3 endof
  	 21 of [char] 4 endof
  	 22 of [char] 5 endof
  	 23 of [char] 6 endof
  	 24 of [char] 7 endof
  	 25 of [char] 8 endof
  	 26 of [char] 9 endof
  	 27 of [char] 0 endof
  	 28 of 0d endof                            \ Enter
  	 29 of 1b endof                            \ ESC
  	 2a of 08 endof                            \ Backsace
  	 2b of 09 endof                            \ Tab
  	 2c of 20 endof                            \ Space
  	 2d of [char] - endof
  	 2e of [char] = endof
  	 2f of [char] [ endof
  	 30 of [char] ] endof
  	 31 of [char] \ endof
  	 33 of [char] ; endof
  	 34 of [char] ' endof
  	 35 of [char] ` endof
  	 36 of [char] , endof
  	 37 of [char] . endof
  	 38 of [char] / endof
  	 39 of led-state CapsLk xor set-led false endof  \ CapsLk
  	 3a of 1b 7e31315b to multi-key endof      \ F1
  