如何在Scheme中录制单个按键?

时间:2016-06-14 07:57:18

标签: input io scheme

我无法找到如何录制单个按键,如单个字符或箭头,或修改键,如shift。

最接近的是read-char但等待您在发送输入之前按Enter键。我想只是注册按键并立即通过它。

如果这是特定于实现的,我正在使用Chez-Scheme。

2 个答案:

答案 0 :(得分:1)

与按键有关的任何内容都是特定于实现的,因为它没有在Scheme标准中解决。据Chez Scheme说,据我所知,没有直接支持按键。但是,如果您安装随Chez Scheme一起提供的SWL(Scheme Widget Library),则会有一个读取按键的命令。我从来没有用过它,对此也一无所知。

答案 1 :(得分:1)

正如前面提到的,按键是系统特定的,但是在Linux或BSD系统上,几乎肯定会安装stty,这将使用chez方案做你想要的:

(system "stty --file=/dev/tty cbreak -echo")
(let ([keyboard (open-input-file "/dev/tty")])
  (format #t "The key press was ~A~%" (read-char keyboard)))
(system "stty --file=/dev/tty -cbreak echo")