Last active
June 17, 2020 01:58
-
-
Save falconscript/08b77853e91b3df3c8be0e0509ca9739 to your computer and use it in GitHub Desktop.
Some custom fonts for discord
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// FalconScript - DISCORD FONTS | |
// These are just whatever. Pretty funny though | |
// Open Chrome Console (CTRL+Shift+i), then paste entire script and hit enter. | |
// Afterwards, type messages into a textbox. Hit the \ or | key to convert it to the new font! | |
let FONTS = { | |
"LIT": { SPACE_REPLACEMENT: '🔥', ALTERNATE_BOLD: true, BLACKLIGHTING: true }, | |
"FLASHY_WORDS": { SPACE_REPLACEMENT: '\\✨', ALTERNATE_BOLD: true, BLACKLIGHTING: false, } | |
}; | |
let TRIGGER_CHARS = { | |
'\\': "FLASHY_WORDS", // is just the \ char | |
'|': 'LIT', | |
}; | |
window.ISSHIFTDOWN = false; | |
document.onkeydown = (e) => { if (e.keyCode == 16) { window.ISSHIFTDOWN = true; }}; | |
document.onkeyup = (e) => { if (e.keyCode == 16) { window.ISSHIFTDOWN = false; }}; | |
let applyFontToString = (str, FONT) => { | |
var val = '', count = 0; | |
for (var i = 0; i < str.length; i++) { | |
if (str[i] == '*') { | |
continue; | |
} else if (str[i] == ' ') { | |
val += str[i]; | |
} else { | |
if (FONT.BLACKLIGHTING) { | |
val += '`' + str[i] + '`' + (FONT.ALTERNATE_BOLD ? '**' : ''); | |
} else { | |
val += str[i] + (FONT.ALTERNATE_BOLD ? '**' : ''); | |
} | |
count++; | |
} | |
} | |
if (count % 2 == 1 && count > 2 && FONT.ALTERNATE_BOLD) { | |
let splits = val.split('**'); | |
splits[splits.length - 2] += splits.pop(); | |
val = splits.join('**'); | |
} | |
val = val.replace(/\ /g, FONT.SPACE_REPLACEMENT); | |
//e.preventDefault(); e.stopPropagation(); // don't do, skips discord listeners | |
return val; | |
} | |
let changeAllTextboxFonts = () => { | |
//var els = document.getElementsByTagName('textarea'); | |
let textboxElements = document.querySelectorAll('*[role="textbox"]'); | |
textboxElements.forEach(el => { | |
let spansInEl = el.querySelectorAll("span"); | |
let lowestSpanInEl = Array.prototype.slice.call(spansInEl, -1)[0]; // Get span at end of tree, (spans within spans) | |
el.onkeydown = function (e) { | |
//setTimeout(() => { // delay text change 15ms to defer past discord events | |
let char = getCharFromKeyCodeEvent(e); | |
console.log(`[D] keypress for '${el.className}':`, e.keyCode, char); | |
if ([8, 37, 38, 39, 40].indexOf(e.keyCode) != -1) return; | |
// change font text if triggered | |
if (char in TRIGGER_CHARS) { | |
let triggered_font = FONTS[TRIGGER_CHARS[char]]; | |
let oldText = lowestSpanInEl.textContent; | |
let newText = applyFontToString(oldText, triggered_font); | |
// set modified text | |
lowestSpanInEl.textContent = newText; //.replace(char, ''); // strip activation char | |
} | |
//}, 15); | |
}; | |
}); | |
} | |
// set to run every second to ensure new textareas get the listeners. | |
// yeah I know a delegate would be better | |
setInterval(changeAllTextboxFonts, 1000); | |
// https://jsfiddle.net/5hhu896g/1/ | |
// https://stackoverflow.com/questions/56129928/how-to-select-the-last-child-inside-the-tree-using-jquery | |
// Must pass e as {keyCode: #, shiftKey: true/false } (or native keydown/keyup e event) | |
let getCharFromKeyCodeEvent = (e) => { | |
let iCol = 0; | |
if (e.shiftKey) { | |
iCol = 1; | |
} | |
let ch = keyboardCharMap[e.keyCode][iCol]; | |
if (ch!= "") { | |
return ch; | |
} else { | |
return keyboardNameMap[e.keyCode]; // usually non-printable | |
} | |
}; | |
// names of known key codes (0-255) | |
let keyboardNameMap = [ | |
"", // [0] | |
"", // [1] | |
"", // [2] | |
"CANCEL", // [3] | |
"", // [4] | |
"", // [5] | |
"HELP", // [6] | |
"", // [7] | |
"BACK_SPACE", // [8] | |
"TAB", // [9] | |
"", // [10] | |
"", // [11] | |
"CLEAR", // [12] | |
"ENTER", // [13] | |
"ENTER_SPECIAL", // [14] | |
"", // [15] | |
"SHIFT", // [16] | |
"CONTROL", // [17] | |
"ALT", // [18] | |
"PAUSE", // [19] | |
"CAPS_LOCK", // [20] | |
"KANA", // [21] | |
"EISU", // [22] | |
"JUNJA", // [23] | |
"FINAL", // [24] | |
"HANJA", // [25] | |
"", // [26] | |
"ESCAPE", // [27] | |
"CONVERT", // [28] | |
"NONCONVERT", // [29] | |
"ACCEPT", // [30] | |
"MODECHANGE", // [31] | |
"SPACE", // [32] | |
"PAGE_UP", // [33] | |
"PAGE_DOWN", // [34] | |
"END", // [35] | |
"HOME", // [36] | |
"LEFT", // [37] | |
"UP", // [38] | |
"RIGHT", // [39] | |
"DOWN", // [40] | |
"SELECT", // [41] | |
"PRINT", // [42] | |
"EXECUTE", // [43] | |
"PRINTSCREEN", // [44] | |
"INSERT", // [45] | |
"DELETE", // [46] | |
"", // [47] | |
"0", // [48] | |
"1", // [49] | |
"2", // [50] | |
"3", // [51] | |
"4", // [52] | |
"5", // [53] | |
"6", // [54] | |
"7", // [55] | |
"8", // [56] | |
"9", // [57] | |
"COLON", // [58] | |
"SEMICOLON", // [59] | |
"LESS_THAN", // [60] | |
"EQUALS", // [61] | |
"GREATER_THAN", // [62] | |
"QUESTION_MARK", // [63] | |
"AT", // [64] | |
"A", // [65] | |
"B", // [66] | |
"C", // [67] | |
"D", // [68] | |
"E", // [69] | |
"F", // [70] | |
"G", // [71] | |
"H", // [72] | |
"I", // [73] | |
"J", // [74] | |
"K", // [75] | |
"L", // [76] | |
"M", // [77] | |
"N", // [78] | |
"O", // [79] | |
"P", // [80] | |
"Q", // [81] | |
"R", // [82] | |
"S", // [83] | |
"T", // [84] | |
"U", // [85] | |
"V", // [86] | |
"W", // [87] | |
"X", // [88] | |
"Y", // [89] | |
"Z", // [90] | |
"OS_KEY", // [91] Windows Key (Windows) or Command Key (Mac) | |
"", // [92] | |
"CONTEXT_MENU", // [93] | |
"", // [94] | |
"SLEEP", // [95] | |
"NUMPAD0", // [96] | |
"NUMPAD1", // [97] | |
"NUMPAD2", // [98] | |
"NUMPAD3", // [99] | |
"NUMPAD4", // [100] | |
"NUMPAD5", // [101] | |
"NUMPAD6", // [102] | |
"NUMPAD7", // [103] | |
"NUMPAD8", // [104] | |
"NUMPAD9", // [105] | |
"MULTIPLY", // [106] | |
"ADD", // [107] | |
"SEPARATOR", // [108] | |
"SUBTRACT", // [109] | |
"DECIMAL", // [110] | |
"DIVIDE", // [111] | |
"F1", // [112] | |
"F2", // [113] | |
"F3", // [114] | |
"F4", // [115] | |
"F5", // [116] | |
"F6", // [117] | |
"F7", // [118] | |
"F8", // [119] | |
"F9", // [120] | |
"F10", // [121] | |
"F11", // [122] | |
"F12", // [123] | |
"F13", // [124] | |
"F14", // [125] | |
"F15", // [126] | |
"F16", // [127] | |
"F17", // [128] | |
"F18", // [129] | |
"F19", // [130] | |
"F20", // [131] | |
"F21", // [132] | |
"F22", // [133] | |
"F23", // [134] | |
"F24", // [135] | |
"", // [136] | |
"", // [137] | |
"", // [138] | |
"", // [139] | |
"", // [140] | |
"", // [141] | |
"", // [142] | |
"", // [143] | |
"NUM_LOCK", // [144] | |
"SCROLL_LOCK", // [145] | |
"WIN_OEM_FJ_JISHO", // [146] | |
"WIN_OEM_FJ_MASSHOU", // [147] | |
"WIN_OEM_FJ_TOUROKU", // [148] | |
"WIN_OEM_FJ_LOYA", // [149] | |
"WIN_OEM_FJ_ROYA", // [150] | |
"", // [151] | |
"", // [152] | |
"", // [153] | |
"", // [154] | |
"", // [155] | |
"", // [156] | |
"", // [157] | |
"", // [158] | |
"", // [159] | |
"CIRCUMFLEX", // [160] | |
"EXCLAMATION", // [161] | |
"DOUBLE_QUOTE", // [162] | |
"HASH", // [163] | |
"DOLLAR", // [164] | |
"PERCENT", // [165] | |
"AMPERSAND", // [166] | |
"UNDERSCORE", // [167] | |
"OPEN_PAREN", // [168] | |
"CLOSE_PAREN", // [169] | |
"ASTERISK", // [170] | |
"PLUS", // [171] | |
"PIPE", // [172] | |
"HYPHEN_MINUS", // [173] | |
"OPEN_CURLY_BRACKET", // [174] | |
"CLOSE_CURLY_BRACKET", // [175] | |
"TILDE", // [176] | |
"", // [177] | |
"", // [178] | |
"", // [179] | |
"", // [180] | |
"VOLUME_MUTE", // [181] | |
"VOLUME_DOWN", // [182] | |
"VOLUME_UP", // [183] | |
"", // [184] | |
"", // [185] | |
"SEMICOLON", // [186] | |
"EQUALS", // [187] | |
"COMMA", // [188] | |
"MINUS", // [189] | |
"PERIOD", // [190] | |
"SLASH", // [191] | |
"BACK_QUOTE", // [192] | |
"", // [193] | |
"", // [194] | |
"", // [195] | |
"", // [196] | |
"", // [197] | |
"", // [198] | |
"", // [199] | |
"", // [200] | |
"", // [201] | |
"", // [202] | |
"", // [203] | |
"", // [204] | |
"", // [205] | |
"", // [206] | |
"", // [207] | |
"", // [208] | |
"", // [209] | |
"", // [210] | |
"", // [211] | |
"", // [212] | |
"", // [213] | |
"", // [214] | |
"", // [215] | |
"", // [216] | |
"", // [217] | |
"", // [218] | |
"OPEN_BRACKET", // [219] | |
"BACK_SLASH", // [220] | |
"CLOSE_BRACKET", // [221] | |
"QUOTE", // [222] | |
"", // [223] | |
"META", // [224] | |
"ALTGR", // [225] | |
"", // [226] | |
"WIN_ICO_HELP", // [227] | |
"WIN_ICO_00", // [228] | |
"", // [229] | |
"WIN_ICO_CLEAR", // [230] | |
"", // [231] | |
"", // [232] | |
"WIN_OEM_RESET", // [233] | |
"WIN_OEM_JUMP", // [234] | |
"WIN_OEM_PA1", // [235] | |
"WIN_OEM_PA2", // [236] | |
"WIN_OEM_PA3", // [237] | |
"WIN_OEM_WSCTRL", // [238] | |
"WIN_OEM_CUSEL", // [239] | |
"WIN_OEM_ATTN", // [240] | |
"WIN_OEM_FINISH", // [241] | |
"WIN_OEM_COPY", // [242] | |
"WIN_OEM_AUTO", // [243] | |
"WIN_OEM_ENLW", // [244] | |
"WIN_OEM_BACKTAB", // [245] | |
"ATTN", // [246] | |
"CRSEL", // [247] | |
"EXSEL", // [248] | |
"EREOF", // [249] | |
"PLAY", // [250] | |
"ZOOM", // [251] | |
"", // [252] | |
"PA1", // [253] | |
"WIN_OEM_CLEAR", // [254] | |
"" // [255] | |
]; | |
// This has the UnShifted and Shifted characters that each key maps to | |
// Ones that are to be ignored for character input are empty. | |
let keyboardCharMap = [ | |
["",""], // [0] | |
["",""], // [1] | |
["",""], // [2] | |
["",""], // [3] | |
["",""], // [4] | |
["",""], // [5] | |
["",""], // [6] | |
["",""], // [7] | |
["",""], // [8] | |
["",""], // [9] | |
["", ""], // [10] | |
["",""], // [11] | |
["",""], // [12] | |
["\r", "\r"], // [13] - MOST control characters are ignored. This one (Carriage Return, or "Enter") is significant! | |
["",""], // [14] | |
["",""], // [15] | |
["",""], // [16] | |
["",""], // [17] | |
["",""], // [18] | |
["",""], // [19] | |
["",""], // [20] | |
["",""], // [21] | |
["",""], // [22] | |
["",""], // [23] | |
["",""], // [24] | |
["",""], // [25] | |
["",""], // [26] | |
["",""], // [27] | |
["",""], // [28] | |
["",""], // [29] | |
["",""], // [30] | |
["",""], // [31] | |
[" "," "], // [32] // SPACE! Don't "clean it up" and remove the space! | |
["",""], // [33] | |
["",""], // [34] | |
["",""], // [35] | |
["",""], // [36] | |
["",""], // [37] | |
["",""], // [38] | |
["",""], // [39] | |
["",""], // [40] | |
["",""], // [41] | |
["",""], // [42] | |
["",""], // [43] | |
["",""], // [44] | |
["",""], // [45] | |
["",""], // [46] | |
["",""], // [47] | |
["0",")"], // [48] | |
["1","!"], // [49] | |
["2","@"], // [50] | |
["3","#"], // [51] | |
["4","$"], // [52] | |
["5","%"], // [53] | |
["6","^"], // [54] | |
["7","&"], // [55] | |
["8","*"], // [56] | |
["9","("], // [57] | |
["",""], // [58] | |
[";",":"], // [59] | |
["<",""], // [60] | |
["=",""], // [61] | |
[">",""], // [62] | |
["?",""], // [63] shifted; else "/" | |
["",""], // [64] | |
["a","A"], // [65] | |
["b","B"], // [66] | |
["c","C"], // [67] | |
["d","D"], // [68] | |
["e","E"], // [69] | |
["f","F"], // [70] | |
["g","G"], // [71] | |
["h","H"], // [72] | |
["i","I"], // [73] | |
["j","J"], // [74] | |
["k","K"], // [75] | |
["l","L"], // [76] | |
["m","M"], // [77] | |
["n","N"], // [78] | |
["o","O"], // [79] | |
["p","P"], // [80] | |
["q","Q"], // [81] | |
["r","R"], // [82] | |
["s","S"], // [83] | |
["t","T"], // [84] | |
["u","U"], // [85] | |
["v","V"], // [86] | |
["w","W"], // [87] | |
["x","X"], // [88] | |
["y","Y"], // [89] | |
["z","Z"], // [90] | |
["",""], // [91] Windows Key (Windows) or Command Key (Mac) | |
["",""], // [92] | |
["",""], // [93] | |
["",""], // [94] | |
["",""], // [95] | |
// Number Keypad Entries... | |
["0",""], // [96] | |
["1",""], // [97] | |
["2",""], // [98] | |
["3",""], // [99] | |
["4",""], // [100] | |
["5",""], // [101] | |
["6",""], // [102] | |
["7",""], // [103] | |
["8",""], // [104] | |
["9",""], // [105] | |
["*",""], // [106] | |
["+",""], // [107] | |
["",""], // [108] | |
["-",""], // [109] | |
[".",""], // [110] | |
["/",""], // [111] | |
["",""], // [112] | |
["",""], // [113] | |
["",""], // [114] | |
["",""], // [115] | |
["",""], // [116] | |
["",""], // [117] | |
["",""], // [118] | |
["",""], // [119] | |
["",""], // [120] | |
["",""], // [121] | |
["",""], // [122] | |
["",""], // [123] | |
["",""], // [124] | |
["",""], // [125] | |
["",""], // [126] | |
["",""], // [127] | |
["",""], // [128] | |
["",""], // [129] | |
["",""], // [130] | |
["",""], // [131] | |
["",""], // [132] | |
["",""], // [133] | |
["",""], // [134] | |
["",""], // [135] | |
["",""], // [136] | |
["",""], // [137] | |
["",""], // [138] | |
["",""], // [139] | |
["",""], // [140] | |
["",""], // [141] | |
["",""], // [142] | |
["",""], // [143] | |
["",""], // [144] | |
["",""], // [145] | |
["",""], // [146] | |
["",""], // [147] | |
["",""], // [148] | |
["",""], // [149] | |
["",""], // [150] | |
["",""], // [151] | |
["",""], // [152] | |
["",""], // [153] | |
["",""], // [154] | |
["",""], // [155] | |
["",""], // [156] | |
["",""], // [157] | |
["",""], // [158] | |
["",""], // [159] | |
["",""], // [160] | |
["",""], // [161] | |
["",""], // [162] | |
["",""], // [163] | |
["",""], // [164] | |
["",""], // [165] | |
["",""], // [166] | |
["",""], // [167] | |
["",""], // [168] | |
["",""], // [169] | |
["",""], // [170] | |
["",""], // [171] | |
["",""], // [172] | |
["",""], // [173] | |
["",""], // [174] | |
["",""], // [175] | |
["",""], // [176] | |
["",""], // [177] | |
["",""], // [178] | |
["",""], // [179] | |
["",""], // [180] | |
["",""], // [181] | |
["",""], // [182] | |
["",""], // [183] | |
["",""], // [184] | |
["",""], // [185] | |
["",""], // [186] | |
["=","+"], // [187] | |
[",","<"], // [188] | |
["-","_"], // [189] | |
[".",">"], // [190] | |
["/","?"], // [191] | |
["`","~"], // [192] | |
["",""], // [193] | |
["",""], // [194] | |
["",""], // [195] | |
["",""], // [196] | |
["",""], // [197] | |
["",""], // [198] | |
["",""], // [199] | |
["",""], // [200] | |
["",""], // [201] | |
["",""], // [202] | |
["",""], // [203] | |
["",""], // [204] | |
["",""], // [205] | |
["",""], // [206] | |
["",""], // [207] | |
["",""], // [208] | |
["",""], // [209] | |
["",""], // [210] | |
["",""], // [211] | |
["",""], // [212] | |
["",""], // [213] | |
["",""], // [214] | |
["",""], // [215] | |
["",""], // [216] | |
["",""], // [217] | |
["",""], // [218] | |
["[","{"], // [219] | |
["\\","|"], // [220] | |
["]","}"], // [221] | |
["'","\""], // [222] | |
["",""], // [223] | |
["",""], // [224] | |
["",""], // [225] | |
["",""], // [226] | |
["",""], // [227] | |
["",""], // [228] | |
["",""], // [229] | |
["",""], // [230] | |
["",""], // [231] | |
["",""], // [232] | |
["",""], // [233] | |
["",""], // [234] | |
["",""], // [235] | |
["",""], // [236] | |
["",""], // [237] | |
["",""], // [238] | |
["",""], // [239] | |
["",""], // [240] | |
["",""], // [241] | |
["",""], // [242] | |
["",""], // [243] | |
["",""], // [244] | |
["",""], // [245] | |
["",""], // [246] | |
["",""], // [247] | |
["",""], // [248] | |
["",""], // [249] | |
["",""], // [250] | |
["",""], // [251] | |
["",""], // [252] | |
["",""], // [253] | |
["",""], // [254] | |
["",""] // [255] | |
]; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment