mirror of
https://github.com/Lyxminxx/weatherCLI.git
synced 2026-10-12 05:07:45 +02:00
Initial commit
This commit is contained in:
commit
3394196287
2164 files changed
+358958
No files matched your search
@@ -0,0 +1,55 @@
|
||||
import sys
|
||||
import termios
|
||||
|
||||
from ._config import config
|
||||
|
||||
|
||||
# Initially taken from:
|
||||
# http://code.activestate.com/recipes/134892/
|
||||
# Thanks to Danny Yoo
|
||||
# more infos from:
|
||||
# https://gist.github.com/michelbl/efda48b19d3e587685e3441a74457024
|
||||
# Thanks to Michel Blancard
|
||||
def readchar() -> str:
|
||||
"""Reads a single character from the input stream.
|
||||
Blocks until a character is available."""
|
||||
|
||||
fd = sys.stdin.fileno()
|
||||
old_settings = termios.tcgetattr(fd)
|
||||
term = termios.tcgetattr(fd)
|
||||
try:
|
||||
term[3] &= ~(termios.ICANON | termios.ECHO | termios.IGNBRK | termios.BRKINT)
|
||||
termios.tcsetattr(fd, termios.TCSAFLUSH, term)
|
||||
|
||||
ch = sys.stdin.read(1)
|
||||
finally:
|
||||
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
|
||||
return ch
|
||||
|
||||
|
||||
def readkey() -> str:
|
||||
"""Get a keypress. If an escaped key is pressed, the full sequence is
|
||||
read and returned as noted in `_posix_key.py`."""
|
||||
|
||||
c1 = readchar()
|
||||
|
||||
if c1 in config.INTERRUPT_KEYS:
|
||||
raise KeyboardInterrupt
|
||||
|
||||
if c1 != "\x1B":
|
||||
return c1
|
||||
|
||||
c2 = readchar()
|
||||
if c2 not in "\x4F\x5B":
|
||||
return c1 + c2
|
||||
|
||||
c3 = readchar()
|
||||
if c3 not in "\x31\x32\x33\x35\x36":
|
||||
return c1 + c2 + c3
|
||||
|
||||
c4 = readchar()
|
||||
if c4 not in "\x30\x31\x33\x34\x35\x37\x38\x39":
|
||||
return c1 + c2 + c3 + c4
|
||||
|
||||
c5 = readchar()
|
||||
return c1 + c2 + c3 + c4 + c5
|
||||
Reference in new issue
Block a user