Library for virtual onscreen keyboard for STM32F746 Disco board

Dependencies:   BSP_DISCO_F746NG mbed

user/keyboard.h

Committer:
Faberge
Date:
2016-09-17
Revision:
0:3ea368f65bca

File content as of revision 0:3ea368f65bca:

/*
 *******************************************************************************
 * Библиотека Keyboard виртуальной клавиатуры для дисплея с тач-экраном на демо-
 * плате STM32F746NG Dicovery
 * 
 * Файл "keyboard.h"
 *******************************************************************************
 */

/* Определяем для предотвращения множественного включения */
#ifndef KEYBOARD_HPP
#define KEYBOARD_HPP

/* На случай использования в составе C++ проекта */
#ifdef __cplusplus
extern "C" {
#endif

/* Добавляем библиотеку <string.h> для импорта функции strlen() */
#include <string.h>

/* Добавляем библиотеки для работы с LCD и контроллером тач-экрана */
#include "stm32746g_discovery_lcd.h"
#include "stm32746g_discovery_ts.h"

/* Определения */
/* Различные раскладки клавиатуры */
#define MODE_NUMBER                     3
#define MODE_UPPER_CASE                 0
#define MODE_LOWER_CASE                 1
#define MODE_SYMBOLS                    2

/* Общее количество клавиш */
#define KEY_NUMBER                      30
#define KEY_BUFFER_LEN                  30

/* Размеры клавиш в пикселях */
#define KEY_SMALL_LENGTH                40
#define KEY_SMALL_HEIGHT                40
#define KEY_ENTER_LENGTH                88
#define KEY_SHIFT_LENGTH                64
#define KEY_BACKSPACE_LENGTH            64
#define KEY_SPACE_LENGTH                136
#define KEY_DISTANCE                    8

/* ASCII-коды для специальных клавиш */
#define KEY_ENTER_VALUE                 0x0D
#define KEY_SHIFT_VALUE                 0x10
#define KEY_SPACE_VALUE                 0x20
#define KEY_BACKSPACE_VALUE             0x08
#define KEY_DELETE_VALUE                0x7F

/* Состояние клавишы */
#define KEY_RELEASED                    0
#define KEY_PRESSED                     1

/* Структура для отдельной клавишы */
typedef struct
{
    uint8_t         id;
    uint8_t         status;
    uint16_t        posX;
    uint16_t        posY;
    uint8_t         dimX;
    uint8_t         dimY;
    uint8_t         value[MODE_NUMBER];
}   Key_TypeDef;

/* Структура для всей клавиатуры */
typedef struct
{
    uint16_t        posX;
    uint16_t        posY;
    Key_TypeDef key[KEY_NUMBER];
    uint8_t         mode;    
    char            buffer[KEY_BUFFER_LEN];
}   Keyboard_TypeDef;

/* Функции для работы с экранной клавиатурой */
uint8_t Keyboard_init(uint16_t x_value, uint16_t y_value);
uint8_t Keyboard_display_all(void);
uint8_t Key_display_normal(uint8_t id);
uint8_t Key_display_inverted(uint8_t id);
uint8_t Key_display_specials(uint8_t id);
uint8_t Keyboard_check(void);
uint8_t Keyboard_handler(char buffer[]);

#ifdef __cplusplus
}
#endif

/* Конец файла "keyboard.h" */
#endif