aboutsummaryrefslogtreecommitdiff
path: root/src/keyboard/inc
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi.dcr@tutanota.com>2022-09-27 17:03:06 +0200
committerXavier Del Campo Romero <xavi.dcr@tutanota.com>2022-11-01 16:26:16 +0100
commit980858186149651df5543b6fc99a4f7db0cdd089 (patch)
treed347200b0a562d84df505097651ad0642f207fdd /src/keyboard/inc
parent39f50e601d395bbd2d78d0147ac530b756da2fff (diff)
downloadjancity-980858186149651df5543b6fc99a4f7db0cdd089.tar.gz
WIP
Diffstat (limited to 'src/keyboard/inc')
-rw-r--r--src/keyboard/inc/keyboard.h27
-rw-r--r--src/keyboard/inc/keyboard/combo.h15
-rw-r--r--src/keyboard/inc/keyboard/key.h (renamed from src/keyboard/inc/keyboard_key.h)1
3 files changed, 34 insertions, 9 deletions
diff --git a/src/keyboard/inc/keyboard.h b/src/keyboard/inc/keyboard.h
index 0fb0179..8bae4d3 100644
--- a/src/keyboard/inc/keyboard.h
+++ b/src/keyboard/inc/keyboard.h
@@ -1,7 +1,9 @@
#ifndef KEYBOARD_H
#define KEYBOARD_H
-#include <keyboard_key.h>
+#include <keyboard/key.h>
+#include <keyboard/combo.h>
+#include <keyboard/port.h>
#include <stdbool.h>
#include <stddef.h>
@@ -12,26 +14,33 @@ extern "C"
#define KEYBOARD_COMBO(...) (const struct keyboard_combo){.keys = {__VA_ARGS__}}
-enum {KEYBOARD_MAX_COMBO_KEYS = 3};
-
struct keyboard
{
- struct keyboard_combo
+ struct keyboard_input
{
- enum keyboard_key keys[KEYBOARD_MAX_COMBO_KEYS];
- } combo, oldcombo;
+ struct keyboard_combo
+ {
+ enum keyboard_key keys[KEYBOARD_MAX_COMBO_KEYS];
+ } combo;
+
+ struct keyboard_chars
+ {
+ char c[KEYBOARD_MAX_COMBO_KEYS];
+ } chars;
+ } input, oldinput;
size_t i;
+ struct keyboard_port port;
};
void keyboard_init(struct keyboard *k);
void keyboard_update(struct keyboard *k);
+bool keyboard_available(void);
bool keyboard_justpressed(const struct keyboard *k, const struct keyboard_combo *c);
bool keyboard_pressed(const struct keyboard *k, const struct keyboard_combo *c);
bool keyboard_justreleased(const struct keyboard *k, const struct keyboard_combo *c);
-bool keyboard_any_justpressed(const struct keyboard *k, struct keyboard_combo *c);
-bool keyboard_any_pressed(const struct keyboard *k, struct keyboard_combo *c);
-char keyboard_to_char(const struct keyboard *k, enum keyboard_key key);
+bool keyboard_any_justpressed(const struct keyboard *k, struct keyboard_input *in);
+bool keyboard_any_pressed(const struct keyboard *k, struct keyboard_input *in);
const char *keyboard_key_str(enum keyboard_key k);
#ifdef __cplusplus
diff --git a/src/keyboard/inc/keyboard/combo.h b/src/keyboard/inc/keyboard/combo.h
new file mode 100644
index 0000000..e0ef759
--- /dev/null
+++ b/src/keyboard/inc/keyboard/combo.h
@@ -0,0 +1,15 @@
+#ifndef KEYBOARD_COMBO_H
+#define KEYBOARD_COMBO_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+enum {KEYBOARD_MAX_COMBO_KEYS = 3};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* KEYBOARD_COMBO_H */
diff --git a/src/keyboard/inc/keyboard_key.h b/src/keyboard/inc/keyboard/key.h
index 49c31d2..0a25a97 100644
--- a/src/keyboard/inc/keyboard_key.h
+++ b/src/keyboard/inc/keyboard/key.h
@@ -59,6 +59,7 @@ extern "C"
X(KEYBOARD_KEY_SPACE) \
X(KEYBOARD_KEY_MINUS) \
X(KEYBOARD_KEY_DOT) \
+ X(KEYBOARD_KEY_RETURN) \
X(KEYBOARD_KEY_SLASH)
enum keyboard_key