kbd.h

Go to the documentation of this file.
00001 
00042 #ifndef DRV_KBD_H
00043 #define DRV_KBD_H
00044 
00045 #include "hw/kbd_map.h"
00046 
00047 #include "cfg/cfg_kbd.h" // CONFIG_KBD_OBSERVER
00048 #include <cfg/compiler.h>
00049 
00050 #include <struct/list.h>
00051 
00059 #define KBD_POLL_SOFTINT  1
00060 /* \} */
00061 
00065 typedef struct KbdHandler
00066 {
00067     Node link;
00068     keymask_t (*hook)(keymask_t);   
00069     int8_t pri;                     
00070     uint8_t flags;                  
00071 } KbdHandler;
00072 
00073 #define KHF_RAWKEYS BV(0)           
00076 void kbd_init(void);
00077 keymask_t kbd_peek(void);
00078 keymask_t kbd_get(void);
00079 keymask_t kbd_get_timeout(mtime_t timeout);
00080 void kbd_addHandler(struct KbdHandler *handler);
00081 void kbd_remHandler(struct KbdHandler *handler);
00082 keymask_t kbd_setRepeatMask(keymask_t mask);
00083 
00084 #if CONFIG_KBD_OBSERVER
00085     struct Subject;
00086 
00088     extern struct Subject kbd_subject;
00089 
00090     enum
00091     {
00092         /* Event for key presses. */
00093         KBD_EVENT_KEY = 0x100
00094     };
00095 #endif
00096 
00097 #endif /* DRV_KBD_H */