您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Modify keymap layout by replacing keys, works with keymap next
您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
- // ==UserScript==
- // @name Keymap Overlay For Monkeytype
- // @namespace http://tampermonkey.net/
- // @version 0.2
- // @description Modify keymap layout by replacing keys, works with keymap next
- // @author Pira
- // @match https://monkeytype.com/
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- const keyMapping = {
- q: "q",
- w: "w",
- e: "e",
- r: "r",
- t: "t",
- y: "y",
- u: "u",
- i: "i",
- o: "o",
- p: "p",
- "[": "[",
- "]": "]",
- a: "a",
- s: "s",
- d: "d",
- f: "f",
- g: "g",
- h: "h",
- j: "j",
- k: "k",
- l: "l",
- ";": ";",
- "'": "'",
- z: "z",
- x: "x",
- c: "c",
- v: "v",
- b: "b",
- n: "n",
- m: "m",
- ',': ",",
- '.': ".",
- '/': "/"
- };
- async function modifyKeymap() {
- const keys = document.querySelectorAll('.keymapKey');
- const updatedMapping = {};
- keys.forEach(function(key) {
- const letter = key.querySelector('.letter');
- const currentKey = letter.textContent.toLowerCase();
- const newKey = keyMapping[currentKey];
- if (currentKey === ',<' && keyMapping[currentKey]) {
- letter.textContent = keyMapping[currentKey];}
- if (newKey) {
- const tempValue = letter.textContent;
- letter.textContent = newKey;
- key.setAttribute('data-key', newKey.toLowerCase() + newKey.toUpperCase());
- updatedMapping[newKey.toLowerCase()] = currentKey;
- } else {
- updatedMapping[currentKey] = currentKey;
- }
- });
- Object.assign(keyMapping, updatedMapping);
- }
- function updateActiveKey() {
- const activeKeyElement = document.querySelector('.activeKey');
- const activeKey = activeKeyElement.textContent.toLowerCase();
- const mappedKey = keyMapping[activeKey];
- if (mappedKey) {
- activeKeyElement.textContent = mappedKey.toUpperCase();
- }
- }
- // Right-click event listener
- window.addEventListener("contextmenu", async function(event) {
- event.preventDefault();
- // Modify the keymap
- await modifyKeymap();
- // Update the active key
- updateActiveKey();
- });
- })();