Skip to content

Instantly share code, notes, and snippets.

@Shadow0ps
Last active January 20, 2019 04:50
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Shadow0ps/803ae1f5180174fa14dd831661964ef7 to your computer and use it in GitHub Desktop.
Save Shadow0ps/803ae1f5180174fa14dd831661964ef7 to your computer and use it in GitHub Desktop.
// ██████╗ █████╗ ██████╗ ██╗ ██╗███████╗██╗ ██╗██████╗ ██████╗ █████╗ ██████╗ ██████╗ ██╗
// ██╔══██╗██╔══██╗██╔══██╗██║ ██╔╝██╔════╝╚██╗ ██╔╝██╔══██╗██╔═══██╗██╔══██╗██╔══██╗██╔══██╗██║
// ██████╔╝███████║██║ ██║█████╔╝ █████╗ ╚████╔╝ ██████╔╝██║ ██║███████║██████╔╝██║ ██║██║
// ██╔══██╗██╔══██║██║ ██║██╔═██╗ ██╔══╝ ╚██╔╝ ██╔══██╗██║ ██║██╔══██║██╔══██╗██║ ██║╚═╝
// ██████╔╝██║ ██║██████╔╝██║ ██╗███████╗ ██║ ██████╔╝╚██████╔╝██║ ██║██║ ██║██████╔╝██╗
// ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚═╝
// No Donut!
// Built from code by : https://gist.github.com/jiaaro and a twitter post from: https://twitter.com/zackwhittaker/status/1084554101625626624
// Not for malicious use. You assume all responsibility for anything you do with this. Don't be a jerk. If I find out you used this to hurt people.
// Just remember TAKEN. Get what I'm sayin?
// How to test:
// 1. copy gist to text file and save as badkeyboard.js (or whatever you want to name it)
// 2. Open terminal or iterm and go to the directory where you saved the file.
// 2. Run the following command "osascript -l JavaScript badkeyboard.js"
// 3. If you get a prompt just click "Ok" - There are ways around this too but we are testing!
//
// How to run it with Applescript:
// 1. Open "Script Editor" (requires OS X 10.10 Yosemite or greater)
// 2. Change the language from "AppleScript" to "JavaScript"
// 3. Paste the code below.
//
// More info:
// https://developer.apple.com/library/mac/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/index.html
var sys_events = Application("System Events");
// More keycodes can be added. Keycode reference:
// http://www.codemacs.com/coding/applescript/applescript-key-codes-reference.8288271.htm
var key_codes = {
"→": 124,
"←": 123,
"↑": 126,
"↓": 125,
"⏎": 36
};
var modifiers = {
"⌘": "command down",
"^": "control down",
"⌥": "option down",
"⇧": "shift down"
};
function press(hotkey) {
var using = [];
while (hotkey.length > 1) {
if (modifiers[hotkey[0]] == undefined) {
throw new Error(hotkey[0] + " is not a recognized modifier key");
}
using.push(modifiers[hotkey[0]]);
hotkey = hotkey.slice(1);
}
if (key_codes[hotkey] != undefined) {
sys_events.keyCode(key_codes[hotkey], {using: using});
}
else {
sys_events.keystroke(hotkey.toLowerCase(), {using: using});
}
}
function type(text) {
for (var i=0; i < text.length; i++) {
sys_events.keystroke(text[i]);
}
}
function menu_item() {
if (!arguments.length) return;
var process = sys_events.processes.whose({"frontmost": true})[0];
var menu_bar = process.menuBars[0].menuBarItems[arguments[0]];
var menu_item = menu_bar;
for (var i=1; i < arguments.length; i++) {
menu_item = menu_item.menus[0].menuItems[arguments[i]];
}
menu_item.click();
}
////////////////////////////////////////////////////////////
// Example use: Chrome
////////////////////////////////////////////////////////////
var Chrome = Application("Google Chrome");
// Give Chrome the focus
Chrome.activate();
// Give it a second, it's practically magic (literally waits 1 second)
delay(1.0)
// New window:
press("⌘N")
// Another new Window
menu_item("File", "New Window")
// select address bar
press("⌘L")
// enter a url
type("https://revoked.badssl.com")
// press enter and wait for the page to load before doing more stuff
press("⏎")
delay(.5)
// open your favorite bad keyboard site in a new tab
//press("⌘T")
delay(.5) // wait for new tab animation so we can start typing
type("thisisunsafe")
press("⏎")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment