From 541145560a3b35ad5d37ca76e301c07e32cd4eb0 Mon Sep 17 00:00:00 2001 From: mkosler Date: Tue, 21 Feb 2012 12:30:42 -0600 Subject: [PATCH 1/3] Added ability to change controls for tabbable with hacky LOVE quirks. --- .gitignore | 0 README.md | 0 button.lua | 0 checkbox.lua | 0 core.lua | 18 ++++++++++++++---- init.lua | 0 input.lua | 0 label.lua | 0 slider.lua | 0 slider2d.lua | 0 style-default.lua | 0 11 files changed, 14 insertions(+), 4 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 README.md mode change 100644 => 100755 button.lua mode change 100644 => 100755 checkbox.lua mode change 100644 => 100755 core.lua mode change 100644 => 100755 init.lua mode change 100644 => 100755 input.lua mode change 100644 => 100755 label.lua mode change 100644 => 100755 slider.lua mode change 100644 => 100755 slider2d.lua mode change 100644 => 100755 style-default.lua diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/button.lua b/button.lua old mode 100644 new mode 100755 diff --git a/checkbox.lua b/checkbox.lua old mode 100644 new mode 100755 diff --git a/core.lua b/core.lua old mode 100644 new mode 100755 index f57caa9..10a0c72 --- a/core.lua +++ b/core.lua @@ -18,7 +18,7 @@ local function hasKeyFocus(id) return context.keyfocus == id end -- input local mouse = {x = 0, y = 0, down = false} -local keyboard = {key = nil, code = -1} +local keyboard = {key = nil, code = -1, ctrl = {down = {key = "tab", code = 9}, up = {key = "tab", code = 0}}} function mouse.inRect(x,y,w,h) return mouse.x >= x and mouse.x <= x+w and mouse.y >= y and mouse.y <= y+h @@ -42,6 +42,12 @@ function keyboard.pressed(key, code) keyboard.code = code end +function keyboard.controls(ctrl) + keyboard.ctrl.up = ctrl.up + keyboard.ctrl.down = ctrl.down +end + + function keyboard.tryGrab(id) if not context.keyfocus then context.keyfocus = id @@ -50,13 +56,17 @@ end local function makeTabable(id) keyboard.tryGrab(id) - if hasKeyFocus(id) and keyboard.key == 'tab' then - if love.keyboard.isDown('rshift', 'lshift') then + if hasKeyFocus(id) then + if keyboard.key ~= nil then + print(string.format("Keyboard values: %s, %d | Set control values: (down) %s, %d (up) %s, %d", keyboard.key, keyboard.code, keyboard.ctrl.down.key, keyboard.ctrl.down.code, keyboard.ctrl.up.key, keyboard.ctrl.up.code)) + end + if keyboard.key == keyboard.ctrl.up.key and keyboard.code == keyboard.ctrl.up.code then setKeyFocus(context.lastwidget) - else + elseif keyboard.key == keyboard.ctrl.down.key and keyboard.code == keyboard.ctrl.down.code then setKeyFocus(nil) end keyboard.key = nil + keyboard.code = -1 end context.lastwidget = id end diff --git a/init.lua b/init.lua old mode 100644 new mode 100755 diff --git a/input.lua b/input.lua old mode 100644 new mode 100755 diff --git a/label.lua b/label.lua old mode 100644 new mode 100755 diff --git a/slider.lua b/slider.lua old mode 100644 new mode 100755 diff --git a/slider2d.lua b/slider2d.lua old mode 100644 new mode 100755 diff --git a/style-default.lua b/style-default.lua old mode 100644 new mode 100755 From 3a414b52e2c94b866ae57876be6880a74f5f8ac8 Mon Sep 17 00:00:00 2001 From: mkosler Date: Tue, 21 Feb 2012 12:53:18 -0600 Subject: [PATCH 2/3] Made changing controls API a bit more understandable --- core.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core.lua b/core.lua index 168fd2d..f6b0d16 100755 --- a/core.lua +++ b/core.lua @@ -43,9 +43,9 @@ function keyboard.pressed(key, code) keyboard.code = code end -function keyboard.controls(ctrl) - keyboard.ctrl.up = ctrl.up - keyboard.ctrl.down = ctrl.down +function keyboard.controls(up, down) + keyboard.ctrl.up = up + keyboard.ctrl.down = down end From 7cfe7a0c5d119e5bd499475b7fc0544eec8368c7 Mon Sep 17 00:00:00 2001 From: mkosler Date: Tue, 21 Feb 2012 16:05:03 -0600 Subject: [PATCH 3/3] Fixed the borked select functionality. Also improved the user interface for core.keyboard.controls. --- core.lua | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/core.lua b/core.lua index f6b0d16..1f22a79 100755 --- a/core.lua +++ b/core.lua @@ -43,9 +43,11 @@ function keyboard.pressed(key, code) keyboard.code = code end -function keyboard.controls(up, down) - keyboard.ctrl.up = up - keyboard.ctrl.down = down +function keyboard.controls(up, down, upCode, downCode) + keyboard.ctrl.up.key = up + keyboard.ctrl.down.key = down + keyboard.ctrl.up.code = upCode or -1 + keyboard.ctrl.down.code = downCode or -1 end @@ -58,16 +60,28 @@ end local function makeTabable(id) keyboard.tryGrab(id) if hasKeyFocus(id) then - if keyboard.key ~= nil then - print(string.format("Keyboard values: %s, %d | Set control values: (down) %s, %d (up) %s, %d", keyboard.key, keyboard.code, keyboard.ctrl.down.key, keyboard.ctrl.down.code, keyboard.ctrl.up.key, keyboard.ctrl.up.code)) + if keyboard.ctrl.up.code ~= -1 then + if keyboard.key == keyboard.ctrl.up.key and keyboard.code == keyboard.ctrl.up.code then + setKeyFocus(context.lastwidget) + keyboard.key = nil + end + else + if keyboard.key == keyboard.ctrl.up.key then + setKeyFocus(context.lastwidget) + keyboard.key = nil + end end - if keyboard.key == keyboard.ctrl.up.key and keyboard.code == keyboard.ctrl.up.code then - setKeyFocus(context.lastwidget) - elseif keyboard.key == keyboard.ctrl.down.key and keyboard.code == keyboard.ctrl.down.code then - setKeyFocus(nil) + if keyboard.ctrl.down.code ~= -1 then + if keyboard.key == keyboard.ctrl.down.key and keyboard.code == keyboard.ctrl.down.code then + setKeyFocus(nil) + keyboard.key = nil + end + else + if keyboard.key == keyboard.ctrl.down.key then + setKeyFocus(nil) + keyboard.key = nil + end end - keyboard.key = nil - keyboard.code = -1 end context.lastwidget = id end