当前位置:  开发笔记 > 编程语言 > 正文

如何在D Programming Language + Tango中获取单键击中?

如何解决《如何在DProgrammingLanguage+Tango中获取单键击中?》经验,为你挑选了1个好方法。

我读了这篇文章并试着用D编程语言练习,但在第一次练习中遇到了问题.

(1)在无限循环中显示数字序列(1,2,3,4,5 ......等).如果有人按特定键(Say ESCAPE键),程序应该退出.

当然,无限循环不是一个大问题,但其余的是.我怎么能在D/Tango中获得一个关键击中?在tango FAQ中它说使用C函数kbhit()或get(),但据我所知,这些不在C标准库中,并且不存在于我用于编程的Linux机器附带的glibc中.

我知道我可以使用像ncurses这样的第三方库,但它有同样的问题,就像kbhit()或get()一样,它不是C或D中的标准库,也没有预先安装在Windows上.我希望我能完成这个练习只使用D/Tango并且可以在Linux和Windows机器上运行它.

我怎么能这样做?



1> Walter Brigh..:

以下是使用D编程语言的方法:

    import std.c.stdio;
    import std.c.linux.termios;

    termios  ostate;                 /* saved tty state */
    termios  nstate;                 /* values for editor mode */

    // Open stdin in raw mode
    /* Adjust output channel        */
    tcgetattr(1, &ostate);                       /* save old state */
    tcgetattr(1, &nstate);                       /* get base of new state */
    cfmakeraw(&nstate);
    tcsetattr(1, TCSADRAIN, &nstate);      /* set mode */

   // Read characters in raw mode
    c = fgetc(stdin);

    // Close
    tcsetattr(1, TCSADRAIN, &ostate);       // return to original mode

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有