Quais são as etapas necessárias para criar um novo layout de teclado no ubuntu?


43

O teclado que estou tentando criar possui muito Unicode e fica assim: O teclado que estou tentando criar

Não tendo êxito com o seguinte tutorial:

Eu queria saber se alguém seria tão gentil em fornecer um tutorial melhor com instruções passo a passo?


2
Mmh, isso parece uma duplicata para mim . Pena que você já colocou uma recompensa em sua pergunta: /.
precisa saber é o seguinte

@ Glutanimate Oh puro; não vi isso. Eu ainda teria pedido uma resposta melhor.
Akiva


Respostas:


69

No Ubuntu 14.04 , os layouts de teclado são mantidos em

/usr/share/X11/xkb/symbols/


Cada um dos arquivos neste diretório contém uma série de entradas do seguinte tipo:

    tecla <AC01> {[a, A, aacute, Aacute]};

Esta entrada mapeia uma tecla do teclado para vários caracteres específicos usando as seguintes convenções:

  1. < A C01> A primeira letra Aindica que estamos procurando no bloco tecla alfanumérica (outras opções incluem KP [for keypad]e FK [for Function Key]);

  2. <A C 01> A segunda letra Cindica a linha, contando a partir do fundo em que a chave é encontrada. (Em um teclado padrão dos EUA, a barra de espaço está alinhada AAe as teclas numéricas estão alinhadas AE).

  3. <AC 01 > Os números 01indicam a posição da tecla, contando a partir da esquerda e ignorando qualquer tecla especialmente nomeada como TABou ~(til): AC01está na terceira linha acima, a primeira tecla da esquerda (ignorando Caps Lock, se presente); em um teclado padrão dos EUA, essa é a tecla marcada "a".

  4. Os colchetes incluem a lista de caracteres atribuídos a cada tecla. Ele contém até quatro entradas, separadas por vírgulas:

    1. a - A chave não modificada.
    2. A - O Shiftpersonagem.
    3. á - o Alt Grpersonagem. ( agudo )
    4. Á - O caractere Shift+ Alt Gr. ( Aacute )

Criar um mapa de teclado personalizado é tão fácil quanto substituir os caracteres que você não deseja em uma determinada linha pelos que você deseja!

Por exemplo:

Como anglo-saxonista, digito áe com Ámuito menos frequência do que digito æe Æ.

Para adicionar os caracteres anglo-saxões à minha lista, simplesmente substituo aacutee Aacutepelos nomes das entidades ou pontos de código Unicode por æe Æ(“aelig” ou U00E6 e “AElig” ou U00C6 , respectivamente):

    chave {[a, A, aelig, AElig]};

ou

    tecla {[a, A, U00E6, U00C6]};

Quando terminar de modificar o layout do teclado, salve o arquivo com um novo nome, "oe" no mesmo diretório.

Adicionando um novo layout de teclado ao evdev.xmlarquivo.

Para usar o novo layout do teclado, precisamos dizer X11que ele existe. No Ubuntu 14.04, os arquivos X11dos teclados instalados são /usr/share/X11/xkb/rules/evdev.xmlregistrados. Em seguida, vamos adicionar o novo layout nele.

  1. Abrir X11/xkb/rules/evdev.xmlem um editor
  2. Vá para o final da <layoutList>seção (pesquise </layoutList>). Adicione o seguinte após a última </layout>tag, onde Xestá o nome do arquivo do layout do seu teclado /usr/share/X11/xkb/symbols(no meu caso oe); Yum nome abreviado adequado; e Zum nome longo apropriado em um ou mais idiomas e aaaum código de idioma legal de três letras (ISO 639-2) (por exemplo, eng para inglês):

    <layout>
     <configItem>
       <name> X </name>
       <shortDescription> Y </shortDescription>
       <description> Z </description>
       <languageList>
          <iso639Id> aaa </iso639Id>
       </languageList>
     </configItem>
     <variantList/>
    </layout>
    

Aqui está, siga a introdução completa

Outros links relacionados:
http://ubuntuforums.org/showthread.php?t=188761&p=1092145#post1092145 http://www.charvolant.org/~doug/xkb/html/index.html


