Protokół X Window System
X Window System Core Protocol – podstawowy protokół systemu X Window.
Mapowanie klawiatury
![](http://upload.wikimedia.org/wikipedia/commons/1/1c/Akey.jpg)
/
, 7
, i {
skojarzone są z trzema różnymi symbolami.W X Window System każdy fizyczny klawisz skojarzony jest z liczbą z zakresu 8-255, zwaną kodem klawiszowym (ang. keycode). Kod ten identyfikuje klawisz, ale nie konkretny znak czy wyrażenie (np. Page Up). Każdy z tych znaków czy wyrażeń jest natomiast identyfikowany jako symbol (ang. keysym). O ile kod klawiszowy zależy jedynie od tego, który klawisz został wciśnięty, o tyle symbol może zależeć od kombinacji kilku jednocześnie wciśniętych.
Kiedy klawisz jest wciśnięty lub zwalniany, serwer wysyła zdarzenie typu KeyPress
lub KeyRelease
do odpowiedniego klienta. Zdarzenie zawiera:
- kod wciśniętego klawisza
- bieżący stan modyfikatorów (Shift, Control, itp.) i przycisków myszy.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Keycode_to_keysym.svg/400px-Keycode_to_keysym.svg.png)
Serwer wysyła więc kod klawisza i stan modyfikatora, nie próbując tłumaczyć ich na konkretny znak. Odpowiedzialność za to tłumaczenie spada na klienta. Przykładowo, klient może otrzymać zdarzenie mówiące, że dany klawisz został wciśnięty, kiedy trzymany był Shift. Jeśli normalnie klawisz ten generował znak "a", to klient (ale nie serwer) przypisuje temu zdarzeniu znak "A".
O ile tłumaczeniem kodów klawiszowych na symbole zajmuje się klient, tabela reprezentująca te skojarzenia jest obsługiwana przez serwer. Umieszczenie tej tabeli w centralnym miejscu czyni ją dostępną dla wszystkich klientów. Zazwyczaj klient potraktuje mapę stamtąd jako domyślny sposób translacji kodów klawiszowych i modyfikatorów na odpowiednie symbole. Niezależnie od tego, może on to domyślne mapowanie nadpisać dowolnie własnym.
Modyfikator jest klawiszem, który wciśnięty zmienia interpretację innych klawiszy. Powszechnie występującym jest Shift: jeśli klawisz normalnie generujący "a" wciśnięty jest razem z Shift, to generuje duże "A". Inne znane modyfikatory to Control, Alt, "Meta".
Serwer X obsługuje co najwyżej osiem modyfikatorów. Każdy modyfikator można skojarzyć z więcej niż jednym klawiszem: to konieczne, bo wiele klawiatur posiada duplikaty pewnych modyfikatorów. Dla przykładu, większość z nich ma dwa klawisze Shift (lewy i prawy). Każdy produkuje inny kod klawiszowy, ale serwer X kojarzy obydwa z modyfikatorem Shift.
Dla każdego z ośmiu modyfikatorów serwer X obsługuje listę kodów klawiszowych pomyślanych dla modyfikatorów. Dla przykładu, jeśli lista pierwszego modyfikatora zawiera kod 0x37
, to klawisz, który produkuje kod 0x37
zostanie odczytany przez serwer X jako Shift.
Listę mapowań modyfikatorów obsługuje serwer X, ale może ona być zmieniona przez klienta. Jeśli np. klient może zażądać, by klawisz "F1" został dodany do listy modyfikatorów Shift. Odtąd klawisz ten zachowuje się jak inny modyfikator Shift, chociaż kod klawiszowy odpowiadający F1 pozostaje niezmieniony. W rezultacie F1 działa jak poprzednio (np. otwiera okno pomocy), ale również jako Shift (kiedy jest wciśnięty i w edytorze tekstu naciśniemy "a", na ekranie pojawi się "A").
Serwer X obsługuje modyfikatory dla przycisków myszy. Ich znaczenie może być co najwyżej zamieniane nawzajem miejscami, co może przydać się np. leworęcznym użytkownikom.
Program xmodmap
pokazuje i zmienia mapowania klawiszy, modyfikatorów i przycisków myszy.