--- vt102/vt102 2014/12/01 19:40:48 1.6 +++ vt102/vt102 2014/12/01 20:01:29 1.7 @@ -23,7 +23,7 @@ # ./vt102 curl http://artscene.textfiles.com/vt100/trekvid.vt # ./vt102 curl http://artscene.textfiles.com/vt100/surf.vt # in 3d! -# TODO: ctrl +# TODO: ctrl key map use common::sense; @@ -586,12 +586,18 @@ ############################################################################# -# 0x80 shift, 0x100 ctrl, 0x200 toggle +# 0x080 shift, 0x100 ctrl my %KEYMAP = ( "\t" => 0x3a, "\r" => 0x64, "\n" => 0x44, + "\x00" => 0x77 | 0x100, # CTRL-SPACE + "\x1c" => 0x45 | 0x100, # CTRL-\ + "\x1d" => 0x14 | 0x100, # CTRL-] + "\x1e" => 0x24 | 0x100, # CTRL-~ + "\x1f" => 0x75 | 0x100, # CTRL-? + # hardcoded rxvt keys "\e" => 0x2a, # ESC "\e[3~" => 0x03, # DC @@ -622,7 +628,7 @@ @KEYMAP{map chr, 0x5b .. 0x7e} = unpack "C*", pack "H*", "154514b7a5" . "244a6879591949485816574746766706" . "050a185a0817780969077a95c594a4"; -$KEYMAP{"\x3f" & $_} ||= $KEYMAP{$_} | 0x100 for "a" .. "z"; # ctrl +$KEYMAP{"\x1f" & $_} ||= $KEYMAP{$_} | 0x100 for "a" .. "z"; # ctrl $KEYMAP{uc $_} ||= $KEYMAP{$_} | 0x080 for "a" .. "z"; # shift my $KEYMATCH = join "|", map quotemeta, reverse sort keys %KEYMAP;