【问题标题】:NCurses and ESC,ALT keysNCurses 和 ESC、ALT 键
【发布时间】:2011-05-12 11:41:26
【问题描述】:

NCurses 有问题...我需要处理所有键,例如 EscAlt+F kbd> 等 问题是代码相似......即:


Esc - 27


Alt+A - 27 65


例如,Alt+[key] 组合的双重代码 类似于Esc 键... 任何想法如何处理?

【问题讨论】:

    标签: key ncurses


    【解决方案1】:

    这里是python的一个例子:

    key = self.screen.getch()
    if key == ord('q'): # quit
        go = False
    elif key == 27: # Esc or Alt
        # Don't wait for another key
        # If it was Alt then curses has already sent the other key
        # otherwise -1 is sent (Escape)
        self.screen.nodelay(True)
        n = self.screen.getch()
        if n == -1:
            # Escape was pressed
            go = False
        # Return to delay
        self.screen.nodelay(False)
    

    【讨论】:

      【解决方案2】:

      解决:

      1. 使用 noecho 或超时模式
      2. 检查 27(ALTESC) 代码...如果通过:
      3. 尝试读取另一个代码
      4. 如果另一个代码是 ERR 则.. 你有 ESC 键在其他方式你有 ALT+另一个代码

      【讨论】:

      • 如果用户点击ESC,然后像[这样的另一个键,一个接一个非常快,我们的代码不能看到两个键都通过然后它会看起来不像ESC?因为我真的不知道终端如何在我第二次调用收集下一个我试图确定是否只是ESC 被击中的字符时知道这一点?!
      • @AlexisWilke 没错。你无法确定他们是否真的击中了 Escape,然后[ 真的很快。但是,您通常可以使用如此短的超时,以至于没有人可以合理地击中它,并且大多数转义序列都足够长,以至于很难完美地击中每个键,例如25ms 彼此。另一方面,终端可能会比这更快。
      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 2011-03-13
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      相关资源
      最近更新 更多