【问题标题】:How to get Shift+X / Alt+X keys in Curses ?如何在 Curses 中获取 Shift+X / Alt+X 键?
【发布时间】:2011-01-13 20:12:12
【问题描述】:

我目前正在使用此代码来获取击键,但我缺少例如Shift/Alt 键如 Ctrl+Shift+S, Ctrl+Shift+↑、Alt+S

  require 'curses'

  Curses.noecho
  Curses.raw
  Curses.stdscr.keypad(true)
  Curse.nonl

  count = 0
  loop do
    count = (count + 1) % 20
    key = Curses.getch
    break if key == ?\C-c
    Curses.setpos(count,0)
    Curses.addstr("#{key.inspect}     ");
  end

有什么办法可以全部捕捉到吗?

另外:如何区分 Ctrl+J / Ctrl+MCtrl+Enter / Enter,给出相同的键码(10/13)?

【问题讨论】:

    标签: ruby curses


    【解决方案1】:

    还有:如何区分 ctrl+j / ctrl+m 和 ctr+enter / enter, 给出相同的键码 (10/13)

    长话短说 - 你不能。终端几乎肯定会为每个终端产生相同的字节。请阅读

    http://www.leonerd.org.uk/hacks/fixterms/

    也就是说,如果你觉得特别勇敢,可以试试我的libtermkey

    http://www.leonerd.org.uk/code/libtermkey/

    至少可以正确解析Ctrl-arrow 之类的内容。它(还)没有 Ruby 绑定,但是 Perl 和 Python 的存在表明它应该很容易编写。

    最后,如果你觉得更勇敢,你可以运行我写的终端,pangoterm,它具有对任意修改的 Unicode 键进行编码的通用方法,因此它可以区分 Ctrl-m 和 Enter 等...

    https://launchpad.net/pangoterm

    但是,除此之外,答案仍然是“你不能”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 2018-06-30
      • 2022-12-28
      • 2012-04-02
      • 2012-08-15
      • 1970-01-01
      • 2018-03-18
      相关资源
      最近更新 更多