Felipe Coury
1e85ca099e
Support two-stroke TUI key chords ( #36511 )
...
## What changed
- Accept two-stroke bindings such as `ctrl-x ctrl-s` in TUI keymap configuration while preserving arrays as alternative bindings.
- Route chords through the active TUI context, show pending and configured chord hints, and cancel pending chords on `esc`, context changes, or a one-second timeout.
- Extend `/keymap` to capture, add, replace, and display key chords.
- Reject chords that conflict with active single-key bindings, overlapping-context chords, or reserved terminal shortcuts.
## Testing
- Add coverage for chord parsing, validation, matching, timeout and cancellation behavior, context dispatch, key capture, and rendered shortcut hints.
GitOrigin-RevId: dfdede03f518d4936ad8621ebf5537026f2b282e
2026-08-01 17:43:03 +00:00
..
2026-03-28 11:23:07 -06:00
2026-07-15 01:36:44 +00:00
2026-05-13 07:13:57 +00:00
2026-03-28 11:23:07 -06:00
2026-04-07 17:55:40 -07:00
2026-07-18 03:58:20 +00:00
2026-07-17 23:11:07 +00:00
2026-07-18 03:58:20 +00:00
2026-06-11 22:26:31 -07:00
2026-05-14 20:51:08 -07:00
2026-04-27 09:51:12 -07:00
2026-07-18 03:58:20 +00:00
2026-07-18 03:58:20 +00:00
2026-07-18 03:58:20 +00:00
2026-07-18 03:58:20 +00:00
2026-07-18 03:58:20 +00:00
2026-06-08 17:03:52 -07:00
2026-07-20 21:00:17 +00:00
2026-07-21 19:08:58 +00:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-07-21 15:53:33 +00:00
2026-07-11 17:47:17 +00:00
2026-07-11 17:47:17 +00:00
2026-07-11 17:47:17 +00:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-06-05 08:34:34 -07:00
2026-07-22 15:34:11 +00:00
2026-07-22 15:34:11 +00:00
2026-07-19 21:34:05 +00:00
2026-07-17 23:19:12 +00:00
2026-05-26 16:08:45 -03:00
2026-05-26 16:08:45 -03:00
2026-08-01 17:43:03 +00:00
2026-08-01 17:43:03 +00:00
2026-04-28 12:52:25 -03:00
2026-05-04 14:40:50 -03:00
2026-05-04 14:40:50 -03:00
2026-05-04 14:40:50 -03:00
2026-07-23 21:03:40 +00:00
2026-07-23 21:03:40 +00:00
2026-07-23 21:03:40 +00:00
2026-07-23 21:03:40 +00:00
2026-08-01 17:43:03 +00:00
2026-07-23 21:03:40 +00:00
2026-07-23 21:03:40 +00:00
2026-06-08 17:02:36 -07:00
2026-04-27 13:40:46 -07:00
2026-05-27 16:18:24 -03:00
2026-03-28 11:23:07 -06:00
2026-05-09 13:58:10 -03:00
2026-05-25 15:42:28 -03:00
2026-05-27 20:27:55 +00:00
2026-07-29 14:01:31 +00:00
2026-05-27 20:27:55 +00:00
2026-05-27 20:27:55 +00:00
2026-05-27 20:27:55 +00:00
2026-05-27 16:18:24 -03:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-07-31 18:58:32 +00:00
2026-05-05 13:32:54 -07:00
2026-05-05 13:32:54 -07:00
2026-05-05 13:32:54 -07:00
2026-05-05 13:32:54 -07:00
2026-05-05 13:32:54 -07:00
2026-05-05 13:32:54 -07:00
2026-05-05 13:32:54 -07:00
2026-05-05 13:32:54 -07:00
2026-05-05 13:32:54 -07:00
2026-05-05 13:32:54 -07:00
2026-05-05 13:32:54 -07:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-05-05 13:32:54 -07:00
2026-05-05 13:32:54 -07:00
2026-04-06 08:51:13 -07:00
2026-05-05 13:32:54 -07:00
2026-06-05 08:32:07 -07:00
2026-06-05 08:32:07 -07:00
2026-05-27 18:59:17 +00:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-05-01 09:07:56 -07:00
2026-07-29 13:57:46 +00:00
2026-03-28 11:23:07 -06:00