kbd.h

Go to the documentation of this file.
00001 
00047 #ifndef DRV_KBD_H
00048 #define DRV_KBD_H
00049 
00050 #include "hw/kbd_map.h"
00051 
00052 #include "cfg/cfg_kbd.h" // CONFIG_KBD_OBSERVER
00053 #include <cfg/compiler.h>
00054 
00055 #include <struct/list.h>
00056 
00064 #define KBD_POLL_SOFTINT  1
00065 /* \} */
00066 
00070 typedef struct KbdHandler
00071 {
00072     Node link;
00073     keymask_t (*hook)(keymask_t);   
00074     int8_t pri;                     
00075     uint8_t flags;                  
00076 } KbdHandler;
00077 
00078 #define KHF_RAWKEYS BV(0)           
00081 void kbd_init(void);
00082 keymask_t kbd_peek(void);
00083 keymask_t kbd_get(void);
00084 keymask_t kbd_get_timeout(mtime_t timeout);
00085 void kbd_addHandler(struct KbdHandler *handler);
00086 void kbd_remHandler(struct KbdHandler *handler);
00087 keymask_t kbd_setRepeatMask(keymask_t mask);
00088 
00089 #if CONFIG_KBD_OBSERVER
00090     struct Subject;
00091 
00093     extern struct Subject kbd_subject;
00094 
00095     enum
00096     {
00097         /* Event for key presses. */
00098         KBD_EVENT_KEY = 0x100
00099     };
00100 #endif
00101 
00102 #endif /* DRV_KBD_H */