使用TCL C API绑定箭头键

pbgvytdp  于 2023-05-28  发布在  其他
关注(0)|答案(1)|浏览(230)

我在应用程序中使用TCL C Api
具体来说,我使用Tcl_Main创建一个运行我的命令的shell应用程序。这工作得很好,但我正在寻找一种方法来添加典型的类似shell的功能(例如。向上箭头检索最后一个命令,制表符自动完成,等等),我不知道如何用TCL C API做到这一点。
我见过一些解决方案,说把shell Package 在类似GNU readline的东西中,但由于我运行的是一个简单调用Tcl_Main的C程序,我不确定这对我是否适用。
这里有什么指引吗?

deyfvvtc

deyfvvtc1#

如果您正在执行自己的主循环,请在Tcl_Main()之前调用Tcl_MainLoop(yourImplFunc);以插入该循环。这就是它存在的意义
您的主循环将需要操作终端,而Tcl本身在Tcl8.7之前没有提供任何机制(但扩展可能会这样做)。最主要的是你需要获取stdin的文件描述符(参见Tcl_GetChannelHandle),并将其传递给tcgetattr()tcsetattr(),以将终端置于raw模式。一旦进入原始模式,你就可以看到像箭头键这样的东西,但它的一个缺点是你必须做所有的处理。这就是人们使用readline库的原因。

相关问题