Eu encontrei o Bug 19365 que resolveu meu problema:
Iniciando o Xnest / Xephyr com -kb.
Quando eu inicio o Xephyr dentro do X, meu mapa do teclado fica instável na maioria das vezes apenas para caracteres não imprimíveis. Eu não posso usar as setas. De acordo com xev, a seta para baixo é mapeada para Super_R. A seta para cima é Print Screen. PgDown é mapeado para "Menu". Meu teclado funciona bem na tela original do X (: 0), mas na subdisplay do Xephyr (: 1), nada funciona bem.
Eu não tenho nenhuma coisa interessante do xmodmap acontecendo no meu monitor X principal que eu saiba. Tudo o que eu realmente faço é setxkbmap -option ctrl:swapcaps
.
Eu encontrei o Bug 19365 que resolveu meu problema:
Iniciando o Xnest / Xephyr com -kb.
A opção -kb não funciona no Ubuntu 10.04. Veja o que funcionou para mim:
Xephyr -keybd ephyr,,,xkbmodel=evdev -ac -screen 800x600 -br -reset -terminate :1
Você também pode executar xkbcomp $DISPLAY :1
na sessão X na qual o Xephyr foi iniciado. Este comando irá copiar o mapa do teclado do servidor atual para o recém-criado. Eu uso assim:
Xephyr -screen 800x600 :1 > /dev/null &
sleep 2 && xkbcomp $DISPLAY :1
DISPLAY=":1" ./runcommand
setxkbmap -model evdev -print | xkbcomp :100 :200
Se você usar o Xephyr com xpra e tiver um mapa de teclado incorreto. Se você vir uma situação estranha: Tecla para baixo funcionou como enter (seta para baixo como linha de quebra), seta para cima não está funcionando - use esse comando para definir o verdadeiro mapa xkb.
: 100 - Número de exibição com controle de xpra
: 200 - Controle do número de exibição do Xephyr
Pode ser essa ajuda de comando, se você usar o x2go e acoplar o ambiente de área de trabalho (se o teclado de configurações do x2go no cliente estiver desativado)
Parece que você não está usando o SSH para isso, certo? Ainda assim, o seguinte pode ajudá-lo a começar; é o que rabisquei para solucionar problemas de teclado ao usar ssh -Y
:
Você pode salvar o mapeamento atual do teclado (quando não está executando o Xephyr) usando:
xmodmap -pke > ~/my_xmodmap
Em seguida, no Xephyr, você pode tentar explicitamente carregá-lo:
xmodmap ~/my_xmodmap
E usando xev
você pode monitorar os eventos do teclado. Isso provavelmente não ajudará muito por si só, mas poderá ajudá-lo a pesquisar artigos mais úteis no Google, pois esse comando é mencionado algumas vezes nesses artigos.
Para mim (usando o teclado alemão), só funciona a combinação da solução anterior apontada por Arjan juntamente com o solução apontada por panzi em Xephyr layout do teclado , ou seja:
Inicie o Xephyr:
Xephyr -keybd ephyr,,,xkbmodel=evdev,xkblayout=de -ac -reset -screen 800x600 -retro :1 &
Salvar o mapeamento de teclado atual e iniciar um xterm carregando o mapeamento:
xmodmap -pke > /tmp/my_modmap ; xterm -display :1 -ls -e "xmodmap /tmp/my_modmap; bash" &
Servidor Xephyr: xserver-xephyr 2:1.9.5-1
Graças aos pôsteres originais!
Após mais googling sem sucesso, man setxkbmap
finalmente me indicou uma solução mais fácil:
USING WITH xkbcomp
If you have an Xserver and a client shell running on different computers and XKB configuration files on those machines are different you can get problems specifying a keyboard map by model, layout, options names.[...] You can solve this problem by running the xkbcomp on the client side too.[..] For example, the command
setxkbmap us -print | xkbcomp - $DISPLAY
makes both steps run on the same (client) machine and loads a keyboard map into the server.
Isto é,
inicie o Xephyr:
Xephyr -ac -reset -screen 800x600 -retro :50 &
(não é necessário fornecer informações de teclado)
e configure o novo xsession:
setxkbmap de -print | xkbcomp - :50
(você precisa saber o layout do seu teclado)
Observação: setxkbmap
é seu amigo e da versão 1.2.0 A útil opção -query
está disponível para ajudá-lo a solucionar problemas do seu teclado (consulte o log de correção correspondente ).