소스 검색

KeyboardMapper: Show multiple pressed keys at once

When depressing a key, KeyboardMapperWidget::keydown_event() will now
update only the pressed state of the button associated with the specific
key, instead of also setting the pressed state of the all the buttons to
false.

This makes it possible to highlight multiple pressed keys at once and
makes the code more consistent; the implementation of keyup_event
implied that this was a feature of the program.
RasmusNylander 3 년 전
부모
커밋
c4b2efd95e
1개의 변경된 파일10개의 추가작업 그리고 7개의 파일을 삭제
  1. 10 7
      Userland/Applications/KeyboardMapper/KeyboardMapperWidget.cpp

+ 10 - 7
Userland/Applications/KeyboardMapper/KeyboardMapperWidget.cpp

@@ -215,21 +215,24 @@ void KeyboardMapperWidget::save_to_file(StringView filename)
 void KeyboardMapperWidget::keydown_event(GUI::KeyEvent& event)
 void KeyboardMapperWidget::keydown_event(GUI::KeyEvent& event)
 {
 {
     for (int i = 0; i < KEY_COUNT; i++) {
     for (int i = 0; i < KEY_COUNT; i++) {
+        if (keys[i].scancode != event.scancode())
+            continue;
         auto& tmp_button = m_keys.at(i);
         auto& tmp_button = m_keys.at(i);
-        tmp_button->set_pressed(keys[i].scancode == event.scancode());
+        tmp_button->set_pressed(true);
         tmp_button->update();
         tmp_button->update();
+        break;
     }
     }
 }
 }
 
 
 void KeyboardMapperWidget::keyup_event(GUI::KeyEvent& event)
 void KeyboardMapperWidget::keyup_event(GUI::KeyEvent& event)
 {
 {
     for (int i = 0; i < KEY_COUNT; i++) {
     for (int i = 0; i < KEY_COUNT; i++) {
-        if (keys[i].scancode == event.scancode()) {
-            auto& tmp_button = m_keys.at(i);
-            tmp_button->set_pressed(false);
-            tmp_button->update();
-            break;
-        }
+        if (keys[i].scancode != event.scancode())
+            continue;
+        auto& tmp_button = m_keys.at(i);
+        tmp_button->set_pressed(false);
+        tmp_button->update();
+        break;
     }
     }
 }
 }