Como obter Dvorak Internacional estável com chaves de primeiro nível no Debian?

6

Existem algumas maneiras instáveis / arriscadas, como o tópico Como obter um com pontos no Dvorak do Ubuntu 16.04? para obter o recurso, mas não posso executá-lo em muitos ambientes. Os alemães precisam de seus próprios (a / e / u / o com pontos) como mostrado aqui , enquanto nórdico (Finlândia, Suécia, Noruega, Dinamarca, ...) as pessoas precisam de chaves semelhantes (a / o com pontos). Eu acho que uma abordagem de teclado de um nível é melhor que uma abordagem de teclado de dois níveis. Opções

  1. Para obter esse layout de teclado por padrão no Debian seria ótimo.
  2. Para obter um pacote em apt para esse teclado, seria bom.
  3. Talvez de outra maneira ...
  4. Realizar essas alterações manualmente, como no primeiro segmento, não é uma opção devido aos riscos em diferentes ambientes.

O OS X International Dvorak tem esse recurso por padrão, que pode ser usado como um benchmark, mas também a abordagem manual como feita na primeira resposta de thread. Há um ticket aberto no desenvolvimento do Chromium para esse recurso no tópico Dvorak internacional com o Deadkeys segmentado no Chromebook.

Testando a resposta do clearkimura no Debian

  1. Saída

    masi@masi:~/Downloads$ sudo cp dvorak_intl /usr/share/X11/xkb/symbols/dvorak_intl
    
    masi@masi:~/Downloads$ setxkbmap -verbose dvorak_intl
    
    masi@masi:~/Downloads$ setxkbmap -I ~/.xkb dvorak_intl -print | xkbcomp -I$HOME/.xkb - $DISPLAY
    Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
                  Ignoring extra symbols
    Warning:          Key <OUTP> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
    Warning:          Key <KITG> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
    Warning:          Key <KIDN> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
    Warning:          Key <KIUP> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
    Warning:          Key <RO> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
    Warning:          Key <I192> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
    Warning:          Key <I193> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
    Warning:          Key <I194> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
    Warning:          Key <I195> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
    Warning:          Key <I196> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
    Warning:          Key <I255> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
    Warning:          No symbols defined for <AB11> (keycode 97)
    Warning:          No symbols defined for <JPCM> (keycode 103)
    Warning:          No symbols defined for <I120> (keycode 120)
    Warning:          No symbols defined for <AE13> (keycode 132)
    Warning:          No symbols defined for <I149> (keycode 149)
    Warning:          No symbols defined for <I154> (keycode 154)
    Warning:          No symbols defined for <I168> (keycode 168)
    Warning:          No symbols defined for <I178> (keycode 178)
    Warning:          No symbols defined for <I183> (keycode 183)
    Warning:          No symbols defined for <I184> (keycode 184)
    Warning:          No symbols defined for <FK19> (keycode 197)
    Warning:          No symbols defined for <FK24> (keycode 202)
    Warning:          No symbols defined for <I217> (keycode 217)
    Warning:          No symbols defined for <I219> (keycode 219)
    Warning:          No symbols defined for <I221> (keycode 221)
    Warning:          No symbols defined for <I222> (keycode 222)
    Warning:          No symbols defined for <I230> (keycode 230)
    Warning:          No symbols defined for <I247> (keycode 247)
    Warning:          No symbols defined for <I248> (keycode 248)
    Warning:          No symbols defined for <I249> (keycode 249)
    Warning:          No symbols defined for <I250> (keycode 250)
    Warning:          No symbols defined for <I251> (keycode 251)
    Warning:          No symbols defined for <I252> (keycode 252)
    Warning:          No symbols defined for <I253> (keycode 253)
    
  2. Reinicie

  3. Saída: o layout do teclado não está mais ativo
  4. Ir para Region & Language > escolha > pesquisa Dvorak > Escolha Dvorak com chaves mortas na Fig. 1
  5. Saída: o layout de teclado esperado agora está ativo e selecionável na barra superior
  6. Em Regien & Linguagem, coloque o layout do teclado primário na parte superior da Figura 2, ou seja, remova os layouts de teclado anteriores na parte superior. Desta forma, você pode colocar Dvorak internacional com chaves inativas como seu teclado primário, que permanece lá também após o reinício.

