tenseleyflow/fackr / 2d68717

Browse files

fix: Ctrl+] redo keybinding on kitty protocol terminals

Authored by mfwolffe <wolffemf@dukes.jmu.edu>
SHA
2d68717cd9e8bb81a0485f2b54300322b3a07ee4
Parents
6dfa5f8
Tree
6355e7e

2 changed files

StatusFile+-
M src/bin/keytest.rs 8 2
M src/editor/state.rs 3 1
src/bin/keytest.rsmodified
@@ -33,9 +33,15 @@ fn main() -> io::Result<()> {
3333
                     let alt = modifiers.contains(KeyModifiers::ALT);
3434
                     let shift = modifiers.contains(KeyModifiers::SHIFT);
3535
 
36
+                    // Show raw char value for debugging control characters
37
+                    let char_info = if let KeyCode::Char(c) = code {
38
+                        format!(" (0x{:02X})", c as u8)
39
+                    } else {
40
+                        String::new()
41
+                    };
3642
                     println!(
37
-                        "Key: {:?} | Modifiers: ctrl={} alt={} shift={} | Kind: {:?} | State: {:?}\r",
38
-                        code, ctrl, alt, shift, kind, state
43
+                        "Key: {:?}{} | Modifiers: ctrl={} alt={} shift={} | Kind: {:?} | State: {:?}\r",
44
+                        code, char_info, ctrl, alt, shift, kind, state
3945
                     );
4046
 
4147
                     // Quit on Ctrl+C
src/editor/state.rsmodified
@@ -1975,7 +1975,9 @@ impl Editor {
19751975
                 self.undo();
19761976
             }
19771977
             (Key::Char('z'), Modifiers { ctrl: true, shift: true, .. })
1978
-            | (Key::Char(']'), Modifiers { ctrl: true, .. }) => {
1978
+            | (Key::Char(']'), Modifiers { ctrl: true, .. })
1979
+            | (Key::Char('5'), Modifiers { ctrl: true, .. })  // Ctrl+] reports as Ctrl+5 on some terminals
1980
+            | (Key::Char('\x1d'), _) => {  // 0x1D = Ctrl+] as raw control character
19791981
                 self.redo();
19801982
             }
19811983