- // ==UserScript==
- // @name Voxiom.io Key and Mouse Tracker // For Lives
- // @namespace http://tampermonkey.net/
- // @version 1.2
- // @description Keyboard Tracker
- // @author Whoami
- // @match *://voxiom.io/*
- // @grant none
- // @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js
- // @require https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js
- // @license MIT
- // ==/UserScript==
-
- (function() {
- 'use strict';
-
- // CSS styles
- const styles = `
- @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600&display=swap');
- body {
- margin: 0;
- padding: 0;
- }
- #initialScreen {
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background-color: black;
- display: flex;
- align-items: center;
- justify-content: center;
- z-index: 1000;
- }
- #initialScreenText {
- font-family: 'Montserrat', sans-serif;
- font-size: 48px;
- color: white;
- cursor: pointer;
- }
- #keyMouseMenu {
- position: fixed;
- top: 50%;
- left: 0;
- transform: translateY(-50%);
- font-family: 'Montserrat', sans-serif;
- font-size: 18px;
- color: white;
- background-color: rgba(0, 0, 0, 0.8);
- padding: 20px;
- border-radius: 10px;
- display: none;
- z-index: 1000;
- }
- #keyboard {
- display: grid;
- grid-template-columns: repeat(14, 30px);
- gap: 5px;
- justify-content: center;
- margin-top: 20px;
- }
- .key {
- width: 30px;
- height: 30px;
- background-color: white;
- color: black;
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: 5px;
- font-size: 12px;
- text-align: center;
- }
- .key.pressed {
- background-color: red;
- }
- `;
-
- // Add styles to the document
- const styleSheet = document.createElement("style");
- styleSheet.type = "text/css";
- styleSheet.innerText = styles;
- document.head.appendChild(styleSheet);
-
- // Create initial screen
- const initialScreen = document.createElement('div');
- initialScreen.id = 'initialScreen';
- const initialScreenText = document.createElement('div');
- initialScreenText.id = 'initialScreenText';
- initialScreenText.innerText = '[L] To Show/Hide Keyboard';
- initialScreen.appendChild(initialScreenText);
- document.body.appendChild(initialScreen);
-
- // Create key and mouse menu
- const keyMouseMenu = document.createElement('div');
- keyMouseMenu.id = 'keyMouseMenu';
- keyMouseMenu.innerHTML = '<div id="keyboard"></div>';
- document.body.appendChild(keyMouseMenu);
-
- // List of keys
- const keys = ['ESC', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10', 'F11', 'F12', 'PRTSC',
- '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 'BACKSPACE',
- 'TAB', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '[', ']', '\\',
- 'CAPSLOCK', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', '\'', 'ENTER',
- 'SHIFT', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', ',', '.', '/', 'SHIFT',
- 'CTRL', 'WIN', 'ALT', 'SPACE', 'ALT', 'WIN', 'MENU', 'CTRL'];
-
- // Add keys to keyboard
- const keyboard = document.getElementById('keyboard');
- keys.forEach(key => {
- const keyDiv = document.createElement('div');
- keyDiv.className = 'key';
- keyDiv.innerText = key;
- keyDiv.dataset.key = key;
- keyboard.appendChild(keyDiv);
- });
-
- // Function to handle key presses
- function handleKeyPress(event) {
- const key = event.key.toUpperCase();
- const keyDiv = [...document.querySelectorAll('.key')].find(k => k.dataset.key === key);
- if (keyDiv) keyDiv.classList.add('pressed');
- }
-
- // Function to handle key releases
- function handleKeyRelease(event) {
- const key = event.key.toUpperCase();
- const keyDiv = [...document.querySelectorAll('.key')].find(k => k.dataset.key === key);
- if (keyDiv) keyDiv.classList.remove('pressed');
- }
-
- // Toggle menu visibility
- function toggleMenu() {
- if (keyMouseMenu.style.display === 'none') {
- keyMouseMenu.style.display = 'block';
- anime({
- targets: '#keyMouseMenu',
- opacity: [0, 1],
- duration: 500,
- easing: 'easeInOutQuad'
- });
- } else {
- anime({
- targets: '#keyMouseMenu',
- opacity: [1, 0],
- duration: 500,
- easing: 'easeInOutQuad',
- complete: function() {
- keyMouseMenu.style.display = 'none';
- }
- });
- }
- }
-
- // Add event listeners
- document.addEventListener('keydown', handleKeyPress);
- document.addEventListener('keyup', handleKeyRelease);
- document.addEventListener('keydown', (event) => {
- if (event.key.toUpperCase() === 'L') toggleMenu();
- });
-
- // Initial screen animation
- initialScreenText.addEventListener('mouseover', () => {
- anime({
- targets: '#initialScreen',
- opacity: [1, 0],
- duration: 6000,
- easing: 'easeInOutQuad',
- complete: function() {
- initialScreen.style.display = 'none';
- }
- });
- });
-
- })();