411 REFERENCE · Wikibooks
Oberon/ETH Oberon/keyboard
Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.
#F0FFF0 This document was originally hosted at the ETHZ. It remains in the WayBack archive under the ETH license.
{{DISPLAYTITLE:}}
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.
blue [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