我正在编写代码,并且我希望使用两种变体 - 使用基于文本的界面(TUI)和ncurses实现,以及使用Qt5实现的GUI。因此,在命令行中传递一个参数,我可以选择运行哪个版本 - 使用GUI或TUI(例如,就像在openSUSE中使用YaST一样)。其余代码(包括键盘输入)应独立于选择的接口(TUI或GUI)。在我看来,实现这样一个程序的最佳方法是使用不同的类进行输入,用户界面等。因此,无论我运行代码的任何版本,处理输入的类应该是相同的,并且它通过接口类的数据,可能是TUI或GUI,具体取决于应用程序的启动方式。问题是对于ncurses,似乎不可能从输出中分离输入。基本上,我想要的仍然是能够使用ncurses输出(窗口,面板等),但与其他库执行输入。谁知道如何解决?另外,我可以使用哪些输入C / C ++库来以任何模式(终端或GUI)读取键盘事件?
答案 0 :(得分:0)
你不必使用ncurses'输入函数(例如wgetch
)在使用ncurses输出时。
有些程序执行此操作(Midnight Commander,vi-like-Emacs),因为它们使用ncurses使用 not 解析为特殊键的输入,例如
select
监视多个输入)。管理不同的输出流实际上可能会更加困难,因为它们会在计算机屏幕上使用有关程序外观的信息。输入通常不会超过屏幕的一行左右。
在vi-like-Emacs中,程序使用终端驱动程序,它知道如何使用特定类型的设备(终端仿真器,X窗口,Win32 GUI),程序被编译并与该驱动程序链接。能够在运行时在驱动程序之间切换会很好,但鼠标处理的细微差别比键盘输入和屏幕更新更难以分解。