[SiB@Celeron-D ~]$ rdesktop-vrdp 192.168.10.17:3389雖然只有某些『控制鍵』(如:方向鍵、翻上頁、翻下頁、插入、刪除)不能正常作用,對大部份的其它操作並不影響。
ERROR: Failed to open keymap en-us
但是,就因為這些不正常動作,使得透過遠端使用「虛擬機」時,與在本機操作有許多不同。為了讓這些操作感覺相同,解決這個『鍵盤對應』錯誤,也是一直列在我的『待辦清單』中。
偏偏想找這問題的解決辦法時,查不到相關資訊;在找其它問題的解法時,它反而就出現了,趕緊將它拿來試試。
1. 用「strace」記錄程式執行時,所調用的系統函式
參考的文章中使用「strace」追蹤、顯示程式執行時所調用的系統函式,[SiB@Celeron-D ~]$ strace -o vrdp.txt rdesktop-vrdp 192.168.10.17:3389上例中,是將執行過程中系統函式調用記錄存於 vrdp.txt 檔案中。在關閉「rdesktop-vrdp」之後,再從 vrdp.txt 檔案中過濾出與 keymap 有關的記錄,
ERROR: Failed to open keymap en-us
[SiB@Celeron-D ~]$ grep keymap vrdp.txt從上面的記錄中可以看到,「rdesktop-vrdp」搜尋『鍵盤對應』表的預設路徑,是先設向系統目錄「/opt/VirtualBox/rdesktop-vrdp-keymaps」,再使用者的個人目錄「/home/SiB/.rdesktop/keymaps」。有了這個資訊,要解決『找不到鍵盤對應」這個問題就簡單多了。
open("/home/Sib/.rdesktop/keymaps/zh-tw", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/VirtualBox/rdesktop-vrdp-keymaps/zh-tw", O_RDONLY) = -1 ENOENT (No such file or directory)
open("keymaps/zh-tw", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/SiB/.rdesktop/keymaps/zh", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/VirtualBox/rdesktop-vrdp-keymaps/zh", O_RDONLY) = -1 ENOENT (No such file or directory)
open("keymaps/zh", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/SiB/.rdesktop/keymaps/en-us", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/VirtualBox/rdesktop-vrdp-keymaps/en-us", O_RDONLY) = -1 ENOENT (No such file or directory)
open("keymaps/en-us", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "Failed to open keymap en-us\n", 28) = 28
2. 加入「keymaps」的鏈結
既然知道問題是『鍵盤對應表』的搜尋路徑問題,就建立一個『鏈結』將搜尋路徑導向正確的『鍵盤對應表』目錄。修改的方法有二:方法一:由系統管理者設定
系統管理者的設定比較簡單,先切換成 root 身份再下命令建立新鏈結[root@Celeron-D ~]# ln -s /usr/share/virtualbox /opt/VirtualBox設定完成後,所有使用者都同時解決這個問題。
方法二:由使用者個別設定
若無法由系統管理者設定時,使用者可以經由以下設定,解決自已的問題。[SiB@Celeron-D ~]$ ln -s /usr/share/virtualbox/rdesktop-vrdp-keymaps ~/.rdesktop/keymaps
已測試版本:
- Fedora: 19
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)