Support for Back/Forward multimedia keys (#20695)

Peter Tripp created

- Added Support for Back/Forward multimedia keys (Linux)

Change summary

assets/keymaps/default-linux.json          | 2 ++
crates/gpui/src/platform/keystroke.rs      | 2 ++
crates/gpui/src/platform/linux/platform.rs | 2 ++
crates/gpui/src/platform/windows/events.rs | 4 ++++
4 files changed, 10 insertions(+)

Detailed changes

assets/keymaps/default-linux.json 🔗

@@ -251,6 +251,8 @@
       "ctrl-pagedown": "pane::ActivateNextItem",
       "ctrl-shift-pageup": "pane::SwapItemLeft",
       "ctrl-shift-pagedown": "pane::SwapItemRight",
+      "back": "pane::GoBack",
+      "forward": "pane::GoForward",
       "ctrl-w": "pane::CloseActiveItem",
       "ctrl-f4": "pane::CloseActiveItem",
       "alt-ctrl-t": ["pane::CloseInactiveItems", { "close_pinned": false }],

crates/gpui/src/platform/linux/platform.rs 🔗

@@ -684,6 +684,8 @@ impl Keystroke {
             Keysym::ISO_Left_Tab => "tab".to_owned(),
             Keysym::KP_Prior => "pageup".to_owned(),
             Keysym::KP_Next => "pagedown".to_owned(),
+            Keysym::XF86_Back => "back".to_owned(),
+            Keysym::XF86_Forward => "forward".to_owned(),
 
             Keysym::comma => ",".to_owned(),
             Keysym::period => ".".to_owned(),

crates/gpui/src/platform/windows/events.rs 🔗

@@ -1160,6 +1160,8 @@ fn parse_syskeydown_msg_keystroke(wparam: WPARAM) -> Option<Keystroke> {
         VK_END => "end",
         VK_PRIOR => "pageup",
         VK_NEXT => "pagedown",
+        VK_BROWSER_BACK => "back",
+        VK_BROWSER_FORWARD => "forward",
         VK_ESCAPE => "escape",
         VK_INSERT => "insert",
         VK_DELETE => "delete",
@@ -1196,6 +1198,8 @@ fn parse_keydown_msg_keystroke(wparam: WPARAM) -> Option<KeystrokeOrModifier> {
         VK_END => "end",
         VK_PRIOR => "pageup",
         VK_NEXT => "pagedown",
+        VK_BROWSER_BACK => "back",
+        VK_BROWSER_FORWARD => "forward",
         VK_ESCAPE => "escape",
         VK_INSERT => "insert",
         VK_DELETE => "delete",