/
test_bouncing_square.lua
93 lines (64 loc) · 1.57 KB
/
test_bouncing_square.lua
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package.path = package.path..";../?.lua"
local ffi = require "ffi"
local app = require "Application";
local S = require "syscall"
--[[
Callback functions
--]]
function OnTimer(loop, ...)
print("OnTimer: ", loop:iteration());
end
function OnIdle(loop, ...)
print("Idling");
end
--[[
Event type:
EV_KEY
EV_MSC
value:
0 == keyup
1 == keydown
--]]
function OnKey(loop, w, revents)
local event = input_event();
local bytesread = S.read(w.fd, event, ffi.sizeof(event));
if event.type == EV_MSC then
if event.code == MSC_SCAN then
--print("MSC_SCAN: ", string.format("0x%x",event.value));
else
--print("MSC: ", event.code, event.value);
end
elseif event.type == EV_KEY then
if event.value == 1 then
print("KEYDOWN: ", event.code);
elseif event.value == 0 then
print("KEYUP: ", event.code);
if event.code == KEY_ESC then
loop:halt();
return false;
end
elseif event.value == 2 then
print("KEYREP: ", event.code);
end
else
--print("EVENT TYPE: ", UI.EventTypes[event.type][2], "CODE:",event.code, "VALUE: ", string.format("0x%x",event.value));
end
end
function OnMouse(loop, w, revents)
--print("OnMouse: ", w, revents);
local event = input_event();
local bytesread = S.read(w.fd, event, ffi.sizeof(event));
print("MOUSE: ", event.type, event.code, event.value);
end
--[[
Create Observers
--]]
--app.AddIdleObserver(OnIdle);
-- Timer Observer
app.AddTimerObserver(OnTimer, 1, 0.5);
-- Keyboard Tracking
app.AddKeyboardObserver(OnKey);
-- Mouse Tracking
--app.AddMouseObserver(OnMouse);
-- Run the Application
app.Run();