72 lines
6.1 KiB
MQL5
72 lines
6.1 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| Keys.mqh |
|
|
//| Copyright 2016, MetaQuotes Software Corp. |
|
|
//| http://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
#include "KeyCodes.mqh"
|
|
//+------------------------------------------------------------------+
|
|
//| Класс для работы с клавиатурой |
|
|
//+------------------------------------------------------------------+
|
|
class CKeys
|
|
{
|
|
public:
|
|
CKeys(void);
|
|
~CKeys(void);
|
|
//--- Возвращает символ нажатой клавиши
|
|
static string KeySymbol(const long key_code);
|
|
//--- Возвращает состояние клавиши Ctrl
|
|
static __forceinline bool KeyCtrlState(void);
|
|
//--- Возвращает состояние клавиши Shift
|
|
static __forceinline bool KeyShiftState(void);
|
|
//--- Возвращает состояние клавиши Shift
|
|
// static __forceinline bool KeyAltState(void);
|
|
};
|
|
//+------------------------------------------------------------------+
|
|
//| Constructor |
|
|
//+------------------------------------------------------------------+
|
|
CKeys::CKeys(void)
|
|
{
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Destructor |
|
|
//+------------------------------------------------------------------+
|
|
CKeys::~CKeys(void)
|
|
{
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Возвращает символ нажатой клавиши |
|
|
//+------------------------------------------------------------------+
|
|
string CKeys::KeySymbol(const long key_code)
|
|
{
|
|
string key_symbol = "";
|
|
//--- Если нужно ввести пробел (клавиша "Space")
|
|
if(key_code == KEY_SPACE)
|
|
{
|
|
key_symbol = " ";
|
|
}
|
|
//--- Если нужно ввести (1) алфавитный символ или (2) символ цифровой клавиши или (3) специальный символ
|
|
else
|
|
if((key_code >= KEY_A && key_code <= KEY_Z) ||
|
|
(key_code >= KEY_0 && key_code <= KEY_9) ||
|
|
(key_code >= KEY_NUMLOCK_0 && key_code <= KEY_NUMLOCK_SLASH) ||
|
|
(key_code >= KEY_SEMICOLON && key_code <= KEY_SINGLE_QUOTE))
|
|
{
|
|
key_symbol =::ShortToString(::TranslateKey((int)key_code));
|
|
}
|
|
//--- Вернуть символ
|
|
return(key_symbol);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Возвращает состояние клавиши Ctrl |
|
|
//+------------------------------------------------------------------+
|
|
__forceinline bool CKeys::KeyCtrlState(void)
|
|
{
|
|
return(::TerminalInfoInteger(TERMINAL_KEYSTATE_CONTROL) < 0);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Возвращает состояние клавиши Shift |
|
|
//+------------------------------------------------------------------+
|
|
__forceinline bool CKeys::KeyShiftState(void)
|
|
{
|
|
return(::TerminalInfoInteger(TERMINAL_KEYSTATE_SHIFT) < 0);
|
|
}
|