Library for virtual onscreen keyboard for STM32F746 Disco board

Dependencies:   BSP_DISCO_F746NG mbed

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?

UserRevisionLine numberNew 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