2012-05-30 65 views
4

我在使用Vagrant(在引擎蓋下使用VirtualBox)運行我的Mac上的虛擬Ubuntu盒。我想重新映射我的大寫鎖定鍵,以便在登錄到虛擬框時進行轉義,但如果沒有,則保留未映射狀態。我試着用xmodmap的,而我是在爲框記錄如下所述:重新映射虛擬服務器上的密鑰

http://ubuntuforums.org/showthread.php?t=263385

當我運行xmodmap的,我得到這個錯誤:

xmodmap: unable to open display ''

給我的感覺,這與我基本上遠程處理虛擬盒子的事實有關,但就我的理解而言,這一點大概也是如此,我也無疑錯誤。我能做些什麼來完成這項工作?

+0

你知道,這個問題最好在SuperUser.com上提問。我假設你遠程使用SSH。你有一個X服務器在盒子上運行嗎?如果是這樣,請將xmodmap調用放入其中一個xsession啓動腳本中。該消息基本上告訴你,xmodmap不知道連接到哪個顯示器;使用X11,您可以啓動任意數量的圖形環境並在它們之間切換,每個稱爲「顯示」。但只是遠程進入該框不會將您連接到正在運行的X服務器。這是可能的,但我說,先在虛擬機圖形顯示的xterm中嘗試一下。 – datenwolf

回答

0

在ubuntu上登錄終端,設置DISPLAY = localhost:0.0 然後在該終端的vm上運行xmodmap。

X顯示器分兩部分運行:客戶端程序,xterm或xmodmap和服務器,進程與(虛擬)顯示器交談。 xmodmap通知 x服務器以不同方式解釋密鑰。

你會這樣做,就像你坐在一臺直接運行ubuntu的機器上一樣。 xmodmap發生在虛擬機上,並修改在虛擬機上運行的x服務器。 ......正如上面的評論所暗示的那樣。

如果您要ssh進入vm,關鍵是要正確設置DISPLAY變量。它 必須告訴Xmodmap在哪裏可以找到x服務器。

對不起,我沒有時間測試這種確切的情況。用問題評論。 -Chris

+0

希望一線!謝謝 - 另一個答案假設我的知識多於真的。我做了(在虛擬機上) - export DISPLAY = localhost.0.0,然後是'xmodmap〜/ .xmodmap',並且收到了類似的信息 - 'xmodmap:無法打開display'localhost:0.0''因此沒有運氣。爲了清楚起見 –

+0

,以防萬一,這需要冒號。 – Chris

+0

爲了排除DNS瘋狂,你可以嘗試設置DISPLAY = 127.0.0.1:0.0,但這真的到了。 我假設你正在收到錯誤,因爲xmodmap無法打開X11進程上的端口。這假定你有X運行。你做? ...就像一個GNOME環境?另一方面,它可能是權限的東西。通常,當你試圖在別人的顯示器上運行一個x程序(xmodmap,xterm,xclock)時,你會遇到這個問題。有辦法解決(xhost +),但如果這是全部在同一個(虛擬)機器上,它不應該是一個問題。 – Chris