como ligar o AltGr a <Ctrl> + <Alt>

11

Estou tentando criar um equivalente linux do layout do teclado Telugu ergonômico chamado Sarala (Hard la). Consegui mapear todas as chaves até agora. O layout usa as seguintes combinações de teclas para vários níveis.

None (Base): Level1
Shift: Level2
Ctrl + Alt: Level3
Ctrl + Alt + Shift:Level4

Onde o linux usa o seguinte para vários níveis.

None (Base): Level1
Shift: Level2
RAlt: Level3
RAlt + Shift:Level4

Para poder combinar as combinações de teclas com meu layout, eu teria que mapear AltGrcom um Ctrl+ Alt. Pesquisei sem êxito vários arquivos no /usr/share/X11/xkb/. Faz todo o corpo sabe como eu pode vincular a ISO_Level3_Shiftcom Ctrl+ Alt?

key <RALT>  {
    symbols[Group1]= [ Mode_switch, Multi_key  ],
    virtualMods= AltGr
};

Se você quiser ver o layout, está aqui

ShaggyInjun
fonte
2
dê uma olhada aqui askubuntu.com/questions/254424/…
αғsнιη
2
Obrigado, isso é muito informativo, mas fala sobre todo o resto, exceto a xkbconfiguração.
precisa saber é o seguinte
Você pode ler este wiki no wiki do arch linux e conferir a parte sobre Alt e Altgr (nível 3). Eu não tenho certeza se isso vai ajudá-lo, mas parece ter um monte de informações sobre XKB
No Time
Eu tentei isso, xkb falha ao carregar com um erro não tão descritivo. Não tenho o erro à mão, mas posso anexá-lo mais tarde.
ShaggyInjun

Respostas:

6

Você precisa definir um novo tipo de xkb. Você pode ver exemplos em seu diretório xkb / types (geralmente /usr/share/X11/xkb/types). Lá você pode definir combinações arbitrárias de modificadores para obter diferentes níveis de mudança. Para o seu problema, você pode usar algo como isto:

type "C_A_to_L3" {
    modifiers = Control+Alt+Shift;
    map[None] = Level1;
    map[Shift] = Level2;
    map[Control+Alt] = Level3;
    map[Control+Alt+Shift] = Level4;
    level_name[Level1] = "Base";
    level_name[Level2] = "Shift";
    level_name[Level3] = "Alt Base";
    level_name[Level4] = "Shift Alt";
};

Em seu arquivo de símbolos, você pode definir esse tipo como padrão ou definir por tipo de chave. Observe que você precisa que o tipo esteja em um arquivo no diretório types e a definição da chave em um arquivo no diretório dos símbolos - xkb usa uma hierarquia estrita do sistema de arquivos para encontrar cada componente.

Eu próprio fiz alguns hackers nos layouts de teclado para criar meu layout personalizado ( https://github.com/willghatch/hatchak ), que passou por várias iterações nas quais experimentei coisas estranhas. O XKB pode ser bastante sofisticado e estranho às vezes, mas ainda é o sistema de teclado mais configurável que já vi de longe. As melhores referências se você tiver mais problemas são:

[editar: os links originais estão inativos no momento, mas felizmente archive.org existe]

https://web.archive.org/web/20150722164820/http://www.charvolant.org/~doug/xkb/html/index.html

e

https://web.archive.org/web/20190419170426/http://pascal.tsu.ru/en/xkb/

Cuidado - embora essa seja a melhor documentação que encontrei, ela deixa muitos casos obscuros. Boa sorte.

William Hatch
fonte
Acho que sua ideia é realmente útil, mas estou lutando para usar o tipo criado nos arquivos de símbolos como padrão, como você mencionou. Os arquivos de símbolos que tenho no meu computador são bastante longos e não vejo nenhuma linha que se pareça com uma definição de um tipo padrão.
Dave
1
Você pode definir um padrão para uma seção em um arquivo de símbolos, definindo key.type. Você provavelmente pode ver um exemplo em /usr/share/X11/xkb/symbols/srvr_ctrl(ou em algum lugar assim), na seção "no_srvr_keys". Aqui está o que eu tenho: xkb_symbols "no_srvr_keys" {key.type = "TWO_LEVEL"; tecla <FK01> {[F1, F1]}; tecla <FK02> {[F2, F2]}; <etc ...>};
William Hatch
Obrigado pela resposta rápida. Eu acho que vou poder aplicar isso. Muito obrigado antecipadamente.
Dave
Apenas como um feedback para todos aqueles que chegam a esta página, mesmo muito tempo depois. Para mim, essa abordagem funcionou agora com um Fedora recém-instalado. Por alguma razão (para mim) desconhecida, não funcionou com o Mint quando escrevi esse comentário acima. Mas agora funciona e me poupa muito tempo.
Dave
-1

Pelo que parece, você precisa de um layout de teclado compatível com AltGr, para que você possa simplesmente mudar a tecla de atalho em "teclado> atalhos> tecla de caracteres alternativos" no menu de configuração. Normalmente você pode vê-lo alterando para um layout que "possui chaves mortas" ou está escrito "AltGr dead keys"


fonte
Não estou pedindo uso pessoal, preciso enviar o layout. Infelizmente, essa é uma resposta ruim. Obrigado no entanto.
precisa saber é o seguinte