Teclas

A função do teclado pode ser amplamente personalizada no Eclipse. No Eclipse, pressionamentos e seqüências de teclas são atribuídos para chamar comandos específicos.

Pressionamentos, seqüências e ligações de teclas

'key stroke' é o pressionamento de uma tecla, enquanto opcionalmente mantém-se pressionada uma ou mais teclas modificadoras: Ctrl, Alt (Option no Macintosh), Shift ou Command (somente no Macintosh.) Por exemplo, pressionar Ctrl e, em seguida, pressionar A, equivale ao key stroke Ctrl+A. O pressionamento das teclas modificadoras em si não constituem key strokes.

'key sequence' é uma ou mais teclas sendo pressionadas. Tradicionalmente, os emacs atribuíram duas ou três seqüências de teclas a comandos específicos. Por exemplo, a seqüência de teclas normais Fechar Tudo nos emacs é Ctrl+X Ctrl+C. Para digitar essa seqüência de teclas, pressione Ctrl+X seguido por Ctrl+C. O Eclipse suporta seqüências de teclas de comprimento arbitrário.

'key binding' é a atribuição de uma seqüência de teclas a um comando.

Configurações

'configuration' é um conjunto de ligações de teclas. O Eclipse inclui duas configurações:

A configuração Padrão contém um conjunto geral de ligações de teclas, em muitos casos reconhecíveis pelos usuários como seqüências de teclas tradicionais. Por exemplo, Ctrl+A é atribuído a Selecionar Tudo, Ctrl+S é atribuído a Salvar etc.

A configuração Emacs contém um conjunto de ligações de teclas familiares aos usuários de emacs. Por exemplo, Ctrl+X H é atribuído a Selecionar Tudo, Ctrl+X S é atribuído a Salvar etc.

É importante entender por que a configuração Emacs diz ser 'extends Standard'. A configuração Emacs não é um conjunto completo de ligações de teclas como a configuração Padrão. Mais propriamente, ela apropria-se da configuração Padrão, sempre que possível, somente definindo ligações de teclas explícitas no estilo emacs, em que variam conforme a configuração Padrão. Normalmente somente comandos bem conhecidos como Selecionar Tudo, Salvar etc. possuem seqüências de teclas emacs associadas a eles.

O usuário decide qual configuração lhe é mais conveniente alterando a definição 'Configuração Ativa' na página de preferência de teclas. Se o usuário optar pela configuração Padrão, as ligações de teclas Emacs serão ignoradas. Se o usuário optar pela configuração Emacs, atribuições de seqüências de teclas explícitas estilo emacs terão precedência sobre qualquer atribuição conflitante na configuração Padrão.

Escopos

Ligações de teclas podem variar com base no contexto atual do Eclipse.

Às vezes, a parte ativa poderá ser um editor de arquivo java, por exemplo, em que um conjunto diferente de atribuições de seqüências de teclas pode ser mais apropriado do que se a parte ativa fosse um editor de arquivo html. Como um exemplo específico, normalmente Ctrl+B é atribuído a Compilação em um contexto de edição de arquivo java, enquanto Ctrl+B é atribuído a Tornar o Texto em Negrito em um contexto de edição de arquivo html. Esse contexto é chamado de 'escopo' e é determinado pela parte ativa. Se a parte ativa não escolher um escopo específico, o workbench definirá o escopo ativo como Global.

O Eclipse inclui três diferentes escopos. São eles:

Muito semelhantes às configurações, os escopos podem estender-se a outros escopos. Por exemplo, o escopo Editor Java apropria-se das ligações de teclas do escopo Editor de Texto, que por sua vez apropria-se das ligações de teclas do escopo Global.

Plataforma e Localidade

As ligações de teclas também variam conforme a plataforma e a localidade. Na plataforma Macintosh, Command+S é atribuído a Salvar, em vez do usual Ctrl+S. Nas localidades do chinês (zh), Alt+/ é atribuído a Assistente de Conteúdo, em vez do usual Ctrl+Space.

