1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2025-06-13 13:04:03 +00:00

Filter out shifted key presses.

Only accept key presses that do not have Shift, Ctrl or Alt pressed.
This commit is contained in:
FatCatX 2021-05-04 21:05:11 -07:00
parent 5f0a95ba11
commit 7dfe867de5
4 changed files with 12 additions and 7 deletions

View File

@ -210,6 +210,7 @@ export class InputDistributor {
this.forwardToReceiver("keydown", { this.forwardToReceiver("keydown", {
keyCode: keyCode, keyCode: keyCode,
shift: event.shiftKey, shift: event.shiftKey,
ctrl: event.ctrlKey,
alt: event.altKey, alt: event.altKey,
initial: isInitial, initial: isInitial,
event, event,
@ -236,6 +237,7 @@ export class InputDistributor {
this.forwardToReceiver("keyup", { this.forwardToReceiver("keyup", {
keyCode: keyCode, keyCode: keyCode,
shift: event.shiftKey, shift: event.shiftKey,
ctrl: event.ctrlKey,
alt: event.altKey, alt: event.altKey,
}); });
} }

View File

@ -89,9 +89,10 @@ export class Dialog {
* @param {object} param0 * @param {object} param0
* @param {number} param0.keyCode * @param {number} param0.keyCode
* @param {boolean} param0.shift * @param {boolean} param0.shift
* @param {boolean} param0.ctrl
* @param {boolean} param0.alt * @param {boolean} param0.alt
*/ */
handleKeydown({ keyCode, shift, alt }) { handleKeydown({ keyCode, shift, ctrl, alt }) {
if (keyCode === kbEnter && this.enterHandler) { if (keyCode === kbEnter && this.enterHandler) {
this.internalButtonHandler(this.enterHandler); this.internalButtonHandler(this.enterHandler);
return STOP_PROPAGATION; return STOP_PROPAGATION;
@ -309,7 +310,7 @@ export class DialogOptionChooser extends Dialog {
<div class='option ${value === options.active ? "active" : ""} ${ <div class='option ${value === options.active ? "active" : ""} ${
iconPrefix ? "hasIcon" : "" iconPrefix ? "hasIcon" : ""
}' data-optionvalue='${value}'> }' data-optionvalue='${value}'>
${iconHtml} ${iconHtml}
<span class='title'>${text}</span> <span class='title'>${text}</span>
${descHtml} ${descHtml}
</div> </div>

View File

@ -439,17 +439,18 @@ export class KeyActionMapper {
* @param {object} param0 * @param {object} param0
* @param {number} param0.keyCode * @param {number} param0.keyCode
* @param {boolean} param0.shift * @param {boolean} param0.shift
* @param {boolean} param0.ctrl
* @param {boolean} param0.alt * @param {boolean} param0.alt
* @param {boolean=} param0.initial * @param {boolean=} param0.initial
*/ */
handleKeydown({ keyCode, shift, alt, initial }) { handleKeydown({ keyCode, shift, ctrl, alt, initial }) {
let stop = false; let stop = false;
// Find mapping // Find mapping
for (const key in this.keybindings) { for (const key in this.keybindings) {
/** @type {Keybinding} */ /** @type {Keybinding} */
const binding = this.keybindings[key]; const binding = this.keybindings[key];
if (binding.keyCode === keyCode && (initial || binding.repeated)) { if (binding.keyCode === keyCode && !shift && !ctrl && !alt && (initial || binding.repeated)) {
/** @type {Signal} */ /** @type {Signal} */
const signal = this.keybindings[key].signal; const signal = this.keybindings[key].signal;
if (signal.dispatch() === STOP_PROPAGATION) { if (signal.dispatch() === STOP_PROPAGATION) {
@ -468,9 +469,10 @@ export class KeyActionMapper {
* @param {object} param0 * @param {object} param0
* @param {number} param0.keyCode * @param {number} param0.keyCode
* @param {boolean} param0.shift * @param {boolean} param0.shift
* @param {boolean} param0.ctrl
* @param {boolean} param0.alt * @param {boolean} param0.alt
*/ */
handleKeyup({ keyCode, shift, alt }) { handleKeyup({ keyCode, shift, ctrl, alt }) {
// Empty // Empty
} }

View File

@ -19,7 +19,7 @@ export class KeybindingsState extends TextualGameState {
<div class="topEntries"> <div class="topEntries">
<span class="hint">${T.keybindings.hint}</span> <span class="hint">${T.keybindings.hint}</span>
<button class="styledButton resetBindings">${T.keybindings.resetKeybindings}</button> <button class="styledButton resetBindings">${T.keybindings.resetKeybindings}</button>
</div> </div>
<div class="keybindings"> <div class="keybindings">
@ -89,7 +89,7 @@ export class KeybindingsState extends TextualGameState {
type: "info", type: "info",
}); });
dialog.inputReciever.keydown.add(({ keyCode, shift, alt, event }) => { dialog.inputReciever.keydown.add(({ keyCode, shift, ctrl, alt, event }) => {
if (keyCode === 27) { if (keyCode === 27) {
this.dialogs.closeDialog(dialog); this.dialogs.closeDialog(dialog);
return; return;