Pense na sua área de trabalho como executando uma variedade de programas sempre , mesmo que eles não tenham janelas, terminais ou sejam exibidos como daemons. A maioria está executando um gerenciador de janelas, talvez várias barras de ferramentas, uma área de trabalho e assim por diante.
Agora vamos ver o que acontece quando uma tecla é pressionada. A pressão da tecla e a liberação da tecla são tratadas separadamente, embora uma biblioteca possa lidar com a combinação delas para o programador. O driver do teclado lida com algumas coisas, como tratar a tecla Shift como um modificador em vez de uma chave discreta. O próprio driver pode capturar algumas combinações de teclas para uso próprio ou pode jogá-las em um programa.
Qual programa consegue? Programas com janelas, como padrão, só são notificados de pressionamentos de tecla quando eles têm foco de entrada. Um programa também pode "pegar" certas chaves para uso próprio. Alt + A aba é capturada pelo Unity, impedindo qualquer outro programa de vê-lo. Ctrl + T é capturado pelo sistema de menu do Firefox, mas somente quando uma janela do Firefox com um menu que deseja saber sobre ele tem foco de entrada.
Então, quem determina quem recebe o quê? Além do foco de entrada, como já mencionei, muitas vezes é o primeiro a chegar, primeiro agarrado. Alt + O Tab é capturado pelo Unity (e muitos outros gerenciadores de janelas), portanto, um programa do usuário raramente pode arrancá-lo. Um usuário final está à mercê dos programas em uso; Se um programa, como vim
, permite que você configure certas combinações de teclas para várias coisas, então é bom ir, contanto que o programa receba o pressionamento de tecla.