[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

i386/1452: Euro,iso8859-1,swiss keyboards: keycap.pcvt & pcvtfonts changes




>Number:         1452
>Category:       i386
>Synopsis:       Euro,iso8859-1,swiss keyboards: keycap.pcvt & pcvtfonts changes
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    bugs
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Mon Oct 16 07:40:02 MDT 2000
>Last-Modified:
>Originator:     Mathias Schmocker
>Organization:
Mathias Schmocker              SMAT Engineering LLC
Tel. +41 22 800 3400           Bvd Georges-Favon 20
Fax. +41 22 800 3401           P.O. Box
mailto:smat@acm.org            CH-1211 Geneva 11
http://www.smat.ch/            Switzerland
>Release:        2.8-beta (GENERIC) updated ##-OCT-2000
>Environment:
	System      : OpenBSD 2.8
	Architecture: OpenBSD.i386
	Machine     : i386
>Description:
	1. The Swiss German and Swiss French keyboard mappings (c1 and c2 in
	file /usr/share/misc/keycap.pcvt) are wrong when used with a swiss
	mf2-kbd, e.g. many keys are wrong when used with pcvt's default
	character set (IBM code page 437), there is no minus key, etc.

	2. There should be a method to load a different pcvt font at startup.
	3. Some iso8859-1 pcvt fonts should be included in the next OpenBSD
	release.

>How-To-Repeat:
	Type "kcon -m c2" at the prompt in a vt. Or create the file
	/etc/kbdtype with one single line holding the desired keyboard
	(i.e. "c2" for swissfrench or "c1" for swissgerman mapping,
	look in /usr/share/misc/keycap.pcvt) and reboot,
	the defined keyboard mapping will be automatically loaded by the
	/etc/rc startup script by the /sbin/kbd command (which calls 
	"kcon -m %s" on an i386 if ispcvt() is valid, or should it be
	"/usr/sbin/kcon -m %s" ;)

>Fix:
	Here is the patch for /sys/arch/i386/isa/pcvt/Util/keycap/keycap.src
	(version 1.8 as per 16-OCT-2000) with my /usr/share/misc/keycap.pcvt
	I replaced the preceeding c1 and c2 mapping instead of commenting it,
	did somebody ever used them ?

	These swiss keyboards maps are quite long, but I wanted to access
	the entire iso8859-1 set and all the control chars, and retain a
	similar mapping as the one in XFree86 with fr_CH and de_CH XkbLayout
	(the corresponding system files are in /usr/X11R6/lib/X11/xkb/symbols,
	I changed de_CH to have dead_acute, dead_circumflex, dead_grave,
	dead_tilde, dead_diaeresis, and currency on AltGr-e in X).

	With pcvt, you can only define <key>, SHIFT-<key>, CTRL-<key> and
	ALTGR-<key>. It is not possible to have dead accents as in XFree86.
	Some accented keys can be accessed by SHIFT-ALT-<key> or
	SHIFT-ALTGR-<key> (the driver adds a fixed constant to the non-shifted
	code), I have added a translation where it was not possible to generate
	the symbol in that way (see patch).

	Two words of caution regarding the keycap file:
	The buffer kcon uses for reading the maps is 1024 character long,
	my "c2" map is not so far from a "Keycap entry too long" message, or
	a "Keycap entry too long" Memory fault (core dumped) kcon crash.
	If you need longer maps, remove the white space and make
	longer lines before changing KEYCAP_BUFSIZ in keycap.c
	The former keycap.pcvt file had non-ascii chars in it (the tg entry:
	"j\xf6rg wunsch's de-prog" and the ^[ ESCs' for K75 to K108 keydefs)
	the ESCs' disappeared in the head version, is that OK?

--- /sys/arch/i386/isa/pcvt/Util/keycap/keycap.src	Mon Oct 16 11:19:39 2000
+++ keycap.pcvt	Mon Oct 16 14:12:48 2000
@@ -115,30 +115,71 @@
         :K54=\351:S54=\311:A54=':\
         :l1#62:a0:
 
-# from codrv, untested
+# contributed by Mathias Schmocker, smat@acm.org
+# to be used with a pc105 or a pc102 keys keyboard and an iso8859-1
+# console font
+# similar key binding as with XFree86 with fr_CH or de_CH, and
+# CTRL+1	vulgar fraction 1/4
+# CTRL+2	vulgar fraction 1/2
+# CTRL+3	vulgar fraction 3/4
+# CTRL+4	capital letter A with grave accent
+# CTRL+5	capital letter U with diaeresis
+# CTRL+6	capital letter Y with acute accent
+# CTRL+7	capital icelandic letter THORN
+# CTRL+8	small letter u with circumflex accent
+# CTRL+9	small letter y with acute accent
+# CTRL+0		NULL <000> (CONTROL-@ on us-keyboard)
+# CTRL+<key with [>	ESC  <033>
+# CTRL+<key with \>	FS   <034>
+# CTRL+<key with ]>	GS   <035>
+# CTRL+<key with ^>	RS   <036>
+# CTRL+<key with _>	US   <037>
+# ALTGR+e	currency symbol (that could be the Euro symbol)
+# see also keycap(5)
 c1|swissde|Swiss German mapping:\
-        :K1=\247:S1=\260:p1#1:\
-        :S2=+:A2=|:S3=":A3=@:S4=*:A4=#:S5=\347:S7=&:A7=\254:\
-        :S8=/:A8=\246:S9=(:A9=\242:S10=):S11==:\
-        :K12=`:S12=\077:A12=':p2#12:\
-        :K13=^:S13=\\:A13=~:p3#13:\
-        :K22=z:S22=Z:C22=\032:\
-        :S27=\350:K27=\374:A27=[:\
-        :K28=\250:S28=!:A28=]:\
-        :S40=\351:K40=\366:\
-        :S41=\340:K41=\344:A41={:\
-        :K42=$:S42=\243:A42=}:\
-        :K45=<:S45=>:A45=\\:\
-        :K46=y:S46=Y:C46=\031:
-        :S53=;:S54=\072:K55=-:S55=_:\
-        :l1#62:a0:
+ :K1=\247:S1=\260:C1=\247:A1=\254:\
+ :K2=1:S2=+:C2=\274:A2=|:\
+ :K3=2:S3=":C3=\275:A3=@:\
+ :K4=3:S4=*:C4=\276:A4=#:\
+ :K5=4:S5=\347:C5=\300:\
+ :K6=5:S6=%:C6=\334:\
+ :K7=6:S7=&:C7=\335:A7=\254:\
+ :K8=7:S8=/:C8=\336:A8=\246:\
+ :K9=8:S9=(:C9=\373:A9=\242:\
+ :K10=9:S10=):C10=\375:A10=]:\
+ :K11=0:S11==:C11=\000:A11=}:\
+ :K12=':S12=?:C12=':A12=\264:\
+ :K13=\^:S13=`:C13=\036:A13=~:\
+ :A17=@:\
+ :A19=\244:\
+ :A20=\266:\
+ :K22=z:S22=Z:C22=\032:A22=z:\
+ :A25=\370:\
+ :A26=\376:\
+ :K27=\374:S27=\350:C27=\033:A27=[:\
+ :K28=\250:S28=!:C28=\035:A28=]:\
+ :K29=$:S29=\243:C29=$:A29=}:\
+ :A31=\346:\
+ :A32=\337:\
+ :A33=\360:\
+ :K40=\366:S40=\351:C40=\366:A40=\264:\
+ :K41=\344:S41=\340:C41=\344:A41={:\
+ :K45=<:S45=>:C45=\034:A45=\\:\
+ :K46=y:S46=Y:C46=\031:A46=\253:\
+ :A47=\273:\
+ :A48=\242:\
+ :A52:\265:\
+ :K53=,:S53=\073:C53=,:A53=,:\
+ :K54=.:S54=\072:C54=.:A54=\267:\
+ :K55=-:S55=_:C55=\037:A55=-:\
+ :K61=\040:S61=\040:C61=\040:A61=\040:l1#62:a0:
+# l1 is right AltGr 
 
-# from codrv, untested
+# contributed by Mathias Schmocker, smat@acm.org
 c2|swissfr|Swiss French mapping:\
-        :K27=\350:S27=\374:A27=[:\
-        :K40=\351:S40=\366:\
-        :K41=\340:S41=\344:A41={:\
-        :tc=swissde:
+ :K27=\350:S27=\374:C27=\033:\
+ :K40=\351:S40=\366:C40=\351:\
+ :K41=\340:S41=\344:C41=\340:tc=swissde:
 
 # more programmer-like than an original German kbd, you needn't
 # have gum-fingers to get `{}' and the like:-)
------ END OF PATCH

	There is still a small glitch somewhere in the vga part of the pcvt
	driver: the character 0x88 (SHIFT-ALT-BACKSPACE or SHIFT-ALTGR-H)
	is displayed as the plus-minus symbol (0xB1).
	
	
	
	Here is a proposal for loading a different pcvt font at startup,
	in /etc/rc.local (/usr/src/etc/rc.local if included in the next
	release) add after setting the pcvt screensaver something like:

if [ -x /usr/sbin/ispcvt -a -x /usr/sbin/loadfont -a -f /etc/pcvtfont ] \
    && /usr/sbin/ispcvt; then
	echo -n ' loadfont';
	/usr/sbin/loadfont -c0 -f`cat /etc/pcvtfont`
fi

	You'll need iso8859 fonts in /usr/misc/share/pcvtfonts/
	(sys/arch/i386/isa/pcvt/Util/fonts if included in the next release)
	I found them in the FreeBSD CVS tree under /src/share/syscon/fonts/.

	Here is the uu-encoded font I use, I modified the iso-8x16.fnt to
	have the Euro currency symbol instead of the standard currency symbol
	at 0xA4:

begin 444 iso8859-1-euro.816
M````````````````````````?H&E@8&]F8&!?@```````'[_V___P^?__WX`
M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X.
M&C)XS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
m`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
M`````,#`P/X``````````````"1F_V8D`````````````!`X.'Q\_OX`````
M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
M`````````/X````````````````````````8&````````````@8,&#!@P(``
M```````\9L/#V]O#PV8\````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
M````\&!@8&!@8&)F_@```````,/G___;P\/#P\,```````#&YO;^WL[&QL;&
M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````#_VYD8
M&!@8&!@\````````QL;&QL;&QL;&?````````,/#P\/#P\-F/!@```````##
MP\/#P]O;_V9F````````P\-F/!@8/&;#PP```````,/#PV8\&!@8&#P`````
M``#_PX8,&#!@P</_````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````YO_;V]O;
MVP```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
M````P\/#PV8\&````````````,/#P]O;_V8```````````##9CP8/&;#````
M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
M````````&!@8&!@8&!@8&````````'`8&!@.&!@8&'````````!VW```````
M```````````````0.&S&QL;^`````````````````````````````````!@\
M?O__?CP8`````%6J5:I5JE6J5:I5JE6J5:H`B(CXB(B(`#X("`@("````/B`
M\("`@``^(#P@("````!PB("`B'``/"(\*"0B````@("`@(#X`#X@/"`@(```
M`#AL;#@````````````````````8&'X8&```_P``````B,BHJ)B(`"`@("`@
M/@```(B(B(A0(``^"`@("`@``!@8&!@8&!CX````````````````````^!@8
M&!@8&!@8`````````!\8&!@8&!@8&!@8&!@8&!@?```````````8&!@8&!@8
M_Q@8&!@8&!@8_P````````````````````````#_````````````````````
M````_P````````````````````````#_`````````````````````````/\8
M&!@8&!@8'Q@8&!@8&!@8&!@8&!@8&/@8&!@8&!@8&!@8&!@8&!C_````````
M````````````_Q@8&!@8&!@8&!@8&!@8&!@8&!@8&!@8&`````P8,&`P&`P`
M?@`````````P&`P&#!@P`'X``````````G[L;&QL;&S,``````````8,?A@8
M?C!@````````.&QD8/!@8&!@YOP``````````````!@8````````````````
M`````````````````!@8`!@8&#P\/!@``````!@8?L/`P,##?A@8```````X
M;&1@\&!@8&#F_````````!XQ8&#^8/Q@,1X```````##9CP8_QC_&!@8````
M````&!@8&``8&!@8&```````?,9@.&S&QFPX#,9\`````,8`````````````
M````````?,:"NJ*BNH+&?```````<!AXR'@`^``````````````````V;-AL
M-@```````````````/X&!@8&````````````````?`````````````!\QH*Z
MJK*J@L9\``````#^````````````````````.&QL.```````````````````
M`!@8?A@8``!^``````!PV#!@R/@`````````````^!@P&-AP````````````
M&#!@``````````````````````!F9F9F9GYC8,```````'_;V]M[&QL;&QL`
M`````````````!@8```````````````````````8#`8\````8.!@8&#P````
M`````````'#8B-AP`/@`````````````````V&PV;-@`````````P,#"QLP8
M,&;.ECX&!@```,#`PL;,&#!@SIL&#!\```#P,'(V[!@P9LZ6/@8&`````#`P
M`#`P8,#&QGP`````8#`8`#ALQL;^QL;&``````P8,``X;,;&_L;&Q@`````0
M.&P`.&S&QO[&QL8``````';<`#ALQL;^QL;&``````#&`!`X;,;&_L;&Q@``
M```X;#@`.&S&QO[&QL8````````^;,S,_LS,S,S.````````/&;"P,#`PF8\
M#`9\```P&`P`_F9@?&!@9OX`````&#!@`/YF8'Q@8&;^`````!`X;`#^9F!\
M8&!F_@``````Q@#^9F!@?&!@9OX`````,!@,`#P8&!@8&!@\``````P8,``\
M&!@8&!@8/``````8/&8`/!@8&!@8&#P``````&8`/!@8&!@8&!@\````````
M>&QF9F;V9F9L>`````!VW`#&YO;^WL[&QL8`````8#`8`'S&QL;&QL9\````
M``P8,`!\QL;&QL;&?``````0.&P`?,;&QL;&QGP`````=MP`?,;&QL;&QL9\
M``````#&`'S&QL;&QL;&?```````````QFPX$#ALQ@```````@9\SL[>UM;V
MYN9\P(```&`P&`#&QL;&QL;&?``````,&#``QL;&QL;&QGP`````$#AL`,;&
MQL;&QL9\``````#&`,;&QL;&QL;&?``````,&#``P\-F/!@8&#P`````\&!\
M9F9F?&!@8&#P````````.&S&SMS8S,;6W,"`````8#`8`'@,?,S,S'8`````
M`!@P8`!X#'S,S,QV```````0.&P`>`Q\S,S,=@```````';<`'@,?,S,S'8`
M``````#,``!X#'S,S,QV```````X;#@`>`Q\S,S,=@```````````&X[&W[8
MW'<``````````#QF8&!F/`P&/`````!@,!@`?,;^P,#&?```````#!@P`'S&
M_L#`QGP``````!`X;`!\QO[`P,9\````````Q@``?,;^P,#&?```````8#`8
M`#@8&!@8&#P```````8,&``X&!@8&!@\```````8/&8`.!@8&!@8/```````
M`&8``#@8&!@8&#P``````&PX.&P,/&S,S,QX````````=MP`W&9F9F9F9@``
M````8#`8`'S&QL;&QGP``````!@P8`!\QL;&QL9\```````0.&P`?,;&QL;&
M?````````';<`'S&QL;&QGP```````#&``!\QL;&QL9\```````````8&`!^
M`!@8```````````"!GS.WM;VYGS`@````&`P&`#,S,S,S,QV```````8,&``
MS,S,S,S,=@``````,'C,`,S,S,S,S'8```````#,``#,S,S,S,QV```````8
M,&``QL;&QL;&?@8,^`````#P8'QF9F9F9GQ@8/````!F9@#N9F9F9F8^!@PX
!`&``
`
end

	And finaly, here is a description of the iso-8859 character set
	with the key combinations to access all chars (uu-encoded because
	of non ascii-chars), you can view it with cat or more if
	the environment variable LESSCHARSET=latin1 is set.
	In vi, you'll see the octal codes, because the locale support
	implementation is incomplete (Q: shall we do it for 2.8 ?)
	This file comes from ftp.columbia.edu/kermit/charsets/latin1.txt,
	edited (and corrected for having all octal values right) by me.

begin 444 latin1.txt
M25-/(#@X-3DM,2!,871I;B!!;'!H86)E="`Q"F-H87(@9&5C(&-O;"]R;W<@
M;V-T(&AE>"`@9&5S8W)I<'1I;VX)"0D):V5Y(&9O<B!S=VES<R!K8F0*6Z!=
M("`Q-C`@(#$P+S`P("`R-#`@($$P("!.3RU"4D5!2R!34$%#10D)"4%,5"M3
M4$%#10I;H5T@(#$V,2`@,3`O,#$@(#(T,2`@03$@($E.5D525$5$($580TQ!
M34%424].($U!4DL)"5-(2494*T%,5"LA"ENB72`@,38R("`Q,"\P,B`@,C0R
M("!!,B`@0T5.5"!324=."0D)"4%,5$=2*S@*6Z-=("`Q-C,@(#$P+S`S("`R
M-#,@($$S("!03U5.1"!324=."0D)"5-(2494*R0*6Z1=("`Q-C0@(#$P+S`T
M("`R-#0@($$T("!#55)214Y#62!324=."0D)04Q41U(K90I;I5T@(#$V-2`@
M,3`O,#4@(#(T-2`@034@(%E%3B!324=."0D)"5-(2494*T%,5"LU"ENF72`@
M,38V("`Q,"\P-B`@,C0V("!!-B`@0E)/2T5.($)!4@D)"0E!3%1'4BLW"ENG
M72`@,38W("`Q,"\P-R`@,C0W("!!-R`@4$%204=205!((%-)1TX)"0D\:V5Y
M/@I;J%T@(#$V."`@,3`O,#@@(#(U,"`@03@@($1)045215-)4PD)"0D\:V5Y
M/@I;J5T@(#$V.2`@,3`O,#D@(#(U,2`@03D@($-/4%E224=(5"!324=."0D)
M4TA)1E0K04Q4*SD*6ZI=("`Q-S`@(#$P+S$P("`R-3(@($%!("!&14U)3DE.
M12!/4D1)3D%,($E.1$E#051/4@D)4TA)1E0K04Q4*S,*6ZM=("`Q-S$@(#$P
M+S$Q("`R-3,@($%"("!,1494($%.1TQ%(%%53U1!5$E/3B!-05)+"0E!3%1'
M4BMY"ENL72`@,3<R("`Q,"\Q,B`@,C4T("!!0R`@3D]4(%-)1TX)"0D)04Q4
M1U(K-@I;K5T@(#$W,R`@,3`O,3,@(#(U-2`@040@(%-/1E0@2%E02$5."0D)
M04Q4*RT*6ZY=("`Q-S0@(#$P+S$T("`R-38@($%%("!214=)4U1%4D5$(%12
M041%($U!4DL@4TE'3@D)04Q4*RX*6Z]=("`Q-S4@(#$P+S$U("`R-3<@($%&
M("!-04-23TX)"0D)4TA)1E0K04Q4*S<*6[!=("`Q-S8@(#$Q+S`P("`R-C`@
M($(P("!$14=2144@4TE'3BP@4DE.1R!!0D]610D)4TA)1E0K/&ME>3X*6[%=
M("`Q-S<@(#$Q+S`Q("`R-C$@($(Q("!03%53+4U)3E53(%-)1TX)"0E!3%0K
M,0I;LET@(#$W."`@,3$O,#(@(#(V,B`@0C(@(%-54$524T-225!4(%173PD)
M"4%,5"LR"ENS72`@,3<Y("`Q,2\P,R`@,C8S("!",R`@4U5015)30U))4%0@
M5$A2144)"0E!3%0K,PI;M%T@(#$X,"`@,3$O,#0@(#(V-"`@0C0@($%#551%
M($%#0T5.5`D)"4%,5$=2*R<*6[5=("`Q.#$@(#$Q+S`U("`R-C4@($(U("!-
M24-23R!324=."0D)"4%,5"LU"ENV72`@,3@R("`Q,2\P-B`@,C8V("!"-B`@
M4$E,0U)/5R!324=."0D)04Q4*S8*6[==("`Q.#,@(#$Q+S`W("`R-C<@($(W
M("!-241$3$4@1$]4"0D)"4%,5$=2*RX*6[A=("`Q.#0@(#$Q+S`X("`R-S`@
M($(X("!#141)3$Q!"0D)"4%,5"LX"ENY72`@,3@U("`Q,2\P.2`@,C<Q("!"
M.2`@4U5015)30U))4%0@3TY%"0D)0U123"M!3%0K.0I;NET@(#$X-B`@,3$O
M,3`@(#(W,B`@0D$@($U!4T-53$E.12!/4D1)3D%,($E.1$E#051/4@E32$E&
M5"M!3%0K+@I;NUT@(#$X-R`@,3$O,3$@(#(W,R`@0D(@(%))1TA4($%.1TQ%
M(%%53U1!5$E/3B!-05)+"0E!3%1'4BMX"EN\72`@,3@X("`Q,2\Q,B`@,C<T
M("!"0R`@5E5,1T%2($9204-424].($].12!154%25$52"4-44DPK,0I;O5T@
M(#$X.2`@,3$O,3,@(#(W-2`@0D0@(%953$=!4B!&4D%#5$E/3B!/3D4@2$%,
M1@D)0U123"LR"EN^72`@,3DP("`Q,2\Q-"`@,C<V("!"12`@5E5,1T%2($92
M04-424].(%1(4D5%(%%505)415)3"4-44DPK,PI;OUT@(#$Y,2`@,3$O,34@
M(#(W-R`@0D8@($E.5D525$5$(%%515-424].($U!4DL)"5-(2494*T%,5"LG
M"EO`72`@,3DR("`Q,B\P,"`@,S`P("!#,"`@0T%0251!3"!,151415(@02!7
M251(($=2059%($%#0T5.5`E#5%),*S0*6\%=("`Q.3,@(#$R+S`Q("`S,#$@
M($,Q("!#05!)5$%,($Q%5%1%4B!!(%=)5$@@04-55$4@04-#14Y4"5-(2494
M*T%,5"MA"EO"72`@,3DT("`Q,B\P,B`@,S`R("!#,B`@0T%0251!3"!,1514
M15(@02!7251(($-)4D-5349,15@@04-#14Y4"5-(2494*T%,5"MB"EO#72`@
M,3DU("`Q,B\P,R`@,S`S("!#,R`@0T%0251!3"!,151415(@02!7251((%1)
M3$1%"5-(2494*T%,5"MC"EO$72`@,3DV("`Q,B\P-"`@,S`T("!#-"`@0T%0
M251!3"!,151415(@02!7251(($1)045215-)4PE32$E&5"M!3%0K9`I;Q5T@
M(#$Y-R`@,3(O,#4@(#,P-2`@0S4@($-!4$E404P@3$545$52($$@5TE42"!2
M24Y'($%"3U9%"5-(2494*T%,5"ME"EO&72`@,3DX("`Q,B\P-B`@,S`V("!#
M-B`@0T%0251!3"!$25!(5$A/3D<@02!7251(($4)"5-(2494*T%,5"MF"EO'
M72`@,3DY("`Q,B\P-R`@,S`W("!#-R`@0T%0251!3"!,151415(@0R!7251(
M($-%1$E,3$$)4TA)1E0K04Q4*V<*6\A=("`R,#`@(#$R+S`X("`S,3`@($,X
M("!#05!)5$%,($Q%5%1%4B!%(%=)5$@@1U)!5D4@04-#14Y4"5-(2494*T%,
M5"MH"EO)72`@,C`Q("`Q,B\P.2`@,S$Q("!#.2`@0T%0251!3"!,151415(@
M12!7251(($%#551%($%#0T5.5`E32$E&5"M!3%0K:0I;RET@(#(P,B`@,3(O
M,3`@(#,Q,B`@0T$@($-!4$E404P@3$545$52($4@5TE42"!#25)#54U&3$58
M($%#0T5.5`E32$E&5"M!3%0K:@I;RUT@(#(P,R`@,3(O,3$@(#,Q,R`@0T(@
M($-!4$E404P@3$545$52($4@5TE42"!$24%%4D5325,)4TA)1E0K04Q4*VL*
M6\Q=("`R,#0@(#$R+S$R("`S,30@($-#("!#05!)5$%,($Q%5%1%4B!)(%=)
M5$@@1U)!5D4@04-#14Y4"5-(2494*T%,5"ML"EO-72`@,C`U("`Q,B\Q,R`@
M,S$U("!#1"`@0T%0251!3"!,151415(@22!7251(($%#551%($%#0T5.5`E3
M2$E&5"M!3%0K;0I;SET@(#(P-B`@,3(O,30@(#,Q-B`@0T4@($-!4$E404P@
M3$545$52($D@5TE42"!#25)#54U&3$58($%#0T5.5`E32$E&5"M!3%0K;@I;
MSUT@(#(P-R`@,3(O,34@(#,Q-R`@0T8@($-!4$E404P@3$545$52($D@5TE4
M2"!$24%%4D5325,)4TA)1E0K04Q4*V\*6]!=("`R,#@@(#$S+S`P("`S,C`@
M($0P("!#05!)5$%,($E#14Q!3D1)0R!,151415(@151("5-(2494*T%,5"MP
M"EO172`@,C`Y("`Q,R\P,2`@,S(Q("!$,2`@0T%0251!3"!,151415(@3B!7
M251((%1)3$1%"5-(2494*T%,5"MQ"EO272`@,C$P("`Q,R\P,B`@,S(R("!$
M,B`@0T%0251!3"!,151415(@3R!7251(($=2059%($%#0T5.5`E32$E&5"M!
M3%0K<@I;TUT@(#(Q,2`@,3,O,#,@(#,R,R`@1#,@($-!4$E404P@3$545$52
M($\@5TE42"!!0U5412!!0T-%3E0)4TA)1E0K04Q4*W,*6]1=("`R,3(@(#$S
M+S`T("`S,C0@($0T("!#05!)5$%,($Q%5%1%4B!/(%=)5$@@0TE20U5-1DQ%
M6"!!0T-%3E0)4TA)1E0K04Q4*W0*6]5=("`R,3,@(#$S+S`U("`S,C4@($0U
M("!#05!)5$%,($Q%5%1%4B!/(%=)5$@@5$E,1$4)4TA)1E0K04Q4*W4*6]9=
M("`R,30@(#$S+S`V("`S,C8@($0V("!#05!)5$%,($Q%5%1%4B!/(%=)5$@@
M1$E!15)%4TE3"5-(2494*T%,5"MV"EO772`@,C$U("`Q,R\P-R`@,S(W("!$
M-R`@355,5$E03$E#051)3TX@4TE'3@D)4TA)1E0K04Q4*W<*6]A=("`R,38@
M(#$S+S`X("`S,S`@($0X("!#05!)5$%,($Q%5%1%4B!/(%=)5$@@3T),25%5
M12!35%)/2T4)4TA)1E0K04Q4*W@*6]E=("`R,3<@(#$S+S`Y("`S,S$@($0Y
M("!#05!)5$%,($Q%5%1%4B!5(%=)5$@@1U)!5D4@04-#14Y4"5-(2494*T%,
M5"MY"EO:72`@,C$X("`Q,R\Q,"`@,S,R("!$02`@0T%0251!3"!,151415(@
M52!7251(($%#551%($%#0T5.5`E32$E&5"M!3%0K>@I;VUT@(#(Q.2`@,3,O
M,3$@(#,S,R`@1$(@($-!4$E404P@3$545$52(%4@5TE42"!#25)#54U&3$58
M($%#0T5.5`E32$E&5"M!3%1'4BMX"EO<72`@,C(P("`Q,R\Q,B`@,S,T("!$
M0R`@0T%0251!3"!,151415(@52!7251(($1)045215-)4PE#5%),*S4*6]U=
M("`R,C$@(#$S+S$S("`S,S4@($1$("!#05!)5$%,($Q%5%1%4B!9(%=)5$@@
M04-55$4@04-#14Y4"4-44DPK-@I;WET@(#(R,B`@,3,O,30@(#,S-B`@1$4@
M($-!4$E404P@24-%3$%.1$E#($Q%5%1%4B!42$]23@E#5%),*S<*6]]=("`R
M,C,@(#$S+S$U("`S,S<@($1&("!334%,3"!'15)-04X@3$545$52(%-(05)0
M(',)04Q41U(K<PI;X%T@(#(R-"`@,30O,#`@(#,T,"`@13`@(%--04Q,($Q%
M5%1%4B!A(%=)5$@@1U)!5D4@04-#14Y4"3QK97D^"EOA72`@,C(U("`Q-"\P
M,2`@,S0Q("!%,2`@4TU!3$P@3$545$52(&$@5TE42"!!0U5412!!0T-%3E0)
M04Q4*V$*6^)=("`R,C8@(#$T+S`R("`S-#(@($4R("!334%,3"!,151415(@
M82!7251(($-)4D-5349,15@@04-#14Y4"4%,5"MB"EOC72`@,C(W("`Q-"\P
M,R`@,S0S("!%,R`@4TU!3$P@3$545$52(&$@5TE42"!424Q$10D)04Q4*V,*
M6^1=("`R,C@@(#$T+S`T("`S-#0@($4T("!334%,3"!,151415(@82!7251(
M($1)045215-)4PE32$E&5"L\:V5Y/@I;Y5T@(#(R.2`@,30O,#4@(#,T-2`@
M134@(%--04Q,($Q%5%1%4B!A(%=)5$@@4DE.1R!!0D]610E!3%0K90I;YET@
M(#(S,"`@,30O,#8@(#,T-B`@138@(%--04Q,($1)4$A42$].1R!A(%=)5$@@
M90D)04Q41U(K80I;YUT@(#(S,2`@,30O,#<@(#,T-R`@13<@(%--04Q,($Q%
M5%1%4B!C(%=)5$@@0T5$24Q,00E32$E&5"L\:V5Y/@I;Z%T@(#(S,B`@,30O
M,#@@(#,U,"`@13@@(%--04Q,($Q%5%1%4B!E(%=)5$@@1U)!5D4@04-#14Y4
M"4%,5"MH"EOI72`@,C,S("`Q-"\P.2`@,S4Q("!%.2`@4TU!3$P@3$545$52
M(&4@5TE42"!!0U5412!!0T-%3E0)/&ME>3X*6^I=("`R,S0@(#$T+S$P("`S
M-3(@($5!("!334%,3"!,151415(@92!7251(($-)4D-5349,15@@04-#14Y4
M"4%,5"MJ"EOK72`@,C,U("`Q-"\Q,2`@,S4S("!%0B`@4TU!3$P@3$545$52
M(&4@5TE42"!$24%%4D5325,)04Q4*VL*6^Q=("`R,S8@(#$T+S$R("`S-30@
M($5#("!334%,3"!,151415(@:2!7251(($=2059%($%#0T5.5`E!3%0K;`I;
M[5T@(#(S-R`@,30O,3,@(#,U-2`@140@(%--04Q,($Q%5%1%4B!I(%=)5$@@
M04-55$4@04-#14Y4"4%,5"MM"EON72`@,C,X("`Q-"\Q-"`@,S4V("!%12`@
M4TU!3$P@3$545$52(&D@5TE42"!#25)#54U&3$58($%#0T5.5`E!3%0K;@I;
M[UT@(#(S.2`@,30O,34@(#,U-R`@148@(%--04Q,($Q%5%1%4B!I(%=)5$@@
M1$E!15)%4TE3"4%,5"MO"EOP72`@,C0P("`Q-2\P,"`@,S8P("!&,"`@4TU!
M3$P@24-%3$%.1$E#($Q%5%1%4B!E=&@)"4%,5"MP"EOQ72`@,C0Q("`Q-2\P
M,2`@,S8Q("!&,2`@4TU!3$P@3$545$52(&X@5TE42"!424Q$10D)04Q4*W$*
M6_)=("`R-#(@(#$U+S`R("`S-C(@($8R("!334%,3"!,151415(@;R!7251(
M($=2059%($%#0T5.5`E!3%0K<@I;\UT@(#(T,R`@,34O,#,@(#,V,R`@1C,@
M(%--04Q,($Q%5%1%4B!O(%=)5$@@04-55$4@04-#14Y4"4%,5"MS"EOT72`@
M,C0T("`Q-2\P-"`@,S8T("!&-"`@4TU!3$P@3$545$52(&\@5TE42"!#25)#
M54U&3$58($%#0T5.5`E!3%0K=`I;]5T@(#(T-2`@,34O,#4@(#,V-2`@1C4@
M(%--04Q,($Q%5%1%4B!O(%=)5$@@5$E,1$4)"4%,5"MU"EOV72`@,C0V("`Q
M-2\P-B`@,S8V("!&-B`@4TU!3$P@3$545$52(&\@5TE42"!$24%%4D5325,)
M4TA)1E0K/&ME>3X*6_==("`R-#<@(#$U+S`W("`S-C<@($8W("!$259)4TE/
M3B!324=."0D)04Q4*W<*6_A=("`R-#@@(#$U+S`X("`S-S`@($8X("!334%,
M3"!,151415(@;R!7251(($]"3$E1544@4U123TM%"4%,5$=2*V\*6_E=("`R
M-#D@(#$U+S`Y("`S-S$@($8Y("!334%,3"!,151415(@=2!7251(($=2059%
M($%#0T5.5`E!3%0K>0I;^ET@(#(U,"`@,34O,3`@(#,W,B`@1D$@(%--04Q,
M($Q%5%1%4B!U(%=)5$@@04-55$4@04-#14Y4"4%,5"MZ"EO[72`@,C4Q("`Q
M-2\Q,2`@,S<S("!&0B`@4TU!3$P@3$545$52('4@5TE42"!#25)#54U&3$58
M($%#0T5.5`E#5%),*S@*6_Q=("`R-3(@(#$U+S$R("`S-S0@($9#("!334%,
M3"!,151415(@=2!7251(($1)045215-)4PE32$E&5"L\:V5Y/@I;_5T@(#(U
M,R`@,34O,3,@(#,W-2`@1D0@(%--04Q,($Q%5%1%4B!Y(%=)5$@@04-55$4@
M04-#14Y4"4-44DPK.0I;_ET@(#(U-"`@,34O,30@(#,W-B`@1D4@(%--04Q,
M($E#14Q!3D1)0R!,151415(@5$A/4DX)04Q41U(K<`I;_UT@(#(U-2`@,34O
M,34@(#,W-R`@1D8@(%--04Q,($Q%5%1%4B!Y(%=)5$@@1$E!15)%4TE3"4%,
-5"M"04-+4U!!0T4*"E--
`
end

Phew that was long, I hope it will be usefull!
	Mathias <smat@acm.org> 	

>Audit-Trail:
>Unformatted: