pxt-common-packages 11.1.2 → 11.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/built/common-sim.d.ts +98 -0
- package/built/common-sim.js +343 -0
- package/libs/azureiot/built/debug/binary.js +461 -461
- package/libs/browser-events/browserEvents.cpp +29 -0
- package/libs/browser-events/browserEvents.ts +167 -0
- package/libs/browser-events/keyboard.ts +481 -0
- package/libs/browser-events/pxt.json +14 -0
- package/libs/browser-events/shims.d.ts +13 -0
- package/libs/browser-events/sim/browserEvent.ts +21 -0
- package/libs/browser-events/sim/keyboard.ts +256 -0
- package/libs/browser-events/sim/mouseState.ts +81 -0
- package/libs/color/built/debug/binary.js +8 -8
- package/libs/color-sensor/built/debug/binary.js +8 -8
- package/libs/controller/built/debug/binary.js +7608 -7582
- package/libs/controller---none/built/debug/binary.js +7587 -7561
- package/libs/datalogger/built/debug/binary.js +63 -63
- package/libs/edge-connector/built/debug/binary.js +8 -8
- package/libs/esp32/built/debug/binary.js +462 -462
- package/libs/game/built/debug/binary.js +7500 -7474
- package/libs/game/camera.ts +2 -2
- package/libs/game/controller.ts +2 -2
- package/libs/game/docs/reference/animation/animation-frames.md +77 -0
- package/libs/game/docs/reference/images/image/equals.md +68 -0
- package/libs/game/docs/reference/images/image.md +65 -0
- package/libs/game/docs/reference/images/sprite-image.md +43 -0
- package/libs/game/docs/reference/info/change-countdown-by.md +26 -0
- package/libs/game/docs/reference/info/change-score-by.md +1 -1
- package/libs/game/docs/reference/info/countdown.md +52 -0
- package/libs/game/docs/reference/sprites/all-of-kind.md +71 -0
- package/libs/game/docs/reference/sprites/on-overlap.md +1 -1
- package/libs/game/game.ts +1 -1
- package/libs/game/info.ts +2 -2
- package/libs/game/spriteevents.ts +1 -1
- package/libs/game/sprites.ts +1 -1
- package/libs/lcd/built/debug/binary.js +8 -8
- package/libs/light-spectrum-sensor/built/debug/binary.js +8 -8
- package/libs/lora/built/debug/binary.js +8 -8
- package/libs/matrix-keypad/built/debug/binary.js +8 -8
- package/libs/mixer/docs/reference/music/create-sound-effect.md +68 -0
- package/libs/mixer/docs/reference/music/play-sound-effect.md +59 -0
- package/libs/mixer/docs/reference/music/play.md +10 -2
- package/libs/mixer/docs/reference/music/randomize-sound.md +30 -0
- package/libs/mixer/docs/types/sound-effect.md +136 -0
- package/libs/mixer/playable.ts +19 -1
- package/libs/mixer/soundEffect.ts +1 -1
- package/libs/mqtt/built/debug/binary.js +176 -176
- package/libs/net/built/debug/binary.js +176 -176
- package/libs/net-game/built/debug/binary.js +9348 -9322
- package/libs/palette/built/debug/binary.js +7499 -7473
- package/libs/pixel/built/debug/binary.js +8 -8
- package/libs/power/built/debug/binary.js +8 -8
- package/libs/proximity/built/debug/binary.js +8 -8
- package/libs/radio/built/debug/binary.js +8 -8
- package/libs/radio-broadcast/built/debug/binary.js +8 -8
- package/libs/rotary-encoder/built/debug/binary.js +8 -8
- package/libs/screen/_locales/screen-strings.json +1 -1
- package/libs/screen/built/debug/binary.js +50 -50
- package/libs/screen/fieldeditors.ts +7 -4
- package/libs/screen/image.d.ts +1 -0
- package/libs/servo/built/debug/binary.js +8 -8
- package/libs/sprite-scaling/built/debug/binary.js +7499 -7473
- package/libs/storyboard/built/debug/binary.js +7499 -7473
- package/package.json +1 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#include "pxt.h"
|
|
2
|
+
|
|
3
|
+
namespace browserEvents {
|
|
4
|
+
|
|
5
|
+
//%
|
|
6
|
+
int mouseX() {
|
|
7
|
+
return -1;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
//%
|
|
11
|
+
int mouseY() {
|
|
12
|
+
return -1;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//%
|
|
16
|
+
int wheelDx() {
|
|
17
|
+
return -1;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
//%
|
|
21
|
+
int wheelDy() {
|
|
22
|
+
return -1;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//%
|
|
26
|
+
int wheelDz() {
|
|
27
|
+
return -1;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
|
|
2
|
+
//% icon="\uf245"
|
|
3
|
+
//% color="#9c1355"
|
|
4
|
+
//% block="Browser Events"
|
|
5
|
+
namespace browserEvents {
|
|
6
|
+
export enum Event {
|
|
7
|
+
PointerDown = 6857,
|
|
8
|
+
PointerUp = 6858,
|
|
9
|
+
PointerMove = 6859,
|
|
10
|
+
PointerLeave = 6860,
|
|
11
|
+
PointerEnter = 6861,
|
|
12
|
+
PointerCancel = 6862,
|
|
13
|
+
PointerOver = 6863,
|
|
14
|
+
PointerOut = 6864,
|
|
15
|
+
Wheel = 6865,
|
|
16
|
+
KeyDown = 6866,
|
|
17
|
+
KeyUp = 6867
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export enum MouseButtonId {
|
|
21
|
+
Left = 1,
|
|
22
|
+
Right = 2,
|
|
23
|
+
Wheel = 3,
|
|
24
|
+
Back = 4,
|
|
25
|
+
Forward = 5
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export enum MouseButtonEvent {
|
|
29
|
+
Pressed = Event.PointerDown,
|
|
30
|
+
Released = Event.PointerUp,
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
//% fixedInstances
|
|
34
|
+
export class MouseButton {
|
|
35
|
+
protected _pressed: boolean;
|
|
36
|
+
protected pressHandler: (x: number, y: number) => void;
|
|
37
|
+
protected pressListeners: ((x: number, y: number) => void)[];
|
|
38
|
+
protected releaseHandler: (x: number, y: number) => void;
|
|
39
|
+
protected releaseListeners: ((x: number, y: number) => void)[];
|
|
40
|
+
|
|
41
|
+
constructor(public id: number) {
|
|
42
|
+
control.internalOnEvent(Event.PointerDown, this.id, () => this.setPressed(false), 16);
|
|
43
|
+
control.internalOnEvent(Event.PointerUp, this.id, () => this.setPressed(true), 16);
|
|
44
|
+
|
|
45
|
+
this._pressed = false;
|
|
46
|
+
this.pressListeners = [];
|
|
47
|
+
this.releaseListeners = [];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
setPressed(pressed: boolean) {
|
|
51
|
+
this._pressed = pressed;
|
|
52
|
+
if (pressed) {
|
|
53
|
+
if (this.pressHandler) {
|
|
54
|
+
this.pressHandler(mouseX(), mouseY());
|
|
55
|
+
}
|
|
56
|
+
for (const handler of this.pressListeners) {
|
|
57
|
+
handler(mouseX(), mouseY());
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
if (this.releaseHandler) {
|
|
62
|
+
this.releaseHandler(mouseX(), mouseY());
|
|
63
|
+
}
|
|
64
|
+
for (const handler of this.releaseListeners) {
|
|
65
|
+
handler(mouseX(), mouseY());
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
//% blockId=browserEvents_mouseButton_onEvent
|
|
71
|
+
//% block="on $this mouse button $event $x $y"
|
|
72
|
+
//% draggableParameters="reporter"
|
|
73
|
+
//% group="Mouse"
|
|
74
|
+
//% weight=50
|
|
75
|
+
onEvent(event: MouseButtonEvent, handler: (x: number, y: number) => void) {
|
|
76
|
+
if (event === MouseButtonEvent.Pressed) {
|
|
77
|
+
this.pressHandler = handler;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
this.releaseHandler = handler;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
//% blockId=browserEvents_mouseButton_isPressed
|
|
85
|
+
//% block="is $this mouse button is pressed"
|
|
86
|
+
//% group="Mouse"
|
|
87
|
+
//% weight=40
|
|
88
|
+
isPressed() {
|
|
89
|
+
return this._pressed;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
//% blockId=browserEvents_mouseButton_pauseUntil
|
|
93
|
+
//% block="pause until $this mouse button is $event"
|
|
94
|
+
//% group="Mouse"
|
|
95
|
+
//% weight=30
|
|
96
|
+
pauseUntil(event: KeyEvent) {
|
|
97
|
+
control.waitForEvent(event, this.id)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
addEventListener(event: KeyEvent, handler: (x: number, y: number) => void) {
|
|
101
|
+
if (event === KeyEvent.Pressed) {
|
|
102
|
+
this.pressListeners.push(handler);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.releaseListeners.push(handler);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
removeEventListener(event: KeyEvent, handler: (x: number, y: number) => void) {
|
|
110
|
+
if (event === KeyEvent.Pressed) {
|
|
111
|
+
this.pressListeners = this.pressListeners.filter(p => p !== handler);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
this.releaseListeners = this.releaseListeners.filter(p => p !== handler);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
//% blockId=browserEvents_onEvent
|
|
120
|
+
//% block="on browser event $event"
|
|
121
|
+
//% draggableParameters="reporter"
|
|
122
|
+
//% group="Mouse"
|
|
123
|
+
//% weight=10
|
|
124
|
+
export function onEvent(event: Event, handler: () => void) {
|
|
125
|
+
control.onEvent(event, 0, handler);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
//% blockId=browserEvents_onMouseMove
|
|
129
|
+
//% block="on mouse move $x $y"
|
|
130
|
+
//% draggableParameters="reporter"
|
|
131
|
+
//% group="Mouse"
|
|
132
|
+
//% weight=100
|
|
133
|
+
export function onMouseMove(handler: (x: number, y: number) => void) {
|
|
134
|
+
control.onEvent(Event.PointerMove, 0, () => {
|
|
135
|
+
handler(mouseX(), mouseY());
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
//% blockId=browserEvents_onWheel
|
|
140
|
+
//% block="on mouse wheel $dx $dy $dz"
|
|
141
|
+
//% draggableParameters="reporter"
|
|
142
|
+
//% group="Mouse"
|
|
143
|
+
//% weight=20
|
|
144
|
+
export function onWheel(handler: (dx: number, dy: number, dz: number) => void) {
|
|
145
|
+
control.onEvent(Event.Wheel, 0, () => {
|
|
146
|
+
handler(wheelDx(), wheelDy(), wheelDz());
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
//% fixedInstance whenUsed block="left"
|
|
151
|
+
export const MouseLeft = new MouseButton(MouseButtonId.Left);
|
|
152
|
+
|
|
153
|
+
//% fixedInstance whenUsed block="right"
|
|
154
|
+
export const MouseRight = new MouseButton(MouseButtonId.Right);
|
|
155
|
+
|
|
156
|
+
//% fixedInstance whenUsed block="wheel"
|
|
157
|
+
export const MouseWheel = new MouseButton(MouseButtonId.Wheel);
|
|
158
|
+
|
|
159
|
+
//% fixedInstance whenUsed block="back"
|
|
160
|
+
export const MouseBack = new MouseButton(MouseButtonId.Back);
|
|
161
|
+
|
|
162
|
+
//% fixedInstance whenUsed block="forward"
|
|
163
|
+
export const MouseForward = new MouseButton(MouseButtonId.Forward);
|
|
164
|
+
|
|
165
|
+
//% fixedInstance whenUsed block="any"
|
|
166
|
+
export const MouseAny = new MouseButton(0);
|
|
167
|
+
}
|
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
namespace browserEvents {
|
|
2
|
+
export enum Key {
|
|
3
|
+
Zero = 48,
|
|
4
|
+
One = 49,
|
|
5
|
+
Two = 50,
|
|
6
|
+
Three = 51,
|
|
7
|
+
Four = 52,
|
|
8
|
+
Five = 53,
|
|
9
|
+
Six = 54,
|
|
10
|
+
Seven = 55,
|
|
11
|
+
Eight = 56,
|
|
12
|
+
Nine = 57,
|
|
13
|
+
BackTick = 192,
|
|
14
|
+
Hyphen = 189,
|
|
15
|
+
Equals = 187,
|
|
16
|
+
Q = 81,
|
|
17
|
+
W = 87,
|
|
18
|
+
E = 69,
|
|
19
|
+
R = 82,
|
|
20
|
+
T = 84,
|
|
21
|
+
Y = 89,
|
|
22
|
+
U = 85,
|
|
23
|
+
I = 73,
|
|
24
|
+
O = 79,
|
|
25
|
+
P = 80,
|
|
26
|
+
OpenBracket = 219,
|
|
27
|
+
CloseBracket = 221,
|
|
28
|
+
BackSlash = 220,
|
|
29
|
+
A = 65,
|
|
30
|
+
S = 83,
|
|
31
|
+
D = 68,
|
|
32
|
+
F = 70,
|
|
33
|
+
G = 71,
|
|
34
|
+
H = 72,
|
|
35
|
+
Space = 32,
|
|
36
|
+
PageUp = 33,
|
|
37
|
+
J = 74,
|
|
38
|
+
K = 75,
|
|
39
|
+
L = 76,
|
|
40
|
+
SemiColon = 186,
|
|
41
|
+
Apostrophe = 222,
|
|
42
|
+
Z = 90,
|
|
43
|
+
X = 88,
|
|
44
|
+
C = 67,
|
|
45
|
+
V = 86,
|
|
46
|
+
B = 66,
|
|
47
|
+
N = 78,
|
|
48
|
+
M = 77,
|
|
49
|
+
Comma = 188,
|
|
50
|
+
Period = 190,
|
|
51
|
+
ForwardSlash = 191,
|
|
52
|
+
Shift = 16,
|
|
53
|
+
Enter = 13,
|
|
54
|
+
CapsLock = 20,
|
|
55
|
+
Tab = 9,
|
|
56
|
+
Control = 17,
|
|
57
|
+
Meta = 91,
|
|
58
|
+
Alt = 18,
|
|
59
|
+
ArrowUp = 38,
|
|
60
|
+
ArrowDown = 40,
|
|
61
|
+
ArrowLeft = 37,
|
|
62
|
+
ArrowRight = 39,
|
|
63
|
+
PageDown = 34,
|
|
64
|
+
End = 35,
|
|
65
|
+
Home = 36
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export enum KeyEvent {
|
|
69
|
+
Pressed,
|
|
70
|
+
Released
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export function keyToString(key: Key) {
|
|
74
|
+
switch (key) {
|
|
75
|
+
case Key.Q:
|
|
76
|
+
return "Q";
|
|
77
|
+
case Key.W:
|
|
78
|
+
return "W";
|
|
79
|
+
case Key.E:
|
|
80
|
+
return "E";
|
|
81
|
+
case Key.R:
|
|
82
|
+
return "R";
|
|
83
|
+
case Key.T:
|
|
84
|
+
return "T";
|
|
85
|
+
case Key.Y:
|
|
86
|
+
return "Y";
|
|
87
|
+
case Key.U:
|
|
88
|
+
return "U";
|
|
89
|
+
case Key.I:
|
|
90
|
+
return "I";
|
|
91
|
+
case Key.O:
|
|
92
|
+
return "O";
|
|
93
|
+
case Key.P:
|
|
94
|
+
return "P";
|
|
95
|
+
case Key.OpenBracket:
|
|
96
|
+
return "[";
|
|
97
|
+
case Key.CloseBracket:
|
|
98
|
+
return "]";
|
|
99
|
+
case Key.BackSlash:
|
|
100
|
+
return "\\";
|
|
101
|
+
case Key.A:
|
|
102
|
+
return "A";
|
|
103
|
+
case Key.S:
|
|
104
|
+
return "S";
|
|
105
|
+
case Key.D:
|
|
106
|
+
return "D";
|
|
107
|
+
case Key.F:
|
|
108
|
+
return "F";
|
|
109
|
+
case Key.G:
|
|
110
|
+
return "G";
|
|
111
|
+
case Key.H:
|
|
112
|
+
return "H";
|
|
113
|
+
case Key.Space:
|
|
114
|
+
return " ";
|
|
115
|
+
case Key.PageUp:
|
|
116
|
+
return "PageUp";
|
|
117
|
+
case Key.J:
|
|
118
|
+
return "J";
|
|
119
|
+
case Key.K:
|
|
120
|
+
return "K";
|
|
121
|
+
case Key.L:
|
|
122
|
+
return "L";
|
|
123
|
+
case Key.SemiColon:
|
|
124
|
+
return ";";
|
|
125
|
+
case Key.Apostrophe:
|
|
126
|
+
return "'";
|
|
127
|
+
case Key.Z:
|
|
128
|
+
return "Z";
|
|
129
|
+
case Key.X:
|
|
130
|
+
return "X";
|
|
131
|
+
case Key.C:
|
|
132
|
+
return "C";
|
|
133
|
+
case Key.V:
|
|
134
|
+
return "V";
|
|
135
|
+
case Key.B:
|
|
136
|
+
return "B";
|
|
137
|
+
case Key.N:
|
|
138
|
+
return "N";
|
|
139
|
+
case Key.M:
|
|
140
|
+
return "M";
|
|
141
|
+
case Key.Comma:
|
|
142
|
+
return ",";
|
|
143
|
+
case Key.Period:
|
|
144
|
+
return ".";
|
|
145
|
+
case Key.ForwardSlash:
|
|
146
|
+
return "/";
|
|
147
|
+
case Key.Shift:
|
|
148
|
+
return "Shift";
|
|
149
|
+
case Key.Enter:
|
|
150
|
+
return "Enter";
|
|
151
|
+
case Key.CapsLock:
|
|
152
|
+
return "CapsLock";
|
|
153
|
+
case Key.Tab:
|
|
154
|
+
return "Tab";
|
|
155
|
+
case Key.Control:
|
|
156
|
+
return "Control";
|
|
157
|
+
case Key.Meta:
|
|
158
|
+
return "Meta";
|
|
159
|
+
case Key.Alt:
|
|
160
|
+
return "Alt";
|
|
161
|
+
case Key.ArrowUp:
|
|
162
|
+
return "ArrowUp";
|
|
163
|
+
case Key.ArrowDown:
|
|
164
|
+
return "ArrowDown";
|
|
165
|
+
case Key.ArrowLeft:
|
|
166
|
+
return "ArrowLeft";
|
|
167
|
+
case Key.ArrowRight:
|
|
168
|
+
return "ArrowRight";
|
|
169
|
+
case Key.PageDown:
|
|
170
|
+
return "PageDown";
|
|
171
|
+
case Key.End:
|
|
172
|
+
return "End";
|
|
173
|
+
case Key.Home:
|
|
174
|
+
return "Home";
|
|
175
|
+
case Key.Zero:
|
|
176
|
+
return "0";
|
|
177
|
+
case Key.One:
|
|
178
|
+
return "1";
|
|
179
|
+
case Key.Two:
|
|
180
|
+
return "2";
|
|
181
|
+
case Key.Three:
|
|
182
|
+
return "3";
|
|
183
|
+
case Key.Four:
|
|
184
|
+
return "4";
|
|
185
|
+
case Key.Five:
|
|
186
|
+
return "5";
|
|
187
|
+
case Key.Six:
|
|
188
|
+
return "6";
|
|
189
|
+
case Key.Seven:
|
|
190
|
+
return "7";
|
|
191
|
+
case Key.Eight:
|
|
192
|
+
return "8";
|
|
193
|
+
case Key.Nine:
|
|
194
|
+
return "9";
|
|
195
|
+
case Key.BackTick:
|
|
196
|
+
return "`";
|
|
197
|
+
case Key.Hyphen:
|
|
198
|
+
return "-";
|
|
199
|
+
case Key.Equals:
|
|
200
|
+
return "=";
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
//% fixedInstances
|
|
206
|
+
export class KeyButton {
|
|
207
|
+
protected _pressed: boolean;
|
|
208
|
+
protected pressHandler: () => void;
|
|
209
|
+
protected pressListeners: (() => void)[];
|
|
210
|
+
protected releaseHandler: () => void;
|
|
211
|
+
protected releaseListeners: (() => void)[];
|
|
212
|
+
|
|
213
|
+
constructor(public id: number) {
|
|
214
|
+
control.onEvent(Event.KeyUp, this.id, () => this.setPressed(false), 16);
|
|
215
|
+
control.onEvent(Event.KeyDown, this.id, () => this.setPressed(true), 16);
|
|
216
|
+
|
|
217
|
+
this._pressed = false;
|
|
218
|
+
this.pressListeners = [];
|
|
219
|
+
this.releaseListeners = [];
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
setPressed(pressed: boolean) {
|
|
223
|
+
this._pressed = pressed;
|
|
224
|
+
if (pressed) {
|
|
225
|
+
if (this.pressHandler) {
|
|
226
|
+
this.pressHandler();
|
|
227
|
+
}
|
|
228
|
+
for (const handler of this.pressListeners) {
|
|
229
|
+
handler();
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
if (this.releaseHandler) {
|
|
234
|
+
this.releaseHandler();
|
|
235
|
+
}
|
|
236
|
+
for (const handler of this.releaseListeners) {
|
|
237
|
+
handler();
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
//% blockId=browserEvents_key_onEvent
|
|
243
|
+
//% block="on $this key $event"
|
|
244
|
+
//% group="Keyboard"
|
|
245
|
+
//% weight=100
|
|
246
|
+
onEvent(event: KeyEvent, handler: () => void) {
|
|
247
|
+
if (event === KeyEvent.Pressed) {
|
|
248
|
+
this.pressHandler = handler;
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
this.releaseHandler = handler;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
//% blockId=browserEvents_key_isPressed
|
|
256
|
+
//% block="is $this key is pressed"
|
|
257
|
+
//% group="Keyboard"
|
|
258
|
+
//% weight=90
|
|
259
|
+
isPressed() {
|
|
260
|
+
return this._pressed;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
//% blockId=browserEvents_key_pauseUntil
|
|
264
|
+
//% block="pause until $this key is $event"
|
|
265
|
+
//% group="Keyboard"
|
|
266
|
+
//% weight=80
|
|
267
|
+
pauseUntil(event: KeyEvent) {
|
|
268
|
+
control.waitForEvent(event, this.id)
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
addEventListener(event: KeyEvent, handler: () => void) {
|
|
272
|
+
if (event === KeyEvent.Pressed) {
|
|
273
|
+
this.pressListeners.push(handler);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
this.releaseListeners.push(handler);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
removeEventListener(event: KeyEvent, handler: () => void) {
|
|
281
|
+
if (event === KeyEvent.Pressed) {
|
|
282
|
+
this.pressListeners = this.pressListeners.filter(p => p !== handler);
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
this.releaseListeners = this.releaseListeners.filter(p => p !== handler);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
//% fixedInstance whenUsed
|
|
291
|
+
export const A = new KeyButton(Key.A);
|
|
292
|
+
|
|
293
|
+
//% fixedInstance whenUsed
|
|
294
|
+
export const B = new KeyButton(Key.B);
|
|
295
|
+
|
|
296
|
+
//% fixedInstance whenUsed
|
|
297
|
+
export const C = new KeyButton(Key.C);
|
|
298
|
+
|
|
299
|
+
//% fixedInstance whenUsed
|
|
300
|
+
export const D = new KeyButton(Key.D);
|
|
301
|
+
|
|
302
|
+
//% fixedInstance whenUsed
|
|
303
|
+
export const E = new KeyButton(Key.E);
|
|
304
|
+
|
|
305
|
+
//% fixedInstance whenUsed
|
|
306
|
+
export const F = new KeyButton(Key.F);
|
|
307
|
+
|
|
308
|
+
//% fixedInstance whenUsed
|
|
309
|
+
export const G = new KeyButton(Key.G);
|
|
310
|
+
|
|
311
|
+
//% fixedInstance whenUsed
|
|
312
|
+
export const H = new KeyButton(Key.H);
|
|
313
|
+
|
|
314
|
+
//% fixedInstance whenUsed
|
|
315
|
+
export const I = new KeyButton(Key.I);
|
|
316
|
+
|
|
317
|
+
//% fixedInstance whenUsed
|
|
318
|
+
export const J = new KeyButton(Key.J);
|
|
319
|
+
|
|
320
|
+
//% fixedInstance whenUsed
|
|
321
|
+
export const K = new KeyButton(Key.K);
|
|
322
|
+
|
|
323
|
+
//% fixedInstance whenUsed
|
|
324
|
+
export const L = new KeyButton(Key.L);
|
|
325
|
+
|
|
326
|
+
//% fixedInstance whenUsed
|
|
327
|
+
export const M = new KeyButton(Key.M);
|
|
328
|
+
|
|
329
|
+
//% fixedInstance whenUsed
|
|
330
|
+
export const N = new KeyButton(Key.N);
|
|
331
|
+
|
|
332
|
+
//% fixedInstance whenUsed
|
|
333
|
+
export const O = new KeyButton(Key.O);
|
|
334
|
+
|
|
335
|
+
//% fixedInstance whenUsed
|
|
336
|
+
export const P = new KeyButton(Key.P);
|
|
337
|
+
|
|
338
|
+
//% fixedInstance whenUsed
|
|
339
|
+
export const Q = new KeyButton(Key.Q);
|
|
340
|
+
|
|
341
|
+
//% fixedInstance whenUsed
|
|
342
|
+
export const R = new KeyButton(Key.R);
|
|
343
|
+
|
|
344
|
+
//% fixedInstance whenUsed
|
|
345
|
+
export const S = new KeyButton(Key.S);
|
|
346
|
+
|
|
347
|
+
//% fixedInstance whenUsed
|
|
348
|
+
export const T = new KeyButton(Key.T);
|
|
349
|
+
|
|
350
|
+
//% fixedInstance whenUsed
|
|
351
|
+
export const U = new KeyButton(Key.U);
|
|
352
|
+
|
|
353
|
+
//% fixedInstance whenUsed
|
|
354
|
+
export const V = new KeyButton(Key.V);
|
|
355
|
+
|
|
356
|
+
//% fixedInstance whenUsed
|
|
357
|
+
export const W = new KeyButton(Key.W);
|
|
358
|
+
|
|
359
|
+
//% fixedInstance whenUsed
|
|
360
|
+
export const X = new KeyButton(Key.X);
|
|
361
|
+
|
|
362
|
+
//% fixedInstance whenUsed
|
|
363
|
+
export const Y = new KeyButton(Key.Y);
|
|
364
|
+
|
|
365
|
+
//% fixedInstance whenUsed
|
|
366
|
+
export const Z = new KeyButton(Key.Z);
|
|
367
|
+
|
|
368
|
+
//% fixedInstance whenUsed
|
|
369
|
+
export const Zero = new KeyButton(Key.Zero);
|
|
370
|
+
|
|
371
|
+
//% fixedInstance whenUsed
|
|
372
|
+
export const One = new KeyButton(Key.One);
|
|
373
|
+
|
|
374
|
+
//% fixedInstance whenUsed
|
|
375
|
+
export const Two = new KeyButton(Key.Two);
|
|
376
|
+
|
|
377
|
+
//% fixedInstance whenUsed
|
|
378
|
+
export const Three = new KeyButton(Key.Three);
|
|
379
|
+
|
|
380
|
+
//% fixedInstance whenUsed
|
|
381
|
+
export const Four = new KeyButton(Key.Four);
|
|
382
|
+
|
|
383
|
+
//% fixedInstance whenUsed
|
|
384
|
+
export const Five = new KeyButton(Key.Five);
|
|
385
|
+
|
|
386
|
+
//% fixedInstance whenUsed
|
|
387
|
+
export const Six = new KeyButton(Key.Six);
|
|
388
|
+
|
|
389
|
+
//% fixedInstance whenUsed
|
|
390
|
+
export const Seven = new KeyButton(Key.Seven);
|
|
391
|
+
|
|
392
|
+
//% fixedInstance whenUsed
|
|
393
|
+
export const Eight = new KeyButton(Key.Eight);
|
|
394
|
+
|
|
395
|
+
//% fixedInstance whenUsed
|
|
396
|
+
export const Nine = new KeyButton(Key.Nine);
|
|
397
|
+
|
|
398
|
+
//% fixedInstance whenUsed
|
|
399
|
+
export const Shift = new KeyButton(Key.Shift);
|
|
400
|
+
|
|
401
|
+
//% fixedInstance whenUsed
|
|
402
|
+
export const Enter = new KeyButton(Key.Enter);
|
|
403
|
+
|
|
404
|
+
//% fixedInstance whenUsed
|
|
405
|
+
export const CapsLock = new KeyButton(Key.CapsLock);
|
|
406
|
+
|
|
407
|
+
//% fixedInstance whenUsed
|
|
408
|
+
export const Tab = new KeyButton(Key.Tab);
|
|
409
|
+
|
|
410
|
+
//% fixedInstance whenUsed
|
|
411
|
+
export const Control = new KeyButton(Key.Control);
|
|
412
|
+
|
|
413
|
+
//% fixedInstance whenUsed
|
|
414
|
+
export const Meta = new KeyButton(Key.Meta);
|
|
415
|
+
|
|
416
|
+
//% fixedInstance whenUsed
|
|
417
|
+
export const Alt = new KeyButton(Key.Alt);
|
|
418
|
+
|
|
419
|
+
//% fixedInstance whenUsed
|
|
420
|
+
export const ArrowUp = new KeyButton(Key.ArrowUp);
|
|
421
|
+
|
|
422
|
+
//% fixedInstance whenUsed
|
|
423
|
+
export const ArrowDown = new KeyButton(Key.ArrowDown);
|
|
424
|
+
|
|
425
|
+
//% fixedInstance whenUsed
|
|
426
|
+
export const ArrowLeft = new KeyButton(Key.ArrowLeft);
|
|
427
|
+
|
|
428
|
+
//% fixedInstance whenUsed
|
|
429
|
+
export const ArrowRight = new KeyButton(Key.ArrowRight);
|
|
430
|
+
|
|
431
|
+
//% fixedInstance whenUsed
|
|
432
|
+
export const BackTick = new KeyButton(Key.BackTick);
|
|
433
|
+
|
|
434
|
+
//% fixedInstance whenUsed
|
|
435
|
+
export const Hyphen = new KeyButton(Key.Hyphen);
|
|
436
|
+
|
|
437
|
+
//% fixedInstance whenUsed
|
|
438
|
+
export const Equals = new KeyButton(Key.Equals);
|
|
439
|
+
|
|
440
|
+
//% fixedInstance whenUsed
|
|
441
|
+
export const OpenBracket = new KeyButton(Key.OpenBracket);
|
|
442
|
+
|
|
443
|
+
//% fixedInstance whenUsed
|
|
444
|
+
export const CloseBracket = new KeyButton(Key.CloseBracket);
|
|
445
|
+
|
|
446
|
+
//% fixedInstance whenUsed
|
|
447
|
+
export const BackSlash = new KeyButton(Key.BackSlash);
|
|
448
|
+
|
|
449
|
+
//% fixedInstance whenUsed
|
|
450
|
+
export const Space = new KeyButton(Key.Space);
|
|
451
|
+
|
|
452
|
+
//% fixedInstance whenUsed
|
|
453
|
+
export const PageUp = new KeyButton(Key.PageUp);
|
|
454
|
+
|
|
455
|
+
//% fixedInstance whenUsed
|
|
456
|
+
export const SemiColon = new KeyButton(Key.SemiColon);
|
|
457
|
+
|
|
458
|
+
//% fixedInstance whenUsed
|
|
459
|
+
export const Apostrophe = new KeyButton(Key.Apostrophe);
|
|
460
|
+
|
|
461
|
+
//% fixedInstance whenUsed
|
|
462
|
+
export const Comma = new KeyButton(Key.Comma);
|
|
463
|
+
|
|
464
|
+
//% fixedInstance whenUsed
|
|
465
|
+
export const Period = new KeyButton(Key.Period);
|
|
466
|
+
|
|
467
|
+
//% fixedInstance whenUsed
|
|
468
|
+
export const ForwardSlash = new KeyButton(Key.ForwardSlash);
|
|
469
|
+
|
|
470
|
+
//% fixedInstance whenUsed
|
|
471
|
+
export const PageDown = new KeyButton(Key.PageDown);
|
|
472
|
+
|
|
473
|
+
//% fixedInstance whenUsed
|
|
474
|
+
export const End = new KeyButton(Key.End);
|
|
475
|
+
|
|
476
|
+
//% fixedInstance whenUsed
|
|
477
|
+
export const Home = new KeyButton(Key.Home);
|
|
478
|
+
|
|
479
|
+
//% fixedInstance whenUsed
|
|
480
|
+
export const Any = new KeyButton(0);
|
|
481
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "browser-events",
|
|
3
|
+
"description": "A package for interacting with browser-only functionality like keyboard and mouse events",
|
|
4
|
+
"files": [
|
|
5
|
+
"browserEvents.cpp",
|
|
6
|
+
"browserEvents.ts",
|
|
7
|
+
"keyboard.ts",
|
|
8
|
+
"shims.d.ts"
|
|
9
|
+
],
|
|
10
|
+
"public": true,
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"core": "file:../core"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
declare namespace browserEvents {
|
|
2
|
+
//% shim=browserEvents::mouseX
|
|
3
|
+
function mouseX(): number;
|
|
4
|
+
//% shim=browserEvents::mouseY
|
|
5
|
+
function mouseY(): number;
|
|
6
|
+
//% shim=browserEvents::wheelDx
|
|
7
|
+
function wheelDx(): number;
|
|
8
|
+
//% shim=browserEvents::wheelDy
|
|
9
|
+
function wheelDy(): number;
|
|
10
|
+
//% shim=browserEvents::wheelDz
|
|
11
|
+
function wheelDz(): number;
|
|
12
|
+
|
|
13
|
+
}
|