Matlabは特殊文字を入力すると「狂った」

Matlabは特殊文字を入力すると「狂った」

私はUbuntuを実行しているコンピュータを使用し、SSHを介してRedHatコンピュータに接続します。 RedHatコンピュータは、Matlabをコマンドラインモード(matlab -nodesktop)として使用します。 Matlabのバージョンは7.10.0.499 (R2010a)

ñ「特殊文字」(例:など)を生成するキーを入力するとá問題が発生します...

このエイリアスをmatlabに設定してこの問題を解決しました。

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

...しかし、このソリューションはグローバルにこれらの変更を実行するため、他のアプリケーション(ターミナル、ブラウザなどを含む)でこれらの文字を入力することはできません(matlabの実行中)。

これはこのバージョンのMatlabに問題があることを読みましたが、この場合は新しい質問が発生します。別のコンピュータに接続されている端末(xterm)でxmodmapを使用している場合、これらの変更が私のセッションにグローバルに伝播されるのはなぜですか?

答え1

ローカルおよびリモートシステムのロケール設定が一致していることを確認してください。echo $LC_CTYPEローカル端末とSSHセッションで実行します。一致しない場合は、Matlabを使用して再試行してLC_CTYPE正しい値に設定してください。それでもうまくいかない場合は、withexport LC_CTYPE=Cまたはwithを使用してみてくださいexport LC_CTYPE=en_US(暗い場所での撮影、Matlabエラーの性質がわかりません)。

UTF-8ロケールを使用している場合は、latin1などの8ビットロケールを試してください。

LC_CTYPE=en_US luit ssh redhat-host

ロケールを調整しても役に立たない場合は、より根本的なアプローチを試してください。つまり、stty istripMatlabを起動する前に端末で実行してください。入力した文字の8番目のビットが削除されます。アクセント文字を入力すると、MatlabはガベージASCII文字を受け取りますが、混乱を招くことはありません。en_USlatin-1ロケール(たとえば)に切り替えるだけでなく、これを行う必要があります。他のロケール、特にUTF-8では、ガベージ文字が制御文字になる可能性があります。

多くのstty設定がありますが、ASCII以外の文字を無視する設定は考えられません。試している場合は、stty通常のデフォルトに戻すことができますstty sane。これらの変更は端末にローカルに適用されます。

答え2

変更はMatlabにデフォルトで適用されませんでした。エイリアスを設定したコマンドは、現在のXセッションのキーマップを編集してからMatlabを起動します。これらの変更は、プログラムがアップストリームXサーバーと通信できるようにするSSHセッションのx-forwarding属性のため、最終的にコンピュータに表示されます。リモートシステムでxtermを簡単に実行でき、シェルは上流のXセッションがSSH接続を介して行われていることを知っているため、ローカルで起動します。

実際にそうでない場合、キーマップの変更は役に立ちません。あなたのローカルXサーバーはこれを設定するのに適した場所であり、私が知っている限り唯一の実行可能な場所です。

答え3

明らかに、このバグはMATLAB R2010b(7.11)で修正されました。バグレポートは不便ですが無料のMathWorksアカウントログインの後に隠れています。

xtermで実行されているMATLABのNodesktopインスタンスに拡張文字を入力または貼り付けると、無限ループプロンプトが表示されます。(バグ 624817)

答え4

また、matlabの特殊文字に問題がありましたが、次のように実行すると問題が解決しました.

LANG=us_US.UTF-8 QT_IM_MODULE=xim GTK_IM_MODULE=xim XMODIFIERS=XIM matlab

関連情報