ラベル glutGetModifiers の投稿を表示しています。 すべての投稿を表示
ラベル glutGetModifiers の投稿を表示しています。 すべての投稿を表示

2009/02/19

CTRL, ALT and SHIFT

I found glut doesn't provide functionality to detect SHIFT or CTRL key is down. It's for only when some other key was pushed. Please see the web page below.

http://www.lighthouse3d.com/opengl/glut/index.php?5

先日の疑問についてですが、やはりSHIFTやCTRLキーが押されたかどうかだけを判断する機能をglutは持っていないようです。あくまでも他のキーが押された時にのみの判定だそうです。

-----------------------
CTRL, ALT and SHIFT

Sometimes we may want to know if one modifier key, i.e. CTRL, ALT or SHIFT is being pressed. GLUT provides a function that detects if any modifier is being pressed. This function should only be called inside the functions that process keyboard or mouse input events. The syntax for this function is:

int glutGetModifiers(void);
-----------------------

2009/02/18

cannot detect SHIFT key status while doing anything else

Other CubicVR viewers use SHIFT ket for zoom in and CTRL key for zoom out. However, I cannto find any ways to do this in OpenGL. If I push some other key or mouse button while pushing down SHIFT key, I can detect it by useing glutGetModifiers(). But, if I just push SHIFT key, no event detected by OpenGL even in glutIdleFunc(). glutSpecialFunc() doesn't detect SHIFT key. I found some people are asking the same question in web, but I couldn't find any good answere yet. If you know how I can detect SHIFT key event, please let me know.

普通のCubicVR Viewerでは、シフトキーを押すとズームイン、コントロールキーを押すとズームアウトなのですが、OpenGLでうまく実装できていません。シフトキーを押しながら何かすれば(他のキーを押す、マウスボタンを押す)glutGetModifiersでshift, ctrl, altキーが同時に押されたことが分かるのですが、ただシフトキーが押されただけという状態を検出できないのです。シフトキーを押しながらマウスを動かしても、ボタンを押さない限り検出できません。glutSpecialFunc()もシフトキーは認識しません。Webで探しても、同じ質問をしている人は何人か見つかるのですが、誰も回答をもらっていないようです。ご存じの方がおられたら、教えて下さい。

glutKeyboardFunc( mykey ) --- can detect shift key down stat
glutMouseFunc( mymouse ) --- can detect shift key down stat
glutMotionFunc( mymotion) --- can NOT detect
glutSpecialFunc( myspecial ) --- can
glutIdleFunc( myidle ) --- can NOT

まあ、とりあえず、マウスを押したときにシフトキーを押していれば、パンと一緒にズームインするようにしました。まあ、これでも使用上は問題ありませんが、他のソフトとの共通性の問題が残ります。