Hi! I found myself in a similar situation with an experimental package I've been working on, mode-line-keyboard [1]. In this package I need to ignore event, like key down, all together. My solution is to bind functions to input-event-map that calls `read-key` recursively, as I found that returning nil breaks a key sequence. I just realised that I haven't tried [] so I might need to revisit this. Anyway, I found the key map handing in Emacs really confusing. To help me out I put together a companion package, keymap-logger [2], that logs most things that is passed to and transformed by the various keymaps like input-key-map and key-translation-map. Maybe it can help you to gain some insight of what is going on. -- Anders [1]: https://github.com/Lindydancer/mode-line-keyboard [2]: https://github.com/Lindydancer/keymap-logger On Thu, Dec 13, 2018 at 8:11 PM Yuri Khan wrote: > Hello emacs-devel, > > I am trying to implement an input-decode-map for the Kitty terminal > emulator [1], specifically, for its full keyboard mode extension [2]. > This would solve one of the two major deficiences of Emacs in a > terminal emulator, namely, the inability to distinguish many > keystrokes. (The other one, lack of full color, is also solved by > Kitty, with the right terminfo modifications.) > > In the full keyboard mode, the terminal passes to the application > *all* keystrokes, in a very machine-friendly format. That is, for > events other than character input (i.e. normal characters, shifted > characters, Enter, Tab, and Backspace), it sends an escape sequence > containing a key code, a modifier bit mask, and whether the key was > pressed, released, or autorepeated. > > This is a bit too much for an application such as Emacs; in > particular, it is not interested in key release events, or events > regarding modifier keys. > > To give an example, Kitty sends the sequence “ESC _ K p A B b ESC \” > for the event “Left Alt pressed”. > > I can get Emacs to ignore this sequence by doing this: > > (define-key input-decode-map "\e_KpABb\e\\" []) > > However, input decoding is accompanied by echoing the current key > sequence prefix, and when the sequence is complete, Emacs clears the > echo area. With key release events, this happens *a lot*. This is > suboptimal because sometimes Emacs asks a question in the echo area > and waits for a key. > > For example, when the user presses C-x C-c, (kill-emacs) may ask > whether to save files. Then the release event for C-c comes, and the > echo area is cleared. > > Is there a way to turn off echoing for prefixes of sequences matched > against input-decode-map, so that echoing still works for “manual” key > sequences but not sequences sent by the terminal? > > If not, would such an option be considered useful? > > > [1]: https://sw.kovidgoyal.net/kitty/ > [2]: > https://sw.kovidgoyal.net/kitty/protocol-extensions.html#keyboard-handling > >