gpt4 book ai didi

c++ - 如何覆盖/禁用 ncurses 输入?

转载 作者:行者123 更新时间:2023-11-28 05:50:18 26 4
gpt4 key购买 nike

我正在编写代码,我想将其分为两种变体 - 使用 ncurses 实现的基于文本的界面 (TUI) 和使用 Qt5 实现的 GUI。因此,在命令行中传递一个参数,我可以选择运行哪个版本——使用 GUI 或 TUI(例如,就像在 openSUSE 中使用 YaST)。其余代码(包括来自键盘的输入)应该与选择的界面(TUI 或 GUI)无关。正如我所见,实现这样一个程序的最佳方法是使用不同的类来输入、用户界面等。因此,无论我运行代码的哪个版本,处理输入的类都应该是相同的,并且它通过接口(interface)类的数据,可能是 TUI 或 GUI,具体取决于应用程序的启动方式。问题在于,对于 ncurses,似乎不可能将输入与输出分离。基本上,我想要的是仍然能够使用 ncurses 输出(窗口、面板等),但要使用其他库执行输入。任何人都知道如何解决这个问题?此外,我可以使用哪些输入 C/C++ 库在任何模式(终端或 GUI)下读取键盘事件?

最佳答案

在使用 ncurses 进行输出时,您不必使用 ncurses 的输入函数(例如 wgetch)。

一些程序会这样做(Midnight Commandervi-like-Emacs),因为它们使用的输入大部分使用 ncurses 解析为特殊键,例如

  • escape 字符本身(vi-like-Emacs),或者
  • Midnight Commmander 中的鼠标代码(使用 select 来监控多个输入)。

管理不同的输出 流实际上可能更加困难,因为它们使用有关您的程序在计算机屏幕上的外观的信息。输入通常不会超过屏幕的一行左右。

在 vi-like-Emacs 中,程序使用知道如何与特定类型的设备(终端仿真器、X 窗口、Win32 GUI)一起工作的终端驱动程序,并且程序被编译并与该驱动程序链接。能够在运行时在驱动程序之间切换会很好,但鼠标处理的细微差别比键盘输入和屏幕更新更难分解。

关于c++ - 如何覆盖/禁用 ncurses 输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35390273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com