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 designaram 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. Embora o Eclipse suporte seqüências de teclas de comprimentos arbitrários, recomenda-se que os atalhos de teclado tenham quatro pressionamentos de teclas de comprimento (ou menos).

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

Esquemas

Um 'scheme' é um conjunto de ligações. O Eclipse inclui dois esquemas:

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

O esquema Emacs contém um conjunto de ligações de teclas familiares aos usuários de Emacs. Por exemplo, Ctrl+X H é designado para Selecionar Tudo e Ctrl+X S é designado para Salvar.

É importante entender por que se afirma que o esquema Emacs 'estende Padrão'. O esquema Emacs não é um conjunto completo de ligações como o esquema Padrão. Mais propriamente, ela apropria-se do esquema Padrão, sempre que possível, somente definindo ligações explícitas no estilo Emacs, em que variam conforme o esquema Padrão. Normalmente, somente comandos bem conhecidos como Selecionar Tudo, Salvar e etc possuem seqüências de teclas Emacs específicas associadas a eles.

O usuário decide qual esquema lhe é mais conveniente alterando a configuração 'Esquema' na página de preferência de teclas. Se o usuário escolher o esquema Padrão, todas as ligações de Emacs serão ignoradas. Se o usuário escolher o esquema Emacs, as designações de seqüências de teclas explícitas do estilo Emacs terão precedência sobre quaisquer designações conflitantes no esquema Padrão.

Contextos

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 designaçõ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 é designado a Construir em um contexto de edição de arquivo Java, enquanto Ctrl+B é designado a Tornar o Texto em Negrito em um contexto de edição de arquivo HTML. Esse contexto normalmente é determinado pela parte ativa, mas ele também pode ser influenciado pela janela ou diálogo ativo. Se a parte ativa não escolher um contexto específico, o workbench definirá o contexto ativo como Em Janelas.

O Eclipse inclui nove contextos diferentes. São eles:

Muito semelhantes às configurações, os contextos podem estender outros contextos. Por exemplo, o contexto Edição de Origem Java apropria-se das ligações de teclas do contexto Edição de Texto, que por sua vez apropria-se das ligações de teclas do contexto Em Janelas.

Nota: Não se recomenda promover uma ligação de tecla para um contexto que ela estende. Por exemplo, não se recomenda mover uma ligação de tecla Edição de Texto para o contexto Em Diálogos e Janelas. Isso pode causar resultados inesperados.

É possível que algumas ligações de teclas funcionem em diálogos. Essas ligações de teclas são designadas ao contexto Em Diálogos e Janelas. Um exemplo de tal ligação de tecla é a utilizada para "recortar". É possível alterar essas ligações de teclas. Por exemplo, é possível ter Ctrl+X como recortar em diálogos, mas Ctrl+W como recortar em janelas.

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+Espaço.

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, esquemas e contextos, há muito o que ser considerado ao customizar 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 > Geral > Teclas para 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 o esquema e selecionamos o comando Fechar na lista de comandos. As informações sobre esse comando, juntamente com suas ligações de teclas atuais são mostradas.

Observe que Fechar possui três seqüências de teclas designadas a ela: Ctrl+F4 e Ctrl+W no esquema Padrão e Ctrl+X K no esquema Emacs. Todas elas são designadas no contexto Em Janelas. Assim, se o usuário configura o esquema como Padrão, Ctrl+F4 e Ctrl+W será designado a Fechar, enquanto Ctrl+X K não. Entretanto, se o usuário configurar o esquema como Emacs, Ctrl+X K será designado a Fechar. Da mesma forma, como o esquema Emacs também se apropria das ligações de tecla do esquema Padrão, Ctrl+F4 e Ctrl+W também serão designadas a Fechar desde que essa ligação de tecla não tenha sido designada a outro comando no esquema Emacs. Neste exemplo, "Ctrl+W" está ligado a Recortar no esquema 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, ele seleciona o contexto como Em Janelas.

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á designada atualmente ao comando Recortar no contexto Em Janelas e Diálogos. Clique no botão 'Adicionar' para atribuir Ctrl+W a Fechar.

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 customizadas de uma certa maneira. Considere o exemplo anterior em que Ctrl+Alt+W foi designado a Recortar no esquema 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 designação do usuário para Recortar.

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 esquema, contexto, plataforma e código do idioma, todas designações de seqüências de teclas de partições em domínios onde elas não entram em conflito entre si. Considere o caso do Ctrl+B anterior, se os contextos 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 designar a mesma seqüência de teclas a comandos diferentes com o mesmo contexto, esquema, plataforma e código do idioma. Suponha que um plug-in designou Ctrl+F4 no contexto Em Janelas e no esquema Padrão a um de seus comandos. Isso entra em conflito direto com o Eclipse, que designa Ctrl+F4 ao comando fechar no mesmo contexto e esquema.

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 contexto e esquema.

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, no esquema Emacs, há muitas seqüências de pressionamentos de várias teclas que começam com Ctrl+X. Ctrl+H K é designado a Fechar. Ctrl+X H é atribuído a Selecionar Tudo.

Conforme mencionado anteriormente, o esquema Emacs apropria-se das ligações de teclas da configuração Padrão. No esquema padrão, Ctrl+X é designado a Recortar. Embora o esquema Emacs não redefina explicitamente Ctrl+X, pressionar Ctrl+X é exigido como parte de muitas de suas ligações de teclas. No esquema Emacs, pressionar Ctrl+X é uma maneira incompleta de digitar uma das várias seqüências de teclas designadas 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 on-line

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