
私は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 istrip
Matlabを起動する前に端末で実行してください。入力した文字の8番目のビットが削除されます。アクセント文字を入力すると、MatlabはガベージASCII文字を受け取りますが、混乱を招くことはありません。en_US
latin-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