Mercurial > hg > xemacs-beta
diff man/mule/kbd-trans.texi @ 70:131b0175ea99 r20-0b30
Import from CVS: tag r20-0b30
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:02:59 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/man/mule/kbd-trans.texi Mon Aug 13 09:02:59 2007 +0200 @@ -0,0 +1,474 @@ +\input texinfo @c -*-texinfo-*- +@setfilename ../info/kbd-trans +@settitle Keyboard translation + +@titlepage +@sp 6 +@center @titlefont{Keyboard translation} +@sp 4 +@center Version 2.0 +@sp 5 +@center Naoto TAKAHASHI +@center ntakahas@@etl.go.jp +@page + +@end titlepage + +@node Top, , , (mule) +@section Keyboard translation + +Some quail packages, for example, Russian, Greek, Hebrew, etc., +completely re-map the key layout. In these cases, it is desirable to +provide the same key layout no matter what keyboard is actually used. +For this purpose, a variable *quail-keyboard-translate-table* is +introduced. It is used to absorb the differences between the various +real keyboards and the 'ideal' standard keyboard. Currently, 12 +predefined constants are provided. See the following carefully and +set the apropriate constant to @code{quail-keyboard-translate-table} in +your @file{.emacs} file. For example, if you are using SUN type4 keyboard, +put +@example +(setq *quail-keyboard-translate-table* + *quail-keyboard-translate-table-sun-type4*) +@end example + +in your .emacs. + +@menu +* Keyboard translate tables:: +* Writing new keyboard translate table:: +@end menu + +@node Keyboard translate tables, Writing new keyboard translate table, , Top +@section Predefined keyboard translate tables + +Here's a list of predefined keyboard translate tables. + +If you don't find your keyboard in the following list, make yours by +yourself @xref{Writing new keyboard translate table}. + +@itemize +@item @code{quail-keyboard-standard-table} +@example +machines: vt100, etc. + +[unshifted] + +Esc 1 2 3 4 5 6 7 8 9 0 - = ` + q w e r t y u i o p [ ] + a s d f g h j k l ; ' \ + z x c v b n m , . / + SPACE + +[shifted] + +Esc ! @ # $ % ^ & * ( ) _ + ~ + Q W E R T Y U I O P { } + A S D F G H J K L : " | + Z X C V B N M < > ? + SPACE +@end example + +@item @code{quail-keyboard-translate-table-sun-type3} +@example +machines: SUN type3 keyboard + SUN type5 keyboard + TAKAOKA XMiNT (AX keyboard) + JCC Xstation / GloabalX (AX keyboard) + +[unshifted] + +Esc 1 2 3 4 5 6 7 8 9 0 - = \ ` + q w e r t y u i o p [ ] + a s d f g h j k l ; ' + z x c v b n m , . / + SPACE + +[shifted] + +Esc ! @ # $ % ^ & * ( ) _ + | ~ + Q W E R T Y U I O P { } + A S D F G H J K L : " + Z X C V B N M < > ? + SPACE +@end example + +@item @code{quail-keyboard-translate-table-sun-type4} +@example +machines: SUN type4 keyboard + +[unshifted] + + \ +Esc 1 2 3 4 5 6 7 8 9 0 - = + q w e r t y u i o p [ ] + a s d f g h j k l ; ' ` + z x c v b n m , . / + SPACE + +[shifted] + + | +Esc ! @ # $ % ^ & * ( ) _ + + Q W E R T Y U I O P { } + A S D F G H J K L : " ~ + Z X C V B N M < > ? + SPACE +@end example + +@item @code{quail-keyboard-translate-table-sony-nwp-411a} +@example +machines: NEWS-3470 + +[unshifted] + +Esc 1 2 3 4 5 6 7 8 9 0 - = \ + q w e r t y u i o p [ ] + a s d f g h j k l ; ' ` + z x c v b n m , . / + SPACE + +[shifted] + +Esc ! @ # $ % ^ & * ( ) _ + | + Q W E R T Y U I O P { } + A S D F G H J K L : " ~ + Z X C V B N M < > ? + SPACE +@end example + +@item @code{quail-keyboard-translate-table-ibm-at} +@example +machines: IBM AT keyboard + +[unshifted] + + ` 1 2 3 4 5 6 7 8 9 0 - = \ + q w e r t y u i o p [ ] + a s d f g h j k l ; ' + z x c v b n m , . / + SPACE + +[shifted] + + ~ ! @ # $ % ^ & * ( ) _ + | + Q W E R T Y U I O P { } + A S D F G H J K L : " + Z X C V B N M < > ? + SPACE +@end example + +@item @code{quail-keyboard-translate-table-ibm-rt/pc} +@example +machines: IBM RT/PC 5085 keyboard + RS6000 (English keyboard) + Apple Macintosh MO115 keyboard / Power Book + SGI Iris Indigo + +[unshifted] + + ` 1 2 3 4 5 6 7 8 9 0 - = + q w e r t y u i o p [ ] \ + a s d f g h j k l ; ' + z x c v b n m , . / + SPACE + +[shifted] + + ~ ! @ # $ % ^ & * ( ) _ + + Q W E R T Y U I O P { } | + A S D F G H J K L : " + Z X C V B N M < > ? + SPACE +@end example + +@item @code{quail-keyboard-translate-table-decstation} +@example +machines: DEC DECstation3100 LK201 keyboard (vt100 mode) + DEC DECstation3100 LK401-AJ keyboard (vt100 mode) + +[unshifted] + + 1 2 3 4 5 6 7 8 9 0 - = + q w e r t y u i o p [ ] + a s d f g h j k l ; ' \ + ` z x c v b n m , . / + SPACE + +[shifted] + + ! @ # $ % ^ & * ( ) _ + + Q W E R T Y U I O P { } + A S D F G H J K L : " | + ~ Z X C V B N M < > ? + SPACE +@end example + +@item @code{quail-keyboard-translate-table-dynabook} +@example +machines: TOSHIBA Dynabook386/20 keyboard + +[unshifted] + + 1 2 3 4 5 6 7 8 9 0 - = + q w e r t y u i o p [ ] + a s d f g h j k l ; ' + z x c v b n m , . / + \ SPACE ` + +[shifted] + + ! @ # $ % ^ & * ( ) _ + + Q W E R T Y U I O P { } + A S D F G H J K L : " + Z X C V B N M < > ? + | SPACE ~ +@end example + +@item @code{quail-keyboard-translate-table-mac-mo110} +@example +machines: Apple Macintosh MO110 keyboard + +[unshifted] + + ` 1 2 3 4 5 6 7 8 9 0 - = + q w e r t y u i o p [ ] + a s d f g h j k l ; ' + z x c v b n m , . / + SPACE \ + +[shifted] + + ~ ! @ # $ % ^ & * ( ) _ + + Q W E R T Y U I O P { } + A S D F G H J K L : " + Z X C V B N M < > ? + SPACE | +@end example + +@item @code{quail-keyboard-translate-table-mac-mo116} +@example +machines: Apple Macintosh MO116 keyboard + +[unshifted] + +Esc 1 2 3 4 5 6 7 8 9 0 - = + q w e r t y u i o p [ ] + a s d f g h j k l ; ' + z x c v b n m , . / + ` SPACE \ + +[shifted] + +Esc ! @ # $ % ^ & * ( ) _ + + Q W E R T Y U I O P { } + A S D F G H J K L : " + Z X C V B N M < > ? + ~ SPACE | +@end example + +@item @code{quail-keyboard-translate-table-jis} +@example +machines: NEC PC-9801 keyboard + NEC EWS4800/220, /260 + EPSON PC-286 keyboard + +[unshifted] + +Esc 1 2 3 4 5 6 7 8 9 0 - ^ \ + q w e r t y u i o p @ [ + a s d f g h j k l ; : ] + z x c v b n m , . / + SPACE + +[shifted] + +Esc ! " # $ % & ' ( ) 0 = ` | + Q W E R T Y U I O P ~ { + A S D F G H J K L + * } + Z X C V B N M < > ? _ + SPACE +@end example + +@item @code{quail-keyboard-translate-table-fujitsu-sigma-230} +@example +machines: Fujitsu Sigma 230 + +[unshifted] + +Esc 1 2 3 4 5 6 7 8 9 0 - ^ \ + q w e r t y u i o p @ [ + a s d f g h j k l ; : ] + z x c v b n m , . / + SPACE + +[shifted] + +Esc ! " # $ % & ' ( ) 0 = ~ | + Q W E R T Y U I O P ` { + A S D F G H J K L + * } + Z X C V B N M < > ? _ + SPACE +@end example +@end itemize + +@node Writing new keyboard translate table, , Keyboard translate tables, Top +@section Writing new keyboard translate table + +@code{quail-keyboard-translate-table} consists of two parts. One is a +string and the other is an a-list. The string part, which is the +@code{car} (or @code{nth 0}) of this variable, describes the +`normalised' layout of your keyboard. (The meaning of 'normalised' +will soon be given.) The a-list part, which is the 'cadr' (or 'nth 1') +of the variable describes the 'unusually' located keys and their +position. + +Let's take IBM AT keyboard as an example. It looks like this: + +@example +[AT unshifted] + + ` 1 2 3 4 5 6 7 8 9 0 - = \ + q w e r t y u i o p [ ] + a s d f g h j k l ; ' + z x c v b n m , . / + SPACE + +[AT shifted] + + ~ ! @ # $ % ^ & * ( ) _ + | + Q W E R T Y U I O P { } + A S D F G H J K L : " + Z X C V B N M < > ? + SPACE +@end example + +First, normalise the layout of the keyboard. 'To normalise' means 'to +move some keys so that the number of columns and the number of rows +will match those of @code{quail-keyboard-standard-table}. + +@code{quail-keyboard-standard-table} looks like this: + +@example +[STANDARD unshifted] + + 1 2 3 4 5 6 7 8 9 0 - = ` + q w e r t y u i o p [ ] + a s d f g h j k l ; ' \ + z x c v b n m , . / + SPACE + +[STANDARD shifted] + + ! @ # $ % ^ & * ( ) _ + ~ + Q W E R T Y U I O P { } + A S D F G H J K L : " | + Z X C V B N M < > ? + SPACE +@end example + +Note that @code{quail-keyboard-standard-table} has no keys left to the 1! +key. It has; +@enumerate +@item +13 keys at the top row, and +@item +12 keys at the 2nd row, and +@item +12 keys at the 3rd row, and +@item +10 keys at the 4th row, and +@item +1 space bar at the bottom. +@end enumerate + +To normalise the AT keyboard, it is necessary to move the `~ key to +the right end of the 3rd row. + +@example +[AT normalised unshifted] + + 1 2 3 4 5 6 7 8 9 0 - = \ + q w e r t y u i o p [ ] + a s d f g h j k l ; ' ` + z x c v b n m , . / + SPACE + +[AT normalised shifted] + + ! @ # $ % ^ & * ( ) _ + | + Q W E R T Y U I O P { } + A S D F G H J K L : " ~ + Z X C V B N M < > ? + SPACE +@end example + +Now describe this layout by a string from left to right, up to down, +unshifted to shifted. Unshifted space should be appended at the end +of the string. There's no shifted space. The resulting string looks +like this: + +@example +"1234567890-=\\qwertyuiop[]asdfghjkl;'`zxcvbnm,./!@@#$%^&*()_+|QWERTYUIOP@{@}ASDFGHJKL:\"~ZXCVBNM<>? " +@end example + +Note that '"' (double quote) and '\' (backslash) must be escaped by a +'\'. This string will be the 'car' of *quail-keyboard-translate-table*. + +Next, specify the real location of the moved characters. In our +example only one KEY (`~) is moved, but this causes two CHARACTERs to +be moved. + +The location should be given by a vector of the form: +@quotation +@code{[ x-position y-position shift-or-not ]} +@end quotation + +For the keys in the first row, x-position means the offset from the 1! +key. For example, the x-position of '2' is 1, that of '3' is 2, and +that of '=' is 11. That of '1' itself is 0. In IBM AT keyboard, '`' +and '~' locate to the left of the 1! key, so their x-position will +be -1. + +For the keys in the 2nd, the 3rd, and the bottom row, their x-position +will be the offset from 'q', 'a', and 'z', respectively. + +The y-position is the offset from the top row (i.e. the row which +contains 1234...). So the y-position of '5' is 0, 't' is 1, 'g' is 2, +and 'b' is 3. Keys above the top row will have a negative y-position. + +The third element shift-or-not is 0 if not shifted, and 1 if shifted. + +So, the real location of '`' in the AT keyboard will be [-1 0 0] and +that of '~' will be [-1 0 1]. These two locations will be coded into +an a-list together with the characters they are presenting: + + '((?` [-1 0 0]) (?~ [-1 0 1])) + +Now we have both the string part and the a-list part. So the +*quail-keyboard-translate-table* for IBM AT keyboard will be as +follows. +@example +'("1234567890-=\\qwertyuiop[]asdfghjkl;'`zxcvbnm,./!@@#$%^&*()_+|QWERTYUIOP@{@}ASDFGHJKL:\"~ZXCVBNM<>?" ((?` [-1 0 0]) (?~ [-1 0 1])))} +@end example +When you put these beasts in your .emacs, it would be better to divide +the string part according to the rows so that you can check easily. + +@example +(setq *quail-keyboard-translate-table* '("\ +1234567890-=\\\ +qwertyuiop[]\ +asdfghjkl;'`\ +zxcvbnm,./\ +!@@#$%^&*()_+|\ +QWERTYUIOP@{@}\ +ASDFGHJKL:\"~\ +ZXCVBNM<>?\ + " + ((?` [-1 0 0]) (?~ [-1 0 1])))) +} +@end example + + +@contents +@bye