Browse Source

wip adds automatic unshifting to kdenlive layout

develop
Harald Albrecht 5 years ago
parent
commit
b608f2cc28
  1. 7
      sdcard/layouts/kdenlive.lua
  2. 19
      sdcard/snippets/routehandlers.lua
  3. 10
      spec/layouts/kdenlive_spec.lua

7
sdcard/layouts/kdenlive.lua

@ -28,6 +28,12 @@ local k = _G.kdenlive or {} -- module
local mb = require "snippets/multibow"
-- Unshift to primary keymap. For simplification, use it with the "anykey"
-- release handlers, see below.
function k.unshift()
mb.activate_keymap(k.keymap.name)
end
-- Key colors for unshifted and shifted keys; keep them rather muted in order
-- to not distract your video editing work.
k.UNSHIFTED_COLOR = {r=0, g=1, b=0}
@ -40,6 +46,7 @@ k.keymap = {
k.keymap_shifted = {
name="kdenlive-shifted",
secondary=true,
[-1] = {release=k.unshift},
[6] = {c=k.SHIFTED_COLOR},
[3] = {c=k.SHIFTED_COLOR},
}

19
sdcard/snippets/routehandlers.lua

@ -24,7 +24,7 @@ SOFTWARE.
-- their correct handlers, depending on which keyboard layout currently
-- is active.
function mb.route(keyno, pressed)
local keydef, grabbed_any_keydef
local keydef, grabbed_any_keydef, anykdeydef
-- Checks for a keymap grab being enforced at this time...
if mb.grab_keymap then
keydef = mb.grab_keymap[keyno]
@ -40,13 +40,16 @@ function mb.route(keyno, pressed)
end
end
-- Checks for key in current keymap if no persistent key was found yet.
if not keydef and mb.current_keymap then
keydef = mb.current_keymap[keyno]
if not keydef then
if mb.current_keymap then
keydef = mb.current_keymap[keyno]
anykeydef = mb.current_keymap[-1]
end
end
end
-- Bails out if no key definition to route to could be found.
if not (keydef or grabbed_any_keydef) then
if not (keydef or anykeydef or grabbed_any_keydef) then
return
end
@ -64,6 +67,9 @@ function mb.route(keyno, pressed)
if keydef and keydef.press then
keydef.press(keyno)
end
if anykeydef and anykeydef.press then
anykeydef.press(keyno)
end
else
if grabbed_any_keydef and grabbed_any_keydef.release then
grabbed_any_keydef.release(keyno)
@ -71,7 +77,10 @@ function mb.route(keyno, pressed)
if keydef and keydef.release then
keydef.release(keyno)
end
mb.activate_leds()
if anykeydef and anykeydef.release then
anykeydef.release(keyno)
end
mb.activate_leds()
end
end

10
spec/layouts/kdenlive_spec.lua

@ -37,17 +37,23 @@ describe("Kdenlive keymap", function()
describe("with setup", function()
local hwk, mb, k
local mb, shift, k
before_each(function()
mb = require("snippets/multibow")
require("layouts/shift")
shift = require("layouts/shift")
k = require("layouts/kdenlive")
_G.setup()
end)
inslit("", function()
assert.is.equal(k.keymap.name, mb.current_keymap.name)
hwk.tap(shift.KEY_SHIFT)
assert.is.equal(k.keymap_shifted.name, mb.current_keymap.name)
hwk.tap(0) -- FIXME
assert.is.equal(k.keymap.name, mb.current_keymap.name)
hwk.tap(shift.KEY_SHIFT)
assert.is.equal(k.keymap_shifted.name, mb.current_keymap.name)
end)
end)

Loading…
Cancel
Save