v7
This commit is contained in:
parent
ba54146f4e
commit
06b39604cf
@ -172,6 +172,9 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
const applyPresetState = (preset) => {
|
const applyPresetState = (preset) => {
|
||||||
if (!preset) return;
|
if (!preset) return;
|
||||||
if (controls.angle && preset.angle_deg !== undefined) controls.angle.value = preset.angle_deg;
|
if (controls.angle && preset.angle_deg !== undefined) controls.angle.value = preset.angle_deg;
|
||||||
|
if (controls.backAngle && preset.back_angle !== undefined) controls.backAngle.value = preset.back_angle;
|
||||||
|
if (controls.legAngle && preset.leg_angle !== undefined) controls.legAngle.value = preset.leg_angle;
|
||||||
|
if (controls.headAngle && preset.head_angle !== undefined) controls.headAngle.value = preset.head_angle;
|
||||||
if (controls.intensity && preset.intensity_pct !== undefined) controls.intensity.value = preset.intensity_pct;
|
if (controls.intensity && preset.intensity_pct !== undefined) controls.intensity.value = preset.intensity_pct;
|
||||||
if (controls.pattern && preset.pattern_mode) controls.pattern.value = preset.pattern_mode;
|
if (controls.pattern && preset.pattern_mode) controls.pattern.value = preset.pattern_mode;
|
||||||
if (controls.name && preset.name !== undefined) controls.name.value = preset.name;
|
if (controls.name && preset.name !== undefined) controls.name.value = preset.name;
|
||||||
@ -397,6 +400,9 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
applyPresetState({
|
applyPresetState({
|
||||||
name: button.dataset.name || '',
|
name: button.dataset.name || '',
|
||||||
angle_deg: button.dataset.angle || 0,
|
angle_deg: button.dataset.angle || 0,
|
||||||
|
back_angle: button.dataset.back || 0,
|
||||||
|
leg_angle: button.dataset.leg || 0,
|
||||||
|
head_angle: button.dataset.head || 0,
|
||||||
intensity_pct: button.dataset.intensity || 0,
|
intensity_pct: button.dataset.intensity || 0,
|
||||||
pattern_mode: button.dataset.pattern || 'continuous',
|
pattern_mode: button.dataset.pattern || 'continuous',
|
||||||
notes: button.dataset.notes || ''
|
notes: button.dataset.notes || ''
|
||||||
@ -452,6 +458,46 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
notify(`Disconnected: ${event.gamepad.id}`);
|
notify(`Disconnected: ${event.gamepad.id}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Keyboard Shortcuts
|
||||||
|
document.addEventListener('keydown', (e) => {
|
||||||
|
if (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA' || e.target.tagName === 'SELECT') return;
|
||||||
|
|
||||||
|
const step = e.shiftKey ? 10 : 5;
|
||||||
|
|
||||||
|
switch (e.key.toLowerCase()) {
|
||||||
|
case 'v':
|
||||||
|
runVibration().catch(console.error);
|
||||||
|
break;
|
||||||
|
case 'r':
|
||||||
|
if (ui.resetButton) ui.resetButton.click();
|
||||||
|
break;
|
||||||
|
case 'arrowup':
|
||||||
|
if (controls.angle) {
|
||||||
|
controls.angle.value = Math.min(180, Number(controls.angle.value) + step);
|
||||||
|
updateVisualization();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'arrowdown':
|
||||||
|
if (controls.angle) {
|
||||||
|
controls.angle.value = Math.max(0, Number(controls.angle.value) - step);
|
||||||
|
updateVisualization();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'arrowright':
|
||||||
|
if (controls.intensity) {
|
||||||
|
controls.intensity.value = Math.min(100, Number(controls.intensity.value) + step);
|
||||||
|
updateVisualization();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'arrowleft':
|
||||||
|
if (controls.intensity) {
|
||||||
|
controls.intensity.value = Math.max(0, Number(controls.intensity.value) - step);
|
||||||
|
updateVisualization();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
applyPresetState(appConfig.initialPreset || {});
|
applyPresetState(appConfig.initialPreset || {});
|
||||||
wirePresetButtons();
|
wirePresetButtons();
|
||||||
refreshGamepads();
|
refreshGamepads();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user