[ION] Get rid of scankey, use ion_key_states[] instead

This commit is contained in:
Romain Goyet
2015-09-02 15:23:32 +02:00
parent ece318c454
commit 397fc452f7
5 changed files with 13 additions and 23 deletions

View File

@@ -1,3 +1,3 @@
SFLAGS += -Iion/include -DKD_CONFIG_H=1
include ion/platform/$(PLATFORM)/Makefile
#objs += $(addprefix ion/src/, ion.o)
objs += $(addprefix ion/src/, keyboard.o)

View File

@@ -5,12 +5,11 @@
void FltkKbdButtonCallback(Fl_Widget * w, void * context) {
FltkKbd * kbd = (FltkKbd *)context;
FltkKbdButton * button = (FltkKbdButton *)w;
kbd->register_key_state(button->m_key, button->value());
kbd->m_keyStates[button->m_key] = button->value();
printf("Register state %d at %d\n", button->m_key, button->value());
}
FltkKbd::FltkKbd(int x, int y, int w, int h) : Fl_Group(x, y, w, h) {
m_keyState = new bool[ION_NUMBER_OF_KEYS];
for (int i=0; i<ION_NUMBER_OF_KEYS; i++) {
m_keyState[i] = false;
}
@@ -22,13 +21,3 @@ FltkKbd::FltkKbd(int x, int y, int w, int h) : Fl_Group(x, y, w, h) {
}
end();
}
// FIXME: Destructor: delete[] m_keyState
bool FltkKbd::scankey(ion_key_t key) {
return m_keyState[key];
}
void FltkKbd::register_key_state(ion_key_t key, bool active) {
m_keyState[key] = active;
}

View File

@@ -7,13 +7,9 @@ extern "C" {
}
class FltkKbd : public Fl_Group {
friend void FltkKbdButtonCallback(Fl_Widget * w, void * context);
public:
FltkKbd(int x, int y, int w, int h);
bool scankey(ion_key_t key);
private:
bool * m_keyState;
void register_key_state(ion_key_t key, bool active);
bool m_keyStates[ION_NUMBER_OF_KEYS];
};
#endif

View File

@@ -3,15 +3,19 @@
#include <stdbool.h>
typedef enum {
ION_KEY_1,
ION_KEY_2,
ION_KEY_PLUS,
ION_KEY_MINUS,
ION_NUMBER_OF_KEYS // Should be defined last
} ion_key_t;
bool ion_scankey(ion_key_t key);
#define ION_NUMBER_OF_KEYS 4
extern bool * ion_key_states;
// ion_key_states[ion_key] gives the state of ion_key
char ion_getchar();

View File

@@ -13,16 +13,17 @@ extern "C" {
void ion_init() {
Fl::visual(FL_RGB);
int margin = 10;
Fl_Window * window = new Fl_Window(ION_FRAMEBUFFER_WIDTH+2*margin, ION_FRAMEBUFFER_HEIGHT+2*margin+40+2*margin);
Fl_Window * window = new Fl_Window(ION_FRAMEBUFFER_WIDTH+2*margin, ION_FRAMEBUFFER_HEIGHT+2*margin+120+2*margin);
FltkLCD * lcd = new FltkLCD(margin, margin, ION_FRAMEBUFFER_WIDTH, ION_FRAMEBUFFER_HEIGHT);
assert(ION_FRAMEBUFFER_BITS_PER_PIXEL == 8);
Platform.display = lcd;
PlatformFramebuffer = lcd->m_framebuffer;
FltkKbd * kbd = new FltkKbd(0,0,100,100);
FltkKbd * kbd = new FltkKbd(margin,ION_FRAMEBUFFER_HEIGHT+3*margin,ION_FRAMEBUFFER_WIDTH,120);
Platform.keyboard = kbd;
ion_key_states = kbd->m_keyStates;
window->end();
window->show(NULL, NULL);