mirror of
https://github.com/openai/codex.git
synced 2026-11-13 14:46:14 +00:00
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
This commit is contained in:
1 parent
a1dd74b535
commit
1e85ca099e
61 files changed
+3503
-660
No files matched your search
@@ -176,6 +176,13 @@ pub(crate) enum KeymapEditIntent {
|
||||
ReplaceOne { old_key: String },
|
||||
}
|
||||
|
||||
/// Number of key strokes recorded by one `/keymap` capture.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub(crate) enum KeymapCaptureMode {
|
||||
SingleKey,
|
||||
Chord,
|
||||
}
|
||||
|
||||
#[allow(clippy::large_enum_variant)]
|
||||
#[derive(Debug)]
|
||||
pub(crate) enum AppEvent {
|
||||
@@ -1116,6 +1123,7 @@ pub(crate) enum AppEvent {
|
||||
context: String,
|
||||
action: String,
|
||||
intent: KeymapEditIntent,
|
||||
capture_mode: KeymapCaptureMode,
|
||||
},
|
||||
|
||||
/// Open the keymap keypress inspector.
|
||||
|
||||
Reference in new issue
Block a user