1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
-- Keyboard driver
Modifiers = {'lctrl', 'rctrl', 'lalt', 'ralt', 'lshift', 'rshift', 'lgui', 'rgui'}
function App.keypressed(key, scancode, isrepeat)
if array.find(Modifiers, key) then
-- do nothing when the modifier is pressed
end
-- include the modifier(s) when the non-modifer is pressed
App.keychord_pressed(App.combine_modifiers(key))
end
function App.combine_modifiers(key)
local result = ''
local down = love.keyboard.isDown
if down('lctrl') or down('rctrl') then
result = result..'C-'
end
if down('lalt') or down('ralt') then
result = result..'M-'
end
if down('lshift') or down('rshift') then
result = result..'S-' -- don't try to use this with letters/digits
end
if down('lgui') or down('rgui') then
result = result..'s-'
end
result = result..key
return result
end
function App.modifier_down()
return array.any(Modifiers, love.keyboard.isDown)
end
array = {}
function array.find(arr, elem)
for i,x in ipairs(arr) do
if x == elem then
return i
end
end
return nil
end
function array.any(arr, f)
for i,x in ipairs(arr) do
local result = f(x)
if result then
return result
end
end
return false
end
|