Skip to content

Instantly share code, notes, and snippets.

@fnky
Last active April 16, 2024 10:51
Show Gist options
  • Save fnky/458719343aabd01cfb17a3a4f7296797 to your computer and use it in GitHub Desktop.
Save fnky/458719343aabd01cfb17a3a4f7296797 to your computer and use it in GitHub Desktop.
ANSI Escape Codes

ANSI Escape Sequences

Standard escape codes are prefixed with Escape:

  • Ctrl-Key: ^[
  • Octal: \033
  • Unicode: \u001b
  • Hexadecimal: \x1B
  • Decimal: 27

Followed by the command, somtimes delimited by opening square bracket ([), known as a Control Sequence Introducer (CSI), optionally followed by arguments and the command itself.

Arguments are delimeted by semi colon (;).

For example:

\x1b[1;31m  # Set style to bold, red foreground.

Sequences

  • ESC - sequence starting with ESC (\x1B)
  • CSI - Control Sequence Introducer: sequence starting with ESC [ or CSI (\x9B)
  • DCS - Device Control String: sequence starting with ESC P or DCS (\x90)
  • OSC - Operating System Command: sequence starting with ESC ] or OSC (\x9D)

Any whitespaces between sequences and arguments should be ignored. They are present for improved readability.

General ASCII Codes

Name decimal octal hex C-escape Ctrl-Key Description
BEL 7 007 0x07 \a ^G Terminal bell
BS 8 010 0x08 \b ^H Backspace
HT 9 011 0x09 \t ^I Horizontal TAB
LF 10 012 0x0A \n ^J Linefeed (newline)
VT 11 013 0x0B \v ^K Vertical TAB
FF 12 014 0x0C \f ^L Formfeed (also: New page NP)
CR 13 015 0x0D \r ^M Carriage return
ESC 27 033 0x1B \e* ^[ Escape character
DEL 127 177 0x7F <none> <none> Delete character

Note: Some control escape sequences, like \e for ESC, are not guaranteed to work in all languages and compilers. It is recommended to use the decimal, octal or hex representation as escape code.

Note: The Ctrl-Key representation is simply associating the non-printable characters from ASCII code 1 with the printable (letter) characters from ASCII code 65 ("A"). ASCII code 1 would be ^A (Ctrl-A), while ASCII code 7 (BEL) would be ^G (Ctrl-G). This is a common representation (and input method) and historically comes from one of the VT series of terminals.

Cursor Controls

ESC Code Sequence Description
ESC[H moves cursor to home position (0, 0)
ESC[{line};{column}H
ESC[{line};{column}f
moves cursor to line #, column #
ESC[#A moves cursor up # lines
ESC[#B moves cursor down # lines
ESC[#C moves cursor right # columns
ESC[#D moves cursor left # columns
ESC[#E moves cursor to beginning of next line, # lines down
ESC[#F moves cursor to beginning of previous line, # lines up
ESC[#G moves cursor to column #
ESC[6n request cursor position (reports as ESC[#;#R)
ESC M moves cursor one line up, scrolling if needed
ESC 7 save cursor position (DEC)
ESC 8 restores the cursor to the last saved position (DEC)
ESC[s save cursor position (SCO)
ESC[u restores the cursor to the last saved position (SCO)

Note: Some sequences, like saving and restoring cursors, are private sequences and are not standardized. While some terminal emulators (i.e. xterm and derived) support both SCO and DEC sequences, they are likely to have different functionality. It is therefore recommended to use DEC sequences.

Erase Functions

ESC Code Sequence Description
ESC[J erase in display (same as ESC[0J)
ESC[0J erase from cursor until end of screen
ESC[1J erase from cursor to beginning of screen
ESC[2J erase entire screen
ESC[3J erase saved lines
ESC[K erase in line (same as ESC[0K)
ESC[0K erase from cursor to end of line
ESC[1K erase start of line to the cursor
ESC[2K erase the entire line

Note: Erasing the line won't move the cursor, meaning that the cursor will stay at the last position it was at before the line was erased. You can use \r after erasing the line, to return the cursor to the start of the current line.

Colors / Graphics Mode

ESC Code Sequence Reset Sequence Description
ESC[1;34;{...}m Set graphics modes for cell, separated by semicolon (;).
ESC[0m reset all modes (styles and colors)
ESC[1m ESC[22m set bold mode.
ESC[2m ESC[22m set dim/faint mode.
ESC[3m ESC[23m set italic mode.
ESC[4m ESC[24m set underline mode.
ESC[5m ESC[25m set blinking mode
ESC[7m ESC[27m set inverse/reverse mode
ESC[8m ESC[28m set hidden/invisible mode
ESC[9m ESC[29m set strikethrough mode.

Note: Some terminals may not support some of the graphic mode sequences listed above.

Note: Both dim and bold modes are reset with the ESC[22m sequence. The ESC[21m sequence is a non-specified sequence for double underline mode and only work in some terminals and is reset with ESC[24m.

Color codes

Most terminals support 8 and 16 colors, as well as 256 (8-bit) colors. These colors are set by the user, but have commonly defined meanings.

8-16 Colors

Color Name Foreground Color Code Background Color Code
Black 30 40
Red 31 41
Green 32 42
Yellow 33 43
Blue 34 44
Magenta 35 45
Cyan 36 46
White 37 47
Default 39 49
Reset 0 0

Note: the Reset color is the reset code that resets all colors and text effects, Use Default color to reset colors only.

Most terminals, apart from the basic set of 8 colors, also support the "bright" or "bold" colors. These have their own set of codes, mirroring the normal colors, but with an additional ;1 in their codes:

# Set style to bold, red foreground.
\x1b[1;31mHello
# Set style to dimmed white foreground with red background.
\x1b[2;37;41mWorld

Terminals that support the aixterm specification provides bright versions of the ISO colors, without the need to use the bold modifier:

Color Name Foreground Color Code Background Color Code
Bright Black 90 100
Bright Red 91 101
Bright Green 92 102
Bright Yellow 93 103
Bright Blue 94 104
Bright Magenta 95 105
Bright Cyan 96 106
Bright White 97 107

256 Colors

The following escape codes tells the terminal to use the given color ID:

ESC Code Sequence Description
ESC[38;5;{ID}m Set foreground color.
ESC[48;5;{ID}m Set background color.

Where {ID} should be replaced with the color index from 0 to 255 of the following color table:

256 Color table

The table starts with the original 16 colors (0-15).

The proceeding 216 colors (16-231) or formed by a 3bpc RGB value offset by 16, packed into a single value.

The final 24 colors (232-255) are grayscale starting from a shade slighly lighter than black, ranging up to shade slightly darker than white.

Some emulators interpret these steps as linear increments (256 / 24) on all three channels, although some emulators may explicitly define these values.

RGB Colors

More modern terminals supports Truecolor (24-bit RGB), which allows you to set foreground and background colors using RGB.

These escape sequences are usually not well documented.

ESC Code Sequence Description
ESC[38;2;{r};{g};{b}m Set foreground color as RGB.
ESC[48;2;{r};{g};{b}m Set background color as RGB.

Note that ;38 and ;48 corresponds to the 16 color sequence and is interpreted by the terminal to set the foreground and background color respectively. Where as ;2 and ;5 sets the color format.

Screen Modes

Set Mode

ESC Code Sequence Description
ESC[={value}h Changes the screen width or type to the mode specified by value.
ESC[=0h 40 x 25 monochrome (text)
ESC[=1h 40 x 25 color (text)
ESC[=2h 80 x 25 monochrome (text)
ESC[=3h 80 x 25 color (text)
ESC[=4h 320 x 200 4-color (graphics)
ESC[=5h 320 x 200 monochrome (graphics)
ESC[=6h 640 x 200 monochrome (graphics)
ESC[=7h Enables line wrapping
ESC[=13h 320 x 200 color (graphics)
ESC[=14h 640 x 200 color (16-color graphics)
ESC[=15h 640 x 350 monochrome (2-color graphics)
ESC[=16h 640 x 350 color (16-color graphics)
ESC[=17h 640 x 480 monochrome (2-color graphics)
ESC[=18h 640 x 480 color (16-color graphics)
ESC[=19h 320 x 200 color (256-color graphics)
ESC[={value}l Resets the mode by using the same values that Set Mode uses, except for 7, which disables line wrapping. The last character in this escape sequence is a lowercase L.

Common Private Modes

These are some examples of private modes, which are not defined by the specification, but are implemented in most terminals.

ESC Code Sequence Description
ESC[?25l make cursor invisible
ESC[?25h make cursor visible
ESC[?47l restore screen
ESC[?47h save screen
ESC[?1049h enables the alternative buffer
ESC[?1049l disables the alternative buffer

Refer to the XTerm Control Sequences for a more in-depth list of private modes defined by XTerm.

Note: While these modes may be supported by the most terminals, some may not work in multiplexers like tmux.

Keyboard Strings

ESC[{code};{string};{...}p

Redefines a keyboard key to a specified string.

The parameters for this escape sequence are defined as follows:

  • code is one or more of the values listed in the following table. These values represent keyboard keys and key combinations. When using these values in a command, you must type the semicolons shown in this table in addition to the semicolons required by the escape sequence. The codes in parentheses are not available on some keyboards. ANSI.SYS will not interpret the codes in parentheses for those keyboards unless you specify the /X switch in the DEVICE command for ANSI.SYS.

  • string is either the ASCII code for a single character or a string contained in quotation marks. For example, both 65 and "A" can be used to represent an uppercase A.

IMPORTANT: Some of the values in the following table are not valid for all computers. Check your computer's documentation for values that are different.

List of keyboard strings

Key Code SHIFT+code CTRL+code ALT+code
F1 0;59 0;84 0;94 0;104
F2 0;60 0;85 0;95 0;105
F3 0;61 0;86 0;96 0;106
F4 0;62 0;87 0;97 0;107
F5 0;63 0;88 0;98 0;108
F6 0;64 0;89 0;99 0;109
F7 0;65 0;90 0;100 0;110
F8 0;66 0;91 0;101 0;111
F9 0;67 0;92 0;102 0;112
F10 0;68 0;93 0;103 0;113
F11 0;133 0;135 0;137 0;139
F12 0;134 0;136 0;138 0;140
HOME (num keypad) 0;71 55 0;119 --
UP ARROW (num keypad) 0;72 56 (0;141) --
PAGE UP (num keypad) 0;73 57 0;132 --
LEFT ARROW (num keypad) 0;75 52 0;115 --
RIGHT ARROW (num keypad) 0;77 54 0;116 --
END (num keypad) 0;79 49 0;117 --
DOWN ARROW (num keypad) 0;80 50 (0;145) --
PAGE DOWN (num keypad) 0;81 51 0;118 --
INSERT (num keypad) 0;82 48 (0;146) --
DELETE (num keypad) 0;83 46 (0;147) --
HOME (224;71) (224;71) (224;119) (224;151)
UP ARROW (224;72) (224;72) (224;141) (224;152)
PAGE UP (224;73) (224;73) (224;132) (224;153)
LEFT ARROW (224;75) (224;75) (224;115) (224;155)
RIGHT ARROW (224;77) (224;77) (224;116) (224;157)
END (224;79) (224;79) (224;117) (224;159)
DOWN ARROW (224;80) (224;80) (224;145) (224;154)
PAGE DOWN (224;81) (224;81) (224;118) (224;161)
INSERT (224;82) (224;82) (224;146) (224;162)
DELETE (224;83) (224;83) (224;147) (224;163)
PRINT SCREEN -- -- 0;114 --
PAUSE/BREAK -- -- 0;0 --
BACKSPACE 8 8 127 (0)
ENTER 13 -- 10 (0
TAB 9 0;15 (0;148) (0;165)
NULL 0;3 -- -- --
A 97 65 1 0;30
B 98 66 2 0;48
C 99 66 3 0;46
D 100 68 4 0;32
E 101 69 5 0;18
F 102 70 6 0;33
G 103 71 7 0;34
H 104 72 8 0;35
I 105 73 9 0;23
J 106 74 10 0;36
K 107 75 11 0;37
L 108 76 12 0;38
M 109 77 13 0;50
N 110 78 14 0;49
O 111 79 15 0;24
P 112 80 16 0;25
Q 113 81 17 0;16
R 114 82 18 0;19
S 115 83 19 0;31
T 116 84 20 0;20
U 117 85 21 0;22
V 118 86 22 0;47
W 119 87 23 0;17
X 120 88 24 0;45
Y 121 89 25 0;21
Z 122 90 26 0;44
1 49 33 -- 0;120
2 50 64 0 0;121
3 51 35 -- 0;122
4 52 36 -- 0;123
5 53 37 -- 0;124
6 54 94 30 0;125
7 55 38 -- 0;126
8 56 42 -- 0;126
9 57 40 -- 0;127
0 48 41 -- 0;129
- 45 95 31 0;130
= 61 43 --- 0;131
[ 91 123 27 0;26
] 93 125 29 0;27
92 124 28 0;43
; 59 58 -- 0;39
' 39 34 -- 0;40
, 44 60 -- 0;51
. 46 62 -- 0;52
/ 47 63 -- 0;53
` 96 126 -- (0;41)
ENTER (keypad) 13 -- 10 (0;166)
/ (keypad) 47 47 (0;142) (0;74)
* (keypad) 42 (0;144) (0;78) --
- (keypad) 45 45 (0;149) (0;164)
+ (keypad) 43 43 (0;150) (0;55)
5 (keypad) (0;76) 53 (0;143) --

Resources

@inyourface34456
Copy link

Some terminals do have full support for RGB. The syntax is like this:

\033[38;2;<R>;<G>;<B>;48;2;<on_R>;<on_G>;<on_B>m

The first three numbers are the foreground color, and the last three are the background color.

@USLTD
Copy link

USLTD commented Mar 18, 2022

Some terminals do have full support for RGB. The syntax is like this:

\033[38;2;<R>;<G>;<B>;48;2;<on_R>;<on_G>;<on_B>m

The first three numbers are the foreground color, and the last three are the background color.

It is already mentioned

@tch1121
Copy link

tch1121 commented Mar 26, 2022

Ask, is \x1b[?0J the same as \x1b[0J?

i see here

@USLTD
Copy link

USLTD commented Mar 27, 2022

@tch1121 No, it's not.
Usually escape codes that start with following (ESC + [ + ?) are Mode sequences.

@tch1121
Copy link

tch1121 commented Mar 27, 2022

@UltraStudioLTD Is there a manual or documentation to look at?

@fnky
Copy link
Author

fnky commented Mar 27, 2022

@tch1121
Copy link

tch1121 commented Mar 27, 2022

@fnky thanks

@noneofyourbusiness1415252
Copy link

noneofyourbusiness1415252 commented Apr 9, 2022

bright versions of the ISO colors, without the need to use the bold modifier

'bright' and 'bold' seem to be different things.
image

@USLTD
Copy link

USLTD commented Apr 9, 2022

@noneofyourbusiness1415252

bright versions of the ISO colors, without the need to use the bold modifier
'bright' and 'bold' seem to be different things.
image

How those colors are displayed depends on Terminal or Terminal Emulator used

@leventelist
Copy link

I could not find this sequence:

'0x1b'
'0x5b' '['
'0x33' '3'
'0x7e' '~'

I get this when I press the DEL key on my keyboard. What does this mean?

@USLTD
Copy link

USLTD commented Apr 23, 2022

@leventelist
On which Terminal Emulator and OS?

@leventelist
Copy link

On Debian Linux, and in an SSH session. The other end is a server implemented by libssh. The terminal emulator is a the one comes with XFCE.

@bczsalba
Copy link

@leventelist That seems to be the keycode for the delete key itself. The terminal returns it as one unit (\x1b[3~), though you might only get it in parts, depending on your methodology.

If you have my project, PyTermGUI installed by any chance, you should be able to see it returned in the ptg -g environment.

@Jibun-no-Kage
Copy link

Trying to find information on ANSI escape sequence '8t'. The following command sequence seems to reset console terminal, say PuTTY for example to the given rows and columns values...

Via BASH...
$ echo -en '\033[8;60;160t'

The above sequence does in fact change the (virtual) console windows (i.e. PuTTY) windows size to 60 rows and 160 columns. But I can't seem to find any official source documentation for this. Any help greatly appreciated.

@jredfox
Copy link

jredfox commented May 27, 2022

why do we use ESC[38;2;r;g;b when ;2 specifically states that the text is faint in the ansi table? I can't find anything online and am curious. because from what I read the 2 should make it faint instead of normal. while ESC[38;22;r;g;b which should enable it as normal rgb text simply doesn't work.

@fnky
Copy link
Author

fnky commented May 27, 2022

why do we use ESC[38;2;r;g;b when ;2 specifically states that the text is faint in the ansi table? I can't find anything online and am curious. because from what I read the 2 should make it faint instead of normal. while ESC[38;22;r;g;b which should enable it as normal rgb text simply doesn't work.

In xterm, 38 is the foreground color code and the subsequent control code specifies the format. 5 would specify a 8-bit format, which only requires a single control segment, whereas 2 specifies a full 24-bit RGB format that requires 3 control segments, one for each channel.

The foreground colors 3037 instead uses the control code 1 and 2 to set the brightness to bright and dim, respectively.

@jackpunt
Copy link

@noneofyourbusiness1415252

bright versions of the ISO colors, without the need to use the bold modifier
'bright' and 'bold' seem to be different things.
image

How those colors are displayed depends on Terminal or Terminal Emulator used

Ideally:
'bright' (the 90/100 codes) effects the luminosity of the color (the total value of the color)
'bold' & 'dim' effect the weight of the font (how thick or thin the chars are)
In other typography what is here called 'dim' is termed 'light' as in light-weight;
But you can see how even that would be confused with luminosity...

@bczsalba
Copy link

bczsalba commented Jun 1, 2022

@noneofyourbusiness1415252

bright versions of the ISO colors, without the need to use the bold modifier
'bright' and 'bold' seem to be different things.
image

How those colors are displayed depends on Terminal or Terminal Emulator used

Ideally: 'bright' (the 90/100 codes) effects the luminosity of the color (the total value of the color) 'bold' & 'dim' effect the weight of the font (how thick or thin the chars are) In other typography what is here called 'dim' is termed 'light' as in light-weight; But you can see how even that would be confused with luminosity...

Additionally, AFAIK "bright" and "bold" used to stand for the same thing, which is why the same unsetter (22) is used for both. Very confusing system, lol.

@matthewpersico
Copy link

Is there any documentation on how to query for the current status of these things? I am particularly interested in the foreground and background color. I can get them on an xterm with the right xwininfo, but can I get back the ansi codes with some ESCyadaayadayada query?

@bczsalba
Copy link

can I get back the ansi codes with some ESCyadaayadayada query?

As far as I know not really, at least not in a properly-followed-standard way. It is likely that pretty much all terminals have some sort of representations internally of their display matrix, but I don't think you can access that in a cross-terminal way. What you can do is manually keep track of where you write what, and query that. Bit more of a hassle though, unfortunately.

P.S. In case I'm wrong and this does exist, please correct me! Would save a lot of effort in the future :D

@matthewpersico
Copy link

matthewpersico commented Jun 17, 2022 via email

@fnky
Copy link
Author

fnky commented Jun 17, 2022

@matthewpersico There's no way to report the current foreground and background set by ANSI escape codes, but there are ways to get some color information about the terminal itself.

xterm specifies OSCs to query text foreground and background using OSC 10 ; ? BEL and OSC 11 ; ? BEL, respectively. For example to get the current text foreground color:

`\e]10;?\a
10;rgb:ebf7/e76a/d8d5

It reports a RGB specification per XParseColor spec.

For rxvt terminals (and derivatives) you can use the COLORFGBG environment variable which returns two or three values, each separated by semicolons and typically in the form fg;bg and sometimes fg;default;bg.

This can mostly be used to get whether terminal is using a dark or light palette as it doesn't report the exact colors. You can see how vim uses it to determine light and dark palette. The drawback is that this variable is not immediately set after terminal changes color and is not precise, as it can be set by the user as well.

On Windows (i.e. Command Prompt) you can obtain this information with Windows-specific APIs.

@matthewpersico
Copy link

@fnky - thanks. I have the xterm stuff, but I was hoping that since ANSI codes work to set info across terminal types, there would be a cross-terminal 'get' API too.

@d36mehta
Copy link

d36mehta commented Jul 18, 2022

@fnky thanks! such a cool collection you've compiled here! pretty nice resource to help me yassify my os! :)

@hinell
Copy link

hinell commented Aug 7, 2022

Some time ago I made a palette using control codes. Checkout:

https://github.com/hinell/palette-print.bash
See preview

@jcubic
Copy link

jcubic commented Oct 28, 2022

What are \033[22;0;0t and \033[23;0;0t? They are the output of the dialog GNU/Linux command.

@fnky
Copy link
Author

fnky commented Oct 28, 2022

@jcubic These are window manipulation (XTWINOPS) sequences. They are used to control the window of the terminal.

Not all terminals that claim compatibility with xterm supports these extensions.

@he3als
Copy link

he3als commented Nov 27, 2022

Maybe add that the escape character that can be used is ?

@gernot66
Copy link

gernot66 commented Nov 30, 2022

Maybe add that the escape character that can be used is ?

A "non printable character"?
I assume you mean [ESC] (the factual 0x1B) by that, don't you?

This is only of interest if you like to write escape sequences in a text editor to a common text file, the editor obviousely can't display 0x1B and the echo escape sequence obviousely neither will work here since a text file is only displayed and not executed.
I.e. notepad++ will show the non printable (command) characters inversed, it is exactly the same as if you would edit the text file using a hex editor and put in 0x1B, /e or similar is used only if you echo the escape sequence to the console or to a string/file via redirection.
In the end an echo /e (or *e[ or whatever is accepted by your OS/terminal) will end up redirected to a string as 0x1B in this string.

However what reflects the "echo escape" depends heavy on the OS/terminal you work with.

P.S.
I wonder how you got this character in the comment field here because usually you have to mark such as code else it will be refused by the parser or like in your case it's displayed as question mark, in fact because it's parsed as "unknown" i have no proper idea what you typed and only can assume.

@USLTD
Copy link

USLTD commented Dec 1, 2022

Maybe add that the escape character that can be used is ?

A "non printable character"? I assume you mean [ESC] (the factual 0x1B) by that, don't you?

This is only of interest if you like to write escape sequences in a text editor to a common text file, the editor obviousely can't display 0x1B and the echo escape sequence obviousely neither will work here since a text file is only displayed and not executed. I.e. notepad++ will show the non printable (command) characters inversed, it is exactly the same as if you would edit the text file using a hex editor and put in 0x1B, /e or similar is used only if you echo the escape sequence to the console or to a string/file via redirection. In the end an echo /e (or *e[ or whatever is accepted by your OS/terminal) will end up redirected to a string as 0x1B in this string.

However what reflects the "echo escape" depends heavy on the OS/terminal you work with.

P.S. I wonder how you got this character in the comment field here because usually you have to mark such as code else it will be refused by the parser or like in your case it's displayed as question mark, in fact because it's parsed as "unknown" i have no proper idea what you typed and only can assume.

Looks like � (U+FFFD) aka Replacement Character.

@he3als
Copy link

he3als commented Dec 1, 2022

You have to use that character for batch scripting

@BDisp
Copy link

BDisp commented Jan 3, 2023

I can't find an escape sequence for resizing the screen buffer. I know CSI 8;<lines>;<cols>t will resize the visible window, but I also want to resize the screen buffer to allow scrolling. For e..g I want resize the window to 20 lines and 100 columns and resizing the screen buffer to 40 lines and 100 columns, allowing vertical scrolling from 1 to 40 lines. Is this possible?

@CrazyKidJack
Copy link

What is the difference between ESC[m and ESC[0m

Also, does ESC[6m do anything?

@fnky
Copy link
Author

fnky commented Jan 4, 2023

@CrazyKidJack ESC[m acts like ESC[0m as any empty arguments are treated as 0. For example 1;;3 will be treated as 1;0;3.

ESC[6m depends on the terminal support. While xterm specification does not include this SGR control sequence, some implementations may use 5m for slow blink and 6m for fast blink. But this is not guaranteed.

@jredfox
Copy link

jredfox commented Feb 6, 2023 via email

@Lucia12248
Copy link

Look at my project OpenTerminal. Sadley I had to quit due to funding issues but everything is working pretty much except for there is no IPC in it yet. I was going to do Either a network IPC or Named Pipes. Named pipes appears problematic thought I may have to make my own version of it where two processes can both read and write to the same memory location using c++. Also both java and c++ struggle to implement properly memory mapped files as they tend to not close even after the programs close or when you tell it to especially when in java. You are free to modify the library but you can not make money off of it or use it to make money off of in any way as I plan to eventually sell it myself to Microsoft. Sent from Mailhttps://go.microsoft.com/fwlink/?LinkId=550986 for Windows From: @.> Sent: Sunday, February 5, 2023 7:18 PM To: @.> Cc: @.***> Subject: Re: fnky/ANSI.md @Lucia12248 commented on this gist. How can I use these codes in java? — Reply to this email directly, view it on GitHubhttps://gist.github.com/458719343aabd01cfb17a3a4f7296797#gistcomment-4460940 or unsubscribehttps://github.com/notifications/unsubscribe-auth/ACKJBMKE3AB45QLLE6NBQTDWWBGO5BFKMF2HI4TJMJ2XIZLTSKBKK5TBNR2WLJDHNFZXJJDOMFWWLK3UNBZGKYLEL52HS4DFQKSXMYLMOVS2I5DSOVS2I3TBNVS3W5DIOJSWCZC7OBQXE5DJMNUXAYLOORPWCY3UNF3GS5DZVRZXKYTKMVRXIX3UPFYGLK2HNFZXIQ3PNVWWK3TUUZ2G64DJMNZZDAVEOR4XAZNEM5UXG5FFOZQWY5LFVA4TEOBSGQ3TSM5HORZGSZ3HMVZKMY3SMVQXIZI. You are receiving this email because you commented on the thread. Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Oh, no worries! I just figured out how to put the code I wanted into java a bit ago. thanks anyway! Appreciate the help!

@Mqxx
Copy link

Mqxx commented Feb 13, 2023

Hey @fnky I'm not sure but I think you have a typo in the #Colors section. To reset the Bold. I think ist ESC[21m not ESC[22m. 👍

Nice GIST btw.! Amazing work man!

Edit: Sry have not seen the note below.

@moezchroufa
Copy link

they look like regular expressions

@HIFun-cws
Copy link

Do these Esc codes work when getting user input?

@PacifiK2460
Copy link

@alt-jero
Copy link

alt-jero commented Jul 5, 2023

I made this based on your table of colours. I think it can help understanding how the colour indexes work.

Terminal Colors@2x

@bczsalba
Copy link

bczsalba commented Jul 6, 2023

@alt-jero this is great! probably one of the best resources I've seen on how these colors work.

@Managor
Copy link

Managor commented Jul 6, 2023

Absolutely fantastic. Already shared it on several places.

@mostafatamer11
Copy link

thank you so much I was looking for this the whole time

@clarkwang
Copy link

@alt-jero "The middle 246" should be "216"?

@BDisp
Copy link

BDisp commented Jul 7, 2023

@alt-jero "The middle 246" should be "216"?

No, I think is really 246, by this equation:

(256*2-((16+24)/2))/2=246

@n8jhj
Copy link

n8jhj commented Aug 17, 2023

@alt-jero "The middle 246" should be "216"?

I dunno where @BDisp is getting his math; @clarkwang is right. 6^3 = 216. The remaining "five groups of eight" (8*5 = 40) get you back to 256.

@BDisp
Copy link

BDisp commented Aug 17, 2023

@alt-jero "The middle 246" should be "216"?

I dunno where @BDisp is getting his math; @clarkwang is right. 6^3 = 216. The remaining "five groups of eight" (8*5 = 40) get you back to 256.

@alt-jero can you clarify this doubt, please. Thanks.

@A-Babin
Copy link

A-Babin commented Sep 3, 2023

@BDisp It definitely should be "the middle 216."

The first 16 are standard and "bright" terminal colors. The last 24 are ordered grays. The middle 246 is where we begin.

256 (all) - 16 (first) - 24 (last) = 216 (middle). Each RGB component has 6 levels, including zero, 6^3 = 216.

Also, the title should say "256-colour" not "255-colour."

@ColeWunderlich
Copy link

Just to clarify for others, the very first paragraph is laying out the different ways to write ESC. When I initially read it I thought it was saying that it was ESC followed by one of the codes.

So \033 is ESC in octal and 27 is ESC in decimal. NOT that you usually start with ESC\033 or ESC26

@letter-aa
Copy link

for some reason this ←[H>> keeps printing every time i use this \033[H why

@jcubic
Copy link

jcubic commented Nov 9, 2023

@letter-aa maybe whatever you're using doesn't support ANSI escape codes.

@WalberMota
Copy link

Parabéns pelo maraviilhoso trabalho o obriigado por compartilhar. Amei !

@inyourface34456
Copy link

inyourface34456 commented Dec 5, 2023

@letter-aa You forgot the m at the end and instead of \033 use \x1b. That might work better.

@unphased
Copy link

Does anybody know if there is an unofficial (as it's clear there is no official) escape code for Shift+Tab?

From my alacritty config file here is what I collected:

  - { key: Tab,      mods: Shift,         chars: "\x1b[Z"       }
  - { key: Tab,      mods: Control,       chars: "\x1b[27;5;9~" }
  - { key: Tab,      mods: Control|Shift, chars: "\x1b[27;6;9~" }
  - { key: Tab,      mods: Alt,           chars: "\x1b[27;5;9~" }
  - { key: Tab,      mods: Alt|Shift,     chars: "\x1b[27;6;9~" }

I am not sure why or how but it sure seems like neovim and vim understand \E[Z (or CSI Z) as shift tab (<S-Tab>). It is not overridden in there, otherwise a value would be shown from :set <S-Tab>.

Note I think I set the alt/shift tab bindings also to ctrl tab, probably because on PC systems alt and alt shift tab are for application switching and aren't gonna be available for the terminal to use (they can be used by a mac remoted in though but I will never make functionality only triggerable that way)

Somehow with these values my vim/neovim are able to map with <S-Tab>, <C-Tab>, and <C-S-Tab>. So I want to say these are unofficial mappings but I can't find any secondary source for this other than that i stumbled on them working for vims. I'd like to also understand the etymology of the 27;5;9~ if possible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment