After hours and hours (and hours) of life sucking debugging I found out the offending code (in read_key_sequence): if ((FIXNUMP (key) && XFIXNUM (key) == -2) /* wrong_kboard_jmpbuf */ /* When switching to a new tty (with a new keyboard), read_char returns the new buffer, rather than -2 (Bug#5095). This is because `terminal-init-xterm' calls read-char, which eats the wrong_kboard_jmpbuf return. Any better way to fix this? -- cyd */ || (interrupted_kboard != current_kboard)) { .... mock_input = 0; goto replay_entire_sequence; } The problem with the fix for #5095 is that it's dropping the current event, which is a valid char event and not -2. Thus, the first esc char sent by the terminal after turning on focus tracking is lost and we get `[`, `I` events separately inserted into the buffer afterwards. Attached is a patch that replays key as mock input when it's not -2. Can I ask for some of my hidpi fringe or colorized comint/python history patches to be merged in exchange ;) ? Best regards -- Carlos