Как я могу разобраться в раскладке клавиатуры Xephyr?
Когда я запускаю Xephyr внутри X, моя клавиатурная карта становится шаткой в основном только для непечатных символов. Я не могу использовать клавиши со стрелками. Согласно xev, стрелка вниз отображается на Super_R. Стрелка вверх - это экран печати. PgDown сопоставлен с "Меню". Моя клавиатура работает нормально на оригинальном дисплее X (:0), но в поддисплее Xephyr (:1) больше ничего не работает правильно.
У меня нет каких-то забавных вещей xmodmap, происходящих на моем главном дисплее X, о которых я знаю. Все, что я действительно делаю, это setxkbmap -option ctrl:swapcaps
,
7 ответов
Я нашел ошибку 19365, которая решила мою проблему:
Начиная Xnest / Xephyr с -kb.
Опция -kb не работает в Ubuntu 10.04. Вот что сработало для меня:
Xephyr -keybd ephyr,,,xkbmodel=evdev -ac -screen 800x600 -br -reset -terminate :1
Вы также можете запустить xkbcomp $DISPLAY :1
в X сеансе, в котором Xephyr был запущен. Эта команда скопирует карту клавиатуры с текущего сервера на ваш только что созданный. Я использую это так:
Xephyr -screen 800x600 :1 > /dev/null &
sleep 2 && xkbcomp $DISPLAY :1
DISPLAY=":1" ./runcommand
setxkbmap -model evdev -print | xkbcomp :100 :200
Если вы используете Xephyr с xpra и у вас неверная клавиатурная карта. Если вы видите странную ситуацию: клавиша "вниз" работала как ввод (стрелка вниз как линия разрыва), стрелка вверх не работает - используйте эту команду для установки истинной карты xkb.
: 100 - Показать номер с контролем xpra
: 200 - Отображение номера управления Xephyr
Может быть, эта команда поможет, если вы используете x2go и рабочую среду mate (если клавиатура настроек x2go на клиенте отключена)
После более неудачного поиска в Google, man setxkbmap
наконец указал мне на более простое решение:
ИСПОЛЬЗОВАНИЕ С xkbcomp
Если у вас есть Xserver и клиентская оболочка, работающие на разных компьютерах, и файлы конфигурации XKB на этих машинах различаются, вы можете получить проблемы с указанием карты клавиатуры по модели, раскладке, именам опций. [...] Вы можете решить эту проблему, запустив xkbcomp на стороне клиента тоже. [..] Например, команда
setxkbmap us -print | xkbcomp - $ DISPLAY
выполняет оба шага на одном и том же (клиентском) компьютере и загружает раскладку клавиатуры на сервер.
То есть,
запустить Xephyr:
Xephyr -ac -reset -screen 800x600 -retro :50 &
(не нужно предоставлять информацию о клавиатуре)
и настройте новый xsession:
setxkbmap de -print | xkbcomp - :50
(вам нужно знать раскладку клавиатуры)
Замечания: setxkbmap
ваш друг, а с версии 1.2.0 полезный -query
доступна опция, помогающая устранить неполадки клавиатуры (см. соответствующий журнал патчей).
Для меня (с использованием немецкой клавиатуры) он работает только в сочетании с предыдущим решением, указанным panzi, и решением, указанным panzi в раскладке клавиатуры Xephyr, а именно:
Запустите Xephyr:
Xephyr -keybd ephyr,,,xkbmodel=evdev,xkblayout=de -ac -reset -screen 800x600 -retro :1 &
Сохраните текущее сопоставление клавиатуры и запустите xterm, загружая сопоставление:
xmodmap -pke > /tmp/my_modmap ; xterm -display :1 -ls -e "xmodmap /tmp/my_modmap; bash" &
Xephyr сервер: xserver-xephyr 2:1.9.5-1
Благодаря оригинальным постерам!
Кажется, вы не используете SSH для этого, верно? Тем не менее, следующее может помочь вам начать; это то, что я записал для устранения проблем с клавиатурой при использовании ssh -Y
:
Вы можете сохранить текущее сопоставление клавиатуры (если Xephyr не запущен), используя:
xmodmap -pke > ~/my_xmodmap
Затем в Xephyr вы можете попытаться явно загрузить это:
xmodmap ~/my_xmodmap
И используя xev
Вы можете отслеживать события клавиатуры. Это, вероятно, не очень поможет само по себе, но может помочь вам найти более полезные статьи, так как эта команда иногда упоминается в таких статьях.