Greasy Fork

Greasy Fork is available in English.

Antimisclic

Évitez les clics involontaires lors de l'utilisation de Chess.com

目前为 2024-03-09 提交的版本,查看 最新版本

// ==UserScript==
// @name         Antimisclic
// @namespace    YGL
// @version      1.0
// @description  Évitez les clics involontaires lors de l'utilisation de Chess.com
// @license      Gnu GPL -3.0
// @author       Benjamin Moine
// @match        https://www.chess.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    var detectionDelay = 1000; // Définir le délai de détection par défaut (en millisecondes)
    var audioSrc = ''; // Chemin du fichier audio

    // Fonction pour détecter les glissements de doigts tactiles
    function handleTouchMove(event) {
        var lastTouch = handleTouchMove.lastTouch || {};
        var now = Date.now();
        var timeDiff = now - (lastTouch.time || 0);
        var touch = event.touches[0]; // Prendre la première touche pour simplifier

        // Calculer la distance parcourue depuis le dernier mouvement
        var deltaX = touch.clientX - (lastTouch.x || 0);
        var deltaY = touch.clientY - (lastTouch.y || 0);
        var distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);

        // Calculer la vélocité
        var velocity = distance / timeDiff;

        // Vérifier si la distance parcourue est anormalement grande en un court laps de temps
        // et si la vélocité est également significative
        if (timeDiff > detectionDelay && distance > 50 && velocity > 1.5) {
            // Vérifier si le mouvement est principalement horizontal ou vertical
            var angle = Math.abs(Math.atan2(deltaY, deltaX));

            if (angle < Math.PI / 4 || angle > 3 * Math.PI / 4) {
                // Mouvement principalement horizontal
                console.log("Détection d'un glissement de doigt horizontal !");
                event.preventDefault(); // Empêcher le comportement par défaut (clic)
                // Jouer le son de refus de clic
                if (audioSrc) {
                    playAudio(audioSrc);
                }
            } else {
                // Mouvement principalement vertical
                console.log("Détection d'un glissement de doigt vertical !");
            }
        }

        handleTouchMove.lastTouch = {
            x: touch.clientX,
            y: touch.clientY,
            time: now
        };
    }

    // Fonction pour jouer un fichier audio
    function playAudio(src) {
        var audio = new Audio(src);
        audio.play();
    }

    // Ajouter un gestionnaire d'événements pour les mouvements tactiles sur le plateau
    document.addEventListener('touchmove', handleTouchMove);

    // Ajouter un gestionnaire d'événements pour écouter les combinaisons de touches de raccourci pour paramétrer le son
    document.addEventListener('keydown', function(event) {
        if (event.ctrlKey && event.altKey && event.key === 's') {
            // Demander à l'utilisateur de saisir le lien vers le fichier audio
            var newAudioSrc = prompt("Entrez le lien vers le fichier audio : ", audioSrc);
            if (newAudioSrc && newAudioSrc.trim()) {
                audioSrc = newAudioSrc.trim();
                console.log("Chemin du fichier audio mis à jour : " + audioSrc);
            }
        }
    });
})();