A plataforma e a localidade atuais são determinadas quando o Eclipse é iniciado e não variam no curso de uma instância do Eclipse.

Personalizando Ligações de Teclas

Com várias seqüências de pressionamentos de teclas, configurações e escopos, há muito o que ser considerado ao personalizar ligações de teclas. Para facilitar o processo, toda a personalização de teclas é feita na página Preferências de Teclas.

Selecione Janela > Preferências > Workbench > Teclas para acessar a página de preferências de Teclas.

Página de preferências de Teclas mostrando Emacs como a configuração ativa e o comando Fechar selecionado

Nesse exemplo, optamos por selecionar Emacs como a configuração ativa e selecionamos o comando Fechar na lista de comandos. Informações sobre esse comando, junto com suas ligações de teclas atuais, são mostradas no lado direito.

Observe que Fechar possui duas seqüências de teclas atribuídas a ele: Ctrl+F4 na configuração Padrão e Ctrl+X K na configuração Emacs. Ambas são atribuídas no escopo Global. Assim, se o usuário definir a configuração ativa como Padrão, Ctrl+F4 será atribuído a Fechar enquanto Ctrl+X K não. Entretanto, se o usuário definir a configuração ativa como Emacs, Ctrl+X K será atribuído a Fechar. Da mesma forma, como a configuração Emacs também se apropria das ligações de tecla da configuração Padrão, Ctrl+F4 será atribuído a Fechar desde que Ctrl+F4 não tenha sido atribuído a outro comando na configuração Emacs.

Abaixo da lista de seqüências de teclas atribuída a Fechar, encontra-se um local para adicionar ou remover as ligações de teclas. Por padrão, seleciona-se o escopo como Global e a configuração que será a configuração ativa do usuário (lembre-se do que foi mencionado anteriormente, onde nós alteramos isso para Emacs).

A seqüência de teclas Ctrl+W é pressionada e o botão 'Adicionar' é ativado. Além disso, uma lista de todos os comandos aos quais a seqüência de teclas Ctrl+W já foi atribuída é mostrada abaixo do botão Adicionar. Podemos ver que Ctrl+W está atribuído no momento ao comando Recortar no escopo Global e na configuração Emacs. Clique no botão 'Adicionar' para atribuir Ctrl+W a Fechar.

Página de preferências de teclas, atribuindo a seqüência Ctrl+W ao comando Fechar

Vemos agora Ctrl+W adicionado à lista de seqüências de teclas atribuídas a Fechar. Observe a pequena 'alteração' gráfica Pequena 'alteração' na representação gráfica indicando que essa ligação de tecla altera uma ligação existente. A nova ligação de tecla remove efetivamente a atribuição anterior de Ctrl+W a Recortar. Para remover essa alteração quando desejar, selecione a nova ligação de tecla e clique no botão 'Remover'. A atribuição anterior de Ctrl+W a Recortar será restaurada automaticamente.

Página de preferências de teclas mostrando a nova atribuição, incluindo o gráfico com 'alteração'

Selecionando o comando Recortar, é possível ver os resultados da alteração. Observe o pequeno sinal de 'menos' no gráfico Pequeno sinal de 'menos' na representação gráfica indicando que a ligação de tecla foi removida. Para restaurar essa ligação de tecla a qualquer momento, selecione-a aqui e clique no botão 'Restaurar', removendo efetivamente a nova ligação de tecla adicionada na etapa anterior.

Página de preferências de teclas mostrando o comando Recortar

Suponhamos que outra tecla seja atribuída ao comando Recortar na configuração Emacs, ou seja, Ctrl+Alt+W. Adicionando isso na maneira descrita anteriormente resultará no que se segue. Observe o pequeno sinal de 'mais' no gráfico Pequeno sinal de 'mais' na representação gráfica indicando que a ligação de tecla foi adicionada pelo usuário e cuja atribuição foi cancelada anteriormente:

Página de preferências de teclas que adiciona ao comando Fechar a seqüência de teclas Ctrl+Alt+W

