1 LISP LIBRARY PACKAGES MANUAL 1 LISP LIBRARY PACKAGES MANUAL THE KEYBOARD EDITOR 1 USER INTERFACE 1 THE KEYBOARD EDITOR 6 The Keyboard Editor package is intended for use with the Virtual Keyboards package. You should read that package's documentation before reading this. The Keyboard Editor package lets you create new virtual keyboards and change existing ones to suit your needs. Loading it adds an Edit item to the Virtual Keyboard submenu on the background menu (see figure 1). 2 Starting the Keyboard Editor From the Background Menu 1 The keyboard editor is used to modify and create virtual keyboards. You can call it by selecting Edit from the main Virtual Keyboards menu and rolling the cursor to the right to bring up the editor menu. There are three items on the Edit submenu: New Keyboard, Default Initial; New Keyboard, Other Initial; and Existing Keyboard (see figure 1). (You can also simply select Edit, which gives you the same options as New Keyboard, Default Initial.) `UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^ `? UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^#@$d@`$"UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`$"UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^$a#`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`~@CUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`A@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^(AR(A2@`D~@SUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`|A@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^A2@BA0`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^c@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^b@@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^GKCUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^bHHB* CUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^HHB"BG<B`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^@Dp<"D`(PUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`2(PUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^A" >p `UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^ .1`!UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`!UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^ 1` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`ACUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^AY@R"j2$&$@`AB$"SUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`A2B$"UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^A"B2$&!BAA`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`HUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^(`(UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`E(UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^B`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^ ?` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^` UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^ ?`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^Ҋ82D`RUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^` RdUUUUUUUUUUUUUUUUUUUUU^ 2"D ": `  UUUUUUUUUUUUUUUUUUUUU^`  UUUUUUUUUUUUUUUUUUUUU^Ey%Ë: E"& &$$MF gDB" D$!B UUUUUUUUUUUUUUUUUUUUU^d "" D$&HB UUUUUUUUUUUUUUUUUUUUU^ZT!"$ $$HF jLLH è: dB@!@ q<\H &$BbH @D"UUUUUUUUUT $8BBE @D UUUUUUUUUT $$ȠBBE #Dqŝ<Ë qz8!&$@BBB $HH&BF$M "D>t@ BB UUUUUUUUUUUUUUUUUUUUU^UUUUUUUUUT@ BBd UUUUUUUUUUUUUUUUUUUUU^D"bBD` 8N\<: UUUUUUUUUT UUUUUUUUUUUUUUUUUUUUU^UUUUUUUUUT0 UUUUUUUUUUUUUUUUUUUUU^UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^ Figure 1. The Edit submenu Creating a New Keyboard From a Copy of the Default Keyboard 1 Choose New Keyboard, Default Initial to create a keyboard from a copy of the default keyboard (which initially has the same key assignments as the 1108 keyboard). The system will prompt you for a name for the new keyboard, then call the editor with a copy of the default keyboard as the initial keyboard. The key assignments that are not changed during the editing session will remain as they are in the default keyboard. Creating a New Keyboard From a Copy of Any Known Keyboard 1 To create a new keyboard from a copy of a known keyboard other than the default keyboard, select New Keyboard, Other Initial from the Edit submenu. You will be prompted for a name for the new keyboard. The system will then display a menu of the known keyboards to enable you to choose one of them as the initial keyboard. Changing an Existing Keyboard 1 You can change an existing keyboard by choosing Existing Keyboard from the Edit submenu. Like the New Keyboard, Other Initial command, this brings up a menu of known keyboards from which you can choose a keyboard for editing. However, you will not be prompted for a keyboard name first, because you are editing the actual keyboard rather than using it as a base for a new keyboard. Calling the Keyboard Editor From Lisp 1 The editor can also be called using the function (EDITKEYBOARD KEYBOARD INITIALKEYBOARD) [Function] where KEYBOARD is either a virtual keyboard (i.e., a list) or the name of a virtual keyboard. If KEYBOARD is a virtual keyboard or the name of a known keyboard (a keyboard that was defined before), the editing will be done on that keyboard and the second argument will be ignored. If KEYBOARD is a new name, the editing will be done on a copy of INITIALKEYBOARD, with KEYBOARD as its new name. If INITIALKEYBOARD is NIL, the default keyboard will be used as a base keyboard. Thus to create a totally new virtual keyboard, call (EDITKEYBOARD NEWNAME). To create a new keyboard that is similar to a keyboard with the name K1, call (EDITKEYBOARD NEWNAME 'K1); to modify a keyboard with the name GREEK, call (EDITKEYBOARD 'GREEK). 2 Using the Keyboard Editor 1 The keyboard editor has four different menus, three of them displayed at any given time (see figure 2). After you call the editor, you will see the command menu at the top, the character menu in the middle, and the keys menu at the bottom. E0UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_|`;6 fc 6 ` co|~> 6fϘ60cfccc 0f<60cfccc 6360cfcc 66f 60cfcc`66f60cfccc3s~?c|cc>ާ:1~3wߖضl}w߷ aw޶۶}w+9q8p8 a8pÀ8pÇ8pa" DH "D` "D$@"D$H"D H&`@ɀ"L`"L$&D0$ɀ"L`H*" xJT!"T E@*PJTq"*B DJT!"T@@*P%JT "H2 DLd! d@2 &Ld H" DH D "  D@"@$H D" H8p>8!>8p|pÇ>8p!<<x<<x<|< x< <x < <x <9 `< x <I<x <I<x<I<x<J<x<4`<x<<x<<x<<x<<<<< <@< @< (@ <P <(@<P <I< "0<O$< << <@ <`&0<@d<<<P<<0<<8<<<<< <@`< <@@ < `<@@ <  `<@@,< <2P<` `<"@<@ < @"@< <P2@<<`,<<<<<<<<<<< <t< <`< 0 < <`H < p< << <@ `< < < <@ <<@x <<<<<<<<<<<<<< @<h< @<@XP < < <&@<<@"@<<@?"@<<&P<< `<@<<<<<<<<<<< p<p<  < x< @ <@< @ <@< <@< <@<H <@<H <@<0 <<<<<<<<<<<<p <<@  <:A<@ <:pA< 8<:A<8@<A<@< A<`@< Y<H`< Q<8`< << <<P<<`<<<<<t;<<< <<<<< %H<@< $P< < P<<@ <@<t@< <"< <"<<<<<<<<@p`<< <H <@ <H<@,<<2<<@"`<<@"`<< "<<pw<<<<@<<<<<x<<x<p<x < @<x" < @<@xE<@ <xE<@ <xI0<@ <xQP<@ <xQP<@ `<x"<p@<x\<@<x@<<x<<x<<<<0<<@H<@<@H@ << 0@< < <<d< < << @<@ < <@d<p<<<<<<<<<< <<0@<<@< <@@<<@@<`<@@< <<@ <@@<@ <@@< P<@;@<`<@<<@<H< <0<<<@< <@< <@< <@<<@<< @<<0@<?< @<<@<<@< <@@<<@<<@<<<<<@ (<<P<<P <<H<?<@<JI<@<JI`<@?<?JI<@<2I<@ <݀<@<<@<<@<<<<<<<<<< <0D@< < D6<<$<<<?<<<  <<07< << <<(<<<<<<@<@p<@0<@ <@H <@ <@0 < <@l<<@2<<@"<<@"<<H"<p <Pw<< <<@ <<.?ݴ-y?~m{mmſ~mmumݿimݿ%{q^??juUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUjuUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUjuUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUjuUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUjuUXXXXXXXXXXXXXXUUjuUPPPPPPPPPPPPPPUUjpuUPP PP$PPPP%P*PPP PPUUj $%*@uUPP PP$PPPP%P*P PHPPPUUj $%* HuUPP PP$P PPPEPJPP0PPPUUj $ EJ0uUP P PP$P PPPPEPJP PHP PP0UUj $ PEJ H`uUPP PP$PPPPAPPPPP PPUUj $ AuUPPpPPPP PCPPPPPPP`UUj 0uUPPPPPPPPPPPPPpPUUj!yyyyyuUPPaPPP)PPPPPPPP"PUUj H"uUPP PPxPPPPPxPPPP!PUUj āt!uUPP P`PPPPPPPPP PqPUUj! uUPP!PPyP PyPyP!PyPyPP P&PUUjuUXXxXxXxXxXxXxXxXxXxXxXXpXUUj>>>>>>>>>>>uUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUjuUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUjuUXXXxXXXXXXXXXUUjuUPPPpPPPPPPPPPUUjp xxxuUPP PpPPPPPPPPPPUUj 8(zuUPP PpPyPPP8P(PPPPUUj pǁuUPP Pp PPPPPPPPPUUj    uUPPPpPPPPPPPPPUUj @ yuUPP P@p PPPPPPmPPPPUUj @  uUPPPp PxPxPxPPP|PPP UUjlHpuUPPPp|PhPPPPP PPP0UUjTh@`uUPPPpDPHPPPPPPPPUUj~P@0uUPPPpPPPPP@PPPPUUj @ uUPPPpPPPP@P@PPPPUUj uUPPPpPP PPPPPPPUUj uUXXXxXXpXXXXXXXUUjuUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUUjuUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUUjuUXXXXXXXXXXXXXPUUj uUPPPPPPPPPPPPPPUUjp uUPPP1PPP P P PPpPPPP UUj2   Ɓ uUPPPPPPpPPP PPPPPƁPUUjHpP (uUPPP3PPPPP PPPPPP UUj03 (uUPP0PHPpPPPPP PPPPPƁPUUj0pPƁuUPP0P2P P PPPPPpPPPPUUj01   uUPP0PPPPPPPPPPPPUUjuUPPP@PPPPPP0P PPPPUUj0 @uUPPPPPPPPPP@P@PPPUUj 0NuURPP@PPPPPPPPQPPPUUj% @@QuUR%P`PPPPPPPP@PPPPUUj%@uUSPP@PPPPPPPPNPPPUUj@uUXXXXXXXXXXXXXXUUj>uUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUjuUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUjuUGXXXXXXXXXXGUUjuUOPPPPPPPPPPOUUjuUOP PPPPPPPPP@OUUj@@uUOP@PPPPKPPPP`P@OUUj`{`uUOPPPPPPPPPPOUUj`uUOPPPP`PPPPP`POUUj`TuUOPPPPPρP8PPPPOUUjuUOPPPPPPPPPPOUUj8uUOPPP PPPTPPPPOUUj@ @uUOPPPPPPPPPPOUUj@uUOZPPPPPPPPPQPOZUUjڽ@@iڽuUOPP P PPPPPPPIOUUjZ@@@@*ZuUOZPP P P@P@PPPPPOZUUjuUGXXXX@X@XXXXXGUUj>~uUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUjuUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUjuUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUjuUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUjUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_ Figure 2. Three Keyboard Editor menus: the Command Menu, a Character Menu, and a Keys Menu The character menu is a 16-by-16-character display of the 256 characters available in the current character set. The set that is displayed when you enter the editor is character set 0, which includes all of the ASCII characters plus many other symbols. If you need characters from other character sets, you have to select Char Set from the command menu. A new menu will pop up that contains numbers from 0 to 377 octal. This is the character set menu, and it lets you switch the character menu to display characters from other sets. Most of the character set numbers are not currently implemented. The most useful ones are [Octal]: f/0 (ASCII/ISO/CCITT) f/41 (JIS symbols 1) f/42 (JIS symbols 2) f/43 (extended Latin) f/44 (JIS Hiragana) f/45 (JIS Katakana) f/46 (Greek) f/47 (Cyrillic) f/164 (miscellaneous Japanese symbols) f/357 (general and technical symbols) f/360 (ligatures) f/361 (accented characters) The keys menu lets you make a key the current key by selecting it. A selected key is marked by a black frame. To make a shifted key the current key, shift-select the key; it will be marked by inverted shift keys in addition to the black frame. The basic operation of editing is assigning a character to a key. You can only assign character keys; keys other than character keys will retain their current definitions. You assign a character to a key by selecting the key from the keys menu, then selecting the character from the character menu. If the character should be assigned to the shifted key, you should select the shifted key as the current key. A second type of editing operation is to change the LOCKSHIFT state of a key. Each key either has or does not have a LOCKSHIFT property. If a key has a LOCKSHIFT property and the Lock key of the keyboard is down, typing the key on your workstation keyboard will send the shifted character of the key, regardless of the state of the shift keys. The same rule applies to a virtual displayed keyboard%if the Lock item is inverted and the key has a LOCKSHIFT property, selecting a key will send the shifted character to the current input stream. If a key has the LOCKSHIFT property, the Lock key will be inverted in the keys menu. To change the LOCKSHIFT property of a key, you should first make the shifted key the current key. You then set or unset the LOCKSHIFT property by selecting the Lock key from the keys menu. If you are creating a new keyboard and you are satisfied with the key assignments, select Define from the command menu. This will add the newly created keyboard to the list of known keyboards (it will thus appear on future menus). Selecting Quit will exit after modifying the virtual keyboard, and selecting Stop will exit without modifying the keyboard. In both cases the new keyboard will be returned to the caller of EDITKEYBOARD. 2 Creating New Keyboard Configurations 1 A KEYBOARDCONFIGURATION describes a physical keyboard%its layout, the key numbers that are used with KEYACTION. It also describes each key: What is its default meaning? Its default label? Can a user change the key's meaning with the keyboard editor? A configuration consists of a number of parts: CONFIGURATIONNAME The name of this configuration. For example, the Keyboard Editor comes with configurations named DANDELION, DAYBREAK, and FULL-IBMPC. KEYSIDLIST A list of the IDs you will use for the keys in the rest of the configuration%your names for the keys. For simplicity, these are usually numbers starting beyond 100 (to avoid overlapping the true range of key numbers). KEYREGIONS An ALIST of key IDs and the regions they occupy in the keyboard's image when it's displayed. Just for comparison, the alphabetic keys in the DANDELION keyboard are 29 wide and 33 high. DEFAULTASSIGNMENT An ALIST of key IDs and their default KEYACTIONs. KEYNAMESMAPPING An ALIST of key names to key IDs. The key names should be mnemonic, and should distinguish relevant differences%e.g., the 7 on the 1186's numeric keypad is named NUMERIC7,'' while the 7 key on the main keyboard cluster is named 7.'' MACHINETYPE The kind of machine this configuration is intended for. For example, the FULL-IBMPC configuration is meant for use with a DAYBREAK (1186) keyboard, so its MACHINETYPE is DAYBREAK. KEYLABELS An ALIST of key numbers to special labels. This is used to label keys such as the Next key, where the key assignment may not be a printable character. KEYLABELSFONT The font you want key labels to appear in. The default value is Helvetica 5. BACKGROUNDSHADE The shading for the nonkey parts of the virtual keyboard's image. This defaults to a reasonable gray value. KEYBOARDDISPLAYFONT The font used to display actual character assignments. This should probably be Classic 12, since it's the most complete font. CHARLABELS An ALIST from character codes to names. Used to give symbolic names to characters such as ESCAPE, which don't otherwise print. ACTUALKEYSMAPPING A function that takes one of your key IDs and returns a true key number, for use by KEYACTION. To create a new configuration, create an instance of the KEYBOARDCONFIGURATION record, using the field names shown above. Then add it to the list VKBD.CONFIGURATIONS. You may then edit it using the configuration editor described below. As of now, you must save your own configurations. There is no user interface for saving them, nor any automatic scheme. Editing a Keyboard Configuration 1 Once you have created a KEYBOARDCONFIGURATION, you can make modest changes to it using the function (EDITCONFIGURATION CONFIGNAME) [Function] where CONFIGNAME is the CONFIGURATIONNAME you have assigned to your new configuration. This will create a virtual-keyboard display window, with a menu on top of it: @`ooooooooooo߀o AÀ̀$@B @@Cog߀@@A@ B@o  o @@ 6m6@@ 8 @̀m7@H0aH"D @m1HPH o6m4 8 g7! `!  `!"D o@|8 @o` g8;Ͼ{ǟ> @l ̲͘ٳfl٘@|pDqo<͘8ٳfo٘@H"D!ol l͘Îٳfl H"D!ll͘ɦٳfl٘ pH|!nj>}<ϳfg HD! H"D!o H"D!@ pDqo @@@o@owoom so;Gu߻~wo[m^[mo߻woq.[n7o~omvmo~7oob{ǜW߇ooUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSoUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSoUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUVUSllllllllllllljoUTTT|TTTTT`TTT@TTTUUSlllll<l0llTll llljUTTTTTT(THTT8TT TTTUUSll9lll(ll`lTl lllljoUTTTITTxTTTTT TTTTUUSllIl(lHlll$ll lllljUTTTITTHT)TTTT TTTTUUSllJl(lxl)llll lllljoUTTT4T(TTFTTTTT TTTUUSllllllllll llljUTTTTTTTTTTT@TTTUUSlllllllllllllxjoUTTTTTTTTTTTTTT @UUSlllllllllllllxjUTTTTTTTTTTTTTT UUSlllllllllllllxjoUTTTTTTTTTTTTTTUUSll8l8ll|ll|l8l8l8llljUTTpTDTDTT@T$TDTDTDTDTTTUUSlldlDl(l@l@lDlDlDlDllljoUTTTTT(TXTXTTDTDTDTTTUUS!llllHldldll8lLlDllljUTTTTTHTTDTTDT4TDTTTUUSll$lDllDlDllDllDl8lljoUTTTDTDTTDTDTTDTDTDTTTUUSl|l|l8ll8l8ll8l8l8llljUTTTTTTTTTTTTTTUUSllllllllllllljoUVUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSoUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_UUUUUUUUUUUUUUUUUUUUUUSUVUSlllllll||lll@ljoUTT8TTTTTT\8t8TTT TUUSlDllBlDllDl||DlDll ljUTTTTJTDTTDT\tTDTT TUUSlllHlDll(l||lDll ljoUTTTTxTxTT(T\tTxTT TUUSlllHlHlll||l@l`lljUTTTTJTDTTT\tT@TT TUUSlflDlBlElll||Dl@ll ljoUTT<TDTTT8T8T|\8t8TTT TUUSlllllll||lll ljUTTTTTTTT\tTTT TUUSlllllll||lll@lxjoUTTTTTTTT\tTTTTHUUSlllllll||llllxjUTTTTTTTT\tTTTTPUUSlllllll||llllHjoUTTTTTTTT\tTTTTUUSlllllll||ll8l8ljUTTTTTTTT\tTT TTUUSlllllll||ll lljoUTT4TT0T<T<TfTl\0t0TT TTUUSlLllHlll$l$||Hldl lljUTTDTTTxTTT$T$\tHTDT TTUUSlDlTl@lll(l$||HlDl lljoUTTLT(THTTTT,\tHTdT TTUUSl4l(l0l8lll6|8|0lXl lljUTTTTTTTT\tT@T TTUUSlllllll||l@l8l8ljoUV@UUSjUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_UUUUUUUUUUUUUUUUTUUSjoUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTUUSjUVUUSllllllllllllljoUTTT:TTT:TTTTTT(TTUUSllFlDlBlFllll@ll(lhljUTT(TBTBTJTTTTT@TT(TXTUUSl(l0lBlHlllll@ll(lljoUTTDT TBTxTTTTT@TTTTUUSl|llBlHlllll@lllljUTTTBTBTHTTTdTTBTTTTUUSllblDl@lFllDllBlllljoUTTT\TTT:TT8TTTTTTUUSllllllllllllljUTTTTTTTTTTTTTTUUStllllllllllllljoUTTTTTTTTTTTTTTUUSllllllllllllljUTTTTTTTTTTTTTTUUStllllllllllllljoUTTTTTTTTTTTTTTUUSlll lllll`l0lll@ljUTTTTT(TT@TT TTTT TUUSllll ll@ll llllljoUTT8TT4TpT6TXTT,TTTTTUUSlDl$lLl lJldll(llllljUTTTTDT THTDTT0TTTTTUUSl$llDl l0lDll8llllljoUTTLT$TLT T@TDTT$TTTTTUUSl6l8l6lpl8lllvl8lllljUTTTTTTDTTTTTTTTUUSlllllDll(lllllljoUV8USUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSoUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUVUSllllllllllljoUTT~TT:TTTTTTTTUUSlDlBlFlBlDlllll$ljUTTHT$TTBTDTTTTT$TUUSll$llblDllll`lljoUTTTTT$T|TTT`TTTUUSll$ll$lBlllllljUTT"T$TT4TBTTT`TTTUUSl"lBlBllBllll`lljoUTT~TT<TTTTۀTTTTUUSllllllllllljUTTTTTTTTTTTTUUSһlllllllllll=+joUTTTTTTTTTTTT!*UUS޸lllllllllll=jUTRTTTTTTTTTTT*UUSҠlllllllllll=*joUTTTTTTTTTTTTUUSllllllllllljUTTTTTT@TTTTTTUUSlllll@lllllljoUTT<TfTTfTXTlTTTTTUUSl$l$l$l$ldl4llllljUTTTT$T$TDT$TTTTTUUSlll l$lDl$llll ljoUTT$T$T$TTdT$TTTT TUUSl<lflllXlnllll ljUTTTTTTTTTTTTUUSllllllllllljoUVUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSoUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUU`UUUUUUUUUUUUUUSoUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSoUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSoUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUS=;oUUUUUUUUUUUUU@!*BUUUUUUUUUUUUUUS=CUUUUUUUUUUUUU@BUUUUUUUUUUUUUUS= ;oUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSoUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSoUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSoUUUUUUUUUUUUU`UUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSoUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSoUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSooffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffo Figure 3. The Configuration Editor window cluster Selecting a key with the mouse fills in the fields in the menu. Figure 3 shows the 1108's configuration being edited, with the I key selected. To change one of the values, select the label at the left edge of the menu (e.g., Assignable?). You will be prompted to edit the existing value using TTYIN. The keyboard image is not automatically updated. To refresh it, use the Redisplay button on the right-button window menu. When you are finished editing, simply close the keyboard window. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC ) STARTINGPAGE# 103) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC )) (270 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 618) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (54 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (270 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL)))))/T. /2T../ T/7T/T.fB PAGEHEADING VERSOHEADA PAGEHEADINGFOOTINGVA PAGEHEADINGFOOTINGRB PAGEHEADING RECTOHEAD..MODERNMODERN MODERN MODERNMODERN MODERN   HRULE.GETFNMODERN    HRULE.GETFNMODERN     HRULE.GETFNMODERN    HRULE.GETFNMODERN   HRULE.GETFNMODERN p HRULE.GETFNMODERN6 HRULE.GETFNMODERN* BMOBJ.GETFN3MODERN < HRULE.GETFNMODERN : HRULE.GETFNMODERN G HRULE.GETFNMODERN & HRULE.GETFNMODERN 1T6?B`N HRULE.GETFNMODERN HRULE.GETFNMODERN BMOBJ.GETFN3MODERN \ '& HRULE.GETFNMODERN% HRULE.GETFNMODERN%r L E g2pi3  Nm _y! HRULE.GETFNMODERN d Z BMOBJ.GETFN3MODERN 37AS|z