Minor additions: added full keypad support to GUI and SCI

svn-id: r46808
This commit is contained in:
Yotam Barnoy 2009-12-31 23:52:49 +00:00
parent 3ce017cc2d
commit 080d6da6e4
5 changed files with 35 additions and 1 deletions

View file

@ -270,6 +270,22 @@ sciEvent SciEvent::getFromScummVM() {
if (!(_modifierStates & SCI_KEYMOD_NUMLOCK)) if (!(_modifierStates & SCI_KEYMOD_NUMLOCK))
input.data = SCI_KEY_CENTER; input.data = SCI_KEY_CENTER;
break; 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: default:
input.type = SCI_EVENT_NONE; input.type = SCI_EVENT_NONE;
break; break;

View file

@ -286,7 +286,7 @@ bool ListWidget::handleKeyDown(Common::KeyState state) {
bool dirty = false; bool dirty = false;
int oldSelectedItem = _selectedItem; 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 // Quick selection mode: Go to first list item starting with this key
// (or a substring accumulated from the last couple key presses). // (or a substring accumulated from the last couple key presses).
// Only works in a useful fashion if the list entries are sorted. // Only works in a useful fashion if the list entries are sorted.
@ -351,27 +351,33 @@ bool ListWidget::handleKeyDown(Common::KeyState state) {
} }
break; break;
case Common::KEYCODE_UP: case Common::KEYCODE_UP:
case Common::KEYCODE_KP8:
if (_selectedItem > 0) if (_selectedItem > 0)
_selectedItem--; _selectedItem--;
break; break;
case Common::KEYCODE_DOWN: case Common::KEYCODE_DOWN:
case Common::KEYCODE_KP2:
if (_selectedItem < (int)_list.size() - 1) if (_selectedItem < (int)_list.size() - 1)
_selectedItem++; _selectedItem++;
break; break;
case Common::KEYCODE_PAGEUP: case Common::KEYCODE_PAGEUP:
case Common::KEYCODE_KP9:
_selectedItem -= _entriesPerPage - 1; _selectedItem -= _entriesPerPage - 1;
if (_selectedItem < 0) if (_selectedItem < 0)
_selectedItem = 0; _selectedItem = 0;
break; break;
case Common::KEYCODE_PAGEDOWN: case Common::KEYCODE_PAGEDOWN:
case Common::KEYCODE_KP3:
_selectedItem += _entriesPerPage - 1; _selectedItem += _entriesPerPage - 1;
if (_selectedItem >= (int)_list.size() ) if (_selectedItem >= (int)_list.size() )
_selectedItem = _list.size() - 1; _selectedItem = _list.size() - 1;
break; break;
case Common::KEYCODE_HOME: case Common::KEYCODE_HOME:
case Common::KEYCODE_KP7:
_selectedItem = 0; _selectedItem = 0;
break; break;
case Common::KEYCODE_END: case Common::KEYCODE_END:
case Common::KEYCODE_1:
_selectedItem = _list.size() - 1; _selectedItem = _list.size() - 1;
break; break;
default: default:

View file

@ -228,15 +228,19 @@ void PopUpDialog::handleKeyDown(Common::KeyState state) {
close(); close();
break; break;
case Common::KEYCODE_UP: case Common::KEYCODE_UP:
case Common::KEYCODE_KP8:
moveUp(); moveUp();
break; break;
case Common::KEYCODE_DOWN: case Common::KEYCODE_DOWN:
case Common::KEYCODE_KP2:
moveDown(); moveDown();
break; break;
case Common::KEYCODE_HOME: case Common::KEYCODE_HOME:
case Common::KEYCODE_KP7:
setSelection(0); setSelection(0);
break; break;
case Common::KEYCODE_END: case Common::KEYCODE_END:
case Common::KEYCODE_KP1:
setSelection(_popUpBoss->_entries.size()-1); setSelection(_popUpBoss->_entries.size()-1);
break; break;
default: default:

View file

@ -386,17 +386,21 @@ void ConsoleDialog::handleKeyDown(Common::KeyState state) {
draw(); draw();
break; break;
case Common::KEYCODE_UP: case Common::KEYCODE_UP:
case Common::KEYCODE_KP8:
historyScroll(+1); historyScroll(+1);
break; break;
case Common::KEYCODE_DOWN: case Common::KEYCODE_DOWN:
case Common::KEYCODE_KP2:
historyScroll(-1); historyScroll(-1);
break; break;
case Common::KEYCODE_RIGHT: case Common::KEYCODE_RIGHT:
case Common::KEYCODE_KP6:
if (_currentPos < _promptEndPos) if (_currentPos < _promptEndPos)
_currentPos++; _currentPos++;
drawLine(pos2line(_currentPos)); drawLine(pos2line(_currentPos));
break; break;
case Common::KEYCODE_LEFT: case Common::KEYCODE_LEFT:
case Common::KEYCODE_KP4:
if (_currentPos > _promptStartPos) if (_currentPos > _promptStartPos)
_currentPos--; _currentPos--;
drawLine(pos2line(_currentPos)); drawLine(pos2line(_currentPos));

View file

@ -124,6 +124,7 @@ bool EditableWidget::handleKeyDown(Common::KeyState state) {
forcecaret = true; forcecaret = true;
break; break;
case Common::KEYCODE_LEFT: case Common::KEYCODE_LEFT:
case Common::KEYCODE_KP4:
if (_caretPos > 0) { if (_caretPos > 0) {
dirty = setCaretPos(_caretPos - 1); dirty = setCaretPos(_caretPos - 1);
} }
@ -131,6 +132,7 @@ bool EditableWidget::handleKeyDown(Common::KeyState state) {
dirty = true; dirty = true;
break; break;
case Common::KEYCODE_RIGHT: case Common::KEYCODE_RIGHT:
case Common::KEYCODE_KP6:
if (_caretPos < (int)_editString.size()) { if (_caretPos < (int)_editString.size()) {
dirty = setCaretPos(_caretPos + 1); dirty = setCaretPos(_caretPos + 1);
} }
@ -138,10 +140,12 @@ bool EditableWidget::handleKeyDown(Common::KeyState state) {
dirty = true; dirty = true;
break; break;
case Common::KEYCODE_HOME: case Common::KEYCODE_HOME:
case Common::KEYCODE_KP7:
dirty = setCaretPos(0); dirty = setCaretPos(0);
forcecaret = true; forcecaret = true;
break; break;
case Common::KEYCODE_END: case Common::KEYCODE_END:
case Common::KEYCODE_KP1:
dirty = setCaretPos(_editString.size()); dirty = setCaretPos(_editString.size());
forcecaret = true; forcecaret = true;
break; break;