Como posso religar as teclas do teclado no OS X?

4

Eu preciso de um atalho de teclado personalizado para barra invertida \ .

eu criei ~/Library/KeyBindings/DefaultKeyBinding.dict e colocar isso nele:

{
    "@ö" = ("insertText:", "\\");
}

É suposto para acionar a barra ao pressionar + ö (Sim, eu tenho um caractere "ö" no meu teclado).

Ao tentar source o arquivo, eu recebo este erro:

-bash: DefaultKeyBinding.dict: line 2: syntax error near unexpected token `('
-bash: DefaultKeyBinding.dict: line 2: `    "@ö" = ("insertText:", "\\");'

O que há de errado com a sintaxe? Existe uma maneira melhor?

Winterflags
fonte
3
De uma breve pesquisa na Web por "DefaultKeyBinding.dict", de acordo com xahlee.info/kbd/osx_keybinding.html : "apenas aplicativo que [usar] sistema de texto Cocoa suportará isso." Este não é um arquivo shell e não funcionará quando 'source'ed via bash.
mtklr
@mtklr Você provavelmente está certo. É estranho porque várias respostas no StackExchange recomendaram este método para criar associações de teclas personalizadas no OS X - é por isso que me envolvi com isso em primeiro lugar.
Winterflags

Respostas:

2

Para habilitar Cmd Ö - & gt; \ basta remapear a combinação de teclas com o Karabiner. O atalho que você precisa não está pré-definido, então você tem que escrever o seu próprio:

  1. Baixe, instale e abra Mosquetão
  2. Abrir no mosquetão menulet - & gt; Preferências
  3. Abra a guia Misc. & Amp; Desinstalar
  4. Aperte o botão Abra o private.xml
  5. Abra o arquivo private.xml com um editor apropriado
  6. Digite o código de acesso personalizado

    Exemplo 1 ( cmd Ö - & gt; \ ):

    <?xml version="1.0"?>
    <root>
        <item>
          <name>Command-Ö to Backslash</name>
          <appendix>(Change Command-Ö to \)</appendix>
          <identifier>remap.command_ö_to_backslash</identifier>
          <autogen>__KeyToKey__ KeyCode::GERMAN_O_UMLAUT, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND, KeyCode::KEY_7, ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L</autogen>
        </item>
    </root>
    

    Exemplo 2 ( cmd_R Ö - & gt; \ cmd_R é a chave de comando correta apenas cmd_L Ö não tem saída!):

    <?xml version="1.0"?>
    <root>
        <item>
          <name>Command_R-Ö to Backslash</name>
          <appendix>(Change Command_R-Ö to \)</appendix>
          <identifier>remap.command_r_ö_to_backslash</identifier>
          <autogen>__KeyToKey__ KeyCode::GERMAN_O_UMLAUT, ModifierFlag::COMMAND_R, KeyCode::KEY_7, ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L</autogen>
        </item>
    </root>
    

    Exemplo 3 ( cmd_R - & gt; \ você não pode usar a chave de comando certa para qualquer outra finalidade então):

    <?xml version="1.0"?>
    <root>
        <item>
          <name>Command_R to Backslash</name>
          <appendix>(Change Command_R to \)</appendix>
          <identifier>remap.command_r_to_backslash</identifier>
          <autogen>__KeyToKey__ KeyCode::COMMAND_R, KeyCode::KEY_7, ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L</autogen>
        </item>
    </root>
    

    Exemplo 4 ( cmd_R - & gt; \ semelhante ao exemplo 3, mas você pode usar a tecla de comando à direita como tecla de comando normal - & gt; batendo cmd_R rende mas cmd_R S salva arquivos):

    <?xml version="1.0"?>
    <root>
        <item>
          <name>When you type Command_R only, send Backslash</name>
          <appendix>(Change Command_R lazy to \)</appendix>
          <identifier>remap.command_r_lazy_to_backslash</identifier>
          <autogen>__KeyOverlaidModifier__ KeyCode::COMMAND_R, KeyCode::VK_LAZY_COMMAND_R, KeyCode::KEY_7, ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L</autogen>
        </item>
    </root>
    
  7. Salve o arquivo

  8. Abrir no mosquetão menulet - & gt; Preferências a aba Alterar chave
  9. Clique no botão ReloadXML
  10. Ativar o remapeamento. Deve ser listado no começo.
klanomath
fonte
Muito obrigado por isso! Eu particularmente achei poderoso ligar cmd_R por sua sugestão.
Winterflags
@Winterflags Por acidente, fiz um forward_slash em vez de um back_slash em todas as seções do apêndice. Eu emendado isso. É apenas um problema cosmético.
klanomath
Isso parou de funcionar para mim - eu não mudei o XML e funcionou no passado. Apenas curioso se há alguma razão óbvia para não funcionar (por exemplo, a sintaxe mudou)?
Winterflags
1

Por que você não usa o Karabiner?

Um personalizador de teclado poderoso e estável para o OS X.

  • Você pode personalizar facilmente a partir de configurações preparadas.

  • Você também pode adicionar suas próprias configurações por XML.

https://pqrs.org/osx/karabiner/

StrawHara
fonte
1
Note que o Karabiner não funciona no macOS Sierra, e os autores indicaram que mudanças substanciais serão necessárias antes que ele funcione naquele SO.
Peter
@ Peter "respondeu 21 dez 15" - Sierra 16 de setembro
StrawHara
Obrigado MrMoRinsin - Eu sempre me perguntei o que essas "datas" eram. Falando sério, eu estava apontando isso para que qualquer pessoa hoje (ou no futuro próximo) que pudesse encontrar este post saberia que sua resposta não se aplica ao macOS Sierra (ainda).
Peter
1

De uma breve pesquisa na web por DefaultKeyBinding.dict, de acordo com esta página :

Somente o aplicativo que [use] o sistema de texto Cocoa suportará isso.

Este não é um arquivo shell e não funcionará quando 'source'ed via bash.

Fonte: comentário @mtklr .

kenorb
fonte