|
|
@ -27,44 +27,36 @@ local mb = require("snippets/multibow") |
|
|
|
|
|
|
|
describe("SHIFT multibow keymap", function() |
|
|
|
|
|
|
|
insl(function() |
|
|
|
|
|
|
|
it("installs the SHIFT keymap", function() |
|
|
|
-- Sanity check that there are no registered keymaps yet. |
|
|
|
assert.is.equal(#mb.registered_keymaps(), 0) |
|
|
|
|
|
|
|
local shift = require("layouts/shift") |
|
|
|
assert.is_not_nil(shift) -- we're going slightly over the top here... |
|
|
|
assert.is_not_nil(shift.keymap) |
|
|
|
|
|
|
|
-- SHIFT must register exactly two keymaps, a primary and a secondary one. |
|
|
|
local kms = mb.registered_keymaps() |
|
|
|
assert.is.equal(#kms, 2) |
|
|
|
for idx, keymap in ipairs(kms) do |
|
|
|
if keymap == "shift" then |
|
|
|
assert.is_falsy(keymap.permanent) |
|
|
|
assert.is_falsy(keymap.secondary) |
|
|
|
elseif keymap == "shift-shifted" then |
|
|
|
assert.is_falsy(keymap.permanent) |
|
|
|
assert.is_true(keymap.secondary) |
|
|
|
end |
|
|
|
inslit("installs the SHIFT keymap", function() |
|
|
|
-- Sanity check that there are no registered keymaps yet. |
|
|
|
assert.is.equal(#mb.registered_keymaps(), 0) |
|
|
|
|
|
|
|
local shift = require("layouts/shift") |
|
|
|
assert.is_not_nil(shift) -- we're going slightly over the top here... |
|
|
|
assert.is_not_nil(shift.keymap) |
|
|
|
|
|
|
|
-- SHIFT must register exactly two keymaps, a primary and a secondary one. |
|
|
|
local kms = mb.registered_keymaps() |
|
|
|
assert.is.equal(#kms, 2) |
|
|
|
for idx, keymap in ipairs(kms) do |
|
|
|
if keymap == "shift" then |
|
|
|
assert.is_falsy(keymap.permanent) |
|
|
|
assert.is_falsy(keymap.secondary) |
|
|
|
elseif keymap == "shift-shifted" then |
|
|
|
assert.is_falsy(keymap.permanent) |
|
|
|
assert.is_true(keymap.secondary) |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
default_key_shift = shift.KEY_SHIFT |
|
|
|
end) |
|
|
|
|
|
|
|
default_key_shift = shift.KEY_SHIFT |
|
|
|
end) |
|
|
|
|
|
|
|
insl(function() |
|
|
|
|
|
|
|
it("accepts changes form default", function() |
|
|
|
local override = 42 |
|
|
|
|
|
|
|
_G.shift = { KEY_SHIFT=override } |
|
|
|
local shift = require("layouts/shift") |
|
|
|
assert.is.equal(shift.KEY_SHIFT, override) |
|
|
|
end) |
|
|
|
inslit("accepts changes form default", function() |
|
|
|
local override = 42 |
|
|
|
|
|
|
|
_G.shift = { KEY_SHIFT=override } |
|
|
|
local shift = require("layouts/shift") |
|
|
|
assert.is.equal(shift.KEY_SHIFT, override) |
|
|
|
end) |
|
|
|
|
|
|
|
describe("SHIFTY", function() |
|
|
@ -77,74 +69,81 @@ describe("SHIFT multibow keymap", function() |
|
|
|
shift = require("layouts/shift") |
|
|
|
end) |
|
|
|
|
|
|
|
insl(function() |
|
|
|
it("SHIFT grabs", function() |
|
|
|
spy.on(mb, "grab") |
|
|
|
spy.on(mb, "ungrab") |
|
|
|
inslit("SHIFT grabs", function() |
|
|
|
spy.on(mb, "grab") |
|
|
|
spy.on(mb, "ungrab") |
|
|
|
|
|
|
|
-- route in the SHIFT permanent keymap |
|
|
|
hwk.press(shift.KEY_SHIFT) |
|
|
|
assert.spy(mb.grab).was.called(1) |
|
|
|
assert.spy(mb.grab).was.called_with(shift.keymap_shifted.name) |
|
|
|
-- route in the SHIFT permanent keymap |
|
|
|
hwk.press(shift.KEY_SHIFT) |
|
|
|
assert.spy(mb.grab).was.called(1) |
|
|
|
assert.spy(mb.grab).was.called_with(shift.keymap_shifted.name) |
|
|
|
|
|
|
|
-- route in the shifted(!) SHIFT keymap, so this checks |
|
|
|
-- that we ungrab correctly |
|
|
|
mb.grab:clear() |
|
|
|
hwk.release(shift.KEY_SHIFT) |
|
|
|
assert.spy(mb.grab).was_not.called() |
|
|
|
assert.spy(mb.ungrab).was.called(1) |
|
|
|
-- route in the shifted(!) SHIFT keymap, so this checks |
|
|
|
-- that we ungrab correctly |
|
|
|
mb.grab:clear() |
|
|
|
hwk.release(shift.KEY_SHIFT) |
|
|
|
assert.spy(mb.grab).was_not.called() |
|
|
|
assert.spy(mb.ungrab).was.called(1) |
|
|
|
|
|
|
|
mb.grab:revert() |
|
|
|
mb.ungrab:revert() |
|
|
|
end) |
|
|
|
mb.grab:revert() |
|
|
|
mb.ungrab:revert() |
|
|
|
end) |
|
|
|
|
|
|
|
insl(function() |
|
|
|
it("only lonely SHIFT triggers shift", function() |
|
|
|
stub(shift, "shift_secondary_keymap") |
|
|
|
|
|
|
|
-- test that lonely SHIFT triggers... |
|
|
|
hwk.tap(shift.KEY_SHIFT) |
|
|
|
assert.stub(shift.shift_secondary_keymap).was.called(1) |
|
|
|
|
|
|
|
-- but that SHIFT followed by another function doesn't shift. |
|
|
|
shift.shift_secondary_keymap:clear() |
|
|
|
for idx, key in ipairs({ |
|
|
|
shift.KEY_LAYOUT, |
|
|
|
shift.KEY_BRIGHTNESS |
|
|
|
}) do |
|
|
|
hwk.press(shift.KEY_SHIFT) |
|
|
|
hwk.tap(key) |
|
|
|
hwk.release(shift.KEY_SHIFT) |
|
|
|
assert.stub(shift.shift_secondary_keymap).was_not.called() |
|
|
|
end |
|
|
|
end) |
|
|
|
inslit("only lonely SHIFT triggers shift and no dangling grabs", function() |
|
|
|
stub(shift, "shift_secondary_keymap") |
|
|
|
|
|
|
|
-- test that lonely SHIFT triggers... |
|
|
|
hwk.tap(shift.KEY_SHIFT) |
|
|
|
assert.is_nil(mb.grab_keymap) |
|
|
|
assert.stub(shift.shift_secondary_keymap).was.called(1) |
|
|
|
|
|
|
|
-- but that SHIFT followed by another function doesn't shift. |
|
|
|
shift.shift_secondary_keymap:clear() |
|
|
|
for idx, key in ipairs({ |
|
|
|
shift.KEY_LAYOUT, |
|
|
|
shift.KEY_BRIGHTNESS |
|
|
|
}) do |
|
|
|
hwk.press(shift.KEY_SHIFT) |
|
|
|
hwk.tap(key) |
|
|
|
hwk.release(shift.KEY_SHIFT) |
|
|
|
assert.is_nil(mb.grab_keymap) |
|
|
|
assert.stub(shift.shift_secondary_keymap).was_not.called() |
|
|
|
end |
|
|
|
end) |
|
|
|
|
|
|
|
insl(function() |
|
|
|
it("lonly SHIFTs shift around", function() |
|
|
|
local keymap = { |
|
|
|
name="test" |
|
|
|
} |
|
|
|
local keymap_shifted = { |
|
|
|
name="test-shifted" |
|
|
|
} |
|
|
|
keymap.shift_to = keymap_shifted |
|
|
|
keymap_shifted.shift_to = keymap |
|
|
|
mb.register_keymap(keymap) |
|
|
|
mb.register_keymap(keymap_shifted) |
|
|
|
assert.is.equal(mb.current_keymap, keymap) |
|
|
|
|
|
|
|
spy.on(mb, "activate_keymap") |
|
|
|
|
|
|
|
hwk.tap(shift.KEY_SHIFT) |
|
|
|
assert.spy(mb.activate_keymap).was.called_with(keymap_shifted.name) |
|
|
|
assert.is.equal(mb.current_keymap, keymap_shifted) |
|
|
|
hwk.tap(shift.KEY_SHIFT) |
|
|
|
assert.is.equal(mb.current_keymap, keymap) |
|
|
|
|
|
|
|
mb.activate_keymap:revert() |
|
|
|
end) |
|
|
|
inslit("lonly SHIFTs shift around", function() |
|
|
|
local keymap = { |
|
|
|
name="test" |
|
|
|
} |
|
|
|
local keymap_shifted = { |
|
|
|
name="test-shifted", |
|
|
|
[0]={press=function(key) end} |
|
|
|
} |
|
|
|
keymap.shift_to = keymap_shifted |
|
|
|
keymap_shifted.shift_to = keymap |
|
|
|
mb.register_keymap(keymap) |
|
|
|
mb.register_keymap(keymap_shifted) |
|
|
|
assert.is.equal(mb.current_keymap, keymap) |
|
|
|
|
|
|
|
spy.on(mb, "activate_keymap") |
|
|
|
local s = stub(keymap_shifted[0], "press") |
|
|
|
|
|
|
|
hwk.tap(shift.KEY_SHIFT) |
|
|
|
assert.spy(mb.activate_keymap).was.called_with(keymap_shifted.name) |
|
|
|
assert.is.equal(mb.current_keymap, keymap_shifted) |
|
|
|
|
|
|
|
hwk.tap(0) |
|
|
|
assert.stub(s).was.called(1) |
|
|
|
|
|
|
|
hwk.tap(shift.KEY_SHIFT) |
|
|
|
assert.is.equal(mb.current_keymap, keymap) |
|
|
|
|
|
|
|
s:clear() |
|
|
|
hwk.tap(0) |
|
|
|
assert.stub(s).was_not.called() |
|
|
|
|
|
|
|
mb.activate_keymap:revert() |
|
|
|
s:revert() |
|
|
|
end) |
|
|
|
|
|
|
|
insl(function() |
|
|
|