Untitled
unknown
d
3 years ago
1.5 kB
8
Indexable
module keyboard;
import raylib;
import std.stdio: writeln;
import std.uni: toLower;
import std.string: strip;
import std.conv: to;
import std.array: replace;
alias Key = KeyboardKey;
public class Keyboard {
private int[string] keys;
private bool[string] pressed;
private bool[string] down;
this() {
// string interface becomes left_control, left_shift, etc
Key[] newKeys = [
Key.KEY_LEFT_CONTROL,
Key.KEY_LEFT_SHIFT,
Key.KEY_TAB,
Key.KEY_F5,
Key.KEY_GRAVE // Squiggly boi "~"
];
insertKeys(newKeys);
}
private
void insertKeys(KeyboardKey[] newKeys) {
foreach (thisKey; newKeys) {
string stringKey = to!string(thisKey).toLower.replace("key_", "");
keys[stringKey] = thisKey;
pressed[stringKey] = false;
down[stringKey] = false;
}
}
void update() {
// duplicate keys, can parse one for both iterators (press/down)
foreach (key, value; keys){
down[key] = IsKeyDown(value);
pressed[key] = IsKeyPressed(value);
}
}
bool isDown(string keyName) {
return down[keyName];
}
bool isPressed(string keyName) {
return pressed[keyName];
}
}
// get a key like:
Keyboard myKeyboard = new Keyboard();
bool gravy = myKeyboard.isDown("grave");
bool tooMuchGravy = myKeyboard.isPressed("grave");Editor is loading...