XPF / docs /js /keyboard.js
niobures's picture
XPF
4a08ba7 verified
/* Grammar Keyboard */
// Parse the keyboard text file for the selected language (uses the same XMLHttpRequest function in translate03.js)
async function get_grammar(keyboard_file) {
if (!keyboard_file) { // ensure file exists
alert("Error: No file is listed for the language");
return;
}
var chars = await get(keyboard_file);
chars = chars.split(",");
return chars;
}
var orthography = [];
// Make keyboard depending on selected/uploaded grammar
async function make_keyboard(language_keyboard) {
document.getElementById("load").style.display = "none";
orthography = await get_grammar(language_keyboard);
document.getElementById("keyboard").style.display = "inline-block";
var keyboard = document.getElementById("keyboard");
for (letter in orthography) {
var key = document.createElement("div");
key.id = letter;
key.innerHTML = orthography[letter];
key.onclick = temp_keyboard;
key.className = "kb";
keyboard.appendChild(key);
}
document.getElementById("msg1").style.display = "flex";
}
// Update input textarea upon letter button clicks (within user interface)
function temp_keyboard() {
letter = this.id;
wchar = orthography[letter];
//document.getElementById("in1").value = document.getElementById("in1").value + wchar;
my_textarea = document.getElementById("in1");
my_value = wchar;
// Add text at cursor position (support for most but not all browsers - Chrome is recommended)
if (my_textarea.selectionStart || my_textarea.selectionStart == '0') {
var start = my_textarea.selectionStart;
var end = my_textarea.selectionEnd;
my_textarea.value = my_textarea.value.substring(0, start)
+ my_value
+ my_textarea.value.substring(end, my_textarea.value.length);
my_textarea.selectionStart = start + my_value.length;
my_textarea.selectionEnd = start + my_value.length;
}
else {
my_textarea.value += my_value; // simply adds character to end of text if cursor position feature is not supported
}
}