added windowKeyShift, windowKeyCtrl and windowKeyAlt
This commit is contained in:
parent
6951a36932
commit
0c34121cc0
12
main.c
12
main.c
|
@ -5,14 +5,14 @@
|
||||||
#include "src/openwindow.h"
|
#include "src/openwindow.h"
|
||||||
|
|
||||||
void handleInput(Window * window) {
|
void handleInput(Window * window) {
|
||||||
if (windowKeyPressed(window, WINDOW_KEY_A))
|
if (windowKeyPressed(window, WINDOW_KEY_A) && !windowKeyShift(window))
|
||||||
printf("A is being pressed\n");
|
printf("a is being pressed\n");
|
||||||
|
|
||||||
if (windowKeyHeld(window, WINDOW_KEY_A))
|
if (windowKeyHeld(window, WINDOW_KEY_A) && !windowKeyShift(window))
|
||||||
printf("A is being held\n");
|
printf("a is being held\n");
|
||||||
|
|
||||||
if (windowKeyReleased(window, WINDOW_KEY_A))
|
if (windowKeyReleased(window, WINDOW_KEY_A) && !windowKeyShift(window))
|
||||||
printf("A is being released\n");
|
printf("a is being released\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
|
|
|
@ -236,7 +236,7 @@ bool windowKeyPressed(Window * window, char * key) {
|
||||||
|
|
||||||
KeyCode keycode = XKeysymToKeycode(window->x.display, keysym);
|
KeyCode keycode = XKeysymToKeycode(window->x.display, keysym);
|
||||||
|
|
||||||
return !(window->io.last[keycode / 8] & (1 << (keycode % 8))) && (window->io.current[keycode / 8] & (1 << (keycode % 8)));
|
return !(window->io.last[keycode >> 3] & (1 << (keycode & 7))) && (window->io.current[keycode >> 3] & (1 << (keycode & 7)));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool windowKeyHeld(Window * window, char * key) {
|
bool windowKeyHeld(Window * window, char * key) {
|
||||||
|
@ -245,7 +245,7 @@ bool windowKeyHeld(Window * window, char * key) {
|
||||||
|
|
||||||
KeyCode keycode = XKeysymToKeycode(window->x.display, keysym);
|
KeyCode keycode = XKeysymToKeycode(window->x.display, keysym);
|
||||||
|
|
||||||
return (window->io.last[keycode / 8] & (1 << (keycode % 8))) && (window->io.current[keycode / 8] & (1 << (keycode % 8)));
|
return (window->io.last[keycode >> 3] & (1 << (keycode & 7))) && (window->io.current[keycode >> 3] & (1 << (keycode & 7)));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool windowKeyReleased(Window * window, char * key) {
|
bool windowKeyReleased(Window * window, char * key) {
|
||||||
|
@ -254,7 +254,28 @@ bool windowKeyReleased(Window * window, char * key) {
|
||||||
|
|
||||||
KeyCode keycode = XKeysymToKeycode(window->x.display, keysym);
|
KeyCode keycode = XKeysymToKeycode(window->x.display, keysym);
|
||||||
|
|
||||||
return (window->io.last[keycode / 8] & (1 << (keycode % 8))) && !(window->io.current[keycode / 8] & (1 << (keycode % 8)));
|
return (window->io.last[keycode >> 3] & (1 << (keycode & 7))) && !(window->io.current[keycode >> 3] & (1 << (keycode & 7)));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool windowKeyShift(Window * window) {
|
||||||
|
KeyCode sl = XKeysymToKeycode(window->x.display, XK_Shift_L);
|
||||||
|
KeyCode sr = XKeysymToKeycode(window->x.display, XK_Shift_R);
|
||||||
|
|
||||||
|
return (window->io.last[sl >> 3] & (1 << (sl & 7))) || (window->io.current[sr >> 3] & (1 << (sr & 7)));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool windowKeyCtrl(Window * window) {
|
||||||
|
KeyCode cl = XKeysymToKeycode(window->x.display, XK_Control_L);
|
||||||
|
KeyCode cr = XKeysymToKeycode(window->x.display, XK_Control_R);
|
||||||
|
|
||||||
|
return (window->io.last[cl >> 3] & (1 << (cl & 7))) || (window->io.current[cr >> 3] & (1 << (cr & 7)));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool windowKeyAlt(Window * window) {
|
||||||
|
KeyCode al = XKeysymToKeycode(window->x.display, XK_Alt_L);
|
||||||
|
KeyCode ar = XKeysymToKeycode(window->x.display, XK_Alt_R);
|
||||||
|
|
||||||
|
return (window->io.last[al >> 3] & (1 << (al & 7))) || (window->io.current[ar >> 3] & (1 << (ar & 7)));
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@ -454,6 +475,18 @@ bool windowKeyReleased(Window * window, int key) {
|
||||||
return (window->io.last[key] & 0x80) && !(window->io.current[key] & 0x80);
|
return (window->io.last[key] & 0x80) && !(window->io.current[key] & 0x80);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool windowKeyShift(Window * window) {
|
||||||
|
return window->io.current[VK_SHIFT] & 0x80;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool windowKeyCtrl(Window * window) {
|
||||||
|
return window->io.current[VK_CONTROL] & 0x80;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool windowKeyAlt(Window * window) {
|
||||||
|
return window->io.current[VK_MENU] & 0x80;
|
||||||
|
}
|
||||||
|
|
||||||
#endif // _WIN32
|
#endif // _WIN32
|
||||||
|
|
||||||
int getOpenGLProcs(void) {
|
int getOpenGLProcs(void) {
|
||||||
|
|
|
@ -94,6 +94,10 @@ bool windowKeyPressed(Window * window, char * key);
|
||||||
bool windowKeyReleased(Window * window, char * key);
|
bool windowKeyReleased(Window * window, char * key);
|
||||||
bool windowKeyHeld(Window * window, char * key);
|
bool windowKeyHeld(Window * window, char * key);
|
||||||
|
|
||||||
|
bool windowKeyShift(Window * window);
|
||||||
|
bool windowKeyCtrl(Window * window);
|
||||||
|
bool windowKeyAlt(Window * window);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
@ -163,6 +167,9 @@ bool windowKeyPressed(Window * window, int key);
|
||||||
bool windowKeyReleased(Window * window, int key);
|
bool windowKeyReleased(Window * window, int key);
|
||||||
bool windowKeyHeld(Window * window, int key);
|
bool windowKeyHeld(Window * window, int key);
|
||||||
|
|
||||||
|
bool windowKeyShift(Window * window);
|
||||||
|
bool windowKeyCtrl(Window * window);
|
||||||
|
bool windowKeyAlt(Window * window);
|
||||||
|
|
||||||
#endif // _WIN32
|
#endif // _WIN32
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue