|
Home - Old Man Programmer
| Displaying webapps/vt100/keyboard.js
function type(e)
{
if (e.charCode) {
var ch = String.fromCharCode(e.charCode);
console.log(ch);
terminal.addstr(ch);
}
}
var keymap = {
ArrowUp : "\033[A", ArrowDown : "\033[B", ArrowRight : "\033[C", ArrowLeft: "\033[D",
Backspace : "\b", Tab : "\t", Escape : "\033"
};
function specialtype(e) {
var k = keymap[e.key];
if (k) {
// console.log("special " + k);
terminal.addstr(k);
e.preventDefault();
} else
console.log("uncaught: " + e.key);
e.stopPropagation();
}
function stopselect(e) {
window.alert("Stopping select");
e.preventDefault();
e.stopPropagation();
return false;
}
function docopy(e) {
const selection = document.getSelection();
var src = selection.toString();
var dst = "";
for(var i=0; i < src.length; i++) {
if (src[i] == '\t') continue;
dst += src[i];
}
event.clipboardData.setData('text/plain',dst);
e.preventDefault();
}
function copySelection() {
var sel = document.getSelection();
var tr = sel.getRangeAt(0).cloneContents().children;
console.log(tr);
var s = "";
if (tr[0].tagName == "TR") {
for(var r = 0; r < tr.length; r++) {
var row = "";
for(var c = 0; c < tr[r].cells.length; c++) {
var ch = tr[r].cells[c].innerHTML;
if (ch == " ") ch = " ";
row += ch;
}
var l = row.length;
while(l > 0 && row[l-1] == ' ') l--;
s += row.substr(0,l) + "\n";
}
} else { // TD's not TR's:
for(var c = 0; c < tr.length; c++) {
var ch = tr[c].innerHTML;
if (ch == " ") ch = " ";
s += ch;
}
}
var pre = document.createElement("pre");
pre.style.position = "absolute";
pre.style.top = "-2000px";
pre.innerHTML = s;
document.body.appendChild(pre);
document.getSelection().selectAllChildren(pre);
document.execCommand('copy');
document.body.removeChild(pre);
}
|