This document was originally hosted at the ETHZ. It remains in the WayBack archive under the ETH license.

Keyboard support

This page addresses hardware, configuration and functionality. A usage tutorial is also available.

Summary

Oberon uses a PS/2-style keyboard attached to a 6-pin DIN connector or a keyboard attached to a 4-pin USB connector. The numeric pad can take over the functions of the mouse, if need be.

How to install a keyboard driver

A freshly installed Oberon system is set up to operate with a PS/2-style, 101-key keyboard with US layout.

Qwerty

Currently, eleven other keyboard layouts are supported: Belgian, Canadian, Swiss German, German, Dvorak, French, Norwegian, Polish, Finnish, Turkish, UK English.

Each keyboard, except the US one, is defined by a keyboard map file and all of these can be listed by executing System.Directory Key*.Bin\d ~

A keyboard driver for a different keyboard layout is installed in these ways:

  • at startup, set the config string Keyboard = mapfilename
  • or execute the following command, which can be edited in the System section of Oberon.Text.

ConfigInput.Keyboard [ mapfilename | ^ ]

Sets up the keyboard driver to operate with a keyboard with the specified layout. A list of existing map filenames is obtained with System.Directory Key*.Bin\d ~. There exists no US file; omit the parameter to install a US keyboard.
Escape compatibility / Neutralize

The Neutralize key is used to remove all marks on the display, including the caret, the marker and text selections. The F2 key is defined as Neutralize key for all the Oberon system implementations. In earlier implementations instead, the Esc key was assigned this function. Doing this has the negative consequence that the Esc character cannot be generated in certain applications needing it, e.g. terminal-emulation applications.

The Escape compatibility option is controlled at startup, by the config string EscCompat and lets the user define the meaning of the Esc key:
EscCompat = 0 (default) the Esc key retains its conventional meaning.
EscCompat = 1 the Esc key is also a Neutralize key. An Esc character must then be generated by F3.

In both cases, an Esc character can also be generated with Shift-Esc or Alt-27.

Num Lock

Num Lock is controlled at startup, by the config string NumLock
NumLock = 1 (default) activates the Num Lock mode
NumLock = 0 deactivates it

How to install a USB keyboard driver

UsbKeyboard.Init

Installs a USB keyboard driver. The USB system must be active already.
How to support another keyboard

If no keyboard map exists for your specific keyboard, the Keyboard.Mod is provided to help construct a keyboard table file. Instruction for using it are included in the source. Please submit your work to the developer team, for inclusion in a follow-up release.

ASCII and Latin-1 (ISO 8859-1) character sets

Oberon is based on the standard ASCII character set code points 00H to 7FH. The characters are produced with the respective labelled keys, including the use of Shift-key, on a US 101-key keyboard. For cross-platform portability, Oberon does not normally support all keys available on the keyboard.

The printable character or the function corresponding to a decimal code point can be generated by holding the Alt-key and keying the decimal value on the numeric keypad.

To find out a key's respective printable character and at the same time the decimal and the hexadecimal code point, execute EditKeys.GetKeyCode and follow the instructions in the System log. The command is documented in EditKeys.Tool .

Code points 00H to 1FH

Hex | Dec. Key     Ctrl          TTY 
    |             stroke       symbol 
----+-------------------------------- 
 00 |   0         Ctrl-Shift-`   NUL 
 01 |   1         Ctrl-a         SOH 
 02 |   2         Ctrl-b         STX 
 03 |   3         Ctrl-c         ETX 
 04 |   4         Ctrl-d         EOT 
 05 |   5         Ctrl-e         ENQ 
 06 |   6         Ctrl-f         ACK 
 07 |   7         Ctrl-g         BEL 
 08 |   8         Ctrl-h         BS 
 09 |   9  Tab    Ctrl-i         HT 
 0A |  10         Ctrl-j         LF 
 0B |  11         Ctrl-k         VT 
 0C |  12         Ctrl-l         FF 
 0D |  13  Enter  Ctrl-m         CR 
 0E |  14         Ctrl-n         SO 
 0F |  15         Ctrl-o         SI 
 10 |  16         Ctrl-p         DLE 
 11 |  17         Ctrl-q         DC1 
 12 |  18         Ctrl-r         DC2 
 13 |  19         Ctrl-s         DC3 
 14 |  20         Ctrl-t         DC4 
 15 |  21         Ctrl-u         NAK 
 16 |  22         Ctrl-v         SYN 
 17 |  23         Ctrl-w         ETB 
 18 |  24         Ctrl-x         CAN 
 19 |  25         Ctrl-y         EM 
 1A |  26         Ctrl-z         SUB 
 1B |  27  Esc    Ctrl-[         ESC 
 1C |  28         Ctrl-\         FS 
 1D |  29         Ctrl-]         GS 
 1E |  30         Ctrl-Shift-6   RS 
 1F |  31         Ctrl-Shift--   US

Code points 20H to 7FH

All characters are printable except DEL.

Hex | .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F 
----+------------------------------------------------ 
 2. | SP  !  "  #  $  %  &  '  (  )  *  +  ,  -  .  / 
 3. |  0  1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ? 
 4. |  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O 
 5. |  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _ 
 6. |  `  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o 
 7. |  p  q  r  s  t  u  v  w  x  y  z  {  |  }  ~ DEL

