como um atalho de teclado é dado ao programa correto?

4

no Ubuntu (ou na maioria das outras distribuições linux), eu poderia usar o atalho ctrl + t para abrir uma nova aba (no firefox ou similar), ou eu poderia usar alt + tab para fazer com que a unidade fosse realçada, ou eu poderia usar alt + ctrl + F < 1-6 > para chegar a outro tty. Que parte do Linux lida e resolve esses atalhos? E se vários programas / processos compartilharem o mesmo atalho, como a prioridade é resolvida?

(Para o último, estou assumindo que isso é relevante somente para programas em diferentes 'níveis', por exemplo, firefox e o script de sessão pode competir, mas o firefox e o cromo nunca competiriam porque eles não deveriam estar respondendo ao mesmo tempo)

    
por funklute 12.01.2015 / 16:56

2 respostas

5

What part of linux handles and resolves these shortcuts?

Na maior parte, aplicativos individuais ou um gerenciador de janelas (WM) / ambiente de desktop (DE). Alguns são capturados e manipulados pelo kernel, como a comutação VT com Cntl-Alt-F [N].

O evento atual se propaga:

  • Do kernel
  • Para o servidor Xorg
  • Para o WM / DE
  • Para o aplicativo

Se for pego e manipulado em qualquer ponto, provavelmente não continuará até o próximo nível.

Se você executar um aplicativo (não-GUI) dentro de um terminal GUI, o terminal da GUI terá precedência sobre ele.

What if several programs/processes share the same shortcut, how is priority resolved?

O WM / DE terá prioridade sobre o aplicativo.

    
por 12.01.2015 / 18:47
4

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.

    
por 12.01.2015 / 18:45