A+: a programming language for people who live to program
Reference Manual

Terms Of Use

About A+
History of A+
Who Wrote A+?
Screenshots
Programs Written in A+

Getting A+
Download
Other Software
Installation
Documentation

A+ Community
FAQ
Mail Contacts
Other Resources
The Reviews

German Keyboards

- Courtesy of Edgar M. E. Wermuth

Here's my advice for users with German keyboards, which may help
others, too:

When working with A+ I use a keyboard mapping  conforming
to an US layout augmented by the APL characters according to the
A+ conventions. (After some practice the wrong (in my case: German)
labeling of the keyboard will no longer be an obstacle.)

To accustom this to your own configuration and taste
you may use  "xmodmap", "xev" and "xkeycaps". Look up the man pages!
(Some information about these X tools can be found, e.g., in
the excellent Unix book by K. H. Rosen, R. R. Rosinski, J. M. Farber,
and D. A. Host (Osborne McGraw-Hill 1996) as well as in the
Linux book by Michael Kofler (Addison-Wesley).)

If you just try the command "xmodmap" you'll get a response like

-------------------------------------------------------------


  xmodmap:  up to 2 keys per modifier, (keycodes in parentheses):

  shift       Shift_L (0x32),  Shift_R (0x3e)
  lock        Caps_Lock (0x42)
  control     Control_L (0x25),  Multi_key (0x6d)
  mod1        Meta_L (0x40)
  mod2        Num_Lock (0x4d)
  mod3        Mode_switch (0x71)
  mod4        Super_L (0x73),  Super_R (0x74)
  mod5        Scroll_Lock (0x4e)


-------------------------------------------------------------


showing your "modifiers" (keys like Control_L, Shift_L, or
Meta_L (Alt_L); L means "Left").

With

  xmodmap -pke > keymap.txt

you'll get a text file with your actual keyboard mapping.
Its beginning may look like

------------------------------------------------------------

keycode   8 =
keycode   9 = Escape
keycode  10 = 1 exclam onesuperior exclamdown
keycode  11 = 2 quotedbl twosuperior oneeighth
keycode  12 = 3 section threesuperior sterling
keycode  13 = 4 dollar onequarter currency
keycode  14 = 5 percent onehalf threeeighths
keycode  15 = 6 ampersand threequarters fiveeighths
keycode  16 = 7 slash braceleft seveneighths
keycode  17 = 8 parenleft bracketleft trademark
keycode  18 = 9 parenright bracketright plusminus
keycode  19 = 0 equal braceright degree
keycode  20 = ssharp question backslash questiondown
keycode  21 = acute grave cedilla dead_ogonek

-----------------------------------------------------------

if you have a German keyboard.

With "xev" or "xkeycaps" you can determine the keycodes of your
keyboard's keys. The file

  /usr/X11R6/include/X11/keysymdef.h

(for some Linux distributions, the location may be slightly
different) contains all the key symbols which the keys can
be mapped onto.
The syntax is

  keycode n = key shift+key mode_switch+key mode_switch+shift+key

for every key. (There need not always be four values on the
right-hand side of the equal sign.)

The file .USkeys in my ~ directory is the following one:

----------------------------------------------------------

keycode   8 =
keycode   9 = Escape
keycode  10 = 1 exclam exclamdown agrave
keycode  11 = 2 at cent ae
keycode  12 = 3 numbersign less ccedilla
keycode  13 = 4 dollar currency egrave
keycode  14 = 5 percent equal division
keycode  15 = 6 asciicircum brokenbar ocircumflex
keycode  16 = 7 ampersand greater aacute
keycode  17 = 8 asterisk diaeresis eth
keycode  18 = 9 parenleft copyright onesuperior
keycode  19 = 0 parenright asciicircum degree
keycode  20 = minus underscore guillemotleft
keycode  21 = equal plus ssharp hyphen
keycode  22 = BackSpace
keycode  23 = Tab
keycode  24 = q Q question questiondown
keycode  25 = w W multiply
keycode  26 = e E Aring aring
keycode  27 = r R Ograve paragraph
keycode  28 = t T asciitilde
keycode  29 = y Y Ugrave acute
keycode  30 = u U Otilde otilde
keycode  31 = i I Eacute eacute
keycode  32 = o O Idiaeresis idiaeresis
keycode  33 = p P asterisk threesuperior
keycode  34 = bracketleft braceleft ucircumflex Ucircumflex
keycode  35 = bracketright braceright yacute Yacute
keycode  36 = Return
keycode  37 = Control_L
keycode  38 = a A Aacute aacute
keycode  39 = s S Oacute threequarters
keycode  40 = d D Adiaeresis adiaeresis
keycode  41 = f F underscore onehalf
keycode  42 = g G Ccedilla ccedilla
keycode  43 = h H Egrave egrave
keycode  44 = j J Ecircumflex ecircumflex
keycode  45 = k K apostrophe section
keycode  46 = l L Igrave igrave
keycode  47 = semicolon colon Ucircumflex onequarter
keycode  48 = apostrophe quotedbl Yacute guillemotright
keycode  49 = grave asciitilde thorn asciitilde
keycode  50 = Shift_L
keycode  51 = backslash bar Udiaeresis udiaeresis
keycode  52 = z Z Uacute uacute
keycode  53 = x X Ooblique oslash
keycode  54 = c C Atilde atilde
keycode  55 = v V Odiaeresis odiaeresis
keycode  56 = b B Acircumflex acircumflex
keycode  57 = n N Icircumflex icircumflex
keycode  58 = m M bar bar
keycode  59 = comma less notsign less
keycode  60 = period greater Udiaeresis registered
keycode  61 = slash question macron question
keycode  62 = Shift_R
keycode  63 = KP_Multiply
keycode  64 = Meta_L
keycode  65 = space
keycode  66 = Caps_Lock
keycode  67 = F1
keycode  68 = F2
keycode  69 = F3
keycode  70 = F4
keycode  71 = F5
keycode  72 = F6
keycode  73 = F7
keycode  74 = F8
keycode  75 = F9
keycode  76 = F10
keycode  77 = Num_Lock
keycode  78 = Scroll_Lock
keycode  79 = KP_Home KP_7
keycode  80 = KP_Up KP_8
keycode  81 = KP_Prior KP_9
keycode  82 = KP_Subtract
keycode  83 = KP_Left KP_4
keycode  84 = KP_Begin KP_5
keycode  85 = KP_Right KP_6
keycode  86 = KP_Add
keycode  87 = KP_End KP_1
keycode  88 = KP_Down KP_2
keycode  89 = KP_Next KP_3
keycode  90 = KP_Insert KP_0
keycode  91 = KP_Delete KP_Decimal
keycode  92 =
keycode  93 =
keycode  94 = less greater bar
keycode  95 = F11
keycode  96 = F12
keycode  97 = Home
keycode  98 = Up
keycode  99 = Prior
keycode 100 = Left
keycode 101 =
keycode 102 = Right
keycode 103 = End
keycode 104 = Down
keycode 105 = Next
keycode 106 = Insert
keycode 107 = Delete
keycode 108 = KP_Enter
keycode 109 = Multi_key
keycode 110 = Pause Break
keycode 111 = Print Execute
keycode 112 = KP_Divide
keycode 113 = Mode_switch
keycode 114 =
keycode 115 = Super_L
keycode 116 = Super_R
keycode 117 = Menu
keycode 118 =
keycode 119 =
keycode 120 =
keycode 121 =
keycode 122 =
keycode 123 =
keycode 124 =
keycode 125 =
keycode 126 =
keycode 127 =
keycode 128 =
keycode 129 =
keycode 130 =
keycode 131 =
keycode 132 =
keycode 133 =
keycode 134 =

-------------------------------------------------------------------

This file uses the positions of the APL characters in the "Kapl"
fonts as well as their Latin 1 counterparts. (See the A+ "Quick
Reference" documentation.)
Alt_R is the Mode_switch key. (The third and fourth symbols are
used for the A+/APL characters while the first and second ones are
chosen according to an ordinary US layout.) If you have a different
keyboard, only minor changes will be necessary.

I start A+ with the command "aplus". ("a+" starts the program in the
current terminal.)
My .bashrc file contains the lines

------------------------------------------------------------------

 alias aplus='xmodmap ~/.USkeys ; xemacs -bg lightyellow -fg
midnightblue -eval "(a-other-window)"&'

 alias over='xmodmap ~/.Keys'

------------------------------------------------------------------

The file ".Keys" contains the German mapping for my keyboard.

There seems to be a minor bug in the Lisp code for
the xemacs A+ mode: the APL characters are not displayed in the
Kapl font but in a smaller Latin 1 font. Thus  appears instead
of jota and  in place of rho. lacking any Lisp expertise,
I didn't try to figure it out.
And if I try to change the A+ font via the A+ options
menu I get no change whatsoever.
Perhaps there will be a patch soon.
(Or is there a bug in my installation? Maybe my configuration
is too different from the one on which the code was testet.)

For the time being, I use

 Emacs.default.attributeFont:
--kapl-screen-r-normal--15-150-72-72-m--iso8859-1

 Emacs.italic.attributeFont:
--kapl-screen-r-normal--15-150-72-72-m--iso8859-1

 Emacs.italic.attributeForeground: lightblue

in my .Xdefaults file. Thus the mechanism of choosing the fonts at
runtime
is overridden, and it works.
          

                                                                                                                                                                                                                                                                                                                                         

Thanks to the designers
of www.xemacs.org for
their inspirational look
and feel.
This page is part of the A+ website <http://www.aplusdev.org/>
Maintained by webmaster@aplusdev.org
Hosted by Morgan Stanley Logo
This page last modified Mon Aug 5 17:25:42 EDT 2002
© 1992-2008 Morgan Stanley Dean Witter & Co.  All rights reserved.