Repository navigation
Expand file tree
/
Copy pathkeybindings.js
More file actions
81 lines (65 loc) · 2.12 KB
/
Copy pathkeybindings.js
File metadata and controls
81 lines (65 loc) · 2.12 KB
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
import { display } from './display.js';
import { hints } from './hints.js';
function toggleFullscreen() {
if (document.fullscreenElement) document.exitFullscreen();
else document.documentElement.requestFullscreen();
}
export function setupControls() {
document.documentElement.addEventListener('mousemove', () => {
hints.show(3000);
});
document.addEventListener('dblclick', () => {
toggleFullscreen();
});
document.addEventListener('keydown', (e) => {
const key = e.key;
const step = e.ctrlKey ? 1 : 0.1;
switch (key) {
case 'f':
toggleFullscreen();
break;
case 'r':
display.reset();
break;
// Brightness
case '=':
case 'ArrowUp':
display.incrementBrightness(step);
break;
case '-':
case 'ArrowDown':
display.incrementBrightness(-step);
break;
// Temperature
case 'ArrowRight':
display.incrementTemperature(step);
break;
case 'ArrowLeft':
display.incrementTemperature(-step);
break;
}
});
let startX, startY, endX, endY;
document.addEventListener('touchstart', (e) => {
startX = e.changedTouches[0].screenX;
startY = e.changedTouches[0].screenY;
});
document.addEventListener('touchend', (e) => {
endX = e.changedTouches[0].screenX;
endY = e.changedTouches[0].screenY;
detectSwipe();
});
function detectSwipe() {
let diffX = endX - startX;
let diffY = endY - startY;
const step = 0.1;
const isVerticalSwipe = Math.abs(diffY) > Math.abs(diffX);
if (isVerticalSwipe) {
if (diffY > 50) display.incrementBrightness(-step);
if (diffY < -50) display.incrementBrightness(step);
} else {
if (diffX > 50) display.incrementTemperature(step);
if (diffX < -50) display.incrementTemperature(-step);
}
}
}