You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ESC is a key. Meta is a modifiier. However, due to the esc-map's bizarre relationship with the global map, looking up meta-whatever in the global map will find whatever in the esc-map and so will ESC whatever, using ESC as a prefix in the global map and looking up whatever in the esc-map.
This ambiguity between key and modifier means that predicates that decide based on modifiers or sequence lengths need these sequences normalized to produce the expected results.
Sequences that are [ESC <up>], a two key sequence, are more likely to be entered as [M-<up>]
Some sequences are displayed as [M-ESC ESC] like for keyboard-escape-quit, but in reality, ESC ESC ESC is likely to be entered that way
Combinations of these require folding or unfolding, depending on whether there's just one meta or a triple of escapes
The global map workaround is currently to prefix every esc-map sequence with an additional meta and then list the result as a global map binding, which is effectively true and works downstream when binding, unbinding, or looking up keys
Some maps such as the company map, bind [ESC <escape> <escape>] etc, so we need more normalization still
Finally, when unbinding, the true sequence has to be unbound. While we want to display a sequence that the user expects to use, it's still necessary to preserve the true binding for any generation of un-bindings or when checking the difference between current bindings and the user's declared binding goals.
Most of these problems have already been worked around, but there's some mismatches that linger. This issue provides the context for future debugging as actual problems present themselves in practice.
The text was updated successfully, but these errors were encountered:
ESC is a key. Meta is a modifiier. However, due to the esc-map's bizarre relationship with the global map, looking up
meta-whatever
in the global map will findwhatever
in the esc-map and so willESC whatever
, usingESC
as a prefix in the global map and looking upwhatever
in the esc-map.This ambiguity between key and modifier means that predicates that decide based on modifiers or sequence lengths need these sequences normalized to produce the expected results.
[ESC <up>]
, a two key sequence, are more likely to be entered as[M-<up>]
[M-ESC ESC]
like forkeyboard-escape-quit
, but in reality, ESC ESC ESC is likely to be entered that way[ESC <escape> <escape>]
etc, so we need more normalization stillFinally, when unbinding, the true sequence has to be unbound. While we want to display a sequence that the user expects to use, it's still necessary to preserve the true binding for any generation of un-bindings or when checking the difference between current bindings and the user's declared binding goals.
Most of these problems have already been worked around, but there's some mismatches that linger. This issue provides the context for future debugging as actual problems present themselves in practice.
The text was updated successfully, but these errors were encountered: