summaryrefslogtreecommitdiff
path: root/code/fe310/eos/eve/eve_kbd.c
diff options
context:
space:
mode:
Diffstat (limited to 'code/fe310/eos/eve/eve_kbd.c')
-rw-r--r--code/fe310/eos/eve/eve_kbd.c61
1 files changed, 34 insertions, 27 deletions
diff --git a/code/fe310/eos/eve/eve_kbd.c b/code/fe310/eos/eve/eve_kbd.c
index aa8406f..59cfa23 100644
--- a/code/fe310/eos/eve/eve_kbd.c
+++ b/code/fe310/eos/eve/eve_kbd.c
@@ -1,36 +1,41 @@
#include <stdlib.h>
+#include <string.h>
#include "eve.h"
#include "eve_kbd.h"
-#define KBD_X 0
-#define KBD_Y 575
-#define KBD_W 480
-#define KBD_H 225
+#define KBD_X 0
+#define KBD_Y 575
+#define KBD_W 480
+#define KBD_H 225
-#define KEY_SPACERX 3
-#define KEY_SPACERY 5
-#define KEY_FONT 29
-#define MOD_FONT 21
+#define KEY_SPACERX 3
+#define KEY_SPACERY 5
+#define KEY_FONT 29
+#define MOD_FONT 21
-#define KEY_BS 0x08
-#define KEY_RET 0x0a
+#define KEY_BS 0x08
+#define KEY_RET 0x0a
-#define FLAG_SHIFT 0x01
-#define FLAG_CTRL 0x02
-#define FLAG_FN 0x04
+#define FLAG_SHIFT 0x01
+#define FLAG_CTRL 0x02
+#define FLAG_FN 0x04
-#define TAG_SHIFT 0x11
-#define TAG_CTRL 0x12
-#define TAG_FN 0x13
+#define TAG_SHIFT 0x11
+#define TAG_CTRL 0x12
+#define TAG_FN 0x13
-void eve_kbd_init(EVEKbd *kbd, uint32_t mem_addr, uint32_t *mem_next) {
+void eve_kbd_init(EVEKbd *kbd, EVERect *g, uint32_t mem_addr, uint32_t *mem_next) {
uint16_t mem_size;
- kbd->x = KBD_X;
- kbd->y = KBD_Y;
- kbd->w = KBD_W;
- kbd->h = KBD_H;
+ if (g) {
+ kbd->g = *g;
+ } else {
+ kbd->g.x = KBD_X;
+ kbd->g.y = KBD_Y;
+ kbd->g.w = KBD_W;
+ kbd->g.h = KBD_H;
+ }
kbd->mem_addr = mem_addr;
kbd->key_modifier = 0;
kbd->key_count = 0;
@@ -60,7 +65,7 @@ int eve_kbd_touch(EVEKbd *kbd, uint8_t tag0, int touch_idx) {
EVETouch *t;
uint16_t evt;
- t = eve_touch_evt(tag0, touch_idx, 1, 0x7e, &evt);
+ t = eve_touch_evt(tag0, touch_idx, 1, 126, &evt);
if (t && evt) {
if (evt & EVE_TOUCH_ETYPE_TAG) {
uint8_t _tag = t->tag;
@@ -116,15 +121,16 @@ int eve_kbd_touch(EVEKbd *kbd, uint8_t tag0, int touch_idx) {
} else {
kbd->active = 0;
}
+
return kbd->active;
}
uint8_t eve_kbd_draw(EVEKbd *kbd) {
if (kbd->active) {
- int x = kbd->x;
- int y = kbd->y;
- int w = kbd->w;
- int row_h = kbd->h / 5;
+ int x = kbd->g.x;
+ int y = kbd->g.y;
+ int w = kbd->g.w;
+ int row_h = kbd->g.h / 5;
int key_w = (w - 9 * KEY_SPACERX) / 10 + 1;
int mod_w = key_w + key_w / 2;
int key_h = row_h - KEY_SPACERY;
@@ -151,5 +157,6 @@ uint8_t eve_kbd_draw(EVEKbd *kbd) {
} else {
eve_cmd(CMD_APPEND, "ww", kbd->mem_addr, kbd->mem_size);
}
- return 0x7e;
+
+ return 0x80;
}