1 LISP LIBRARY PACKAGES MANUAL 1 LISP LIBRARY PACKAGES MANUAL VIRTUAL KEYBOARDS 1 USER INTERFACE 1 VIRTUAL KEYBOARDS 6 Virtual Keyboards is a package that lets you change the behavior of your Lisp workstation keyboard to mimic another keyboard (hence making yours a virtual version of that other keyboard). It also lets you display pictures of keyboards on your screen and use them as menus for typing occasional special characters. Several keyboards may be displayed on the screen at once, letting you switch easily among keyboards for several languages and making hundreds of characters available for typing. The virtual keyboards supplied with the package are Dvorak, German, Greek, Italian, logic, math, Spanish, European accents, and standard Russian. You can also define new keyboards with the associated Keyboard Editor package, which lets you edit a keyboard while seeing the actual look of the characters. The virtual keyboards can be used with TEdit, DEdit, in the top-level typescript window%for any application with which you use your keyboard. 2 Starting the Package 1 Loading the virtual keyboard package adds the item Keyboard to the background menu. You use the package by selecting this item, which brings up a menu of the main keyboard package commands: Switch Keyboard, Switch and Display, Display Only, Store Keyboards, Load Keyboards File, and Remove Keyboards (see figure 1). Each of these commands is discussed below. `UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUU`? UUUUUUUUUUUUUUUU #@`$d@UUUUUUUUUUUUUUUU`$"UUUUUUUUUUUUUUUU$"$a`#UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUU`~@CUUUUUUUUUUUUUUUUA@(AR`(A2@UUUUUUUUUUUUUUUU`D~@SUUUUUUUUUUUUUUUU|A@A2@B`A0UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUUc@UUUUUUUUUUUUUUUU@@GKCUUUUUUUUUUUUUUUUHHB* BHHB"BbG<CUUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUUA@Dp`<"DUUUUUUUUUUUUUUUU`(PUUUUUUUUUUUUUUUU2(PA" `>p UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUU  .`1UUUUUUUUUUUUUUUU`!UUUUUUUUUUUUUUUU! 1`UUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUU `UUUUUUUUUUUUUUUU`ACUUUUUUUUUUUUUUUUAAY@R`"j2$&$@UUUUUUUUUUUUUUUU`AB$"SUUUUUUUUUUUUUUUUA2B$"A"B2$&!B`AAUUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUUH`(UUUUUUUUUUUUUUUU`(UUUUUUUUUUUUUUUUE(B`UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUU`?UUUUUUUUUUUUUUUU  `?UUUUUUUUUUUUUUUU` UUUUUUUUUUUUUUUU  `?UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUUҊ8`2DUUUUUUUUUUUUUUUU`RUUUUUUUUUUUUUUUU Rd 2"D`":`?:?w<;{z<@ !@ q<\H UUUUUUUUUT &$BbH UUUUUUUUUT $8BBE $$ȠBBE !&$@BBB UUUUUUUUUT>t@ BB @ BBd D"bBD` UUUUUUUUUT8N\<: UUUUUUUUUT 0 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU Figure 1. The Virtual Keyboards menu Switching Keyboards 1 Use the Switch Keyboard command to change the behavior of your keyboard to that of a selected virtual keyboard. This brings up a menu of the keyboards currently known to the program. Select the keyboard you want to substitute for your workstation keyboard. Once you have changed your keyboard's behavior, hitting a key will send the character newly assigned to that key to the current input stream. Seeing the Virtual Keyboard's Layout 1 Use the Switch and Display command to change the behavior of your keyboard to that of a selected keyboard and, in addition, display that keyboard's layout on the screen. You will be offered a menu of the keyboards known to the program; select the one you want to substitute for your workstation's keyboard. Displaying the keyboard layout helps if you're typing on an unfamiliar keyboard. Switch and Display also lets you type characters by using the displayed keyboard as a menu (see figure 2). C^,UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUꪪ_UUU_wUUUvз;yXomvsvꪪŶoϮsꪪ_ݷնvlmޫvUUU_ݦoͶvnmޫvUUUܖ+yx0n ꪪꪪ_UUU_UUUjjYuUUUYuUUUjUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVjYuUUUYUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVuUUUjUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVjYuUUUYUU~`Y~v<{UUYض~b߿{UU۶~\:n{ݾݵ۴~n{Yے~=8{UUYUUY UUY UU?Ϊ?ΪY5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUMUUY:UU5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUN:ΪY5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUMUUY:UU5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUN:ΪY5UWWWWWWWWWWWWWWUUMUUY:UU5UXUN:ΪY5UX `@@UMUUY:@@@@PUU5UXUN:`PΪY5UX  @UMUUY:p $UU5UX   UN:0  ΪY5UX0UMUUY:UU5_:Y5_8=Cû{Y:h[y<~]vݻv;5_bmm~~]û=[:nۍpqm]vݻݻkY5_nmmn]vݻvsY:nK<~>C}vǏ}{5_:Y5_Y:55\:::Y5\5Y:UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU55\ꪪ::UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU:Y5\ꪪ5Y:UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU55\ꪪ::UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU:Y5\ꪪ5Y:U______________UU55\ꪰ::U``````````````UU:Y5\ꪠ5Y:U``````````````UU55\ꪠ@@@@@@@::U`` ``@`@````@`@`@`@``UU:Y5\ꪠ @@@@@5Y:U`` `````@`@````@``UU55\ꪠ@@@@@@::U`0` ``@`@``@`@``@`@`@``0UU:Y5\ꪠ @@@@@@@`5Y:U` ` ````````````UU55\ꪠ::U``````````````UU:Y5\ꪠ 5Y:U```````````````UU55\ꪠ0 0::U``` ```````````UU:Y5\ꪠ 5Y:U``` `````````X``UU55\ꪠ d::U``` ```````````UU:Y5\ꪠ 5Y:U``` ```````````UU55\ꪠ::U``` ```````````UU:Y5\ꪰ5Y:U___}___________UU55\ꪪ::UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU:Y5\ꪪ5Y:U______________UU55\ꪰ::U``````````````UU:Y5\ꪠ5Y:U``@`8`8`0``8``w`w``p``UU55\ꪠP ""  ::U```` `@``` `"`"` `@``UU:Y5\ꪠ` @@""@@5Y:U``@``@`````"`"````UU55\ꪠ0 @"" @::U``@``` ````"`"` `@``UU:Y5\ꪠ @(""  5Y:U````````8`````p``UU55\ꪠ::U` `````````````UU:Y5\ꪠ5Y:U``@````````````1UU55\ꪠa::U``````````````UU:Y5\ꪠ````5Y:U``@`@`@```@``H`H``@```UU55\ꪠ@@HH0::U``@`@``@``@``H`H``` `UU:Y5\ꪠ@@@@HH@ 5Y:U``````````````````UU55\ꪠ ::U``` ```````````UU:Y5\ꪰ5Y:U______________UU55\ꪪ::UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU`UU:Y5\ꪪ5Y:U_____________`UU55\ꪰ::U``````````````UU:Y5\ꪠ5Y:U```````````s```UU55\ꪠ@    % ::U```` `@`` `` ``$```UU:Y5\ꪠD @  $5Y:U``D``` ```` `````UU55\ꪠD $::U````````` ``$```UU:Y5\ꪠ@  % 5X:U`````8`8```p``s```UU55\ꪠ::U``````````````UU:_5\ꪠ5UW:U``````````````UU55\ꪠ::U``````````````UU:UW5\ꪠ8 5UW:U````@`@`@` `@`@`` `@``UU55\ꪤ1@ @@::UdJ(``P`@`@`@` `@`@```@``UU:UW5\ꪤJ0P@@@ @@@5UW:UdJ(``````````` ```UU55\ꪧ1@::U``````````@````UU:UW5\ꪰ5UW:U______________UU55\ꪪ::UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU:UW5\ꪪ5UW?U____________UU5?ꪰ@: U` ``````````@` UU:UW ꪠ  5UWU` ``8`` `8````8`` UU5ꪠ  0 D :U` ` ````0``` ``` UU:UUU\ꪠ  P @ 5UUU\U` ``````````` UU5ꪠ  @ :U` ` ```H``````` UU:UUU\ꪠ  HD 5UUU\U` ` p```\`8````8`` UU5ꪠ  :U` ``````````` UU:UUU\ꪠ  5UUU\U` ````````@``` UU5ꪠ  :U` ``````````` UU:UUU\ꪠ ``0 5UUU\U` `@`@``0`@`@``@`H`` UU5ꪠ#J@@0@@#J:U`$J`````@``@`@`H``$JUU:UUU\ꪠ"z@@@@@H"z5UUU\U`!J``````````0``!JUU5ꪠ'J'J:U` ``````````` UU:UUU\ꪰ5UUU\U____________UU5ꪪ:UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU:UUU\ꪪ5UUU\UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU5ꪪ:UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU:UUU\ꪪ5UUU\UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU5::UUU\5UUU\5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU Figure 2. Displayed virtual keyboards Seeing Any Virtual Keyboard's Layout 1 You can display the layout for any given virtual keyboard using the Display Only command. You will be offered a menu of the keyboards known to the program; select the one you want to display. This is useful if you are primarily using the standard English keyboard but need to type some characters in other languages, or some special characters such as mathematical symbols. You can use the displayed image as a menu: Buttoning over a key on the image will send the character assigned to that key, and holding shift while you button over a key will send the shifted character. 2 Defining a Virtual Keyboard 1 A virtual keyboard is a list whose CAR is the name of the keyboard and whose CDR is a list of key actions. Creating a new virtual keyboard can be done directly in Lisp or interactively, using the Keyboard Editor package. The list of keyboards that are known to the program appears in the menu of keyboard names that pops up when you select Switch Keyboard from the background menu. This list is stored in the global variable VKBD.KNOWN-KEYBOARDS. To add a keyboard to the list, you have to define that keyboard. To define a keyboard you can either call the function DEFINEKEYBOARD or manipulate the variable VKBD.KNOWN-KEYBOARDS directly. You may also use the Keyboard Editor package, which provides a menu-based user interface for creating and changing keyboard layouts. Using the Functional Interface 1 A virtual keyboard is a list of the form (KEYBOARD-NAME KEY-ASSIGNMENT1 KEY-ASSIGNMENT2 . . .). A KEY-ASSIGNMENT is a list of the form (KEY (UNSHIFTED-CHAR SHIFTED-CHAR LOCK/UNLOCK)). KEY is a key name (the character that appears on the actual keyboard). UNSHIFTED-CHAR and SHIFTED-CHAR are character codes. Each can be either an integer representing the actual code or a list of two elements%the number of the character set and the number of the character in the set. LOCK/UNLOCK is either the atom LOCKSHIFT, in which case SHIFTED-CHAR will be transmitted when the Shift-lock key is down, or NOLOCKSHIFT, in which case the Shift-lock key has no effect on that key. LOCK/UNLOCK is LOCKSHIFT by default. (DEFINEKEYBOARD KEYBOARD-NAME LIST-OF-KEY-ASSIGNMENTS KEYS-ARE-NUMBERS?) [Function] creates a new virtual keyboard after parsing the list of key assignments and adds the keyboard to the list of known keyboards. If KEYS-ARE-NUMBERS? is T, the function expects to find key numbers instead of key names. (SWITCHKEYBOARDS NEW-KEYBOARD SWITCH-FLG DISPLAY-FLG MENU-POSITION) [Function] switches the current keyboard to NEW-KEYBOARD, where NEW-KEYBOARD is either a virtual keyboard or the name of a known keyboard. If SWITCH-FLG is non-NIL, the actual key actions of the keyboard will be modified. If DISPLAY-FLG is non-NIL, a window with a menu will be displayed. This displayed keyboard will act as a menu and will send characters to the current input stream when a character is selected. VKBD.KNOWN-KEYBOARDS [Variable] Contains the list of all currently known virtual keyboards. 2 Storing Keyboard Layouts on a File 1 After you edit a keyboard, you can store it using the Store Keyboards command in the top-level menu. When you select Store Keyboards, the system will prompt you for a file name. After you give the file name, the system will store all the keyboards known to it (both new and old) in that file in a form that will enable it to load them. 2 Loading Keyboard Layouts From a File 1 To load a keyboards file, choose the Load Keyboards File command, then roll the mouse cursor to the right and choose one of the three items in its submenu%Replace; Add, Don't Redefine; or Add, Redefine (see figure 3). `Nꪪ5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|*@* qB:D5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| BFD5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| BB(* BB(* @BF5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| @B:5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|@*`*5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|$*@ *@/5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|~#$ UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|G@!$*@!$ *$@#$5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|$#5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|**5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|?$* * $qDŵUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|>$$E&UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| $"* $"* $!$5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| $q5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|**5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|A*$@ * 5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| * *$ 5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|**5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|L*L*G(5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|$H(5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| ⏅ H*" H*!5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|**5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|**p5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|r* * 5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|**5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|* *ŝ<\D5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|&"BbD UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|! BB(*$! BB( *$#"Bb5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|<\5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|@*@`*5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|@* @* @5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|R5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|R*R*!5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|!5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|**5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| *B *Bx5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|C 5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|B *B *B 5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|C5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|**5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|0` * 0`* .(5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|1#(I5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|!!%!*!!%&I !#"$I@UUUUUUUUUUUUUU|!"#@UUUUUUUUUUUUUU|@|@@ @@@ @DW\"\<8UUUUUUUUUUUUUU| @xDR"b "bBD`UUUUUUUUUUUUUU|| @* B BB B@ @* B BBd A% 8qe@"BbBD`UUUUUUUUUUUUUU|A& Dĉ|BN\<:UUUUUUUUUUUUUU|A$#@A$ Hd @0B$DĄ@UUUUUUUUUUUUUU||$H:q@UUUUUUUUUUUUUU|@  @   àt.#UUUUUUUUUUUUUU|&$`1$HUUUUUUUUUUUUUU| $ !!$$ !&E~;xx D$$`1$BUUUUUUUUUUUUUU|۳es@Dg#t.#UUUUUUUUUUUUUU||wo{ wo{ osUUUUUUUUUUUUUU|>xxUUUUUUUUUUUUUU|@@ \GĈUUUUUUUUUUUUUU|UUUUUUUUU@ "bH&$UUUUUUUUUUUUUU| BC$$P BL$$PUUUUUUUUU@"bH$$ UUUUUUUUUUUUUU|UUUUUUUUU@\GD$ UUUUUUUUUUUUUU|@ @UUUUUUUUU@UUUUUUUUUUUUUU|UUUUUUUUU@ UUUUUUUUUUUUUU|IA)UUUUUUUUU@K|UUUUUUUUU@+|II) UUUUUUUUU@#À|UUUUUUUUU@H!$LI$@|Hr$IUUUUUUUUU@$LI$@|UUUUUUUUU@#À||@@ @@ UUUUUUUUU@Ŝ"\<8|UUUUUUUUU@xD& "bBDd@|D$> BB#2D$ BBd @UUUUUUUUU@D$"bBDd@ .':9p|UUUUUUUUU@|3N\<: #!1FD|!!!>B| 0!!! B@ UUUUUUUUU #!!"FD |UUUUUUUUU !:8|}}UUUUUUUUUwx}wh q|UUUUUUUUUwn}gonn|o}x:ox`/o|ofoUUUUUUUUUwn}۽onn|\_Nj-?|UUUUUUUUUp8x}}_q{sv|{;{~UUUUUUUUU@ۛsv|UUUUUUUUU@\YNj?| UUUUUUUUU@#0%Ë:|UUUUUUUUU@$L  &$$MFUUUUUUUUUUUUUU|ȉD$!B$D$&HBUUUUUUUUU@$HB $$HFUUUUUUUUUUUUUU|UUUUUUUUU@#Aè:UUUUUUUUUUUUUU|UUUUUUUUUUUUUUUUUUUUUUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| Figure 3. The Load Keyboards File submenu Replacing All Known Keyboards 1 Choosing Replace will load a set of keyboards that you stored using the Store Keyboards command, replacing all the keyboards currently known to the system. The currently known keyboards will be lost. Adding New Keyboards to the List of Known Keyboards 1 To add new keyboards without replacing any of the currently known keyboards, select Add, Don't Redefine. This will load a set of keyboard definitions. If a keyboard in the file has the same name as one that is already known to the system, that keyboard will not be loaded and the current definition will stay in effect. Loading New Keyboards and Redefining Existing Keyboards 1 The Add, Redefine command is similar to Add, Don't Redefine, except that it redefines existing keyboards that have the same name as keyboards on the file. Currently known keyboards that do not have the same name as newly loaded keyboards will remain in the list of known keyboards. Removing Keyboards From the Menu 1 To remove a keyboard from the set of currently known keyboards, select the Remove Keyboard command. This will pop up a menu of the known keyboards, from which you can select a keyboard to be deleted. [This page intentionally left blank](LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC ) STARTINGPAGE# 111) (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/T./2T. / T./TB PAGEHEADING VERSOHEADA PAGEHEADINGFOOTINGVA PAGEHEADINGFOOTINGRB PAGEHEADING RECTOHEAD..MODERNMODERN MODERN MODERNMODERN MODERN   HRULE.GETFNMODERN    HRULE.GETFNMODERN     HRULE.GETFNMODERN    HRULE.GETFNMODERN    HRULE.GETFNMODERN *W8 HRULE.GETFNMODERN HRULE.GETFNMODERNk BMOBJ.GETFN3MODERN & HRULE.GETFNMODERN % HRULE.GETFNMODERN @ BMOBJ.GETFN3MODERN (& HRULE.GETFNMODERN D HRULE.GETFNMODERN HRULE.GETFNMODERN HRULE.GETFNMODERN ) ''E kO .  B; GG !  C I  = HRULE.GETFNMODERN# HRULE.GETFNMODERNR HRULE.GETFNMODERN% HRULE.GETFNMODERNA#R BMOBJ.GETFN3MODERN + HRULE.GETFNMODERN 4 HRULE.GETFNMODERN B8 HRULE.GETFNMODERN ! HRULE.GETFNMODERN $z