Króciutki dopisek do artykułu o trwałych sesjach VNC - rozwiązanie problemu z klawiaturą.
Po upgrade do Ubuntu 9.04 pojawiły się mistyczne problemy z mapowaniem klawiszy (widoczne w programach uruchomionych wewnątrz sesji VNC). Niemal każda litera generowała niewłaściwy znak - np. zamiast q pojawiało się c, zamiast w - . (kropka), zamiast e - g, zamiast r - v i tak dalej. Do tego nie działało backspace ani Enter, efekt wciśnięcia Entera dawał klawisz / (slash). Kompletny chaos.
Rozwiązanie jest na szczęście proste.
Rozwiązanie dla Xtightvnc
W pliku ~/.vnc/xstartup
trzeba
dopisać następujący wiersz:
export XKL_XMODMAP_DISABLE=1
Miejsce nie jest szczególnie ważne, byle zrobić to przed końcowym
exec
. Ja dopisałem na samym początku.
Po poprawce trzeba oczywiście zrestartować procesy zagnieżdżonego serwera - czy to robiąc we wnętrzu
sesji Logout, czy to ubijając procesy prostym killall Xtightvnc
(przy konfiguracji jaką zalecałem, zostaną automatycznie
uruchomione ponownie)
Znalazłem tę sztuczkę pod koniec zgłoszenia na inny temat a także tego artykułu. Jedno i drugie to trochę inne problemy ale także w moim wypadku poprawka zadziałała.
Co oznacza to ustawienie? Według zdawkowej znalezionej przeze mnie informacji, zniechęca desktop do przemapowywania klawiszy, pozostawiając je w domyślnym stanie.
Dalsze tropy wiodą w stronę biblioteki libxlavier gdzie
pojawia się powyższa zmienna i pakietu libxklavier12
. Tropienie, która aplikacja i w jakich okolicznościach uruchamia podejrzaną funkcję, już sobie odpuściłem.
Alternatywne rozwiązanie - vncserver
Inną metodę znalazłem tutaj. Zamiast
Xtightvnc
należy użyć vnc4server
i uruchamiać go z opcją -extension XFIXES
, np:
vncserver :1 -extension XFIXES
Nie testowałem.
Kolejne rozwiązanie
Jeszcze jeden obiecujący pomysł to polecenie:
$ gconftool \
--set /desktop/gnome/peripherals/keyboard/kbd/layouts \
--type List \
--list-type String \
[aa]
albo uruchomienie graficznego programu gconf-editor
, nawigacja do klucza desktop.gnome.peripherals.keyboard.kbd.layouts
i dodanie jakiejkolwiek wartości do pokazywanej tam pustej listy (np. aa
).
To rozwiązanie także wydaje się pomagać.