LINUX.ORG.RU

История изменений

Исправление 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, и оказалось, что в питоне его в либу обернули.