This document was originally hosted at the ETHZ. It remains in the WayBack archive under the ETH license. Also refer to the Oberon Tutorial.

Mouse support

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


The Oberon TUI and GUI can be controlled at best with a 3-button mouse as originally designed. However, many potential Oberon users have systems fitted with 2-button mice and are not ready to acquire another mouse in spite of the low cost. The 2-button support is particularly welcomed by users liking track balls.

Oberon can be controlled:

  1. with a 3-button mouse as originally designed. The mouse buttons are, by convention, named from left to right ML, MM and MR.
  2. with a 2-button mouse (ML, MR), substituting the missing MM button by the keyboard Ctrl-key (left and right).
  3. with a 2-button mouse (ML, MR), replacing a MM click by a succession of two ML clicks. The first ML click sets the caret as is usual. The second ML click, at the same mouse focus, is interpreted like a MM click. The second click may occur any time after setting the caret, on the condition that the mouse focus is not changed. Or else, the caret is moved. This basic rule should be easily mastered by expert 3-button mouse users. Of course, this device was introduced at the cost of some loss of comfort as is documented in the subsequent tables.

When Oberon is started, it is ready to be controlled with a 2-button mouse according to 3., irrespective of the mouse type. If the mouse has effectively 2 buttons, hitting the F8-key switches the mode of operation to 2. But, if on hitting the F8-key Oberon recognizes the signals of a 3-button mouse, it will switch the mode of operation to 1. The change of mode is made apparent by the tiny double-arrow icon at the left of the NamePlate of open documents in the GUI and by an equivalent icon in the menu bar of documents in the TUI.

With a 3-button mouse installed, one can practice the modes 2. and 3. by simply ignoring the middle button, though the button retains its functionality and a mixed mode operation is always possible.

Note 1: Track balls are usually fitted with 2 buttons and it is becoming increasingly difficult to acquire a 3-button track ball. A 4-button track ball represents a mediocre alternative since it requires to use the index finger for the ML and MM clicks, which makes a ML + MM interclick difficult to execute.

Note 2: "+" denotes an interclick, as in MR + ML meaning: press MR, hold it down and press ML before releasing both buttons. "&" denotes the concatenation of ML clicks.

Note 3: A right-handed mouse is assumed, but a left-handed mouse is also supported (see below).

How to install a mouse driver

Oberon can support a wide range of mouse types of all commonly used brands. The most widespread is the PS/2-compatible mouse, or bus mouse, attached to a 6-pin miniature DIN connector. All others mice connect to serial ports, either built-in or on expansion cards. Each machine is allowed up 4 serial ports.

How to select the correct mouse driver

As from this version, a mouse can easily be replaced by another of a different type and with a different interface. More than one mouse may be connected to a machine: the system can detect them and the user can select the best one. The next three commands have been designed specifically to let the system sort out mice, instead of letting the user question which parameter is appropriate, as is required for the third command. Previously, the mouse driver was chosen interactively during the installation.

A mouse driver for a different is installed in these ways: To to select the correct mouse driver at each system start do:

  • at startup, set the config strings: MT, MP, MB (see below)
  • or execute one of the following command
  • or edit a line containing one of the following commands, in the System section of Oberon.Text.
ConfigInput.WatchMouse [ seconds | 5 ]
Lets the system watch a mouse movement for a number of seconds. If a mouse manifests itself, the mouse driver is configured to operate with it. If not, a system log message invites the user to configure the mouse driver. Moving a mouse may be enough to let the system recognize that mouse. Else, pressing Ctrl-Shift launches a SelectMouse command described next.
Lets the system attempt to configure a series of mice with different specifications on the available COM ports. The search ends when a mouse is effectively reacting as expected, else a PS/2-style mouse is configured as final default. A Mouse Configuration user interface is telling which mouse type the driver was configured successfully. By following the instructions in the menu it is still possible to choose a different mouse of a different type or attached to another port, or to accept the final choice which is displayed in the System log. This system service makes it easy to edit the correct command in Oberon.Text.
ConfigInput.Mouse mt [ mp [ mb ] ] ~
Sets up the mouse driver to operate a mouse of type mt, connected to the port mp, with mb buttons. One should preferably let the system select the correct mouse (cfr. previous command). Thoroughly choose a combination of parameters fitting the mouse characteristics, else mouse control will be lost. To remedy such a mishap, activate Scroll Lock to transfer the mouse control to the keyboard.
mt (respectively MT), the mouse type is:
            mt   Mouse description 
           PS2   PS/2-style or built-in 
           MSI   Microsoft IntelliMouse or new Logitech 
           LM1   Logitech type 1 
           LM2   Logitech type 2 
           LM3   Logitech type 3 
           MS1   Mouse Systems type 1 
           MS2   Mouse Systems type 2 
           MS3   Mouse Systems type 3 
           MS4   Mouse Systems type 4
           MSM   Microsoft 2-button
mp (respectively MP), the mouse port is 1 .. 4 for COM1 to COM4 for a mouse with a serial interface. 1 is the default value. Not applicable to a PS2 mouse; use 1.
mb (respectively MB), the number of buttons is:
            2   the keyboard Ctrl key emulates the MM buttom 
            3   the keyboard Ctrl key retains its usual function 
           -3   The default value. Switched to 3 as soon as a real MM button is found
