This patch includes 2 things (to be fixed and separated anyway; change
log still missing) for discussion:
* mouse modes 6 and 15 (numeric mouse coordinates)
* semi-fix for missing terminal status responses
The fix tries to detect the proper fhandler for CONIO, which is then
used to queue the response.
Problem 1: I am not sure whether this detection is proper in all cases,
what e.g. if /dev/tty is reopened etc. I don't know where else a
relation between the handles for CONIN and CONOUT might be established.
Problem 2: While the response reaches the application with this patch,
only the first byte is read right-away. Further bytes are delayed until
other input is becoming present (typing a key). This may (or may not) be
related to other issues with select(), so maybe it's worth analyzing it.
Thomas
diff -rup sav/fhandler.h ./fhandler.h
--- sav/fhandler.h 2012-04-01 19:46:04.000000000 +0200
+++ ./fhandler.h 2012-04-02 15:47:22.385727000 +0200
@@ -1282,8 +1282,11 @@ class dev_console
bool insert_mode;
int use_mouse;
+ bool ext_mouse_mode6;
+ bool ext_mouse_mode15;
bool use_focus;
bool raw_win32_keyboard_mode;
+ fhandler_console * fh_tty;
inline UINT get_console_cp ();
DWORD con_to_str (char *d, int dlen, WCHAR w);
diff -rup sav/fhandler_console.cc ./fhandler_console.cc
--- sav/fhandler_console.cc 2012-04-02 00:28:55.000000000 +0200
+++ ./fhandler_console.cc 2012-04-02 18:02:26.004016200 +0200
@@ -139,6 +139,8 @@ fhandler_console::set_unit ()
if (shared_console_info)
{
fh_devices this_unit = dev ();
+ if (this_unit == FH_TTY)
+ dev_state.fh_tty = this;