input之如何在 D 编程语言 + Tango 中抓取单键命中

你猜 阅读:26 2024-02-27 23:08:18 评论:0

我读了这个 article并尝试用D编程语言做练习,但在第一个练习中遇到问题。

(1) Display series of numbers (1,2,3,4, 5....etc) in an infinite loop. The program should quit if someone hits a specific key (Say ESCAPE key).



当然无限循环不是大问题,但剩下的就是。我怎么能在 D/Tango 中捕获关键点?在 tango FAQ 中,它说使用 C 函数 kbhit() 或 get(),但据我所知,这些不在 C 标准库中,也不存在于我用来编程的 Linux 机器附带的 glibc 中。

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

我怎么能做到?

请您参考如下方法:

以下是您在 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 


标签:编程语言
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号