in reply to Re: using \x in regex
in thread using \x in regex

that is definitely the key, thanx ;}

Since each of the four bytes from ReadKey for a "multicharacter" key is the same as one byte from a fresh keypress, is there no way to distinguish a four-byte key from four one byte keys? Otherwise, a waiting ReadKey loop will have to answer to EITHER the 1-byte flavour OR the 4-byte, but could not answer to either/or...

...unless the first byte of the 4-bytes is unique (indicating a multi-character key). Which it appears that it is (1b)...

...to be continued

Replies are listed 'Best First'.
Re^3: using \x in regex
by almut (Canon) on Feb 29, 2008 at 21:19 UTC
    ... Which it appears that it is (1b)

    Yes, 1b is the escape key, which introduces an escape sequence.

    Still, it's somewhat tricky to handle, because sequences may have different lengths (e.g. my function keys (F1-F12) produce 5-bytes). What you could do is put all possible escape sequences into some lookup hash. Then, when you encounter the escape char, reset $buf and switch into an "escape mode", which means that for every char received from ReadKey(), you'd try to lookup the current buffer content in the hash. Once you succeed, you've reached the end of the escape sequence, and you can switch back to "normal mode". To be able to handle possibly unforeseen sequences, you'll probably want to switch back from escape mode anyway as soon as you've reached a certain buffer length without a successful lookup. Or some such...  (I could post some code, in case I should have failed to make it clear...:)