Keyboard

輸入特殊字元後,Matlab 變得“瘋狂”

  • September 26, 2013

我正在使用一台執行 Ubuntu 的電腦,我通過 ssh 連接到一台 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,為什麼這些更改會全域傳播到我的會話?

檢查本地和遠端機器上的區域設置是否匹配:echo $LC_CTYPE在本地終端和 ssh 會話中執行。如果它們不匹配,請使用LC_CTYPE設置為正確值的 Matlab 重試。如果這不起作用,請嘗試使用export LC_CTYPE=C或使用export LC_CTYPE=en_US(在黑暗中拍攝,我不知道 Matlab 錯誤的性質)。

如果您使用的是 UTF-8 語言環境,請嘗試使用 8 位語言環境,例如 latin1:

LC_CTYPE=en_US luit ssh redhat-host

如果擺弄語言環境沒有幫助,請嘗試更激進的方法:stty istrip在啟動 Matlab 之前在終端中執行。這會從您鍵入的字元中刪除第 8 位。當您輸入一個重音字母時,Matlab 將收到一個垃圾 ASCII 字元,但不會混淆它。請注意,除了切換到 latin-1 語言環境之外,您還應該執行此操作,例如en_US; 在其他語言環境中,特別是在 UTF-8 中,亂碼可以是控製字元。

有很多 stty 設置,但我想不出一個會導致非 ASCII 字元被忽略的設置。如果您嘗試使用stty,則可以使用stty sane. 更改是終端本地的。

引用自:https://unix.stackexchange.com/questions/11711