É possível usar um layout de teclado personalizado sem acesso ao sudo? Se sim, como?

4

Eu tenho usado um teclado personalizado por um tempo, usando as instruções detalhadas no tutorial Help.Ubuntu Definições de layout de teclado personalizadas e explicadas em mais detalhes em esta questão . Eu gostei muito deste teclado, mas recentemente comecei a usar uma máquina onde eu não tenho acesso ao sudo (ou melhor, eu tenho uma certa quantidade de acesso, mas é realmente estranho).

Então: é possível fazer uma instalação equivalente que é apenas para o meu usuário e que não depende de privilégios administrativos? Mais especificamente, se se trata de instalar pacotes específicos, estou bem com isso, mas se requer a substituição de arquivos fora do meu diretório home, fica muito mais difícil.

    
por E.P. 23.01.2017 / 09:13

4 respostas

4

Uma resposta rápida e rápida, pois ainda não posso comentar:

Como eu mencionado em sua outra pergunta , você criaria seus arquivos de layout em seu diretório pessoal (ou em outro lugar você tem permissões de gravação) como uma versão local da árvore de diretórios do banco de dados XKB:

$HOME/.config/xkb/
...
├── rules
│   ├── evdev-local
...
├── symbols
│   ├── my-fun-capslock-options
│   ├── my-US-Dvorak-layout
│   └── my-ZWERTY-layout
...

... e, em seguida, use a opção -I com setxkbmap :

setxkbmap -I $HOME/.config/xkb \
  -rules evdev-local           \
  -layout my-ZWERTY-layout     \
  -option myZWERTY:option1,compose:menu,fun:caps_is_insert
    
por quixotic 24.03.2017 / 09:18
2

O comando subjacente para configurar o teclado é setxkbmap --- agora, olhando suas páginas de manual, parece que ele irá ler a especificação do teclado a partir de /usr/share/X11/xkb/ , então você precisa escrever o layout modificado lá - diretório do sistema, acesso root necessário.

MAS

Eu tentei isso:

strace setxkbmap nonexistant |& grep open

para ver o que o comando está fazendo e veja: (saída parcial)

open("/run/user/1153/gdm/Xauthority", O_RDONLY) = 4
open("./rules/evdev-C.lst", O_RDONLY)   = -1 ENOENT (No such file or directory)
open("./rules/evdev.lst", O_RDONLY)     = -1 ENOENT (No such file or directory)
open("/usr/share/X11/xkb/rules/evdev-C.lst", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/X11/xkb/rules/evdev.lst", O_RDONLY) = 4

então parece que setxkbmap também está procurando no diretório atual a especificação do arquivo. Então, talvez (eu não tenho tempo para testar) se você copiar toda a estrutura de diretório relevante de /usr/share/X11/xkb/ em, digamos, $HOME/myxkb e então tentar emitir o comando

setxbmap -model pc105 -layout myshiny -variant myvariant 

ou qualquer coisa que possa funcionar .

PD: as páginas de ajuda são úteis, como sempre ; um bom comando que você pode usar para ver do que o teclado que você está usando é o seguinte:

[romano:~] % setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
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:     es,us
variant:    standard_tlde,
options:    caps:none,compose:caps,terminate:ctrl_alt_bksp
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+es(standard_tlde)+us:2+inet(evdev)+capslock(none)+compose(caps)+terminate(ctrl_alt_bksp)
geometry:   pc(pc105)
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+es(standard_tlde)+us:2+inet(evdev)+capslock(none)+compose(caps)+terminate(ctrl_alt_bksp)"   };
    xkb_geometry  { include "pc(pc105)" };
};
    
por Rmano 23.01.2017 / 12:05
1

Eu posso recomendar este guia se você quiser apenas estender um teclado existente layout.

    
por Jarno 09.08.2017 / 13:04
0

As respostas por quixotesco, são completos, funcionais e provavelmente o que você deveria fazer normalmente. No entanto, se você não quiser copiar e modificar os arquivos rules , por qualquer motivo, aqui está uma solução alternativa.

Neste caso, estaremos carregando um "arquivo keymap xkb", diretamente usando xkbcomp .

Primeiro, crie o layout ou a opção personalizada desejada, digamos, no arquivo ~/.config/xkb/symbols/option_file com o conteúdo:

partial hidden modifier_keys
xkb_symbols "new_option_1" {
    [...]
};

Em seguida, despeje seu layout atual usando setxkbmap -print > ~/.config/xkb/keymap/my_layout . (Observe que isso, necessariamente, não precisa estar na mesma hierarquia de diretórios que o arquivo symbols acima (ou quaisquer outros arquivos adicionados), pois estaremos especificando o caminho para ele explicitamente.) a forma de:

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+inet(evdev)" };
    xkb_geometry  { include "pc(pc105)" };
};

Para ativar sua nova opção, edite o layout despejado, adicionando +option_file(new_option_1) à linha xkb_symbols , para que nosso exemplo se torne:

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+inet(evdev)+option_file(new_option_1)"   };
    xkb_geometry  { include "pc(pc105)" };
};

Por fim, carregue o novo mapa de teclado com: xkbcomp -I$HOME/.config/xkb ~/.config/xkb/keymap/my_layout $DISPLAY .

Referências:

link

link

    
por aplaice 04.07.2017 / 01:53