What function can I use to check if the Q button (or any other button is pressed down) and what will be the value needed to specify this for the Q button?
Check Q button is held down using GLUT?
1.7k Views Asked by Barney Chambers At
2
There are 2 best solutions below
0
aslg
On
The simplest thing you can do is to use an array of bools with enough bools to contain the 256 regular keys and the special keys (right, left, etc.. ).
bool keys[256];
Use the KeyDown func to set the matching key to true, and KeyUp to set false.
void KeyboardDown( int key, int x, int y ) {
if ( isalpha( key ) ) {
key = toupper( key );
}
keys[ key ] = true;
}
void KeyboardUp( int key, int x, int y ) {
if ( isalpha( key ) ) {
key = toupper( key );
}
keys[ key ] = false;
}
The toupper just makes sure that pressing q or Q is the same whether Caps-lock is on or off. You don't have to use it if you don't need it.
Then somewhere in the update code you can check if a key was pressed like
if ( keys['Q'] ) {
// do things
}
Related Questions in C++
- How to immediately apply DISPLAYCONFIG_SCALING display scaling mode with SetDisplayConfig and DISPLAYCONFIG_PATH_TARGET_INFO
- Why can't I use templates members in its specialization?
- How to fix "Access violation executing location" when using GLFW and GLAD
- Dynamic array of structures in C++/ cannot fill a dynamic array of doubles in structure from dynamic array of structures
- How do I apply the interface concept with the base-class in design?
- File refuses to compile std::erase() even if using -std=g++23
- How can I do a successful map when the number of elements to be mapped is not consistent in Thrust C++
- Can std::bit_cast be applied to an empty object?
- Unexpected inter-thread happens-before relationships from relaxed memory ordering
- How i can move element of dynamic vector in argument of function push_back for dynamic vector
- Brick Breaker Ball Bounce
- Thread-safe lock-free min where both operands can change c++
- Watchdog Timer Reset on ESP32 using Webservers
- How to solve compiler error: no matching function for call to 'dmhFS::dmhFS()' in my case?
- Conda CMAKE CXX Compiler error while compiling Pytorch
Related Questions in OPENGL
- How to fix "Access violation executing location" when using GLFW and GLAD
- getting Access violation writing location when calling glDrawElements caused by shader
- Experimenting with GLFW library: window boundary problem and normalized coordinates
- OpenGL Framebuffer/FBO RTT subpixel movement discrepancy
- Why isn't my glfw window showing anything?
- How can glPushMatrix affect the rotation of an object around a rotating object?
- g++ / vscode apparently cannot see my src folder? "cc1plus.exe: fatal error: src/glad.c No such file or directory"
- Does addition-assignment cause dependency chain in GLSL?
- Compiling C++ program with Opengl and Glut in windows
- Using Silk.NET in WinForms
- What happens when rendering an OpenGL buffer that has been padded with NULL (or another value)?
- How can I make a sphere follow an eight-like path in Python using OpenGL?
- OpenGL only rendering second triangle, first triangle not visible
- OpenGL shows black texture on quad
- My Visual Studio 2022 consistently gives me errors saying that the GLchar variable type is undefined
Related Questions in INPUT
- Player input not working properly in unity
- Getting data attributes from HTML input element with a datalist
- how to find sum of input value in javascript
- Terminal stimulation
- C#: creating an array and appending console input to each value
- How do i make a text inside disabled <v-text-field> selectable (simply to copy and paste somewhere else)?
- C++ File Input Skipping Lines
- React text box not taking input
- Trying to build a Generative Adversarial Network to generate images based on captions but facing errors with input shapes
- Video controls are hidden behind input feature?
- How can I edit a todo list on the same input where add todo in React?
- Stopping code while the input line is running
- Store Gum Input in variable?
- Detect password manager (or chromium) autofill for websites
- How can I make sure that my Selector does not overlap my text-area box when hover ? I would like for the selector to smoothly push down the text-area
Related Questions in GLUT
- Error "OpenGL.error.NullFunctionError: with an undefined function glutInitWindowPosition"
- Need Help Configuring VTK-m Build (cmake) on Ubuntu 22.04
- Translating primitives in OpenGL
- How to Draw a Rotating Sun in OpenGL (traditional)
- GLUT display window stretching out of window box and duplicating pixels
- Opengl triangulation c++
- Any clue why lines are not displayed?
- How can I statically link GL/gl.h and GL/glut.h to my C++ program, using G++
- ImGui don't recognize FreeGLUT?
- Translucent box with opaque items inside
- Closing window ('X') button is inactive on MacOs 11.7 (GLUT)
- OpenGL texture is fainter than it should be, kind of mutliplied by top right pixel
- How to Resize "SubWindow" in FreeGLUT?
- why is my OpenGL program not working? (binding a VBO for GL_ELEMENT_ARRAY_BUFFER and enable GL_NORMAL_ARRAY client state)
- raycasted image appears distorted after correcting the fisheye effect
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Using glut you need to define a Keyboard Handler function, and tell GLUT to use it for handling key strokes. Something along the lines of:
EDIT: Added support for keyboard up. Using global variables isn't the best practice, but GLUT almost forces you to use them to keep track of program states. The good thing is that you can use the global variable (is_q_pressed) anywhere in your program... like in the idle() for some logic, or in the draw function to draw something if that key is pressed.
And, as @aslg said, you can make an array of bools to keep track of every key pressed, check his answer for ideas too :)