Library for virtual onscreen keyboard for STM32F746 Disco board
Dependencies: BSP_DISCO_F746NG mbed
user/keyboard.h@0:3ea368f65bca, 2016-09-17 (annotated)
- Committer:
- Faberge
- Date:
- Sat Sep 17 11:36:24 2016 +0000
- Revision:
- 0:3ea368f65bca
First demo example of virtual onscreen keyboard for F746 Disco
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Faberge | 0:3ea368f65bca | 1 | /* |
Faberge | 0:3ea368f65bca | 2 | ******************************************************************************* |
Faberge | 0:3ea368f65bca | 3 | * Библиотека Keyboard виртуальной клавиатуры для дисплея с тач-экраном на демо- |
Faberge | 0:3ea368f65bca | 4 | * плате STM32F746NG Dicovery |
Faberge | 0:3ea368f65bca | 5 | * |
Faberge | 0:3ea368f65bca | 6 | * Файл "keyboard.h" |
Faberge | 0:3ea368f65bca | 7 | ******************************************************************************* |
Faberge | 0:3ea368f65bca | 8 | */ |
Faberge | 0:3ea368f65bca | 9 | |
Faberge | 0:3ea368f65bca | 10 | /* Определяем для предотвращения множественного включения */ |
Faberge | 0:3ea368f65bca | 11 | #ifndef KEYBOARD_HPP |
Faberge | 0:3ea368f65bca | 12 | #define KEYBOARD_HPP |
Faberge | 0:3ea368f65bca | 13 | |
Faberge | 0:3ea368f65bca | 14 | /* На случай использования в составе C++ проекта */ |
Faberge | 0:3ea368f65bca | 15 | #ifdef __cplusplus |
Faberge | 0:3ea368f65bca | 16 | extern "C" { |
Faberge | 0:3ea368f65bca | 17 | #endif |
Faberge | 0:3ea368f65bca | 18 | |
Faberge | 0:3ea368f65bca | 19 | /* Добавляем библиотеку <string.h> для импорта функции strlen() */ |
Faberge | 0:3ea368f65bca | 20 | #include <string.h> |
Faberge | 0:3ea368f65bca | 21 | |
Faberge | 0:3ea368f65bca | 22 | /* Добавляем библиотеки для работы с LCD и контроллером тач-экрана */ |
Faberge | 0:3ea368f65bca | 23 | #include "stm32746g_discovery_lcd.h" |
Faberge | 0:3ea368f65bca | 24 | #include "stm32746g_discovery_ts.h" |
Faberge | 0:3ea368f65bca | 25 | |
Faberge | 0:3ea368f65bca | 26 | /* Определения */ |
Faberge | 0:3ea368f65bca | 27 | /* Различные раскладки клавиатуры */ |
Faberge | 0:3ea368f65bca | 28 | #define MODE_NUMBER 3 |
Faberge | 0:3ea368f65bca | 29 | #define MODE_UPPER_CASE 0 |
Faberge | 0:3ea368f65bca | 30 | #define MODE_LOWER_CASE 1 |
Faberge | 0:3ea368f65bca | 31 | #define MODE_SYMBOLS 2 |
Faberge | 0:3ea368f65bca | 32 | |
Faberge | 0:3ea368f65bca | 33 | /* Общее количество клавиш */ |
Faberge | 0:3ea368f65bca | 34 | #define KEY_NUMBER 30 |
Faberge | 0:3ea368f65bca | 35 | #define KEY_BUFFER_LEN 30 |
Faberge | 0:3ea368f65bca | 36 | |
Faberge | 0:3ea368f65bca | 37 | /* Размеры клавиш в пикселях */ |
Faberge | 0:3ea368f65bca | 38 | #define KEY_SMALL_LENGTH 40 |
Faberge | 0:3ea368f65bca | 39 | #define KEY_SMALL_HEIGHT 40 |
Faberge | 0:3ea368f65bca | 40 | #define KEY_ENTER_LENGTH 88 |
Faberge | 0:3ea368f65bca | 41 | #define KEY_SHIFT_LENGTH 64 |
Faberge | 0:3ea368f65bca | 42 | #define KEY_BACKSPACE_LENGTH 64 |
Faberge | 0:3ea368f65bca | 43 | #define KEY_SPACE_LENGTH 136 |
Faberge | 0:3ea368f65bca | 44 | #define KEY_DISTANCE 8 |
Faberge | 0:3ea368f65bca | 45 | |
Faberge | 0:3ea368f65bca | 46 | /* ASCII-коды для специальных клавиш */ |
Faberge | 0:3ea368f65bca | 47 | #define KEY_ENTER_VALUE 0x0D |
Faberge | 0:3ea368f65bca | 48 | #define KEY_SHIFT_VALUE 0x10 |
Faberge | 0:3ea368f65bca | 49 | #define KEY_SPACE_VALUE 0x20 |
Faberge | 0:3ea368f65bca | 50 | #define KEY_BACKSPACE_VALUE 0x08 |
Faberge | 0:3ea368f65bca | 51 | #define KEY_DELETE_VALUE 0x7F |
Faberge | 0:3ea368f65bca | 52 | |
Faberge | 0:3ea368f65bca | 53 | /* Состояние клавишы */ |
Faberge | 0:3ea368f65bca | 54 | #define KEY_RELEASED 0 |
Faberge | 0:3ea368f65bca | 55 | #define KEY_PRESSED 1 |
Faberge | 0:3ea368f65bca | 56 | |
Faberge | 0:3ea368f65bca | 57 | /* Структура для отдельной клавишы */ |
Faberge | 0:3ea368f65bca | 58 | typedef struct |
Faberge | 0:3ea368f65bca | 59 | { |
Faberge | 0:3ea368f65bca | 60 | uint8_t id; |
Faberge | 0:3ea368f65bca | 61 | uint8_t status; |
Faberge | 0:3ea368f65bca | 62 | uint16_t posX; |
Faberge | 0:3ea368f65bca | 63 | uint16_t posY; |
Faberge | 0:3ea368f65bca | 64 | uint8_t dimX; |
Faberge | 0:3ea368f65bca | 65 | uint8_t dimY; |
Faberge | 0:3ea368f65bca | 66 | uint8_t value[MODE_NUMBER]; |
Faberge | 0:3ea368f65bca | 67 | } Key_TypeDef; |
Faberge | 0:3ea368f65bca | 68 | |
Faberge | 0:3ea368f65bca | 69 | /* Структура для всей клавиатуры */ |
Faberge | 0:3ea368f65bca | 70 | typedef struct |
Faberge | 0:3ea368f65bca | 71 | { |
Faberge | 0:3ea368f65bca | 72 | uint16_t posX; |
Faberge | 0:3ea368f65bca | 73 | uint16_t posY; |
Faberge | 0:3ea368f65bca | 74 | Key_TypeDef key[KEY_NUMBER]; |
Faberge | 0:3ea368f65bca | 75 | uint8_t mode; |
Faberge | 0:3ea368f65bca | 76 | char buffer[KEY_BUFFER_LEN]; |
Faberge | 0:3ea368f65bca | 77 | } Keyboard_TypeDef; |
Faberge | 0:3ea368f65bca | 78 | |
Faberge | 0:3ea368f65bca | 79 | /* Функции для работы с экранной клавиатурой */ |
Faberge | 0:3ea368f65bca | 80 | uint8_t Keyboard_init(uint16_t x_value, uint16_t y_value); |
Faberge | 0:3ea368f65bca | 81 | uint8_t Keyboard_display_all(void); |
Faberge | 0:3ea368f65bca | 82 | uint8_t Key_display_normal(uint8_t id); |
Faberge | 0:3ea368f65bca | 83 | uint8_t Key_display_inverted(uint8_t id); |
Faberge | 0:3ea368f65bca | 84 | uint8_t Key_display_specials(uint8_t id); |
Faberge | 0:3ea368f65bca | 85 | uint8_t Keyboard_check(void); |
Faberge | 0:3ea368f65bca | 86 | uint8_t Keyboard_handler(char buffer[]); |
Faberge | 0:3ea368f65bca | 87 | |
Faberge | 0:3ea368f65bca | 88 | #ifdef __cplusplus |
Faberge | 0:3ea368f65bca | 89 | } |
Faberge | 0:3ea368f65bca | 90 | #endif |
Faberge | 0:3ea368f65bca | 91 | |
Faberge | 0:3ea368f65bca | 92 | /* Конец файла "keyboard.h" */ |
Faberge | 0:3ea368f65bca | 93 | #endif |