Skip to content

Instantly share code, notes, and snippets.

@barrychapman
Created September 8, 2025 21:59
Show Gist options
  • Select an option

  • Save barrychapman/234a9ac9623ddeec0f6e3f785b36d2c3 to your computer and use it in GitHub Desktop.

Select an option

Save barrychapman/234a9ac9623ddeec0f6e3f785b36d2c3 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name CodeHSRuse
// @namespace Violentmonkey Scripts
// @match *://codehs.com/*/assignment/*
// @grant none
// @version 1.1
// @author klrin
// @license MIT
// @description 1/25/2024, 9:16:47 AM || this allows you to copy and paste in CodeHS / working as of Feb 1, 24'
// @downloadURL https://update.greasyfork.org/scripts/486240/CodeHSRuse.user.js
// @updateURL https://update.greasyfork.org/scripts/486240/CodeHSRuse.meta.js
// ==/UserScript==
function handlePaste(e, editor) {
var clipboardData, pastedData;
// Stop data actually being pasted into div
e.stopPropagation();
e.preventDefault();
// Get pasted data via clipboard API
clipboardData = e.clipboardData || window.clipboardData;
pastedData = clipboardData.getData('Text');
// Do whatever with pasteddata
editor.insert(pastedData);
}
function fallbackCopyTextToClipboard(text) {
var textArea = document.createElement("textarea");
textArea.value = text;
// Avoid scrolling to bottom
textArea.style.top = "0";
textArea.style.left = "0";
textArea.style.position = "fixed";
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'successful' : 'unsuccessful';
console.log('Fallback: Copying text command was ' + msg);
} catch (err) {
console.error('Fallback: Oops, unable to copy', err);
}
document.body.removeChild(textArea);
}
function copyTextToClipboard(text) {
if (!navigator.clipboard) {
fallbackCopyTextToClipboard(text);
return;
}
navigator.clipboard.writeText(text).then(function() {
console.log('Async: Copying to clipboard was successful!');
}, function(err) {
console.error('Async: Could not copy text: ', err);
});
}
function copyText(editor) {
copyTextToClipboard(editor.getSelectedText())
console.log("Copying "+editor.getSelectedText())
}
window.addEventListener("load", (e) => {
let editorel = document.getElementById("ace-editor")
console.log("Starting the changer.")
let editor = ace.edit("ace-editor");
editor.setTheme("ace/theme/twilight");
document.addEventListener("copy", (e) => {
console.log("RUNNING")
copyText(editor)
}, true)
editorel.addEventListener("copy", (e) => {
console.log("RUNNING")
copyText(editor)
}, true)
window.addEventListener("copy", (e) => {
console.log("RUNNING")
copyText(editor)
}, true)
document.addEventListener("paste", (e) => {handlePaste(e, editor)}, true)
editorel.addEventListener("paste", (e) => {handlePaste(e, editor)}, true)
window.addEventListener("paste", (e) => {handlePaste(e, editor)}, true)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment