XKEYB - version 1.50.

Keyboard driver for ms - DOS.

D o c u m e n t a t i o n.

XKeyb 1.50 documentation page 2 (C) 1994 Dietmar Höhmann



What is XKeyb ...............................................3

As XKeyb is used. ....... 4

The structure of a configuration file. ....... 6

Improved storage utilization with XKEYBRES..................... 10

The on-line documentation XKEYB.HLP..........................11

PI - the Program Interface of XKeyb.......12

The use of the PI with the unit XKeyb_PI.......18

The operation of the macro recorder KeyMan......20

Version differences........................................21


The files belonging to XKeyb.............24

XKeyb 1.50 documentation page 3 (C) 1994 Dietmar Höhmann

What XKeyb is.

With XKeyb it concerns itself, as the name lets assume, over
a keyboard driver with a certain relationship to
long-known KEYB.COM.

Like Keyb also XKeyb is a keyboard driver for DOS computers,
resident in the memory one installs and by parameters for
different countries to be configured knows.

However the configuration options go far over those
of Keyb outside. Thus XKeyb does not only leave itself for different
Nationalities configure, but also after personal
Adapt to desires.
On the one hand XKeyb permits the free occupying of all keys up
five levels, (normally, with Shift, with Control, with Alt and also
Alt Gr or Control and Alt) on the other hand it offers the
possibility to associate character strings with individual
keys on certain levels, too. Furthermore can for each key
separated to be determined whether it of Caps LOCK, Num LOCK or
Scroll LOCK is influenced, and the functions SHIFT, control
and Alt can be put on any keys. (Whom

For programmers the program INTERFACE is meant from XKeyb.
It enables the access to large functions.

XKeyb 1.50 documentation page 4 (C) 1994 Dietmar Höhmann

How XKeyb is used.

The basic use of XKeyb is approximately identical
to of Keyb.
The program is installed with

XKEYB < configuration file >

In the scope of supply is standard configuration
files for all countries, which are supported also by Keyb,
The name of these files sits down from the well-known
Land contraction and the extension KEY together.
The statement around XKeyb for a German keyboard too
install reads thus:


Apart from the standard definitions still the file belongs to XKeyb
GR2.KEY. This contains a definition for a German
Keyboard with slight modifications. Additionally is the
function of the Caps LOCK key of SHIFT LOCK in a genuine Caps
LOCK, which applies exclusively to the character keys,

These standard definitions are as basis for
non-standard adjustments of the key assignment serve.
All manipulations at the key assignment become with XKeyb
over definition files made, those according to standard those
Extension KEY carry. In the case of use of other extensions
must these for the call of XKeyb explicitly be indicated.

With the definition files it concerns text files after
the model of the INI files. The exact structure becomes in the next
Section describes.

If the key allocation after the installation of XKeyb
to be modified is, then this is by a renewed call
of XKeyb with another definition file easily
possible. (it does not become a new resident copy of XKeyb

However still another word is too in this connection
To say extension String. Under normal conditions XKeyb reserves
with the installation only as much workstation for such XStrings, how
actually one needs (rounded up to full paragraphes).
If subsequently further XStrings is to be created, then can
that because of the available storage space fail. Around this too
prevent exists the possibility, the storage space, for
XStrings to be reserved is to determine explicitly. In addition

XKeyb 1.50 documentation page 5 (C) 1994 Dietmar Höhmann

install for XKeyb with the option '/Xnn ', whereby nn those
Memory capacity in bytes indicates. Around XKeyb e.g. with 480 bytes
Workstation for XStrings and with German key assignment too
install is necessary this instruction:


Apart from the option /X still the options /U know and /Q
are indicated. /U(ninstall) removes the resident copy from
XKeyb from the memory (if this is possible), /Q(uiet)
suppresses the output of LIST paragraph in
Configuration files (see also next section).

XKeyb 1.50 documentation page 6 (C) 1994 Dietmar Höhmann

The structure of a configuration file.

A configuration file for XKeyb is divided into several
Paragraph, those in each case a part of the entire
Keyboard definition contain. Thus the paragraph defines KEYS
the actual key allocation, i.e. which characters and if necessary.
which XStrings on which key is situated. In the paragraph XStrings
the appropriate extension Strings are defined. That
Cut off SHIFTS determines, which keys the functions
SHIFTS, control and Alt are assigned. Furthermore can in
COMBI combination character to be defined (e.g. ^ +
a = â) additionally arbitrarily many can into the definition file
COMMENT and LIST paragraph to be inserted.
Such a paragraph becomes by its name in angular
Brackets initiated. The sequence of the paragraph is without
Meaning. The file GR2.KEY is a practical example of
the structure of a definition file.

A detailed view of the individual paragraph:

[ KEYS ]

This paragraph contains of defined key per a line.
This begins with the Scancode of the key. At these can
itself, without gap, or several of the letters N,C
and S attach, according to whether the key of NUM -, CAPS and
SCROLL LOCK to be influenced is. Is or several
these characters indicated, then the key with that produces
appropriate luring branch the same character, which produces
becomes, if the key with SHIFTS is pressed.
Afterwards, in each case by blanks separately, those follow
Allocations for 5 key levels: Normally, with SHIFTS, with control,
with Alt, with Alt Gr. thereby know either the characters or
their ASCII values indicated as placed in front of a hash makr (#)
become. Characters with ASCII values than 36 are smaller,
are to be always indicated as decimal numbers as '#'.

Becomes instead of a character a decimal number with placed in front
Exclamation mark indicated, then becomes the key the number
belonging extension String assigned. Those are permitted
Numbers 1-200. Values over 200 are special functions

Worth meaning

XKeyb 1.50 documentation page 7 (C) 1994 Dietmar Höhmann

Reserved for XFunctions (see sections over the PI) 201 -

Reserves 241 -

OS/2 2.0: DOS box close. (Alt, f4) 247

Reserves 248,249

250 switching to BIOS Tastaturtreiber (control, Alt, F1)

Reserves 251-253

Print screen (hardcopy) 254

System RESET (control, Alt, Del) 255


In the paragraph SHIFTS are defined the shift keys. In addition
their Scancodes, in each case by blanks, is separated into
this sequence indicated:

Shift1 Shift2 control Alt Scroll Num Caps INSERT


In this paragraph extension Strings are defined. This
occurs in the form:

< number > < String >

It is to noting that between the number and the String
accurately a blank to be must. Everything which this blank
follows as extension String one interprets.
In the paragraph the String of a key knows KEYS assigned
become (s.o.)
Valid numbers for XStrings are the values 1-200.


1 Dat is ' ne Schdring
17 Yours sincerely
123 \[DEL]\[CD]\[AF10 ]

As the example lets assume, is with the definition of
XStrings various special characters admissible. Hereunder applies it that

XKeyb 1.50 documentation page 8 (C) 1994 Dietmar Höhmann

basically all special characters with a backslash
are initiated.

The special characters and their meaning:

Special character produced / corresponds

\\ \

\Axxx characters with the ASCII value xxx.

\Sxxx key with the Scancode xxx.

\n carriage return. \A013 corresponds.

\[HOME] key Home / pos 1.

To \[END] key end / end.

\[PU] key PAGE UP / picture upward.

\[PD] key PAGE down / picture downward.

\[CL] key cursor left.

\[CR] key cursor right.

\[CU] key cursor UP.

\[CD] key cursor down.

\[DEL] key Del / distance.

\[INS] key in / Einfg.

\[Fx] function key x.

\[SFx] SHIFTS + function key x.

\[CFx] control + function key x.

\[AFx] Alt + function key x.

To the words HOME, END, PU, PD, CL and CR can the letter C
are placed in front. This corresponds to the printing on those
respective key with pressed <> Control-KEY.


Here combination characters are defined. The first character
each line is the first characters one

XKeyb 1.50 documentation page 9 (C) 1994 Dietmar Höhmann

Combination of signs. Whereupon n of pairs of characters follows, i.e.
in each case the second character of the combination of signs and that
resulting characters.


' aá eé ií oó uú #32 '

This line defines the combinations of signs:

' +a=á
' +e=á
' +<space> = '

Representable characters do not become by their ASCII value also
placed in front a hash mark (#) indicated.
A special function comes to the exclamation mark: It deletes those
existing definition for a group of combination characters:

^! aâ

This line deletes all combination characters, which begin with ^
and afterwards the combination defines ^+a=â.


A OCNcTcIcNcUcE PARAGRAPH contains only one line. In this
again is the name of a configuration file.
If XKeyb finds such a paragraph, then the handling becomes
the current configuration file terminates. Becomes subsequently,
the indicated configuration file processes. In this way
a concatenation of configuration files is possible.


By XKeyb one ignores.


XKeyb gives contents of such a paragraph, if it
not through /Q is suppressed, on the display out.

XKeyb 1.50 documentation page 10 (C) 1994 Dietmar Höhmann

Improves storage utilization with XKEYBRES

The program XKEYB occupies after the installation in
Normal case of fewer memory, than the original MSDOS
Keyboard driver. But by the relatively large routines to
Loading of the configuration files needs the keyboard driver
during the installation far more memory, than its DOS
Counterpart, which load from XKEYB into the upper memory very much
made more difficult.
Around here remedy to create the program of XKEYBRES developed. It
contains all sections the keyboard driver, which remain resident,
but only minimum initialization routines. Thus that becomes
Program substantially smaller and can into memory areas starting from one
Size by approx. 10KB to be loaded.
The disadvantage: When the loading XKEYBRES does not become
Keyboard definition loaded. I.e. all keys are undefined
and no characters produce. Thus by it the keyboard
, remains the keyboard driver is not blocked first
deactivated (so as if it would be deactivated with Alt control F1
After the initialization of XKEYBRES can with XKEYB
< definition file > a keyboard definition to be loaded.
The keyboard driver becomes also automatic in the active
Status switched.

Additionally things are to be considered with XKEYBRES two:
On the one hand the program becomes basically resident with the call
Installed. even if already a keyboard driver
is installed.
On the other hand can the size of the storage area for
Extension character strings (option /X) with XKEYBRES not
are indicated. XKEYBRES always reserves 923 byte for
Extension character strings.

Example of use:

Merging XKEYB using of XKEYBRES in that
Start file AUTOEXEC.BAT could look for example in such a way:

@Echo off

XKeyb 1.50 documentation page 11 (C) 1994 Dietmar Höhmann

The on-line documentation XKEYB.HLP

Starting from the XKEYB version the file is attached to 1.5 XKEYB.HLP. This
this program documentation contains as Windows 3.1-Hilfedatei.
For starting the on-line documentation you start the file
XKEYB.HLP under Windows 3.1. (from the file or that

XKeyb 1.50 documentation page 12 (C) 1994 Dietmar Höhmann

PI - the program INTERFACE of XKeyb.

The program INTERFACE is an interface for others
Programs, over which all functions are served by XKeyb
can. Apart from functions for the modification of the key assignment
it places also to functions to the extended keyboard inquiry and
ready for the definition of Hotkeys.
The PI is addressed over the multiplexer INTERRUPT (INT
2Fh). The register must AH the value ADh and the register
AL the number of the function which can be required contain.

The functions of the PI and their application in detail:

Installation CHECK (80h)

With this function it can be checked whether XKeyb resident
is installed.

Input: AX=AD80h

Output: AL=00h - > no keyboard driver.
AL=FFh - > BX=584Bh - > XKeyb
more installiert.CX=Versionsnummer
BX<>584Bh - > other keyboard driver. (probably

Set key board mapping (82h)

This function switches between XKeyb and the BIOS
Keyboard driver over. (Control-Alt-F1 / F2)

Input: AX=AD82h
BL=00h - > BIOS Tastaturtreiber
BL=FFh - > XKeyb

Output: CF=1 - > errors
CF=0 - > everything clearly.

While the functions 80h and 82h also with KEYB.COM available
are, all following exist exclusively with XKeyb off
Version 1.20.

Set key translation (90h)

The function of this function is it, the translation of a key
to change. XKeyb v1.10

XKeyb 1.50 documentation page 13 (C) 1994 Dietmar Höhmann

Input: DI=key number (= Scancode of the key)
BL=Normal translation
CH=translation with SHIFTS
CL=translation with control
DH=translation with Alt
DL=translation with AltGr / Control+Alt
BH=key status

Output: AX=0 - > everything clearly
AX=4 - > bad key number

The allocations are direct either ASCII values, those the key
or the numbers of XStrings/XFunctions are assigned.

The meaning of the key status:

Bit meaning (bit = 1)

0 key becomes by SCROLL LOCK

1 key becomes from NUM LOCK

2 key becomes by ACPcS LOCK

3 key is on level 4 (AltGr)
with XStr occupies

4 XStr/XFunc on level 3 (Alt)

5 XStr/XFunc on level 2 (control)

6 XStr/XFunc on level 1 (SHIFT)

7 XStr/XFunc on level 0 (without

GET key translation (91h)

The counterpart for function 90h.

Input: AX=AD91h

Output: AX=0 - > ok one. BX, cx, dx contain allocation.
AX=4 - > bad key number.

WAIT for key hit (94h)

XKeyb 1.50 documentation page 14 (C) 1994 Dietmar Höhmann

How the name already says, this function waits for one
Depressing the key. Contents of the keyboard buffer become

Input: AX=AD94h

Output: AH=virtual scancode
BH=real Scancode
AL=ASCII value
BL=key status
DH=key level (0-4)

The return of two Scancodes likes first confusing
appear. The reason for it is following: Some keys
produce with certain shift keys another Scancode
as normal (the virtual Scancode). This is e.g. with that
Function keys F1-F10 and a part of the cursor keys that
Case. With the remaining keys both Scancodes are alike.
BL contains the keyboard status from 0:417h and gives the status
the shift keys on.
DH indicates the key level, from which the ASCII value originates.

PUT key into more buffer (95h)

The function of this function consists of it, a transferred
to store ' key ' in the Tastaturbuffer.

Input: AX=AD95h
BH=Scancode (virtual)
BL=ASCII value

Output: AX=0 - > ok one
AX=5 - > Buffer fully

Set XString (96h)

With set XString is modified an extension String or again

Input: AX=AD96h
BL=XString number (1-200)
ES:DI=Pointer to the string

Output: AX=0 - > ok one
AX=1 - > bad XString number
AX=2 - > XString memory fully

The first byte of the String must the length contained (Pascal
NO special characters (as \n or \S072) are translated.
The XString keys is not to contain, ASCII value
produce (like cursor and function keys), then are these through

XKeyb 1.50 documentation page 15 (C) 1994 Dietmar Höhmann

a zero byte, followed of the virtual Scancode of the key in
To enter String.
The allocation ' ABC\[F11]DEF\n ' became thus by the String
' ABC'#0#87'DEF'#13 achieves.

GET XString (97h)

The counterpart to set XString.

Input: AX=AD97h
BL=XString number
ES:DI=Pointer to Buffer for String

Output: AX=0 - > ok one. String is starting from ES:DI.
AX=1 - > bad XString number.
AX=3 - > XString does not define.

Set XFunction (98h)

This function resembles the function 96h, with the difference,
that it does not define XString, but a XFunction.
Similarly as occupied with XStrings keys with XFunctions can
become. For XFunctions thereby the numbers 201 to 240 are
A key is pressed, which is occupied with a XFunction,
can 3 things occur:
1. The function is executed immediately
2. The function becomes with the next INT16 (keyboard BIOS)
3. The function is not executed. Instead becomes
Flag set, which indicates that the function was activated.

Input: AX=AD98h
BL=Function number (0=Unused function code
look up)
BH=Calling convention: 0=next INT16
2=Flag set
ES:DI=Pointer to routine / flag

Output: AX=0 - > ok one. BL = function code.
AX=1 - > bad XFunction number
AX=6 - > no function code freely
AX=7 - > illegal call convention

The indicated routine must be FAR. It receives as parameter
a Word, that in the upper byte the Scancode of the key and in
lower byte the keyboard status contains. This serves that
Distinction, if several keys the same function
If BH contains the value 2, then this Word will activate with the that
Function with ES:DI stored. Everything else is then thing of the
appropriate program.

XKeyb 1.50 documentation page 16 (C) 1994 Dietmar Höhmann

If the indicated routine is executed immediately (BH=1), is
during the execution the hardware INTERRUPTS not yet again
de-energised (the INTERRUPT CONTROLLER has still no EoI
received). Therefore the call convention 0 should if possible
are preferred. Are during the execution of the routine
all usual INTERRUPTS certified.
Within the routine it is to be made certain that before one
Access to the own data segment the DS register
accordingly to be set must. Furthermore it is advisable
to switch if necessary to an own stack.
Registers DS and BP are to resemble during the return branch
Values contain, as with the entrance.

CLEAR XFunction (99h)

A XFunction definition deletes.

Input: BL=Nummer of the XFunction (201-240)

Output: AX=0 - > ok one
AX=1 - > illegal XFunction number
AX=8 - > indicated XFunction is not occupied

Set translation table ADDRESS (9Ah)

The address of the keyboard translation table sets.

Input: ES:DI=Adresse of the new table

Output: AX=0 - > ok one

This function enables the administration of several
Key assignments, by switching the translation table.
Each table consists of 100 entries. These again exist
from the allocations for 5 levels and the status byte as the latter
Byte of the entry. If with this function a new table
it is adjusted, should be guaranteed that these also
is initialized or still becomes. Otherwise those produces
Keyboard confused characters.

GET translation table ADDRESS (9Bh)

Determines the address of the current translation table.

Input: AX=AD9Bh

Output: ES:DI=Zeiger on translation table.

GET read XString (9Ch)

Determines the number of the last defined XStrings.

XKeyb 1.50 documentation page 17 (C) 1994 Dietmar Höhmann

Input: AX=AD9Ch

Output: BL=Nummer of the last XStrings

GET combi nation table ADDRESS (9Dh)

Address of the table with the combination characters get.

The table possesses the following structure:

1. Entry
First character of the combination (e.g. ')
Number of following combinations (e.g. 2)
1. Combination
Second character of the combination (e.g. a)
Resulting character (e.g. a)
2. Combination
Second character of the combination (e.g. i)
Resulting character (e.g. i)
2. Entry

After the last entry a zero byte follows.

The size of the table amounts to, max including zero byte.
192 byte.

Input: AX=AD9Dh

Output: ES:DI=Zeiger on table.


Determines the address of the list with the Scancodes that
Shift keys:

Shift1 Shift2 control Alt Scroll Num Caps INSERT

Input: AX=AD9E

Output: ES:DI=Zeiger on table.

XKeyb 1.50 documentation page 18 (C) 1994 Dietmar Höhmann

The use of the PI with the unit XKeyb_PI.

XKeyb_PI is a turbo Pascal unit, those the functions of the PI
for Pascal makes available.
It contains a set of functions, those of calls
directly to the PI pass on:

Function test in valley LED: Word;

Procedure XKeybOn(B: Boolean);

Procedure SetKey(KeyNum, normal, SHIFT, control, Alt, AltGr, Status);

Procedure GetKey(Num:Byte;Var
Standard, SHIFT, CTRL, Alt, AltGr, status);

Procedure WaitForKey(Var VScan, RScan, ASCII, key act, Ebene:Byte);

Procedure PutKey(Ascii, Scan: Byte);

Procedure SetXStr(Num: Byte; XStr: String);

Procedure GetXStr(Num: Byte; Var XStr: String);

Procedure SetXFunc(Var Num:Byte; CallConv:Byte;

Procedure ClearXFunc(Num: Byte);

Procedure SetTable(P: Pointer);

Function TableAdr: Pointer;

Function LastXStr: Byte;

Function combi combiaddrcombi addr: Pointer;

Function SHIFT SHIFT addrcShift addr: Pointer;

After the reading of the section concerning the PI the function should
these routines to some extent clearly its. Otherwise, contains
the file XKeyb_PI.PAS further information.
After the execution one of these functions contains those
Variable errors the error status: 0 = no error, otherwise
Error code (see XKeyb_PI.PAS and sections over the PI)

Except these functions, those directly functions of the PI
represent, contain the unit still 2 further routines: Enter
and Leave.

XKeyb 1.50 documentation page 19 (C) 1994 Dietmar Höhmann

Both are only within a XFunction routine used

Enter protects the DS register, loads DS with the address of the TP
Data segment and SS:SP adjusts to the TP stack.

Leave resets SS:SP and DS on its old values.

A XFunction routine could look thereby as follows:

Type type of key = record
Stat, Scan: Byte;
{ $$F+ } { routine must be FAR! }
Procedure MyHotkey(Key: Type of key);
{ $$F - }

When using Enter and Leave the routine arbitrary may
global, however NO local variable use.
This limitation refers however only to the XFunction
Routine. All of these called routines may do arbitrary
Variable ones produce and use.

XKeyb 1.50 documentation page 20 (C) 1994 Dietmar Höhmann

The operation of the macro recorder KeyMan.

To XKeyb among other things also the program KEYMAN.EXE belongs.
It concerns a simple macro recorder, that
resident in the memory one installs and, via Hotkey
called, the simple Umbelegen of keys enables.

To the loading of KeyMan, which functions only if XKeyb
already in the memory, can it is activated over the Hotkey
become. The standard Hotkey is F11.
After the activation opens on the display
Window. Now you can press either a key, those again
to be occupied is, or however the Hotkey, around a new Hotkey
to adjust.

Have a key to be remapped pressed appear those
current allocation. These can now edit you.
backspace deletes the last character / the last key and that
Hotkey terminates the input. All other keys become
In order to input a backspace, that transferred to the allocation
Alt and 8 will press you on the numeric key block.
After operation of the Hotkey the window and those disappear
Key is provided with the allocation. Exception: It occurred
Error up. In this case an appropriate message appears
with a key to be acknowledged must.
If the new allocation more than one character is covered
a XString produces automatically and on the key put.

You pressed the Hotkey after the activation of KeyMan,
requests KeyMan you to press the new Hotkey. After
Operation of a key disappears the window and this key
is the new Hotkey.

If you an interactively created key allocation protect
want, then you can by means of

XKeyb 1.50 documentation page 21 (C) 1994 Dietmar Höhmann

Version differences

Version 1.1:

Completed around programming INTERFACES.

Again: Macro recorder KeyMan.

Version 1.2:

Implementation of combination characters.
Elimination of errors with call of the INT15h (interface for
Addition keyboard driver)

Version 1.22:

Function modified by Control+Break in call of INT 1Bh and
Production of ^C.

Error correction: The combinations of keys ALT+1 to ALT+0 and
ALT+ ' produce the correct virtual Scancodes starting from 1.22.

Version 1.24:

Special function 247: Call of INT 19h.
Under DOS: Computer again boats (does not function on all
Under OS/2 2.0: DOS box close.

Elimination of errors: With in the file the GR2.KEY defined
XStrings supply the keys F11 and F12 the correct
virtual Scancodes.

Documentation is present as WinWord file.

Version 1.3:

Errors with switching on BIOS Tastaturtreiber recovered.

Problem with not functioning backslash in the MS-DOS wordprocessor

With computers with AMI BIOS no memory test becomes with warm start
more executed.

Error during automatic size adjustment of the storage area
for XStrings recovered.

Extended keyboard status becomes, up to the bit for the right
Control key, supports.

Version 1.5:

XKeyb 1.50 documentation page 22 (C) 1994 Dietmar Höhmann

Improves possibilities of loading the driver into UMBs through

Manual as on-line documentation for Windows 3.1.

XKeyb 1.50 documentation page 23 (C) 1994 Dietmar Höhmann

Use conditions.

Xkeyb is subject the `GNU to general public license '.
Details `copying.txt see '.

Xkeyb is placed more under the `GNU general public license '.
Lake `copying.txt ' for details.

XKeyb 1.50 documentation page 24 (C) 1994 Dietmar Höhmann

The files belonging to XKeyb.

File description

XKEYB.EXE keyboard drivers XKeyb.

XKEYB.DOC this documentation as Winword 2.0-Datei.

XKEYB.TXT this documentation as ASCII file.

GR2.KEY definition file for German keyboard.

??.KEY definition files for all countries, of
KEYB.COM to be supported. (17 files)

PC8.KEY definition file for standard
combination characters.(= code PAGE 437 with KEYB.COM)

PC850.KEY definition for combination characters with the PC850
Character set. (= code PAGE 850 with KEYB.COM)

ECMA94.KEY definition for combination characters with the ECMA
94 Latin 1-character set.

KEYMAN.EXE macro recorders KeyMan.

KEYMAN.PAS source code to KeyMan.

LISTXDEF.EXE program for the output the ATS. Key assignment.

LISTXDEF.PAS source code too LISTXDEF.

XKEYB_PI.PAS TP unit for the program INTERFACE.

XKEYBRES.EXE reduced version of XKeyb. Contains only that
Part, the resident remains. Can thereby more easily
into UMBs to be loaded.

XKEYB.HLP XKeyb on-line documentation for Windows 3.1

copying.txt GNU general public license

Files altogether: 32

The file XKEYB.TXT was passed through the German->English translator at: babelfish.altavista.digital.com, and then one or the other German word, that was left in the text, was translated manually.
You wanted it, you got it ;-)