Eu trabalhei nesse post um pouco; o conteúdo que você forneceu era de alta qualidade, mas ainda precisa ser trabalhado na minha opinião. Os tutoriais aos quais você vinculou são muito antigos, desatualizados e cheios de "Se você estiver usando o 8.04, execute xy e z". Eu gostaria de ver uma resposta tutorial completo (eu só desejo que eu poderia aumentar a recompensa)
Akiva

@ Akiva Não ajudou esta resposta para você? Onde você tem o problema?
αғsнιη

3
A resposta ajudou; Explicar o AC01 foi muito bem escrito, mas eu queria uma resposta completa com todas as etapas. Quando você se vinculou a outros tutoriais; eles são velhos e existem três deles. Para o benefício de outros usuários, eu preferiria ter uma resposta completa fornecida aqui. Então, por exemplo; existem mais elementos encontrados no arquivo de texto além da chave <ac01> {[a, b, c, d]} e também há um arquivo XML que precisa ser editado. Há também a questão de como testar isso. Como dito; Eu deveria ter colocado uma recompensa de 500 representantes nisso, porque é uma tarefa bastante grande criar um bom tutorial.
Akiva

2
Vou dar uma resposta completa a essa questão porque tenho que definir meu layout de teclado de qualquer maneira. quando eu chegar lá, eu responderei corretamente.
Akiva

Funciona apenas para o Xorg ou também para ttys?
Narcolessico 29/03/2015

18

Nota : Wayland usa xkb, mas muitos xTools pararam de funcionar corretamente (xdotool por exemplo)

Nota : Este é um tutorial não exaustivo. É mais útil para um indivíduo que procura criar um novo layout de oito níveis e entender a sintaxe.

Nota: É fornecida uma solução rápida e suja. Inclui uma planilha que gera automaticamente o código que você precisa.


Noções básicas do diretório XKB

cd /usr/share/X11/xkb/ && ls
  1. types- Como as chaves produzidas são alteradas pelos modificadores ativos . (Shift, Control, Alt ~)
    Importante se você deseja personalizar as teclas modificadoras.
  2. geometry- Usado para desenhar gráficos do teclado.
    Importante se você estiver projetando uma peça de hardware de teclado não padrão.
  3. rules- Buscando a configuração apropriada para sua configuração atual.
    Você precisará definir isso
  4. keycodes- O intérprete dos códigos de teclas para o hardware do teclado.
    Exemplo: os teclados Macintosh entendem a barra de espaço como 57. Nós escrevemos isso como<SPCE>
  5. symbols- Quais valores são atribuídos a quais códigos-chave .
    É aqui que definiremos nosso layout personalizado.
  6. compat- Abreviação de Compatibilidade .
    Comportamento interno dos modificadores (Shift, Control, Alt ...)

Workflow

keycodes > symbols > compat

Eu apenas toco symbols: veja abaixo a solução Rápida e suja .


Mapas de símbolos

/symbols/us Qualquer arquivo neste diretório segue a mesma estrutura.

partial alphanumeric_keys
xkb_symbols "basic" {
    name[Group1]= "US/ASCII";
    key <TLDE> {        [ quoteleft,    asciitilde      ]       };
    key <AE01> {        [         1,    exclam          ]       };
    modifier_map Shift  { Shift_L, Shift_R };
};

partial - Não é um mapa completo do teclado

alphanumeric_keysSeção do teclado sendo mapeada. Vários podem ser usados
Nota: Se não *_keysfor especificado, um teclado completo será assumido.

"basic" - O nome do mapa de símbolos

name[Group1]= "US/ASCII";Dá um nome exclusivo a este grupo de teclados.

modifier_mapPara editar teclas modificadoras . (Ctrl, Shift, Alt ~)

Shift { Shift_L, Shift_R };Não é normalmente necessário. Ele mapeia os dois turnos para o modificador de turno, também conhecido como nível 2.

key <TLDE> A tecla Tilde - geralmente a tecla superior esquerda acima da guia

key <AE01> Ilustração - Composta por três partes,AE01

  1. A= bloco de teclas alfanuméricas.
    KP= Teclado
    FK= Tecla de Função

  2. E= Linha no teclado.
    Space Key= Alinha
    Shift Key= Blinha
    Caps Lock= Clinha
    Tab Key= Dlinha

  3. 01= Posição da chave na linha.
    AE01= 1
    AB02= X
    AC05=G