1 Região & Configurações de idioma após a alteração Fig. 2 Região & Configurações de idioma quando Dvorak internacional com chaves inativas como o layout de teclado principal

OS: Debian 8.7
Hardware: Asus Zenbook UX303UB, laptop HP 2002 Gerenciador de janelas: Gnome 3.14

    
por Léo Léopold Hertz 준영 19.02.2017 / 08:42

3 respostas

3

Eu tentei há muito tempo fazer um pacote para um layout de teclado personalizado. Aqui a opção que eu encontrei na época:

  1. Modifique o layout original (ex: /usr/share/X11/xkb/symbols/us )

    Problemas:

    • Ele foi substituído em xkb-data update. O nome do pacote pode diferir de distribuição para outra.
    • Má idéia de criar um pacote Debian que sobrescreva outro arquivo de pacote.
  2. Adicione um novo layout com o nome diferente xy , como este post

    Problemas:

    • Mesmos problemas do método anterior, mas com o arquivo de declaração de layout: /usr/share/X11/xkb/rules/evdev.xml que precisa ser modificado. AFAIK, o servidor Xorg não suporta carregamento dinâmico para novos layouts.

Os métodos acima são retransmitidos pelo XIM (método de entrada padrão X), um sistema legado. Eu recomendaria usar um método de entrada moderno que suporte plug-ins (design modular) como IBus ou SCIM.

Eu não tentei isso, mas espero que ibus-table seja a maneira mais fácil de ir, como explicado em este post . O arquivo adicionado pode ser empacotado e instalado separadamente, como a maioria dos mecanismos IBus & layouts, a IBus toma cuidado para carregá-los.

Atualização:

Bem, esta resposta no AskUbuntu menciona uma maneira mais limpa de modificar o pacote upstream. Aqui estão as instruções mínimas para reconstruir o pacote

  1. Ativar o código-fonte para o repositório
  2. Baixe as dependências de compilação

    sudo apt build-dep  xkb-data
    
  3. Faça o download da fonte

    mkdir sandbox
    cd sandbox
    apt source xkb-data
    
  4. Crie um novo patch de quilt seguindo guia de embalagem do Ubuntu

    cd xkeyboard-config*/
    quilt new username_custom_layout.diff
    quilt add symbols/us
    

    Faça sua modificação necessária em symbols/us then

    quilt refresh
    
  5. Construa a fonte não assinada & pacote binário

    debuild -us -uc 
    
por 24.02.2017 / 10:22
3

Esta resposta deve explicar como instalar o layout de teclado estendido internacional Dvorak encontrado em este artigo de Arjen van Kol . A instalação e a configuração foram bem diretas usando o XKB.

Como instalar um novo layout

Faça o download do arquivo de layout dvorak_intl do artigo vinculado. Em seguida, copie o arquivo como superusuário para o diretório de destino /usr/share/X11/xkb/symbols/ .

$ sudo cp dvorak_intl /usr/share/X11/xkb/symbols/dvorak_intl

Não há necessidade de alterar a permissão. Para usuários curiosos, use o comando stat para verificar a permissão; A permissão padrão é 644 .

$ ls -l /usr/share/X11/xkb/symbols/dvorak_intl 
-rw-r--r-- 1 root root 2989 May 14 17:32 /usr/share/X11/xkb/symbols/dvorak_intl

$ stat -c '%a %n' /usr/share/X11/xkb/symbols/dvorak_intl 
644 /usr/share/X11/xkb/symbols/dvorak_intl

Como definir novo layout

Antes de fazer alterações, execute setxkbmap -query para verificar o layout atual, caso desejemos reverter as alterações posteriormente. A maioria dos usuários usará o layout de teclado inglês dos EUA por padrão.

$ setxkbmap -query
rules:      evdev
model:      pc105
layout:     us   <-- current layout

Agora, execute o comando setxkbmap para definir o novo layout de teclado. A opção -verbose foi adicionada para ver a saída, que de outra forma não mostrará nada.

$ setxkbmap -verbose dvorak_intl
Warning! Multiple definitions of keyboard layout
         Using command line, ignoring X server
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+dvorak_intl+inet(evdev)
geometry:   pc(pc105)

O usuário pode executar novamente setxkbmap -query para verificar as alterações feitas e exibidas agora na coluna de layout.

$ setxkbmap -query
rules:      evdev
model:      pc105
layout:     dvorak_intl   <-- new layout

Teste o novo layout

As alterações são efetivadas imediatamente; Não há necessidade de sair ou recarregar o servidor X. Abra um editor de texto e pressione cada tecla de quatro linhas no teclado para ver a saída.

Chaves de primeiro e segundo nível (sem e com Shift ):

'1234567890[]
~!@#$%^&*(){}

´,.pyfgcrl/=\
¨<>PYFGCRL?+|

aoeuidhtns-
AOEUIDHTNS_

;qjkxbmwvz
:QJKXBMWVZ

Teclas de terceiro e quarto nível (com AltGr e Shift + AltGr ):

 ¡ ♯         
         []{}

´¸…    č     
 «»¶     ¿ 

å°əŭ     ß—
Å  Ŭ      ¯

   ĸ×     

Não tenho certeza se há chaves ausentes para o terceiro e quarto níveis do layout do teclado, por exemplo, dvorak_intl , pois não estou acostumado a digitar nesses níveis.

Torne persistente

O comando setxkbmap sozinho é efetivo apenas para a sessão atual. No entanto, é possível adicionar o seguinte comando aos aplicativos de inicialização no respectivo ambiente de área de trabalho.

setxkbmap LAYOUTNAME

Para que o LAYOUTNAME seja configurado toda vez que o usuário fizer login no sistema e a sessão da área de trabalho for iniciada. Efetue logout e login novamente, abra o Terminal e execute setxkbmap -query para verificar se o novo layout de teclado foi aplicado em todas as sessões.

Carregando a configuração local em sistemas não-Debian

Caso a atualização do sistema substitua o arquivo de configuração em /usr/share/X11/xkb/symbols , o usuário poderá realocar o arquivo de configuração do layout em outro lugar, por exemplo, Diretório pessoal (e remover do diretório do sistema para ter certeza).

$ mkdir -p ~/.xkb/symbols
$ cp /usr/share/X11/xkb/symbols/dvorak_intl ~/.xkb/symbols
$ sudo rm -i /usr/share/X11/xkb/symbols/dvorak_intl

Em seguida, carregue a configuração do layout a partir daí, usando o comando com a opção -I . Ele funciona de maneira semelhante.

$ setxkbmap -I ~/.xkb dvorak_intl
$ setxkbmap -query
rules:      evdev
model:      pc105
layout:     dvorak_intl

Então, em vez de setxkbmap LAYOUTNAME , adicione setxkbmap -I ~/.xkb LAYOUTNAME ao aplicativo de inicialização no respectivo ambiente de área de trabalho para carregar a configuração do teclado para todas as sessões.

Discrepância na Debian

Se o comando retornar a mensagem "Erro ao carregar a nova descrição do teclado" (conforme descrito por esta postagem anterior no Unix.SE ), então use o seguinte comando:

$ setxkbmap -I ~/.xkb dvorak_intl -print | xkbcomp -I$HOME/.xkb - $DISPLAY
Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
                  Ignoring extra symbols
Warning:          Key <OUTP> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
...
Warning:          No symbols defined for <I253> (keycode 253)

Estranhamente, o último comando retorna muitas mensagens de aviso que podem estar relacionadas ao meu modelo de teclado estrangeiro (variante de layout de teclado japonês OADG 109A). Além disso, as alterações não serão refletidas em setxkbmap -query , mas funcionarão conforme o esperado quando forem digitadas.

Testado usando o setxkbmap 1.3.0 no Xubuntu 14.04 (Xfce 4.10), Debian Xfce 8 (Xfce 4.10) e Debian 8.7 Gnome 3.14.

Aviso de isenção

Esta resposta pretende mostrar como usar o XKB para instalar e definir o novo layout de teclado. A instrução original foi encontrada no repositório workman / xorg , que mencionou o caminho legado e o caminho atual (por Ubuntu 10.04, GNOME 2.30 na época). No entanto, a instrução foi testada como válida para ambientes não-GNOME, como o Xfce.

As instruções datadas fornecidas no arquivo dvorak_intl foram provavelmente destinadas a versões mais antigas do GNOME e não são mais válidas para distribuições modernas que usamos hoje. Enquanto o caminho herdado é encontrado em /etc/X11/xkb/symbols/ , o caminho atual é encontrado em /usr/share/X11/xkb/symbols/ .

