Updated xkb/locale files

Vasilis Vasaitis vvas at hal.csd.auth.gr
Tue Nov 27 00:44:59 EET 2001


  Γεια σας.

  Μετά από κάποια απουσία στο εξωτερικό, αλλά και προσωρινή έλλειψη χρόνου
όταν επέστρεψα (το Φεστιβάλ Κινηματογράφου να 'ναι καλά), εδώ και κάποιες
μέρες έχω επανέλθει στο φυσιολογικό μου πρόγραμμα. ¶δραξα λοιπόν την
ευκαιρία και δούλεψα πάνω στο γνωστό πια αρχείο symbols/el του xkb, καθώς
και στο αρχείο Compose για UTF-8 locales. Τα αποτελέσματα επισυνάπτονται για
να ελεχθούν και να δοκιμαστούν το δυνατόν περισσότερο πριν τα στείλω στα
XFree86, και περιγράφονται παρακάτω.

  Καταρχήν, πριν μιλήσω για το τι γίνεται με το UTF-8, το καινούριο el έχει
κάποια πλεονεκτήματα ακόμα και γι' αυτούς που χρησιμοποιούν το παλιό καλό
ISO 8859-7 (όπως εγώ). Για να τα δοκιμάσετε, κάνετε τα παρακάτω:

  - Αντιγράψτε το αρχείο στο /usr/lib/X11/xkb/symbols/el, ή στο
/etc/X11/xkb/symbols/el, ανάλογα με την διανομή σας.

  - Βεβαιωθείτε ότι το αρχείο symbols.dir στον αμέσως πιο πάνω κατάλογο
περιέχει τις εξής γραμμές:

-dp----- a---g--- el(basic)
h-p----- a---g--- el(bare)
--p----- a---g--- el(extended)
--p----- a---g--- el(polytonic)
--p----- a---g--- el(Sundeadkeys)
--p----- a---g--- el(sundeadkeys)
--p----- a---g--- el(nodeadkeys)

  Λογικά θα χρειαστεί να προσθέσετε μόνο τις γραμμές extended και polytonic,
οι υπόλοιπες μάλλον θα υπάρχουν ήδη στο αρχείο.

  - Τροποποιήστε το αρχείο ρυθμίσεων των XFree86 (/etc/X11/XF86Config-4 στο
δικό μου σύστημα), ώστε να φορτώνεται το τμήμα "extended" του el. Π.χ. εγώ
στο τμήμα του πληκτρολογίου έχω τις παρακάτω γραμμές:

   Option       "XkbRules"      "xfree86"
   Option       "XkbModel"      "pc104"
   Option       "XkbLayout"     "el"
   Option       "XkbVariant"    "extended"
   Option       "XkbOptions"    "grp:shift_toggle,ctrl:nocaps,grp_led:caps"

  Εννοείται ότι το "XkbModel" ποικίλλει ανάλογα με το ακριβές μοντέλο και
αριθμό πλήκτρων του πληκτρολογίου σας, ενώ το "XkbOptions" είναι εντελώς
υποκειμενικό. Σίγουρα πάντως θα πρέπει να περιέχει κάποιον τρόπο για να
εναλλάσσονται η λατινική και η ελληνική κατάσταση του πληκτρολογίου. Π.χ.
εγώ χρησιμοποιώ το "grp:shift_toggle", που εναλλάσσει με τα δύο shift, αν
και ο περισσότερος κόσμος φαίνεται να προτιμά το "grp:alt_shift_toggle". Σε
καμία περίπτωση δεν πρέπει να χρησιμοποιηθεί το "grp:switch" ή το
"grp:toggle", γιατί βασίζονται στο δεξί Alt· ο λόγος θα φανεί αμέσως
παρακάτω.

  Μετά από τα παραπάνω, φορτώνοντας τα X θα έχετε στην διάθεσή σας μερικούς
επιπλέον συνδυασμούς πλήκτρων με το δεξί Alt, το οποίο λειτουργεί ως
δεύτερος μετατροπέας της λειτουργίας ενός πλήκτρου, μετά το Shift.
Συγκεκριμένα, υποστηρίζονται οι εξής συνδυασμοί:

	AltGr + ,< =	«
	AltGr + .> =	»
	AltGr + ;: =	·	(διαφορετικό πλήκτρο σε κάθε κατάσταση)
	AltGr + eEεΕ =	Ευρώ

  Ο τελευταίος συνδυασμός γενικά δεν δίνει αποτελέσματα σε μη-UTF-8 locales,
αλλά YMMV. Τέλος πάντων, αυτά είναι μόνο μια ευκολία για όσους θέλουν να την
χρησιμοποιήσουν, και ελπίζω μόνο οι συνδυασμοί που διάλεξα να είναι αρκετά
προφανείς και λογικοί. Παρεμπιπτόντως, έχει δει κανείς ελληνικό πληκτρολόγιο
με το σύμβολο του Ευρώ πάνω, και αν ναι, σε ποια θέση ακριβώς είναι αυτό;

  Και πάμε στο δεύτερο και πιο ζουμερό μέρος...


Το ελληνικό πληκτρολόγιο και το σύνολο χαρακτήρων UTF-8
- -----------------------------------------------------

  Για τους γενναίους που δουλεύουν με το el_GR.UTF-8 αντί για το
el_GR.ISO8859-7, υπάρχουν επιπλέον οφέλη. Καταρχήν, το διαδικαστικό μέρος:

  - Ακολουθήστε πρώτα όλες τις οδηγίες που περιγράφηκαν παραπάνω για το el.

  - Δημιουργήστε τον κατάλογο /usr/lib/X11/locale/el_GR.UTF-8 και αντιγράψτε
εκεί το αρχείο Compose. *Μην* πειράξετε καθόλου το iso8859-7/Compose.

  - Προσθέστε τις παρακάτω γραμμές στο /usr/lib/X11/locale/compose.dir:

el_GR.UTF-8/Compose     el_GR.UTF-8
el_GR.UTF-8/Compose:    el_GR.UTF-8

  - Ξεκινήστε τόσο τον X server όσο και τους X clients κάτω από αυτό το
locale.

  Με αυτόν τον τρόπο, έχετε στην διάθεσή σας όλους τους συνδυασμούς πλήκτρων
που έχετε στο el_GR.ISO8859-7, τόσο με τη χρήση των νεκρών πλήκτρων, όσο και
με την χρήση του Multi_key. Για όσους δεν το γνωρίζουν, το Multi_key είναι
ένα ειδικό πλήκτρο που ξεκινάει μία ακολουθία σύνθεσης ενός χαρακτήρα από
κάποιους άλλους. Η θέση του στο πληκτρολόγιο είναι στο δεξί «παράθυρο», για
όσα πληκτρολόγια έχουν αυτό το πλήκτρο· διαφορετικά, είναι δυνατόν να
βρίσκεται πάνω στο δεξί Alt, με ρυθμίσεις που δεν θα προσπαθήσω να περιγράψω
εδώ. Μερικά παραδείγματα χρήσης του είναι τα:

	Multi_key ' Α	=	¶
	Multi_key > >	=	»
	Multi_key Ε =	=	Ευρώ

  Οι δυνατοί συνδυασμοί είναι πραγματικά αμέτρητοι, καλύπτοντας μερικά
αρκετά μεγάλα υποσύνολα του Unicode. Αν θέλετε λεπτομέρειες συμβουλευτείτε
το ίδιο το αρχείο Compose· η σύνταξή του είναι νομίζω αρκετά ξεκάθαρη.
Ελπίζω κάποια στιγμή να μπορέσω να καταγράψω τους σημαντικότερους από
αυτούς, αλλά αυτό κατά πάσα πιθανότητα θα γίνει αφού πλέον έχει
συμπεριληφθεί η δουλειά αυτή στα XFree86.

  Πέρα όμως από τους γενικούς συνδυασμούς, ιδιαίτερο ενδιαφέρον νομίζω ότι
θα παρουσιάζουν για πολλούς οι συνδυασμοί που καλύπτουν τα πολυτονικά
ελληνικά. Οι συνδυασμοί αυτοί, που καλύπτουν το μεγαλύτερο μέρος του
συγκεκριμένου αρχείου, έχουν παραχθεί αυτόματα από ένα πρόγραμμα σε Perl, το
οποίο ξεκίνησα να γράφω αμέσως μετά αφού ο Αλέξανδρος Διαμαντίδης δημοσίευσε
την δική του δουλειά πάνω σε αυτό το αντικείμενο. Αν και τελικά δεν
χρησιμοποίησα καθόλου αυτό που είχε φτιάξει, είναι βέβαιο ότι δεν θα είχα
ξεκινήσει αυτήν τη δουλειά αν δεν είχε προηγηθεί η δική του.

  Τέλος πάντων, για να μην πολυλογώ, είναι δυνατή η σύνθεση όλων των
πολυτονικών χαρακτήρων στο Unicode, με την χρήση του Multi_key, με την
παρακάτω αντιστοίχηση συμβόλων:

	'	οξεία (ή τόνος, όταν δεν συντίθεται άλλο σύμβολο)
	`	βαρεία
	~	περισπωμένη
	>	ψιλή
	<	δασεία
	|	υπογεγραμμένη
	"	διαλυτικά

  Για παράδειγμα, με τον συνδυασμό "Multi_key > ' | α" παίρνουμε το άλφα
μικρό με ψιλή, οξεία και υπογεγραμμένη. Για τις συνθέσεις αυτές, η σειρά των
συμβόλων δεν έχει σημασία, αλλά το γράμμα πρέπει να είναι πάντα τελευταίο.

  Τέλος, για όσους ενδιαφέρονται για την συνεχή σύνταξη πολυτονικού
κειμένου, παρά για την εισαγωγή κανά δυο χαρακτήρων πού και πού, το el που
στέλνω περιέχει ένα τμήμα ειδικά για αυτό τον σκοπό. Το βάζετε σε ισχύ
θέτοντας το "XkbVariant" σε "polytonic", και έχετε στην διάθεσή σας τα εξής
νεκρά πλήκτρα:

		(;:)	οξεία
	Shift + (;:)	ψιλή
		('")	βαρεία
	Shift + ('")	δασεία
		([{)	περισπωμένη
	Shift + ([{)	διαλυτικά
		(]})	υπογεγραμμένη

	AltGr + ([{)	μακρόν
	AltGr + (]})	βραχύ

  Πριν σπεύσετε να διαφωνήσετε με την επιλογή των πλήκτρων (είμαι σίγουρος
;-) ), ακούστε (ή μάλλον διαβάστε) το σκεπτικό με το οποίο επιλέχθηκαν
(copy-paste από παλιότερό μου μήνυμα στον adia):

  - Όλα τα νεκρά πλήκτρα είναι μαζεμένα και σχετικά εύκολα προσβάσιμα.
  - Τα συχνότερα χρησιμοποιούμενα σύμβολα είναι προσβάσιμα άμεσα.
  - Τα λιγότερα συχνά θέλουν το Shift.
  - Τα πολύ σπάνια θέλουν το AltGr· αν κάποιος προτιμά αυτό το πλήκτρο για
άλλες δουλειές, δεν θα του λείψουν και πολύ.
  - Από τα σύμβολα της ίδιας κατηγορίας, τα πιο συχνά τοποθετήθηκαν κοντά
στο κέντρο του πληκτρολογίου.
  - Στα δύο κάτω πλήκτρα υπάρχει μια ωραία συμμετρία. :^)
  - Για όλους τους παραπάνω λόγους, τα διαλυτικά τα σούταρα από την θέση που
έχουν στο μονοτονικό πληκτρολόγιο. Ναι, το ξέρω ότι έτσι χάνεται μια κάποια
«συμβατότητα», αλλά πιστεύω ότι είναι καλύτερα έτσι.

  Λοιπόν, αυτά είχα να πω. Ζητώ συγγνώμη αν σας κούρασα, αλλά προσπάθησα να
δώσω όσο πιο αναλυτικές οδηγίες γινόταν. Περιμένω σχόλια, παρατηρήσεις,
flames, ή ό,τι άλλο έχετε υπόψιν σας...

-- 
Vasilis Vasaitis
vvas at hal.csd.auth.gr

"When he was six he believed that the moon overhead followed him.
By nine he deciphered the illusion, trading magic for fact. No tradebacks.
So this is what it's like to be an adult..."
		-- Ed Vedder


-------------- next part --------------
default partial alphanumeric_keys alternate_group
xkb_symbols "basic" {

    include "el(bare)"

    key <TLDE> { [],	[     grave,	asciitilde	]	};
    key <AE01> { [],	[	  1,	exclam 		]	};
    key <AE02> { [],	[	  2,	at		]	};
    key <AE03> { [],	[	  3,	numbersign	]	};
    key <AE04> { [],	[	  4,	dollar		]	};
    key <AE05> { [],	[	  5,	percent		]	};
    key <AE06> { [],	[	  6,	asciicircum	]	};
    key <AE07> { [],	[	  7,	ampersand	]	};
    key <AE08> { [],	[	  8,	asterisk	]	};
    key <AE09> { [],	[	  9,	parenleft	]	};
    key <AE10> { [],	[	  0,	parenright	]	};
    key <AE11> { [],	[     minus,	underscore	]	};
    key <AE12> { [],	[     equal,	plus		]	};

    key <AD11> { [],	[ bracketleft,	braceleft	]	};
    key <AD12> { [],	[ bracketright,	braceright	]	};

    key <AC11> { [],	[ apostrophe,	quotedbl	]	};

    key <AB08> { [],	[     comma,	less		]	};
    key <AB09> { [],	[    period,	greater		]	};
    key <AB10> { [],	[     slash,	question	]	};
    key <BKSL> { [],	[ backslash,	bar		]	};

};

hidden partial alphanumeric_keys alternate_group
xkb_symbols "bare" {

    name[Group2] = "ISO8859-7";

    key <AD01> { [], [	semicolon,		colon		] };
    key <AD02> { [], [	Greek_finalsmallsigma,	Greek_SIGMA	] };
    key <AD03> { [], [	Greek_epsilon,		Greek_EPSILON	] };
    key <AD04> { [], [	Greek_rho,		Greek_RHO	] };
    key <AD05> { [], [	Greek_tau,		Greek_TAU	] };
    key <AD06> { [], [	Greek_upsilon,		Greek_UPSILON	] };
    key <AD07> { [], [	Greek_theta,		Greek_THETA	] };
    key <AD08> { [], [	Greek_iota,		Greek_IOTA	] };
    key <AD09> { [], [	Greek_omicron,		Greek_OMICRON	] };
    key <AD10> { [], [	Greek_pi,		Greek_PI	] };

    key <AC01> { [], [	Greek_alpha,		Greek_ALPHA	] };
    key <AC02> { [], [	Greek_sigma,		Greek_SIGMA	] };
    key <AC03> { [], [	Greek_delta,		Greek_DELTA	] };
    key <AC04> { [], [	Greek_phi,		Greek_PHI	] };
    key <AC05> { [], [	Greek_gamma,		Greek_GAMMA	] };
    key <AC06> { [], [	Greek_eta,		Greek_ETA	] };
    key <AC07> { [], [	Greek_xi,		Greek_XI	] };
    key <AC08> { [], [	Greek_kappa,		Greek_KAPPA	] };
    key <AC09> { [], [	Greek_lamda,		Greek_LAMDA	] };
    key <AC10> { [], [	dead_acute,		dead_diaeresis	] };

    key <AB01> { [], [	Greek_zeta,		Greek_ZETA	] };
    key <AB02> { [], [	Greek_chi,		Greek_CHI	] };
    key <AB03> { [], [	Greek_psi,		Greek_PSI	] };
    key <AB04> { [], [	Greek_omega,		Greek_OMEGA	] };
    key <AB05> { [], [	Greek_beta,		Greek_BETA	] };
    key <AB06> { [], [	Greek_nu,		Greek_NU	] };
    key <AB07> { [], [	Greek_mu,		Greek_MU	] };

    key <LSGT> { [], [	guillemotleft,		guillemotright	] };

};

partial alphanumeric_keys alternate_group
xkb_symbols "extended" {

    include "el(basic)"

    key.type = "THREE_LEVEL";

    key <AD01> { [], [	semicolon,	colon,		periodcentered	]};
    key <AD03> { [	e,		E,		EuroSign	],
		 [	Greek_epsilon,	Greek_EPSILON,	EuroSign	]};

    key <AC10> { [	semicolon,	colon,		periodcentered	]};

    key <AB08> { [	comma,		less,		guillemotleft	],
		 [	comma,		less,		guillemotleft	]};
    key <AB09> { [	period,		greater,	guillemotright	],
		 [	period,		greater,	guillemotright	]};

    key <RALT> {	[	ISO_Level3_Shift	]	};

    modifier_map Mod5 { ISO_Level3_Shift };

};

partial alphanumeric_keys alternate_group
xkb_symbols "polytonic" {

    include "el(extended)"

    key.type = "THREE_LEVEL";

    key <AD11> { [], [ 	dead_tilde,	dead_diaeresis,	dead_macron	]};
    key <AD12> { [], [	dead_iota,	VoidSymbol,	dead_breve	]};

    key <AC10> { [], [	dead_acute,		dead_horn	] };
    key <AC11> { [], [	dead_grave,		dead_ogonek	] };

};

partial alphanumeric_keys alternate_group
xkb_symbols "Sundeadkeys" {

    include "el(basic)"

};

partial alphanumeric_keys alternate_group
xkb_symbols "sundeadkeys" {

    include "el(Sundeadkeys)"

};

partial alphanumeric_keys alternate_group
xkb_symbols "nodeadkeys" {

    include "el(basic)"

    key <AC10> { [], [	semicolon,		colon		] };

};

-------------- next part --------------
A non-text attachment was scrubbed...
Name: Compose.gz
Type: application/octet-stream
Size: 10722 bytes
Desc: not available
URL: <http://lists.hellug.gr/pipermail/i18ngr/attachments/20011127/11f6eedd/attachment.obj>


More information about the I18ngr mailing list