kbd.h
Go to the documentation of this file.
00001
00052 #ifndef DRV_KBD_H
00053 #define DRV_KBD_H
00054 
00055 #include "hw/kbd_map.h"
00056
00057 #include "cfg/cfg_kbd.h" // CONFIG_KBD_OBSERVER
00058 #include <cfg/compiler.h>
00059
00060 #include <struct/list.h>
00061
00069 #define KBD_POLL_SOFTINT  1
00070 /* \} */
00071
00075 typedef struct KbdHandler
00076 {
00077     Node link;
00078     keymask_t (*hook)(keymask_t);
00079     int8_t pri;
00080     uint8_t flags;
00081 } KbdHandler;
00082
00083 #define KHF_RAWKEYS BV(0)           
00086 void kbd_init(void);
00087 keymask_t kbd_peek(void);
00088 keymask_t kbd_peekMask(keymask_t mask);
00089 keymask_t kbd_get(void);
00090 keymask_t kbd_getMask(keymask_t mask);
00091 keymask_t kbd_get_timeout(mtime_t timeout);
00092 void kbd_addHandler(struct KbdHandler *handler);
00093 void kbd_remHandler(struct KbdHandler *handler);
00094 keymask_t kbd_setRepeatMask(keymask_t mask);
00095
00096 #if CONFIG_KBD_OBSERVER
00097     struct Subject;
00098
00100     extern struct Subject kbd_subject;
00101
00102     enum
00103     {
00104         /* Event for key presses. */
00105         KBD_EVENT_KEY = 0x100
00106     };
00107 #endif
00108  //defgroup kbd
00110 #endif /* DRV_KBD_H */