A tecla AltGr refere-se à tecla de composição. Ele não é atribuído por padrão (pelo menos no Xfce) ou normalmente à tecla Right Alt , dependendo da distribuição do Linux em uso. Embora tenha ativado a tecla de composição para demonstrar as chaves de terceiro e quarto nível, a configuração da chave de composição não é mostrada acima.

    
por 14.05.2017 / 22:13
1

Exemplo de um layout de teclado Dvorak personalizado chamado Dvorak International Extended , que possui os recursos solicitados aqui e foi concluído para Windows e Linux (código aqui ) no post layout de teclado estendido internacional Dvorak -  Adicionando suporte internacional ao Teclado Simplificado Dvorak .

1 Design do layout de teclado Dvorak International Extended, Fig. 2 Procurando Dvorak nas configurações do teclado Debian após as mudanças da Seção Tentativa de instalação no Debian 8.7 , Fig. 3 Pesquisando extended ...

Tentativa de instalação no Debian 8.7

Consegui concluir as duas primeiras etapas pelas instruções de instalação, mas não consegui ver o efeito da adição do layout do teclado

  1. [pronto] Copie este arquivo para o diretório /etc/X11/xkb/symbols/pc . Você pode precisar de privilégios de root para fazer isso.

    sudo mkdir -p /etc/X11/xkb/symbols/pc
    sudo cp dvorak_int /etc/X11/xkb/symbols/pc/
    
  2. Adicione a seguinte linha a /etc/X11/xkb/rules/xfree86.lst : dvorak_intl Dvorak international extended

     sudo touch /etc/X11/xkb/rules/xfree86.lst
     sudo echo 'dvorak_intl Dvorak international extended' >> /etc/X11/xkb/rules/xfree86.lst
    
  3. No entanto, não consigo concluir o terceiro passo

    // In order to make the keyboard layout available in GNOME,
    // you should also modify /etc/X11/xkb/rules/xfree86.xml
    // accordingly (this is an XML file and the format is mostly
    // self-explanatory).
    

    O comando apt search XF86Config não retorna nada porque meu sistema não possui o arquivo /etc/X11/xkb/rules/xfree86.xml . Há um erro de digitação nas instruções (obrigado, clearkimura)! Pesquise o nome do arquivo e edite-o com o seguinte, mas ainda não tenho certeza do que preencher exatamente - nome do arquivo ou dvorak-intl-extended (meu nome personalizado)

    masi@masi:~$ dpkg --search xfree86.xml
    xkb-data: /usr/share/X11/xkb/rules/xfree86.xml
    
    masi@masi:~$ sudo vim /usr/share/X11/xkb/rules/xfree86.xml 
    

    Adição em /usr/share/X11/xkb/rules/xfree86.xml

        <variant>
          <configItem>
            <name>dvorak-intl-extended</name>
            <description>English (Dvorak, international extended with dead keys)</description>
          </configItem>
        </variant>
        <variant>
    

    Eu reinicio o sistema, mas as saídas mal sucedidas no menu Language Keyboard na Fig. 2 e Fig. 3.

    Talvez algo esteja errado com minhas permissões

     masi@masi:~$ sudo ls -la /etc/X11/xkb/symbols/pc/
     total 12
     drwxr-xr-x 2 root root 4096 May 13 20:35 .
     drwxr-xr-x 3 root root 4096 May 12 16:25 ..
     -rw-r--r-- 1 root root 2989 May 12 16:26 dvorak_intl
    

    Permissões de diretório devem estar bem

    masi@masi:~$ ls -la /etc/ | grep X11
    drwxr-xr-x  10 root root     4096 Sep  8  2016 X11
    masi@masi:~$ ls -la /etc/X11/ | grep xkb
    drwxr-xr-x   4 root root  4096 May 12 16:25 xkb
    masi@masi:~$ ls -la /etc/X11/xkb/ | grep symbols
    drwxr-xr-x  3 root root 4096 May 12 16:25 symbols
    masi@masi:~$ ls -la /etc/X11/xkb/symbols/ | grep pc
    drwxr-xr-x 2 root root 4096 May 13 20:35 pc
    

Qual deve ser a permissão do novo layout de teclado?

OS: Debian 8.7

    
por 13.05.2017 / 19:46