aboutsummaryrefslogtreecommitdiff
path: root/lib/gui/einput.cpp
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-06-07 15:31:51 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-06-07 15:31:51 +0000
commitfce04ebed510a97e17f019a35c327dce78b6d916 (patch)
treeca21275f30cedcd9e2b7627dea7a0e5d9f27d812 /lib/gui/einput.cpp
parent45442377fc854e7224605085375e75f958aa5722 (diff)
downloadenigma2-fce04ebed510a97e17f019a35c327dce78b6d916.tar.gz
enigma2-fce04ebed510a97e17f019a35c327dce78b6d916.zip
more work on keyboard support
Diffstat (limited to 'lib/gui/einput.cpp')
-rw-r--r--lib/gui/einput.cpp81
1 files changed, 50 insertions, 31 deletions
diff --git a/lib/gui/einput.cpp b/lib/gui/einput.cpp
index 7d411f9e..62a77c5d 100644
--- a/lib/gui/einput.cpp
+++ b/lib/gui/einput.cpp
@@ -94,34 +94,54 @@ int eInput::event(int event, void *data, void *data2)
case evtAction:
if (isVisible())
{
- switch((int)data2)
+ if ((int)data == ASCII_ACTIONS)
{
- case moveLeft:
- m_content->moveCursor(eInputContent::dirLeft);
- break;
- case moveRight:
- m_content->moveCursor(eInputContent::dirRight);
- break;
- case moveHome:
- m_content->moveCursor(eInputContent::dirHome);
- break;
- case moveEnd:
- m_content->moveCursor(eInputContent::dirEnd);
- break;
- case deleteForward:
- m_content->deleteChar(eInputContent::deleteForward);
- break;
- case deleteBackward:
- m_content->deleteChar(eInputContent::deleteBackward);
- break;
- case toggleOverwrite:
- setOverwriteMode(!m_mode);
- break;
- case accept:
- changed();
- mayKillFocus();
+ if ((int)data2 == gotAsciiCode)
+ {
+ if (m_content)
+ {
+ extern int getPrevAsciiCode(); // defined in enigma.cpp
+ return m_content->haveKey(getPrevAsciiCode(), m_mode);
+ }
+ }
+ }
+ else if ((int)data == INPUT_ACTIONS)
+ {
+ switch((int)data2)
+ {
+ case moveLeft:
+ if (m_content)
+ m_content->moveCursor(eInputContent::dirLeft);
+ break;
+ case moveRight:
+ if (m_content)
+ m_content->moveCursor(eInputContent::dirRight);
+ break;
+ case moveHome:
+ if (m_content)
+ m_content->moveCursor(eInputContent::dirHome);
+ break;
+ case moveEnd:
+ if (m_content)
+ m_content->moveCursor(eInputContent::dirEnd);
+ break;
+ case deleteForward:
+ if (m_content)
+ m_content->deleteChar(eInputContent::deleteForward);
+ break;
+ case deleteBackward:
+ if (m_content)
+ m_content->deleteChar(eInputContent::deleteBackward);
+ break;
+ case toggleOverwrite:
+ setOverwriteMode(!m_mode);
+ break;
+ case accept:
+ changed();
+ mayKillFocus();
+ }
+ return 1;
}
- return 1;
}
return 0;
case evtKey:
@@ -137,9 +157,8 @@ int eInput::event(int event, void *data, void *data2)
eDebug("focus got in %p", this);
ePtr<eActionMap> ptr;
eActionMap::getInstance(ptr);
- ptr->bindAction("InputActions", 0, 0, this);
- // bind all keys
- ptr->bindAction("", 0, 1, this);
+ ptr->bindAction("InputActions", 0, INPUT_ACTIONS, this);
+ ptr->bindAction("AsciiActions", 0, ASCII_ACTIONS, this);
m_have_focus = 1;
eRCInput::getInstance()->setKeyboardMode(eRCInput::kmAscii);
// fixme. we should use a style for this.
@@ -152,8 +171,8 @@ int eInput::event(int event, void *data, void *data2)
eDebug("focus lostin %p", this);
ePtr<eActionMap> ptr;
eActionMap::getInstance(ptr);
- ptr->unbindAction(this, 0);
- ptr->unbindAction(this, 1);
+ ptr->unbindAction(this, INPUT_ACTIONS);
+ ptr->unbindAction(this, ASCII_ACTIONS);
m_have_focus = 0;
if (m_content)
m_content->validate();