diff --git a/src/app/commands/cmd_keyboard_shortcuts.cpp b/src/app/commands/cmd_keyboard_shortcuts.cpp index 3c366e350..10363340a 100644 --- a/src/app/commands/cmd_keyboard_shortcuts.cpp +++ b/src/app/commands/cmd_keyboard_shortcuts.cpp @@ -107,7 +107,7 @@ private: void onAddAccel() { ui::Accelerator accel; - SelectAccelerator window(accel, m_key->keycontext()); + SelectAccelerator window(accel, m_key ? m_key->keycontext(): KeyContext::Any); window.openWindowInForeground(); if (window.isModified()) { diff --git a/src/app/ui/select_accelerator.cpp b/src/app/ui/select_accelerator.cpp index 046136d2a..2394f02b9 100644 --- a/src/app/ui/select_accelerator.cpp +++ b/src/app/ui/select_accelerator.cpp @@ -127,6 +127,7 @@ void SelectAccelerator::onModifierChange(KeyModifiers modifier, CheckBox* checkb m_accel = Accelerator(modifiers, scancode, unicodeChar); m_keyField->setAccel(m_accel); + m_keyField->requestFocus(); updateAssignedTo(); } diff --git a/src/she/alleg4/key_poller.cpp b/src/she/alleg4/key_poller.cpp index 40c106f83..73ff64bfa 100644 --- a/src/she/alleg4/key_poller.cpp +++ b/src/she/alleg4/key_poller.cpp @@ -79,7 +79,7 @@ void key_poller_generate_events() key_repeated[c] = 0; } // Generate kKeyDownMessage messages for modifiers - else if (c >= kKeyFirstModifierScancode) { + else if (c >= kKeyFirstModifierScancode || c == kKeyCommand) { ev.setType(Event::KeyDown); ev.setScancode(scancode); ev.setUnicodeChar(::scancode_to_ascii(scancode));