2010-06-13 4 views
1

Я использую GLUT (freeglut3) (через привязки Haskell GLUT).freeGLUT ввод клавиатуры

 
import Graphics.UI.GLUT 

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

main :: IO() 
main = do 
    getArgsAndInitialize 
    createWindow "testTitle" 
    keyboardMouseCallback $= Just handleKBMouse 
    mainLoop 

Кажется, что различные важные клавиши (например, Shift + Tab) не вызывают мой обратный вызов. Кроме того, «моды» не описывают win-key, только Ctrl, Shift и Alt.

Наличие такого ограниченного доступа к клавиатуре является серьезным препятствием для реальной разработки приложений. Я делаю что-то не так здесь или просто нелепо, просто искалечен? Является ли GLUT калекой вообще?

ответ

2

Во-первых, Windows ловушки последовательности сдвига-табуляции, поэтому, даже если вы работаете непосредственно с Win32, вы обычно не увидите ее. Во-вторых, GLUT предназначен для переносимости, поэтому, если вы не ожидаете увидеть тот же ключ под Linux, MacOS и т. Д., Скорее всего, GLUT даже не попытается справиться с этим. В-третьих, спецификация GLUT на последнем месте была обновлена ​​long, так что даже если win-key (или, по крайней мере, что-то подобное) сейчас довольно распространен, если бы не 12 или 15 лет назад, GLUT, вероятно, не будет знать об этом.

+0

Я использовал этот код с Ubuntu, а не Windows. Я не думаю, что Windows ловушки «shift + Tab». Если GLUT знает только о вещах, существовавших 12 лет назад, разве это не калечащее ограничение? – Peaker

+0

Упс - это alt + tab, что ловушки Windows; Я извиняюсь. ИМО, о единственном действительном использовании для GLUT - это такие вещи, как тестирование и/или демонстрация. Я сомневаюсь, что я действительно даже * считаю * использовать его в коде для доставки клиенту (за исключением, возможно, чего-то вроде макета, который никогда не предназначался для реального использования). –

+0

Я вижу. Я сам начинаю формировать это мнение :-) Вопрос в том, какая библиотека, независимая от оконной системы, для устройств ввода? SDL является ближайшим, я видел, но он имеет проблемы с OS X, по крайней мере, когда привязки Haskell используются. – Peaker

Смежные вопросы