From 61d5410f22096c6e92526b16cf5524ca253f96d5 Mon Sep 17 00:00:00 2001 From: Ishaan Bhardwaj Date: Sun, 11 Jul 2021 13:53:27 -0400 Subject: [PATCH] Prevent mapping the same key to two controls (fixes #20) --- scene/key_config.lua | 2 +- scene/stick_config.lua | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/scene/key_config.lua b/scene/key_config.lua index f8d79ef..ceae63f 100644 --- a/scene/key_config.lua +++ b/scene/key_config.lua @@ -88,7 +88,7 @@ function KeyConfigScene:onInputPress(e) elseif e.scancode == "tab" then self.set_inputs[configurable_inputs[self.input_state]] = "skipped" self.input_state = self.input_state + 1 - elseif e.scancode ~= "escape" then + elseif e.scancode ~= "escape" and not self.new_input[e.scancode] then -- all other keys can be configured self.set_inputs[configurable_inputs[self.input_state]] = "key " .. love.keyboard.getKeyFromScancode(e.scancode) .. " (" .. e.scancode .. ")" self.new_input[e.scancode] = configurable_inputs[self.input_state] diff --git a/scene/stick_config.lua b/scene/stick_config.lua index 931d73a..a9ca349 100644 --- a/scene/stick_config.lua +++ b/scene/stick_config.lua @@ -104,6 +104,7 @@ function StickConfigScene:onInputPress(e) if not self.new_input[e.name].buttons then self.new_input[e.name].buttons = {} end + if self.new_input[e.name].buttons[e.button] then return end self.set_inputs[configurable_inputs[self.input_state]] = "jbtn " .. e.button .. @@ -119,6 +120,9 @@ function StickConfigScene:onInputPress(e) if not self.new_input[e.name].axes[e.axis] then self.new_input[e.name].axes[e.axis] = {} end + if ( + self.new_input[e.name].axes[e.axis][e.value >= 1 and "positive" or "negative"] + ) then return end self.set_inputs[configurable_inputs[self.input_state]] = "jaxis " .. (e.value >= 1 and "+" or "-") .. e.axis .. @@ -137,6 +141,9 @@ function StickConfigScene:onInputPress(e) if not self.new_input[e.name].hats[e.hat] then self.new_input[e.name].hats[e.hat] = {} end + if self.new_input[e.name].hats[e.hat][e.direction] then + return + end self.set_inputs[configurable_inputs[self.input_state]] = "jhat " .. e.hat .. " " .. e.direction ..