161 lines
No EOL
4.1 KiB
C
161 lines
No EOL
4.1 KiB
C
#include "arc/console/key.h"
|
|
#include "key.h"
|
|
#include "arc/std/bool.h"
|
|
#include <ncurses.h>
|
|
#include <stdlib.h>
|
|
|
|
void ARC_ConsoleKey_Create(ARC_ConsoleKey **consoleKey, ARC_ConsoleKey_Key *key){
|
|
*consoleKey = (ARC_ConsoleKey *)malloc(sizeof(ARC_ConsoleKey));
|
|
(*consoleKey)->key = 0;
|
|
|
|
if(key != NULL){
|
|
(*consoleKey)->key = *key;
|
|
}
|
|
}
|
|
|
|
void ARC_ConsoleKey_Destroy(ARC_ConsoleKey *consoleKey){
|
|
free(consoleKey);
|
|
}
|
|
|
|
ARC_Bool ARC_ConsoleKey_Equals(ARC_ConsoleKey consoleKey, ARC_ConsoleKey_Key key){
|
|
return consoleKey.key == ARC_Keyboard_GetConsoleKey(key).key;
|
|
}
|
|
|
|
ARC_Bool ARC_ConsoleKey_EqualsPointer(ARC_ConsoleKey *consoleKey, ARC_ConsoleKey_Key key){
|
|
return consoleKey->key == ARC_Keyboard_GetConsoleKey(key).key;
|
|
}
|
|
|
|
ARC_ConsoleKey ARC_Keyboard_GetConsoleKey(enum ARC_ConsoleKey_Key key){
|
|
switch(key){
|
|
case ARC_KEY_A:
|
|
return (ARC_ConsoleKey){ (int32_t)'a' };
|
|
|
|
case ARC_KEY_B:
|
|
return (ARC_ConsoleKey){ (int32_t)'b' };
|
|
|
|
case ARC_KEY_C:
|
|
return (ARC_ConsoleKey){ (int32_t)'c' };
|
|
|
|
case ARC_KEY_D:
|
|
return (ARC_ConsoleKey){ (int32_t)'d' };
|
|
|
|
case ARC_KEY_E:
|
|
return (ARC_ConsoleKey){ (int32_t)'e' };
|
|
|
|
case ARC_KEY_F:
|
|
return (ARC_ConsoleKey){ (int32_t)'f' };
|
|
|
|
case ARC_KEY_G:
|
|
return (ARC_ConsoleKey){ (int32_t)'g' };
|
|
|
|
case ARC_KEY_H:
|
|
return (ARC_ConsoleKey){ (int32_t)'h' };
|
|
|
|
case ARC_KEY_I:
|
|
return (ARC_ConsoleKey){ (int32_t)'i' };
|
|
|
|
case ARC_KEY_J:
|
|
return (ARC_ConsoleKey){ (int32_t)'j' };
|
|
|
|
case ARC_KEY_K:
|
|
return (ARC_ConsoleKey){ (int32_t)'k' };
|
|
|
|
case ARC_KEY_L:
|
|
return (ARC_ConsoleKey){ (int32_t)'l' };
|
|
|
|
case ARC_KEY_M:
|
|
return (ARC_ConsoleKey){ (int32_t)'m' };
|
|
|
|
case ARC_KEY_N:
|
|
return (ARC_ConsoleKey){ (int32_t)'n' };
|
|
|
|
case ARC_KEY_O:
|
|
return (ARC_ConsoleKey){ (int32_t)'o' };
|
|
|
|
case ARC_KEY_P:
|
|
return (ARC_ConsoleKey){ (int32_t)'p' };
|
|
|
|
case ARC_KEY_Q:
|
|
return (ARC_ConsoleKey){ (int32_t)'q' };
|
|
|
|
case ARC_KEY_R:
|
|
return (ARC_ConsoleKey){ (int32_t)'r' };
|
|
|
|
case ARC_KEY_S:
|
|
return (ARC_ConsoleKey){ (int32_t)'s' };
|
|
|
|
case ARC_KEY_T:
|
|
return (ARC_ConsoleKey){ (int32_t)'t' };
|
|
|
|
case ARC_KEY_U:
|
|
return (ARC_ConsoleKey){ (int32_t)'u' };
|
|
|
|
case ARC_KEY_V:
|
|
return (ARC_ConsoleKey){ (int32_t)'v' };
|
|
|
|
case ARC_KEY_W:
|
|
return (ARC_ConsoleKey){ (int32_t)'w' };
|
|
|
|
case ARC_KEY_X:
|
|
return (ARC_ConsoleKey){ (int32_t)'x' };
|
|
|
|
case ARC_KEY_Y:
|
|
return (ARC_ConsoleKey){ (int32_t)'y' };
|
|
|
|
case ARC_KEY_Z:
|
|
return (ARC_ConsoleKey){ (int32_t)'z' };
|
|
|
|
case ARC_KEY_0:
|
|
return (ARC_ConsoleKey){ (int32_t)'0' };
|
|
|
|
case ARC_KEY_1:
|
|
return (ARC_ConsoleKey){ (int32_t)'1' };
|
|
|
|
case ARC_KEY_2:
|
|
return (ARC_ConsoleKey){ (int32_t)'2' };
|
|
|
|
case ARC_KEY_3:
|
|
return (ARC_ConsoleKey){ (int32_t)'3' };
|
|
|
|
case ARC_KEY_4:
|
|
return (ARC_ConsoleKey){ (int32_t)'4' };
|
|
|
|
case ARC_KEY_5:
|
|
return (ARC_ConsoleKey){ (int32_t)'5' };
|
|
|
|
case ARC_KEY_6:
|
|
return (ARC_ConsoleKey){ (int32_t)'6' };
|
|
|
|
case ARC_KEY_7:
|
|
return (ARC_ConsoleKey){ (int32_t)'7' };
|
|
|
|
case ARC_KEY_8:
|
|
return (ARC_ConsoleKey){ (int32_t)'8' };
|
|
|
|
case ARC_KEY_9:
|
|
return (ARC_ConsoleKey){ (int32_t)'9' };
|
|
|
|
case ARC_KEY_UP:
|
|
return (ARC_ConsoleKey){ KEY_UP };
|
|
|
|
case ARC_KEY_DOWN:
|
|
return (ARC_ConsoleKey){ KEY_DOWN };
|
|
|
|
case ARC_KEY_LEFT:
|
|
return (ARC_ConsoleKey){ KEY_LEFT };
|
|
|
|
case ARC_KEY_RIGHT:
|
|
return (ARC_ConsoleKey){ KEY_RIGHT };
|
|
|
|
//TODO: This is escape and alt, need to fix
|
|
case ARC_KEY_ESC:
|
|
return (ARC_ConsoleKey){ 27 };
|
|
|
|
default:
|
|
return (ARC_ConsoleKey){ 0 };
|
|
}
|
|
}
|
|
|
|
uint8_t ARC_ConsoleKey_GetCharFromKey(ARC_ConsoleKey *consoleKey){
|
|
return consoleKey->key;
|
|
} |