More trailing space removal

This commit is contained in:
Kovid Goyal 2017-12-20 08:50:09 +05:30
parent 0fcce6ec58
commit b8faba2a16
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
8 changed files with 79 additions and 79 deletions

View File

@ -66,7 +66,7 @@ latency.
* Cross-platform support: kitty currently works on Linux and macOS, but because * Cross-platform support: kitty currently works on Linux and macOS, but because
it uses only OpenGL for rendering, it should be trivial to port to other it uses only OpenGL for rendering, it should be trivial to port to other
platforms. platforms.
* Allows you to open the scrollback buffer and window contents in a separate * Allows you to open the scrollback buffer and window contents in a separate
window using arbitrary programs of your choice. This is useful for browsing window using arbitrary programs of your choice. This is useful for browsing
@ -89,8 +89,8 @@ the following dependencies are installed first.
=== Dependencies === Dependencies
* python >= 3.5 * python >= 3.5
* harfbuzz >= 1.5.0 * harfbuzz >= 1.5.0
* libunistring * libunistring
* zlib * zlib
* libpng * libpng
* freetype (not needed on macOS) * freetype (not needed on macOS)
@ -224,7 +224,7 @@ windows are:
|Increase font size | {sc_increase_font_size} |Increase font size | {sc_increase_font_size}
|Decrease font size | {sc_decrease_font_size} |Decrease font size | {sc_decrease_font_size}
|Restore font size | {sc_restore_font_size} |Restore font size | {sc_restore_font_size}
|Toggle fullscreen | {sc_toggle_fullscreen} |Toggle fullscreen | {sc_toggle_fullscreen}
|Pass current selection to program | {sc_pass_selection_to_program} |Pass current selection to program | {sc_pass_selection_to_program}
|=== |===
@ -339,14 +339,14 @@ render loop to reduce CPU usage. See the link:kitty/kitty.conf[config file] for
You can generate detailed per-function performance data using You can generate detailed per-function performance data using
link:https://github.com/gperftools/gperftools[gperftools]. Build kitty with the link:https://github.com/gperftools/gperftools[gperftools]. Build kitty with the
`--profile` flag which will create an executable called `kitty-profile`. Run `--profile` flag which will create an executable called `kitty-profile`. Run
that and perform the task you want to analyse, for example, scrolling a large that and perform the task you want to analyse, for example, scrolling a large
file with `less`. After you quit, function call statistics will be printed to file with `less`. After you quit, function call statistics will be printed to
`stdout` and you can use tools like *kcachegrind* for more detailed analysis. `stdout` and you can use tools like *kcachegrind* for more detailed analysis.
Here are some CPU usage numbers for the task of scrolling a file continuously in less. Here are some CPU usage numbers for the task of scrolling a file continuously in less.
The CPU usage is for the terminal process and X together and is measured using htop. The CPU usage is for the terminal process and X together and is measured using htop.
The measurements are taken at the same font and window size for all terminals on a The measurements are taken at the same font and window size for all terminals on a
`Intel(R) Core(TM) i7-4820K CPU @ 3.70GHz` CPU with a `Intel(R) Core(TM) i7-4820K CPU @ 3.70GHz` CPU with a
`Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde XT [Radeon HD 7770/8760 / R7 250X]` GPU. `Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde XT [Radeon HD 7770/8760 / R7 250X]` GPU.
|=== |===
@ -423,7 +423,7 @@ You dont need to build kitty.app to run kitty from source. Simply install the de
listed above using brew/MacPorts or similar and then compile and run with: listed above using brew/MacPorts or similar and then compile and run with:
``` ```
make make
python3 . python3 .
``` ```
@ -458,7 +458,7 @@ kitty, I ran headlong into more and more gnarly corners of terminal behavior.
On all those occasions, either the excellent documentation at On all those occasions, either the excellent documentation at
link:http://invisible-island.net/xterm/ctlseqs/ctlseqs.html[xterm-ctlseqs] or link:http://invisible-island.net/xterm/ctlseqs/ctlseqs.html[xterm-ctlseqs] or
investigating the behavior and code of xterm or vttest were invaluable tools to investigating the behavior and code of xterm or vttest were invaluable tools to
aid my understanding. aid my understanding.
My achievements, if any, in developing kitty would not have been possible without My achievements, if any, in developing kitty would not have been possible without
his prior work and the generous sharing of knowledge accumulated over decades. his prior work and the generous sharing of knowledge accumulated over decades.

