On Tue, Mar 01, 2011 at 09:46:19AM EST, rusi wrote:
> On Mar 1, 6:01 pm, Mark Thomas <m...@thomaszone.com> wrote:

> > I know someone who was involved in creating a language called A+. It
> > was invented at Morgan Stanley where they used Sun keyboards and had
> > access to many symbols, so the language did have set symbols, math
> > symbols, logic symbols etc. Here's a keyboard map including the
> > language's symbols (the red characters).
> > http://www.aplusdev.org/keyboard.html

> > I have no idea if this language is still in use.
> 
> Runs (ok limps) under debian/ubuntu -- see 
  http://packages.debian.org/squeeze/aplus-fsf

> My own attempts at improving the scene 
  http://www.emacswiki.org/emacs/AplInDebian

> If anyone has any further findings on this, I'd be happy to know.

Well.. a couple months back I got to the point where I'd really had it
with the anglo-centric verbosity of common programming languages (there
are days when even python makes me think of COBOL.. ugh..) and I took
a look at A+.

At first it looks like something MS (Morgan Stanley..) dumped into the
OSS lap fifteen years ago and nobody ever used it or maintained it.. so
it takes a bit of digging to make it.. sort of work in current GNU/linux
distributions.. especially since it knows nothing about Unicode.

Here's the X/A+ map I came up with:

// A+ keyboard layout: /usr/share/X11/xkb/symbols/apl
// Chris Jones - 18/12/2010

// Enable via:
//      $ setxkbmap -v 10 apl

default
partial alphanumeric_keys modifier_keys 
xkb_symbols "APL" {

    name[Group1]= "APL";

    // Alphanumeric section
    key <TLDE> {        [     grave,    asciitilde,     0x010000fe,     
0x0100007e      ]       };
    key <AE01> {        [         1,    exclam,         0x010000a1,     
0x010000e0      ]       };
    key <AE02> {        [         2,    at,             0x010000a2,     
0x010000e6      ]       };
    key <AE03> {        [         3,    numbersign,     0x0100003c,     
0x010000e7      ]       };
    key <AE04> {        [         4,    dollar,         0x010000a4,     
0x010000e8      ]       };
    key <AE05> {        [         5,    percent,        0x0100003d,     
0x010000f7      ]       };
    key <AE06> {        [         6,    asciicircum,    0x010000a6,     
0x010000f4      ]       };
    key <AE07> {        [         7,    ampersand,      0x0100003e,     
0x010000e1      ]       };
    key <AE08> {        [         8,    asterisk,       0x010000a8,     
0x010000f0      ]       };
    key <AE09> {        [         9,    parenleft,      0x010000a9,     
0x010000b9      ]       };
    key <AE10> {        [         0,    parenright,     0x0100005e,     
0x010000b0      ]       };
    key <AE11> {        [     minus,    underscore,     0x010000ab,     
0x01000021      ]       };
    key <AE12> {        [     equal,    plus,           0x010000df,     
0x010000ad      ]       };

    key <AD01> {        [         q,    Q,              0x0100003f,     
0x010000bf      ]       };
    key <AD02> {        [         w,    W,              0x010000d7,     
Nosymbol        ]       };
    key <AD03> {        [         e,    E,              0x010000c5,     
0x010000e5      ]       };
    key <AD04> {        [         r,    R,              0x010000d2,     
Nosymbol        ]       };
    key <AD05> {        [         t,    T,              0x0100007e,     
Nosymbol        ]       };
    key <AD06> {        [         y,    Y,              0x010000d9,     
0x010000b4      ]       };
    key <AD07> {        [         u,    U,              0x010000d5,     
Nosymbol        ]       };
    key <AD08> {        [         i,    I,              0x010000c9,     
0x010000e9      ]       };
    key <AD09> {        [         o,    O,              0x010000cf,     
0x010000ef      ]       };
    key <AD10> {        [         p,    P,              0x0100002a,     
0x010000b3      ]       };
    key <AD11> {        [ bracketleft,  braceleft,      0x010000fb,     
0x010000dd      ]       };
    key <AD12> {        [ bracketright, braceright,     0x010000fd,     
0x010000db      ]       };

    key <AC01> {        [         a,    A,              0x010000c1,     
Nosymbol        ]       };
    key <AC02> {        [         s,    S,              0x010000d3,     
0x010000be      ]       };
    key <AC03> {        [         d,    D,              0x010000c4,     
Nosymbol        ]       };
    key <AC04> {        [         f,    F,              0x0100005f,     
0x010000bd      ]       };
    key <AC05> {        [         g,    G,              0x010000c7,     
0x010000e7      ]       };
    key <AC06> {        [         h,    H,              0x010000c8,     
0x010000e8      ]       };
    key <AC07> {        [         j,    J,              0x010000ca,     
0x010000ea      ]       };
    key <AC08> {        [         k,    K,              0x01000027,     
Nosymbol        ]       };
    key <AC09> {        [         l,    L,              0x010000cc,     
0x010000ec      ]       };
    key <AC10> {        [ semicolon,    colon,          0x010000db,     
0x010000bc      ]       };
    key <AC11> {        [ apostrophe,   quotedbl,       0x010000dd,     
0x010000bb      ]       };

    key <AB01> {        [         z,    Z,              0x010000da,     
0x010000fa      ]       };
    key <AB02> {        [         x,    X,              0x010000d8,     
Nosymbol        ]       };
    key <AB03> {        [         c,    C,              0x010000c3,     
0x010000e3      ]       };
    key <AB04> {        [         v,    V,              0x010000d6,     
Nosymbol        ]       };
    key <AB05> {        [         b,    B,              0x010000c2,     
0x010000e2      ]       };
    key <AB06> {        [         n,    N,              0x010000ce,     
0x010000ee      ]       };
    key <AB07> {        [         m,    M,              0x0100007c,     
0x010000cd      ]       };
    key <AB08> {        [     comma,    less,           0x010000ac,     
0x0100003c      ]       };
    key <AB09> {        [    period,    greater,        0x010000dc,     
0x010000ae      ]       };
    key <AB10> {        [     slash,    question,       0x010000af,     
0x0100003f      ]       };

    key <BKSL> {        [ backslash,         bar,       0x010000dc,     
0x010000fc      ]       };
    key <CAPS> {        [ Caps_Lock     ]       };
    // End alphanumeric section

    include "level3(win_switch)"
    include "level3(menu_switch)"
};

In fine.. you fire up an xterm.. issue a ‘setxkbmap apl’ command from
the shell prompt and you're in business.

I used it daily for about a month before I switched to APLX - aka micro
APL.. and as I had zero problems.. So, I suspect it is 100% A+
compatible.

Initially, I thought of writing a python wrapper that would handle
conversion from Unicode to A+'s peculiar brand of latin1 and back (among
other things) but never had the time.

cj
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to