This is a part of the Kinetiszer project.
Diff: keyboard.h
- Revision:
- 0:5a419ba2726d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/keyboard.h Tue Oct 28 12:19:22 2014 +0000 @@ -0,0 +1,80 @@ +#ifndef __KEYBOARD_H__ +#define __KEYBOARD_H__ + + +#include "board.h" + + +typedef enum +{ + key_released = 0, + key_pressed +} +keyboard_key_press_t; + + +typedef struct +{ + int8_t debounce; + keyboard_key_press_t value; + bool changed; +} +keyboard_key_data_t; + + +typedef struct +{ + uint8_t port; + uint8_t pin; + uint8_t function; + keyboard_key_data_t data; +} +keyboard_key_t; + + +typedef struct +{ + uint8_t col_port; + uint8_t col_pin; + uint8_t row_port; + uint8_t row_pin; + keyboard_key_data_t data; +} +keyboard_matrix_key_t; + + +typedef struct +{ + int8_t value; + int8_t state; + uint8_t accelerator; + uint32_t timestamp; + int8_t state_sub; +} +keyboard_rotary_encoder_data_t; + + +#define KEY_DEBOUNCE_MIN (0) +#define KEY_DEBOUNCE_MAX (3) +#define KEY_PERIOD_MIN (10) +#define KEY_PERIOD_MAX (500) + + +void keyboard_init(void); +int8_t keyboard_key_is_debounced(int8_t debounce); +uint8_t keyboard_matrix_key_read(keyboard_matrix_key_t *p_key); +uint8_t keyboard_key_read(keyboard_key_t *p_key); +uint8_t keyboard_key_debounce(int8_t *p_debounce, uint8_t state); +uint32_t keyboard_scan_matrix(void); +uint32_t keyboard_scan_encoders(void); +void keyboard_encoder_speed(keyboard_rotary_encoder_data_t *p_encoder_data); +int8_t keyboard_encoder_tick(keyboard_key_t *p_key_a, keyboard_key_t *p_key_b, keyboard_rotary_encoder_data_t *p_encoder_data); +bool keyboard_get_pushbutton_changed(uint8_t key_nr); +keyboard_key_press_t keyboard_get_pushbutton(uint8_t key_nr, bool use); +void keyboard_set_pushbutton(uint8_t key_nr, keyboard_key_press_t value); +int8_t keyboard_get_rotary_encoder_value(uint8_t encoder_nr); +void keyboard_set_rotary_encoder_value(uint8_t encoder_nr, int8_t value); +uint8_t keyboard_get_rotary_encoder_accelerator(uint8_t encoder_nr); + + +#endif // __KEYBOARD_H__