From babe3d94b6f10d8d236fe76a53e3188d82db6973 Mon Sep 17 00:00:00 2001 From: Daniel Fiser Date: Thu, 21 Jun 2018 09:09:28 +0200 Subject: [PATCH] Added vim-like control keys. --- src/qt/main_window.cpp | 76 +++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 42 deletions(-) diff --git a/src/qt/main_window.cpp b/src/qt/main_window.cpp index 1ad3e4c..e263234 100644 --- a/src/qt/main_window.cpp +++ b/src/qt/main_window.cpp @@ -58,51 +58,43 @@ MainWindow::MainWindow() void MainWindow::keyPressEvent(QKeyEvent *e) { - int key; - e->accept(); DBG("Key Event: " << e->key() << " - " << e->text().toStdString()); - key = e->key(); - switch (key){ - case 16777220: // enter - _diff_view_frame->scrollDown(10); - break; - case 16777219: // backspace - _diff_view_frame->scrollUp(10); - break; - - case 32: // space - _diff_view_frame->scrollDown(100); - break; - - case 81: - case 113: - close(); - break; - - case 16777238: // pgup - _diff_view_frame->scrollUp(100); - break; - case 16777239: // pgdown - _diff_view_frame->scrollDown(100); - break; - - case 16777236: //left - _diff_view_frame->scrollLeft(50); - break; - case 16777234: - _diff_view_frame->scrollRight(50); - break; - - case 16777235: // up - if (_file_list->currentRow() != 0) - _file_list->setCurrentRow(_file_list->currentRow() - 1); - break; - case 16777237: // down - if (_file_list->currentRow() < _file_list->count() - 1) - _file_list->setCurrentRow(_file_list->currentRow() + 1); - break; + int key = e->key(); + Qt::KeyboardModifiers mod = e->modifiers(); + + if ((key == Qt::Key_J && (mod & Qt::ShiftModifier)) || key == Qt::Key_Down){ + if (_file_list->currentRow() < _file_list->count() - 1) + _file_list->setCurrentRow(_file_list->currentRow() + 1); + + }else if ((key == Qt::Key_K && (mod & Qt::ShiftModifier)) + || key == Qt::Key_Up){ + if (_file_list->currentRow() != 0) + _file_list->setCurrentRow(_file_list->currentRow() - 1); + + }else if (key == Qt::Key_J || key == Qt::Key_Enter){ + _diff_view_frame->scrollDown(10); + + }else if (key == Qt::Key_K || key == Qt::Key_Backspace){ + _diff_view_frame->scrollUp(10); + + }else if (key == Qt::Key_L || key == Qt::Key_Left){ + _diff_view_frame->scrollLeft(50); + + }else if (key == Qt::Key_H || key == Qt::Key_Right){ + _diff_view_frame->scrollRight(50); + + }else if (key == Qt::Key_Space + || key == Qt::Key_PageDown + || (key == Qt::Key_D && (mod & Qt::ControlModifier))){ + _diff_view_frame->scrollDown(100); + + }else if (key == Qt::Key_PageUp + || (key == Qt::Key_U && (mod & Qt::ControlModifier))){ + _diff_view_frame->scrollUp(100); + }else if (key == Qt::Key_Q || key == Qt::Key_Escape){ + close(); } }