aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYotam Barnoy2009-12-31 23:52:49 +0000
committerYotam Barnoy2009-12-31 23:52:49 +0000
commit080d6da6e42cad623d0cfab37f6d753f121c470b (patch)
tree0e925e029ccfe8797104bfd5b6df827d479efd03
parent3ce017cc2d859e59fdd02d87ee7f36d794c5f594 (diff)
downloadscummvm-rg350-080d6da6e42cad623d0cfab37f6d753f121c470b.tar.gz
scummvm-rg350-080d6da6e42cad623d0cfab37f6d753f121c470b.tar.bz2
scummvm-rg350-080d6da6e42cad623d0cfab37f6d753f121c470b.zip
Minor additions: added full keypad support to GUI and SCI
svn-id: r46808
-rw-r--r--engines/sci/event.cpp16
-rw-r--r--gui/ListWidget.cpp8
-rw-r--r--gui/PopUpWidget.cpp4
-rw-r--r--gui/console.cpp4
-rw-r--r--gui/editable.cpp4
5 files changed, 35 insertions, 1 deletions
diff --git a/engines/sci/event.cpp b/engines/sci/event.cpp
index 0128f97629..b25c0bd486 100644
--- a/engines/sci/event.cpp
+++ b/engines/sci/event.cpp
@@ -270,6 +270,22 @@ sciEvent SciEvent::getFromScummVM() {
if (!(_modifierStates & SCI_KEYMOD_NUMLOCK))
input.data = SCI_KEY_CENTER;
break;
+ case Common::KEYCODE_KP7: // home
+ if (!(_modifierStates & SCI_KEYMOD_NUMLOCK))
+ input.data = SCI_KEY_HOME;
+ break;
+ case Common::KEYCODE_KP9: // pageup
+ if (!(_modifierStates & SCI_KEYMOD_NUMLOCK))
+ input.data = SCI_KEY_PGUP;
+ break;
+ case Common::KEYCODE_KP1: // end
+ if (!(_modifierStates & SCI_KEYMOD_NUMLOCK))
+ input.data = SCI_KEY_END;
+ break;
+ case Common::KEYCODE_KP3: // pagedown
+ if (!(_modifierStates & SCI_KEYMOD_NUMLOCK))
+ input.data = SCI_KEY_PGDOWN;
+ break;
default:
input.type = SCI_EVENT_NONE;
break;
diff --git a/gui/ListWidget.cpp b/gui/ListWidget.cpp
index b1e333b1bb..7d809938e2 100644
--- a/gui/ListWidget.cpp
+++ b/gui/ListWidget.cpp
@@ -286,7 +286,7 @@ bool ListWidget::handleKeyDown(Common::KeyState state) {
bool dirty = false;
int oldSelectedItem = _selectedItem;
- if (!_editMode && isprint((unsigned char)state.ascii)) {
+ if (!_editMode && state.keycode <= Common::KEYCODE_z && isprint((unsigned char)state.ascii)) {
// Quick selection mode: Go to first list item starting with this key
// (or a substring accumulated from the last couple key presses).
// Only works in a useful fashion if the list entries are sorted.
@@ -351,27 +351,33 @@ bool ListWidget::handleKeyDown(Common::KeyState state) {
}
break;
case Common::KEYCODE_UP:
+ case Common::KEYCODE_KP8:
if (_selectedItem > 0)
_selectedItem--;
break;
case Common::KEYCODE_DOWN:
+ case Common::KEYCODE_KP2:
if (_selectedItem < (int)_list.size() - 1)
_selectedItem++;
break;
case Common::KEYCODE_PAGEUP:
+ case Common::KEYCODE_KP9:
_selectedItem -= _entriesPerPage - 1;
if (_selectedItem < 0)
_selectedItem = 0;
break;
case Common::KEYCODE_PAGEDOWN:
+ case Common::KEYCODE_KP3:
_selectedItem += _entriesPerPage - 1;
if (_selectedItem >= (int)_list.size() )
_selectedItem = _list.size() - 1;
break;
case Common::KEYCODE_HOME:
+ case Common::KEYCODE_KP7:
_selectedItem = 0;
break;
case Common::KEYCODE_END:
+ case Common::KEYCODE_1:
_selectedItem = _list.size() - 1;
break;
default:
diff --git a/gui/PopUpWidget.cpp b/gui/PopUpWidget.cpp
index 35cfaf6d4a..15b7557aef 100644
--- a/gui/PopUpWidget.cpp
+++ b/gui/PopUpWidget.cpp
@@ -228,15 +228,19 @@ void PopUpDialog::handleKeyDown(Common::KeyState state) {
close();
break;
case Common::KEYCODE_UP:
+ case Common::KEYCODE_KP8:
moveUp();
break;
case Common::KEYCODE_DOWN:
+ case Common::KEYCODE_KP2:
moveDown();
break;
case Common::KEYCODE_HOME:
+ case Common::KEYCODE_KP7:
setSelection(0);
break;
case Common::KEYCODE_END:
+ case Common::KEYCODE_KP1:
setSelection(_popUpBoss->_entries.size()-1);
break;
default:
diff --git a/gui/console.cpp b/gui/console.cpp
index 9ac9cf09e1..f412ca4fa0 100644
--- a/gui/console.cpp
+++ b/gui/console.cpp
@@ -386,17 +386,21 @@ void ConsoleDialog::handleKeyDown(Common::KeyState state) {
draw();
break;
case Common::KEYCODE_UP:
+ case Common::KEYCODE_KP8:
historyScroll(+1);
break;
case Common::KEYCODE_DOWN:
+ case Common::KEYCODE_KP2:
historyScroll(-1);
break;
case Common::KEYCODE_RIGHT:
+ case Common::KEYCODE_KP6:
if (_currentPos < _promptEndPos)
_currentPos++;
drawLine(pos2line(_currentPos));
break;
case Common::KEYCODE_LEFT:
+ case Common::KEYCODE_KP4:
if (_currentPos > _promptStartPos)
_currentPos--;
drawLine(pos2line(_currentPos));
diff --git a/gui/editable.cpp b/gui/editable.cpp
index 232873ffe3..0eca1aec55 100644
--- a/gui/editable.cpp
+++ b/gui/editable.cpp
@@ -124,6 +124,7 @@ bool EditableWidget::handleKeyDown(Common::KeyState state) {
forcecaret = true;
break;
case Common::KEYCODE_LEFT:
+ case Common::KEYCODE_KP4:
if (_caretPos > 0) {
dirty = setCaretPos(_caretPos - 1);
}
@@ -131,6 +132,7 @@ bool EditableWidget::handleKeyDown(Common::KeyState state) {
dirty = true;
break;
case Common::KEYCODE_RIGHT:
+ case Common::KEYCODE_KP6:
if (_caretPos < (int)_editString.size()) {
dirty = setCaretPos(_caretPos + 1);
}
@@ -138,10 +140,12 @@ bool EditableWidget::handleKeyDown(Common::KeyState state) {
dirty = true;
break;
case Common::KEYCODE_HOME:
+ case Common::KEYCODE_KP7:
dirty = setCaretPos(0);
forcecaret = true;
break;
case Common::KEYCODE_END:
+ case Common::KEYCODE_KP1:
dirty = setCaretPos(_editString.size());
forcecaret = true;
break;