Practical hint: Two such commands can be used in combination to switch mice on a laptop:
ConfigInput.SelectMouse PS2 1 -3 ~ to operate the stick (between G and H) and 2 buttons below the space bar
ConfigInput.SelectMouse LM1 2 -3 ~ to operate a serial 3-button mouse installed for working with Oberon
The mouse configuration selected at installation time is stored in the configuration data and reused when Oberon is started. This information can be modified on-the-fly at boot time or permanently stored. The mouse type is specified as MT= "", the port as MP="" and the number of buttons as MB="" and the values are chosen as described above.
Mouse commands in text
Action Detail 2-button
ML Point Set the caret to mark the insertion point ML
ML + MM Copy to (3) Set the caret and copy an existing selection to the caret No direct substitute (1)
ML + MR Copy attributes Copy font, color, offset ML + MR
MM Activate Activate command in text or in Cmd attribute of gadget. Also manipulate gadget. ML & ML
MM + MR Open (2) Open a document ML & ML + MR
MR Select Select text, incl. floating gadgets MR
MR & MR Select variant Select text to start of line MR & MR
MR + ML Delete (3) Select text, incl. floating gadgets, and delete MR + ML
MR + MM Copy away Select text/gadget and copy away to caret No direct substitute (1)
ML + MM + MR Nullify Nullify current mouse action No substitute

(1) Delete the text stretch/gadget and paste what is then in a scratch pad back at the caret with Edit.Recall, TextDocs.Recall or with the [Recall] Iconizer in System3.Tool of the GUI.

(2) Implicit open - TUI: Edit Open / GUI: Desktops.OpenDoc

(3) The combination of Delete and Copy to corresponds to a cut-and-paste operation in other text editors but a pre-condition must hold true: no other selection may exist, else the selection will be copied.

Mouse commands on the menu bar of a viewer
Concurrent movement Action 2-button
ML Drag up or down Resize viewer (1) ML in the icon
ML + MM Drag away Relocate viewer (2) ML + MR in the icon
MM Activate the command or Button ML & ML

(1) The menu bar can only be moved within the limits of adjacent menu bars or screen border.

(2) The document can be relocated in the adjacent track or in the same track above or below another document. If the menu bar is dragged on top of another, the document below it is closed.

Inside the NamePlate in the menu bar, mouse clicks have the following meaning:

Action Detail 2-button mouse
ML Point Set the caret to mark the insertion point ML
MM Reveal Display the qualified document name in the log No substitute
MR Select Select text MR
Mouse commands on the scroll bar of a viewer
Concurrent movement Action 2-button
ML Drag up or down, tracking lines Scroll forward. Places the tracked line at the top ML
MM Scroll to mouse position No substitute
MM + ML Scroll to bottom No substitute
MM + MR Scroll to top No substitute
MR Drag up or down, tracking lines Scroll backward. Places the tracked line at the bottom MR
Mouse commands in the control area of a gadget

Most visual gadgets are rectangular in shape, and for those gadgets the control area is a border a few pixels wide inside the edge of the gadget. Inside the gadget, but not in the control area, the gadget does whatever it is supposed to do (Buttons can be pushed, CheckBoxes checked, etc). In the control area, the gadget responds to the control mouse combinations listed in this table.

Concurrent movement Action 2-button
ML Uninterpreted ML inherits the MM function
MM Drag in a corner Resize gadget except when locked ML
MM Drag on a side Move gadget around in current container ML
MM + ML Drag on a side Move gadget and insert in other container (consume shallow copy) No direct substitute
MM + MR Drag on a side Move gadget and insert a copy at mouse position (shallow copy) No direct substitute
MR Select gadget MR
MR + ML Select gadget and delete MR + ML
MR + MM Select gadget and copy away to caret No direct substitute
How to replace the mouse by the keyboard

The full functionality of the mouse can be transferred to the numeric pad of the keyboard by activating Scroll Lock. To return control to the mouse, deactivate Scroll Lock.

"5" - takes over the function of the MM key (activate)
"Ins" - takes over the function of the ML key (set caret)
"Del" - takes over the function of the MR key (select)
The 8 keys surrounding the "5" - move the mouse focus

The Ctrl key is possibly also available as MM key.

How to define a left-handed mouse

A left-handed mouse, with buttons arranged in reverse order [ MR, ML ], is defined by a config string "MM=digits" (Mouse Mapping). digits is exactly 3 digits, with each digit representing a mouse button: 0 = ML, 1 = MM, 2 = MR. It is convenient to use the Ctrl-key to the right of the keyboard in conjunction with a left-handed mouse.

MM = "012" - right-handed, assumed when Oberon is booted
MM = "210" - left-handed
MM = "021" - Logitech cordless mouse
How to install a USB mouse driver


Installs a USB mouse driver. The USB system must be active already.


4 Aug 2001 - Copyright © 2001 ETH Zürich. All rights reserved.
E-Mail: oberon at