View File

@ -8,7 +8,7 @@ to render arbitrary pixel (raster) graphics to the screen of the terminal
emulator. The major design goals are emulator. The major design goals are
* Should not require terminal emulators to understand image formats. * Should not require terminal emulators to understand image formats.
* Should allow specifying graphics to be drawn at individual pixel positions. * Should allow specifying graphics to be drawn at individual pixel positions.
* The graphics should integrate with the text, in particular it should be possible to draw graphics * The graphics should integrate with the text, in particular it should be possible to draw graphics
below as well as above the text, with alpha blending. The graphics should also scroll with the text, automatically. below as well as above the text, with alpha blending. The graphics should also scroll with the text, automatically.
* Should use optimizations when the client is running on the same computer as the terminal emulator. * Should use optimizations when the client is running on the same computer as the terminal emulator.
@ -21,7 +21,7 @@ To see a quick demo, inside a kitty terminal run:
kitty icat path/to/some/image.png kitty icat path/to/some/image.png
``` ```
You can also see a screenshot with more sophisticated features such as alpha-blending and text over graphics You can also see a screenshot with more sophisticated features such as alpha-blending and text over graphics
link:https://github.com/kovidgoyal/kitty/issues/33#issuecomment-334436100[here]. link:https://github.com/kovidgoyal/kitty/issues/33#issuecomment-334436100[here].
toc::[] toc::[]
@ -33,7 +33,7 @@ window size in pixels and the number of cells per row and column. This can be do
Some C code to demonstrate its use Some C code to demonstrate its use
```C ```C
struct ttysize ts; struct ttysize ts;
ioctl(0, TIOCGWINSZ, &ts); ioctl(0, TIOCGWINSZ, &ts);
printf("number of columns: %i, number of rows: %i, screen width: %i, screen height: %i\n", sz.ws_col, sz.ws_row, sz.ws_xpixel, sz.ws_ypixel); printf("number of columns: %i, number of rows: %i, screen width: %i, screen height: %i\n", sz.ws_col, sz.ws_row, sz.ws_xpixel, sz.ws_ypixel);
``` ```
@ -50,7 +50,7 @@ All graphics escape codes are of the form:
``` ```
This is a so-called _Application Programming Command (APC)_. Most terminal This is a so-called _Application Programming Command (APC)_. Most terminal
emulators ignore APC codes, making it safe to use. emulators ignore APC codes, making it safe to use.
The control data is a comma-separated list of `key=value` pairs. The payload The control data is a comma-separated list of `key=value` pairs. The payload
is arbitrary binary data, base64-encoded to prevent interoperation problems is arbitrary binary data, base64-encoded to prevent interoperation problems
@ -124,12 +124,12 @@ The transmission medium is specified using the `t` key. The `t` key defaults to
and can take the values: and can take the values:
|=== |===
| Value of `t` | Meaning | Value of `t` | Meaning
| d | Direct (the data is transmitted within the escape code itself) | d | Direct (the data is transmitted within the escape code itself)
| f | A simple file | f | A simple file
| t | A temporary file, the terminal emulator will delete the file after reading the pixel data | t | A temporary file, the terminal emulator will delete the file after reading the pixel data
| s | A http://man7.org/linux/man-pages/man7/shm_overview.7.html[POSIX shared memory object]. The terminal emulator will delete it after reading the pixel data | s | A http://man7.org/linux/man-pages/man7/shm_overview.7.html[POSIX shared memory object]. The terminal emulator will delete it after reading the pixel data
|=== |===
==== Local client ==== Local client
@ -175,9 +175,9 @@ if the data is split into three chunks, the client would send the following
sequence of escape codes to the terminal emulator: sequence of escape codes to the terminal emulator:
``` ```
<ESC>_Gs=100,v=30,m=1;<encoded pixel data first chunk><ESC>\ <ESC>_Gs=100,v=30,m=1;<encoded pixel data first chunk><ESC>\
<ESC>_Gm=1;<encoded pixel data second chunk><ESC>\ <ESC>_Gm=1;<encoded pixel data second chunk><ESC>\
<ESC>_Gm=0;<encoded pixel data last chunk><ESC>\ <ESC>_Gm=0;<encoded pixel data last chunk><ESC>\
``` ```
Note that only the first escape code needs to have the full set of control Note that only the first escape code needs to have the full set of control
@ -189,7 +189,7 @@ before sending any other graphics related escape codes.
=== Detecting available transmission mediums === Detecting available transmission mediums
Since a client has no a-priori knowledge of whether it shares a filesystem/shared memory Since a client has no a-priori knowledge of whether it shares a filesystem/shared memory
with the terminal emulator, it can send an id with the control data, using the `i` key with the terminal emulator, it can send an id with the control data, using the `i` key
(which can be an arbitrary positive integer up to 4294967295, it must not be zero). (which can be an arbitrary positive integer up to 4294967295, it must not be zero).
If it does so, the terminal emulator will reply after trying to load the image, saying If it does so, the terminal emulator will reply after trying to load the image, saying
whether loading was successful or not. For example: whether loading was successful or not. For example:
@ -207,7 +207,7 @@ to which the terminal emulator will reply (after trying to load the data):
Here the `i` value will be the same as was sent by the client in the original Here the `i` value will be the same as was sent by the client in the original
request. The message data will be a ASCII encoded string containing only request. The message data will be a ASCII encoded string containing only
printable characters and spaces. The string will be `OK` if reading the pixel printable characters and spaces. The string will be `OK` if reading the pixel
data succeeded or an error message. data succeeded or an error message.
Sometimes, using an id is not appropriate, for example, if you do not want to Sometimes, using an id is not appropriate, for example, if you do not want to
replace a previously sent image with the same id, or if you are sending a dummy replace a previously sent image with the same id, or if you are sending a dummy
@ -245,7 +245,7 @@ be re-transmitted.
=== Controlling displayed image layout === Controlling displayed image layout
The image is rendered at the current cursor position, from the upper left corner of The image is rendered at the current cursor position, from the upper left corner of
the current cell. You can also specify extra `X=3` and `Y=4` pixel offsets to display from the current cell. You can also specify extra `X=3` and `Y=4` pixel offsets to display from
a different origin within the cell. Note that the offsets must be smaller that the size of the cell. a different origin within the cell. Note that the offsets must be smaller that the size of the cell.
By default, the entire image will be displayed (images wider than the available By default, the entire image will be displayed (images wider than the available
@ -255,7 +255,7 @@ the top-left corner, width and height of the source rectangle.
You can also ask the terminal emulator to display the image in a specified rectangle You can also ask the terminal emulator to display the image in a specified rectangle
(num of columns / num of lines), using the control codes `c,r`. `c` is the number of columns (num of columns / num of lines), using the control codes `c,r`. `c` is the number of columns
and `r` the number of rows. The image will be scaled (enlarged/shrunk) as needed to fit and `r` the number of rows. The image will be scaled (enlarged/shrunk) as needed to fit
the specified area. Note that if you specify a start cell offset via the `X,Y` keys, it is not the specified area. Note that if you specify a start cell offset via the `X,Y` keys, it is not
added to the number of rows/columns. added to the number of rows/columns.
@ -269,7 +269,7 @@ allows rendering of text on top of images.
Images can be deleted by using the delete action `a=d`. If specified without any Images can be deleted by using the delete action `a=d`. If specified without any
other keys, it will delete all images visible on screen. To delete specific images, other keys, it will delete all images visible on screen. To delete specific images,
use the `d` key as described in the table below. Note that each value of d has use the `d` key as described in the table below. Note that each value of d has
both a lowercase and an uppercase variant. The lowercase variant only deletes the both a lowercase and an uppercase variant. The lowercase variant only deletes the
images without necessarily freeing up the stored image data, so that the images can be images without necessarily freeing up the stored image data, so that the images can be
re-displayed without needing to resend the data. The uppercase variants will delete re-displayed without needing to resend the data. The uppercase variants will delete
@ -278,7 +278,7 @@ scrollback buffer. The values of the `x` and `y` keys are the same as cursor pos
x=1, y=1 is the top left cell). x=1, y=1 is the top left cell).
|=== |===
| Value of `d` | Meaning | Value of `d` | Meaning
| `a` or `A` | Delete all images visible on screen | `a` or `A` | Delete all images visible on screen
| `i` or `I` | Delete all images with the specified id, specified using the `i` key. | `i` or `I` | Delete all images with the specified id, specified using the `i` key.
@ -313,7 +313,7 @@ delete older images to make space for the new one.
== Control data reference == Control data reference
The table below shows all the control data keys as well as what values they can The table below shows all the control data keys as well as what values they can
take, and the default value they take when missing. All integers are 32-bit. take, and the default value they take when missing. All integers are 32-bit.
[cols="^1,<3,^1,<6"] [cols="^1,<3,^1,<6"]
|=== |===

