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올바른 값으로 설정하십시오. 그래도 작동하지 않으면 with export 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

관련 정보