敲起来(按照标准键盘布局显示对应位置)

当你在敲击键盘的时候, 按照标准键盘布局的位置,出现对应键位的动画特效

目前為 2017-01-18 提交的版本,檢視 最新版本

// ==UserScript==
// @name          敲起来(按照标准键盘布局显示对应位置)
// @description   当你在敲击键盘的时候, 按照标准键盘布局的位置,出现对应键位的动画特效
// @version       0.3.0
// @author        胡朝旭
// @include       *
// @require       https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js
// @grant         none
// @run-at        document-start
// @namespace         https://gf.qytechs.cn/zh-CN/users/94864-%E8%83%A1%E6%9C%9D%E6%97%AD-rory
// @license           The MIT License (MIT); http://opensource.org/licenses/MIT
// ==/UserScript==

(function ($) {
    let cursor = {
        x: 0,
        y: 0
    };
    let bianju=30;
    let wh={
        w:0,
        h:0
    };
    let keyboardMap = [
        //键位,x坐标,y坐标,高比例,宽比例
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["CANCEL",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["HELP",0,1,1,1],
        ["",0,1,1,1],
        ["BACK SPACE",2,1,1,2],
        ["TAB↹",-11,2,1,1.5],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["CLEAR",0,1,1,1],
        ["↲Enter",2,3,1,2],
        ["ENTER SPECIAL",0,1,1,1],
        ["",0,1,1,1],
        ["⇑Shft",-11,4,1,2],
        ["Ctrl",-11,5,1,1],
        ["Alt",-8.5,5,1,1],
        ["PAUSE",0,1,1,1],
        ["大/小 写",-11,3,1,1.8],
        ["KANA",0,1,1,1],
        ["EISU",0,1,1,1],
        ["JUNJA",0,1,1,1],
        ["FINAL",0,1,1,1],
        ["HANJA",0,1,1,1],
        ["",0,1,1,1],
        ["Esc",-12,1,1,1],
        ["CONVERT",0,1,1,1],
        ["NONCONVERT",0,1,1,1],
        ["ACCEPT",0,1,1,1],
        ["MODECHANGE",0,1,1,1],
        ["空格",-7,5,1,5.5],
        ["PAGE UP",7,1,1,1],
        ["PAGE DOWN",7,2,1,1],
        ["END",6,2,1,1],
        ["HOME",6,1,1,1],
        ["左",5,5,1,1],
        ["上",6,4,1,1],
        ["右",7,5,1,1],
        ["下",6,5,1,1],
        ["SELECT",0,1,1,1],
        ["PRINT",0,1,1,1],
        ["EXECUTE",0,1,1,1],
        ["PRINTSCREEN",0,1,1,1],
        ["INSERT",5,1,1,1],
        ["DELETE",5,2,1,1],
        ["",0,1,1,1],
        ["わ(ワ) を(ヲ)",-1,1,1,1],
        ["ぬ(ヌ)",-10,1,1,1],
        ["ふ(フ)",-9,1,1,1],
        ["あ(ア) あ",-8,1,1,1],
        ["う(ウ) う",-7,1,1,1],
        ["え(エ) え",-6,1,1,1],
        ["お(オ) お",-5,1,1,1],
        ["や(ヤ) や",-4,1,1,1],
        ["ゆ(ユ) ゆ",-3,1,1,1],
        ["よ(ヨ) よ",-2,1,1,1],
        ["COLON",0,1,1,1],
        ["SEMICOLON",0,1,1,1],
        ["LESS THAN",0,1,1,1],
        ["EQUALS",0,1,1,1],
        ["GREATER THAN",0,1,1,1],
        ["QUESTION MARK",0,1,1,1],
        ["AT",0,1,1,1],
        ["ち(チ)",-9.2,3,1,1],
        ["こ(コ)",-4.5,4,1,1],
        ["そ(ソ)",-6.5,4,1,1],
        ["し(シ)",-7.2,3,1,1],
        ["い(イ)",-7.5,2,1,1],
        ["は(ハ)",-6.2,3,1,1],
        ["き(キ)",-5.2,3,1,1],
        ["く(ク)",-4.2,3,1,1],
        ["に(ニ)",-2.5,2,1,1],
        ["ま(マ)",-3.2,3,1,1],
        ["の(ノ)",-2.2,3,1,1],
        ["り(リ)",-1.2,3,1,1],
        ["も(モ)",-2.5,4,1,1],
        ["み(ミ)",-3.5,4,1,1],
        ["ら(ラ)",-1.5,2,1,1],
        ["せ(セ)",-0.5,2,1,1],
        ["た(タ)",-9.5,2,1,1],
        ["す(ス)",-6.5,2,1,1],
        ["と(ト)",-8.2,3,1,1],
        ["か(カ)",-5.5,2,1,1],
        ["な(ナ)",-3.5,2,1,1],
        ["ひ(ヒ)",-5.5,4,1,1],
        ["て(テ)",-8.5,2,1,1],
        ["さ(サ)",-7.5,4,1,1],
        ["ん(ン)",-4.5,2,1,1],
        ["つ(ツ)",-8.5,4,1,1],
        ["OS KEY",-9.5,5,1,1],
        ["",0,1,1,1],
        ["CONTEXT MENU",0,1,1,1],
        ["",0,1,1,1],
        ["SLEEP",0,1,1,1],
        ["NUM 0",9,5,1,2],
        ["NUM 1",9,4,1,1],
        ["NUM 2",10,4,1,1],
        ["NUM 3",11,4,1,1],
        ["NUM 4",9,3,1,1],
        ["NUM 5",10,3,1,1],
        ["NUM 6",11,3,1,1],
        ["NUM 7",9,2,1,1],
        ["NUM 8",10,2,1,1],
        ["NUM 9",11,2,1,1],
        ["×",11,1,1,1],
        ["+",12,2,2,1],
        ["SEPARATOR",0,1,1,1],
        ["-",12,1,1,1],
        [".",11,5,1,1],
        ["÷",10,1,1,1],
        ["F1",-10,1,1,1],
        ["F2",-9,1,1,1],
        ["F3",-8,1,1,1],
        ["F4",-7,1,1,1],
        ["F5",-5.5,1,1,1],
        ["F6",-4.5,1,1,1],
        ["F7",-3.5,1,1,1],
        ["F8",-1,1,1,1],
        ["F9",-1,1,1,1],
        ["F10",0,1,1,1],
        ["F11",1,1,1,1],
        ["F12",2,1,1,1],
        ["F13",0,1,1,1],
        ["F14",0,1,1,1],
        ["F15",0,1,1,1],
        ["F16",0,1,1,1],
        ["F17",0,1,1,1],
        ["F18",0,1,1,1],
        ["F19",0,1,1,1],
        ["F20",0,1,1,1],
        ["F21",0,1,1,1],
        ["F22",0,1,1,1],
        ["F23",0,1,1,1],
        ["F24",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["NUM LOCK",9,1,1,1],
        ["SCROLL LOCK",0,1,1,1],
        ["WIN OEM FJ JISHO",0,1,1,1],
        ["WIN OEM FJ MASSHOU",0,1,1,1],
        ["WIN OEM FJ TOUROKU",0,1,1,1],
        ["WIN OEM FJ LOYA",0,1,1,1],
        ["WIN OEM FJ ROYA",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["CIRCUMFLEX",0,1,1,1],
        ["EXCLAMATION",0,1,1,1],
        ["DOUBLE QUOTE",0,1,1,1],
        ["HASH",0,1,1,1],
        ["DOLLAR",0,1,1,1],
        ["PERCENT",0,1,1,1],
        ["AMPERSAND",0,1,1,1],
        ["UNDERSCORE",0,1,1,1],
        ["OPEN PAREN",0,1,1,1],
        ["CLOSE PAREN",0,1,1,1],
        ["ASTERISK",0,1,1,1],
        ["PLUS",0,1,1,1],
        ["PIPE",0,1,1,1],
        ["HYPHEN MINUS",0,1,1,1],
        ["OPEN CURLY BRACKET",0,1,1,1],
        ["CLOSE CURLY BRACKET",0,1,1,1],
        ["TILDE",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["VOLUME MUTE",0,1,1,1],
        ["VOLUME DOWN",0,1,1,1],
        ["VOLUME UP",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["れ(レ)",-0.2,3,1,1],
        ["へ(ヘ)",1,1,1,1],
        ["ね(ネ)、",-1.5,4,1,1],
        ["ほ(ホ)",0,1,1,1],
        ["る(ゥ)。",-0.5,4,1,1],
        ["め(メ)・",0.5,4,1,1],
        ["ろ(ロ)",-11,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["゛(濁点)",0.5,2,1,1],
        ["む(ム)",2.5,2,1,1.5],
        ["゜(半濁点)",1.5,2,1,1],
        ["け(ケ)",0.8,3,1,1],
        ["",0,1,1,1],
        ["META",0,1,1,1],
        ["ALTGR",0,1,1,1],
        ["",0,1,1,1],
        ["WIN ICO HELP",0,1,1,1],
        ["WIN ICO 00",0,1,1,1],
        ["",0,1,1,1],
        ["WIN ICO CLEAR",0,1,1,1],
        ["",0,1,1,1],
        ["",0,1,1,1],
        ["WIN OEM RESET",0,1,1,1],
        ["WIN OEM JUMP",0,1,1,1],
        ["WIN OEM PA1",0,1,1,1],
        ["WIN OEM PA2",0,1,1,1],
        ["WIN OEM PA3",0,1,1,1],
        ["WIN OEM WSCTRL",0,1,1,1],
        ["WIN OEM CUSEL",0,1,1,1],
        ["WIN OEM ATTN",0,1,1,1],
        ["WIN OEM FINISH",0,1,1,1],
        ["WIN OEM COPY",0,1,1,1],
        ["WIN OEM AUTO",0,1,1,1],
        ["WIN OEM ENLW",0,1,1,1],
        ["WIN OEM BACKTAB",0,1,1,1],
        ["ATTN",0,1,1,1],
        ["CRSEL",0,1,1,1],
        ["EXSEL",0,1,1,1],
        ["EREOF",0,1,1,1],
        ["PLAY",0,1,1,1],
        ["ZOOM",0,1,1,1],
        ["",0,1,1,1],
        ["PA1",0,1,1,1],
        ["WIN OEM CLEAR",0,1,1,1],
        ["",0,1,1,1,0]
    ];

    let mouseMap = [
        ["左键",-1.5,-1,1,1],
        ["中键",-0.5,-1,1,1],
        ["右键",0.5,-1,1,1]
    ];

    function createEle({key, color = '#555', pageX, pageY}) {
        let $span = $(`<span>${key}</span>`)
        .css({
            textalign:"right",
            position: "absolute",
            zIndex: 999999999,
            top: pageY + "px",
            left: pageX + "px",
            display: "inline-block",
            fontSize: bianju/3,
            height:wh.h,
            width:wh.w,
            color: color,
            backgroundColor: "#fcfcfc",
            border: "solid 1px #ccc",
            borderBottomColor: "#bbb",
            borderRadius: "5px",
            boxShadow: "inset 0 -1px 0 #bbb"
        }).appendTo(document.body);

        setTimeout(function () {
            $span.animate({
                opacity: 0,
                top: "-=20"
            }, 1500, function () {
                $span.remove();
                $span = null;
            })
        }, 500);
    }

    function stringToColor(str) {
        let hash = 0;
        for (let i = 0; i < str.length; i++) {
            hash = str.charCodeAt(i) + ((hash << 5) - hash);
        }
        let colour = '#';
        for (let x = 0; x < 3; x++) {
            let value = (hash >> (x * 8)) & 0xFF;
            colour += ('00' + value.toString(16)).substr(-2);
        }
        return colour;
    }
    // record coordinate
    $(window).on('mousemove', function (event) {
        event = event || window.event;
        cursor.x = event.pageX;
        cursor.y = event.pageY;
    });

    $(window).on('keyup', function (event) {
        wh.w=bianju*keyboardMap[event.keyCode][4];
        wh.h=bianju*keyboardMap[event.keyCode][3];
        createEle({
            key: keyboardMap[event.keyCode][0],
            color: stringToColor((event.keyCode + event.key).repeat(2)),
            pageX: cursor.x+keyboardMap[event.keyCode][1]*bianju+(keyboardMap[event.keyCode][1]+0.5)*5,
            pageY: cursor.y+keyboardMap[event.keyCode][2]*(bianju+5)

        });      
    });



    $(window).mousedown(function (event) {
        let key = mouseMap[event.which-1][0];
        wh.w=bianju*mouseMap[event.which-1][4];
        wh.h=bianju*mouseMap[event.which-1][3];
        createEle({
            key: key,
            color: stringToColor(key),
            pageX: cursor.x +mouseMap[event.which-1][1]*bianju+(mouseMap[event.which-1][1]+0.5)*5,
            pageY: cursor.y+mouseMap[event.which-1][2]*(bianju+5)
        });

    });

})(window.jQuery.noConflict(true));

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址