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<()> {
33
                     let alt = modifiers.contains(KeyModifiers::ALT);
33
                     let alt = modifiers.contains(KeyModifiers::ALT);
34
                     let shift = modifiers.contains(KeyModifiers::SHIFT);
34
                     let shift = modifiers.contains(KeyModifiers::SHIFT);
35
 
35
 
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
+                    };
36
                     println!(
42
                     println!(
37
-                        "Key: {:?} | Modifiers: ctrl={} alt={} shift={} | Kind: {:?} | State: {:?}\r",
43
+                        "Key: {:?}{} | Modifiers: ctrl={} alt={} shift={} | Kind: {:?} | State: {:?}\r",
38
-                        code, ctrl, alt, shift, kind, state
44
+                        code, char_info, ctrl, alt, shift, kind, state
39
                     );
45
                     );
40
 
46
 
41
                     // Quit on Ctrl+C
47
                     // Quit on Ctrl+C
src/editor/state.rsmodified
@@ -1975,7 +1975,9 @@ impl Editor {
1975
                 self.undo();
1975
                 self.undo();
1976
             }
1976
             }
1977
             (Key::Char('z'), Modifiers { ctrl: true, shift: true, .. })
1977
             (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
1979
                 self.redo();
1981
                 self.redo();
1980
             }
1982
             }
1981
 
1983