This commit is contained in:
Flatlogic Bot 2026-03-27 23:52:52 +00:00
parent ba54146f4e
commit 06b39604cf

View File

@ -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();