Como configurar um arquivo xmodmap para o gerenciador de sessões (ou pelo menos para o SLiM) por causa de uma chave física quebrada

5

Eu tenho meu laptop configurado para inicializar diretamente no SLiM como o gerenciador de sessão X.

No entanto, a tecla "M" do meu laptop está quebrada. Eu comecei com isso quando logado usando xmodmap para remapear minha chave de menu estranha para ele.

keycode 135 = m

Eu coloquei uma chamada para xmodmap no meu arquivo .xinitrc assim:

xmodmap ~/.xmodmaprc

Isso funciona muito bem quando eu estou logado. No entanto, meu nome de usuário contém um "m", então não posso digitá-lo diretamente com o teclado do laptop. Adicionar uma linha default_user ao meu /etc/slim.conf funciona para permitir que eu faça login pelo menos, mas se digitar minha senha incorretamente, preciso conectar um teclado USB ou reinicializar o sistema por completo para ter uma segunda chance.

Eu encontrei esta pergunta aqui no Stack Exchange, então copiei meu arquivo .xmodmaprc para o caminho especificado ('/ etc / X11 / Xmodmap). No entanto, isso não funcionou.

Como posso fazer isso funcionar em todo o sistema? Minha distro é Arch, se isso ajudar algum.

    
por MiffTheFox 29.06.2011 / 00:27

3 respostas

2

Eu não tenho arqueado, mas olhando para o pacote online xorg-xinit você deve ter este arquivo:

/etc/X11/xinit/xinitrc

Adicione seu comando xmodmap nele e ele deve funcionar: este script é executado pelo servidor quando é iniciado.

Melhor , parece que executa todos arquivos sob /etc/X11/xinit/xinitrc.d/ então apenas adicione um executável lá que executa o xmodmap.

    
por 09.09.2011 / 19:49
0

Uma vez eu tentei escrever uma solução genérica para o caso de uma chave física quebrada empregando XKB; Salvei minhas alterações de configuração no link . Eu não limpei tudo. (Ou seja, infelizmente, eu não cometi o estado inalterado inicial, então não é fácil inspecionar as mudanças que eu introduzi. Eu poderia tentar limpá-lo, e postar o histórico de revisão resultante quando eu terminar.) Se eu me lembro corretamente, funcionou.

Minha idéia era (para ter um teclado totalmente funcional) para remapear a chave no nível mais baixo (códigos de teclas), para que todas as combinações e layouts usem a nova chave física que deve substituir a quebrada ("T" meu caso).

Você pode ver o novo mapeamento de códigos de teclas em o último commit na ramificação "nohack" . Eu biferei /usr/share/X11/xkb/keycodes/evdev como /usr/share/X11/xkb/keycodes/evdev-with-broken-t mudando a linha:

alias <AD05> = <PAUS>;

(Na minha primeira revisão, que eu considerei um hack, eu simplesmente editei o pristine /usr/share/X11/xkb/keycodes/evdev . Esse hack é desfeito no commit vinculado. Eu lembro com certeza que a versão "hack" funcionou, não tinha certeza o ramo "nohack".)

Então eu defini uma nova opção XKB ("broken: t" - veja no commit acima), e usei em o arquivo de configuração para XKB que é processado no ALTLinux ao iniciar o X. (Eu acho que você também poderia colocar opções similares em xorg.conf , com uma sintaxe diferente, claro, ou peça ao seu xinit ou algo semelhante para executar setxkbmap com essas opções na inicialização.)

    
por 09.01.2013 / 02:53
-1

O servidor X não está totalmente carregado na tela de login. Tudo no XSession.d é carregado após o login. A única coisa que está sendo executada na tela de login é o gdm (se você está executando o gnome) e um servidor X básico. Para conectar-se ao servidor X antes de efetuar login, é necessário modificar o script / etc / gdm / PreSession / Default.

Você pode configurar xbindkeys para serem iniciadas a partir do script PreSession no gdm, para que você possa fazer com que o X remapeie suas chaves antes de efetuar o login.

    
por 04.07.2011 / 16:56