[+ ]- Em idiomas C; Colchetes indica uma lista pela qual os itens são divididos por ,. O comprimento da lista determina a quantidade de níveis. Por exemplo:

key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }

Normalmente, os níveis indicam o seguinte pressionamento de tecla com:

  1. Sem teclas modificadoras
  2. Shift
  3. Alt Gr
  4. Shift + Alt Gr
  5. Custom - Não é provável que veja algo além do nível 4.

Em resumo, se você quisesse mapear uma tecla para shift + altgr, sua lista teria que ter pelo menos quatro itens.


AVISO - Erros comuns

Qualquer uma dessas linhas causará um erro crítico e deixará você sem um teclado utilizável:

key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
  • Backspacedeve ser BackSpace: Preste muita atenção à ortografia.
  • Uma entrada vazia deve ser VoidSymbol.

Melhor medida de segurança!

  1. Faça backup do arquivo que você está editando:

    sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP

  2. Crie um script que você possa executar sem senha root

Algo como:

#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us

Se algo der errado, use o mouse para executar essa linha de código (contida no script bash ao qual você deu permissão ao sudoers. Lembre- chmod +xse de permitir a execução como um executável.)


Estratégias de backup para recuperar um sistema danificado

  • AVISO: O teclado e o teclado virtual deixarão de funcionar com o menor erro.
  • Mouse funcionará . A digitação pode ser feita destacando os caracteres e colando-os usando o clique do meio. No Bash, você pode return(Pressionar Enter) colando uma quebra de linha.
  • O teclado funcionará no modo de recuperação no shell raiz. (Acessado a partir do bash)
  • Você sempre pode usar um ambiente ativo para corrigir arquivos.

Solução rápida e suja

  1. Vá aqui
  2. Arquivo> Fazer uma cópia
  3. Mapper Folha é onde você define seu layout.
    • As entradas de caracteres únicos são convertidas em código compreendido pelo programa.
      ( !se torna U0021). Unicode suportado!
    • Strings não são traduzidas e são tratadas como estão. Verifique se não há erros de ortografia ou caso !.
    • Quadrados vazios são preenchidos automaticamente VoidSymbol.
  4. XKB-Sort A planilha contém grupos de chaves, por exemplo:
    key <AE01> { [U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021] };
    key <AE02> { [U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B] };
    key <AE03> { [U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D] };
    key <AE04> { [U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022] };
    key <AE05> { [U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A] };
    key <AE06> { [U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B] };
    key <AE07> { [U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D] };
    key <AE08> { [U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F] };
    key <AE09> { [U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027] };
    key <AE10> { [U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029] };
    key <AE11> { [U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028] };
    key <AE12> { [U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C] };
    
    Altera isso em todos os 8 níveis:
    1234567890-= // Physical Keys
    ![]"*{}/')(\ // Changed to these characters
  5. XKBTab também possui linhas. Todas as outras guias podem ser ignoradas (seu código).
  6. sudo vim /usr/share/X11/xkb/symbols/us
  7. Substitua o conteúdo de um layout. Escolha um que você não vai usar. Por exemplo: alterei a entrada do colemak deixando a estrutura intacta e substitui as chaves.

Linhas de interesse:

key.type[group1]="EIGHT_LEVEL";          // Enables 8 levels
modifier_map Control { <LFSH>, <RTSH> }; // Maps ctrl`s to shift keys.
key  { [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R] }; 
key  { [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L] };
include "level3(lalt_switch)" // Hold Left  Alt for Level 3
include "level5(ralt_switch)" // Hold Right Alt for Level 5


A linha superior da sua resposta diz: "(WIP - Não vote.)". A resposta parece ser relativamente completa para mim - talvez essa nota deva ser removida?
precisa saber é o seguinte

1
@MattKelly Ahh eu ainda não consegui atualizá-lo. Na verdade, criei uma planilha que gera automaticamente o código com base nos caracteres que você coloca em um layout de teclado simulado.
Akiva

Parece uma planilha útil - está disponível ao público?
precisa saber é o seguinte

@MattKelly Aqui está uma cópia. Ele precisa de um monte de cruft retirado, e talvez alguns guidão agregado, mas como você pode ver que ele gera código: docs.google.com/spreadsheets/d/...
Akiva

Essa abordagem não permite configurar o RALT para atuar como outro backspace ou configurar a tecla Insert para atuar como aspas / til.
Craig Hicks
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.