File indexing completed on 2026-04-09 07:49:38
0001 #pragma once
0002
0003
0004
0005
0006
0007
0008 #include "SGLM_Modifiers.h"
0009
0010 struct SGLFW_Keys
0011 {
0012 enum { NUM_KEYS = 512 } ;
0013 bool down[NUM_KEYS] ;
0014
0015 SGLFW_Keys();
0016 void key_pressed(unsigned key);
0017 void key_released(unsigned key);
0018 unsigned modifiers() const ;
0019 };
0020
0021 inline SGLFW_Keys::SGLFW_Keys()
0022 {
0023 for(int i=0 ; i < NUM_KEYS ; i++) down[i] = false ;
0024 }
0025 inline void SGLFW_Keys::key_pressed(unsigned key)
0026 {
0027 if(key < NUM_KEYS) down[key] = true ;
0028 }
0029 inline void SGLFW_Keys::key_released(unsigned key)
0030 {
0031 if(key < NUM_KEYS) down[key] = false ;
0032 }
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043 inline unsigned SGLFW_Keys::modifiers() const
0044 {
0045 unsigned modifiers = 0 ;
0046 if( down[GLFW_KEY_LEFT_SHIFT] || down[GLFW_KEY_RIGHT_SHIFT] ) modifiers += SGLM_Modifiers::MOD_SHIFT ;
0047 if( down[GLFW_KEY_LEFT_CONTROL] || down[GLFW_KEY_RIGHT_CONTROL] ) modifiers += SGLM_Modifiers::MOD_CONTROL ;
0048 if( down[GLFW_KEY_LEFT_ALT] || down[GLFW_KEY_RIGHT_ALT] ) modifiers += SGLM_Modifiers::MOD_ALT ;
0049 if( down[GLFW_KEY_LEFT_SUPER] || down[GLFW_KEY_RIGHT_SUPER] ) modifiers += SGLM_Modifiers::MOD_SUPER ;
0050
0051 if( down[GLFW_KEY_W] ) modifiers += SGLM_Modnav::MOD_W ;
0052 if( down[GLFW_KEY_A] ) modifiers += SGLM_Modnav::MOD_A ;
0053 if( down[GLFW_KEY_S] ) modifiers += SGLM_Modnav::MOD_S ;
0054 if( down[GLFW_KEY_D] ) modifiers += SGLM_Modnav::MOD_D ;
0055 if( down[GLFW_KEY_Q] ) modifiers += SGLM_Modnav::MOD_Q ;
0056 if( down[GLFW_KEY_E] ) modifiers += SGLM_Modnav::MOD_E ;
0057 if( down[GLFW_KEY_R] ) modifiers += SGLM_Modnav::MOD_R ;
0058 if( down[GLFW_KEY_Y] ) modifiers += SGLM_Modnav::MOD_Y ;
0059
0060 return modifiers ;
0061 }
0062
0063