more functions and documentation
This commit is contained in:
parent
8ddd20203d
commit
6f2547eb1f
455
ansi_escape.py
455
ansi_escape.py
@ -1,40 +1,311 @@
|
||||
def bell():
|
||||
print("\u0007")
|
||||
"""
|
||||
Name: ansi_escape
|
||||
By: Filip Nilsen
|
||||
Website: filip-nilsen.com
|
||||
Sources:
|
||||
https://en.wikipedia.org/wiki/ANSI_escape_code
|
||||
https://terminalguide.namepad.de/seq/
|
||||
https://man7.org/linux/man-pages/man4/console_codes.4.html
|
||||
"""
|
||||
|
||||
def cursor_position(**coordinates):
|
||||
def set_title(title, *args):
|
||||
"""
|
||||
Set title of the terminal emulator:
|
||||
\u001b]{n};{t}\u001b\\
|
||||
Where {t} is the title of the window and/or icon
|
||||
Values of {n}
|
||||
|0|Makes {t} title of window and minimized desktop icon
|
||||
|1|Makes {t} title of just the minimized desktop icon
|
||||
|2|Makes {t} title of just the terminal emulator window
|
||||
"""
|
||||
if len(args) == 0:
|
||||
return "\u001b]0;" + title + "\u001b\\"
|
||||
elif args[0] == "window":
|
||||
return "\u001b]2;" + title + "\u001b\\"
|
||||
elif args[0] == "icon":
|
||||
return "\u001b]1;" + title + "\u001b\\"
|
||||
else:
|
||||
return "\u001b]" + str(args[0]) + ";" + title + "\u001b\\"
|
||||
|
||||
def bell_frequency(Hz):
|
||||
return "\u001b[10;" + str(Hz) + "]"
|
||||
bell_freq = bell_frequency
|
||||
bell_f = bell_frequency
|
||||
bell_hz = bell_frequency
|
||||
|
||||
def bell_duration(ms):
|
||||
return "\u001b[11;" + str(ms) + "]"
|
||||
|
||||
def blink_interval(ms):
|
||||
return "\u001b[16;" + str(ms) + "]"
|
||||
|
||||
def erase_character(*amount):
|
||||
"""
|
||||
Deletes from left to right -->
|
||||
Does not change cursor position.
|
||||
"""
|
||||
try:
|
||||
return "\u001b[" + str(amount[0]) + "X"
|
||||
except:
|
||||
return "\u001bX"
|
||||
|
||||
|
||||
def delete_character(*amount):
|
||||
"""
|
||||
Deletes from left to right -->
|
||||
Characters to the left ar shifted to the right by {amout}.
|
||||
Does not change cursor position.
|
||||
"""
|
||||
try:
|
||||
return "\u001b[" + str(amount[0]) + "P"
|
||||
except:
|
||||
return "\u001bP"
|
||||
|
||||
def line(a, *amount):
|
||||
return_string = "\u001b["
|
||||
try:
|
||||
return_string += coordinates["row"]
|
||||
return_string += str(amount[0])
|
||||
except:
|
||||
pass
|
||||
if a == "insert":
|
||||
return return_string + "L"
|
||||
elif a == "delete":
|
||||
return return_string + "M"
|
||||
|
||||
def set_leds(led):
|
||||
a = {
|
||||
"reset": "0",
|
||||
"clear": "0",
|
||||
"none": "0",
|
||||
"scroll lock": "1",
|
||||
"num lock": "2",
|
||||
"caps lock": "3"
|
||||
}
|
||||
try:
|
||||
return "\u001b[" + a[led] + "q"
|
||||
except:
|
||||
return "\u001b" + str(led) + "q"
|
||||
|
||||
def set(attr):
|
||||
a = {
|
||||
"bold": "1",
|
||||
"faint": "2",
|
||||
"italic": "3",
|
||||
"underline": "4",
|
||||
"blink": "5",
|
||||
"overline": "53",
|
||||
"inverse": "7",
|
||||
"invisible": "8",
|
||||
"strike": "9"
|
||||
}
|
||||
try:
|
||||
return "\u001b[" + a[attr] + "m"
|
||||
except:
|
||||
return "\u001b[" + str(attr) + "m"
|
||||
|
||||
def unset(attr):
|
||||
a = {
|
||||
"all": "0",
|
||||
"bold": "22",
|
||||
"faint": "22",
|
||||
"italic": "23",
|
||||
"underline": "24",
|
||||
"blink": "25",
|
||||
"overline": "55",
|
||||
"inverse": "27",
|
||||
"invisible": "28",
|
||||
"strike": "29",
|
||||
"fg": "39",
|
||||
"bg": "49"
|
||||
}
|
||||
try:
|
||||
return "\u001b[" + a[attr] + "m"
|
||||
except:
|
||||
return "\u001b[" + str(attr) + "m"
|
||||
|
||||
|
||||
def set_top_and_bottom_margins(**args):
|
||||
return_string = "\u001b["
|
||||
try:
|
||||
return_string += args["top"]
|
||||
except:
|
||||
pass
|
||||
return_string += ";"
|
||||
|
||||
try:
|
||||
return_string += coordinates["column"]
|
||||
return_string += args["bottom"]
|
||||
except:
|
||||
pass
|
||||
return_string += "r"
|
||||
return return_string
|
||||
|
||||
decstbm = set_top_and_bottom_margins
|
||||
set_scrolling_region = set_top_and_bottom_margins
|
||||
|
||||
|
||||
def select_cursor_style(a, b):
|
||||
return_string = "\u001b["
|
||||
if a == "blinking":
|
||||
if b == "block":
|
||||
return_string += "1"
|
||||
elif b == "underline":
|
||||
return_string += "3"
|
||||
elif b == "bar":
|
||||
return_string += "5"
|
||||
elif a == "steady":
|
||||
if b == "block":
|
||||
return_string += "2"
|
||||
elif b == "underline":
|
||||
return_string += "4"
|
||||
elif b == "bar":
|
||||
return_string += "6"
|
||||
return_string += " q"
|
||||
return return_string
|
||||
|
||||
decscusr = select_cursor_style
|
||||
|
||||
def scroll(direction, *lines):
|
||||
"""
|
||||
\u001b[{n}{d}
|
||||
Scrolls the display up or down by {n} lines. {n} defaults to 1.
|
||||
{d} is the direction to scroll in.
|
||||
Values for {d}:
|
||||
|S|up
|
||||
|T|down
|
||||
"""
|
||||
return_string = "\u001b["
|
||||
try:
|
||||
return_string += str(lines[0])
|
||||
except:
|
||||
pass
|
||||
if direction == "up":
|
||||
return_string += "S"
|
||||
elif direction == "down":
|
||||
return_string += "T"
|
||||
return return_string
|
||||
|
||||
def cursor_horisontal_absolute(*column):
|
||||
"""
|
||||
\u001b[{n}G
|
||||
Wil move the cursor to column {n}.
|
||||
{n} defaults to 1
|
||||
"""
|
||||
return_string = "\u001b["
|
||||
try:
|
||||
return_string += str(column[0]) #optional; therefore it is in a try:
|
||||
except:
|
||||
pass #defaults to 1
|
||||
return_string += "G"
|
||||
return return_string
|
||||
|
||||
cha = cursor_horisontal_absolute
|
||||
|
||||
def cursor_line(direction, *lines):
|
||||
"""
|
||||
\u001b[{n}E
|
||||
Will move the cursor {n} lines down and put the cursor at the beginning of that line.
|
||||
If {n} is not supplied it defaults to 1.
|
||||
|
||||
\u001b[{n}F
|
||||
The same as above, just that the cursor wil go up.
|
||||
"""
|
||||
|
||||
return_string = "\u001b[" #csi
|
||||
|
||||
try:
|
||||
return_string += str(lines[0]) #try to add the optinal lines variable to the control sequence
|
||||
except:
|
||||
pass #lines are optional the standard defaults to 1
|
||||
|
||||
a = {
|
||||
"next": "E", #indicates wanting to scroll down
|
||||
"down": "E",
|
||||
"previous": "F", #scroll up
|
||||
"up": "F"
|
||||
}
|
||||
|
||||
try:
|
||||
return_string += a[direction] #replace human readable name with variable in a{}
|
||||
except:
|
||||
return_string += str(direction) #makes it possible to pass E or F directly to the function
|
||||
|
||||
return return_string
|
||||
|
||||
def cursor_position(**coordinates):
|
||||
"""
|
||||
\u001b[{r};{c}H
|
||||
Will move the cursor to row {r} and column {c}.
|
||||
If {c} and/or {r} is not provided they will default to 1.
|
||||
\u001b;H
|
||||
Will therefore move the cursor to 1,1.
|
||||
"""
|
||||
|
||||
return_string = "\u001b["
|
||||
|
||||
try:
|
||||
return_string += str(coordinates["row"])
|
||||
except:
|
||||
pass
|
||||
|
||||
return_string += ";"
|
||||
|
||||
try:
|
||||
return_string += str(coordinates["column"])
|
||||
except:
|
||||
pass
|
||||
|
||||
return_string += "H"
|
||||
return return_string
|
||||
|
||||
set_cursor = cursor_position
|
||||
#set_cursor = cursor_position
|
||||
cup = cursor_position
|
||||
|
||||
def move_cursor(direction, *cells):
|
||||
return_string = "\u001b["
|
||||
"""
|
||||
\u001b[{c}{d}
|
||||
Moves the cursor {c} cells in direction {d}.
|
||||
{d} can be A, B, C, or D which means up, down, forward/right, and backward/left respectivley.
|
||||
{c} can be omitted and defaults to 1.
|
||||
Examples:
|
||||
\u001b[3A #moves the cursor 3 cells up
|
||||
\u001b[B #moves the cursor 1 cell down
|
||||
"""
|
||||
|
||||
return_string = "\u001b[" #csi
|
||||
|
||||
try:
|
||||
return_string += cells[0]
|
||||
return_string += str(cells[0]) #cells is optional therefore it is in a try statement
|
||||
except:
|
||||
pass
|
||||
a = {
|
||||
pass #if no argument is supplied it defaults to 1
|
||||
|
||||
a = { #human redable names for directions to move the cursor
|
||||
"up": "A",
|
||||
|
||||
"down": "B",
|
||||
|
||||
"forward": "C",
|
||||
"backward": "D"
|
||||
"right": "C",
|
||||
|
||||
"backward": "D",
|
||||
"left": "D"
|
||||
}
|
||||
return_string += a[direction]
|
||||
|
||||
try:
|
||||
return_string += a[direction] #allows human redable names to be used
|
||||
except:
|
||||
return_string += direction #allows the function to take A-D as parameters directly
|
||||
|
||||
return return_string
|
||||
|
||||
def erase_in_display(direction):
|
||||
"""
|
||||
\u001b[{d}J
|
||||
Erases cells on the display from the cursor to direction {d}.
|
||||
{d} can be:
|
||||
|0|Erases from the cursor to the end of the display.
|
||||
|1|Erases from the cursor to the top of the display.
|
||||
|2|Does both.
|
||||
|3|On some terminals this will do both and erase the history. Since it is not supported in all terminals I do not recomend using this.
|
||||
"""
|
||||
return_string = "\u001b["
|
||||
a = {
|
||||
"forward": "0",
|
||||
@ -53,92 +324,136 @@ erase_in_display_from_cursor = erase_in_display
|
||||
ed = erase_in_display
|
||||
|
||||
def erase_in_line(direction):
|
||||
"""
|
||||
\u001b[{n}K
|
||||
Deletes characters on the same line as the cursor in direction {n} from the cursor.
|
||||
{n} can be:
|
||||
|0|Deletes from the cursor to the end of the line.
|
||||
|1|Deletes from the cursor to the beginning of the line.
|
||||
|2|Deletes in both directions. (Clears the line)
|
||||
"""
|
||||
return_string = "\u001b["
|
||||
a = {
|
||||
a = { #human readable names
|
||||
"forward": "0",
|
||||
"right": "0",
|
||||
"backward": "1",
|
||||
"left": "1",
|
||||
"both": "2"
|
||||
}
|
||||
try:
|
||||
return_string += a[direction]
|
||||
return_string += a[direction] #replaces the human readable name with mthe machine readable number
|
||||
except:
|
||||
return_string += direction
|
||||
return_string += str(direction) #makes it posible to use numbers 0-2 instead
|
||||
return_string += "K"
|
||||
return return_string
|
||||
|
||||
erase_in_line_from_cursor = erase_in_line
|
||||
el = erase_in_line
|
||||
|
||||
def color(mode, ground, *args):
|
||||
return_string = "\u001b["
|
||||
if mode == "bright":
|
||||
return_string += "1;"
|
||||
mode = "normal"
|
||||
def color(ground, *args):
|
||||
"""
|
||||
Color is complicated:
|
||||
See: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors
|
||||
|
||||
3-bit 8 colors support:
|
||||
\u001b[{g}{c}m
|
||||
Where {g} can be 3 or 4 and represents if the foreground color (aka text color) or background color should be changed.
|
||||
|3|Change foreground color (aka text color)
|
||||
|4|Change background color
|
||||
{c} is a number between 0-7 that represents the color itself
|
||||
Example:
|
||||
\u001b[46m #makes the text background color cyan
|
||||
|
||||
Brighter/lighter/"more intense" variants of the 3-bit colors (4-bit color):
|
||||
\u001b[{g}{c}m
|
||||
Here the values of {g} are different:
|
||||
|9 |Foreground color
|
||||
|10|Background color
|
||||
{c} is the same as 3-bit
|
||||
Example:
|
||||
\u001b[100m #sets background color to bright black (esentially grey)
|
||||
|
||||
8-bit 256 color support:
|
||||
See: https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit for list of colors
|
||||
\u001b[{g}8;5;{c}m
|
||||
{g} uses the same values as 3-bit color.
|
||||
{c} is a number between 0-255 that represent the color.
|
||||
Values for {c}:
|
||||
|0-7 |Same numbers as those used for 3-bit colors
|
||||
|8-15 |Brighter 3-bit colors
|
||||
|16-231 |Colors
|
||||
|232-255|Grayscale
|
||||
Example:
|
||||
\001b[48;5;34m #sets a light green background color
|
||||
|
||||
24-bit True color:
|
||||
\u001b[8;2;{r};{g};{b}m
|
||||
Variables {r}, {g}, and {b} are rgb values
|
||||
"""
|
||||
|
||||
return_string = "\u001b[" #csi
|
||||
|
||||
if ground == "fg":
|
||||
if ground == "fg": #sets text color aka foreground color
|
||||
return_string += "3"
|
||||
elif ground == "bg":
|
||||
elif ground == "bg": #sets background color
|
||||
return_string += "4"
|
||||
|
||||
if mode == "256":
|
||||
return_string += "8;5;"
|
||||
return_string += args[0]
|
||||
return_string += "m"
|
||||
return return_string
|
||||
|
||||
elif mode == "rgb":
|
||||
return_string += "8;2;"
|
||||
return_string = return_string + args[0] + ";" + args[1] + ";" +args[2]
|
||||
return_string += "m"
|
||||
return return_string
|
||||
|
||||
elif mode == "normal":
|
||||
color_chart = {
|
||||
"black": "0",
|
||||
"red": "1",
|
||||
"green": "2",
|
||||
"yellow": "3",
|
||||
"blue": "4",
|
||||
"magenta": "5",
|
||||
"cyan": "6",
|
||||
"white": "7"
|
||||
if len(args) == 1:
|
||||
return_string += "8;5;" #SGR code for 8-bit 256 color support
|
||||
color_chart = { #human readable color names instead of 0-7
|
||||
"black": 0,
|
||||
"red": 1,
|
||||
"green": 2,
|
||||
"yellow": 3,
|
||||
"blue": 4,
|
||||
"magenta": 5,
|
||||
"cyan": 6,
|
||||
"white": 7
|
||||
}
|
||||
a = color_chart[args[0]]
|
||||
return_string += a
|
||||
color = args[0]
|
||||
|
||||
if type(color) == str: #human readable name
|
||||
if "bright-" in color:
|
||||
color = color.replace("bright-", "")
|
||||
color = color_chart[color] + 8
|
||||
else:
|
||||
color = color_chart[color]
|
||||
|
||||
return_string += str(color)
|
||||
return_string += "m"
|
||||
return return_string
|
||||
|
||||
elif len(args) == 3:
|
||||
return_string += "8;2;" #SGR code for 24-bit RGB
|
||||
return_string = return_string + str(args[0]) + ";" + str(args[1]) + ";" + str(args[2]) #r;g;b
|
||||
return_string += "m"
|
||||
return return_string
|
||||
|
||||
bell = "\u0007"
|
||||
|
||||
backspace = "\u0008"
|
||||
bs = backspace
|
||||
|
||||
escape = "\u001b"
|
||||
esc = escape
|
||||
|
||||
csi = escape + "["
|
||||
|
||||
reset = csi + "0m"
|
||||
normal = reset
|
||||
reset_formatting = reset
|
||||
"""
|
||||
Device Status Report (DSR)
|
||||
Returns cursor position to the application
|
||||
\u001b[{r};{c}R
|
||||
{r} is the row
|
||||
{c} is the column
|
||||
"""
|
||||
device_status_report = csi + "6n"
|
||||
dsr = device_status_report
|
||||
|
||||
bold = csi + "1m"
|
||||
faint = csi +"2m"
|
||||
underline = csi + "4m"
|
||||
blink = csi + "5m"
|
||||
decaln = esc + "#8" #fills screen with E
|
||||
decid = esc + "Z"
|
||||
|
||||
invert = csi + "7m"
|
||||
reverse_video = invert
|
||||
save_cursor = esc + "7"
|
||||
decsc = save_cursor
|
||||
|
||||
strike = csi + "9m"
|
||||
crossed_out = strike
|
||||
|
||||
normal_intensity = csi + "22m"
|
||||
#no_italic = csi + "23m" #not vidley supported
|
||||
no_blink = csi + "25m"
|
||||
no_strike = csi + "29m"
|
||||
reset_fg = csi + "39m"
|
||||
reset_bg = csi + "49m"
|
||||
overline = csi + "53m"
|
||||
no_overline = csi + "55m"
|
||||
frame = csi + "51m"
|
||||
encircle = csi + "52m"
|
||||
no_frame = csi + "54m"
|
||||
restore_cursor = esc + "8"
|
||||
decrc = restore_cursor
|
49
doc/color.md
Normal file
49
doc/color.md
Normal file
@ -0,0 +1,49 @@
|
||||
Color
|
||||
=====
|
||||
256 8-bit colors
|
||||
----------------
|
||||
```python
|
||||
print(ansi_escape.color("fg", "red") + "red text")
|
||||
```
|
||||
Makes the color of the text itself (aka the foreground color) red.
|
||||
|
||||
```python
|
||||
print(ansi_escape.color("bg", "bright-cyan") + "bright cyan text background")
|
||||
```
|
||||
This will make the background color bright cyan.
|
||||
|
||||
ansi_escape.color() also supports the numbers 0-255 [here is a list explaining each number.](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit)
|
||||
|
||||
```python
|
||||
print(ansi_escape.color("bg", 33) + "text")
|
||||
```
|
||||
|
||||
You can also use the following human readable names insteead of 0-16:
|
||||
|
||||
| Instead of | Use |
|
||||
| ---------: | :------------- |
|
||||
| 0|"black" |
|
||||
| 1|"red" |
|
||||
| 2|"green" |
|
||||
| 3|"yellow" |
|
||||
| 4|"blue" |
|
||||
| 5|"magenta" |
|
||||
| 6|"cyan" |
|
||||
| 7|"white" |
|
||||
| 8|"bright-black" |
|
||||
| 9|"bright-red" |
|
||||
| 10|"bright-green" |
|
||||
| 11|"bright-yellow" |
|
||||
| 12|"bright-blue" |
|
||||
| 13|"bright-magenta"|
|
||||
| 14|"bright-cyan" |
|
||||
| 15|"bright-white" |
|
||||
|
||||
24-bit True Color
|
||||
-----------------
|
||||
To do this provide ansi_escape.color() with "fg" or "bg" + 3 comma reperated values for r, g, and b respectivley, each rgb value can be a number between 0-255.
|
||||
|
||||
```python
|
||||
print(ansi_escape.color("bg", 128, 0, 255) + "bg for background color")
|
||||
print(ansi_escape.color("fg", 255, 69, 128) + "fg for foreground color")
|
||||
```
|
49
doc/cursor.md
Normal file
49
doc/cursor.md
Normal file
@ -0,0 +1,49 @@
|
||||
Cursor control
|
||||
==============
|
||||
Move to spesific coordinates
|
||||
----------------------------
|
||||
To move the terminal cursor using positional coordinates use the following function:
|
||||
|
||||
```python
|
||||
ansi_escape.cursor_position()
|
||||
```
|
||||
If the function name is to long you can use:
|
||||
|
||||
```python
|
||||
ansi_escape.cup()
|
||||
```
|
||||
instead.
|
||||
|
||||
```python
|
||||
ansi_escape.cup() #sets position to 1,1
|
||||
ansi_escape.cursor_position(row=5) #sets cursor position to row 5 and column 1
|
||||
ansi_escape.cup(column=16) #sets cursor position to column 16 and row 1
|
||||
ansi_escape.cursor_position(row=30, column=3) #sets cursor position to row 30 and column 3
|
||||
```
|
||||
Move cursor from current position
|
||||
---------------------------------
|
||||
For relative movements use:
|
||||
|
||||
```python
|
||||
ansi_escape(direction, cells)
|
||||
```
|
||||
direction can be:
|
||||
- "up"
|
||||
- "down"
|
||||
- "forward"
|
||||
- "backward"
|
||||
It is the direction the cursor moves towards.
|
||||
|
||||
cells is an optional argumant which specifies how many character cells you want to move the cursor.
|
||||
|
||||
Move cursor to spesific horisontal position
|
||||
-------------------------------------------
|
||||
Use:
|
||||
|
||||
```python
|
||||
ansi_escape.cursor_horisontal_absolute(column)
|
||||
#or
|
||||
ansi_escape.cha(column)
|
||||
```
|
||||
column can be omitted and will then default to 1.
|
||||
This will not affect the vertical coordinates of the cursor.
|
38
doc/delete.md
Normal file
38
doc/delete.md
Normal file
@ -0,0 +1,38 @@
|
||||
Character deletion
|
||||
==================
|
||||
Erase character
|
||||
---------------
|
||||
```python
|
||||
ansi_escape.erase_character(n)
|
||||
```
|
||||
Will erase n amount of characters from the cursor to the right of the cursor.
|
||||
amount defaults to 1.
|
||||
<!---Example:
|
||||
0|1|2|3|4|5|6|7|8|9|10
|
||||
:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|:--
|
||||
h|e|l|l|o|{cursor}|w|o|r|l|d
|
||||
Here the cursor is on cell 5, if you where to run--->
|
||||
Delete character
|
||||
----------------
|
||||
```python
|
||||
ansi_escape.delete_character(n)
|
||||
```
|
||||
Works just like erase_character(), but after deleting the characters it wil shift any remaining characters to the left of the cursor by n amount.
|
||||
If n is omitted it defaults to 1.
|
||||
Erase in display
|
||||
----------------
|
||||
```python
|
||||
ansi_escape.erase_in_display(n)
|
||||
#or
|
||||
ansi_escape.ed(n)
|
||||
```
|
||||
Will erase in the display from the cursor.
|
||||
n is the direction from the cursor to erase in and can be : forward, backward, or both. n can also be "history" which works like "both", but will also include the buffered history of the terminal. I do not reccomend using history since it is not widley supported.
|
||||
Erase in line
|
||||
-------------
|
||||
```python
|
||||
ansi_escape.erase_in_line(n)
|
||||
#or
|
||||
ansi_escape.el(n)
|
||||
```
|
||||
Like erase in display, but limited to one line. The n variable works the same way, minus the history option.
|
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
/home/filip/Documents/python3/ansi_escape/ansi_escape.py
|
7
examples/backspace.py
Normal file
7
examples/backspace.py
Normal file
@ -0,0 +1,7 @@
|
||||
import ansi_escape, sys, time
|
||||
print("Hello World!!", end='')
|
||||
time.sleep(1)
|
||||
a = 0
|
||||
while a < 5:
|
||||
a += 1
|
||||
sys.stdout.write(ansi_escape.backspace)
|
5
examples/bell.py
Normal file
5
examples/bell.py
Normal file
@ -0,0 +1,5 @@
|
||||
import ansi_escape
|
||||
print(ansi_escape.bell_f(10000))
|
||||
a = 10
|
||||
while a < 10:
|
||||
print(ansi_escape.bell)
|
@ -1,8 +0,0 @@
|
||||
import ansi_escape
|
||||
a = 0
|
||||
while a < 10:
|
||||
a += 1
|
||||
print("Hello World!!")
|
||||
|
||||
a = input()
|
||||
print(ansi_escape.move_cursor("up", str(a)) + ansi_escape.el("both"))
|
2
examples/dsr.py
Normal file
2
examples/dsr.py
Normal file
@ -0,0 +1,2 @@
|
||||
import ansi_escape, sys
|
||||
print(ansi_escape.cup(column=23, row=22) + ansi_escape.dsr)
|
@ -1,2 +0,0 @@
|
||||
import ansi_escape, os
|
||||
print(ansi_escape.erase_from_cursor("2"))
|
7
examples/garble_display.py
Normal file
7
examples/garble_display.py
Normal file
@ -0,0 +1,7 @@
|
||||
import ansi_escape
|
||||
from random import randint as randint
|
||||
while 1:
|
||||
print(ansi_escape.cup(column=randint(1, 80), row=randint(1, 30)) +
|
||||
ansi_escape.color("bg", randint(0, 255), randint(0, 255), randint(0, 255)) +
|
||||
" " +
|
||||
ansi_escape.unset("all"))
|
3
examples/keyboard.py
Normal file
3
examples/keyboard.py
Normal file
@ -0,0 +1,3 @@
|
||||
import ansi_escape
|
||||
print(ansi_escape.set_leds("reset"))
|
||||
input()
|
@ -1,7 +0,0 @@
|
||||
import keyboard, ansi_escape
|
||||
print(ansi_escape.erase_from_cursor("both"))
|
||||
keyboard.add_hotkey('up', ansi_escape.cursor, args=('up'))
|
||||
keyboard.add_hotkey('down', ansi_escape.cursor, args=('down'))
|
||||
keyboard.add_hotkey('left', ansi_escape.cursor, args=('backward'))
|
||||
keyboard.add_hotkey('right', ansi_escape.cursor, args=('forward'))
|
||||
keyboard.wait()
|
@ -2,8 +2,6 @@ import ansi_escape
|
||||
color = 0
|
||||
print(ansi_escape.escape + "]0;256 Color Terminal Palette" + ansi_escape.bell)
|
||||
while color <= 255:
|
||||
color = str(color)
|
||||
print(ansi_escape.color("256", "bg", color) + " " + " " * ( len(color) - 2 ) + color + " ", end="")
|
||||
color = int(color)
|
||||
print(ansi_escape.color("bg", color) + " " + " " * ( len(str(color)) - 2 ) + str(color) + " ", end="")
|
||||
color += 1
|
||||
input()
|
@ -1,4 +0,0 @@
|
||||
import ansi_escape, random
|
||||
while 1:
|
||||
print(ansi_escape.set_cursor(row=str(random.randint(1,20)), column=str(random.randint(1,20))) + ansi_escape.color("normal", "bg", "red") + " " + ansi_escape.reset)
|
||||
input()
|
10
examples/simple_colors.py
Normal file
10
examples/simple_colors.py
Normal file
@ -0,0 +1,10 @@
|
||||
import ansi_escape
|
||||
print(ansi_escape.set("underline"))
|
||||
print(ansi_escape.color("ul", "bright-black") + "aa")
|
||||
print(ansi_escape.color("bg", "bright-red") + " ")
|
||||
print(ansi_escape.color("bg", "bright-green") + " ")
|
||||
print(ansi_escape.color("bg", "bright-yellow") + " ")
|
||||
print(ansi_escape.color("bg", "bright-blue") + " ")
|
||||
print(ansi_escape.color("bg", "bright-magenta") + " ")
|
||||
print(ansi_escape.color("bg", "bright-cyan") + " ")
|
||||
print(ansi_escape.color("bg", "bright-white") + " ")
|
2
examples/size.py
Normal file
2
examples/size.py
Normal file
@ -0,0 +1,2 @@
|
||||
import ansi_escape
|
||||
print(ansi_escape.esc + "[18t")
|
@ -1,13 +0,0 @@
|
||||
import ansi_escape
|
||||
a = 0
|
||||
while a < 256:
|
||||
b = str(a)
|
||||
print(ansi_escape.color("256", "bg", b) + " " + b + " " + ansi_escape.reset, end='')
|
||||
a += 1
|
||||
|
||||
print(ansi_escape.escape + "]0;Demo" + ansi_escape.escape + "\\")
|
||||
input()
|
||||
print("hello" + ansi_escape.move_cursor("up", "2"))
|
||||
input()
|
||||
print(ansi_escape.erase_from_cursor("forward"))
|
||||
input()
|
3
examples/title.py
Normal file
3
examples/title.py
Normal file
@ -0,0 +1,3 @@
|
||||
import ansi_escape
|
||||
print(ansi_escape.set_title("hello"))
|
||||
input()
|
28
readme.md
28
readme.md
@ -1,9 +1,23 @@
|
||||
# ansi_escape
|
||||
## A pure python3 library for ansi VT-100 escape codes
|
||||
ansi_escape
|
||||
===========
|
||||
A pure python3 library for ansi VT-100 escape codes
|
||||
---------------------------------------------------
|
||||
See the doc/ folder and ansi_escape.py for documentation (WIP)
|
||||
See the examples directory for examples/ You need to copy the ansi_escape.py file to the example/ directory to run the examples.
|
||||
Since this library wraps around text sent to the terminal it only returns strings that need to be put inside a print() statement, example:
|
||||
|
||||
```python
|
||||
print(ansi_escape.color("fg", "red") + "Hello")
|
||||
```
|
||||
On the positive side that means that you easily can send
|
||||
output to a file using .write() or write it to the terminal using sys.stdout.write().
|
||||
You are not limited by the limitations of print().
|
||||
Features:
|
||||
SGR (Select Graphic Rendition)
|
||||
SGR foreground and background color in 4-bit color, 8-bit color and 24-bit color
|
||||
---------
|
||||
SGR (Select Graphic Rendition)
|
||||
SGR foreground and background color support with support for 256 8-bit colors and 24-bit true color
|
||||
SGR text formating like; underline, overline and bold text
|
||||
Easy way to use the bell character
|
||||
Move cursor
|
||||
Clear parts of screen or line
|
||||
Use the bell character
|
||||
Free cursor movement
|
||||
Clear parts of screen or line
|
||||
Toggle keyboard leds
|
Loading…
Reference in New Issue
Block a user