Code points 80H to FFH

The assignment of special language characters to code points 80H to 95H is a property of the fonts delivered with Oberon. In HTML, any ISO Latin-1 character can be written as &#xxx; , where xxx is the decimal code point of the character, in place of the entity reference. Of the remaining code points, some are used by Oberon and others are unassigned. Latin-1 characters - ISO 8859-1, Latin script - can be produced on a US keyboard, as shown in the table below, using the Alt-key or a dead key stroke (the Shift key is implicitly required where A, O, U, " or ^ appear).

Hex | Dec. Key     Alt      Deadkey     Entity 
    |             stroke    stroke     reference 
----+---------------------------------------------- 
 80 | 128   Ä     Alt-A    Alt-" + A   Ä 
 81 | 129   Ö     Alt-O    Alt-" + O   Ö 
 82 | 130   Ü     Alt-U    Alt-" + U   Ö 
 83 | 131   ä     Alt-a    Alt-" + a   ä 
 84 | 132   ö     Alt-o    Alt-" + o   ö 
 85 | 133   ü     Alt-u    Alt-" + u   ü 
 86 | 134   †              Alt-^ + a   â 
 87 | 135   ‡              Alt-^ + e   ê 
 88 | 136   ˆ              Alt-^ + i   î 
 89 | 137   ‰              Alt-^ + o   ô 
 8A | 138   Š              Alt-^ + u   û 
 8B | 139   à              Alt-` + a   à 
 8C | 140   è              Alt-` + e   è 
 8D | 141                  Alt-` + i   ì 
 8E | 142   ò              Alt-` + o   ò 
 8F | 143   ù              Alt-` + u   ù 
 90 | 144   é              Alt-' + e   é 
 91 | 145   ë     Alt-e    Alt-" + e   ë 
 92 | 146   ï     Alt-i    Alt-" + i   ï 
 93 | 147   “     Alt-c                ç 
 94 | 148   á              Alt-' + a   á 
 95 | 149   •     Alt-n                ñ 
 96 | 150   –     Alt-s                ß
----------- OType.Mod handles up to 9B ----------- 
 97 | 151                              £ 
 98 | 152                              ¶ 
 99 | 153                              Ç 
 9A | 154 
 9B | 155   ›
 9C to 9F  --- not assigned
 A0 | 160  Insert 
 A1 | 161  Delete 
 A2 | 162  PageUp 
 A3 | 163  PageDown 
 A4 | 164  F1            Setup (in Oberon.Mod) 
 A5 | 165  F2            Neutralise (in Oberon.Mod) 
 A6 | 166  --- not assigned Scroll (in Draw ??) 
 A7 | 167  F4            Scroll Lock (in Draw ??) 
 A8 | 168  Home 
 A9 | 169  End
 AA to C0  --- not assigned
 C1 | 193  Up arrow 
 C2 | 194  Down arrow 
 C3 | 195  Right arrow 
 C4 | 196  Left arrow
 C5 to F4  --- not assigned
 F5 | 245  F5            Display off/on (in Oberon.Mod) 
 F6 | 246  F6 
 F7 | 247  F7            Reset palette (in Oberon.Mod) 
 F8 | 248  F8 
 F9 | 249  F9            Update display (in Oberon.Mod) 
 FA | 250  F10 
 FB | 251  F11 
 FC | 252  F12 
 FD | 253  --- not assigned 
 FE | 254  Esc 
 FF | 255  Quit          Reboot  (in Oberon.Mod)
ASCIITab tool

The ASCIITab.Tool offers an alternative to typing accented characters, and more generally any code point, as ALT-key combinations, provided the Gadgets-based GUI is installed. Executing Desktops.OpenDoc ASCIITab.Tool opens a text document viewer containing a table from where to pick characters for insertion in the text being edited in some other text viewer. The table of 8 rows by 32 columns contains the printable characters in Oberon10 font (the Oberon default font). Set the caret in the text, and in the table MM click the character to insert at the caret.

To change the font of the table, edit the font name in Gadgets.ChangeAttr Font Oberon10.Scn.Fnt ~ as required, select the table (MR click) and execute the command. After this, deselect the table and proceed with editing. For a larger font, it is necessary to resize the table. Since the table is a gadget having ASCIITab.NewFrame as generator, it can also be inserted anywhere at the caret with Gadgets.Insert ASCIITab.NewFrame ~ .

Writing Oberon in lower case only

Persons affected by Repetitive Strain Injury (RSI) may wish to write Oberon in lower case characters only. Three ways to make this possible are described in the FAQ.

[Top]

11 Jul 2002 - Copyright © 2002 ETH Zürich. All rights reserved.
E-Mail: oberon at lists.inf.ethz.ch
Homepage: www.ethoberon.ethz.ch