1 win
= jpcrr
.window
.create("Generic watch");
5 fieldpair
= function(fname
, label
)
6 win
:create_component({gridx
= 0, gridy
= y
, gridwidth
= 1, gridheight
= 1, name
= fname
.. "_LABEL", type = "label", text
= label
,
7 fill
= win
:HORIZONTAL(), weightx
= 0, weighty
= 1});
8 win
:create_component({gridx
= 1, gridy
= y
, gridwidth
= 1, gridheight
= 1, name
= fname
, type = "label", text
= "N/A",
9 fill
= win
:HORIZONTAL(), weightx
= 1, weighty
= 1, insets_left
= 16});
13 update_field
= function(fname
, newval
)
14 win
:set_text(fname
, tostring(newval
));
22 keys
.RIGHT
= 128 + 77;
29 keys
.RCTRL
= 128 + 29;
35 add_field
= function(name
, update_fn
)
36 fieldpair(name
, name
);
37 table.insert(fieldnames
, name
);
38 fieldupdates
[name
] = update_fn
;
41 do_update
= function()
42 for k
, v
in ipairs(fieldnames
) do
43 update_field(v
, fieldupdates
[v
]());
48 add_field("System time: ", function()
49 return tostring(jpcrr
.clock_time());
52 add_field("Frame number: ", function()
53 return tostring(jpcrr
.frame_number());
56 add_field("Keyboard queue: ", function()
57 nextchar
= jpcrr
.read_word(0x41A) - 30;
58 lastchar
= jpcrr
.read_word(0x41C) - 30;
59 if lastchar
< nextchar
then
60 lastchar
= lastchar
+ 32;
62 return tostring((lastchar
-nextchar
)/2);
65 for k
, v
in pairs(keys
) do
67 add_field("Keyboard " .. k
.. ":", function()
68 if jpcrr
.keypressed(v
) then
76 fmt_jaxis
= function(val
)
78 return "<not present>";
84 fmt_jbutton
= function(val
)
86 return "<not present>";
94 add_field("Joystick axis X1: ", function() return fmt_jaxis(hA
); end);
95 add_field("Joystick axis Y1: ", function() return fmt_jaxis(hB
); end);
96 add_field("Joystick axis X2: ", function() return fmt_jaxis(hC
); end);
97 add_field("Joystick axis Y2: ", function() return fmt_jaxis(hD
); end);
98 add_field("Joystick button 1-1: ", function() return fmt_jbutton(bA
); end);
99 add_field("Joystick button 1-2: ", function() return fmt_jbutton(bB
); end);
100 add_field("Joystick button 2-1: ", function() return fmt_jbutton(bC
); end);
101 add_field("Joystick button 2-2: ", function() return fmt_jbutton(bD
); end);
105 a
, b
= jpcrr
.wait_event();
107 hA
, hB
, hC
, hD
, bA
, bB
, bC
, bD
= jpcrr
.joystick_state();
110 elseif a
== "message" then
111 print("Message: " .. b
);