From 2d1f1be816f729e079ca54e9c05644fdb8110e21 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Wed, 17 Dec 2025 20:49:04 +0000 Subject: [PATCH] Define OS specific keybindings in separate files --- kitty.conf | 384 +---------------------------------------------------- linux.conf | 35 +++++ macos.conf | 35 +++++ 3 files changed, 73 insertions(+), 381 deletions(-) create mode 100644 linux.conf create mode 100644 macos.conf diff --git a/kitty.conf b/kitty.conf index 5e6f82a..75798ec 100644 --- a/kitty.conf +++ b/kitty.conf @@ -1086,389 +1086,11 @@ linux_display_server x11 #: }}} #: Keyboard shortcuts {{{ - -#: Keys are identified simply by their lowercase unicode characters. -#: For example: ``a`` for the A key, ``[`` for the left square bracket -#: key, etc. For functional keys, such as ``Enter or Escape`` the -#: names are present at https://sw.kovidgoyal.net/kitty/keyboard- -#: protocol.html#functional-key-definitions. For a list of modifier -#: names, see: GLFW mods -#: - -#: On Linux you can also use XKB key names to bind keys that are not -#: supported by GLFW. See XKB keys -#: for a list of key names. The name to use is the part -#: after the XKB_KEY_ prefix. Note that you can only use an XKB key -#: name for keys that are not known as GLFW keys. - -#: Finally, you can use raw system key codes to map keys, again only -#: for keys that are not known as GLFW keys. To see the system key -#: code for a key, start kitty with the kitty --debug-input option. -#: Then kitty will output some debug text for every key event. In that -#: text look for ``native_code`` the value of that becomes the key -#: name in the shortcut. For example: - -#: .. code-block:: none - -#: on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a' - -#: Here, the key name for the A key is 0x61 and you can use it with:: - -#: map ctrl+0x61 something - -#: to map ctrl+a to something. - -#: You can use the special action no_op to unmap a keyboard shortcut -#: that is assigned in the default configuration:: - -#: map kitty_mod+space no_op - -#: You can combine multiple actions to be triggered by a single -#: shortcut, using the syntax below:: - -#: map key combine action1 action2 action3 ... - -#: For example:: - -#: map kitty_mod+e combine : new_window : next_layout - -#: this will create a new window and switch to the next available -#: layout - -#: You can use multi-key shortcuts using the syntax shown below:: - -#: map key1>key2>key3 action - -#: For example:: - -#: map ctrl+f>2 set_font_size 20 - -kitty_mod ctrl+shift - -#: The value of kitty_mod is used as the modifier for all default -#: shortcuts, you can change it in your kitty.conf to change the -#: modifiers for all the default shortcuts. - -clear_all_shortcuts no - -#: You can have kitty remove all shortcut definition seen up to this -#: point. Useful, for instance, to remove the default shortcuts. - -# kitten_alias hints hints --hints-offset=0 - -#: You can create aliases for kitten names, this allows overriding the -#: defaults for kitten options and can also be used to shorten -#: repeated mappings of the same kitten with a specific group of -#: options. For example, the above alias changes the default value of -#: kitty +kitten hints --hints-offset to zero for all mappings, -#: including the builtin ones. - -#: Clipboard {{{ - -map kitty_mod+c copy_to_clipboard - -#: There is also a copy_or_interrupt action that can be optionally -#: mapped to Ctrl+c. It will copy only if there is a selection and -#: send an interrupt otherwise. Similarly, copy_and_clear_or_interrupt -#: will copy and clear the selection or send an interrupt if there is -#: no selection. - -map kitty_mod+v paste_from_clipboard -map kitty_mod+s paste_from_selection -map kitty_mod+o pass_selection_to_program - -#: You can also pass the contents of the current selection to any -#: program using pass_selection_to_program. By default, the system's -#: open program is used, but you can specify your own, the selection -#: will be passed as a command line argument to the program, for -#: example:: - -#: map kitty_mod+o pass_selection_to_program firefox - -#: You can pass the current selection to a terminal program running in -#: a new kitty window, by using the @selection placeholder:: - -#: map kitty_mod+y new_window less @selection - -#: }}} - -#: Scrolling {{{ - -map kitty_mod+up scroll_line_up -map kitty_mod+down scroll_line_down -map kitty_mod+page_up scroll_page_up -map kitty_mod+page_down scroll_page_down -map kitty_mod+home scroll_home -map kitty_mod+end scroll_end -map kitty_mod+h show_scrollback - -#: You can pipe the contents of the current screen + history buffer as -#: STDIN to an arbitrary program using the ``launch`` function. For -#: example, the following opens the scrollback buffer in less in an -#: overlay window:: - -#: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R - -#: For more details on piping screen and buffer contents to external -#: programs, see launch. - -#: }}} - -#: Window management {{{ - -map kitty_mod+enter new_window - -#: You can open a new window running an arbitrary program, for -#: example:: - -#: map kitty_mod+y launch mutt - -#: You can open a new window with the current working directory set to -#: the working directory of the current window using:: - -#: map ctrl+alt+enter launch --cwd=current - -#: You can open a new window that is allowed to control kitty via the -#: kitty remote control facility by prefixing the command line with @. -#: Any programs running in that window will be allowed to control -#: kitty. For example:: - -#: map ctrl+enter launch --allow-remote-control some_program - -#: You can open a new window next to the currently active window or as -#: the first window, with:: - -#: map ctrl+n launch --location=neighbor some_program -#: map ctrl+f launch --location=first some_program - -#: For more details, see launch. - -map kitty_mod+n new_os_window - -#: Works like new_window above, except that it opens a top level OS -#: kitty window. In particular you can use new_os_window_with_cwd to -#: open a window with the current working directory. - -map kitty_mod+w close_window -map kitty_mod+] next_window -map kitty_mod+[ previous_window -map kitty_mod+f move_window_forward -map kitty_mod+b move_window_backward -map kitty_mod+` move_window_to_top -map kitty_mod+r start_resizing_window -map kitty_mod+1 first_window -map kitty_mod+2 second_window -map kitty_mod+3 third_window -map kitty_mod+4 fourth_window -map kitty_mod+5 fifth_window -map kitty_mod+6 sixth_window -map kitty_mod+7 seventh_window -map kitty_mod+8 eighth_window -map kitty_mod+9 ninth_window -map kitty_mod+0 tenth_window -#: }}} - -#: Tab management {{{ - -map kitty_mod+] next_tab -map kitty_mod+[ previous_tab -map kitty_mod+t new_tab -map kitty_mod+w close_tab -map shift+cmd+w close_os_window -map kitty_mod+. move_tab_forward -map kitty_mod+, move_tab_backward -map kitty_mod+r set_tab_title - -#: You can also create shortcuts to go to specific tabs, with 1 being -#: the first tab, 2 the second tab and -1 being the previously active -#: tab, and any number larger than the last tab being the last tab:: - -#: map ctrl+alt+1 goto_tab 1 -#: map ctrl+alt+2 goto_tab 2 - -#: Just as with new_window above, you can also pass the name of -#: arbitrary commands to run when using new_tab and use -#: new_tab_with_cwd. Finally, if you want the new tab to open next to -#: the current tab rather than at the end of the tabs list, use:: - -#: map ctrl+t new_tab !neighbor [optional cmd to run] -#: }}} - -#: Layout management {{{ - -map kitty_mod+l next_layout - -#: You can also create shortcuts to switch to specific layouts:: - -#: map ctrl+alt+t goto_layout tall -#: map ctrl+alt+s goto_layout stack - -#: Similarly, to switch back to the previous layout:: - -#: map ctrl+alt+p last_used_layout -#: }}} - -#: Font sizes {{{ - -#: You can change the font size for all top-level kitty OS windows at -#: a time or only the current one. - -map kitty_mod+equal change_font_size all +0.5 -map kitty_mod+minus change_font_size all -0.5 -map kitty_mod+backspace change_font_size all 0 - -#: To setup shortcuts for specific font sizes:: - -#: map kitty_mod+f6 change_font_size all 10.0 - -#: To setup shortcuts to change only the current OS window's font -#: size:: - -#: map kitty_mod+f6 change_font_size current 10.0 -#: }}} - -#: Select and act on visible text {{{ - -#: Use the hints kitten to select text and either pass it to an -#: external program or insert it into the terminal or copy it to the -#: clipboard. - -map kitty_mod+e kitten hints - -#: Open a currently visible URL using the keyboard. The program used -#: to open the URL is specified in open_url_with. - -map kitty_mod+p>f kitten hints --type path --program - - -#: Select a path/filename and insert it into the terminal. Useful, for -#: instance to run git commands on a filename output from a previous -#: git command. - -map kitty_mod+p>shift+f kitten hints --type path - -#: Select a path/filename and open it with the default open program. - -map kitty_mod+p>l kitten hints --type line --program - - -#: Select a line of text and insert it into the terminal. Use for the -#: output of things like: ls -1 - -map kitty_mod+p>w kitten hints --type word --program - - -#: Select words and insert into terminal. - -map kitty_mod+p>h kitten hints --type hash --program - - -#: Select something that looks like a hash and insert it into the -#: terminal. Useful with git, which uses sha1 hashes to identify -#: commits - -map kitty_mod+p>n kitten hints --type linenum - -#: Select something that looks like filename:linenum and open it in -#: vim at the specified line number. - -map kitty_mod+p>y kitten hints --type hyperlink - -#: Select a hyperlink (i.e. a URL that has been marked as such by the -#: terminal program, for example, by ls --hyperlink=auto). - - -#: The hints kitten has many more modes of operation that you can map -#: to different shortcuts. For a full description see kittens/hints. -#: }}} - -#: Miscellaneous {{{ - -map kitty_mod+f11 toggle_fullscreen -map kitty_mod+f10 toggle_maximized -map kitty_mod+u kitten unicode_input -map kitty_mod+f2 edit_config_file -map kitty_mod+escape kitty_shell window - -#: Open the kitty shell in a new window/tab/overlay/os_window to -#: control kitty using commands. - -map kitty_mod+a>m set_background_opacity +0.1 -map kitty_mod+a>l set_background_opacity -0.1 -map kitty_mod+a>1 set_background_opacity 1 -map kitty_mod+a>d set_background_opacity default -map kitty_mod+delete clear_terminal reset active - -#: You can create shortcuts to clear/reset the terminal. For example:: - -#: # Reset the terminal -#: map kitty_mod+f9 clear_terminal reset active -#: # Clear the terminal screen by erasing all contents -#: map kitty_mod+f10 clear_terminal clear active -#: # Clear the terminal scrollback by erasing it -#: map kitty_mod+f11 clear_terminal scrollback active -#: # Scroll the contents of the screen into the scrollback -#: map kitty_mod+f12 clear_terminal scroll active - -#: If you want to operate on all windows instead of just the current -#: one, use all instead of active. - -#: It is also possible to remap Ctrl+L to both scroll the current -#: screen contents into the scrollback buffer and clear the screen, -#: instead of just clearing the screen, for example, for ZSH add the -#: following to ~/.zshrc: - -#: .. code-block:: sh - -#: scroll-and-clear-screen() { -#: printf '\n%.0s' {1..$LINES} -#: zle clear-screen -#: } -#: zle -N scroll-and-clear-screen -#: bindkey '^l' scroll-and-clear-screen - -map kitty_mod+f5 load_config_file - -#: Reload kitty.conf, applying any changes since the last time it was -#: loaded. Note that a handful of settings cannot be dynamically -#: changed and require a full restart of kitty. You can also map a -#: keybinding to load a different config file, for example:: - -#: map f5 load_config /path/to/alternative/kitty.conf - -#: Note that all setting from the original kitty.conf are discarded, -#: in other words the new conf settings *replace* the old ones. - -map kitty_mod+f6 debug_config - -#: Show details about exactly what configuration kitty is running with -#: and its host environment. Useful for debugging issues. - - -#: You can tell kitty to send arbitrary (UTF-8) encoded text to the -#: client program when pressing specified shortcut keys. For example:: - -#: map ctrl+alt+a send_text all Special text - -#: This will send "Special text" when you press the ctrl+alt+a key -#: combination. The text to be sent is a python string literal so you -#: can use escapes like \x1b to send control codes or \u21fb to send -#: unicode characters (or you can just input the unicode characters -#: directly as UTF-8 text). The first argument to send_text is the -#: keyboard modes in which to activate the shortcut. The possible -#: values are normal or application or kitty or a comma separated -#: combination of them. The special keyword all means all modes. The -#: modes normal and application refer to the DECCKM cursor key mode -#: for terminals, and kitty refers to the special kitty extended -#: keyboard protocol. - -#: Another example, that outputs a word and then moves the cursor to -#: the start of the line (same as pressing the Home key):: - -#: map ctrl+alt+a send_text normal Word\x1b[H -#: map ctrl+alt+a send_text application Word\x1bOH - +clear_all_shortcuts yes #: }}} #: }}} -#: Include all configuration files in the kitty.d directory, use this to -#override the : defaults defined in this root configuration file. +include ${KITTY_OS}.conf +include local.conf include kitty.d/local.conf diff --git a/linux.conf b/linux.conf new file mode 100644 index 0000000..2d1b524 --- /dev/null +++ b/linux.conf @@ -0,0 +1,35 @@ +# vim:fileencoding=utf-8:ft=conf:foldmethod=marker + +#: Keyboard shortcuts {{{ + +#: Clipboard {{{ +map ctrl+shift+c copy_to_clipboard +map ctrl+shift+v paste_from_clipboard +#: }}} + +#: Window management {{{ +map ctrl+shift+n new_os_window +map ctrl+shift+q quit +#: }}} + +#: Tab management {{{ +map ctrl+shift+t new_tab +map ctrl+shift+w close_tab +map ctrl+shift+right next_tab +map ctrl+shift+left previous_tab +map ctrl+shift+. move_tab_forward +map ctrl+shift+, move_tab_backward +map ctrl+shift+r set_tab_title +#: }}} + +#: Font sizes {{{ +map ctrl+shift+equal change_font_size all +1.0 +map ctrl+shift+minus change_font_size all -1.0 +map ctrl+shift+0 change_font_size all 0 +#: }}} + +#: Miscellaneous {{{ +map ctrl+shift+alt+r load_config_file +#: }}} + +#: }}} diff --git a/macos.conf b/macos.conf new file mode 100644 index 0000000..fa73b02 --- /dev/null +++ b/macos.conf @@ -0,0 +1,35 @@ +# vim:fileencoding=utf-8:ft=conf:foldmethod=marker + +#: Keyboard shortcuts {{{ + +#: Clipboard {{{ +map cmd+c copy_to_clipboard +map cmd+v paste_from_clipboard +#: }}} + +#: Window management {{{ +map cmd+n new_os_window +map cmd+q quit +#: }}} + +#: Tab management {{{ +map cmd+t new_tab +map cmd+w close_tab +map cmd+shift+] next_tab +map cmd+shift+[ previous_tab +map cmd+ctrl+shift+] move_tab_forward +map cmd+ctrl+shift+[ move_tab_backward +map ctrl+shift+r set_tab_title +#: }}} + +#: Font sizes {{{ +map cmd+equal change_font_size all +1.0 +map cmd+minus change_font_size all -1.0 +map cmd+0 change_font_size all 0 +#: }}} + +#: Miscellaneous {{{ +map ctrl+shift+cmd+r load_config_file +#: }}} + +#: }}}