// ==UserScript== // @name extremely free speech for gartic.io // @namespace http://tampermonkey.net/ // @version 2026-03-31 // @description lorem ipsum dolor sit amet // @author dowrim // @match *://gartic.io/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @license GPL3 // @downloadURL none // ==/UserScript== (function() { 'use strict'; const homoglyphs = { 'a': 'а', 'c': 'с', 'e': 'е', 'o': 'о', 'p': 'р', 'x': 'х', 'y': 'у', 's': 'ѕ', 'i': 'і', 'j': 'ј', }; document.addEventListener('keydown', (event) => { const inputField = document.querySelector('input[type="text"][name="chat"]'); if (inputField && document.activeElement === inputField && event.key.length === 1) { const char = event.key; const lowerChar = char.toLowerCase(); if (homoglyphs[lowerChar]) { const kirilChar = (char === char.toUpperCase()) ? homoglyphs[lowerChar].toUpperCase() : homoglyphs[lowerChar]; const start = inputField.selectionStart; const end = inputField.selectionEnd; const text = inputField.value; inputField.value = text.slice(0, start) + kirilChar + text.slice(end); inputField.selectionStart = inputField.selectionEnd = start + 1; inputField.dispatchEvent(new Event('input', { bubbles: true })); } } }); })();