diff --git a/src/js/core/input_distributor.js b/src/js/core/input_distributor.js index 03ad8e0c..67fec90e 100644 --- a/src/js/core/input_distributor.js +++ b/src/js/core/input_distributor.js @@ -210,6 +210,7 @@ export class InputDistributor { this.forwardToReceiver("keydown", { keyCode: keyCode, shift: event.shiftKey, + ctrl: event.ctrlKey, alt: event.altKey, initial: isInitial, event, @@ -236,6 +237,7 @@ export class InputDistributor { this.forwardToReceiver("keyup", { keyCode: keyCode, shift: event.shiftKey, + ctrl: event.ctrlKey, alt: event.altKey, }); } diff --git a/src/js/core/modal_dialog_elements.js b/src/js/core/modal_dialog_elements.js index 5f0ed59f..e34878b1 100644 --- a/src/js/core/modal_dialog_elements.js +++ b/src/js/core/modal_dialog_elements.js @@ -89,9 +89,10 @@ export class Dialog { * @param {object} param0 * @param {number} param0.keyCode * @param {boolean} param0.shift + * @param {boolean} param0.ctrl * @param {boolean} param0.alt */ - handleKeydown({ keyCode, shift, alt }) { + handleKeydown({ keyCode, shift, ctrl, alt }) { if (keyCode === kbEnter && this.enterHandler) { this.internalButtonHandler(this.enterHandler); return STOP_PROPAGATION; @@ -309,7 +310,7 @@ export class DialogOptionChooser extends Dialog {
- ${iconHtml} + ${iconHtml} ${text} ${descHtml}
diff --git a/src/js/game/key_action_mapper.js b/src/js/game/key_action_mapper.js index 13f33d66..0cd0a37b 100644 --- a/src/js/game/key_action_mapper.js +++ b/src/js/game/key_action_mapper.js @@ -439,17 +439,18 @@ export class KeyActionMapper { * @param {object} param0 * @param {number} param0.keyCode * @param {boolean} param0.shift + * @param {boolean} param0.ctrl * @param {boolean} param0.alt * @param {boolean=} param0.initial */ - handleKeydown({ keyCode, shift, alt, initial }) { + handleKeydown({ keyCode, shift, ctrl, alt, initial }) { let stop = false; // Find mapping for (const key in this.keybindings) { /** @type {Keybinding} */ const binding = this.keybindings[key]; - if (binding.keyCode === keyCode && (initial || binding.repeated)) { + if (binding.keyCode === keyCode && !shift && !ctrl && !alt && (initial || binding.repeated)) { /** @type {Signal} */ const signal = this.keybindings[key].signal; if (signal.dispatch() === STOP_PROPAGATION) { @@ -468,9 +469,10 @@ export class KeyActionMapper { * @param {object} param0 * @param {number} param0.keyCode * @param {boolean} param0.shift + * @param {boolean} param0.ctrl * @param {boolean} param0.alt */ - handleKeyup({ keyCode, shift, alt }) { + handleKeyup({ keyCode, shift, ctrl, alt }) { // Empty } diff --git a/src/js/states/keybindings.js b/src/js/states/keybindings.js index a01629f1..e049c0ae 100644 --- a/src/js/states/keybindings.js +++ b/src/js/states/keybindings.js @@ -19,7 +19,7 @@ export class KeybindingsState extends TextualGameState {
${T.keybindings.hint} - +
@@ -89,7 +89,7 @@ export class KeybindingsState extends TextualGameState { type: "info", }); - dialog.inputReciever.keydown.add(({ keyCode, shift, alt, event }) => { + dialog.inputReciever.keydown.add(({ keyCode, shift, ctrl, alt, event }) => { if (keyCode === 27) { this.dialogs.closeDialog(dialog); return;