I want to jump between windows with the same shortcuts as in web browser.

So I tried

bind-key -n "C-{" previous-window
bind-key -n "C-}" next-window


bind-key -n "C-S-[" previous-window
bind-key -n "C-S-]" next-window

It is not working.

I'm using macos, kitty and zsh.


1 Answer 1


There's no such thing as a ^{ character.

There are 32 ^X control characters for bytes 0 to 0x1f: ^@, ^A..^Z, ^[, ^\ , ^], ^^, ^_. Also ^? which is byte 0x7f, the last character in the ASCII set.

Note that terminals send ^I on both Ctrl+I and Tab, ^[ on both Ctrl+[ and Escape, ^M on both Ctrl+M and Enter. Upon Backspace, some send ^H (BS) some ^? (DEL). Some send ^@ (NUL) on Ctrl+@ and Ctrl+Space, etc. IOW, characters send upon pressing Ctrl + some key are control characters (characters that have a control function, like ^M which is carriage-return which returns the teletypewriter's carriage to the start position), of which there is only a limited set in ASCII (33 in total).

On my British PC keyboard { is on Shift+[ and with my terminal emulator (xterm) Ctrl+Shift+[ sends ^[ like Ctrl+[ or Esc do. AFAICT, kitty sends nothing upon Ctrl+Shift+[.

You could always configure it so it sends some particular character or sequence of characters upon pressing Ctrl+Shift+[ (or the equivalent on your keyboard), and then bind that to something in your tmux configuration.

For instance, with:

map ctrl+shift+[ send_text all \x1b[23~
map ctrl+shift+] send_text all \x1b[24~

In your ~/.kitty/kitty.conf, kitty would send the same sequences as it's know to send for the F11 and F12 keys (that \x1b here being ^[ aka ESC).

And you could bind that in the tmux configuration with:

bind-key -n "F11" previous-window
bind-key -n "F12" next-window

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .