vercel / hyper

A terminal built on web technologies
https://hyper.is
MIT License
43.35k stars 3.52k forks source link

Can't bind Ctrl+PgUp/Down to next/prev tab on Ubuntu Linux #3701

Open marius311 opened 5 years ago

marius311 commented 5 years ago

Issue

I've got the following in my keymap:

    "tab:next": "ctrl+pageup",
    "tab:prev": "ctrl+pagedown"

but the keys aren't working (nothing happens when I hit the key). If I change the keymap to instead e.g. "ctrl+shift+pageup" then that does work. Just "ctrl+pageup" works in other apps on my system, e.g. Atom or Chrome for switching tabs, so I don't think its being captured by the system somehow. Thanks for any advice!

``` // Future versions of Hyper may add additional config options, // which will not automatically be merged into this file. // See https://hyper.is#cfg for all currently supported options. module.exports = { config: { // choose either `'stable'` for receiving highly polished, // or `'canary'` for less polished but more frequent updates updateChannel: 'stable', // default font size in pixels for all tabs fontSize: 12, // font family with optional fallbacks fontFamily: 'Menlo, "DejaVu Sans Mono", Consolas, "Lucida Console", monospace', // default font weight: 'normal' or 'bold' fontWeight: 'normal', // font weight for bold characters: 'normal' or 'bold' fontWeightBold: 'bold', // line height as a relative unit lineHeight: 1, // letter spacing as a relative unit letterSpacing: 0, // terminal cursor background color and opacity (hex, rgb, hsl, hsv, hwb or cmyk) cursorColor: 'rgba(248,28,229,0.8)', // terminal text color under BLOCK cursor cursorAccentColor: '#000', // `'BEAM'` for |, `'UNDERLINE'` for _, `'BLOCK'` for █ cursorShape: 'BLOCK', // set to `true` (without backticks and without quotes) for blinking cursor cursorBlink: false, // color of the text foregroundColor: '#fff', // terminal background color // opacity is only supported on macOS backgroundColor: '#000', // terminal selection color selectionColor: 'rgba(248,28,229,0.3)', // border color (window, tabs) borderColor: '#333', // custom CSS to embed in the main window css: '', // custom CSS to embed in the terminal window termCSS: '', // if you're using a Linux setup which show native menus, set to false // default: `true` on Linux, `true` on Windows, ignored on macOS showHamburgerMenu: '', // set to `false` (without backticks and without quotes) if you want to hide the minimize, maximize and close buttons // additionally, set to `'left'` if you want them on the left, like in Ubuntu // default: `true` (without backticks and without quotes) on Windows and Linux, ignored on macOS showWindowControls: '', // custom padding (CSS format, i.e.: `top right bottom left`) padding: '12px 14px', // the full list. if you're going to provide the full color palette, // including the 6 x 6 color cubes and the grayscale map, just provide // an array here instead of a color map object colors: { black: '#000000', red: '#C51E14', green: '#1DC121', yellow: '#C7C329', blue: '#0A2FC4', magenta: '#C839C5', cyan: '#20C5C6', white: '#C7C7C7', lightBlack: '#686868', lightRed: '#FD6F6B', lightGreen: '#67F86F', lightYellow: '#FFFA72', lightBlue: '#6A76FB', lightMagenta: '#FD7CFC', lightCyan: '#68FDFE', lightWhite: '#FFFFFF', }, // the shell to run when spawning a new session (i.e. /usr/local/bin/fish) // if left empty, your system's login shell will be used by default // // Windows // - Make sure to use a full path if the binary name doesn't work // - Remove `--login` in shellArgs // // Bash on Windows // - Example: `C:\\Windows\\System32\\bash.exe` // // PowerShell on Windows // - Example: `C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe` shell: '', // for setting shell arguments (i.e. for using interactive shellArgs: `['-i']`) // by default `['--login']` will be used shellArgs: ['--login'], // for environment variables env: {}, // set to `false` for no bell bell: 'SOUND', // if `true` (without backticks and without quotes), selected text will automatically be copied to the clipboard copyOnSelect: false, // if `true` (without backticks and without quotes), hyper will be set as the default protocol client for SSH defaultSSHApp: true, // if `true` (without backticks and without quotes), on right click selected text will be copied or pasted if no // selection is present (`true` by default on Windows and disables the context menu feature) quickEdit: false, // choose either `'vertical'`, if you want the column mode when Option key is hold during selection (Default) // or `'force'`, if you want to force selection regardless of whether the terminal is in mouse events mode // (inside tmux or vim with mouse mode enabled for example). macOptionSelectionMode: 'vertical', // URL to custom bell // bellSoundURL: 'http://example.com/bell.mp3', // Whether to use the WebGL renderer. Set it to false to use canvas-based // rendering (slower, but supports transparent backgrounds) webGLRenderer: true, // for advanced config flags please refer to https://hyper.is/#cfg }, // a list of plugins to fetch and install from npm // format: [@org/]project[#version] // examples: // `hyperpower` // `@company/project` // `project#1.0.1` plugins: [ "hypercwd", "hyperlinks", "hyper-alt-click", "hyperterm-ubuntu-theme" ], // in development, you can create a directory under // `~/.hyper_plugins/local/` and include it here // to load it and avoid it being `npm install`ed localPlugins: [], keymaps: { "tab:next": "ctrl+pageup", "tab:prev": "ctrl+pagedown" } }; ```
pcnate commented 5 years ago

Here is my functioning Ubuntu Pop!_OS configuration:

  keymaps: {
    "tab:next": "ctrl+pagedown",
    "tab:prev": "ctrl+pageup",
    "pane:next": "ctrl+tab",
    "pane:prev": "ctrl+shift+tab"
  },

I suspect something else is using those keys and blocking it.

marius311 commented 5 years ago

Thanks, yea that's what I suspect as well, but any idea how to figure out what's stealing it? Like I mentioned, I have Ctrl+PgUp/Down bound successfully in other (even electron) apps.

marius311 commented 5 years ago

More info: I've found that the following is printed on the developer console when I press Ctrl+PgUp/Down:

ignoring move for single group  #bundle.js:1

This happens whether or not I've tried to bind Ctrl+PgUp/Down to anything.

marius311 commented 5 years ago

Ah ok, I see what's happening, the problem was that even though I had tab:prev/next: ctrl+pageup/down, the default for for switching panes is pane:prev/next: ctrl+pageup/down and for some reason this was winning out. I had to additionally change pane:prev/next to something else, then it worked.

This seems like a bug, since I would think nothing should override my custom keybindings like that, and also because it seems specific to ctrl+pageup/down (e.g. if I change next tab to ctrl+, then ctrl+, correctly triggers next tab, rather than the default of bringing up settings), so I'll leave this open.