O Matlab fica “louco” depois de digitar caracteres especiais

3

Estou usando um computador rodando Ubuntu e estou conectado através de ssh a uma máquina RedHat onde uso o Matlab no modo de linha de comando (matlab -nodesktop). A versão do Matlab é 7.10.0.499 (R2010a) .

Meu problema ocorre quando eu digito qualquer tecla que produz "caracteres especiais", como como ñ , á , etc ...

Consegui resolver isso, definindo esse alias como matlab:

alias mat 'xmodmap -e "keycode 47 = Escape" -e "keycode 34 = Escape"; matlab -nodesktop; setxkbmap;'

... mas essa solução faz essas alterações globalmente e não consigo digitar esses caracteres (contanto que o matlab esteja em execução) em qualquer outro aplicativo, incluindo terminais, navegadores, etc.

Eu li que isso é um problema para esta versão do Matlab, mas nesse caso, surge uma nova pergunta: se eu usar o xmodmap em um terminal (xterm) conectado ao outra máquina, por que essas mudanças se espalham globalmente para a minha sessão?

    
por nozimica 20.04.2011 / 19:18

4 respostas

1

Verifique se suas configurações de localidade correspondem à máquina local e remota: execute echo $LC_CTYPE em um terminal local e em uma sessão ssh. Se eles não corresponderem, tente novamente com o Matlab com LC_CTYPE definido para o valor correto. Se isso não funcionar, tente com export LC_CTYPE=C ou com export LC_CTYPE=en_US (tiro no escuro, não sei a natureza do bug com o Matlab).

Se você estiver em uma localidade UTF-8, tente em uma localidade de 8 bits, como latin1:

LC_CTYPE=en_US luit ssh redhat-host

Se mexer em localidades não ajuda, tente algo mais radical: execute stty istrip no terminal antes de iniciar o Matlab. Isso tira o oitavo bit dos caracteres que você digita. Quando você insere uma letra acentuada, o Matlab receberá um caractere ASCII de lixo, mas nada que possa confundi-lo. Observe que você deve fazer isso além de alternar para uma localidade latin-1, como en_US ; em outras localidades, em particular em UTF-8, os caracteres de lixo podem ser caracteres de controle.

Existem muitas configurações stty, mas não consigo pensar em uma que apenas faria com que caracteres não-ASCII fossem ignorados. Se você experimentar com stty , poderá reverter para os padrões normais com stty sane . As alterações são locais para um terminal.

    
por 21.04.2011 / 00:46
1

As mudanças que você está fazendo não são locais para o Matlab. O comando que você configura um alias para editar o mapa de teclas da sessão X atual, então inicia o Matlab. As mudanças acabam na sua máquina porque você tem propriedades de encaminhamento x na sua sessão ssh que permitem que os programas conversem com o servidor X upstream. Você poderia facilmente executar um xterm no computador remoto e ele seria iniciado localmente, porque esse shell sabe que a sessão X do upstream é através da conexão SSH.

Na verdade, se esse não fosse o caso, a correção do mapa do teclado não faria nada. Seu servidor X local é o lugar certo para definir isso e, até onde eu sei, o único lugar que funcionará.

    
por 20.04.2011 / 21:29
1

Aparentemente, esse bug foi corrigido para o MATLAB R2010b (7.11). O relatório de bug pode ser encontrado por trás de um inconveniente (mas gratuito) login na conta MathWorks aqui:

Extended characters typed or pasted into a nodesktop instance of MATLAB running in a xterm causes infinite loop of prompts to be displayed (bug 624817).

    
por 05.06.2011 / 10:49
1

Eu também tive problemas com caracteres especiais no matlab, rodando assim, resolveu isso para mim:

LANG=us_US.UTF-8 QT_IM_MODULE=xim GTK_IM_MODULE=xim XMODIFIERS=XIM matlab
    
por 26.09.2013 / 21:04