View File

@ -5,10 +5,10 @@
#define bottom -1.0f #define bottom -1.0f
const vec2 pos_map[] = vec2[4]( const vec2 pos_map[] = vec2[4](
vec2(right, top), vec2(right, top),
vec2(right, bottom), vec2(right, bottom),
vec2(left, bottom), vec2(left, bottom),
vec2(left, top) vec2(left, top)
); );
out vec2 texcoord; out vec2 texcoord;

View File

@ -11,10 +11,10 @@ const int RIGHT = 2;
const int BOTTOM = 3; const int BOTTOM = 3;
const uvec2 pos_map[] = uvec2[4]( const uvec2 pos_map[] = uvec2[4](
uvec2(RIGHT, TOP), uvec2(RIGHT, TOP),
uvec2(RIGHT, BOTTOM), uvec2(RIGHT, BOTTOM),
uvec2(LEFT, BOTTOM), uvec2(LEFT, BOTTOM),
uvec2(LEFT, TOP) uvec2(LEFT, TOP)
); );
vec2 to_opengl(uint x, uint y) { vec2 to_opengl(uint x, uint y) {

View File

@ -34,7 +34,7 @@ vec4 alpha_blend(vec3 over, float over_alpha, vec3 under, float under_alpha) {
// Alpha blend two colors returning the resulting color pre-multiplied by its alpha // Alpha blend two colors returning the resulting color pre-multiplied by its alpha
// and its alpha. // and its alpha.
// See https://en.wikipedia.org/wiki/Alpha_compositing // See https://en.wikipedia.org/wiki/Alpha_compositing
float alpha = mix(under_alpha, 1.0f, over_alpha); float alpha = mix(under_alpha, 1.0f, over_alpha);
vec3 combined_color = mix(under * under_alpha, over, over_alpha); vec3 combined_color = mix(under * under_alpha, over, over_alpha);
return vec4(combined_color, alpha); return vec4(combined_color, alpha);
} }
@ -45,7 +45,7 @@ vec3 premul_blend(vec3 over, float over_alpha, vec3 under) {
vec4 alpha_blend_premul(vec3 over, float over_alpha, vec3 under, float under_alpha) { vec4 alpha_blend_premul(vec3 over, float over_alpha, vec3 under, float under_alpha) {
// Same as alpha_blend() except that it assumes over and under are both premultiplied. // Same as alpha_blend() except that it assumes over and under are both premultiplied.
float alpha = mix(under_alpha, 1.0f, over_alpha); float alpha = mix(under_alpha, 1.0f, over_alpha);
return vec4(premul_blend(over, over_alpha, under), alpha); return vec4(premul_blend(over, over_alpha, under), alpha);
} }
// }}} // }}}
@ -70,7 +70,7 @@ void main() {
final_color = vec4(background.rgb * bg_alpha, bg_alpha); final_color = vec4(background.rgb * bg_alpha, bg_alpha);
#else #else
final_color = vec4(background.rgb, 1.0f); final_color = vec4(background.rgb, 1.0f);
#endif #endif
#endif #endif
#ifdef SPECIAL #ifdef SPECIAL
@ -78,10 +78,10 @@ void main() {
final_color = vec4(background.rgb * bg_alpha, bg_alpha); final_color = vec4(background.rgb * bg_alpha, bg_alpha);
#else #else
final_color = vec4(background.rgb, bg_alpha); final_color = vec4(background.rgb, bg_alpha);
#endif #endif
#endif #endif
#if defined(FOREGROUND) || defined(SIMPLE) #if defined(FOREGROUND) || defined(SIMPLE)
// FOREGROUND or SIMPLE // FOREGROUND or SIMPLE
vec4 fg = calculate_foreground(); // pre-multiplied foreground vec4 fg = calculate_foreground(); // pre-multiplied foreground

View File

@ -12,7 +12,7 @@ layout(std140) uniform CellRenderData {
uint xnum, ynum, cursor_x, cursor_y, cursor_w; uint xnum, ynum, cursor_x, cursor_y, cursor_w;
uint color_table[256]; uint color_table[256];
}; };
// Have to use fixed locations here as all variants of the cell program share the same VAO // Have to use fixed locations here as all variants of the cell program share the same VAO
@ -21,7 +21,7 @@ layout(location=1) in uvec4 sprite_coords;
layout(location=2) in uint is_selected; layout(location=2) in uint is_selected;
const uvec2 cell_pos_map[] = uvec2[4]( const uvec2 cell_pos_map[] = uvec2[4](
uvec2(1, 0), // right, top uvec2(1, 0), // right, top
uvec2(1, 1), // right, bottom uvec2(1, 1), // right, bottom
@ -118,27 +118,27 @@ float is_cursor(uint x, uint y) {
void main() { void main() {
// set cell vertex position {{{ // set cell vertex position {{{
uint instance_id = uint(gl_InstanceID); uint instance_id = uint(gl_InstanceID);
/* The current cell being rendered */ /* The current cell being rendered */
uint r = instance_id / xnum; uint r = instance_id / xnum;
uint c = instance_id - r * xnum; uint c = instance_id - r * xnum;
/* The position of this vertex, at a corner of the cell */ /* The position of this vertex, at a corner of the cell */
float left = xstart + c * dx; float left = xstart + c * dx;
float top = ystart - r * dy; float top = ystart - r * dy;
vec2 xpos = vec2(left, left + dx); vec2 xpos = vec2(left, left + dx);
vec2 ypos = vec2(top, top - dy); vec2 ypos = vec2(top, top - dy);
uvec2 pos = cell_pos_map[gl_VertexID]; uvec2 pos = cell_pos_map[gl_VertexID];
gl_Position = vec4(xpos[pos.x], ypos[pos.y], 0, 1); gl_Position = vec4(xpos[pos.x], ypos[pos.y], 0, 1);
// }}} // }}}
// set cell color indices {{{ // set cell color indices {{{
uvec2 default_colors = uvec2(default_fg, default_bg); uvec2 default_colors = uvec2(default_fg, default_bg);
ivec2 color_indices = ivec2(color1, color2); ivec2 color_indices = ivec2(color1, color2);
uint text_attrs = sprite_coords[3]; uint text_attrs = sprite_coords[3];
int fg_index = color_indices[(text_attrs >> 6) & REVERSE_MASK]; int fg_index = color_indices[(text_attrs >> 6) & REVERSE_MASK];
int bg_index = color_indices[1 - fg_index]; int bg_index = color_indices[1 - fg_index];
float cursor = is_cursor(c, r); float cursor = is_cursor(c, r);
vec3 bg = to_color(colors[bg_index], default_colors[bg_index]); vec3 bg = to_color(colors[bg_index], default_colors[bg_index]);
// }}} // }}}
@ -150,7 +150,7 @@ void main() {
sprite_pos = to_sprite_pos(pos, sprite_coords.x, sprite_coords.y, sprite_coords.z & Z_MASK); sprite_pos = to_sprite_pos(pos, sprite_coords.x, sprite_coords.y, sprite_coords.z & Z_MASK);
colored_sprite = float((sprite_coords.z & COLOR_MASK) >> 14); colored_sprite = float((sprite_coords.z & COLOR_MASK) >> 14);
// Foreground // Foreground
uint resolved_fg = resolve_color(colors[fg_index], default_colors[fg_index]); uint resolved_fg = resolve_color(colors[fg_index], default_colors[fg_index]);
foreground = color_to_vec(resolved_fg); foreground = color_to_vec(resolved_fg);
// Selection // Selection
@ -165,7 +165,7 @@ void main() {
foreground = choose_color(cursor, bg, foreground); foreground = choose_color(cursor, bg, foreground);
decoration_fg = choose_color(cursor, bg, decoration_fg); decoration_fg = choose_color(cursor, bg, decoration_fg);
#endif #endif
// }}} // }}}
// Background {{{ // Background {{{
#ifdef NEEDS_BACKROUND #ifdef NEEDS_BACKROUND

View File

@ -8,7 +8,7 @@
# bold_font Operator Mono Medium # bold_font Operator Mono Medium
# italic_font Operator Mono Book Italic # italic_font Operator Mono Book Italic
# bold_italic_font Operator Mono Medium Italic # bold_italic_font Operator Mono Medium Italic
# #
# You can get a list of full family names available on your computer by running # You can get a list of full family names available on your computer by running
# kitty list-fonts # kitty list-fonts
font_family monospace font_family monospace
@ -24,7 +24,7 @@ font_size 11.0
font_size_delta 2 font_size_delta 2
# Adjust the line height. # Adjust the line height.
# You can use either numbers, which are interpreted as pixels or percentages # You can use either numbers, which are interpreted as pixels or percentages
# (number followed by %), which are interpreted as percentages of the # (number followed by %), which are interpreted as percentages of the
# unmodified line height. You can use negative pixels or percentages less than # unmodified line height. You can use negative pixels or percentages less than
@ -32,7 +32,7 @@ font_size_delta 2
adjust_line_height 0 adjust_line_height 0
# Change the sizes of the lines used for the box drawing unicode characters # Change the sizes of the lines used for the box drawing unicode characters
# These values are in pts. They will be scaled by the monitor DPI to arrive at # These values are in pts. They will be scaled by the monitor DPI to arrive at
# a pixel value. There must be four values corresponding to thin, normal, thick, # a pixel value. There must be four values corresponding to thin, normal, thick,
# and very thick lines; # and very thick lines;
box_drawing_scale 0.001, 1, 1.5, 2 box_drawing_scale 0.001, 1, 1.5, 2
@ -73,7 +73,7 @@ cursor #cccccc
cursor_shape block cursor_shape block
# The interval (in seconds) at which to blink the cursor. Set to zero to # The interval (in seconds) at which to blink the cursor. Set to zero to
# disable blinking. Note that numbers smaller than repaint_delay will be # disable blinking. Note that numbers smaller than repaint_delay will be
# limited to repaint_delay. # limited to repaint_delay.
cursor_blink_interval 0.5 cursor_blink_interval 0.5
@ -226,10 +226,10 @@ color15 #ffffff
# Key mapping # Key mapping
# For a list of key names, see: http://www.glfw.org/docs/latest/group__keys.html # For a list of key names, see: http://www.glfw.org/docs/latest/group__keys.html
# For a list of modifier names, see: http://www.glfw.org/docs/latest/group__mods.html # For a list of modifier names, see: http://www.glfw.org/docs/latest/group__mods.html
# #
# You can use the special action no_op to unmap a keyboard shortcut that is # You can use the special action no_op to unmap a keyboard shortcut that is
# assigned in the default configuration. # assigned in the default configuration.
# #
# You can combine multiple actions to be triggered by a single shortcut, using the # You can combine multiple actions to be triggered by a single shortcut, using the
# syntax below: # syntax below:
# map key combine <separator> action1 <separator> action2 <separator> action3 ... # map key combine <separator> action1 <separator> action2 <separator> action3 ...
@ -246,7 +246,7 @@ map shift+insert paste_from_selection
# pass_selection_to_program. By default, the system's open program is used, but # pass_selection_to_program. By default, the system's open program is used, but
# you can specify your own, for example: # you can specify your own, for example:
# map ctrl+shift+o pass_selection_to_program firefox # map ctrl+shift+o pass_selection_to_program firefox
map ctrl+shift+o pass_selection_to_program map ctrl+shift+o pass_selection_to_program
# Scrolling # Scrolling
map ctrl+shift+up scroll_line_up map ctrl+shift+up scroll_line_up
@ -260,8 +260,8 @@ map ctrl+shift+end scroll_end
map ctrl+shift+h show_scrollback map ctrl+shift+h show_scrollback
# Window management # Window management
map ctrl+shift+enter new_window map ctrl+shift+enter new_window
map ctrl+shift+n new_os_window map ctrl+shift+n new_os_window
map ctrl+shift+w close_window map ctrl+shift+w close_window
map ctrl+shift+] next_window map ctrl+shift+] next_window
map ctrl+shift+[ previous_window map ctrl+shift+[ previous_window
@ -334,11 +334,11 @@ map ctrl+shift+f11 toggle_fullscreen
# in hexadecimal>. You can specify multiple code points, separated by commas # in hexadecimal>. You can specify multiple code points, separated by commas
# and ranges separated by hyphens. symbol_map itself can be specified multiple times. # and ranges separated by hyphens. symbol_map itself can be specified multiple times.
# Syntax is: # Syntax is:
# #
# symbol_map codepoints Font Family Name # symbol_map codepoints Font Family Name
# #
# For example: # For example:
# #
# symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols # symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols
@ -347,7 +347,7 @@ map ctrl+shift+f11 toggle_fullscreen
# Hide the kitty window's title bar on macOS. # Hide the kitty window's title bar on macOS.
macos_hide_titlebar no macos_hide_titlebar no
# Use the option key as an alt key. With this set to no, kitty will use # Use the option key as an alt key. With this set to no, kitty will use
# the macOS native Option+Key = unicode character behavior. This will # the macOS native Option+Key = unicode character behavior. This will
# break any Alt+key keyboard shortcuts in your terminal programs, but you # break any Alt+key keyboard shortcuts in your terminal programs, but you
# can use the macOS unicode input technique. # can use the macOS unicode input technique.

View File

@ -54,8 +54,8 @@ To reset the underline color (also previously reserved and unused):
<ESC>[59m <ESC>[59m
``` ```
A client can query if the terminal emulator supports this underline extension using the A client can query if the terminal emulator supports this underline extension using the
standard link:http://vt100.net/docs/vt510-rm/DECRQM[DECRQM] escape sequence, with the standard link:http://vt100.net/docs/vt510-rm/DECRQM[DECRQM] escape sequence, with the
mode value `2016`, like this: mode value `2016`, like this:
Client sends: Client sends:
@ -86,8 +86,8 @@ include:
* No way to use modifiers other than `Ctrl` and `Alt` * No way to use modifiers other than `Ctrl` and `Alt`
* No way to use multiple modifier keys, other than, `Shift+Alt`. * No way to use multiple modifier keys, other than, `Shift+Alt`.
* No way to handle different types of keyboard events, such as press, release or repeat * No way to handle different types of keyboard events, such as press, release or repeat
* No reliable way to distinguish single `Esc` keypresses from the * No reliable way to distinguish single `Esc` keypresses from the
start of a escape sequence. Currently, client programs use start of a escape sequence. Currently, client programs use
fragile timing related hacks for this, leading to bugs, for example: fragile timing related hacks for this, leading to bugs, for example:
link:https://github.com/neovim/neovim/issues/2035[neovim #2035] link:https://github.com/neovim/neovim/issues/2035[neovim #2035]
@ -112,7 +112,7 @@ and to leave _full mode_, use DECRST
``` ```
The number `2017` above is not used for any existing modes, as far as I know. The number `2017` above is not used for any existing modes, as far as I know.
Client programs can query if the terminal emulator is in _full mode_ by using Client programs can query if the terminal emulator is in _full mode_ by using
the standard link:http://vt100.net/docs/vt510-rm/DECRQM[DECRQM] escape sequence. the standard link:http://vt100.net/docs/vt510-rm/DECRQM[DECRQM] escape sequence.
The new mode works as follows: The new mode works as follows:
@ -135,7 +135,7 @@ The escape sequence encodes the following properties:
* Type of event: `press,repeat,release` * Type of event: `press,repeat,release`
* Modifiers pressed at the time of the event * Modifiers pressed at the time of the event
* The actual key being pressed * The actual key being pressed
``` ```
<ESC>_K<type><modifiers><key><ESC>\ <ESC>_K<type><modifiers><key><ESC>\
@ -165,13 +165,13 @@ regions of the screen,
link:https://vt100.net/docs/vt510-rm/DECCARA.html[DECCARA]. However, it is link:https://vt100.net/docs/vt510-rm/DECCARA.html[DECCARA]. However, it is
limited to only a few attributes. kitty extends this to work with *all* SGR limited to only a few attributes. kitty extends this to work with *all* SGR
attributes. So, for example, this can be used to set the background color in attributes. So, for example, this can be used to set the background color in
an arbitrary region of the screen. an arbitrary region of the screen.
The motivation for this extension is the various problems with the existing The motivation for this extension is the various problems with the existing
solution for erasing to background color, namely the *background color erase solution for erasing to background color, namely the *background color erase
(bce)* capability. See (bce)* capability. See
link:https://github.com/kovidgoyal/kitty/issues/160#issuecomment-346470545[this discussion] link:https://github.com/kovidgoyal/kitty/issues/160#issuecomment-346470545[this discussion]
for a summary of problems with *bce*. for a summary of problems with *bce*.
For example, to set the background color to blue in a For example, to set the background color to blue in a
rectangular region of the screen from (3, 4) to (10, 11), you use: rectangular region of the screen from (3, 4) to (10, 11), you use: