1 Lisp Library Modules, Medley Release 1.0, KEYBOARDEDITOR 1 Lisp Library Modules, Medley Release 1.0, KEYBOARDEDITOR KEYBOARDEDITOR 1 KEYBOARDEDITOR 1 KEYBOARDEDITOR 6 KeyboardEditor(KEYBOARDEDITOR NIL KeyboardEditor NIL NIL 149) is intended for use with the VirtualKeyboards(VIRTUALKEYBOARDS NIL VirtualKeyboards NIL NIL 149) module. You should read that module's documentation before reading this. The KeyboardEditor module lets you create new virtual keyboards and change existing ones to suit your needs. Requirements 1 VIRTUALKEYBOARDS Installation 1 Load KEYBOARDEDITOR.LCOM and VIRTUALKEYBOARDS.LCOM from the library. User Interface 1 Loading KeyboardEditor adds EDIT to the Virtual Keyboard submenu on the background menu. Background Menu The keyboard editor is used to modify and create virtual keyboards. You can call it by selecting EDIT from the main KeyboardEditor/VirtualKeyboards menu and sliding the cursor to the right to bring up the editor menu. You can also simply select EDIT, which gives you the same options as NEW KEYBOARD, DEFAULT INITIAL. Y?       "y !"  @! @   "  Ι      $ G<  E & $H '     @ H    :^  FHP BH  BH H FH H :F    '?$ $ x8'đ?D$ U|$ U@$ ""D$?x"8     @ A @ @.\ @ <1"b @ !B |@@ !2B @@ A!"b DW\8"@ >!\ xDR"b2Dđ"@ @ * B8@ @ * B @ "B2Dđ@  |BP8@   @   0@ #:8x@ MFDĈ`@ !B@P@ &HB@P @@ $HFD  $qqD @ #:8x  $"D @ $q (@@ $ 2(@@ D"@ qq@  @ H `@  @ ( @ (  @ E(  @ B p"8pΎ@  $D Q@ (|Q r@ 4@Q @  "D! @ p!8!p@ $ @ @ @ @/ @ ~#$ @ @!$$A:@@ @!$$A @ @#$$ÇAKtpzG  #$$H"$LHH"H@ $!ACHCp"O@p H$ $&HAHL"H@@ $ $$H! HH"HG8p΀K\^$ 'çA Ptp"GHD Q#"DHIbH$ &  O|Q r!>AIBH$ & H @Q ! FHIBH$ åq Ȅ@D! #"DHBH$ &$e G@8!pCHBF #$$9 ?  $$  $$dD ,G#, #Du 3$$HDH5@ ?"$"!A @  "$"D!a ? "$!$B!QDB#,XK? "#I"DBDH51"hLI$?I>*!!>@HI? E *D!! @HI$?whC"$B!!"@HI$?gonA@HH?:ox?{of ?onZ?}_; ?? ? ? ##,?[? $HDH5? #!?  HD!? $H$B!?#  Creating a New Keyboard From a Copy of the Default Keyboard(CREATING% A% NEW% KEYBOARD NIL Creating% a% New% Keyboard NIL NIL 149) 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 prompts 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 remain as they are in the default keyboard. Creating a New Keyboard From a Copy of Any Known Keyboard 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 are prompted for a name for the new keyboard. The system then displays a menu of the known keyboards from which to choose the initial keyboard. S3        6 ~ 0` 0` x` x` H` ` ` ` f` <~ >??`  c1`  `  ` `  0`  0`  0 c000 >0? ` `  >?g ccl` ccl ccl ccl` ccl` >?gc> 0  0 Ǐ 0 Ǐ 0 m m 0 m 0 9 0 9 0  0 l l      l l l >? ` c0  Ǎ Ǐ   H̀ x 0c0l` 0>0l0c ``f ``l ``x ~~p ``x ``l ``f ``ca 0  0Ì 1 1 1# 33l 3l 33< 06< 0߶ aϘ` a` ` ` ϟ{` ` `  `  Ϙ` >a  ca  a  a   a  a  a  ca  >app  ppÌ x x m# m3l ml g33< g6<b6 0~|| 2 `0cl` 2 `xal0 ǎ2 `xal0 Ǐ2 `Ha0||ď2x`al1 Ͳ `al1 Ͳ `al0 ac0l` l a~0o x||lr Changing an Existing Keyboard(CHANGING% AN% EXISTING% KEYBOARD NIL Changing% an% Existing% Keyboard NIL NIL 150) You can change an existing keyboard by selecting 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 are not 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(CALLING% THE% KEYBOARD% EDITOR NIL Calling% the% Keyboard% Editor NIL NIL 150) From Lisp The editor can also be called using the function (EDITKEYBOARD(EDITKEYBOARD (function) NIL NIL NIL 150) 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 is done on that keyboard and the second argument is ignored. If KEYBOARD is a new name, the editing is done on a copy of INITIALKEYBOARD, with KEYBOARD as its new name. If INITIALKEYBOARD is NIL, the default keyboard is used as a base keyboard. Examples: 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). Using the Keyboard Editor(USING% THE% KEYBOARD% EDITOR NIL Using% the% Keyboard% Editor NIL NIL 150) 1 There are four different keyboard editor menus(KEYBOARD% EDITOR% MENUS NIL keyboard% editor% menus NIL NIL 150), three of them displayed at any given time. After you call the editor, the command menu is at the top, the character menu in the middle, and the keys menu at the bottom. S3 >~0c01c 0c0`ax|`a>ߏ3>1`ـa31`ـa 7c1`ـa 6c1fـa63c13ـc1>~πI}1 H DEJTH EJx xEJH `OJ H D`HJRI |H1qA=K%*JQBR!h% JQBPĤ!x% JUBPĸ9x% JUBP X%)J_BR Xy pÀ|8ppÀ@ @ @ @ @ @ @ @<x @<x  @><x `@@A<x @@<x @@<x  @@$d<x  @@$D<x @@$D<x @@%d<x @X<x @@<x @@<x @<x @ @ @ @ @ @ @ @ @ @ @ @ @ @   @   @    @ 4 @v @ "L @ >D >@? @AD "H @A L B @ 4 f @   @   @  @ @ @ @ @ @ @ @ @ @ @ @x @x  @P|x  @P@"x @@P@"x @P@" <px @> x @! x @@!x @@! x @~ 8px @@x @@x @x @ @ @ @ @ @ @ @ @ @ @ @x @x  @0x  @(@#Hhx @(@A$x  @@Ax  @(@0$hx  @P@@@x @@Ax @P@!$Dx @Pp8x @x @x @x @ @ @ @ @ @ @ @ @ @ @ @x @x @@ |lx @@p"H4|x @@!H ,Tx @@!H<@Dx @`!@ x @@0!@x @@!@x @"@ @x @p| x @ x @ x @x @ @ @ @ @ @ @ @ @ @ @ @ @ @ @x!< @P%  @P$l0  @@< $  @2@$$ @R@%$@ @R@! , @6@8 @@ @@ @ @ @ @ @ @ @ @ @ @ @ @ @ @  @8$ @ @!"@$ @ %@  @$f@l  @@<$@$  @H@$$@$ @0@$$@$ @$@ `@$ @p`;t @ @ @ @ @ @ @ @ @ @ @ @ @ @ @x @x  @ `x @@ @#Dx @@ @ADx @ AD@x @@ @x @G Tx @ATPx @#( x @(x @x @`x @x @ @ @ @ @ @ @ @ @ @ @ @x @x @@x @ @B$x @@ @B$x @@@@B fx @@@~` $x @@@@Bx @@@Bx @@@B$x @ fx @ x @x @x @ @ @ @ @ @ @ @ @ @ @ @< @<@ @0<@ @@@ < @@@<@ @ @f<@8 @ $<@L @ @@$<@T @ @@(<@T @ @@<d @@<8 @@<@ @<@ @@< @ @ @ @ @ @ @ @ @ @ @ @ @ @@ P@$ @@P@$" @p (B @ <B@ @ @$C2 @@B@ @2B @"$"2 @< @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @@ 8 @@BD @ DD @@ HX @@ PHD @@h`@D @ D@D @ BHT @  @ @$ @ @ @ @ @ @ @ @ @ @ @ @ @x @x @px @ x @` x @ @x @ @x @ @x @! x @! x @0` x @x @ x @x @ @ @ @ @ @ @ @ @ @ @ @x @@  x @ px @a (x @a $x @@a =  x @@R @  x @@R @ x @pR @  x @L @  x @ 7`  x @  x @  x @@x @ @ @ @ @ @ @ @ @ @ @ @x @x @@À@x @ahx @Q X@x @@Q x @@Ix @@`Ex @Ex @Cx @  x @ x @ x @x @ @ @ @ @ @ @ @ @ @ @ @xx @x x @@x  x @@"x $x @@Ax x @ @Ax x @ A x  x @ A x x @@A x x @@" x$x @@xx @xp@x @x @x @xx @ @ @ @ wwm so;Guߜw[m^[moߜq.[n7owmvmowb{ǜW߶wUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUVUSllllllllllllljUTTTTTTTTTTTTTTUUSllllllllllllljUTTT|TTTTT`TTT@TTTUUSllll8l<lhllTll llljUTTTTTTT(TXTT8TT TTTUUSll9llPl(ll`lTl lllljUTTTITT0TTTTT TTTTUUSllIl(llll$ll lllljUTTTITTTT)TTTT TTTTUUSllJl(lTl)llll lllljUTTT4T(T8TFTTTTT TTTUUSllllllllll lllxjUTTTTTTTTTTT@TTT @UUSlllllllllllllxjUTTTTTTTTTTTTTT UUSlllllllllllllxjUTTTTTTTTTTTT8TTUUSll8l8ll|ll|l8l8l8llljUTTpTDTDTT@T$TDTDTDTDTTTUUSlldlDl(l@l@lDlDlDlDllljUTTTTT(TXTXTTDTDTDTTTUUS!llllHldldll8lLlDllljUTTTTTHTTDTTDT4TDTTTUUSll$lDllDlDllDllDllljUTTTDTDTTDTDTTDTDTDTTTUUSl|l|l8ll8l8ll8l8l8llljUTTTTTTTTTTTTTTUUSllllllllllllljUVUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUVUSllllllllllllljUTTTTTTTTTTTTTTUUSllllllllllllljUTTT<T<TTTTTTTTTTUUSl<lBlBlDlllll@lllljUTT~TTTDTcTT@TT TTTTUUSl~lllDlll lllllljUTT~TTTxTTTTTTTTTUUSl~lllHlll l ll llljUTT<TBTBTDTTTT@TT@TTTUUSll<l<lElclllllllljUTTTTTTTTTTTT`TTUUSlllllllllllllxjUTTTTTTTTTTTTTTHUUSlllllllllllllxjUTTTTTTTTTTTTTTPUUSlllllllllllllHjUTTTTTTTTTTTTTTUUSll<l<lllllll8l8l8ljUTTTZTBTTTTTTTTT TTUUSlllllllll@ll lljUTT TTTTTTTTTT TTUUSl lllll$lllll lljUTT TTTTT8TTTTT TTUUSllZlBlll8lllll lljUTTT<T<TTTTTTTT TTUUSllllllllTl@ll lljUTTTTTTTTT8TTT TTUUSlllllllllll8l8ljUVUUSjUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTUUSjUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTUUSjUVUUSllllllllllllljUTTTTTTTTTT$TTTTUUSlllllllll$lllljUTTTTTTTTTT$TTTTUUSlllDlBlllll$lll0ljUTT(T<TBTJTyTTTT$TxTTHTUUSl(lXlBlHlllll,lllljUTTDTXTBTxTTTTT4TTTTUUSl|l<lBlHllll8ldlxllljUTTTTBTHTTTTXTdTTTTUUSlllDl@lllll$lllljUTTTTTTTTTT$TTTTUUStll`lllllll$lllljUTTTTTTTTTTTTTTUUSllllllllllllljUTTTTTTTTTTTTTTUUStlllllldlll lllljUTTTTTTT8TTT TTTTUUSlDll lll`lll lllljUTTFTTT(TT`TTT TTTTUUSl:lll lyllll lllljUTTXTT4TpTTDTTT TTTTUUSlXllLl llDlll lllljUTTDTTDT TTTTT TTTTUUSl"llDl lyllll lllljUTTbTTLT TTTTT TTTTUUSlll6lplllll lllljUTTT`TTTTTTT TTTTUUSllllllllllllljUVUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUVUSllllllllll8ljUTTTTTTTTTTTTUUSllllllllll ljUTTTT@TT|T|TTTTTUUSlll@ll@lll llljUTTTT@TT@TTTpTTTUUSlll@ll@llllplljUTTTT@TT@TT(TTpTTUUSlll@ll@llDlpllljUTTTT@TT@TTT TTTUUSlll|l|l@lllllljUTTTTTTTTTTTTUUSһlllllllllll=+jUTTTTTTTTTTTT!*UUS޸lllllllllll=jUTRTTTTTTTTTTT*UUSҠlllzllllllll=*jUTTTTTTTTTTTTUUSllllllllllljUTTTTTT@TTTTTTUUSlllll@lllllljUTTTDTTHTXTTTTTTUUSll(llHldll lllljUTTTTTHTDTT@TTTTUUSll(ll0lDlllll ljUTTTDT|T0TdTTTTT TUUSlllllXlllll ljUTTTTTTTTTTTTUUSllllllllllljUVUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUU`UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUS=;UUUUUUUUUUUUU@!*BUUUUUUUUUUUUUUS=CUUUUUUUUUUUUU@BUUUUUUUUUUUUUUS= ;UUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU@UUUUUUUUUUUUUUSUUUUUUUUUUUUU`UUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUS Figure 6. Character Display 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. See Figure 6. If you need characters from other character sets, you have to select Char Set from the command menu. A new menu pops 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 shown in Figure 7. S3``>``c` ``0``0```~<}>~66gϷ`cflcc66`lf660`c`=cc66`lf660`c>acc66`o67`cfacc6`l66`ccfacc 6`f660`>c;`p>~863``0``````wg| d`R$%@`$%@`'9^@`R$)X`R$% `ta% d@````2\ddc%.G` Jt)F ` C|1)n ` C|1.o ` Bl)(* ` JR(: `28p|p>8!8p8p```````````````````````p```````p6|> ``6cl0 ` 1` f0l0` 0`f0 0>}Ǐߏc<}?`!|0 0cfl` l`cf1`0{0 0cf`` ͍l` c1` 0l0cfg`͍l` c>1`3 0l0cfl` ͍ l`cf1`cl0cfl`m l`cf1`|>0>fgl`mplgχ?;1````````` ```` ` ` ` ```````l``?00`m``1c00 ``m``1`00 00`m~>g1>x>~x~?3߀0x0`l3ccl1ccc`0ٛ͌0`l<y3ccn?1 ccc <͙00`m3ccg01|ccc|ٙ0Ϙy0`m3cca01cccY0٘0`m3ccl01cccy`٘͌``c3~>g0~v;>cv~13χxp``0```p```` `@``````````````l``?00`m``1c00 ``m``1`00 00`m~>g1>x>~x~?3߀0x0`l3ccl1ccc`0ٛ͌0`l<y3ccn?1 ccc <͙00`pm3ccg01|ccc|ٙ0Ϙy0`m3cca 01cccY0٘0`m3ccl01cccy`٘͌``pc3~>g0~v;>cv~13χxp``0````p``````````````````0``P`c`P```o?`x~`f1`cc`1` cc`?`|cc`011`cc`f1`cc`c1~v;c``````````````````````l `pm `m `m x~xx`l`l< `m |||`m `m ` v~vv```|```````p```````p`````l`m0`m``mc`lff6``l<gf0``m`3`m1ff6``mfff6`` s33```````` ` `@`@```````````` ` ```66`=67` `  `a66``00`!P`!P`!`!`````````````````` ` @ ```@|` @m` @ ` @ ` @ ` `c |``````````````````` `a`` ` @` pv|`!01pv`01x`7|xx3??>`6fـm͍f6666`11c|0`6fm၍f666711cfۀ`3ffmy76311l`1ffÀ1g6f66011`,p`1fـ1g6͍f6666`11c<0`f|b6x3>|ߏ`0`0`0p```````` `a`` ` ` `!````` 0>`  `0 `c`  `0 `c``0 o`fa0l͍`=fa0l͍ ` a0 f͍` fa0 b͍0`fa0 c͍````` ``` `````! `! `!` ` `````````` 0`  `0 ``  `0 `>``0 o`fa0l͍`=fa0l͍` a0 f͍` fa0 b͍`!fa0 c͍`a```! `!` `!````````````````` ?`?|`  0`0 `  0 0 `a 7Ϗ|x0?>gǀ|0>` 6ـf66?1ll3?1ٌ|0`! 6=f66 01ln301fۀ`! 6 66|01o01όl`! 6 f6601l301ٌ,p`! 6٘f6601ll301ٌ<0`s탷6|v?gnj|00|ߏ` ``p```````````````!``` ` ` @`` @` l` `l`Ǐ>|`#l` lͳ10`3l` `0À``lg0`3 `ll31p`l` ll310`gl|```````````}}Bc:~o׶l[:~voˇVۍ{{voݿ6m{{rXDZ```geUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfꪬeUU55555555555555UTfeUUUTfeUU1UTf O$eUU@@J$UTf@JeUU@ 53UTf@ @I?eUU@? @FUTf  @DeUU ;UTf@@eUU?PUTfeUUBUTfeUUUTfeUU UTf eUU8 UTf@eUU@ UTf@ ?eUU8UTfeUUUTfeUU55555555555555UTfꪬeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfꪬeUU55555555555555UTfeUUUTf |eUU>@``0UTf P@eUU @!@H UTf?&@ D @@eUU?&@@D UTf @(@ @HeUU ) @P  UTf@F `@  eUU9| @UTf<eUUE$UTfE8eUUG$UTfE< eUU% UTf% eUU%UTf&@)@%0$eUU?&@'9 UTf?&@% @eUU&@)@%UTf%@eUU|?$ UTfeUUUTfeUU5555555555555UTfeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfeUU5555555555555UTfeUU UTf eUU>?s  DUTf! < eUU @! UTf '! eUU? UTf!eUU ?!<UTf !  DeUUq>8s UTfG  eUUD@UTfDeUUD@UTfw eUUUTfeUU UTf@.?eUU '?UTf??eUU"?UTf@"?eUU'#?UTf eUUUTfeUU55555555555555UTfꪬeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfꪬeUU555555555555UTfeUUUTf@eUU8UTfeUU UTf?a eUU a UTf? eUU!UTf8eUU?UTfJeUU JUTf zeUU JUTf ?y JeUU)$@@UTf(0"@eUU(!!@UTf (38eUU($@UTf? ("@eUU(!@UTf (   eUU x@UTf eUUUTfeUU555555555555UTfꪬeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfeUUUUUUUUUUUUUXUUUUUUUUUUUUUTfjeUUUUUUUUUUUUUPUUUUUUUUUUUUUUTfjeUUUUUUUUUUUUUPUUUUUUUUUUUUUUTfjeUUUUUUUUUUUUUPUUUUUUUUUUUUUUTfjeUUUUUUUUUUUUUPUUUUUUUUUUUUUUTfjeUUUUUUUUUUUUUPUUUUUUUUUUUUUUTfjeUUUUUUUUUUUUUPUUUUUUUUUUUUUUTfyjeUUUUUUUUUUUUUPJUUUUUUUUUUUUUUTfzjeUUUUUUUUUUUUUPCUUUUUUUUUUUUUUTfBjeUUUUUUUUUUUUUPUUUUUUUUUUUUUUTfjeUUUUUUUUUUUUUPUUUUUUUUUUUUUUTfjeUUUUUUUUUUUUUPUUUUUUUUUUUUUUTfjeUUUUUUUUUUUUUPUUUUUUUUUUUUUUTfjeUUUUUUUUUUUUUPUUUUUUUUUUUUUUTfjeUUUUUUUUUUUUUPUUUUUUUUUUUUUUTfjeUUUUUUUUUUUUUXUUUUUUUUUUUUUTfeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTfeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTg`` Figure 7. Character Sets 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 (hold the Shift key down and click on the icon with the left button); it ise 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 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 is to be assigned to the shifted key, 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 shift lock key of the keyboard is down, typing the key on your workstation keyboard sends 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 sends the shifted character to the current input stream. If a key has the LOCKSHIFT property, the lock key is inverted in the keys menu. To change the LOCKSHIFT property of a key, first make the shifted key the current key. 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 adds the newly created keyboard to the list of known keyboards (it will thus appear on future menus). Quit exits after modifying the virtual keyboard; Stop exits without modifying the keyboard. In both cases the new keyboard is returned to the caller of EDITKEYBOARD function (above). Creating New Keyboard Configurations(CREATING% NEW% KEYBOARD% CONFIGURATIONS NIL Creating% New% Keyboard% Configurations NIL NIL 153) 1 KEYBOARDCONFIGURATION [Record] Describes a physical keyboard: its layout, the key numbers that are used with KEYACTION(KEYACTION (function) NIL NIL NIL 153). It also describes each key: its default meaning, its default label, whether you can change the key's meaning with the keyboard editor. A configuration consists of a number of parts: CONFIGURATIONNAME [Record field] The name of this configuration. For example, KeyboardEditor comes with configurations named DANDELION (1108), DORADO (1132), DOVE (1186), and FULL-IBMPC. KEYSIDLIST [Record field] An Alist of the IDs you use for the keys in the rest of the configuration; i.e., your names for the keys. For simplicity, these are usually numbers starting beyond 100 (to avoid overlapping the true range of key numbers). KEYREGIONS [Record field] An Alist of key IDs and the regions they occupy in the keyboard's image when it is displayed. For example, the alphabetic keys in the DANDELION keyboard are 29 screen points wide and 33 high. DEFAULTASSIGNMENT [Record field] An Alist of key IDs and their default KEYACTIONs (see IRM). KEYNAMESMAPPING [Record field] 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 in the main keyboard cluster is named 7. MACHINETYPE [Record field] The kind of machine for which this configuration is intended. For example, the FULL-IBMPC configuration is meant to be used with a DAYBREAK keyboard, so its MACHINETYPE is DAYBREAK. KEYLABELS [Record field] 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 [Record field] The font you want to use for the key labels. The default value is Helvetica 5. BACKGROUNDSHADE [Record field] The shading for the non-key parts of the virtual keyboard's image. This defaults to a reasonable gray value. KEYBOARDDISPLAYFONT [Record field] The font used to display actual character assignments. This should probably be Classic 12, since it is the most complete font. CHARLABELS [Record field] An Alist from character codes to names. Used to give symbolic names to characters such as ESCAPE, which do not otherwise print. ACTUALKEYSMAPPING [Record field] A function that takes one of your key IDs and returns a true key number, for use by KEYACTION. Note: 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(VKBD.CONFIGURATIONS (variable) NIL NIL NIL 154). You may then edit it using the configuration editor described below. Note: You must save your own configurations. There is no user interface for saving them, nor any automatic scheme. Editing a Keyboard Configuration(EDITING% A% KEYBOARD% CONFIGURATION NIL Editing% a% Keyboard% Configuration NIL NIL 154) 1 Once you have created a KEYBOARDCONFIGURATION, you can make modest changes to it using the function: (EDITCONFIGURATION(EDITCONFIGURATION (function) NIL NIL NIL 154) CONFIGNAME) [Function] where CONFIGNAME is the CONFIGURATIONNAME you have assigned to your new configuration. This creates a virtual keyboard editing window with a menu on top of it as shown in Figure 8. S3`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 8. Virtual Keyboard Editing Window Selecting a key with the mouse fills in the fields in the menu. The figure 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 are prompted to edit the existing value using TTYIN. The keyboard image is not automatically updated. To refresh it, select REDISPLAY in the right-button window menu. When you have finished editing, simply close the keyboard window. [This page intentionally left blank] (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "") STARTINGPAGE# 149) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (270 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (TEXT NIL NIL (54 54 504 702) 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 HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (54 15 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 HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (270 15 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)))))3T,,3T3H` T,HH 5l2HH2HH 3HHT3$$T22H`2ll2H` ,HH,HH ,HH-T2 2-TF PAGEHEADING VERSOHEADE PAGEHEADINGFOOTINGVE PAGEHEADINGFOOTINGRF PAGEHEADING RECTOHEAD2 HELVETICA CLASSIC CLASSICCLASSIC  HELVETICA HELVETICA TITAN CLASSIC CLASSIC  HELVETICAMODERN MODERNMODERN MODERN MODERN MODERNMODERN MODERN  HRULE.GETFNMODERN  9 HRULE.GETFNMODERN  9 HRULE.GETFNMODERN   HRULE.GETFNMODERN    HRULE.GETFNMODERN/IM.INDEX.GETFN.3IM.INDEX.GETFN  HRULE.GETFNMODERN   HRULE.GETFNMODERN   HRULE.GETFNMODERN X b& # BMOBJ.GETFN3MODERN   ;GIM.INDEX.GETFN { :a   BMOBJ.GETFN3MODERN  SIM.INDEX.GETFN1"   OIM.INDEX.GETFN 1 )IM.INDEX.GETFNCLASSIC     T  1   : /  N  / KIM.INDEX.GETFN HRULE.GETFNMODERN .AIM.INDEX.GETFNr BMOBJ.GETFN3MODERN   \ BMOBJ.GETFN3MODERN    ;!.d  $aIM.INDEX.GETFN HRULE.GETFNMODERN  a&IM.INDEX.GETFNCLASSIC g#I/"<    Q E     M&  rw/ @_   P n T ?E0IM.INDEX.GETFNCLASSIC Ht YIM.INDEX.GETFN HRULE.GETFNMODERN 8.IM.INDEX.GETFNMODERN    Z BMOBJ.GETFN3MODERN  . =H "B$ 4z