mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-09 18:35:32 +00:00
104 lines
No EOL
3 KiB
JavaScript
104 lines
No EOL
3 KiB
JavaScript
// -- BEGIN: Code for controlling the layout-simulation elements --
|
|
|
|
function updateConfig() {
|
|
let layout = document.config.screen;
|
|
let bounds = document.config.bounds;
|
|
let receiver = document.config.receiver;
|
|
let safe = document.config.safeZone;
|
|
|
|
let demoContainer = document.getElementById("demo-container");
|
|
demoContainer.className = layout.value + " " + bounds.value + " " + receiver.value + " " + safe.value;
|
|
}
|
|
|
|
window.addEventListener('load', function(ev) {
|
|
let layoutGroup = document.config.screen;
|
|
let boundsGroup = document.config.bounds;
|
|
let receiverGroup = document.config.receiver;
|
|
let safeGroup = document.config.safeZone;
|
|
|
|
for(entry of layoutGroup) {
|
|
entry.addEventListener('change', updateConfig);
|
|
}
|
|
|
|
for(entry of boundsGroup) {
|
|
entry.addEventListener('change', updateConfig);
|
|
}
|
|
|
|
for(entry of receiverGroup) {
|
|
if(entry.value == 'full') {
|
|
entry.addEventListener('change', function() {
|
|
let topRange = document.getElementById('topOnlyRadio');
|
|
topRange.checked = 'checked';
|
|
updateConfig();
|
|
});
|
|
} else { // Popup will be the 'default' case - we may want to test multiple 'popup' configs.
|
|
entry.addEventListener('change', function() {
|
|
let popupRange = document.getElementById('popupRadio');
|
|
popupRange.checked = 'checked';
|
|
updateConfig();
|
|
});
|
|
}
|
|
}
|
|
|
|
for(entry of safeGroup) {
|
|
entry.addEventListener('change', updateConfig);
|
|
}
|
|
|
|
updateConfig();
|
|
});
|
|
|
|
// END: Layout-simulation setup & handling
|
|
|
|
// START: Gesture-recognizer integration code!
|
|
|
|
// This will hold the main gesture-recognizer instance.
|
|
// Not great standard practice... but this is a development/debugging page, so we want access to it.
|
|
let recognizer;
|
|
|
|
window.addEventListener('load', function() {
|
|
let recognizerConfig = {
|
|
mouseEventRoot: document.body,
|
|
targetRoot: document.getElementById('target-root'),
|
|
maxRoamingBounds: document.getElementById('roaming-bounds'),
|
|
safeBounds: document.getElementById('safe-zone'),
|
|
paddedSafeBounds: document.getElementById('padded-safe-zone')
|
|
};
|
|
|
|
recognizer = new com.keyman.osk.GestureRecognizer(recognizerConfig);
|
|
|
|
let recordingArr = [];
|
|
let logElement = document.getElementById('event-log');
|
|
// Erase any logs from before a page reload.
|
|
logElement.value = '';
|
|
|
|
let logClearButton = document.getElementById('log-clear-button');
|
|
logClearButton.onclick = function() {
|
|
logElement.value = '';
|
|
recordingArr = []; // erase previously-recorded sequences
|
|
}
|
|
|
|
recognizer.on('inputstart', function(input) {
|
|
let touchpoint = input.touchpoints[0];
|
|
recordingArr.push(touchpoint);
|
|
|
|
objectPrinter = function() {
|
|
logElement.value = JSON.stringify(recordingArr, null, 2);
|
|
}
|
|
|
|
objectPrinter();
|
|
|
|
input.on('update', function() {
|
|
objectPrinter();
|
|
});
|
|
|
|
input.on('cancel', function() {
|
|
objectPrinter();
|
|
});
|
|
|
|
input.on('end', function() {
|
|
objectPrinter();
|
|
});
|
|
});
|
|
});
|
|
|
|
// END: Gesture-recognizer integration code.
|