1

我正在使用 GLUT(freeglut3)(通过 Haskell GLUT 绑定)。

导入 Graphics.UI.GLUT

handleKBMouse :: KeyboardMouseCallback
handleKBMouse key keyState mods mousePos = do
    print (key, keyState, mods, mousePos)

主::IO()
主要=做
    获取参数并初始化
    创建窗口“testTitle”
    keyboardMouseCallback $= 只处理KBMouse
    主循环

似乎各种重要的键(例如:Shift+Tab)没有调用我的回调。此外,“mods”没有描述 win 键,只有 Ctrl、Shift 和 Alt。

对键盘输入的访问如此有限是实际应用程序开发的严重障碍。我在这里做错了什么还是只是 freeglut 瘫痪了?GLUT 一般是残废的吗?

4

1 回答 1

2

首先,Windows 会捕获 shift-tab 序列,因此即使您直接使用 Win32,您通常也不会看到它。其次,GLUT 旨在实现可移植性,因此除非您可以期望在 Linux、MacOS 等系统下看到相同的密钥,否则 GLUT 甚至不会尝试处理它。第三,GLUT 规范上次更新是很久以前的,所以即使 win-key(或至少类似的东西)现在很普遍,如果不是 12 或 15 年前,GLUT 可能不会知道它。

于 2010-06-13T16:27:10.567 回答