Add special key remembering in the ewol external access

This commit is contained in:
Edouard Dupin 2012-01-19 18:15:57 +01:00
parent 8fdb228ce9
commit fed2eda030
3 changed files with 124 additions and 2 deletions

View File

@ -94,6 +94,15 @@ static int VisualData[] = {
#endif
extern bool guiKeyBoardMode_CapLock;
extern bool guiKeyBoardMode_Shift;
extern bool guiKeyBoardMode_Ctrl;
extern bool guiKeyBoardMode_Meta;
extern bool guiKeyBoardMode_Alt;
extern bool guiKeyBoardMode_AltGr;
extern bool guiKeyBoardMode_VerNum;
extern bool guiKeyBoardMode_Insert;
namespace guiAbstraction {
extern "C" {
typedef struct Hints
@ -641,7 +650,52 @@ namespace guiAbstraction {
case KeyRelease:
//EWOL_DEBUG("X11 event : " << event.type << " = \"KeyPress/KeyRelease\" ");
{
EWOL_DEBUG("eventKey : " << event.xkey.keycode);
EWOL_DEBUG("eventKey : " << event.xkey.keycode << " state : " << event.xkey.state);
if (event.xkey.state & (1<<0) ) {
//EWOL_DEBUG(" Special Key : SHIFT");
guiKeyBoardMode_Shift = true;
} else {
guiKeyBoardMode_Shift = false;
}
if (event.xkey.state & (1<<1) ) {
//EWOL_DEBUG(" Special Key : CAPS_LOCK");
guiKeyBoardMode_CapLock = true;
} else {
guiKeyBoardMode_CapLock = false;
}
if (event.xkey.state & (1<<2) ) {
//EWOL_DEBUG(" Special Key : Ctrl");
guiKeyBoardMode_Ctrl = true;
} else {
guiKeyBoardMode_Ctrl = false;
}
if (event.xkey.state & (1<<3) ) {
//EWOL_DEBUG(" Special Key : Alt");
guiKeyBoardMode_Alt = true;
} else {
guiKeyBoardMode_Alt = false;
}
if (event.xkey.state & (1<<4) ) {
//EWOL_DEBUG(" Special Key : VER_num");
guiKeyBoardMode_VerNum = true;
} else {
guiKeyBoardMode_VerNum = false;
}
if (event.xkey.state & (1<<5) ) {
EWOL_DEBUG(" Special Key : MOD");
}
if (event.xkey.state & (1<<6) ) {
//EWOL_DEBUG(" Special Key : META");
guiKeyBoardMode_Meta = true;
} else {
guiKeyBoardMode_Meta = false;
}
if (event.xkey.state & (1<<7) ) {
//EWOL_DEBUG(" Special Key : ALT_GR");
guiKeyBoardMode_AltGr = true;
} else {
guiKeyBoardMode_AltGr = false;
}
bool find = true;
ewol::eventKbMoveType_te keyInput;
switch (event.xkey.keycode) {
@ -664,7 +718,16 @@ namespace guiAbstraction {
case 78: keyInput = ewol::EVENT_KB_MOVE_TYPE_ARRET_DEFIL; break;
case 127: keyInput = ewol::EVENT_KB_MOVE_TYPE_WAIT; break;
//case 90: // keypad
case 118: keyInput = ewol::EVENT_KB_MOVE_TYPE_INSERT; break;
case 118:
keyInput = ewol::EVENT_KB_MOVE_TYPE_INSERT;
if(event.type == KeyRelease) {
if (true == guiKeyBoardMode_Insert) {
guiKeyBoardMode_Insert = false;
} else {
guiKeyBoardMode_Insert = true;
}
}
break;
//case 84: keyInput = ewol::EVENT_KB_MOVE_TYPE_CENTER; break; // Keypad
case 67: keyInput = ewol::EVENT_KB_MOVE_TYPE_F1; break;
case 68: keyInput = ewol::EVENT_KB_MOVE_TYPE_F2; break;

View File

@ -86,3 +86,53 @@ void ewol::ForceRedrawAll(void)
}
bool guiKeyBoardMode_CapLock = false;
bool ewol::IsSetCapsLock(void)
{
return guiKeyBoardMode_CapLock;
}
bool guiKeyBoardMode_Shift = false;
bool ewol::IsSetShift(void)
{
return guiKeyBoardMode_Shift;
}
bool guiKeyBoardMode_Ctrl = false;
bool ewol::IsSetCtrl(void)
{
return guiKeyBoardMode_Ctrl;
}
bool guiKeyBoardMode_Meta = false;
bool ewol::IsSetMeta(void)
{
return guiKeyBoardMode_Meta;
}
bool guiKeyBoardMode_Alt = false;
bool ewol::IsSetAlt(void)
{
return guiKeyBoardMode_Alt;
}
bool guiKeyBoardMode_AltGr = false;
bool ewol::IsSetAltGr(void)
{
return guiKeyBoardMode_AltGr;
}
bool guiKeyBoardMode_VerNum = false;
bool ewol::IsSetVerNum(void)
{
return guiKeyBoardMode_VerNum;
}
bool guiKeyBoardMode_Insert = false;
bool ewol::IsSetInsert(void)
{
return guiKeyBoardMode_Insert;
}

View File

@ -43,6 +43,15 @@ namespace ewol {
void KeyboardShow(ewol::keyboardMode_te mode);
void KeyboardHide(void);
void ForceRedrawAll(void);
bool IsSetCapsLock(void);
bool IsSetShift(void);
bool IsSetCtrl(void);
bool IsSetMeta(void);
bool IsSetAlt(void);
bool IsSetAltGr(void);
bool IsSetVerNum(void);
bool IsSetInsert(void);
};