Initial support for extra layouts
authorSergey V. Udaltsov <svu@gnome.org>
Wed, 17 Jun 2009 23:35:20 +0000 (00:35 +0100)
committerSergey V. Udaltsov <svu@gnome.org>
Wed, 17 Jun 2009 23:35:20 +0000 (00:35 +0100)
http://bugs.freedesktop.org/show_bug.cgi?id=21466 using APL layout from
http://bugs.freedesktop.org/show_bug.cgi?id=21743

14 files changed:
.gitignore
configure.in
po/POTFILES.in
rules/Makefile.am
rules/base.extras.xml.in [new file with mode: 0644]
rules/base.l2_s.part
rules/base.l3_s.part
rules/base.l4_s.part
rules/base.lists.part
rules/base.ml_s.part
symbols/Makefile.am
symbols/extras/Makefile.am [new file with mode: 0644]
symbols/extras/apl [new file with mode: 0644]
xkbrules.am

index bd5c225..e15acf6 100644 (file)
@@ -56,6 +56,7 @@ po/*.gmo
 po/*.pot
 po/messages.mo
 po/stamp-po
+rules/base.extras.xml
 rules/base.xml
 rules/base.lst
 rules/base
index 8dded0c..2ab90d6 100644 (file)
@@ -77,6 +77,7 @@ symbols/sgi_vndr/Makefile
 symbols/sony_vndr/Makefile
 symbols/sun_vndr/Makefile
 symbols/xfree68_vndr/Makefile
+symbols/extras/Makefile
 types/Makefile
 xkeyboard-config.spec
 docs/Makefile
index 8b93ba4..901d327 100644 (file)
@@ -1 +1,2 @@
 rules/base.xml.in
+rules/base.extras.xml.in
index 581568e..8c72986 100644 (file)
@@ -162,7 +162,7 @@ dist_files = xkb.dtd README
 
 rules_DATA = $(rules_files) $(lst_files) $(dist_files)
 
-xml_in_files = base.xml.in evdev.xml.in
+xml_in_files = base.xml.in evdev.xml.in base.extras.xml.in
 xml_DATA = $(xml_in_files:.xml.in=.xml) 
 
 $(srcdir)/evdev.xml.in: base.xml.in
@@ -174,7 +174,7 @@ EXTRA_DIST= $(xml_in_files) xfree98 \
             $(base_parts_compat_dist) \
             xml2lst.pl merge.sh $(dist_files)
 
-CLEANFILES = base base.xml base.lst evdev evdev.xml evdev.lst
+CLEANFILES = base base.xml base.lst evdev evdev.xml evdev.lst base.extras.xml
 MAINTAINERCLEANFILES = $(srcdir)/evdev.xml.in
 
 rulesdir = $(xkb_base)/rules
diff --git a/rules/base.extras.xml.in b/rules/base.extras.xml.in
new file mode 100644 (file)
index 0000000..73d2bbe
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd">
+<xkbConfigRegistry>
+  <modelList/>
+  <layoutList>
+    <layout>
+      <configItem>
+        <name>apl</name>
+        <_shortDescription>APL</_shortDescription>
+        <_description>APL</_description>
+      </configItem>
+      <variantList/>
+    </layout>
+  </layoutList>
+  <optionList/>
+</xkbConfigRegistry>
index 03a7aaf..dd1825f 100644 (file)
@@ -1 +1,2 @@
+  $extralayouts =       +extras/%l[2]%(v[2]):2
   *            =       +%l[2]%(v[2]):2
index 0947c11..2b80547 100644 (file)
@@ -1 +1,2 @@
+  $extralayouts =       +extras/%l[3]%(v[3]):3
   *            =       +%l[3]%(v[3]):3
index 23ccc22..6a2268f 100644 (file)
@@ -1 +1,2 @@
+  $extralayouts =       +extras/%l[4]%(v[4]):4
   *            =       +%l[4]%(v[4]):4
index c726a06..e8f2446 100644 (file)
@@ -92,3 +92,4 @@
 
 ! $thinkpads = thinkpad thinkpad60 thinkpadz60
 
+! $extralayouts = apl
index 7e9b2d6..036695c 100644 (file)
@@ -22,4 +22,5 @@
   olpc         *                       =       olpc+%l%(v)
  $thinkpads    br                      =       pc+br(thinkpad)
   *            $nonlatin               =       pc+us+%l%(v):2
+  *            $extralayouts           =       pc+extras/%l%(v)
   *            *                       =       pc+%l%(v)
index d033a15..472a399 100644 (file)
@@ -1,4 +1,4 @@
-SUBDIRS = digital_vndr fujitsu_vndr hp_vndr macintosh_vndr nec_vndr sgi_vndr sony_vndr sun_vndr xfree68_vndr
+SUBDIRS = digital_vndr fujitsu_vndr hp_vndr macintosh_vndr nec_vndr sgi_vndr sony_vndr sun_vndr xfree68_vndr extras
 
 symbolsdir = $(xkb_base)/symbols
 dist_symbols_DATA = \
diff --git a/symbols/extras/Makefile.am b/symbols/extras/Makefile.am
new file mode 100644 (file)
index 0000000..0d1793d
--- /dev/null
@@ -0,0 +1,2 @@
+symbolsdir = $(xkb_base)/symbols/extras
+dist_symbols_DATA = apl
diff --git a/symbols/extras/apl b/symbols/extras/apl
new file mode 100644 (file)
index 0000000..29eafe7
--- /dev/null
@@ -0,0 +1,296 @@
+// APL Keyboard Layouts
+
+// This file supports:
+// -   The Sharp APL for Unix (SAX) layout
+// -   The IBM APL2 layout
+// -   The Manugistics APL*PLUS II (Version 5.1, 1993) keyboard layout
+
+// Unicode APL table: http://aplwiki.com/UnicodeAplTable
+// ...and another: http://publibfp.boulder.ibm.com/epubs/pdf/h2110611.pdf (appendix A)
+// Generic Unicode stuff: http://www.fileformat.info/info/unicode/category/index.htm
+
+// Tim Nelson (this file's creator) says:
+
+// This file doesn't deal with all the combining stuff -- I'm not an APL programmer,
+// and am not quite sure what's needed here.  However, it may be possible to get this
+// working with dead keys and the like.  Patches gratefully accepted.  
+
+// Some of the shift-key assignments may differ from the APL tradition.  If
+// that's not considered acceptable, it should be possible to remap the 
+// shift keys.  I have striven, however, to ensure that the use of shift keys
+// in these maps is at least self-consistent.  
+
+// I'm assuming that this will be used with another keyboard layout (ie. for 
+// your language), with a special shift key to use these maps.  
+
+partial alphanumeric_keys modifier_keys 
+xkb_symbols "common" {
+       name[Group1]= "APL Keyboard Symbols: Common";
+
+       key <AE01> { [  diaeresis       ] };
+       key <AE02> { [  U00AF   ] }; // ¯ -- Macron
+       key <AE03> { [  less    ] };
+       key <AE04> { [  U2264   ] }; // ≤ -- Less-than Or Equal To
+       key <AE05> { [  equal   ] };
+       key <AE06> { [  U2265   ] }; // ≥ -- Greater-than Or Equal To
+       key <AE07> { [  greater ] };
+       key <AE08> { [  U2260   ] }; // ≠ -- Not Equal To
+       key <AE09> { [  U2228   ] }; // ∨ -- Logical Or
+       key <AE10> { [  U2227   ] }; // ∧ -- Logical And
+
+       // Q
+       key <AD01> { [  question        ] };
+       // W
+       key <AD02> { [  U2375           ] }; // ⍵ -- APL Functional Symbol Omega
+       // E
+       key <AD03> { [  U220A           ] }; // ∊ -- Small Element Of
+       // R
+       key <AD04> { [  U2374           ] }; // ⍴ -- APL Functional Symbol Rho
+       // T
+       key <AD05> { [  asciitilde              ] };
+       // Y
+       key <AD06> { [  U2191           ] }; // ↑ -- Upwards Arrow
+       // U
+       key <AD07> { [  U2193           ] }; // ↓ -- Downwards Arrow
+       // I
+       key <AD08> { [  U2373   ] }; // ⍳ -- APL Functional Symbol Iota
+       // O
+       key <AD09> { [  U25CB   ] }; // ○ -- White Circle
+       // P
+       key <AD10> { [  U22C6   ] }; // ⋆ -- Should this be a plain asterisk, or the star operator???
+       // [
+       key <AD11> { [  U2190   ] }; // ← -- Leftwards Arrow
+
+       // A
+       key <AC01> { [  U237A   ] }; // ⍺ -- APL Functional Symbol Alpha
+       // S
+       key <AC02> { [  U2308   ] }; // ⌈ -- Left Ceiling
+       // D
+       key <AC03> { [  U230A   ] }; // ⌊ -- Left Floor
+       // F
+       key <AC04> { [  underscore      ] };
+       // G
+       key <AC05> { [  U2207   ] }; // ∇ -- Nabla
+       // H
+       key <AC06> { [  U2206   ] }; // ∆ -- Increment
+       // J
+       key <AC07> { [  U2218   ] }; // ∘ -- Ring Operator
+       // K
+       key <AC08> { [  apostrophe ] };
+       // L
+       key <AC09> { [  U2395   ] }; // ⎕ -- APL Functional Symbol Quad
+
+       // Z
+       key <AB01> { [  U2282   ] }; // ⊂ -- Subset Of
+       // X
+       key <AB02> { [  U2283   ] }; // ⊃ -- Superset Of
+       // C
+       key <AB03> { [  U2229   ] }; // ∩ -- Intersection
+       // V
+       key <AB04> { [  U222A   ] }; // ∪ -- Union
+       // B
+       key <AB05> { [  U22A5   ] }; // ⊥ -- Up Tack
+       // N
+       key <AB06> { [  U22A4   ] }; // ⊤ -- Down Tack
+       // M
+       key <AB07> { [  U007C   ] }; // | -- Vertical Line
+};
+
+// Keys common to a number of keyboards that allow normal language usage alongside APL
+partial alphanumeric_keys modifier_keys 
+xkb_symbols "unified" {
+       name[Group1]= "APL Keyboard Symbols: Unified Layout";
+
+       include "apl(common)"
+
+       // `
+       key <TLDE> { [  U22C4   ] }; // ⋄ -- Diamond Operator
+       key <AE09> { [  NoSymbol,       U2371   ] }; // ⍱ -- APL Functional Symbol Down Caret Tilde
+       key <AE10> { [  NoSymbol,       U2372   ] }; // ⍲ -- APL Functional Symbol Up Caret Tilde
+       // -
+       key <AE11> { [  U00D7   ] }; // × -- Multiplication Sign
+       // =
+       key <AE12> { [  U00F7,  U2339   ] }; // ÷ ⌹ -- Division Sign / APL Functional Symbol Quad Divide
+
+       // ]
+       key <AD12> { [  U2192           ] }; // → -- Rightwards Arrow
+};
+
+// Layout: http://www.wickensonline.co.uk/apl-unicomp.html
+default
+partial alphanumeric_keys modifier_keys 
+xkb_symbols "sax" {
+       name[Group1]= "APL Keyboard Symbols: Sharp APL for Unix";
+
+       include "apl(unified)"
+
+       key <AE01> { [  NoSymbol,       U00A1   ] }; // ¡ -- Inverted Exclamation Mark
+       key <AE04> { [  NoSymbol,       cent    ] };
+       key <AE08> { [  NoSymbol,       U2342   ] }; // ⍂ -- APL Functional Symbol Quad Backslash
+       // -
+       key <AE11> { [  NoSymbol,       U2261   ] }; // ≡ -- Identical To
+
+       // Q
+       key <AD01> { [  NoSymbol,       U00BF   ] }; // ¿ -- Inverted Question Mark
+       // W
+       key <AD02> { [  NoSymbol,       U233D   ] }; // ⌽ -- APL Functional Symbol Circle Stile
+       // E
+       key <AD03> { [  NoSymbol,       U2377   ] }; // ⍷ -- APL Functional Symbol Epsilon Underbar
+       // T
+       key <AD05> { [  NoSymbol,       U2349   ] }; // ⍉ -- APL Functional Symbol Circle Backslash
+       // I
+       key <AD08> { [  NoSymbol,       U2378   ] }; // ⍸ -- APL Functional Symbol Iota Underbar
+       // O
+       key <AD09> { [  NoSymbol,       U2365   ] }; // ⍥ -- APL Functional Symbol Circle Diaeresis
+       // P
+       key <AD10> { [  NoSymbol,       U235F   ] }; // ⍟ -- APL Functional Symbol Circle Star
+
+       // A
+       key <AC01> { [  NoSymbol,       U2296   ] }; // ⊖ -- Circled Minus
+       // F
+       key <AC04> { [  NoSymbol,       U236B   ] }; // ⍫ -- APL Functional Symbol Del Tilde
+       // G
+       key <AC05> { [  NoSymbol,       U2352   ] }; // ∇ ⍒ -- APL Functional Symbol Del Stile
+       // H
+       key <AC06> { [  NoSymbol,       U234B   ] }; // ∆ ⍋ -- APL Functional Symbol Delta Stile
+       // J
+       key <AC07> { [  NoSymbol,       U2364   ] }; // ⍤ -- APL Functional Symbol Jot Diaeresis
+       // K
+       key <AC08> { [  NoSymbol,       U233B   ] }; // ⌻
+       // L
+       key <AC09> { [  NoSymbol,       U235E   ] }; // ⍞ -- APL Functional Symbol Quote Quad
+       // ;
+       key <AC10> { [  U22A2   ] }; // ⊢ -- Right Tack
+       // '
+       key <AC11> { [  U22A3   ] }; // ⊣ -- Left Tack
+
+       // C
+       key <AB03> { [  NoSymbol,       U235D   ] }; // ⍝ -- APL Functional Symbol Up Shoe Jot
+       // B
+       key <AB05> { [  NoSymbol,       U234E   ] }; // ⍎ -- APL Functional Symbol Down Tack Jot (Unicode got the name wrong; it should have been "Up Tack")
+       // N
+       key <AB06> { [  NoSymbol,       U2355   ] }; // ⍕ -- APL Functional Symbol Up Tack Jot (Unicode got the name wrong; it should have been "Down Tack")
+       // M
+       key <AB07> { [  NoSymbol,       U2336   ] }; // ⌶ -- APL Functional Symbol I-Beam
+       // ,
+       key <AB08> { [  U235E,  U236A   ] }; // ⍞ ⍪ -- APL Functional Symbol Quote Quad / APL Functional Symbol Comma Bar
+       // .
+       key <AB09> { [  U234E,  U2359   ] }; // ⍎ ⍙ -- [See B key] / APL Functional Symbol Delta Underbar
+       // /
+       key <AB10> { [  U2355,  U233F   ] }; // ⍕ ⌿ -- [See N key] / APL Functional Symbol Slash Bar
+
+       key <BKSL> { [  U235D,  U2340   ] }; // ⍝ ⍀ -- APL Functional Symbol Up Shoe Jot / APL Functional Symbol Backslash Bar
+};
+
+// Layout: http://www.wickensonline.co.uk/apl-unicomp.html
+partial alphanumeric_keys modifier_keys 
+xkb_symbols "apl2" {
+       name[Group1]= "APL Keyboard Symbols: IBM APL2";
+
+       include "apl(common)"
+
+       // The first column is NoSymbol because it inherits.  The second is NoSymbol because those keys don't do anything
+
+       // `
+       key <TLDE> { [  NoSymbol,       U233B,  U2342   ] }; // ⌻ ⍂ -- 
+       key <AE01> { [  NoSymbol, NoSymbol, U2336       ] }; // ⌶ -- APL Functional Symbol I-Beam
+       key <AE02> { [  NoSymbol, NoSymbol,     U236B   ] }; // ⍫ -- APL Functional Symbol Del Tilde
+       key <AE03> { [  NoSymbol, NoSymbol,     U2353   ] }; // ⍒ -- APL Functional Symbol Del Stile
+       key <AE04> { [  NoSymbol, NoSymbol,     U234B   ] }; // ⍋ -- APL Functional Symbol Delta Stile
+       key <AE05> { [  NoSymbol, NoSymbol,     U233D   ] }; // ⌽ -- APL Functional Symbol Circle Stile
+       key <AE06> { [  NoSymbol, NoSymbol,     U2349   ] }; // ⍉ -- APL Functional Symbol Circle Backslash
+       key <AE07> { [  NoSymbol, NoSymbol,     U2296   ] }; // ⊖ -- Circled Minus
+       key <AE08> { [  NoSymbol, NoSymbol,     U235F   ] }; // ⍟ -- APL Functional Symbol Circle Star
+       key <AE09> { [  NoSymbol, NoSymbol,     U2371   ] }; // ⍱ -- APL Functional Symbol Down Caret Tilde
+       key <AE10> { [  NoSymbol, NoSymbol,     U2372   ] }; // ⍲ -- APL Functional Symbol Up Caret Tilde
+       // -
+       key <AE11> { [  plus,   minus,  exclam  ] };
+       // =
+       key <AE12> { [  U00D7,  U00F7,  U2339   ] }; // × ÷ ⌹ -- Multiplication Sign / Division Sign / APL Functional Symbol Quad Divide
+
+       // [
+       key <AD11> { [  NoSymbol,       U2192,  U235E   ] }; // (←) → ⍞ -- Rightwards Arrow / APL Functional Symbol Quote Quad
+       // ]
+       key <AD12> { [  U2337,  U2378,  U2359   ] }; // ⌷ ⍸ ⍙ -- APL Functional Symbol Squish Quad / APL Functional Symbol Iota Underbar / APL Functional Symbol Delta Underbar
+
+       // ;
+       key <AC10> { [  bracketleft, parenleft, U234E   ] }; // ⍎ -- [See B key in SAX layout]
+       // '
+       key <AC11> { [  bracketright, parenright, U2355 ] }; // ⍕ -- [See N key in SAX layout] 
+
+       // ,
+       key <AB08> { [  comma,  semicolon, U235D ] }; // ⍝ -- APL Functional Symbol Up Shoe Jot
+       // .
+       key <AB09> { [  period, colon,  U2340   ] }; // ⍀ -- APL Functional Symbol Backslash Bar
+       // /
+       key <AB10> { [  slash,  backslash, U233F ] }; // ⌿ -- APL Functional Symbol Slash Bar
+
+       key <BKSL> { [  U2261,  U2377, U2364    ] }; // ≡ ⍷ ⍤ -- Identical To / APL Functional Symbol Epsilon Underbar / APL Functional Symbol Jot Diaeresis
+};
+
+partial alphanumeric_keys modifier_keys 
+xkb_symbols "aplplusII" {
+       name[Group1]= "APL Keyboard Symbols: Manugistics APL*PLUS II";
+
+       include "apl(apl2)"
+
+       // `
+       key <TLDE> { [  dollar, U22C4,  U236A   ] }; // ⋄ ⍪ -- Diamond Operator / APL Functional Symbol Comma Bar
+       key <AE01> { [  NoSymbol, NoSymbol, U2261       ] }; // ≡ -- Identical To
+
+       // [
+       key <AD11> { [  U2190,  NoSymbol,       U235E   ] }; // ← ⍞ -- Leftwards Arrow / APL Functional Symbol Quote Quad
+       // ]
+       key <AD12> { [  U2192,  NoSymbol,       U236C   ] }; // → ⍬ -- Rightwards Arrow / APL Functional Symbol Zilde
+
+       // ;
+       key <AC10> { [  bracketleft, parenleft, U234E   ] }; // ⍎ -- [See B key in SAX layout]
+       // '
+       key <AC11> { [  bracketright, parenright, U2355 ] }; // ⍕ -- [See N key in SAX layout] 
+
+       key <BKSL> { [  U22A3,  U22A2,  U2359   ] }; // ⊣ ⊢ ⍙ -- Left Tack / Right Tack / APL Functional Symbol Delta Underbar
+};
+
+
+// MicroAPL layout: http://aplwiki.com/APLXKeyboardLayouts
+// I didn't do the old-style MicroAPL layout; patches gratefully accepted
+partial alphanumeric_keys modifier_keys 
+xkb_symbols "aplx" {
+       name[Group1]= "APL Keyboard Symbols: APLX Unified APL Layout";
+
+       include "apl(unified)"
+
+       // `
+       key <TLDE> { [  NoSymbol,       U235E   ] }; // ⍞ -- APL Functional Symbol Quote Quad
+       key <AE01> { [  NoSymbol,       U2336   ] }; // ⌶ -- APL Functional Symbol I-Beam
+       key <AE02> { [  NoSymbol,       U236B   ] }; // ⍫ -- APL Functional Symbol Del Tilde
+       key <AE03> { [  NoSymbol,       U2353   ] }; // ⍒ -- APL Functional Symbol Del Stile
+       key <AE04> { [  NoSymbol,       U234B   ] }; // ⍋ -- APL Functional Symbol Delta Stile
+       key <AE05> { [  NoSymbol,       U233D   ] }; // ⌽ -- APL Functional Symbol Circle Stile
+       key <AE06> { [  NoSymbol,       U2349   ] }; // ⍉ -- APL Functional Symbol Circle Backslash
+       key <AE07> { [  NoSymbol,       U2296   ] }; // ⊖ -- Circled Minus
+       key <AE08> { [  NoSymbol,       U235F   ] }; // ⍟ -- APL Functional Symbol Circle Star
+       // -
+       key <AE11> { [  NoSymbol,       exclam ] };
+
+       // [
+       key <AD11> { [  NoSymbol,       U2347   ] }; // ⍇ -- Box With Left Arrow
+       // ]
+       key <AD12> { [  NoSymbol,       U2348   ] }; // ⍈ -- Box With Right Arrow
+
+       // ;
+       key <AC10> { [  U234E,  U2261   ] }; // ⍎ ≡ -- [See B key in SAX layout] / Identical To
+       // '
+       key <AC11> { [  U2355,  U2262   ] }; // ⍕ ≢ -- [See N key in SAX layout] / Not Identical To
+
+       // ,
+       key <AB08> { [  U235D,  U236A   ] }; // ⍝ ⍪ -- APL Functional Symbol Up Shoe Jot / APL Functional Symbol Comma Bar
+       // .
+       key <AB09> { [  U2340,  U2364   ] }; // ⍀ ⍤ -- APL Functional Symbol Backslash Bar / APL Functional Symbol Jot Diaeresis
+       // /
+       key <AB10> { [  U233F ] }; // ⌿ -- APL Functional Symbol Slash Bar
+
+       key <BKSL> { [  U22A3,  U22A3   ] }; // ⊣ ⊢ -- Left Tack / Right Tack
+};
+
+
index 6fde169..0251b74 100644 (file)
@@ -8,7 +8,7 @@ dirdir = $(xkb_base)
 
 $(subdir).dir: $(dir_data)
        -rm -f $@
-       here=$$(pwd); cd $(srcdir) && $(XKBCOMP) -lfhlpR -o $${here}/$@ '*'
+       here=$(abs_builddir); cd $(srcdir) && $(XKBCOMP) -lfhlpR -o $${here}/$@ '*'
 
 CLEANFILES = $(subdir).dir