O layout de teclado personalizado se comporta como o último selecionado

0

Eu estou tentando criar um layout personalizado no XKB seguindo as instruções dadas em respostas de troca de pilha e outros tutoriais. Eu tenho o seguinte no arquivo my :

default alphanumeric_keys
xkb_symbols "basic" {

  name[Group1]="MyLayout";

  key <AC01> { [ UE700 ] };
  key <AC02> { [ UE701 ] };
  key <AC03> { [ UE702 ] };
  key <AC04> { [ UE703 ] };
  key <AC05> { [ UE704 ] };
  key <AC06> { [ UE705 ] };
  key <AC07> { [ UE706 ] };
  key <AC08> { [ UE707 ] };
  key <AC09> { [ UE708 ] };
  key <AC10> { [ UE709 ] };
  key <AC11> { [ UE70A ] };
  key <AD03> { [ UE70B ] };
};

Eu adicionei blocos aos arquivos evdev.lst e evdev.xml :

// evdev.lst
! layout
  my              MyLayout
  us              English (US)

// evdev.xml
<layout>
    <configItem>
        <name>my</name>
        <shortDescription>my</shortDescription>
        <description>MyLayout</description>
        <languageList>
            <iso639Id>myl</iso639Id>
        </languageList>
    </configItem>
    <variantList/>
</layout>

Eu corri sudo dpkg-reconfigure xkb-data antes do teste. O layout é visível nas configurações do meu sistema como MyLayout e posso adicioná-lo sem nenhum problema aparente. No entanto, quando eu o seleciono como o layout ativo, seu símbolo é cinza escuro e se comporta como o layout imediatamente antes dele na lista suspensa. Se minha lista for English (US) , Hebrew , MyLayout , meu layout personalizado se comportará exatamente como o layout hebraico. Se eu remover o hebraico, ele se comportará exatamente como o inglês (EUA). Estou sem idéias novas sobre isso e não estou vendo um problema com a minha sintaxe.

locale is C
Warning! Multiple definitions of keyboard layout
         Using command line, ignoring X server
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     my
variant:    basic
options:    compose:ralt,lv3:caps_switch
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+my(basic)+inet(evdev)+compose(ralt)+level3(caps_switch)
geometry:   pc(pc105)
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+my(basic)+inet(evdev)+compose(ralt)+level3(caps_switch)"    };
    xkb_geometry  { include "pc(pc105)" };
};
    
por Alex Clough 25.03.2017 / 18:52

1 resposta

1

Você precisa adicionar a regra real em /usr/share/X11/xkb/rules/evdev ; os arquivos evdev.{lst,xml} são apenas descrições.

Meu melhor palpite é que você precisa de algo como o seguinte:

# existing lines
! model         layout          variant         =       symbols
  *             ben             basic           =       pc+in(ben)
# your additions
  *             my              basic           =       pc+my(basic)

Estou supondo que seu arquivo my seja /usr/share/X11/xkb/symbols/my . As três primeiras colunas correspondem aos parâmetros de entrada XKB (aqui, qualquer -model , -layout my , -variant basic ). A última coluna define a regra de símbolos em termos de arquivos de símbolos para carregar, no formato file(clause) (vários arquivos separados por + ). Os arquivos de símbolo estão todos em /usr/share/X11/xkb/symbols .

Tente isso - você pode testar com algo assim para garantir que está funcionando (observe o +my(basic) na linha xkb_symbols ):

$ setxkbmap -layout my -variant basic -print
xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete"      };
        xkb_symbols   { include "pc+my(basic)+inet(evdev)"     };
        xkb_geometry  { include "pc(pc105)"     };
};

Um problema é que não tenho certeza de que suas definições my não entrem em conflito com um layout existente. Se este é um layout completamente novo, você provavelmente deve chamá-lo de algo diferente para evitar conflitos.

    
por quixotic 25.03.2017 / 19:35