Google, DeepL, And Bing Translate Swap Languages And Copy Translation Hotkeys

Enables Alt + Z to copy translated text and Ctrl + Shift + S to swap languages for Google Translate, DeepL, and Bing Translate

// ==UserScript==
// @name         Google, DeepL, And Bing Translate Swap Languages And Copy Translation Hotkeys
// @author       NWP
// @description  Enables Alt + Z to copy translated text and Ctrl + Shift + S to swap languages for Google Translate, DeepL, and Bing Translate
// @namespace    https://greasyfork.org/users/877912
// @version      0.2
// @license      MIT
// @match        https://translate.google.com/*
// @match        https://www.deepl.com/*/translator*
// @match        https://www.bing.com/translator*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    function clickElement(element) {
        if (element) {
            element.click();
        }
    }

    function handleKeydown(event) {
        // Alt + Z for copying translated text
        if (event.altKey && event.key === 'z') {
            const googleCopyButton = document.querySelector('button[jsname="kImuFf"]');
            clickElement(googleCopyButton);

            const deepLCopyButton = document.querySelector('button[data-testid="translator-target-toolbar-copy"]');
            clickElement(deepLCopyButton);

            const bingCopyButton = document.querySelector('div#tta_copyIcon');
            clickElement(bingCopyButton);
        }

        // Ctrl + Shift + S for swapping languages
        if (event.ctrlKey && event.shiftKey && event.key === 'S') {
            const deepLSwapButton = document.querySelector('button[data-testid="lmt_language_switch"]');
            clickElement(deepLSwapButton);

            const bingSwapButton = document.querySelector('div#tta_revIcon');
            clickElement(bingSwapButton);
        }
    }

    document.addEventListener('keydown', handleKeydown, false);
})();