From ea6bb2c115de1efd9e712b606e6f53177f3401ff Mon Sep 17 00:00:00 2001 From: Will Scullin Date: Tue, 6 Oct 2020 20:22:44 -0700 Subject: [PATCH] Copy and paste --- js/apple1.js | 13 ++++++++++++- js/canvas1.js | 25 +++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/js/apple1.js b/js/apple1.js index 3753a5b..649ffc1 100644 --- a/js/apple1.js +++ b/js/apple1.js @@ -153,7 +153,7 @@ export function toggleSpeed() } export function setKeyBuffer(text) { - io.setKeyBuffer(text); + io.paste(text); } export function setTurboTape(val) { @@ -395,6 +395,17 @@ document.addEventListener('DOMContentLoaded', function() { window.addEventListener('keydown', _keydown); window.addEventListener('keyup', _keyup); + window.addEventListener('paste', (event) => { + var paste = (event.clipboardData || window.clipboardData).getData('text'); + setKeyBuffer(paste); + event.preventDefault(); + }); + + window.addEventListener('copy', (event) => { + event.clipboardData.setData('text/plain', text.getText()); + event.preventDefault(); + }); + document.querySelector('.overscan').addEventListener('paste', function(event) { io.paste(event.originalEvent.clipboardData().getData('text/plain')); event.preventDefault(); diff --git a/js/canvas1.js b/js/canvas1.js index ddebeaa..9c3498d 100644 --- a/js/canvas1.js +++ b/js/canvas1.js @@ -181,6 +181,31 @@ export function TextPage() _page.data[idx] = 0xff; } }, + getText: function() { + function mapCharCode(charCode) { + charCode &= 0x7F; + if (charCode < 0x20) { + charCode += 0x40; + } + if (charCode >= 0x60) { + charCode -= 0x40; + } + return charCode; + } + + var buffer = '', line, charCode; + var row, col; + for (row = 0; row < 24; row++) { + line = ''; + for (col = 0; col < 40; col++) { + charCode = mapCharCode(_buffer[row][col]); + line += String.fromCharCode(charCode); + } + line = line.trimRight(); + buffer += line + '\n'; + } + return buffer; + }, clear: function canvas_clearScreen() { for (var row = 0; row < 24; row++) { for (var col = 0; col < 40; col++) {