【问题标题】:How to detect Caps Lock with ncurses?如何使用 ncurses 检测 Caps Lock?
【发布时间】:2014-05-31 19:21:35
【问题描述】:

我需要使用 ncurses 检测 c 上的大写锁定是否打开/关闭。是否可以?如果是,怎么做?

谷歌搜索这个问题没有任何用处。

更新

我正在寻找它的原因如下:我需要使用不同的处理程序来处理诸如 alt+F 和 alt+shift+F 之类的组合键。但是带大写锁定的 alt+F 和不带大写锁定的 alt+shift+F 返回相同的键码(getch()

【问题讨论】:

  • 这是一个很好的问题,一定会对此进行调查。如果您给出检查的理由,也许我们会想到一些解决方法。
  • @zubergu 我更新了这个问题。
  • 你在哪个平台上? getch,在我的 Mac 终端上使用 curses,返回 27/1Bh,然后返回 f/F,带和不带 Shift,但无论 CapsLock 是打开还是关闭都一样。
  • 我在 debian7 上。大写锁定在按下时打开移位,反之亦然。我想还有其他具有相同行为的 unix 操作系统。
  • 在 TTY 中,您可以使用 ioctl(例如,Debian 软件包“console-tools”的“setleds”就是这样做的),here 是一个 X11 解决方案。也许这有帮助。

标签: c ncurses


【解决方案1】:

你不能。 Caps Lock 的状态对终端不可见。

【讨论】:

  • 除了ncurses还有别的方法吗?
  • 你根本无法在终端应用程序中执行此操作,无论您使用什么操作。
  • 我希望你是错的,但到目前为止事实恰恰相反)如果你找到任何解决方法,请评论/添加答案
【解决方案2】:

这只能通过特定于平台的接口来完成,即使用系统接口而不是通过终端/tty 设备。在 Linux 中,您可以读取 /dev/input/ 中的键盘设备,也可以通过解析 xset -q 的输出来读取。请注意,这将只能读取本地键盘设备,这意味着如果您需要通过 ssh 使用程序,您将无法使用此键。您可能需要提升权限才能直接读取输入设备。

【讨论】:

    猜你喜欢
    • 2015-08-25
    • 1970-01-01
    • 2011-12-03
    • 2011-06-16
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2015-10-26
    • 2020-04-22
    相关资源
    最近更新 更多