A Natureza Dinâmica das Ligações de Teclas

Ligações de teclas são fornecidas por plug-ins e, no Eclipse, os plug-ins podem ser adicionados ou removidos. Isso pode fazer com que as ligações de teclas declaradas pelos plug-ins sejam adicionadas ou removidas. Para compensar isso, o Eclipse armazena ligações de teclas personalizadas de forma automática. Considere o exemplo anterior em que Ctrl+Alt+W foi atribuído a Recortar na configuração Emacs. Suponha que o usuário instale um novo plug-in que atribua Ctrl+Alt+W a um comando específico. O Eclipse manterá a atribuição do usuário ao comando Recortar, mas mostrará a ligação de tecla com a pequena 'alteração' no gráfico, em vez do sinal de 'mais'.

Resolução em Conflito

Há somente um número finito de simples pressionamentos de teclas comuns disponível a um número enorme de comandos. Vimos que em configuração, escopo, plataforma e localidade todas as atribuições de seqüências de teclas de partição em domínios onde elas não entram em conflito entre si. Considere o caso do Ctrl+B anterior, se os escopos não existissem. Um plug-in atribuiria Ctrl+B a Compilação e outro plug-in atribuiria Ctrl+B a Tornar Texto em Negrito. Como o Eclipse resolveria esse conflito da forma apropriada?

Embora os conflitos tenham sido eficazmente reduzidos com a implementação dos mecanismos anteriores, eles ainda podem ocorrer. Dois plug-ins, independentes um do outro, poderiam atribuir a mesma seqüência de teclas a comandos diferentes com o mesmo escopo, configuração, plataforma e localidade. Suponha que um plug-in atribuiu Ctrl+F4 no escopo Global e na configuração Padrão a um de seus comandos. Isso entra em conflito direto com o Eclipse, que atribui Ctrl+F4 ao comando fechar no mesmo escopo e na mesma configuração.

Isso é um conflito. Não seria adequado chamar ambos os comandos, nem seria adequado simplesmente escolher um dos comandos para receber o pressionamento de tecla. A única ação correta a tomar seria ignorar ambas as ligações de teclas, tornando Ctrl+F4 efetivamente inutilizável nesse escopo e nessa configuração.

Conflitos dessa natureza são mostrados na página de preferências de Teclas que se segue. Observe o texto em vermelho e a palavra "[conflito]":

Página de preferências de teclas mostrando um conflito por causa da seqüência de teclas Ctrl+F4

Esses tipos de conflitos podem ser resolvidos pelo usuário que está atribuindo explicitamente a seqüência de teclas a um dos comandos.

Outro tipo de conflito pode ser causado por seqüências de pressionamentos de várias teclas. Por exemplo, na configuração Emacs, há muitas seqüências de pressionamentos de várias teclas que começam com Ctrl+X. Ctrl+H K é atribuído a Fechar. Ctrl+X H é atribuído a Selecionar Tudo.

Conforme mencionado anteriormente, a configuração Emacs apropria-se das ligações de teclas da configuração Padrão. Na configuração padrão, Ctrl+X é atribuído a Recortar. Embora a configuração Emacs não redefina explicitamente Ctrl+X, pressionar Ctrl+X é exigido como parte de muitas de suas ligações de teclas. Na configuração Emacs, pressionar Ctrl+X é uma maneira incompleta de digitar uma das várias seqüências de teclas atribuídas possíveis. Não seria esperado que a ação Recortar fosse chamada nesse momento.

Nesse tipo de conflito, a regra é que a seqüência de teclas Ctrl+X atribuída a Recortar seria ignorada. Caso contrário, não seria possível concluir várias das ligações de teclas na configuração Emacs.

Conceitos relacionados
Recursos de Acessibilidade no Eclipse
Alterando as Ligações de Teclas
Sistema de ajuda online

Referências relacionadas
Definições de fonte e cor no Eclipse

Copyright IBM Corporation e terceiros 2000, 2003. Todos os Direitos Reservados.