Переназначить ключи на виртуальном сервере

Я запускаю виртуальную коробку Ubuntu на своем Mac, используя Vagrant (который использует VirtualBox под капотом). Я хотел бы переназначить клавишу Caps Lock, чтобы выйти, когда я вхожу в виртуальный ящик, но в противном случае он не будет отображаться. Я попытался использовать xmodmap, когда я вошел в систему, как описано здесь:

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

Когда я запускаю xmodmap, я получаю эту ошибку:

xmodmap: unable to open display ''

У меня такое ощущение, что это связано с тем фактом, что я в основном удаленно подключаюсь к виртуальному ящику, но это примерно то, что я понимаю, и я, несомненно, ошибаюсь и в этом. Есть ли что-то, что я могу сделать, чтобы заставить эту работу работать?


person Steve Rowley    schedule 30.05.2012    source источник
comment
Вы знаете, этот вопрос лучше задать на SuperUser.com. Я предполагаю, что вы удаленно использовали SSH. У вас есть X-сервер, работающий на коробке? Если это так, поместите вызов xmodmap в один из сценариев запуска xsession. Сообщение в основном говорит вам, что xmodmap не знает, к какому дисплею подключиться; с X11 вы можете запускать произвольное количество графических сред и переключаться между ними, каждая из которых называется дисплеем. Но простое удаленное взаимодействие не соединит вас с работающим X-сервером. Это возможно, но я советую сначала попробовать это в xterm на графическом дисплее виртуальной машины.   -  person datenwolf    schedule 06.06.2012


Ответы (1)


Войдите в терминал на Ubuntu, установите DISPLAY=localhost:0.0, затем запустите xmodmap в этом терминале на виртуальной машине.

Дисплей X работает в двух частях: клиент или ваша программа, xterm или xmodmap, и сервер, процесс, взаимодействующий с (виртуальным) дисплеем. xmodmap указывает серверу x интерпретировать ключи по-разному.

Вы бы сделали это так же, как если бы вы сидели за машиной, на которой работает Ubuntu напрямую. Xmodmap происходит на виртуальной машине и изменяет x-сервер, работающий на виртуальной машине. ... как следует из комментария выше.

Если вы должны были войти в виртуальную машину по ssh, ключ должен правильно установить переменную DISPLAY. Он должен указать Xmodmap, где найти x-сервер.

Мне жаль, что у меня нет времени проверить именно эту ситуацию. Комментарий с вопросами. -Крис

person Chris    schedule 12.06.2012
comment
Проблеск надежды! Спасибо - другой ответ предполагал немного больше знаний с моей стороны, чем есть на самом деле. Я сделал (на виртуальной машине) - export DISPLAY=localhost.0.0, затем xmodmap ~/.xmodmap и получил аналогичное сообщение - xmodmap: unable to open display 'localhost:0.0' Так что пока не повезло. - person Steve Rowley; 13.06.2012
comment
для ясности, на всякий случай, это должно быть двоеточие. - person Chris; 14.06.2012
comment
Чтобы исключить сумасшествие DNS, вы можете попробовать установить DISPLAY=127.0.0.1:0.0, но этого действительно достаточно. Я предполагаю, что вы получаете сообщение об ошибке, потому что xmodmap не может открыть порт в процессе X11. Это предполагает, что у вас запущен X. Ты? ... как среда гнома? С другой стороны, это могут быть разрешения. Обычно вы сталкиваетесь с этим при попытке запустить программу x (xmodmap, xterm, xclock) на чужом дисплее. Есть способы исправить это (xhost +), но если все это на одной (виртуальной) машине, это не должно быть проблемой. - person Chris; 14.06.2012