Permitir abrir uma nova aba com Ctrl + T em todos os sites no Firefox

1

No Firefox, certos sites e certos plugins parecem "capturar" a tecla "control", de modo que quando tento abrir uma nova aba usando Ctrl+t , nada acontece - ou pior, acontece algo inesperado.

Exemplos:

  • No site Codecademy, ao editar o código, Ctrl+t não faz nada ou alterna a posição dos dois caracteres ao lado do cursor.
  • Ao visualizar PDFs com o plug-in do Adobe PDF, Ctrl+t não faz nada.

Existe uma maneira de desativar esse "recurso"? Eu gostaria que Ctrl+t sempre "conversasse" com o Firefox!

Editar : Descobri que minha pergunta é muito parecida com as seguintes perguntas:

As respostas a essas perguntas são interessantes e relevantes, mas não forneça um método para desativar combinações como "Ctrl + t". Talvez um script modificado do Greasemonkey seja a solução mais fácil.

Editar 2 - Uma solução parcial O seguinte UserScript ( edit : agora uma resposta) foi principalmente copiado / colado do StackExchange. Para usá-lo, você precisa instalar o GreaseMonkey. O script captura com sucesso Ctrl+t em alguns sites, por exemplo, o Google (- > PopUp "Gotcha" aparece), mas não no site Codecademy.

Além disso, encontrei outra pergunta relacionada a esse assunto: " Como proibir atalhos de teclado roubados por sites no Firefox ". Foi criado em 2010 e o consenso foi: não pode ser feito.

Editar 3 - Feito o trabalho do userscript Eu editei o userscript para que agora ele evite que os javascripts interceptem Ctrl+t , e graças ao JC2k8 eu também encontrei uma solução para plugins (que eu ainda não testei). Combinei as informações e enviei uma resposta - esperarei alguns dias e aceito a resposta com os maiores votos.

    
por Martin J.H. 04.11.2013 / 21:19

3 respostas

1

Para plug-ins que interceptam pressionamentos de tecla : graças à resposta de JC2k8, deparei-me com link onde alguém escreveu um patch para interceptar pressionamentos de tecla "importantes" antes que eles sejam enviados para processos de plug-in. É muito novo e ainda está em avaliação, mas é bom ver que alguém está trabalhando nisso. Eu não testei, mas pode resolver o problema.

Para javascript que intercepta pressionamentos de tecla : finalmente consegui usar meu userscript combinando este script e este script . Eu tenho que admitir que não tenho certeza de como o eventListener tem que ser anexado e porque ele não funcionou anteriormente (veja versões mais antigas da minha questão se você estiver interessado). De qualquer forma, o script a seguir funciona pelo menos no Firefox 17 ESR.

// ==UserScript==
// @name           Disable Ctrl T interceptions
// @description    Stop websites from highjacking keyboard shortcuts
//
// @run-at         document-start
// @include        *
// @grant          none
// ==/UserScript==

// Keycode for 't'. Add more to disable other ctrl+X interceptions
keycodes = [84];  

(window.opera ? document.body : document).addEventListener('keydown', function(e) {
    // alert(e.keyCode ); //uncomment to find more keyCodes
    if (keycodes.indexOf(e.keyCode) != -1 && e.ctrlKey) {
        e.cancelBubble = true;
        e.stopImmediatePropagation();
    // alert("Gotcha!"); //ucomment to check if it's seeing the combo
    }
    return false;
}, !window.opera);
    
por 05.11.2013 / 11:02
1

Você pode capturar a sequência de teclas Ctrl-T no nível do sistema operacional e passá-la para o firefox.

Por exemplo, você pode usar o AutoHotKey para ouvir Ctrl-T e emitir o comando

"C:\Program Files\Mozilla Firefox\firefox.exe" -new-tab about:newtab

Substitua about:newtab por um URL de página da Web real, se preferir. Isso abre uma nova guia na instância existente do firefox. Você deve ser capaz de interceptar a sequência somente quando ff tiver foco, mas ainda assim capturá-la antes que o JavaScript a obtenha.

    
por 04.11.2013 / 22:22
1

Assim que os plugins (Flash, Acrobat Reader, Quicktime,…) estão envolvidos, você está sem sorte. A Mozilla sempre quis corrigir esse bug "consertando" a API do plugin para permitir que plugins enviem de volta chaves "não usadas", mas devido à escala deste trabalho, isso nunca foi feito. Para um longo debate sobre esta questão, você pode dar uma olhada no Bug 78414 no Bugzilla.

    
por 05.11.2013 / 08:56

Tags