История изменений
Исправление rtxtxtrx, (текущая версия) :
Забавно, что в питоне все нужное для создания консольного редактора в стандартной библиотеке:
>>> import sys
>>> import termios
>>> import tty
>>>
>>> class SimpleTerminal:
... def __init__(self):
... # Сохраняем текущие настройки терминала
... self.old_settings = termios.tcgetattr(sys.stdin)
...
... def enable_raw_mode(self):
... # Включаем сырой режим для терминала
... tty.setraw(sys.stdin)
...
... def disable_raw_mode(self):
... # Восстанавливаем исходные настройки терминала
... termios.tcsetattr(sys.stdin, termios.TCSADRAIN, self.old_settings)
...
... def run(self):
... print("Запуск терминала. Нажмите 'q' для выхода.")
... try:
... self.enable_raw_mode()
... while True:
... # Читаем по одному символу
... char = sys.stdin.read(1)
... if char == 'q': # Завершить при вводе 'q'
... print("\nВыход из терминала.")
... break
... # Выводим символ на экран
... print(f"Введено: {char}")
... finally:
... self.disable_raw_mode()
...
>>> terminal = SimpleTerminal()
>>> terminal.run()
Запуск терминала. Нажмите 'q' для выхода.
Введено:
Введено:
Введено:
Введено:
Введено: h
Введено: a
Введено: h
Введено: a
Введено: a
Введено: h
Введено: a
Введено: h
Введено: a
Введено: h
Введено: a
Введено: d
Введено: d
Введено: s
Введено: d
Введено: s
Введено: d
Введено: s
Введено: d
Введено: s
Введено: d
Введено: d
Выход из терминала.
>>> q
Я по ссылке выше увидел termios.h
, и оказалось, что в питоне его в либу обернули.
Исходная версия rtxtxtrx, :
Забавно, что в питоне все нужное для создания консольного редактора в стандартной библиотеке:
>>> import sys
>>> import termios
>>> import tty
>>>
>>> class SimpleTerminal:
... def __init__(self):
... # Сохраняем текущие настройки терминала
... self.old_settings = termios.tcgetattr(sys.stdin)
...
... def enable_raw_mode(self):
... # Включаем сырой режим для терминала
... tty.setraw(sys.stdin)
...
... def disable_raw_mode(self):
... # Восстанавливаем исходные настройки терминала
... termios.tcsetattr(sys.stdin, termios.TCSADRAIN, self.old_settings)
...
... def run(self):
... print("Запуск терминала. Нажмите 'q' для выхода.")
... try:
... self.enable_raw_mode()
... while True:
... # Читаем по одному символу
... char = sys.stdin.read(1)
... if char == 'q': # Завершить при вводе 'q'
... print("\nВыход из терминала.")
... break
... # Выводим символ на экран
... print(f"Введено: {char}")
... finally:
... self.disable_raw_mode()
...
>>> terminal = SimpleTerminal()
>>> terminal.run()
Запуск терминала. Нажмите 'q' для выхода.
Введено:
Введено:
Введено:
Введено:
Введено: h
Введено: a
Введено: h
Введено: a
Введено: a
Введено: h
Введено: a
Введено: h
Введено: a
Введено: h
Введено: a
Введено: d
Введено: d
Введено: s
Введено: d
Введено: s
Введено: d
Введено: s
Введено: d
Введено: s
Введено: d
Введено: d
Выход из терминала.
>>> q
Я по ссылке выше увидел termios.h
, и оказалось, что в питоне его в либу обернули.