--- xkeyboard-config-1.6.orig/BUGS
+++ xkeyboard-config-1.6/BUGS
@@ -0,0 +1,70 @@
+-- Freedesktop.ORG
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=320
+http://bugs.xfree86.org/show_bug.cgi?id=1155
+
+ DONE: Added microsoftprousb
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=326
+http://bugs.xfree86.org/show_bug.cgi?id=1227
+
+ ?: Which of 'inet' files is right?
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=365
+
+ DONE: Two keysyms swapped in us(intl)
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=371
+
+ ?: What exactly is broken? Some patch would be nice
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=458
+
+ DONE: Changed Farsi to Iranian
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=463
+
+ ?: Don't know how to fix, really. Let's see.
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=496
+
+ DONE: Added Gyration Compact Keyboard
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=574
+
+ DONE: The patch applied
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=587
+
+ ?: Which of altwin options should be included?
+ Some part of meta_win is already there
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=630
+
+ DONE: Logitech iTouch Cordless Keyboard (model Y-RB6) added
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=666
+
+ DONE: Long ago added alt_super_win
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=711
+
+ DONE: Added Super Power Multimedia Keyboard
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=743
+
+ DONE: Armenian fixed
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=744
+
+ DONE: Model a4techKB21 added
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=926
+
+ TODO:
+-- GNOME
+
+http://bugzilla.gnome.org/show_bug.cgi?id=144646
+http://bugs.xfree86.org/show_bug.cgi?id=1415
+
+ DONE: Fixed, thanks to Dmitry
--- xkeyboard-config-1.6.orig/xslt/xfree86.xsl
+++ xkeyboard-config-1.6/xslt/xfree86.xsl
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- xkeyboard-config-1.6.orig/xslt/reg2ll.xsl
+++ xkeyboard-config-1.6/xslt/reg2ll.xsl
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+:""
+
+
+():" - "
+
+
--- xkeyboard-config-1.6.orig/symbols/pt
+++ xkeyboard-config-1.6/symbols/pt
@@ -221,4 +221,4 @@
key { [ scircumflex, Scircumflex, ccedilla, Ccedilla ] };
key { [ gcircumflex, Gcircumflex, q, Q ] };
-};
\ No newline at end of file
+};
--- xkeyboard-config-1.6.orig/symbols/extractGroupNames.sh
+++ xkeyboard-config-1.6/symbols/extractGroupNames.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+grep 'name\[Group1\]' * | sed 's/[[:space:]]*name\[Group1\].*=[[:space:]]*//;s/;[[:space:]]*$//' | sort
--- xkeyboard-config-1.6.orig/tests/testOptions.pl
+++ xkeyboard-config-1.6/tests/testOptions.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use xkbTestFunc;
+
+xkbTestFunc::backupXkbSettings();
+
+xkbTestFunc::dumpXkbSettingsBackup();
+
+xkbTestFunc::testLevel2( "group", "option", 4, ":", "", 0, 0, 1 );
+
+xkbTestFunc::restoreXkbSettings();
+
+print "Done!\n";
--- xkeyboard-config-1.6.orig/tests/genLists4Comparizon.sh
+++ xkeyboard-config-1.6/tests/genLists4Comparizon.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+#
+# This script compares the group names which "have to be", according to the descriptions in base.xml -
+# and actually existing in the symbol files. Some differences are ok (like extra double quotes or
+# extra escaping character) - but all the rest should be in sync.
+#
+
+ROOT="`dirname $0`/.."
+F1=reg2ll.lst
+F2=gn2ll.lst
+
+xsltproc $ROOT/xslt/reg2ll.xsl $ROOT/rules/base.xml | sort | uniq > $F1
+
+for i in $ROOT/symbols/*; do
+ if [ -f $i ]; then
+ id="`basename $i`"
+ export id
+ gawk 'BEGIN{
+ FS = "\"";
+ id = ENVIRON["id"];
+ isDefault = 0;
+}
+/.*default.*/{
+ isDefault = 1;
+}
+/xkb_symbols/{
+ variant = $2;
+}/^[[:space:]]*name\[Group1\][[:space:]]*=/{
+ if (isDefault == 1)
+ {
+ printf "%s:\"%s\"\n",id,$2;
+ isDefault=0;
+ } else
+ {
+ name=$2;
+ printf "%s(%s):\"%s\"\n", id, variant, name;
+ }
+}' $i
+ fi
+done | sort | uniq > $F2
+
+diff $F1 $F2
--- xkeyboard-config-1.6.orig/tests/listCI2.xsl
+++ xkeyboard-config-1.6/tests/listCI2.xsl
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- xkeyboard-config-1.6.orig/tests/xkbTestFunc.pm
+++ xkeyboard-config-1.6/tests/xkbTestFunc.pm
@@ -0,0 +1,164 @@
+package xkbTestFunc;
+
+use strict;
+use warnings;
+
+our $VERSION='1.00';
+
+our $origXkbRules;
+our $origXkbModel;
+our $origXkbLayouts;
+our $origXkbOptions;
+our $origXkbVariants;
+
+sub backupXkbSettings
+{
+ ( $origXkbRules, $origXkbModel, $origXkbLayouts, $origXkbVariants, $origXkbOptions ) = getXkbSettings();
+}
+
+sub getXkbSettings
+{
+ my ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions );
+
+ open (XPROP, "xprop -root |") or die "Could not start xprop";
+ PROP: while ()
+ {
+ if (/_XKB_RULES_NAMES\(STRING\) = \"(.*)\", \"(.*)\", \"(.*)\", \"(.*)\", \"(.*)\"/)
+ {
+ ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions ) =
+ ( $1, $2, $3, $4, $5 ) ;
+ last PROP;
+ }
+ }
+ close XPROP;
+
+ return ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions );
+}
+
+sub setXkbSettings
+{
+ my ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions ) = @_;
+ ( system ( "setxkbmap", "-synch",
+ "-rules", $xkbRules,
+ "-model", $xkbModel,
+ "-layout", $xkbLayouts,
+ "-variant", $xkbVariants,
+ "-option", $xkbOptions ) == 0 ) or die "Could not set xkb configuration";
+ sleep 1;
+}
+
+sub restoreXkbSettings
+{
+ setXkbSettings( $origXkbRules, $origXkbModel, $origXkbLayouts, $origXkbVariants, $origXkbOptions );
+}
+
+sub defaultXkbSettings
+{
+ return ( "base", "pc105", "us", "", "" );
+}
+
+sub dumpXkbSettings
+{
+ my ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions ) = @_;
+ print "rules: [$xkbRules]\n" ;
+ print "model: [$xkbModel]\n" ;
+ print "layouts: [$xkbLayouts]\n" ;
+ print "variants: [$xkbVariants]\n" ;
+ print "options: [$xkbOptions]\n" ;
+}
+
+sub dumpXkbSettingsBackup
+{
+ dumpXkbSettings( $origXkbRules, $origXkbModel, $origXkbLayouts, $origXkbVariants, $origXkbOptions );
+}
+
+sub testLevel1
+{
+ my ( $type, $idx ) = @_;
+
+ open ( XSLTPROC, "xsltproc --stringparam type $type listCIs.xsl ../rules/base.xml.in |" ) or
+ die ( "Could not start xsltproc" );
+ while ()
+ {
+ chomp();
+ if (/(\S+)/)
+ {
+ my $paramValue=$1;
+ print "--- setting $type: [$paramValue]\n";
+ my @params = defaultXkbSettings();
+ $params[$idx] = $paramValue;
+ dumpXkbSettings ( @params );
+ setXkbSettings ( @params );
+ #print "--- dump:\n";
+ #dumpXkbSettings( getXkbSettings() );
+ }
+ }
+ close XSLTPROC;
+}
+
+sub testLevel2
+{
+ my ( $type, $subtype, $idx, $delim1, $delim2, $ifCheckLevel1, $ifAddLevel1, $ifResetToDefault ) = @_;
+
+ open ( XSLTPROC, "xsltproc --stringparam type $type listCIs.xsl ../rules/base.xml.in |" ) or
+ die ( "Could not start xsltproc" );
+ while ()
+ {
+ chomp();
+ if (/(\S+)/)
+ {
+ my $paramValue=$1;
+ print "--- scanning $type: [$paramValue]\n";
+
+ if ( $ifCheckLevel1 )
+ {
+ my @params = defaultXkbSettings();
+ if ( $ifResetToDefault )
+ {
+ setXkbSettings ( @params );
+ }
+ $params[$idx] = "$paramValue";
+ dumpXkbSettings ( @params );
+ setXkbSettings ( @params );
+ #print "--- dump:\n";
+ #dumpXkbSettings( getXkbSettings() );
+ }
+
+ open ( XSLTPROC2, "xsltproc --stringparam type $subtype --stringparam parentId $paramValue listCI2.xsl ../rules/base.xml.in |" ) or
+ die ( "Could not start xsltproc" );
+ while ()
+ {
+ chomp();
+ if (/(\S+)/)
+ {
+ my $paramValue2=$1;
+ print " --- $subtype: [$paramValue2]\n";
+ my @params = defaultXkbSettings();
+ if ( $ifResetToDefault )
+ {
+ setXkbSettings ( @params );
+ }
+ if ( $ifAddLevel1 )
+ {
+ $params[$idx] = "$paramValue$delim1$paramValue2$delim2";
+ }
+ else
+ {
+ $params[$idx] = "$paramValue2";
+ }
+ dumpXkbSettings ( @params );
+ setXkbSettings ( @params );
+ #print "--- dump:\n";
+ #dumpXkbSettings( getXkbSettings() );
+ }
+ }
+ close XSLTPROC2;
+ }
+ }
+ close XSLTPROC;
+}
+
+1;
+__END__
+
+No docs yet
--- xkeyboard-config-1.6.orig/tests/testLayouts.pl
+++ xkeyboard-config-1.6/tests/testLayouts.pl
@@ -0,0 +1,17 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use xkbTestFunc;
+
+xkbTestFunc::backupXkbSettings();
+
+xkbTestFunc::dumpXkbSettingsBackup();
+
+xkbTestFunc::testLevel2( "layout", "variant", 2, "(", ")", 1, 1, 0 );
+
+sleep 2;
+
+xkbTestFunc::restoreXkbSettings();
+
+print "Done!\n";
--- xkeyboard-config-1.6.orig/tests/listCIs.xsl
+++ xkeyboard-config-1.6/tests/listCIs.xsl
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- xkeyboard-config-1.6.orig/tests/testModels.pl
+++ xkeyboard-config-1.6/tests/testModels.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use xkbTestFunc;
+
+xkbTestFunc::backupXkbSettings();
+
+xkbTestFunc::dumpXkbSettingsBackup();
+
+xkbTestFunc::testLevel1( "model", 1 );
+
+xkbTestFunc::restoreXkbSettings();
+
+print "Done!\n";
--- xkeyboard-config-1.6.orig/tests/ruby/xkbparser.rb
+++ xkeyboard-config-1.6/tests/ruby/xkbparser.rb
@@ -0,0 +1,185 @@
+#
+# $Id$
+#
+# Commont parsing classes for symbols/inet
+# The parsing is simplified, based on regex - it is NOT a real parser for very
+# complex XKB format
+#
+
+require "utils.rb"
+
+class Symbols < Hash
+
+ #
+ # Constructor
+ #
+ def initialize
+ @includedSyms = Array.new
+ end
+
+ # Write-only property, parent list of symbols definitions
+ def symbols_list=(symbolsList)
+ @symbolsList = symbolsList
+ end
+
+ # Whether this set of symbols is hidden or not
+ def hidden?
+ @hidden
+ end
+
+ def hidden=(h)
+ @hidden = h
+ end
+
+ #
+ # Add "dependency" - the symbols referenced using the "include" statement.
+ #
+ def add_included(other)
+ @includedSyms.push(other)
+ end
+
+ alias get_original []
+ alias keys_original keys
+
+ #
+ # Get the symbol, trying first own definitions, then walking through all
+ # dependenies
+ #
+ def [](symName)
+ own = self.get_original(symName)
+ if own.nil?
+ @includedSyms.find_all do | symsName |
+ syms = @symbolsList[symsName]
+ his = syms[symName]
+ if !his.nil?
+ own = his
+ break
+ end
+ end
+ end
+ own
+ end
+
+ #
+ # All keys - including the ones specified in the included sections
+ #
+ def keys()
+ @includedSyms.inject(keys_original) do | rv, symsName |
+ syms = @symbolsList[symsName]
+ rv | syms.keys
+ end
+ end
+
+ # Size of all keys
+ def length()
+ keys().length()
+ end
+
+ #
+ # Size - takes into account overlapping key definitions
+ #
+ def size()
+ keys.size()
+ end
+
+ #
+ # Create a hash including all elements of this hash which are not in the
+ # other hash, use symbols + and * for marking the elements which existed in
+ # the original hash (+ if not existed)
+ #
+ def -(other)
+ diff = self.class.new
+ self.find_all do | key, value |
+ existing = other[key]
+ if existing != value
+ diff[key] = [ value, existing.nil? ? '+' : '' ]
+ end
+ end
+ diff
+ end
+
+
+ def to_s
+ s = "{\n"
+ # First output included syms
+ @includedSyms.find_all do | symsName |
+ s += " include \"inet(#{symsName})\"\n"
+ end
+ # Then - own definitions
+ self.find_all do | key, value |
+ s += " key #{key} { [ #{value} ] };\n"
+ end
+ s + "}";
+ end
+
+end
+
+class SymbolsList < Hash
+
+ #
+ # Add new xkb_symbols
+ #
+ def add_symbols (symbolsName, hidden)
+ newSyms = Symbols.new
+ newSyms.symbols_list = self
+ newSyms.hidden = hidden
+ self[symbolsName] = newSyms
+ end
+
+ def to_s
+ s = "// Autogenerated\n\n"
+ self.find_all do | symbols, mapping |
+ s += "partial alphanumeric_keys\nxkb_symbols \"#{symbols}\" #{mapping};\n\n"
+ end
+ s
+ end
+
+ def match_symbols(new_symbols,limit)
+ matching = Hash.new
+ find_all do | symbols, mapping |
+ diff = new_symbols - mapping
+ if diff.size <= limit
+ matching[symbols] = diff
+ end
+ end
+ matching
+ end
+
+ def merge()
+ everything = NonuniqueCountingHash.new
+ find_all do | symsName, syms |
+ syms.find_all do | symName, keycode |
+ everything[symName] = keycode
+ end
+ end
+ everything
+ end
+
+end
+
+class Parser
+
+ def parse (fileName)
+ allSyms = SymbolsList.new;
+ currentSyms = nil
+ hidden = false
+ File.open(fileName) do | file |
+ file.each_line do | line |
+ line.scan(/xkb_symbols\s+"(\w+)"/) do | symsName |
+ currentSyms = allSyms.add_symbols(symsName[0], hidden)
+ end
+ line.scan(/^\s*key\s*<(\w+)>\s*\{\s*\[\s*(\w+)/) do | keycode, keysym |
+ currentSyms[keycode] = keysym
+ end
+ line.scan(/^partial\s+(hidden\s+)?alphanumeric_keys/) do | h |
+ hidden = !h[0].nil?
+ end
+ line.scan(/^\s*include\s+"inet\((\w+)\)"/) do | otherPart |
+ currentSyms.add_included(otherPart[0])
+ end
+ end
+ end
+ allSyms
+ end
+
+end
--- xkeyboard-config-1.6.orig/tests/ruby/find_match.rb
+++ xkeyboard-config-1.6/tests/ruby/find_match.rb
@@ -0,0 +1,42 @@
+#!/usr/bin/ruby
+#
+# $Id$
+# The script finds best matching xkb_symbols in symbols/in
+#
+# Parameters: $0 - the name of the file with new xkb_symbols
+# $1 - max number of non-matching mappings (0 by default)
+#
+
+require "xkbparser.rb"
+
+baseDir = "../.."
+
+symbolsDir = "#{baseDir}/symbols"
+#symbolsDir = "."
+
+parser = Parser.new
+
+allSyms = parser.parse("#{symbolsDir}/inet")
+
+newSyms = parser.parse(ARGV[0])
+limit = ARGV[1].to_i
+
+newSyms.find_all do | key, value |
+
+ if value.hidden?
+ next
+ end
+
+ puts "Existing xkb_symbols matching #{key}: "
+
+ sorted = allSyms.match_symbols(value,limit).sort_by do | symsName, diff |
+ sprintf "%03d_%s", diff.size, symsName
+ end
+
+ sorted.find_all do | symsName, diff |
+ puts " #{symsName}, up to #{allSyms[symsName].size} keys (difference #{diff.size})-> #{diff}"
+ end
+
+end
+
+
--- xkeyboard-config-1.6.orig/tests/ruby/find_fragments.rb
+++ xkeyboard-config-1.6/tests/ruby/find_fragments.rb
@@ -0,0 +1,52 @@
+#!/usr/bin/ruby
+#
+# $Id$
+# The script finds the fragments
+#
+
+require "xkbparser.rb"
+
+baseDir = "../.."
+
+symbolsDir = "#{baseDir}/symbols"
+#symbolsDir = "."
+
+parser = Parser.new
+
+allSyms = parser.parse("#{symbolsDir}/inet")
+
+everything = allSyms.merge
+
+everything.filter(1)
+
+#numCombinations = 1
+
+#puts "everything:"
+
+#everything.find_all do | symName, keycodes |
+#puts "#{symName}, #{keycodes.length} mappings -> "
+# keycodes.find_all do | keycode, counter |
+# puts " #{keycode} -> #{counter} occurences"
+# end
+# numCombinations *= (keycodes.length + 1)
+#end
+
+#puts "Total mappings: #{everything.length}/#{everything.full_length()}, #{numCombinations} combinations"
+#
+
+numCombinations = 0
+allSyms.find_all do | symsName, symbols |
+ puts "n: #{symsName}"
+
+ # Counting only symbols which used more than once
+ numDupSymbols = symbols.keys.inject(0) do | rv, keycode |
+ c = everything.cardinality(keycode, symbols[keycode])
+ puts "#{keycode} -> #{symbols[keycode]}, #{c}"
+ (c > 0) ? rv : rv + 1
+ end
+
+ numCombinations += (1 << numDupSymbols)
+ puts "l: #{symbols.length} d: #{numDupSymbols} c: #{numCombinations}"
+end
+
+puts "numCombinations: #{numCombinations}"
--- xkeyboard-config-1.6.orig/tests/ruby/README
+++ xkeyboard-config-1.6/tests/ruby/README
@@ -0,0 +1,3 @@
+This is just some stuff to play with symbols/inet file, trying to analize it.
+Only maintainers might be interested. It is written in Ruby - but it will
+never be actually used in xkeyboard-config distribution.
--- xkeyboard-config-1.6.orig/tests/ruby/utils.rb
+++ xkeyboard-config-1.6/tests/ruby/utils.rb
@@ -0,0 +1,64 @@
+#
+# $Id$
+#
+# Commont classes
+#
+
+#
+# The hash containing non-unique mappings
+# It can have a->b and a->c together
+# Also, for every mapping it counts the number of times this mapping was set
+#
+class NonuniqueCountingHash < Hash
+
+ alias get_original []
+ alias put_original []=
+
+ def []=(key, value)
+ own = self.get_original(key)
+ hash = get_original(key)
+ if hash.nil?
+ put_original(key, hash = Hash.new)
+ end
+ if hash.has_key?(value)
+ hash[value] += 1
+ else
+ hash[value] = 1
+ end
+ end
+
+ #
+ # Number of all mappings (a->b and a->c counted as 2 mappings)
+ #
+ def full_length()
+ values.inject(0) do | rv, hash |
+ rv + hash.length
+ end
+ end
+
+ def cardinality(key1, key2)
+ if has_key?(key1)
+ hash = get_original(key1)
+ if hash.has_key?(key2)
+ hash[key2]
+ else
+ 0
+ end
+ else
+ 0
+ end
+ end
+
+ def filter(limit)
+ find_all do | key, hash |
+ hash.find_all do | key1, counter |
+ if (counter <= limit)
+ hash.delete(key1)
+ end
+ end
+ if hash.empty?
+ delete(key)
+ end
+ end
+ end
+end
--- xkeyboard-config-1.6.orig/tests/mxkbledpanel/mxkbledpanel.c
+++ xkeyboard-config-1.6/tests/mxkbledpanel/mxkbledpanel.c
@@ -0,0 +1,605 @@
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+Display *theDisplay;
+XtAppContext appContext;
+int xkbEventBase;
+Widget topLevel;
+Widget leds[XkbNumIndicators];
+Atom ledAtoms[XkbNumIndicators];
+XmString ledNames[XkbNumIndicators];
+XkbDescPtr xkb_desc;
+
+void valueChangedProc(Widget,XtPointer,XmToggleButtonCallbackStruct *);
+XtCallbackRec valueChangedCB[2]={(XtCallbackProc)valueChangedProc,NULL};
+
+/************************************************************************/
+/* */
+/* Application Resources */
+/* */
+/************************************************************************/
+#define YES 1
+#define NO 0
+#define DONT_CARE -1
+
+typedef struct
+{
+ int wanted;
+ int wantAutomatic;
+ int wantExplicit;
+ int wantNamed;
+ int wantReal;
+ int wantVirtual;
+ int useUnion;
+} OptionsRec;
+
+OptionsRec options;
+
+#define Offset(field) XtOffsetOf(OptionsRec,field)
+XtResource resources[] =
+{
+ {"wanted", "Wanted", XtRInt, sizeof(int),
+ Offset(wanted), XtRImmediate, (XtPointer) DONT_CARE },
+ {"wantAutomatic", "WantAutomatic", XtRInt, sizeof(int),
+ Offset(wantAutomatic), XtRImmediate, (XtPointer) DONT_CARE},
+ {"wantExplicit", "WantExplicit", XtRInt, sizeof(int),
+ Offset(wantExplicit), XtRImmediate, (XtPointer) DONT_CARE},
+ {"wantNamed", "WantNamed", XtRInt, sizeof(int),
+ Offset(wantNamed), XtRImmediate, (XtPointer) DONT_CARE},
+ {"wantReal", "WantReal", XtRInt, sizeof(int),
+ Offset(wantReal), XtRImmediate, (XtPointer) DONT_CARE},
+ {"wantVirtual", "WantVirtual", XtRInt, sizeof(int),
+ Offset(wantVirtual), XtRImmediate, (XtPointer) DONT_CARE},
+ {"useUnion", "UseUnion", XtRInt, sizeof(int),
+ Offset(useUnion), XtRImmediate, (XtPointer) YES},
+ NULL
+};
+#undef Offset
+
+String fallbackResources[] =
+{
+ "*mainWindow.width: 100",
+ "*mainWindow.height: 50",
+ NULL
+};
+
+XrmOptionDescRec optionDesc[] =
+{
+ {"-watch", "*wanted", XrmoptionSepArg, (XtPointer) "0"},
+ {"-automatic", "*wantAutomatic", XrmoptionNoArg, (XtPointer) "0"},
+ {"+automatic", "*wantAutomatic", XrmoptionNoArg, (XtPointer) "1"},
+ {"-explicit", "*wantExplicit", XrmoptionNoArg, (XtPointer) "0"},
+ {"+explicit", "*wantExplicit", XrmoptionNoArg, (XtPointer) "1"},
+ {"-named", "*wantNamed", XrmoptionNoArg, (XtPointer) "0"},
+ {"+named", "*wantNamed", XrmoptionNoArg, (XtPointer) "1"},
+ {"-real", "*wantReal", XrmoptionNoArg, (XtPointer) "0"},
+ {"+real", "*wantReal", XrmoptionNoArg, (XtPointer) "1"},
+ {"-virtual", "*wantVirtual", XrmoptionNoArg, (XtPointer) "0"},
+ {"+virtual", "*wantVirtual", XrmoptionNoArg, (XtPointer) "1"},
+ {"-intersection", "*useUnion", XrmoptionNoArg, (XtPointer) "0"},
+ {"-union", "*useUnion", XrmoptionNoArg, (XtPointer) "1"}
+};
+
+/************************************************************************/
+/* */
+/* usage */
+/* */
+/************************************************************************/
+void usage(char *program)
+{
+ printf("Usage: %s \n",program);
+ printf("Legal options include the usual X toolkit options plus:\n");
+ printf(" -help Print this message\n");
+ printf(" -indpy Name of display to watch\n");
+ printf(" -watch Mask of LEDs to watch\n");
+ printf(" [-+]automatic (Don't) watch automatic LEDs\n");
+ printf(" [-+]explicit (Don't) watch explicit LEDs\n");
+ printf(" [-+]named (Don't) watch named LEDs\n");
+ printf(" [-+]real (Don't) watch real LEDs\n");
+ printf(" [-+]virtual (Don't) watch virtual LEDs\n");
+ printf(" -intersection Watch only LEDs in all desired sets\n");
+ printf(" -union Watch LEDs in any desired sets\n");
+ printf("The default set of LEDs is -intersection +named +virtual\n");
+ return;
+}
+/************************************************************************/
+/* */
+/* XkbEventHandler */
+/* */
+/* DESCRIPTION: */
+/* */
+/* Handles events generated by the Xkb server extension. */
+/* */
+/************************************************************************/
+Boolean XkbEventHandler(XEvent *event)
+{
+ XkbEvent *xkbEv = (XkbEvent *) event;
+
+ if (xkbEv->any.xkb_type==XkbIndicatorStateNotify) {
+ register int i;
+ register unsigned bit;
+ for (i=0,bit=1;iindicators.changed&bit)&&(leds[i]))
+ {
+ if (xkbEv->indicators.state&bit)
+ XmToggleButtonSetState(leds[i],True,False);
+ else
+ XmToggleButtonSetState(leds[i],False,False);
+ }
+ }
+ else if (xkbEv->any.xkb_type==XkbIndicatorMapNotify) {
+ unsigned change= xkbEv->indicators.changed;
+
+ if (XkbGetIndicatorMap(theDisplay,change,xkb_desc)!=Success)
+ fprintf(stderr,"Couldn't get changed indicator maps\n");
+ }
+
+ return True;
+
+} /* XkbEventHandler */
+
+/************************************************************************/
+/* */
+/* InitXkb */
+/* */
+/************************************************************************/
+Boolean InitXkb(Display *theDisplay)
+{
+ int i,opcode,errorBase,major,minor;
+ XkbDescPtr xkb;
+ unsigned int bit;
+ unsigned int real,virtual,named,explicit,automatic;
+ char *name;
+
+ if (!XkbQueryExtension(theDisplay,
+ &opcode,
+ &xkbEventBase,
+ &errorBase,
+ &major,
+ &minor))
+ return False;
+
+ if (!XkbUseExtension(theDisplay,&major,&minor))
+ return False;
+
+ XkbSelectEvents(theDisplay,
+ XkbUseCoreKbd,
+ XkbIndicatorStateNotifyMask|XkbIndicatorMapNotifyMask,
+ XkbIndicatorStateNotifyMask|XkbIndicatorMapNotifyMask);
+
+ XtSetEventDispatcher(theDisplay,
+ xkbEventBase+XkbEventCode,
+ XkbEventHandler);
+
+ xkb=XkbGetMap(theDisplay,0,XkbUseCoreKbd);
+ real=virtual=named=explicit=automatic=0;
+
+ if (!xkb)
+ {
+ fprintf(stderr,"Couldn't get keymap\n");
+ return False;
+ }
+ if (XkbGetIndicatorMap(theDisplay,XkbAllIndicatorsMask,xkb)!=Success)
+ {
+ fprintf(stderr,"Couldn't read indicator map\n");
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return False;
+ }
+ real=virtual=named=explicit=automatic=0;
+
+ if (XkbGetNames(theDisplay,XkbIndicatorNamesMask,xkb)!=Success)
+ {
+ fprintf(stderr,"Couldn't read indicator names\n");
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return False;
+ }
+ real=virtual=named=explicit=automatic=0;
+
+ for (i=0,bit=1;iindicators->maps[i];
+ name = NULL;
+ if (xkb->names->indicators[i]!=None)
+ {
+ named|= bit;
+ name = XGetAtomName(theDisplay,xkb->names->indicators[i]);
+ }
+ if (name != NULL)
+ {
+ ledAtoms[i] = xkb->names->indicators[i];
+ ledNames[i] = XmStringCreate(name,XmSTRING_DEFAULT_CHARSET);
+ }
+ else
+ {
+ char temp[12];
+ sprintf(temp,"led%d\0",i+1);
+ ledAtoms[i] = None;
+ ledNames[i] = XmStringCreate(temp,XmSTRING_DEFAULT_CHARSET);
+ }
+ if (xkb->indicators->phys_indicators&bit)
+ real|= bit;
+ if ((((map->which_groups!=0)&&(map->groups!=0))||
+ ((map->which_mods!=0)&&
+ ((map->mods.real_mods!=0)||(map->mods.vmods!=0)))||
+ (map->ctrls!=0))&&
+ ((map->flags&XkbIM_NoAutomatic)==0)) {
+ automatic|= bit;
+ }
+ else explicit|= bit;
+ }
+
+ virtual = ~real;
+
+ if (options.useUnion)
+ {
+ if ((options.wantReal==NO) || (options.wantReal==DONT_CARE))
+ real = 0;
+ if ((options.wantVirtual==NO) || (options.wantVirtual==DONT_CARE))
+ virtual = 0;
+ if ((options.wantNamed==NO) || (options.wantNamed==DONT_CARE))
+ named = 0;
+ if ((options.wantAutomatic==NO) || (options.wantAutomatic==DONT_CARE))
+ automatic = 0;
+ if ((options.wantExplicit==NO) || (options.wantExplicit==DONT_CARE))
+ explicit = 0;
+
+ options.wanted |= real|virtual|named|automatic|explicit;
+ }
+ else
+ {
+ if (options.wanted == DONT_CARE)
+ options.wanted = ~0;
+
+ if (options.wantReal==NO)
+ real = ~real;
+ else if (options.wantReal==DONT_CARE)
+ real = ~0;
+
+ if (options.wantVirtual==NO)
+ virtual = ~virtual;
+ else if (options.wantVirtual==DONT_CARE)
+ virtual = ~0;
+
+ if (options.wantNamed==NO)
+ named = ~named;
+ else if (options.wantNamed==DONT_CARE)
+ named = ~0;
+
+ if (options.wantAutomatic==NO)
+ automatic = ~automatic;
+ else if (options.wantAutomatic==DONT_CARE)
+ automatic = ~0;
+
+ if (options.wantExplicit==NO)
+ explicit = ~explicit;
+ else if (options.wantExplicit==DONT_CARE)
+ explicit = ~0;
+
+ options.wanted &= real&virtual&named&automatic&explicit;
+ }
+
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return True;
+
+} /* InitXkb */
+
+/************************************************************************/
+/* */
+/* valueChangedProc - called when a toggle button is pressed. */
+/* */
+/************************************************************************/
+void valueChangedProc(Widget w,
+ XtPointer clientData,
+ XmToggleButtonCallbackStruct *callbackData)
+{
+ int led = (int) clientData;
+ XkbDescPtr xkb;
+
+ xkb = XkbGetMap(theDisplay,0,XkbUseCoreKbd);
+ if (!xkb)
+ {
+ fprintf(stderr,"XkbGetMap failed\n");
+ return;
+ }
+
+ if (XkbGetIndicatorMap(theDisplay,XkbAllIndicatorsMask,xkb)!=Success)
+ {
+ fprintf(stderr,"GetIndicatorMap failed\n");
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return;
+ }
+
+ /* The 'flags' field tells whether this indicator is automatic
+ * (XkbIM_NoExplicit - 0x80), explicit (XkbIM_NoAutomatic - 0x40),
+ * or neither (both - 0xC0).
+ *
+ * If NoAutomatic is set, the server ignores the rest of the
+ * fields in the indicator map (i.e. it disables automatic control
+ * of the LED). If NoExplicit is set, the server prevents clients
+ * from explicitly changing the value of the LED (using the core
+ * protocol *or* XKB). If NoAutomatic *and* NoExplicit are set,
+ * the LED cannot be changed (unless you change the map first).
+ * If neither NoAutomatic nor NoExplicit are set, the server will
+ * change the LED according to the indicator map, but clients can
+ * override that (until the next automatic change) using the core
+ * protocol or XKB.
+ */
+ switch (xkb->indicators->maps[led].flags &
+ (XkbIM_NoExplicit|XkbIM_NoAutomatic))
+ {
+ case XkbIM_NoExplicit|XkbIM_NoAutomatic:
+ {
+ XmToggleButtonSetState(w,!callbackData->set,FALSE);
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return;
+ }
+
+ case XkbIM_NoAutomatic:
+ {
+ if (ledAtoms[led] != None)
+ XkbSetNamedIndicator(theDisplay,XkbUseCoreKbd,
+ ledAtoms[led],callbackData->set,
+ FALSE,NULL);
+ else
+ {
+ XKeyboardControl xkc;
+ xkc.led= led;
+ if (callbackData->set)
+ xkc.led_mode= LedModeOn;
+ else xkc.led_mode= LedModeOff;
+ XChangeKeyboardControl(theDisplay,KBLed|KBLedMode,&xkc);
+ XSync(theDisplay,0);
+ }
+
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return;
+ }
+
+ case XkbIM_NoExplicit:
+ break;
+ }
+
+ /* The 'ctrls' field tells what controls tell this indicator to
+ * to turn on: RepeatKeys (0x1), SlowKeys (0x2), BounceKeys (0x4),
+ * StickyKeys (0x8), MouseKeys (0x10), AccessXKeys (0x20),
+ * TimeOut (0x40), Feedback (0x80), ToggleKeys (0x100),
+ * Overlay1 (0x200), Overlay2 (0x400), GroupsWrap (0x800),
+ * InternalMods (0x1000), IgnoreLockMods (0x2000),
+ * PerKeyRepeat (0x3000), or ControlsEnabled (0x4000)
+ */
+ if (xkb->indicators->maps[led].ctrls)
+ {
+ unsigned long which = xkb->indicators->maps[led].ctrls;
+
+ XkbGetControls(theDisplay,XkbAllControlsMask,xkb);
+ if (callbackData->set)
+ xkb->ctrls->enabled_ctrls |= which;
+ else
+ xkb->ctrls->enabled_ctrls &= ~which;
+ XkbSetControls(theDisplay,which|XkbControlsEnabledMask,xkb);
+ }
+
+ /* The 'which_groups' field tells when this indicator turns on
+ * for the 'groups' field: base (0x1), latched (0x2), locked (0x4),
+ * or effective (0x8).
+ */
+ if (xkb->indicators->maps[led].groups)
+ {
+ int i;
+ unsigned int group = 1;
+
+ /* Turning on a group indicator is kind of tricky. For
+ * now, we will just Latch or Lock the first group we find
+ * if that is what this indicator does. Otherwise, we're
+ * just going to punt and get out of here.
+ */
+ if (callbackData->set)
+ {
+ for (i = XkbNumKbdGroups-1; i >= 0; i--)
+ if ((1 << i) &
+ xkb->indicators->maps[led].groups)
+ group = i;
+ if (xkb->indicators->maps[led].which_groups &
+ (XkbIM_UseLocked | XkbIM_UseEffective))
+ XkbLockGroup(theDisplay,XkbUseCoreKbd,group);
+ else if (xkb->indicators->maps[led].which_groups&XkbIM_UseLatched)
+ XkbLatchGroup(theDisplay,XkbUseCoreKbd,group);
+ else
+ {
+ XmToggleButtonSetState(w,!callbackData->set,FALSE);
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return;
+ }
+ }
+ /* Turning off a group indicator will mean that we just
+ * Lock the first group that this indicator doesn't watch.
+ */
+ else
+ {
+ for (i = XkbNumKbdGroups-1; i >= 0; i--)
+ if (!((1 << i) &
+ xkb->indicators->maps[led].groups))
+ group = i;
+ XkbLockGroup(theDisplay,XkbUseCoreKbd,group);
+ }
+ }
+
+ /* The 'which_mods' field tells when this indicator turns on
+ * for the modifiers: base (0x1), latched (0x2), locked (0x4),
+ * or effective (0x8).
+ *
+ * The 'real_mods' field tells whether this turns on when one of
+ * the real X modifiers is set: Shift (0x1), Lock (0x2), Control (0x4),
+ * Mod1 (0x8), Mod2 (0x10), Mod3 (0x20), Mod4 (0x40), or Mod5 (0x80).
+ *
+ * The 'virtual_mods' field tells whether this turns on when one of
+ * the virtual modifiers is set.
+ *
+ * The 'mask' field tells what real X modifiers the virtual_modifiers
+ * map to?
+ */
+ if (xkb->indicators->maps[led].mods.real_mods ||
+ xkb->indicators->maps[led].mods.mask)
+ {
+ XkbStateRec state;
+ unsigned int affect,mods;
+
+ affect = (xkb->indicators->maps[led].mods.real_mods |
+ xkb->indicators->maps[led].mods.mask);
+
+ if (callbackData->set)
+ mods = affect;
+ else
+ mods = 0;
+
+ if (xkb->indicators->maps[led].which_mods &
+ (XkbIM_UseLocked | XkbIM_UseEffective))
+ XkbLockModifiers(theDisplay,XkbUseCoreKbd,affect,mods);
+ else if (xkb->indicators->maps[led].which_mods &
+ XkbIM_UseLatched)
+ XkbLatchModifiers(theDisplay,XkbUseCoreKbd,affect,mods);
+ else
+ {
+ XmToggleButtonSetState(w,!callbackData->set,FALSE);
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return;
+ }
+ }
+
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+
+} /* valueChangedProc */
+
+/************************************************************************/
+/* */
+/* InitializeUI */
+/* */
+/************************************************************************/
+void InitializeUI(Widget topLevel)
+{
+ Arg argList[3];
+ char buf[256];
+ int i;
+ unsigned int bit,n;
+ Widget mainWindow,rowColumn;
+ XmString tempString;
+
+ mainWindow = (Widget) XmCreateMainWindow(topLevel,"mainWindow",NULL,0);
+ XtManageChild(mainWindow);
+ rowColumn = (Widget) XmCreateRowColumn(mainWindow,"rowColumn",NULL,0);
+ XtManageChild(rowColumn);
+
+ XkbGetIndicatorState(theDisplay,XkbUseCoreKbd,&n);
+ for (i=0,bit=1;i 1)
+ {
+ usage(argv[0]);
+ exit(0);
+ }
+
+ /* Defaults
+ */
+ if ((options.wanted == DONT_CARE) &&
+ (options.wantReal == DONT_CARE) &&
+ (options.wantVirtual == DONT_CARE) &&
+ (options.wantNamed == DONT_CARE) &&
+ (options.wantAutomatic == DONT_CARE) &&
+ (options.wantExplicit == DONT_CARE) &&
+ (options.useUnion == YES))
+ {
+ options.wanted = 0;
+ options.wantReal = YES;
+ options.wantNamed = YES;
+ options.wantAutomatic = YES;
+ }
+
+ /********************************************************************/
+ /* */
+ /* See if the server has XKB. */
+ /* */
+ /********************************************************************/
+ theDisplay = XtDisplay(topLevel);
+ if (!InitXkb(theDisplay))
+ {
+ fprintf(stderr,"Could not initialize XKB extension.\n");
+ exit(0);
+ }
+
+ if (options.wanted == 0)
+ {
+ fprintf(stderr,"No LED's were selected.\n\n");
+ usage(argv[0]);
+ exit(0);
+ }
+
+ /********************************************************************/
+ /* */
+ /* Set up the UI and go. */
+ /* */
+ /********************************************************************/
+ XtRealizeWidget(topLevel);
+ InitializeUI(topLevel);
+ XtAppMainLoop(appContext);
+
+ /* NOT REACHED */
+ exit(0L);
+}
--- xkeyboard-config-1.6.orig/tests/mxkbledpanel/Imakefile
+++ xkeyboard-config-1.6/tests/mxkbledpanel/Imakefile
@@ -0,0 +1,8 @@
+LOCAL_LIBRARIES1 = -lXm
+ SRCS1 = mxkbledpanel.c
+ OBJS1 = mxkbledpanel.o
+
+PROGRAMS=mxkbledpanel
+
+ComplexProgramTarget_1(mxkbledpanel,$(LOCAL_LIBRARIES1),)
+
--- xkeyboard-config-1.6.orig/keymap/sgi_vndr/en_US
+++ xkeyboard-config-1.6/keymap/sgi_vndr/en_US
@@ -0,0 +1,58 @@
+// $Xorg: en_US,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal_nodeadkeys)" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy101" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)" };
+ xkb_geometry { include "sgi_vndr/indy(pc101)" };
+};
+xkb_keymap "indy101_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal_nodeadkeys)" };
+ xkb_geometry { include "sgi_vndr/indy(pc101)" };
+};
+xkb_keymap "indy104" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)" };
+ xkb_geometry { include "microsoft(natural)" };
+};
+xkb_keymap "indy104_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal_nodeadkeys)" };
+ xkb_geometry { include "microsoft(natural)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102_nodeadkeys)" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+
--- xkeyboard-config-1.6.orig/debian/rules
+++ xkeyboard-config-1.6/debian/rules
@@ -0,0 +1,103 @@
+#!/usr/bin/make -f
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+include debian/xsfbs/xsfbs.mk
+
+export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
+# FOR AUTOCONF 2.52 AND NEWER ONLY
+ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
+ confflags += --build $(DEB_HOST_GNU_TYPE)
+else
+ confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
+endif
+
+xkb_base := /usr/share/X11/xkb
+
+configure: $(STAMP_DIR)/patch
+ intltoolize -c -f
+ autoreconf -vfi
+
+config.status: configure
+ dh_testdir
+ ./configure $(confflags) \
+ --prefix=/usr \
+ --disable-xkbcomp-symlink --with-xkb-rules-symlink=xfree86,xorg \
+ --with-xkb-base=$(xkb_base)
+ >$@
+
+build: $(STAMP_DIR)/build
+$(STAMP_DIR)/build: config.status
+ dh_testdir
+ $(MAKE)
+ >$@
+
+clean: xsfclean
+ dh_testdir
+ dh_testroot
+ [ ! -f Makefile ] || $(MAKE) distclean
+ rm -rf $$(find -name Makefile.in)
+ rm -f aclocal.m4 configure install-sh intltool-*.in
+ rm -f missing po/Makefile.in.in
+ rm -f semantics/semantics.dir
+ rm -f rules/evdev rules/evdev.xml.in
+
+ # Files not cleaned up
+ -rm -f intltool-extract intltool-merge intltool-update
+ -rm -f rules/base.xml
+ -rm -f po/.intltool-merge-cache config.status.lineno
+ dh_clean
+ rm -f compat/compat.dir geometry/geometry.dir keycodes/keycodes.dir
+ rm -f keymap/keymap.dir symbols/symbols.dir types/types.dir rules/base
+ rm -f rules/compat/base.l[2-4]*.part rules/compat/base.m*.part
+
+deb:
+ dpkg-buildpackage -rfakeroot -i'/\.git|/\.svn'
+
+dir:
+ set -e; for f in compat geometry keycodes keymap semantics symbols types; do \
+ rm -f $$f/$$f.dir; \
+ cd $$f; \
+ make $$f.dir XKBCOMP=xkbcomp; \
+ LC_ALL=C sort -k3 $$f.dir > $$f.new && mv $$f.new $$f.dir; \
+ cd ..; \
+ cp $$f/$$f.dir debian/; \
+ done
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ $(MAKE) install DESTDIR=$(CURDIR)/debian/xkb-data
+ # Remove this symlink, it is no more needed
+ rm -f $(CURDIR)/debian/xkb-data/$(xkb_base)/compiled
+
+ # Move base.xml to /etc/X11/xkb/ and make
+ # /usr/share/X11/xkb/rules/base.xml links to it
+ mv debian/xkb-data/usr/share/X11/xkb/rules/base.xml debian/xkb-data/etc/X11/xkb/
+ dh_link etc/X11/xkb/base.xml usr/share/X11/xkb/rules/base.xml
+
+# Build architecture-dependent files here.
+binary-arch: build install
+# We have nothing to do by default.
+
+# Build architecture-independent files here.
+binary-indep: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs ChangeLog
+ dh_installdocs
+ dh_compress
+ dh_fixperms
+ dh_installdeb
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
--- xkeyboard-config-1.6.orig/debian/control
+++ xkeyboard-config-1.6/debian/control
@@ -0,0 +1,24 @@
+Source: xkeyboard-config
+Section: x11
+Priority: extra
+Maintainer: Debian X Strike Force
+Uploaders: Mohammed Adnène Trojette , Julien Cristau
+Build-Depends: debhelper (>= 5.0.0), quilt
+Build-Depends-Indep: libxml-parser-perl, x11-xkb-utils, automake, intltool, libglib2.0-dev
+Standards-Version: 3.8.1
+Vcs-Git: git://git.debian.org/git/pkg-xorg/data/xkb-data
+Vcs-Browser: http://git.debian.org/?p=pkg-xorg/data/xkb-data.git
+Homepage: http://www.freedesktop.org/Software/XKeyboardConfig
+
+Package: xkb-data
+Breaks: libx11-6 (<< 2:1.1)
+Architecture: all
+Description: X Keyboard Extension (XKB) configuration data
+ This package contains configuration data used by the X Keyboard
+ Extension (XKB), which allows selection of keyboard layouts when
+ using a graphical interface.
+ .
+ Every X11 vendor provides its own XKB data files, so keyboard layout
+ designers have to send their layouts to several places. The
+ xkeyboard-config project has been launched at FreeDesktop in order
+ to provide a central repository that could be used by all vendors.
--- xkeyboard-config-1.6.orig/debian/README.Debian
+++ xkeyboard-config-1.6/debian/README.Debian
@@ -0,0 +1,101 @@
+Notes about the Debian xkb-data package
+=======================================
+
+Support of Apple keyboards
+--------------------------
+
+Apple keyboards have been mostly unusable with XKB for years,
+and many unofficial files spread around the Internet to fix
+this mess. Fortunately this issue has been fixed now, thanks
+to testers on the debian-powerpc mailing list, and changes
+have been merged upstream.
+
+The following models are available:
+ * macintosh_old
+ For old kernels with ADB keycodes
+ * ibook powerbook macbook78 macbook79
+ Laptop, 3rd and 4th levels are obtained by the small Enter key.
+ * macintosh
+ Default Macintosh
+These models look for symbols in /usr/share/X11/xkb/symbols/macintosh_vndr,
+which means that the following layouts can be selected:
+ ch de dk es fi fr gb is it latam nl no pt se us
+
+PC models can be selected, to have access to more layouts. Some options
+may then be added to have the same behavior as with Macintosh keyboards.
+Here is a (non exhaustive) list of relevant options:
+ * lv3:lwin_switch Press left Apple-key to choose 3rd level.
+ * lv3:enter_switch Press Enter key on keypad to choose 3rd level.
+ * numpad:mac Numpad keys work as with Macintosh keyboards.
+ * apple:badmap Swap keycodes of two keys when Mac keyboards are
+ misdetected by kernel.
+
+Variants have been added to PC layouts to emulate Macintosh layouts.
+For instance,
+
+ Option "XkbRules" "xorg"
+ Option "XkbModel" "ibook"
+ Option "XkbLayout" "fr"
+
+in /etc/X11/xorg.conf can be replaced by
+
+ Option "XkbRules" "xorg"
+ Option "XkbModel" "pc105"
+ Option "XkbLayout" "fr"
+ Option "XkbVariant" "mac"
+ Option "XkbOptions" "lv3:enter_switch,apple:badmap,numpad:mac"
+
+Denis Barbier Thu, 5 Oct 2006 22:51:12 +0200
+
+Cleaning /etc/X11/xkb
+---------------------
+
+Since 0.8-3, all the files in /etc/X11/xkb/ were moved to
+/usr/share/X11/xkb/symbols. If you want to clean /etc/X11/xkb/, you need
+to run dpkg -P xlibs.
+
+Customised layouts
+------------------
+
+Since 0.8-1, layouts are read from /usr/share/X11/xkb/symbols and no
+more from /etc/X11/xkb/symbols. Thus, layouts are no more conffiles.
+The good way to have a custom layout is to create one's own layout that
+includes other layouts and customises some keys you want to modify.
+
+Do not modify directly files /usr/share/X11/xkb/symbols.
+
+For instance, to create a French layout altering the 'a' key, create a
+/usr/share/X11/xkb/symbols/my_fr file containing the following lines
+(without the pipes):
+
+ | partial alphanumeric_keys
+ | xkb_symbols "my_fr" {
+ | include "fr"
+ | key { [ a, A, oe, OE ] };
+ | };
+
+To have it appear in your desktop environment layout manager, add
+"my_fr" in /etc/X11/xkb/base.xml as a new layout. For
+example, insert the following lines (without the pipes):
+
+ |
+ |
+ | my_fr
+ | MyFr
+ | French (customized)
+ |
+ |
+ |
+
+/etc/X11/xkb/base.xml is a configuration file.
+
+Mohammed Adnène Trojette Sun, 23 Sep 2007 00:05:50 +0200
+
+Your 'Fn' key is not working
+----------------------------
+
+On some laptops (Gateway MX6453 for instance), when X starts with
+numlock on, the 'Fn' key is toggled the wrong way. Just turn numlock off
+to get the 'Fn' key work again.
+
+Mohammed Adnène Trojette Thu, 01 May 2008 02:36:13 +0200
--- xkeyboard-config-1.6.orig/debian/watch
+++ xkeyboard-config-1.6/debian/watch
@@ -0,0 +1,2 @@
+version=3
+http://xlibs.freedesktop.org/xkbdesc/ xkeyboard-config-(.*)\.tar\.gz
--- xkeyboard-config-1.6.orig/debian/copyright
+++ xkeyboard-config-1.6/debian/copyright
@@ -0,0 +1,206 @@
+This package was debianized by Denis Barbier on
+Tue, 10 Oct 2006 01:16:55 +0200
+
+It was downloaded from
+ http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-0.9.tar.gz
+
+Upstream Maintainer:
+ Sergey V. Udaltsov
+
+This package is distributed under the following licenses:
+Copyright 1996 by Joseph Moss
+Copyright (C) 2002-2007 Free Software Foundation, Inc.
+Copyright (C) Dmitry Golubev , 2003-2004
+Copyright (C) 2004, Gregory Mokhin
+Copyright (C) 2006 Erdal Ronahî
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of the copyright holder(s) not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. The copyright holder(s) makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+THE COPYRIGHT HOLDER(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+
+Copyright (c) 1996 Digital Equipment Corporation
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the Digital Equipment
+Corporation shall not be used in advertising or otherwise to promote
+the sale, use or other dealings in this Software without prior written
+authorization from Digital Equipment Corporation.
+
+
+Copyright 1996, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+
+Copyright 2004-2005 Sun Microsystems, Inc. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+
+Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+
+Copyright (c) 1996 X Consortium
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from the X Consortium.
+
+
+Copyright (C) 2004, 2006 Ævar Arnfjörð Bjarmason
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization of
+the copyright holder.
+
+
+Copyright (C) 1999, 2000 by Anton Zinoviev
+
+This software may be used, modified, copied, distributed, and sold,
+in both source and binary form provided that the above copyright
+and these terms are retained. Under no circumstances is the author
+responsible for the proper functioning of this software, nor does
+the author assume any responsibility for damages incurred with its
+use.
+
+Permission is granted to anyone to use, distribute and modify
+this file in any way, provided that the above copyright notice
+is left intact and the author of the modification summarizes
+the changes in this header.
+
+This file is distributed without any expressed or implied warranty.
--- xkeyboard-config-1.6.orig/debian/README.source
+++ xkeyboard-config-1.6/debian/README.source
@@ -0,0 +1,73 @@
+------------------------------------------------------
+Quick Guide To Patching This Package For The Impatient
+------------------------------------------------------
+
+1. Make sure you have quilt installed
+2. Unpack the package as usual with "dpkg-source -x"
+3. Run the "patch" target in debian/rules
+4. Create a new patch with "quilt new" (see quilt(1))
+5. Edit all the files you want to include in the patch with "quilt edit"
+ (see quilt(1)).
+6. Write the patch with "quilt refresh" (see quilt(1))
+7. Run the "clean" target in debian/rules
+
+Alternatively, instead of using quilt directly, you can drop the patch in to
+debian/patches and add the name of the patch to debian/patches/series.
+
+------------------------------------
+Guide To The X Strike Force Packages
+------------------------------------
+
+The X Strike Force team maintains X packages in git repositories on
+git.debian.org in the pkg-xorg subdirectory. Most upstream packages
+are actually maintained in git repositories as well, so they often
+just need to be pulled into git.debian.org in a "upstream-*" branch.
+Otherwise, the upstream sources are manually installed in the Debian
+git repository.
+
+The .orig.tar.gz upstream source file could be generated this
+"upstream-*" branch in the Debian git repository but it is actually
+copied from upstream tarballs directly.
+
+Due to X.org being highly modular, packaging all X.org applications
+as their own independent packages would have created too many Debian
+packages. For this reason, some X.org applications have been grouped
+into larger packages: xutils, xutils-dev, x11-apps, x11-session-utils,
+x11-utils, x11-xfs-utils, x11-xkb-utils, x11-xserver-utils.
+Most packages, including the X.org server itself and all libraries
+and drivers are, however maintained independently.
+
+The Debian packaging is added by creating the "debian-*" git branch
+which contains the aforementioned "upstream-*" branch plus the debian/
+repository files.
+When a patch has to be applied to the Debian package, two solutions
+are involved:
+* If the patch is available in one of the upstream branches, it
+ may be git'cherry-picked into the Debian repository. In this
+ case, it appears directly in the .diff.gz.
+* Otherwise, the patch is added to debian/patches/ which is managed
+ with quilt as documented in /usr/share/doc/quilt/README.source.
+
+quilt is actually invoked by the Debian X packaging through a larger
+set of scripts called XSFBS. XSFBS brings some other X specific
+features such as managing dependencies and conflicts due to the video
+and input driver ABIs.
+XSFBS itself is maintained in a separate repository at
+ git://git.debian.org/pkg-xorg/xsfbs.git
+and it is pulled inside the other Debian X repositories when needed.
+
+The XSFBS patching system requires a build dependency on quilt. Also
+a dependency on $(STAMP_DIR)/patch has to be added to debian/rules
+so that the XSFBS patching occurs before the actual build. So the
+very first target of the build (likely the one running autoreconf)
+should depend on $(STAMP_DIR)/patch. It should also not depend on
+anything so that parallel builds are correctly supported (nothing
+should probably run while patching is being done). And finally, the
+clean target should depend on the xsfclean target so that patches
+are unapplied on clean.
+
+When the upstream sources contain some DFSG-nonfree files, they are
+listed in text files in debian/prune/ in the "debian-*" branch of
+the Debian repository. XSFBS' scripts then take care of removing
+these listed files during the build so as to generate a modified
+DFSG-free .orig.tar.gz tarball.
--- xkeyboard-config-1.6.orig/debian/xkb-data.dirs
+++ xkeyboard-config-1.6/debian/xkb-data.dirs
@@ -0,0 +1 @@
+etc/X11/xkb
--- xkeyboard-config-1.6.orig/debian/changelog
+++ xkeyboard-config-1.6/debian/changelog
@@ -0,0 +1,544 @@
+xkeyboard-config (1.6-1) unstable; urgency=low
+
+ * Add Breaks on old libx11-6. It seems some people are keeping very, very
+ old libx11-6 versions, which didn't know about some keysyms we're now
+ using, thus making their keyboard unusable (closes: #530585, #514975).
+ * New upstream release
+ + adds Crimean Tatar layouts (closes: #513557)
+ + French translation updated (closes: #529479)
+ + fixes handling of compat layouts (closes: #514409)
+ * Patches sclk_toggle.diff and unhide_lv3_enter_switch.diff are upstream.
+ * Add README.source, bump Standards-Version to 3.8.1.
+
+ -- Julien Cristau Sat, 30 May 2009 16:39:19 +0200
+
+xkeyboard-config (1.5-2) unstable; urgency=low
+
+ * Cherry-picked from upstream git:
+ + added ca(eng), b.fd.o#19707
+ + fixed meta for fi(smi), b.fd.o#19841
+ Requested by Samuel Thibault.
+
+ -- Julien Cristau Sun, 01 Feb 2009 16:46:55 +0100
+
+xkeyboard-config (1.5-1) unstable; urgency=low
+
+ * New upstream release.
+ + bepo layout updated (closes: #469826)
+ + some symbols added to Gurmukhi keymap (closes: #443647)
+ + new 'deadtilde' variant for es and latam layouts (closes: #444035)
+ + problem with cymotion model and XF86WWW keysym fixed (closes: #462816)
+ + 'sun' rules files removed (closes: #469306)
+ + the us layout doesn't override CAPS anymore (closes: #504022)
+ + model 'logimel', Logitech Media Keyboard Elite, added (closes: #384801)
+ * Patch sclk_toggle.diff updated.
+ * Patch unhide_lv3_enter_switch.diff refreshed.
+ * Patch send-upstream/001_keypad_comma.diff dropped; the kpdl:comma option
+ exists since 1.1, and keypad:comma was broken since then.
+ * Patches add_void_definition_pl-324647.diff and mac_poweroff.diff dropped,
+ applied upstream.
+ * Add myself to Uploaders.
+ * Update debian/copyright from upstream COPYING.
+
+ -- Julien Cristau Wed, 28 Jan 2009 06:40:24 +0100
+
+xkeyboard-config (1.4-1) unstable; urgency=low
+
+ * New upstream release.
+ * Clean up generated files on clean, and recreate them at build time, in an
+ attempt to make the build system cleaner. Also reorganize debian/rules in
+ the process, using the standard xsfbs ruleset.
+ * Update patch send-upstream/001_keypad_comma.diff.
+ * Delete patch fixed-compat-rules-for-Romania-b.fd.o-16872.patch, applied
+ upstream.
+
+ -- Julien Cristau Wed, 12 Nov 2008 19:45:45 +0100
+
+xkeyboard-config (1.3-2) unstable; urgency=high
+
+ * Fix compat rules for Romanian layout (closes: #485702).
+ * Remove some generated files from the source package to clean up the build.
+
+ -- Julien Cristau Thu, 14 Aug 2008 19:51:55 +0200
+
+xkeyboard-config (1.3-1) unstable; urgency=low
+
+ * New upstream release:
+ + add a CA variant for Secwepemctsin language. (Closes: #476702)
+ + change Romanian keymap to use the correct comma
+ characters. (Closes: #481176)
+ + "symbols/ru: default variant is winkeys (till Daniel
+ fixes xkbcomp)" (Closes: #480124)
+
+ -- Mohammed Adnène Trojette Wed, 28 May 2008 13:38:30 +0200
+
+xkeyboard-config (1.2~cvs.20080501.1-1) unstable; urgency=low
+
+ * New upstream CVS snapshot from May 1st 2008:
+ + revert Latin American layout. (Closes: #477197)
+ + reactivate right control key in fr(oss). (Closes: #460550)
+ + fix olpc variants in the Afghan layout. (Closes: #461521)
+ * Clean up add_void_definition_pl-324647.diff and apply it before
+ resync_rules_base.diff to avoid unclean patch applying and
+ unapplying. (Closes: #460838)
+ * Document issues with the "Fn" key on some laptops in
+ README.Debian. (Closes: #461489)
+
+ -- Mohammed Adnène Trojette Thu, 01 May 2008 01:29:51 +0200
+
+xkeyboard-config (1.1~cvs.20080104.1-1) unstable; urgency=low
+
+ * New upstream CVS snapshot from January 4th 2008:
+ + fixed Latin American layout. (Closes: #444035)
+ + fixed Cherry CyMotion Master Linux layout. (Closes: #343929)
+ + fixed HP Compaq nx9020 layout. (Closes: #395883)
+ + split Serbia and Montenegro. (Closes: #451622)
+ + added fr(nodeadkeys) to mac. (Closes: #456942)
+ + fixed mapping for shift+backslash in "il" keyboard. (Closes: #457927)
+ + added English quotation marks to intl keymaps. (Closes: #453675)
+ * debian/control:
+ + bumped Standards-Version to 3.7.3.
+ + used Vcs-Git and Vcs-Browser fields.
+ + use a Homepage field.
+ * Refreshed resync_rules_base.diff. (Closes: #442942)
+ * Documented the creation of a custom layout in README.Debian and
+ made /usr/share/X11/xkb/rules/base.xml a symlink to
+ /etc/X11/xkb/base.xml.
+ (Closes: #410628, #410903, #438940)
+ * Documented how to remove conffiles left in /etc/X11/xkb/ in
+ README.Debian. (Closes: #366180)
+ * New patch: add_void_definition_pl-324647.diff
+ + don't use rules/latin's definitions for alt+{w,q,f}.
+ (Closes: #324647)
+
+ -- Mohammed Adnène Trojette Sun, 13 Jan 2008 15:33:54 +0100
+
+xkeyboard-config (1.0~cvs.20070916-1) unstable; urgency=low
+
+ * New upstream CVS snapshot from September 16th 2007:
+ + fix evdev layout. (Closes: #442479)
+
+ -- Mohammed Adnène Trojette Sun, 16 Sep 2007 18:51:30 +0200
+
+xkeyboard-config (1.0~cvs.20070914-1) unstable; urgency=low
+
+ * New upstream CVS snapshot from September 14th 2007:
+ + advertise all Romanian layouts. Thanks Eddy Petrișor for the
+ patch. (Closes: #436993)
+ + fix ctrl:swapcaps. (Closes: #410060)
+ + add missing virtual keys from evdev keycodes. Thanks Yann
+ Vernier for the patch. (Closes: #432613)
+ + support Asus 6000 series laptop keyboard. Thanks Arnout Boelens
+ for the patch. (Closes: #383953)
+ * Update debian/*.dir files.
+
+ -- Mohammed Adnène Trojette Fri, 14 Sep 2007 19:12:27 +0200
+
+xkeyboard-config (1.0~cvs.20070721-1) unstable; urgency=low
+
+ [ Julien Cristau ]
+ * Fix watch file to look for tarballs at http://xlibs.fd.o/xkbdesc/
+
+ [ Mohammed Adnène Trojette ]
+ * New upstream CVS snapshot from July 21st 2007:
+ + include xkb files for the Happy Hacking keyboard. (Closes: #167370)
+ + fix us layout. (Closes: #421532)
+ + fix se layout. (Closes: #425304)
+ + fix de+nodeadkey layout. (Closes: #432297)
+ * Patches refreshed:
+ + fix FTBFS. (Closes: #424112)
+ * Patches obsoleted:
+ + greek.diff.
+
+ -- Mohammed Adnène Trojette Sat, 21 Jul 2007 20:51:07 +0200
+
+xkeyboard-config (0.9+cvs.20070428-1) experimental; urgency=low
+
+ * Add myself to Uploaders. (Closes: #401777)
+ * CVS Snapshot from April 24 2007:
+ + fix Uzbek layout. (Closes: #412528)
+ + fix typo in compat/misc. (Closes: #412352)
+ + adjust Dutch layout. (Closes: #286581)
+ + fix keymap on iBook G4 Japanese keyboard. (Closes: #374070)
+ + fix key in symbols/inet. (Closes: #409982)
+ + update Finnish layout. (Closes: #405207)
+ + add Logitech Cordless Desktop Optical support. (Closes: #391192)
+ + fix a jp106 backslash/yen issue. (Closes: #280579)
+ * Patches refreshed:
+ + resync_rules_base.diff.
+ * Patches obsoleted or merged upstream:
+ + revert_bz8572.diff
+ + po.diff
+ + bz1576.diff
+ + bz8668.diff
+ + compatibility.diff
+ + japan.diff
+ * Patches to send upstream:
+ + 001_keypad_comma.diff: add keypad:comma option. (Closes: #409117)
+ * Bump debhelper compatibility to 5.
+ * Remove reference to xlibs. (Closes: #413620)
+
+ -- Mohammed Adnène Trojette Sat, 28 Apr 2007 20:35:01 +0200
+
+xkeyboard-config (0.9-4) unstable; urgency=low
+
+ [ Denis Barbier ]
+ + debian/patches/po.diff: Escape <> characters in Slovenian
+ PO file, base.xml was not a valid XML file. Closes: #394060
+
+ [ Loic Minier ]
+ * Upload.
+
+ -- Denis Barbier Fri, 20 Oct 2006 22:24:57 +0200
+
+xkeyboard-config (0.9-3) unstable; urgency=high
+
+ [ Denis Barbier ]
+ * debian/patches/resync_rules_base.diff: Regenerate to fix FTBFS.
+ Closes: #393166 Thanks Andreas Jochens.
+ Urgency set to high because of the FTBFS.
+
+ + debian/patches/po.diff: Update Slovenian PO file.
+
+ + debian/patches/bz8668.diff: New patch to fix Ctrl-Alt-Backspace
+ with Macintosh us layout.
+
+ * debian/patches/revert_bz8572.diff: Sync to CVS.
+
+ [ Drew Parsons ]
+ * Thank you to Denis for the hard work keeping the keyboards typing.
+
+ -- Drew Parsons Wed, 18 Oct 2006 10:55:11 +1000
+
+xkeyboard-config (0.9-2) unstable; urgency=low
+
+ + debian/patches/po.diff: Update Hungarian PO file.
+
+ + debian/patches/revert_bz8572.diff: New patch to revert changes
+ introduced in BZ8572, they cause trouble with Ctrl-Alt-F*
+ combinations. Closes: #392911.
+
+ -- Denis Barbier Sat, 14 Oct 2006 19:55:14 +0200
+
+xkeyboard-config (0.9-1) unstable; urgency=low
+
+ * New upstream release.
+ Almost all upstream fixes were already backported, this package
+ is very similar to 0.8-18.
+
+ * Drop patches merged upstream:
+ + debian/patches/latin_quotes.diff
+ + debian/patches/fix_xkbcomp_crash.diff
+
+ * This version adds leftsinglequotemark and rightsinglequotemark to
+ symbols/us(alt-intl). Closes: #391995 Thanks Jan Willem Stumpel.
+
+ -- Denis Barbier Wed, 11 Oct 2006 22:50:37 +0200
+
+xkeyboard-config (0.8-18) unstable; urgency=low
+
+ * Sync to CVS 2006-10-05.
+ Drop patches merged upstream:
+ + debian/patches/mac-gb-euro.diff
+ + debian/patches/symbols-typos.diff
+ + debian/patches/finnish-macron.diff
+ + debian/patches/rewrite-mac.diff
+
+ * debian/patches/japan.diff: New patch so that the latin variant of
+ jp layout is selected with multiple layouts.
+
+ -- Denis Barbier Thu, 5 Oct 2006 22:12:56 +0200
+
+xkeyboard-config (0.8-17) unstable; urgency=low
+
+ * debian/patches/finnish-macron.diff: In symbols.fi, replace macron
+ by dead_macron. Closes: #387320 Thanks Martin-Éric Racine.
+
+ * debian/patches/symbols-typos.diff: Fix typos in keysym names.
+ Closes: #390876 Thanks Sam Hocevar.
+
+ * debian/patches/rewrite-mac.diff: Add includes to mac layouts in
+ symbols/* to reduce key definitions.
+
+ -- Denis Barbier Tue, 3 Oct 2006 22:18:31 +0200
+
+xkeyboard-config (0.8-16) unstable; urgency=low
+
+ * Sync to CVS 2006-10-02.
+ + Macintosh layouts are also available for PC models.
+ + New nbsp:* options to add nobreakspace keysym on space key.
+ Closes: #361777 Thanks Samuel Thibault.
+
+ * Thix patch has been merged upstream and is removed:
+ + debian/patches/thinkpad.diff
+
+ * debian/patches/unhide_lv3_enter_switch.diff: New patch to
+ expose lv3:enter_switch, it can be useful when using pc105
+ model on a Mac laptop.
+
+ -- Denis Barbier Tue, 3 Oct 2006 00:35:01 +0200
+
+xkeyboard-config (0.8-15) unstable; urgency=low
+
+ * debian/patches/greek.diff: New patch to replace dead_horn and
+ dead_ogonek by U0313/U0314, which are the correct breathing
+ signs for polytonic Greek. This change can be performed now
+ that an updated el_GR.UTF-8/Compose file hit testing.
+ Closes: #386385 Thanks Jan Willem Stumpel.
+
+ * debian/patches/compatibility.diff: Add compatibility rules to
+ make sure that changes in symbols/pc do not cause trouble.
+ Closes: #389589 Thanks Robert Bihlmeyer.
+
+ -- Denis Barbier Wed, 27 Sep 2006 23:19:39 +0200
+
+xkeyboard-config (0.8-14) unstable; urgency=low
+
+ * Sync to CVS 2006-09-25.
+ * These patches have been merged upstream and are removed:
+ + debian/patches/macbook_layouts.diff
+ + debian/patches/fr.po.diff
+
+ * debian/patches/bz1576.diff: Minor fixes in Macintosh layouts.
+
+ * debian/patches/thinkpad.diff: Fix geometry/thinkpad.
+ Closes: #389358 Thanks Wouter Cloetens
+
+ -- Denis Barbier Mon, 25 Sep 2006 21:38:39 +0200
+
+xkeyboard-config (0.8-13) unstable; urgency=low
+
+ * Sync to CVS 2006-09-18.
+ Support for Macintosh keyboards has been fully reworked, deeply
+ tested by debian-powerpc readers and merged upstream. Macintosh
+ layouts can now be as customized as PC ones with options.
+ Closes: #121297, #111905, #166478, #234113, #319423, #256442
+
+ * These patches are removed because they are obsolete:
+ + debian/patches/cvs_revert.diff
+ + debian/patches/inet.diff
+ + debian/patches/mac_fnkeys.diff
+ + debian/patches/macintosh.diff
+ + debian/patches/macintosh-gb.diff
+ + debian/patches/mac_swap_kp.diff
+ + debian/patches/mac_nodeadkeys.diff
+
+ * debian/README.Debian: Replace its obsolete content by informations
+ to powerpc users.
+
+ * debian/patches/fix_xkbcomp_crash.diff: New patch to fix an
+ xkbcomp crash introduced in CVS and not fixed yet.
+ Closes: #387917 Thanks Helge Kreutzmann and Wolfgang Pfeiffer.
+
+ * debian/patches/mac_poweroff.diff: Add the power key to Apple
+ laptops. Thanks Jörg Sommer.
+
+ * debian/patches/macbook_layouts.diff: For MacBook models, load
+ symbols from symbols/macintosh_vndr/* instead of symbols/*.
+
+ * debian/patches/mac-gb-euro.diff: New patch to add the Euro sign
+ on key 2 for the Macintosh gb layout.
+
+ * debian/patches/fr.po.diff: Fix po/fr.po, the version currently
+ in CVS is broken.
+
+ -- Denis Barbier Sat, 23 Sep 2006 00:18:38 +0200
+
+xkeyboard-config (0.8-12) unstable; urgency=low
+
+ * Sync to CVS 2006-09-05.
+ + Closes: #362850: support alt-caps to toggle groups
+ Drop patches merged upstream:
+ + debian/patches/fix_symbols_hr.diff
+ + debian/patches/fix_symbols_key_type.diff
+ + debian/patches/ralt_switch_multikey.diff
+ + debian/patches/rearrange_options.diff
+ + debian/patches/microsoft.diff
+
+ -- Denis Barbier Tue, 5 Sep 2006 19:48:57 +0200
+
+xkeyboard-config (0.8-11) unstable; urgency=low
+
+ * debian/patches/rearrange_options.diff: New patch to modify options
+ order in rules/base so that altwin:meta_win can be overriden by
+ other options. Closes: #385355 Thanks Ben Mueller
+
+ * debian/patches/fix_symbols_key_type.diff: Several layouts did
+ define global key types, so keys for other groups were broken.
+ Closes: #373692, #385970 Thanks Robert Marlow and Jan Willem Stumpel
+
+ -- Denis Barbier Mon, 4 Sep 2006 21:50:00 +0200
+
+xkeyboard-config (0.8-10) unstable; urgency=low
+
+ * Really fix Mac nodeadkeys variants, rules/base was not properly
+ rebuilt.
+
+ -- Denis Barbier Thu, 31 Aug 2006 00:30:25 +0200
+
+xkeyboard-config (0.8-9) unstable; urgency=low
+
+ * debian/patches/resync_rules_base.diff: New patch to help keeping
+ rules/base.* and rules/compat/base.* files up-to-date.
+
+ * debian/patches/mac_swap_kp.diff: New patch to swap KP_Delete and
+ KP_Separator on Mac keyboards. Closes: #328125 Thanks Ben Mueller
+
+ * debian/patches/latin_quotes.diff: New patch; grave and apostrophe
+ on the 4th level can be provided via simpler keystrokes. They were
+ historically provided as alternative quotes, but these ones are
+ better alternatives. Closes: #308196 Thanks Mark Sheppard
+
+ * debian/patches/mac_nodeadkeys.diff: New patch to fix nodeadkeys variants,
+ they were badly broken.
+
+ -- Denis Barbier Wed, 30 Aug 2006 22:17:59 +0200
+
+xkeyboard-config (0.8-8) unstable; urgency=low
+
+ * Sync to CVS 2006-08-28.
+ + symbols/inet, keycodes/evdev: updated evdev
+ + symbols/pl: added pl(csb)
+ + symbols/bt: fixed Bhutan
+ + symbols/us: added dvorak-classic Closes: #257626, #264647
+ + symbols/inet: added acer_c300
+ + symbols/lk: updated Sinhala
+ + symbols/de: added Mac variants
+ + symbols/ch: fixed KPDL in ch(de_mac)
+
+ * debian/patches/update-bt.diff: Patch dropped, merged upstream.
+
+ * debian/patches/fix_symbols_hr.diff: New patch to fix Croatian layout,
+ some differences with previous XFree86 keymap had been introduced
+ in xkeyboard-config. Closes: #379292 Thanks Josip Rodin
+
+ * debian/patches/mac_fnkeys.diff: New patch to fix console switching
+ with Macintosh us layout. Closes: #370564 Thanks Ben Mueller
+
+ * debian/patches/ralt_switch_multikey.diff: New patch to enable again
+ lv3:ralt_switch_multikey which had been dropped from xkeyboard-config.
+ Closes: #364435 Thanks Klaus Ethgen
+
+ * debian/patches/microsoft.diff: New patch to enable again the
+ 'microsoft' model, it had been disabled by error in previous uploads.
+ Closes: #379917 Thanks Phil Armstrong
+
+ * debian/patches/inet.diff: New patch to add apple, apple_laptop,
+ hpxt1000 and latitude to $inetkbds. Closes: #381882
+ Thanks Steinar H. Gunderson
+
+ -- Denis Barbier Sat, 26 Aug 2006 14:54:51 +0200
+
+xkeyboard-config (0.8-7) unstable; urgency=low
+
+ * debian/patches/macintosh-gb.diff: New patch to fix and keys.
+ Closes: #379148 Thanks Roger Leigh
+
+ * debian/patches/macintosh.diff: New patch to include 'latin' layout.
+ Closes: #366615, #363525
+
+ * debian/patches/update-bt.diff: New patch to update the Bhutanese layout.
+ Closes: #378309 Thanks Christian Perrier
+
+ * debian/rules: Make sure that rules/base{,.lst,.xml} files are rebuilt.
+
+ -- Denis Barbier Mon, 14 Aug 2006 16:10:41 +0200
+
+xkeyboard-config (0.8-6) unstable; urgency=low
+
+ * debian/control: Move debhelper from Build-Depends-Indep to Build-Depends.
+
+ * debian/control: Bump Standards-Version to 3.7.2, no changes needed.
+
+ * debian/control: Use quilt to manage changes.
+
+ * Sync with CVS 2006-07-02.
+ The following bugs have been fixed upstream:
+ + XF86AudioRaiseVolume is defined twice for Logitech keyboards.
+ Closes: #363925
+ + hr(us) layout apparently broken. Closes: #373833
+ + symbols/inet and rules/base.* do not match. Closes: #368885
+ + no korean alphabet (hangul) mapping support. Closes: #342615
+
+ * Drop fr.po.diff, included upstream.
+
+ -- Denis Barbier Sun, 2 Jul 2006 22:11:44 +0200
+
+xkeyboard-config (0.8-5) unstable; urgency=low
+
+ * Add a symlink rules/xfree86 -> rules/base. Thanks Daniel Stone.
+
+ -- Denis Barbier Fri, 14 Apr 2006 22:30:25 +0200
+
+xkeyboard-config (0.8-4) unstable; urgency=low
+
+ * Upload to unstable
+
+ -- David Nusinow Thu, 6 Apr 2006 19:56:38 -0400
+
+xkeyboard-config (0.8-3) experimental; urgency=low
+
+ * Add a note into NEWS.Debian telling to read README.Debian.
+ * Improve README.Debian again.
+ * Replace /etc/X11/xkb by /usr/share/X11/xkb in docs/README.config too.
+
+ -- Denis Barbier Tue, 28 Mar 2006 20:52:21 +0200
+
+xkeyboard-config (0.8-2) experimental; urgency=low
+
+ * Explain in README.Debian how to use xkb-data 0.8 with xorg < 7.0.
+ Thanks Andreas Kroschel (Closes: #357207)
+ * Update po/fr.po
+
+ -- Denis Barbier Thu, 16 Mar 2006 23:27:19 +0100
+
+xkeyboard-config (0.8-1) experimental; urgency=low
+
+ * New upstream release.
+ * This release includes the Khmmer layout. Closes: #355613
+ * Add Build-Depends-Indep: libxml-parser-perl, which is needed to build rules.xml.
+ * Modify debian/rules so that xkbcomp is not required to build this package.
+ Closes: #355742
+ * Move XKB files into /usr/share/X11/xkb and purge unmodified configuration file
+ when upgrading from previous xkb-data releases.
+ * Remove xkbcomp symlink, it is no more needed. Closes: #356529
+ * Set Maintainer to Debian X Strike Force, and myself to Uploaders.
+
+ -- Denis Barbier Mon, 13 Mar 2006 21:21:25 +0100
+
+xkeyboard-config (0.6-2) experimental; urgency=low
+
+ * symbols/compose: add CapsLock as a compose key. Closes: #343287
+ Thanks Andreas Kroschel.
+ * symbols/group: add ScrollLock as a group switcher key.
+ Thanks Andreas Kroschel.
+
+ -- Denis Barbier Fri, 16 Dec 2005 17:54:43 +0100
+
+xkeyboard-config (0.6-1) experimental; urgency=low
+
+ * New upstream release.
+ * debian/control: Bump Standards-Version to 3.6.2, no changes needed
+ in packaging.
+ * debian/README.Debian: Add a note explaining how to use xkeyboard-config.
+ * Since binary package is xkb-data, files are installed under
+ /etc/X11/xkb-data and not /etc/X11/xkeyboard-config.
+
+ -- Denis Barbier Thu, 6 Oct 2005 23:19:59 +0200
+
+xkeyboard-config (0.5-2) experimental; urgency=low
+
+ * Some packages have a versioned dependency on xlibs, so Replaces
+ does not work here. For the moment, XKB files are moved to
+ /etc/X11/xkeyboard-config
+
+ -- Denis Barbier Thu, 17 Mar 2005 22:25:02 +0100
+
+xkeyboard-config (0.5-1) experimental; urgency=low
+
+ * Initial upload. Closes: #274299
+ * Uploaded to experimental until we decide what to do with the
+ xlibs <-> xkb-data transition.
+
+ -- Denis Barbier Wed, 2 Mar 2005 22:28:23 +0100
+
--- xkeyboard-config-1.6.orig/debian/compat
+++ xkeyboard-config-1.6/debian/compat
@@ -0,0 +1 @@
+5
--- xkeyboard-config-1.6.orig/debian/xsfbs/repack.sh
+++ xkeyboard-config-1.6/debian/xsfbs/repack.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+set -e
+
+if ! [ -d debian/prune ]; then
+ exit 0
+fi
+
+if [ "x$1" != x--upstream-version ]; then
+ exit 1
+fi
+
+version="$2"
+filename="$3"
+
+if [ -z "$version" ] || ! [ -f "$filename" ]; then
+ exit 1
+fi
+
+dir="$(pwd)"
+tempdir="$(mktemp -d)"
+
+cd "$tempdir"
+tar xf "$dir/$filename"
+cat "$dir"/debian/prune/* | while read file; do rm -f */$file; done
+
+tar czf "$dir/$filename" *
+cd "$dir"
+rm -rf "$tempdir"
+echo "Done pruning upstream tarball"
+
+exit 0
--- xkeyboard-config-1.6.orig/debian/xsfbs/xsfbs.mk
+++ xkeyboard-config-1.6/debian/xsfbs/xsfbs.mk
@@ -0,0 +1,293 @@
+#!/usr/bin/make -f
+
+# Debian X Strike Force Build System (XSFBS): Make portion
+
+# Copyright 1996 Stephen Early
+# Copyright 1997 Mark Eichin
+# Copyright 1998-2005, 2007 Branden Robinson
+# Copyright 2005 David Nusinow
+#
+# Licensed under the GNU General Public License, version 2. See the file
+# /usr/share/common-licenses/GPL or .
+
+# Originally by Stephen Early
+# Modified by Mark W. Eichin
+# Modified by Adam Heath
+# Modified by Branden Robinson
+# Modified by Fabio Massimo Di Nitto
+# Modified by David Nusinow
+# Acknowledgements to Manoj Srivastava.
+
+# Pass $(DH_OPTIONS) into the environment for debhelper's benefit.
+export DH_OPTIONS
+
+# force quilt to not use ~/.quiltrc and to use debian/patches
+QUILT = QUILT_PATCHES=debian/patches quilt --quiltrc /dev/null
+
+# Set up parameters for the upstream build environment.
+
+# Determine (source) package name from Debian changelog.
+SOURCE_NAME:=$(shell dpkg-parsechangelog -ldebian/changelog \
+ | grep '^Source:' | awk '{print $$2}')
+
+# Determine package version from Debian changelog.
+SOURCE_VERSION:=$(shell dpkg-parsechangelog -ldebian/changelog \
+ | grep '^Version:' | awk '{print $$2}')
+
+# Determine upstream version number.
+UPSTREAM_VERSION:=$(shell echo $(SOURCE_VERSION) | sed 's/-.*//')
+
+# Determine the source version without the epoch for make-orig-tar-gz
+NO_EPOCH_VER:=$(shell echo $(UPSTREAM_VERSION) | sed 's/^.://')
+
+# Figure out who's building this package.
+BUILDER:=$(shell echo $${DEBEMAIL:-$${EMAIL:-$$(echo $$LOGNAME@$$(cat /etc/mailname 2>/dev/null))}})
+
+# Find out if this is an official build; an official build has nothing but
+# digits, dots, and/or the codename of a release in the Debian part of the
+# version number. Anything else indicates an unofficial build.
+OFFICIAL_BUILD:=$(shell VERSION=$(SOURCE_VERSION); if ! expr "$$(echo $${VERSION\#\#*-} | sed 's/\(woody\|sarge\|etch\|lenny\)//g')" : ".*[^0-9.].*" >/dev/null 2>&1; then echo yes; fi)
+
+# Set up parameters for the Debian build environment.
+
+# Determine our architecture.
+BUILD_ARCH:=$(shell dpkg-architecture -qDEB_BUILD_ARCH)
+# Work around some old-time dpkg braindamage.
+BUILD_ARCH:=$(subst i486,i386,$(BUILD_ARCH))
+# The DEB_HOST_ARCH variable may be set per the Debian cross-compilation policy.
+ifdef DEB_HOST_ARCH
+ ARCH:=$(DEB_HOST_ARCH)
+else
+ # dpkg-cross sets the ARCH environment variable; if set, use it.
+ ifdef ARCH
+ ARCH:=$(ARCH)
+ else
+ ARCH:=$(BUILD_ARCH)
+ endif
+endif
+
+# $(STAMP_DIR) houses stamp files for complex targets.
+STAMP_DIR:=stampdir
+
+# $(DEBTREEDIR) is where all install rules are told (via $(DESTDIR)) to place
+# their files.
+DEBTREEDIR:=$(CURDIR)/debian/tmp
+
+# All "important" targets have four lines:
+# 1) A target name that is invoked by a package-building tool or the user.
+# This consists of a dependency on a "$(STAMP_DIR)/"-prefixed counterpart.
+# 2) A line delcaring 1) as a phony target (".PHONY:").
+# 3) A "$(STAMP_DIR)/"-prefixed target which does the actual work, and may
+# depend on other targets.
+# 4) A line declaring 3) as a member of the $(stampdir_targets) variable; the
+# "$(STAMP_DIR)/" prefix is omitted.
+#
+# This indirection is needed so that the "stamp" files that signify when a rule
+# is done can be located in a separate "stampdir". Recall that make has no way
+# to know when a goal has been met for a phony target (like "build" or
+# "install").
+#
+# At the end of each "$(STAMP_DIR)/" target, be sure to run the command ">$@"
+# so that the target will not be run again. Removing the file will make Make
+# run the target over.
+
+# All phony targets should be declared as dependencies of .PHONY, even if they
+# do not have "($STAMP_DIR)/"-prefixed counterparts.
+
+# Define a harmless default rule to keep things from going nuts by accident.
+.PHONY: default
+default:
+
+# Set up the $(STAMP_DIR) directory.
+.PHONY: stampdir
+stampdir_targets+=stampdir
+stampdir: $(STAMP_DIR)/stampdir
+$(STAMP_DIR)/stampdir:
+ mkdir $(STAMP_DIR)
+ >$@
+
+# Set up the package build directory as quilt expects to find it.
+.PHONY: prepare
+stampdir_targets+=prepare
+prepare: $(STAMP_DIR)/prepare
+$(STAMP_DIR)/prepare: $(STAMP_DIR)/log $(STAMP_DIR)/genscripts
+ >$@
+
+.PHONY: log
+stampdir_targets+=log
+log: $(STAMP_DIR)/log
+$(STAMP_DIR)/log: $(STAMP_DIR)/stampdir
+ mkdir -p $(STAMP_DIR)/log
+
+# Apply all patches to the upstream source.
+.PHONY: patch
+stampdir_targets+=patch
+patch: $(STAMP_DIR)/patch
+$(STAMP_DIR)/patch: $(STAMP_DIR)/prepare
+ if ! [ `which quilt` ]; then \
+ echo "Couldn't find quilt. Please install it or add it to the build-depends for this package."; \
+ exit 1; \
+ fi; \
+ if $(QUILT) next >/dev/null 2>&1; then \
+ echo -n "Applying patches..."; \
+ if $(QUILT) push -a -v >$(STAMP_DIR)/log/patch 2>&1; then \
+ cat $(STAMP_DIR)/log/patch; \
+ echo "successful."; \
+ else \
+ cat $(STAMP_DIR)/log/patch; \
+ echo "failed! (check $(STAMP_DIR)/log/patch for details)"; \
+ exit 1; \
+ fi; \
+ else \
+ echo "No patches to apply"; \
+ fi; \
+ >$@
+
+# Revert all patches to the upstream source.
+.PHONY: unpatch
+unpatch: $(STAMP_DIR)/log
+ rm -f $(STAMP_DIR)/patch
+ @echo -n "Unapplying patches..."; \
+ if $(QUILT) applied >/dev/null 2>/dev/null; then \
+ if $(QUILT) pop -a -v >$(STAMP_DIR)/log/unpatch 2>&1; then \
+ cat $(STAMP_DIR)/log/unpatch; \
+ echo "successful."; \
+ else \
+ cat $(STAMP_DIR)/log/unpatch; \
+ echo "failed! (check $(STAMP_DIR)/log/unpatch for details)"; \
+ exit 1; \
+ fi; \
+ else \
+ echo "nothing to do."; \
+ fi
+
+# Clean the generated maintainer scripts.
+.PHONY: cleanscripts
+cleanscripts:
+ rm -f $(STAMP_DIR)/genscripts
+ rm -f debian/*.config \
+ debian/*.postinst \
+ debian/*.postrm \
+ debian/*.preinst \
+ debian/*.prerm
+
+# Clean the package build tree.
+.PHONY: xsfclean
+xsfclean: cleanscripts unpatch
+ dh_testdir
+ rm -rf .pc
+ rm -rf $(STAMP_DIR) $(SOURCE_DIR)
+ rm -rf imports
+ dh_clean debian/shlibs.local \
+ debian/po/pothead
+
+# Generate the debconf templates POT file header.
+debian/po/pothead: debian/po/pothead.in
+ sed -e 's/SOURCE_VERSION/$(SOURCE_VERSION)/' \
+ -e 's/DATE/$(shell date "+%F %X%z"/)' <$< >$@
+
+# Update POT and PO files.
+.PHONY: updatepo
+updatepo: debian/po/pothead
+ debian/scripts/debconf-updatepo --pot-header=pothead --verbose
+
+# Remove files from the upstream source tree that we don't need, or which have
+# licensing problems. It must be run before creating the .orig.tar.gz.
+#
+# Note: This rule is for Debian package maintainers' convenience, and is not
+# needed for conventional build scenarios.
+.PHONY: prune-upstream-tree
+prune-upstream-tree:
+ # Ensure we're in the correct directory.
+ dh_testdir
+ grep -rvh '^#' debian/prune/ | xargs --no-run-if-empty rm -rf
+
+# Verify that there are no offsets or fuzz in the patches we apply.
+#
+# Note: This rule is for Debian package maintainers' convenience, and is not
+# needed for conventional build scenarios.
+.PHONY: patch-audit
+patch-audit: prepare unpatch
+ @echo -n "Auditing patches..."; \
+ >$(STAMP_DIR)/log/patch; \
+ FUZZY=; \
+ while [ -n "$$($(QUILT) next)" ]; do \
+ RESULT=$$($(QUILT) push -v | tee -a $(STAMP_DIR)/log/patch | grep ^Hunk | sed 's/^Hunk.*\(succeeded\|FAILED\).*/\1/');\
+ case "$$RESULT" in \
+ succeeded) \
+ echo "fuzzy patch: $$($(QUILT) top)" \
+ | tee -a $(STAMP_DIR)/log/$$($(QUILT) top); \
+ FUZZY=yes; \
+ ;; \
+ FAILED) \
+ echo "broken patch: $$($(QUILT) next)" \
+ | tee -a $(STAMP_DIR)/log/$$($(QUILT) next); \
+ exit 1; \
+ ;; \
+ esac; \
+ done; \
+ if [ -n "$$FUZZY" ]; then \
+ echo "there were fuzzy patches; please fix."; \
+ exit 1; \
+ else \
+ echo "done."; \
+ fi
+
+# Generate the maintainer scripts.
+.PHONY: genscripts
+stampdir_targets+=genscripts
+genscripts: $(STAMP_DIR)/genscripts
+$(STAMP_DIR)/genscripts: $(STAMP_DIR)/stampdir
+ for FILE in debian/*.config.in \
+ debian/*.postinst.in \
+ debian/*.postrm.in \
+ debian/*.preinst.in \
+ debian/*.prerm.in; do \
+ if [ -e "$$FILE" ]; then \
+ MAINTSCRIPT=$$(echo $$FILE | sed 's/.in$$//'); \
+ sed -n '1,/^#INCLUDE_SHELL_LIB#$$/p' <$$FILE \
+ | sed -e '/^#INCLUDE_SHELL_LIB#$$/d' >$$MAINTSCRIPT.tmp; \
+ cat debian/xsfbs/xsfbs.sh >>$$MAINTSCRIPT.tmp; \
+ sed -n '/^#INCLUDE_SHELL_LIB#$$/,$$p' <$$FILE \
+ | sed -e '/^#INCLUDE_SHELL_LIB#$$/d' >>$$MAINTSCRIPT.tmp; \
+ sed -e 's/@SOURCE_VERSION@/$(SOURCE_VERSION)/' \
+ -e 's/@OFFICIAL_BUILD@/$(OFFICIAL_BUILD)/' \
+ -e 's/@DEFAULT_DCRESOLUTIONS@/$(DEFAULT_DCRESOLUTIONS)/' \
+ <$$MAINTSCRIPT.tmp >$$MAINTSCRIPT; \
+ rm $$MAINTSCRIPT.tmp; \
+ fi; \
+ done
+ # Validate syntax of generated shell scripts.
+ #sh debian/scripts/validate-posix-sh debian/*.config \
+ # debian/*.postinst \
+ # debian/*.postrm \
+ # debian/*.preinst \
+ # debian/*.prerm
+ >$@
+
+# Generate the shlibs.local file.
+debian/shlibs.local:
+ cat debian/*.shlibs >$@
+
+SERVERMINVERS = $(shell cat /usr/share/xserver-xorg/serverminver 2>/dev/null)
+VIDEOABI = $(shell cat /usr/share/xserver-xorg/videoabiver 2>/dev/null)
+INPUTABI = $(shell cat /usr/share/xserver-xorg/inputabiver 2>/dev/null)
+SERVER_DEPENDS = xserver-xorg-core (>= $(SERVERMINVERS))
+VIDDRIVER_PROVIDES = xserver-xorg-video-$(VIDEOABI)
+INPDRIVER_PROVIDES = xserver-xorg-input-$(INPUTABI)
+ifeq ($(PACKAGE),)
+PACKAGE=$(shell awk '/^Package:/ { print $$2; exit }' < debian/control)
+endif
+
+.PHONY: serverabi
+serverabi: install
+ifeq ($(SERVERMINVERS),)
+ @echo error: xserver-xorg-dev needs to be installed
+ @exit 1
+else
+ echo "xserver:Depends=$(SERVER_DEPENDS)" >> debian/$(PACKAGE).substvars
+ echo "xviddriver:Provides=$(VIDDRIVER_PROVIDES)" >> debian/$(PACKAGE).substvars
+ echo "xinpdriver:Provides=$(INPDRIVER_PROVIDES)" >> debian/$(PACKAGE).substvars
+endif
+
+# vim:set noet ai sts=8 sw=8 tw=0:
--- xkeyboard-config-1.6.orig/debian/xsfbs/xsfbs.sh
+++ xkeyboard-config-1.6/debian/xsfbs/xsfbs.sh
@@ -0,0 +1,863 @@
+# $Id$
+
+# This is the X Strike Force shell library for X Window System package
+# maintainer scripts. It serves to define shell functions commonly used by
+# such packages, and performs some error checking necessary for proper operation
+# of those functions. By itself, it does not "do" much; the maintainer scripts
+# invoke the functions defined here to accomplish package installation and
+# removal tasks.
+
+# If you are reading this within a Debian package maintainer script (e.g.,
+# /var/lib/dpkg)info/PACKAGE.{config,preinst,postinst,prerm,postrm}), you can
+# skip past this library by scanning forward in this file to the string
+# "GOBSTOPPER".
+
+SOURCE_VERSION=@SOURCE_VERSION@
+OFFICIAL_BUILD=@OFFICIAL_BUILD@
+
+# Use special abnormal exit codes so that problems with this library are more
+# easily tracked down.
+SHELL_LIB_INTERNAL_ERROR=86
+SHELL_LIB_THROWN_ERROR=74
+SHELL_LIB_USAGE_ERROR=99
+
+# old -> new variable names
+if [ -z "$DEBUG_XORG_PACKAGE" ] && [ -n "$DEBUG_XFREE86_PACKAGE" ]; then
+ DEBUG_XORG_PACKAGE="$DEBUG_XFREE86_PACKAGE"
+fi
+if [ -z "$DEBUG_XORG_DEBCONF" ] && [ -n "$DEBUG_XFREE86_DEBCONF" ]; then
+ DEBUG_XORG_DEBCONF="$DEBUG_XFREE86_DEBCONF"
+fi
+
+# initial sanity checks
+if [ -z "$THIS_PACKAGE" ]; then
+ cat >&2 < on the World Wide Web for
+instructions, read the file /usr/share/doc/debian/bug-reporting.txt from the
+"doc-debian" package, or install the "reportbug" package and use the command of
+the same name to file a report against version $SOURCE_VERSION of this package.
+EOF
+ exit $SHELL_LIB_USAGE_ERROR
+fi
+
+if [ -z "$THIS_SCRIPT" ]; then
+ cat >&2 < on the World Wide Web for
+instructions, read the file /usr/share/doc/debian/bug-reporting.txt from the
+"doc-debian" package, or install the "reportbug" package and use the command of
+the same name to file a report against version $SOURCE_VERSION of the
+"$THIS_PACKAGE" package.
+EOF
+ exit $SHELL_LIB_USAGE_ERROR
+fi
+
+if [ "$1" = "reconfigure" ] || [ -n "$DEBCONF_RECONFIGURE" ]; then
+ RECONFIGURE="true"
+else
+ RECONFIGURE=
+fi
+
+if ([ "$1" = "install" ] || [ "$1" = "configure" ]) && [ -z "$2" ]; then
+ FIRSTINST="yes"
+fi
+
+if [ -z "$RECONFIGURE" ] && [ -z "$FIRSTINST" ]; then
+ UPGRADE="yes"
+fi
+
+trap "message;\
+ message \"Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.\";\
+ message;\
+ exit 1" HUP INT QUIT TERM
+
+reject_nondigits () {
+ # syntax: reject_nondigits [ operand ... ]
+ #
+ # scan operands (typically shell variables whose values cannot be trusted) for
+ # characters other than decimal digits and barf if any are found
+ while [ -n "$1" ]; do
+ # does the operand contain anything but digits?
+ if ! expr "$1" : "[[:digit:]]\+$" > /dev/null 2>&1; then
+ # can't use die(), because it wraps message() which wraps this function
+ echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_nondigits() encountered" \
+ "possibly malicious garbage \"$1\"" >&2
+ exit $SHELL_LIB_THROWN_ERROR
+ fi
+ shift
+ done
+}
+
+reject_whitespace () {
+ # syntax: reject_whitespace [ operand ]
+ #
+ # scan operand (typically a shell variable whose value cannot be trusted) for
+ # whitespace characters and barf if any are found
+ if [ -n "$1" ]; then
+ # does the operand contain any whitespace?
+ if expr "$1" : "[[:space:]]" > /dev/null 2>&1; then
+ # can't use die(), because I want to avoid forward references
+ echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_whitespace() encountered" \
+ "possibly malicious garbage \"$1\"" >&2
+ exit $SHELL_LIB_THROWN_ERROR
+ fi
+ fi
+}
+
+reject_unlikely_path_chars () {
+ # syntax: reject_unlikely_path_chars [ operand ... ]
+ #
+ # scan operands (typically shell variables whose values cannot be trusted) for
+ # characters unlikely to be seen in a path and which the shell might
+ # interpret and barf if any are found
+ while [ -n "$1" ]; do
+ # does the operand contain any funny characters?
+ if expr "$1" : '.*[!$&()*;<>?|].*' > /dev/null 2>&1; then
+ # can't use die(), because I want to avoid forward references
+ echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_unlikely_path_chars()" \
+ "encountered possibly malicious garbage \"$1\"" >&2
+ exit $SHELL_LIB_THROWN_ERROR
+ fi
+ shift
+ done
+}
+
+# Query the terminal to establish a default number of columns to use for
+# displaying messages to the user. This is used only as a fallback in the
+# event the COLUMNS variable is not set. ($COLUMNS can react to SIGWINCH while
+# the script is running, and this cannot, only being calculated once.)
+DEFCOLUMNS=$(stty size 2> /dev/null | awk '{print $2}') || true
+if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" > /dev/null 2>&1; then
+ DEFCOLUMNS=80
+fi
+
+message () {
+ # pretty-print messages of arbitrary length
+ reject_nondigits "$COLUMNS"
+ echo "$*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS} >&2
+}
+
+observe () {
+ # syntax: observe message ...
+ #
+ # issue observational message suitable for logging someday when support for
+ # it exists in dpkg
+ if [ -n "$DEBUG_XORG_PACKAGE" ]; then
+ message "$THIS_PACKAGE $THIS_SCRIPT note: $*"
+ fi
+}
+
+warn () {
+ # syntax: warn message ...
+ #
+ # issue warning message suitable for logging someday when support for
+ # it exists in dpkg; also send to standard error
+ message "$THIS_PACKAGE $THIS_SCRIPT warning: $*"
+}
+
+die () {
+ # syntax: die message ...
+ #
+ # exit script with error message
+ message "$THIS_PACKAGE $THIS_SCRIPT error: $*"
+ exit $SHELL_LIB_THROWN_ERROR
+}
+
+internal_error () {
+ # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message
+ message "internal error: $*"
+ if [ -n "$OFFICIAL_BUILD" ]; then
+ message "Please report a bug in the $THIS_SCRIPT script of the" \
+ "$THIS_PACKAGE package, version $SOURCE_VERSION to the Debian Bug" \
+ "Tracking System. Include all messages above that mention the" \
+ "$THIS_PACKAGE package. Visit " \
+ " on the World Wide Web for" \
+ "instructions, read the file" \
+ "/usr/share/doc/debian/bug-reporting.txt from the doc-debian" \
+ "package, or install the reportbug package and use the command of" \
+ "the same name to file a report."
+ fi
+ exit $SHELL_LIB_INTERNAL_ERROR
+}
+
+usage_error () {
+ message "usage error: $*"
+ message "Please report a bug in the $THIS_SCRIPT script of the" \
+ "$THIS_PACKAGE package, version $SOURCE_VERSION to the Debian Bug" \
+ "Tracking System. Include all messages above that mention the" \
+ "$THIS_PACKAGE package. Visit " \
+ " on the World Wide Web for" \
+ "instructions, read the file" \
+ "/usr/share/doc/debian/bug-reporting.txt from the doc-debian" \
+ "package, or install the reportbug package and use the command of" \
+ "the same name to file a report."
+ exit $SHELL_LIB_USAGE_ERROR
+}
+
+
+maplink () {
+ # returns what symlink should point to; i.e., what the "sane" answer is
+ # Keep this in sync with the debian/*.links files.
+ # This is only needed for symlinks to directories.
+ #
+ # XXX: Most of these look wrong in the X11R7 world and need to be fixed.
+ # If we've stopped using this function, fixing it might enable us to re-enable
+ # it again and catch more errors.
+ case "$1" in
+ /etc/X11/xkb/compiled) echo /var/lib/xkb ;;
+ /etc/X11/xkb/xkbcomp) echo /usr/X11R6/bin/xkbcomp ;;
+ /usr/X11R6/lib/X11/app-defaults) echo /etc/X11/app-defaults ;;
+ /usr/X11R6/lib/X11/fs) echo /etc/X11/fs ;;
+ /usr/X11R6/lib/X11/lbxproxy) echo /etc/X11/lbxproxy ;;
+ /usr/X11R6/lib/X11/proxymngr) echo /etc/X11/proxymngr ;;
+ /usr/X11R6/lib/X11/rstart) echo /etc/X11/rstart ;;
+ /usr/X11R6/lib/X11/twm) echo /etc/X11/twm ;;
+ /usr/X11R6/lib/X11/xdm) echo /etc/X11/xdm ;;
+ /usr/X11R6/lib/X11/xinit) echo /etc/X11/xinit ;;
+ /usr/X11R6/lib/X11/xkb) echo /etc/X11/xkb ;;
+ /usr/X11R6/lib/X11/xserver) echo /etc/X11/xserver ;;
+ /usr/X11R6/lib/X11/xsm) echo /etc/X11/xsm ;;
+ /usr/bin/X11) echo ../X11R6/bin ;;
+ /usr/bin/rstartd) echo ../X11R6/bin/rstartd ;;
+ /usr/include/X11) echo ../X11R6/include/X11 ;;
+ /usr/lib/X11) echo ../X11R6/lib/X11 ;;
+ *) internal_error "maplink() called with unknown path \"$1\"" ;;
+ esac
+}
+
+analyze_path () {
+ # given a supplied set of pathnames, break each one up by directory and do an
+ # ls -dl on each component, cumulatively; i.e.
+ # analyze_path /usr/X11R6/bin -> ls -dl /usr /usr/X11R6 /usr/X11R6/bin
+ # Thanks to Randolph Chung for this clever hack.
+
+ local f g
+
+ while [ -n "$1" ]; do
+ reject_whitespace "$1"
+ g=
+ message "Analyzing $1:"
+ for f in $(echo "$1" | tr / \ ); do
+ if [ -e /$g$f ]; then
+ ls -dl /$g$f /$g$f.dpkg-* 2> /dev/null || true
+ g=$g$f/
+ else
+ message "/$g$f: nonexistent; directory contents of /$g:"
+ ls -l /$g
+ break
+ fi
+ done
+ shift
+ done
+}
+
+find_culprits () {
+ local f p dpkg_info_dir possible_culprits smoking_guns bad_packages package \
+ msg
+
+ reject_whitespace "$1"
+ message "Searching for overlapping packages..."
+ dpkg_info_dir=/var/lib/dpkg/info
+ if [ -d $dpkg_info_dir ]; then
+ if [ "$(echo $dpkg_info_dir/*.list)" != "$dpkg_info_dir/*.list" ]; then
+ possible_culprits=$(ls -1 $dpkg_info_dir/*.list | egrep -v \
+ "(xbase-clients|x11-common|xfs|xlibs)")
+ if [ -n "$possible_culprits" ]; then
+ smoking_guns=$(grep -l "$1" $possible_culprits || true)
+ if [ -n "$smoking_guns" ]; then
+ bad_packages=$(printf "\\n")
+ for f in $smoking_guns; do
+ # too bad you can't nest parameter expansion voodoo
+ p=${f%*.list} # strip off the trailing ".list"
+ package=${p##*/} # strip off the directories
+ bad_packages=$(printf "%s\n%s" "$bad_packages" "$package")
+ done
+ msg=$(cat < /dev/null 2>&1; then
+ message "The readlink command was not found. Please install version" \
+ "1.13.1 or later of the debianutils package."
+ readlink () {
+ # returns what symlink in $1 actually points to
+ perl -e '$l = shift; exit 1 unless -l $l; $r = readlink $l; exit 1 unless $r; print "$r\n"' "$1"
+ }
+fi
+
+check_symlink () {
+ # syntax: check_symlink symlink
+ #
+ # See if specified symlink points where it is supposed to. Return 0 if it
+ # does, and 1 if it does not.
+ #
+ # Primarily used by check_symlinks_and_warn() and check_symlinks_and_bomb().
+
+ local symlink
+
+ # validate arguments
+ if [ $# -ne 1 ]; then
+ usage_error "check_symlink() called with wrong number of arguments;" \
+ "expected 1, got $#"
+ exit $SHELL_LIB_USAGE_ERROR
+ fi
+
+ symlink="$1"
+
+ if [ "$(maplink "$symlink")" = "$(readlink "$symlink")" ]; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+check_symlinks_and_warn () {
+ # syntax: check_symlinks_and_warn symlink ...
+ #
+ # For each argument, check for symlink sanity, and warn if it isn't sane.
+ #
+ # Call this function from a preinst script in the event $1 is "upgrade" or
+ # "install".
+
+ local errmsg symlink
+
+ # validate arguments
+ if [ $# -lt 1 ]; then
+ usage_error "check_symlinks_and_warn() called with wrong number of" \
+ "arguments; expected at least 1, got $#"
+ exit $SHELL_LIB_USAGE_ERROR
+ fi
+
+ while [ -n "$1" ]; do
+ symlink="$1"
+ if [ -L "$symlink" ]; then
+ if ! check_symlink "$symlink"; then
+ observe "$symlink symbolic link points to wrong location" \
+ "$(readlink "$symlink"); removing"
+ rm "$symlink"
+ fi
+ elif [ -e "$symlink" ]; then
+ errmsg="$symlink exists and is not a symbolic link; this package cannot"
+ errmsg="$errmsg be installed until this"
+ if [ -f "$symlink" ]; then
+ errmsg="$errmsg file"
+ elif [ -d "$symlink" ]; then
+ errmsg="$errmsg directory"
+ else
+ errmsg="$errmsg thing"
+ fi
+ errmsg="$errmsg is removed"
+ die "$errmsg"
+ fi
+ shift
+ done
+}
+
+check_symlinks_and_bomb () {
+ # syntax: check_symlinks_and_bomb symlink ...
+ #
+ # For each argument, check for symlink sanity, and bomb if it isn't sane.
+ #
+ # Call this function from a postinst script.
+
+ local problem symlink
+
+ # validate arguments
+ if [ $# -lt 1 ]; then
+ usage_error "check_symlinks_and_bomb() called with wrong number of"
+ "arguments; expected at least 1, got $#"
+ exit $SHELL_LIB_USAGE_ERROR
+ fi
+
+ while [ -n "$1" ]; do
+ problem=
+ symlink="$1"
+ if [ -L "$symlink" ]; then
+ if ! check_symlink "$symlink"; then
+ problem=yes
+ warn "$symlink symbolic link points to wrong location" \
+ "$(readlink "$symlink")"
+ fi
+ elif [ -e "$symlink" ]; then
+ problem=yes
+ warn "$symlink is not a symbolic link"
+ else
+ problem=yes
+ warn "$symlink symbolic link does not exist"
+ fi
+ if [ -n "$problem" ]; then
+ analyze_path "$symlink" "$(readlink "$symlink")"
+ find_culprits "$symlink"
+ die "bad symbolic links on system"
+ fi
+ shift
+ done
+}
+
+font_update () {
+ # run $UPDATECMDS in $FONTDIRS
+
+ local dir cmd shortcmd x_font_dir_prefix
+
+ x_font_dir_prefix="/usr/share/fonts/X11"
+
+ if [ -z "$UPDATECMDS" ]; then
+ usage_error "font_update() called but \$UPDATECMDS not set"
+ fi
+ if [ -z "$FONTDIRS" ]; then
+ usage_error "font_update() called but \$FONTDIRS not set"
+ fi
+
+ reject_unlikely_path_chars "$UPDATECMDS"
+ reject_unlikely_path_chars "$FONTDIRS"
+
+ for dir in $FONTDIRS; do
+ if [ -d "$x_font_dir_prefix/$dir" ]; then
+ for cmd in $UPDATECMDS; do
+ if which "$cmd" > /dev/null 2>&1; then
+ shortcmd=${cmd##*/}
+ observe "running $shortcmd in $dir font directory"
+ cmd_opts=
+ if [ "$shortcmd" = "update-fonts-alias" ]; then
+ cmd_opts=--x11r7-layout
+ fi
+ if [ "$shortcmd" = "update-fonts-dir" ]; then
+ cmd_opts=--x11r7-layout
+ fi
+ if [ "$shortcmd" = "update-fonts-scale" ]; then
+ cmd_opts=--x11r7-layout
+ fi
+ $cmd $cmd_opts $dir || warn "$cmd $cmd_opts $dir" \
+ "failed; font directory data may not" \
+ "be up to date"
+ else
+ warn "$cmd not found; not updating corresponding $dir font" \
+ "directory data"
+ fi
+ done
+ else
+ warn "$dir is not a directory; not updating font directory data"
+ fi
+ done
+}
+
+remove_conffile_prepare () {
+ # syntax: remove_conffile_prepare filename official_md5sum ...
+ #
+ # Check a conffile "filename" against a list of canonical MD5 checksums.
+ # If the file's current MD5 checksum matches one of the "official_md5sum"
+ # operands provided, then prepare the conffile for removal from the system.
+ # We defer actual deletion until the package is configured so that we can
+ # roll this operation back if package installation fails.
+ #
+ # Call this function from a preinst script in the event $1 is "upgrade" or
+ # "install" and verify $2 to ensure the package is being upgraded from a
+ # version (or installed over a version removed-but-not-purged) prior to the
+ # one in which the conffile was obsoleted.
+
+ local conffile current_checksum
+
+ # validate arguments
+ if [ $# -lt 2 ]; then
+ usage_error "remove_conffile_prepare() called with wrong number of" \
+ "arguments; expected at least 2, got $#"
+ exit $SHELL_LIB_USAGE_ERROR
+ fi
+
+ conffile="$1"
+ shift
+
+ # does the conffile even exist?
+ if [ -e "$conffile" ]; then
+ # calculate its checksum
+ current_checksum=$(md5sum < "$conffile" | sed 's/[[:space:]].*//')
+ # compare it to each supplied checksum
+ while [ -n "$1" ]; do
+ if [ "$current_checksum" = "$1" ]; then
+ # we found a match; move the confffile and stop looking
+ observe "preparing obsolete conffile $conffile for removal"
+ mv "$conffile" "$conffile.$THIS_PACKAGE-tmp"
+ break
+ fi
+ shift
+ done
+ fi
+}
+
+remove_conffile_lookup () {
+ # syntax: remove_conffile_lookup package filename
+ #
+ # Lookup the md5sum of a conffile in dpkg's database, and prepare for removal
+ # if it matches the actual file's md5sum.
+ #
+ # Call this function when you would call remove_conffile_prepare but only
+ # want to check against dpkg's status database instead of known checksums.
+
+ local package conffile old_md5sum
+
+ # validate arguments
+ if [ $# -ne 2 ]; then
+ usage_error "remove_conffile_lookup() called with wrong number of" \
+ "arguments; expected 1, got $#"
+ exit $SHELL_LIB_USAGE_ERROR
+ fi
+
+ package="$1"
+ conffile="$2"
+
+ if ! [ -e "$conffile" ]; then
+ return
+ fi
+ old_md5sum="$(dpkg-query -W -f='${Conffiles}' "$package" | \
+ awk '{ if (match($0, "^ '"$conffile"' ")) print $2}')"
+ if [ -n "$old_md5sum" ]; then
+ remove_conffile_prepare "$conffile" "$old_md5sum"
+ fi
+}
+
+remove_conffile_commit () {
+ # syntax: remove_conffile_commit filename
+ #
+ # Complete the removal of a conffile "filename" that has become obsolete.
+ #
+ # Call this function from a postinst script after having used
+ # remove_conffile_prepare() in the preinst.
+
+ local conffile
+
+ # validate arguments
+ if [ $# -ne 1 ]; then
+ usage_error "remove_conffile_commit() called with wrong number of" \
+ "arguments; expected 1, got $#"
+ exit $SHELL_LIB_USAGE_ERROR
+ fi
+
+ conffile="$1"
+
+ # if the temporary file created by remove_conffile_prepare() exists, remove it
+ if [ -e "$conffile.$THIS_PACKAGE-tmp" ]; then
+ observe "committing removal of obsolete conffile $conffile"
+ rm "$conffile.$THIS_PACKAGE-tmp"
+ fi
+}
+
+remove_conffile_rollback () {
+ # syntax: remove_conffile_rollback filename
+ #
+ # Roll back the removal of a conffile "filename".
+ #
+ # Call this function from a postrm script in the event $1 is "abort-upgrade"
+ # or "abort-install" is after having used remove_conffile_prepare() in the
+ # preinst.
+
+ local conffile
+
+ # validate arguments
+ if [ $# -ne 1 ]; then
+ usage_error "remove_conffile_rollback() called with wrong number of" \
+ "arguments; expected 1, got $#"
+ exit $SHELL_LIB_USAGE_ERROR
+ fi
+
+ conffile="$1"
+
+ # if the temporary file created by remove_conffile_prepare() exists, move it
+ # back
+ if [ -e "$conffile.$THIS_PACKAGE-tmp" ]; then
+ observe "rolling back removal of obsolete conffile $conffile"
+ mv "$conffile.$THIS_PACKAGE-tmp" "$conffile"
+ fi
+}
+
+replace_conffile_with_symlink_prepare () {
+ # syntax: replace_conffile_with_symlink_prepare oldfilename newfilename \
+ # official_md5sum ...
+ #
+ # Check a conffile "oldfilename" against a list of canonical MD5 checksums.
+ # If the file's current MD5 checksum matches one of the "official_md5sum"
+ # operands provided, then prepare the conffile for removal from the system.
+ # We defer actual deletion until the package is configured so that we can
+ # roll this operation back if package installation fails. Otherwise copy it
+ # to newfilename and let dpkg handle it through conffiles mechanism.
+ #
+ # Call this function from a preinst script in the event $1 is "upgrade" or
+ # "install" and verify $2 to ensure the package is being upgraded from a
+ # version (or installed over a version removed-but-not-purged) prior to the
+ # one in which the conffile was obsoleted.
+
+ local conffile current_checksum
+
+ # validate arguments
+ if [ $# -lt 3 ]; then
+ usage_error "replace_conffile_with_symlink_prepare() called with wrong" \
+ " number of arguments; expected at least 3, got $#"
+ exit $SHELL_LIB_USAGE_ERROR
+ fi
+
+ oldconffile="$1"
+ shift
+ newconffile="$1"
+ shift
+
+ remove_conffile_prepare "$_oldconffile" "$@"
+ # If $oldconffile still exists, then md5sums didn't match.
+ # Copy it to new one.
+ if [ -f "$oldconffile" ]; then
+ cp "$oldconffile" "$newconffile"
+ fi
+
+}
+
+replace_conffile_with_symlink_commit () {
+ # syntax: replace_conffile_with_symlink_commit oldfilename
+ #
+ # Complete the removal of a conffile "oldfilename" that has been
+ # replaced by a symlink.
+ #
+ # Call this function from a postinst script after having used
+ # replace_conffile_with_symlink_prepare() in the preinst.
+
+ local conffile
+
+ # validate arguments
+ if [ $# -ne 1 ]; then
+ usage_error "replace_conffile_with_symlink_commit() called with wrong" \
+ "number of arguments; expected 1, got $#"
+ exit $SHELL_LIB_USAGE_ERROR
+ fi
+
+ conffile="$1"
+
+ remove_conffile_commit "$conffile"
+}
+
+replace_conffile_with_symlink_rollback () {
+ # syntax: replace_conffile_with_symlink_rollback oldfilename newfilename
+ #
+ # Roll back the replacing of a conffile "oldfilename" with symlink to
+ # "newfilename".
+ #
+ # Call this function from a postrm script in the event $1 is "abort-upgrade"
+ # or "abort-install" and verify $2 to ensure the package failed to upgrade
+ # from a version (or install over a version removed-but-not-purged) prior
+ # to the one in which the conffile was obsoleted.
+ # You should have used replace_conffile_with_symlink_prepare() in the
+ # preinst.
+
+ local conffile
+
+ # validate arguments
+ if [ $# -ne 2 ]; then
+ usage_error "replace_conffile_with_symlink_rollback() called with wrong" \
+ "number of arguments; expected 2, got $#"
+ exit $SHELL_LIB_USAGE_ERROR
+ fi
+
+ oldconffile="$1"
+ newconffile="$2"
+
+ remove_conffile_rollback "$_oldconffile"
+ if [ -f "$newconffile" ]; then
+ rm "$newconffile"
+ fi
+}
+
+run () {
+ # syntax: run command [ argument ... ]
+ #
+ # Run specified command with optional arguments and report its exit status.
+ # Useful for commands whose exit status may be nonzero, but still acceptable,
+ # or commands whose failure is not fatal to us.
+ #
+ # NOTE: Do *not* use this function with db_get or db_metaget commands; in
+ # those cases the return value of the debconf command *must* be checked
+ # before the string returned by debconf is used for anything.
+
+ local retval
+
+ # validate arguments
+ if [ $# -lt 1 ]; then
+ usage_error "run() called with wrong number of arguments; expected at" \
+ "least 1, got $#"
+ exit $SHELL_LIB_USAGE_ERROR
+ fi
+
+ "$@" || retval=$?
+
+ if [ ${retval:-0} -ne 0 ]; then
+ observe "command \"$*\" exited with status $retval"
+ fi
+}
+
+make_symlink_sane () {
+ # syntax: make_symlink_sane symlink target
+ #
+ # Ensure that the symbolic link symlink exists, and points to target.
+ #
+ # If symlink does not exist, create it and point it at target.
+ #
+ # If symlink exists but is not a symbolic link, back it up.
+ #
+ # If symlink exists, is a symbolic link, but points to the wrong location, fix
+ # it.
+ #
+ # If symlink exists, is a symbolic link, and already points to target, do
+ # nothing.
+ #
+ # This function wouldn't be needed if ln had an -I, --idempotent option.
+
+ # Validate arguments.
+ if [ $# -ne 2 ]; then
+ usage_error "make_symlink_sane() called with wrong number of arguments;" \
+ "expected 2, got $#"
+ exit $SHELL_LIB_USAGE_ERROR
+ fi
+
+ # We could just use the positional parameters as-is, but that makes things
+ # harder to follow.
+ local symlink target
+
+ symlink="$1"
+ target="$2"
+
+ if [ -L "$symlink" ] && [ "$(readlink "$symlink")" = "$target" ]; then
+ observe "link from $symlink to $target already exists"
+ else
+ observe "creating symbolic link from $symlink to $target"
+ mkdir -p "${target%/*}" "${symlink%/*}"
+ ln -s -b -S ".dpkg-old" "$target" "$symlink"
+ fi
+}
+
+migrate_dir_to_symlink () {
+ # syntax: migrate_dir_to_symlink old_location new_location
+ #
+ # Per Debian Policy section 6.5.4, "A directory will never be replaced by a
+ # symbolic link to a directory or vice versa; instead, the existing state
+ # (symlink or not) will be left alone and dpkg will follow the symlink if
+ # there is one."
+ #
+ # We have to do it ourselves.
+ #
+ # This function moves the contents of old_location, a directory, into
+ # new_location, a directory, then makes old_location a symbolic link to
+ # new_location.
+ #
+ # old_location need not exist, but if it does, it must be a directory (or a
+ # symlink to a directory). If it is not, it is backed up. If new_location
+ # exists already and is not a directory, it is backed up.
+ #
+ # This function should be called from a package's preinst so that other
+ # packages unpacked after this one --- but before this package's postinst runs
+ # --- are unpacked into new_location even if their payloads contain
+ # old_location filespecs.
+
+ # Validate arguments.
+ if [ $# -ne 2 ]; then
+ usage_error "migrate_dir_to_symlink() called with wrong number of"
+ "arguments; expected 2, got $#"
+ exit $SHELL_LIB_USAGE_ERROR
+ fi
+
+ # We could just use the positional parameters as-is, but that makes things
+ # harder to follow.
+ local new old
+
+ old="$1"
+ new="$2"
+
+ # Is old location a symlink?
+ if [ -L "$old" ]; then
+ # Does it already point to new location?
+ if [ "$(readlink "$old")" = "$new" ]; then
+ # Nothing to do; migration has already been done.
+ observe "migration of $old to $new already done"
+ return 0
+ else
+ # Back it up.
+ warn "backing up symbolic link $old as $old.dpkg-old"
+ mv -b "$old" "$old.dpkg-old"
+ fi
+ fi
+
+ # Does old location exist, but is not a directory?
+ if [ -e "$old" ] && ! [ -d "$old" ]; then
+ # Back it up.
+ warn "backing up non-directory $old as $old.dpkg-old"
+ mv -b "$old" "$old.dpkg-old"
+ fi
+
+ observe "migrating $old to $new"
+
+ # Is new location a symlink?
+ if [ -L "$new" ]; then
+ # Does it point the wrong way, i.e., back to where we're migrating from?
+ if [ "$(readlink "$new")" = "$old" ]; then
+ # Get rid of it.
+ observe "removing symbolic link $new which points to $old"
+ rm "$new"
+ else
+ # Back it up.
+ warn "backing up symbolic link $new as $new.dpkg-old"
+ mv -b "$new" "$new.dpkg-old"
+ fi
+ fi
+
+ # Does new location exist, but is not a directory?
+ if [ -e "$new" ] && ! [ -d "$new" ]; then
+ warn "backing up non-directory $new as $new.dpkg-old"
+ mv -b "$new" "$new.dpkg-old"
+ fi
+
+ # Create new directory if it does not yet exist.
+ if ! [ -e "$new" ]; then
+ observe "creating $new"
+ mkdir -p "$new"
+ fi
+
+ # Copy files in old location to new location. Back up any filenames that
+ # already exist in the new location with the extension ".dpkg-old".
+ observe "copying files from $old to $new"
+ if ! (cd "$old" && cp -a -b -S ".dpkg-old" . "$new"); then
+ die "error(s) encountered while copying files from $old to $new"
+ fi
+
+ # Remove files at old location.
+ observe "removing $old"
+ rm -r "$old"
+
+ # Create symlink from old location to new location.
+ make_symlink_sane "$old" "$new"
+}
+
+# vim:set ai et sw=2 ts=2 tw=80:
+
+# GOBSTOPPER: The X Strike Force shell library ends here.
--- xkeyboard-config-1.6.orig/debian/patches/quiltrc
+++ xkeyboard-config-1.6/debian/patches/quiltrc
@@ -0,0 +1,2 @@
+QUILT_PATCHES="debian/patches"
+QUILT_NO_DIFF_TIMESTAMPS=1
--- xkeyboard-config-1.6.orig/debian/patches/series
+++ xkeyboard-config-1.6/debian/patches/series
@@ -0,0 +1 @@
+docs.diff
--- xkeyboard-config-1.6.orig/debian/patches/docs.diff
+++ xkeyboard-config-1.6/debian/patches/docs.diff
@@ -0,0 +1,13 @@
+Index: xkb-data/docs/README.config
+===================================================================
+--- xkb-data.orig/docs/README.config 2008-05-28 14:11:57.000000000 +0200
++++ xkb-data/docs/README.config 2008-05-28 14:12:01.000000000 +0200
+@@ -41,7 +41,7 @@
+ The proper rules file depends on your vendor. In reality, the commonest file
+ of rules is xfree86. For each rules file there is a description file named
+ .lst, for instance xfree86.lst which is located in xkb configu-
+-ration subdirectory rules (for example /etc/X11/xkb/rules).
++ration subdirectory rules (for example /usr/share/X11/xkb/rules).
+
+ 2.1 Basic Configuration
+
--- xkeyboard-config-1.6.orig/docs/iso3166.csv
+++ xkeyboard-config-1.6/docs/iso3166.csv
@@ -0,0 +1,240 @@
+AF,AFGHANISTAN
+AX,"ÅLAND ISLANDS"
+AL,ALBANIA
+DZ,ALGERIA
+AS,"AMERICAN SAMOA"
+AD,ANDORRA
+AO,ANGOLA
+AI,ANGUILLA
+AQ,ANTARCTICA
+AG,"ANTIGUA AND BARBUDA"
+AR,ARGENTINA
+AM,ARMENIA
+AW,ARUBA
+AU,AUSTRALIA
+AT,AUSTRIA
+AZ,AZERBAIJAN
+BS,BAHAMAS
+BH,BAHRAIN
+BD,BANGLADESH
+BB,BARBADOS
+BY,BELARUS
+BE,BELGIUM
+BZ,BELIZE
+BJ,BENIN
+BM,BERMUDA
+BT,BHUTAN
+BO,BOLIVIA
+BA,"BOSNIA AND HERZEGOVINA"
+BW,BOTSWANA
+BV,"BOUVET ISLAND"
+BR,BRAZIL
+IO,"BRITISH INDIAN OCEAN TERRITORY"
+BN,"BRUNEI DARUSSALAM"
+BG,BULGARIA
+BF,"BURKINA FASO"
+BI,BURUNDI
+KH,CAMBODIA
+CM,CAMEROON
+CA,CANADA
+CV,"CAPE VERDE"
+KY,"CAYMAN ISLANDS"
+CF,"CENTRAL AFRICAN REPUBLIC"
+TD,CHAD
+CL,CHILE
+CN,CHINA
+CX,"CHRISTMAS ISLAND"
+CC,"COCOS (KEELING) ISLANDS"
+CO,COLOMBIA
+KM,COMOROS
+CG,CONGO
+CD,"CONGO, THE DEMOCRATIC REPUBLIC OF THE"
+CK,"COOK ISLANDS"
+CR,"COSTA RICA"
+CI,"COTE D'IVOIRE"
+HR,CROATIA
+CU,CUBA
+CY,CYPRUS
+CZ,"CZECH REPUBLIC"
+DK,DENMARK
+DJ,DJIBOUTI
+DM,DOMINICA
+DO,"DOMINICAN REPUBLIC"
+EC,ECUADOR
+EG,EGYPT
+SV,"EL SALVADOR"
+GQ,"EQUATORIAL GUINEA"
+ER,ERITREA
+EE,ESTONIA
+ET,ETHIOPIA
+FK,"FALKLAND ISLANDS (MALVINAS)"
+FO,"FAROE ISLANDS"
+FJ,FIJI
+FI,FINLAND
+FR,FRANCE
+GF,"FRENCH GUIANA"
+PF,"FRENCH POLYNESIA"
+TF,"FRENCH SOUTHERN TERRITORIES"
+GA,GABON
+GM,GAMBIA
+GE,GEORGIA
+DE,GERMANY
+GH,GHANA
+GI,GIBRALTAR
+GR,GREECE
+GL,GREENLAND
+GD,GRENADA
+GP,GUADELOUPE
+GU,GUAM
+GT,GUATEMALA
+GN,GUINEA
+GW,GUINEA-BISSAU
+GY,GUYANA
+HT,HAITI
+HM,"HEARD ISLAND AND MCDONALD ISLANDS"
+VA,"HOLY SEE (VATICAN CITY STATE)"
+HN,HONDURAS
+HK,"HONG KONG"
+HU,HUNGARY
+IS,ICELAND
+IN,INDIA
+ID,INDONESIA
+IR,"IRAN, ISLAMIC REPUBLIC OF"
+IQ,IRAQ
+IE,IRELAND
+IL,ISRAEL
+IT,ITALY
+JM,JAMAICA
+JP,JAPAN
+JO,JORDAN
+KZ,KAZAKHSTAN
+KE,KENYA
+KI,KIRIBATI
+KP,"KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF"
+KR,"KOREA, REPUBLIC OF"
+KW,KUWAIT
+KG,KYRGYZSTAN
+LA,"LAO PEOPLE'S DEMOCRATIC REPUBLIC"
+LV,LATVIA
+LB,LEBANON
+LS,LESOTHO
+LR,LIBERIA
+LY,"LIBYAN ARAB JAMAHIRIYA"
+LI,LIECHTENSTEIN
+LT,LITHUANIA
+LU,LUXEMBOURG
+MO,MACAO
+MK,"MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF"
+MG,MADAGASCAR
+MW,MALAWI
+MY,MALAYSIA
+MV,MALDIVES
+ML,MALI
+MT,MALTA
+MH,"MARSHALL ISLANDS"
+MQ,MARTINIQUE
+MR,MAURITANIA
+MU,MAURITIUS
+YT,MAYOTTE
+MX,MEXICO
+FM,"MICRONESIA, FEDERATED STATES OF"
+MD,"MOLDOVA, REPUBLIC OF"
+MC,MONACO
+MN,MONGOLIA
+MS,MONTSERRAT
+MA,MOROCCO
+MZ,MOZAMBIQUE
+MM,MYANMAR
+NA,NAMIBIA
+NR,NAURU
+NP,NEPAL
+NL,NETHERLANDS
+AN,"NETHERLANDS ANTILLES"
+NC,"NEW CALEDONIA"
+NZ,"NEW ZEALAND"
+NI,NICARAGUA
+NE,NIGER
+NG,NIGERIA
+NU,NIUE
+NF,"NORFOLK ISLAND"
+MP,"NORTHERN MARIANA ISLANDS"
+NO,NORWAY
+OM,OMAN
+PK,PAKISTAN
+PW,PALAU
+PS,"PALESTINIAN TERRITORY, OCCUPIED"
+PA,PANAMA
+PG,"PAPUA NEW GUINEA"
+PY,PARAGUAY
+PE,PERU
+PH,PHILIPPINES
+PN,PITCAIRN
+PL,POLAND
+PT,PORTUGAL
+PR,"PUERTO RICO"
+QA,QATAR
+RE,REUNION
+RO,ROMANIA
+RU,"RUSSIAN FEDERATION"
+RW,RWANDA
+SH,"SAINT HELENA"
+KN,"SAINT KITTS AND NEVIS"
+LC,"SAINT LUCIA"
+PM,"SAINT PIERRE AND MIQUELON"
+VC,"SAINT VINCENT AND THE GRENADINES"
+WS,SAMOA
+SM,"SAN MARINO"
+ST,"SAO TOME AND PRINCIPE"
+SA,"SAUDI ARABIA"
+SN,SENEGAL
+CS,"SERBIA AND MONTENEGRO"
+SC,SEYCHELLES
+SL,"SIERRA LEONE"
+SG,SINGAPORE
+SK,SLOVAKIA
+SI,SLOVENIA
+SB,"SOLOMON ISLANDS"
+SO,SOMALIA
+ZA,"SOUTH AFRICA"
+GS,"SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS"
+ES,SPAIN
+LK,"SRI LANKA"
+SD,SUDAN
+SR,SURINAME
+SJ,"SVALBARD AND JAN MAYEN"
+SZ,SWAZILAND
+SE,SWEDEN
+CH,SWITZERLAND
+SY,"SYRIAN ARAB REPUBLIC"
+TW,"TAIWAN, PROVINCE OF CHINA"
+TJ,TAJIKISTAN
+TZ,"TANZANIA, UNITED REPUBLIC OF"
+TH,THAILAND
+TL,TIMOR-LESTE
+TG,TOGO
+TK,TOKELAU
+TO,TONGA
+TT,"TRINIDAD AND TOBAGO"
+TN,TUNISIA
+TR,TURKEY
+TM,TURKMENISTAN
+TC,"TURKS AND CAICOS ISLANDS"
+TV,TUVALU
+UG,UGANDA
+UA,UKRAINE
+AE,"UNITED ARAB EMIRATES"
+GB,"UNITED KINGDOM"
+US,"UNITED STATES"
+UM,"UNITED STATES MINOR OUTLYING ISLANDS"
+UY,URUGUAY
+UZ,UZBEKISTAN
+VU,VANUATU
+VE,VENEZUELA
+VN,"VIET NAM"
+VG,"VIRGIN ISLANDS, BRITISH"
+VI,"VIRGIN ISLANDS, U.S."
+WF,"WALLIS AND FUTUNA"
+EH,"WESTERN SAHARA"
+YE,YEMEN
+ZM,ZAMBIA
+ZW,ZIMBABWE
--- xkeyboard-config-1.6.orig/docs/iso15924.csv
+++ xkeyboard-config-1.6/docs/iso15924.csv
@@ -0,0 +1,105 @@
+Code,N°,"English Name","Nom français","Property Value Alias",Date
+Arab,160,Arabic,arabe,Arabic,38108
+Armn,230,Armenian,arménien,Armenian,38108
+Bali,360,Balinese,balinais,,38136
+Batk,365,Batak,batak,,38108
+Beng,325,Bengali,bengalî,Bengali,38108
+Blis,550,Blissymbols,"symboles Bliss",,38108
+Bopo,285,Bopomofo,bopomofo,Bopomofo,38108
+Brah,300,Brahmi,brâhmî,,38108
+Brai,570,Braille,braille,Braille,38108
+Bugi,367,Buginese,bouguis,,38108
+Buhd,372,Buhid,bouhide,Buhid,38108
+Cans,440,"Unified Canadian Aboriginal Syllabics","syllabaire autochtone canadien unifié",Canadian_Aboriginal,38136
+Cham,358,Cham,"cham (čam, tcham)",,38108
+Cher,445,Cherokee,tchérokî,Cherokee,38108
+Cirt,291,Cirth,cirth,,38108
+Copt,204,Coptic,copte,,38136
+Cprt,403,Cypriot,"syllabaire chypriote",Cypriot,38108
+Cyrl,220,Cyrillic,cyrillique,Cyrillic,38108
+Cyrs,221,"Cyrillic (Old Church Slavonic variant)","cyrillique (variante slavonne)",,38108
+Deva,315,"Devanagari (Nagari)",dévanâgarî,Devanagari,38108
+Dsrt,250,"Deseret (Mormon)","déseret (mormon)",Deseret,38108
+Egyd,70,"Egyptian demotic","démotique égyptien",,38108
+Egyh,60,"Egyptian hieratic","hiératique égyptien",,38108
+Egyp,50,"Egyptian hieroglyphs","hiéroglyphes égyptiens",,38108
+Ethi,430,"Ethiopic (Ge‘ez)","éthiopique (éthiopien, ge‘ez, guèze)",Ethiopic,38136
+Geor,240,"Georgian (Mkhedruli)","géorgien (mkhédrouli)",Georgian,38136
+Glag,225,Glagolitic,glagolitique,,38108
+Goth,206,Gothic,gotique,Gothic,38108
+Grek,200,Greek,grec,Greek,38108
+Gujr,320,Gujarati,"goudjarâtî (gujrâtî)",Gujarati,38108
+Guru,310,Gurmukhi,gourmoukhî,Gurmukhi,38108
+Hang,286,"Hangul (Hangŭl, Hangeul)","hangûl (hangŭl, hangeul)",Hangul,38136
+Hani,500,"Han (Hanzi, Kanji, Hanja)","idéogrammes han",Han,38108
+Hano,371,"Hanunoo (Hanunóo)",hanounóo,Hanunoo,38136
+Hans,501,"Han (Simplified variant)","idéogrammes han (variante simplifiée)",,38136
+Hant,502,"Han (Traditional variant)","idéogrammes han (variante traditionnelle)",,38136
+Hebr,125,Hebrew,hébreu,Hebrew,38108
+Hira,410,Hiragana,hiragana,Hiragana,38108
+Hmng,450,"Pahawh Hmong","pahawh hmong",,38108
+Hrkt,412,"(alias for Hiragana + Katakana)","(alias pour hiragana + katakana)",Katakana_Or_Hiragana,38108
+Hung,176,"Old Hungarian","ancien hongrois",,38108
+Inds,610,"Indus (Harappan)",indus,,38108
+Ital,210,"Old Italic (Etruscan, Oscan, etc.)","ancien italique (étrusque, osque, etc.)",Old_Italic,38136
+Java,361,Javanese,javanais,,38136
+Kali,357,"Kayah Li","kayah li",,38108
+Kana,411,Katakana,katakana,Katakana,38108
+Khar,305,Kharoshthi,kharochthî,,38136
+Khmr,355,Khmer,khmer,Khmer,38136
+Knda,345,Kannada,"kannara (canara)",Kannada,38136
+Laoo,356,Lao,laotien,Lao,38108
+Latf,217,"Latin (Fraktur variant)","latin (variante brisée)",,38108
+Latg,216,"Latin (Gaelic variant)","latin (variante gaélique)",,38108
+Latn,215,Latin,latin,Latin,38108
+Lepc,335,"Lepcha (Róng)","lepcha (róng)",,38108
+Limb,336,Limbu,limbou,Limbu,38136
+Lina,400,"Linear A","linéaire A",,38108
+Linb,401,"Linear B","linéaire B",Linear_B,38136
+Mand,140,Mandaean,mandéen,,38136
+Maya,90,"Mayan hieroglyphs","hiéroglyphes mayas",,38108
+Mero,100,Meroitic,méroïtique,,38108
+Mlym,347,Malayalam,malayâlam,Malayalam,38108
+Mong,145,Mongolian,mongol,Mongolian,38108
+Mymr,350,"Myanmar (Burmese)",birman,Myanmar,38108
+Ogam,212,Ogham,ogam,Ogham,38108
+Orkh,175,Orkhon,orkhon,,38108
+Orya,327,Oriya,oriyâ,Oriya,38108
+Osma,260,Osmanya,osmanais,Osmanya,38108
+Perm,227,"Old Permic","ancien permien",,38108
+Phag,331,Phags-pa,"’phags pa",,38136
+Phnx,115,Phoenician,phénicien,,38108
+Plrd,282,"Pollard Phonetic","phonétique de Pollard",,38108
+Qaaa,900,"Reserved for private use (start)","réservé à l’usage privé (début)",,38136
+Qabx,949,"Reserved for private use (end)","réservé à l’usage privé (fin)",,38136
+Roro,620,Rongorongo,rongorongo,,38108
+Runr,211,Runic,runique,Runic,38108
+Sara,292,Sarati,sarati,,38136
+Shaw,281,"Shavian (Shaw)","shavien (Shaw)",Shavian,38108
+Sinh,348,Sinhala,singhalais,Sinhala,38108
+Sylo,316,"Syloti Nagri","sylotî nâgrî",,38136
+Syrc,135,Syriac,syriaque,Syriac,38108
+Syre,138,"Syriac (Estrangelo variant)","syriaque (variante estranghélo)",,38108
+Syrj,137,"Syriac (Western variant)","syriaque (variante occidentale)",,38108
+Syrn,136,"Syriac (Eastern variant)","syriaque (variante orientale)",,38108
+Tagb,373,Tagbanwa,tagbanoua,Tagbanwa,38108
+Tale,353,"Tai Le","taï le",Tai_Le,38136
+Talu,354,"Tai Lue","taï lue",,38136
+Taml,346,Tamil,tamoul,Tamil,38108
+Telu,340,Telugu,télougou,Telugu,38108
+Teng,290,Tengwar,tengwar,,38108
+Tfng,120,"Tifinagh (Berber)","tifinagh (berbère)",,38108
+Tglg,370,Tagalog,tagal,Tagalog,38108
+Thaa,170,Thaana,thâna,Thaana,38108
+Thai,352,Thai,thaï,Thai,38108
+Tibt,330,Tibetan,tibétain,Tibetan,38108
+Ugar,40,Ugaritic,ougaritique,Ugaritic,38108
+Vaii,470,Vai,vaï,,38108
+Visp,280,"Visible Speech","parole visible",,38108
+Xpeo,30,"Old Persian","cunéiforme persépolitain",,38108
+Xsux,20,"Cuneiform, Sumero-Akkadian","cunéiforme suméro-akkadien",,38108
+Yiii,460,Yi,yi,Yi,38108
+Zxxx,997,"Code for unwritten languages","codet pour les langues non écrites",,38108
+Zyyy,998,"Code for undetermined script","codet pour écriture indéterminée",Common,38136
+Zzzz,999,"Code for uncoded script","codet pour écriture non codée",,38108
+Code,N°,"English Name","Nom français","Property Value Alias",Date
--- xkeyboard-config-1.6.orig/docs/iso639.csv
+++ xkeyboard-config-1.6/docs/iso639.csv
@@ -0,0 +1,501 @@
+Abkhazian,abkhaze,abk,ab
+Achinese,aceh,ace,
+Acoli,acoli,ach,
+Adangme,adangme,ada,
+"Adygei; Adyghe",adyghé,ady,
+"Adyghe; Adygei",adygh,ady,
+Afar,afar,aar,aa
+Afrihili,afrihili,afh,
+Afrikaans,afrikaans,afr,af
+"Afro-Asiatic (Other)","afro-asiatiques, autres langues",afa,
+Akan,akan,aka,ak
+Akkadian,akkadien,akk,
+Albanian,albanais,alb/sqi,sq
+Aleut,aléoute,ale,
+"Algonquian languages","algonquines, langues",alg,
+"Altaic (Other)","altaïques, autres langues",tut,
+Amharic,amharique,amh,am
+"Apache languages",apache,apa,
+Arabic,arabe,ara,ar
+Aragonese,aragonais,arg,an
+Aramaic,araméen,arc,
+Arapaho,arapaho,arp,
+Araucanian,araucan,arn,
+Arawak,arawak,arw,
+Armenian,arménien,arm/hye,hy
+"Artificial (Other)","artificielles, autres langues",art,
+Assamese,assamais,asm,as
+"Asturian; Bable","asturien; bable",ast,
+"Athapascan languages","athapascanes, langues",ath,
+"Australian languages","australiennes, langues",aus,
+"Austronesian (Other)","malayo-polynésiennes, autres langues",map,
+Avaric,avar,ava,av
+Avestan,avestique,ave,ae
+Awadhi,awadhi,awa,
+Aymara,aymara,aym,ay
+Azerbaijani,azéri,aze,az
+"Bable; Asturian","bable; asturien",ast,
+Balinese,balinais,ban,
+"Baltic (Other)","baltiques, autres langues",bat,
+Baluchi,baloutchi,bal,
+Bambara,bambara,bam,bm
+"Bamileke languages","bamilékés, langues",bai,
+Banda,banda,bad,
+"Bantu (Other)","bantoues, autres langues",bnt,
+Basa,basa,bas,
+Bashkir,bachkir,bak,ba
+Basque,basque,baq/eus,eu
+"Batak (Indonesia)","batak (Indonésie)",btk,
+Beja,bedja,bej,
+Belarusian,biélorusse,bel,be
+Bemba,bemba,bem,
+Bengali,bengali,ben,bn
+"Berber (Other)","berbères, autres langues",ber,
+Bhojpuri,bhojpuri,bho,
+Bihari,bihari,bih,bh
+Bikol,bikol,bik,
+"Bilin; Blin","bilen; blin",byn,
+Bini,bini,bin,
+Bislama,bichlamar,bis,bi
+"Blin; Bilin","blin; bilen",byn,
+"Bokmål, Norwegian; Norwegian Bokmål","bokmål, norvégien; bokmål norvégien",nob,nb
+Bosnian,bosniaque,bos,bs
+Braj,braj,bra,
+Breton,breton,bre,br
+Buginese,bugi,bug,
+Bulgarian,bulgare,bul,bg
+Buriat,bouriate,bua,
+Burmese,birman,bur/mya,my
+Caddo,caddo,cad,
+Carib,caribe,car,
+"Castilian; Spanish","castillan; espagnol",spa,es
+"Catalan; Valencian","catalan; valencien",cat,ca
+"Caucasian (Other)","caucasiennes, autres langues",cau,
+Cebuano,cebuano,ceb,
+"Celtic (Other)","celtiques, autres langues",cel,
+"Central American Indian (Other)","indiennes d'Amérique centrale, autres langues",cai,
+Chagatai,djaghataï,chg,
+"Chamic languages","chames, langues",cmc,
+Chamorro,chamorro,cha,ch
+Chechen,tchétchène,che,ce
+Cherokee,cherokee,chr,
+"Chewa; Chichewa; Nyanja","chewa, chichewa, nyanja",nya,ny
+Cheyenne,cheyenne,chy,
+Chibcha,chibcha,chb,
+"Chichewa; Chewa; Nyanja","chichewa; chewa; nyanja",nya,ny
+Chinese,chinois,chi/zho,zh
+"Chinook jargon","chinook, jargon",chn,
+Chipewyan,chipewyan,chp,
+Choctaw,choctaw,cho,
+"Chuang; Zhuang","chuang; zhuang",zha,za
+"Church Slavic; Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic","slavon d'église; vieux slave; slavon liturgique; vieux bulgare",chu,cu
+"Church Slavonic; Church Slavic; Old Slavonic; Old Bulgarian; Old Church Slavonic","slavon liturgique; slavon d'église; vieux slave; vieux bulgare",chu,cu
+Chuukese,chuuk,chk,
+Chuvash,tchouvache,chv,cv
+"Classical Nepal Bhasa; Classical Newari; Old Newari","newari classique",nwc,
+"Classical Newari; Old Newari; Classical Nepal Bhasa","newari classique",nwc,
+Coptic,copte,cop,
+Cornish,cornique,cor,kw
+Corsican,corse,cos,co
+Cree,cree,cre,cr
+Creek,muskogee,mus,
+"Creoles and pidgins (Other)","créoles et pidgins divers",crp,
+"Creoles and pidgins, English-based (Other)","créoles et pidgins anglais, autres",cpe,
+"Creoles and pidgins, French-based (Other)","créoles et pidgins français, autres",cpf,
+"Creoles and pidgins, Portuguese-based (Other)","créoles et pidgins portugais, autres",cpp,
+"Crimean Tatar; Crimean Turkish","tatar de Crimé",crh,
+"Crimean Turkish; Crimean Tatar","tatar de Crimé",crh,
+Croatian,croate,scr/hrv,hr
+"Cushitic (Other)","couchitiques, autres langues",cus,
+Czech,tchèque,cze/ces,cs
+Dakota,dakota,dak,
+Danish,danois,dan,da
+Dargwa,dargwa,dar,
+Dayak,dayak,day,
+Delaware,delaware,del,
+Dinka,dinka,din,
+Divehi,maldivien,div,dv
+Dogri,dogri,doi,
+Dogrib,dogrib,dgr,
+"Dravidian (Other)","dravidiennes, autres langues",dra,
+Duala,douala,dua,
+"Dutch; Flemish","néerlandais; flamand",dut/nld,nl
+"Dutch, Middle (ca. 1050-1350)","néerlandais moyen (ca. 1050-1350)",dum,
+Dyula,dioula,dyu,
+Dzongkha,dzongkha,dzo,dz
+Efik,efik,efi,
+"Egyptian (Ancient)",égyptien,egy,
+Ekajuk,ekajuk,eka,
+Elamite,élamite,elx,
+English,anglais,eng,en
+"English, Middle (1100-1500)","anglais moyen (1100-1500)",enm,
+"English, Old (ca.450-1100)","anglo-saxon (ca.450-1100)",ang,
+Erzya,erza,myv,
+Esperanto,espéranto,epo,eo
+Estonian,estonien,est,et
+Ewe,éwé,ewe,ee
+Ewondo,éwondo,ewo,
+Fang,fang,fan,
+Fanti,fanti,fat,
+Faroese,féroïen,fao,fo
+Fijian,fidjien,fij,fj
+Finnish,finnois,fin,fi
+"Finno-Ugrian (Other)","finno-ougriennes, autres langues",fiu,
+"Flemish; Dutch","flamand; néerlandais",dut/nld,nl
+Fon,fon,fon,
+French,français,fre/fra,fr
+"French, Middle (ca.1400-1600)","français moyen (1400-1600)",frm,
+"French, Old (842-ca.1400)","français ancien (842-ca.1400)",fro,
+Frisian,frison,fry,fy
+Friulian,frioulan,fur,
+Fulah,peul,ful,ff
+"Gaelic; Scottish Gaelic","gaélique; gaélique écossais",gla,gd
+Gallegan,galicien,glg,gl
+Ganda,ganda,lug,lg
+Gayo,gayo,gay,
+Gbaya,gbaya,gba,
+Geez,guèze,gez,
+Georgian,géorgien,geo/kat,ka
+German,allemand,ger/deu,de
+"German, Low; Saxon, Low; Low German; Low Saxon","allemand, bas; saxon, bas; bas allemand; bas saxon",nds,
+"German, Middle High (ca.1050-1500)","allemand, moyen haut (ca. 1050-1500)",gmh,
+"German, Old High (ca.750-1050)","allemand, vieux haut (ca. 750-1050)",goh,
+"Germanic (Other)","germaniques, autres langues",gem,
+"Gikuyu; Kikuyu",kikuyu,kik,ki
+Gilbertese,kiribati,gil,
+Gondi,gond,gon,
+Gorontalo,gorontalo,gor,
+Gothic,gothique,got,
+Grebo,grebo,grb,
+"Greek, Ancient (to 1453)","grec ancien (jusqu'à 1453)",grc,
+"Greek, Modern (1453-)","grec moderne (après 1453)",gre/ell,el
+"Greenlandic; Kalaallisut",groenlandais,kal,kl
+Guarani,guarani,grn,gn
+Gujarati,goudjrati,guj,gu
+Gwich´in,gwich´in,gwi,
+Haida,haida,hai,
+"Haitian; Haitian Creole","haïtien; créole haïtien",hat,ht
+"Haitian Creole; Haitian","créole haïtien; haïtien",hat,ht
+Hausa,haoussa,hau,ha
+Hawaiian,hawaïen,haw,
+Hebrew,hébreu,heb,he
+Herero,herero,her,hz
+Hiligaynon,hiligaynon,hil,
+Himachali,himachali,him,
+Hindi,hindi,hin,hi
+"Hiri Motu","hiri motu",hmo,ho
+Hittite,hittite,hit,
+Hmong,hmong,hmn,
+Hungarian,hongrois,hun,hu
+Hupa,hupa,hup,
+Icelandic,islandais,ice/isl,is
+Ido,ido,ido,io
+Igbo,igbo,ibo,ig
+Ijo,ijo,ijo,
+Iloko,ilocano,ilo,
+"Inari Sami","sami d'Inari",smn,
+"Indic (Other)","indo-aryennes, autres langues",inc,
+"Indo-European (Other)","indo-européennes, autres langues",ine,
+Indonesian,indonésien,ind,id
+Ingush,ingouche,inh,
+"Interlingua (International Auxiliary Language Association)","interlingua (langue auxiliaire internationale)",ina,ia
+Interlingue,interlingue,ile,ie
+Inuktitut,inuktitut,iku,iu
+Inupiaq,inupiaq,ipk,ik
+"Iranian (Other)","iraniennes, autres langues",ira,
+Irish,irlandais,gle,ga
+"Irish, Middle (900-1200)","irlandais moyen (900-1200)",mga,
+"Irish, Old (to 900)","irlandais ancien (jusqu'à 900)",sga,
+"Iroquoian languages","iroquoises, langues (famille)",iro,
+Italian,italien,ita,it
+Japanese,japonais,jpn,ja
+Javanese,javanais,jav,jv
+Judeo-Arabic,judéo-arabe,jrb,
+Judeo-Persian,judéo-persan,jpr,
+Kabyle,kabyle,kab,
+Kachin,kachin,kac,
+"Kalaallisut; Greenlandic",groenlandais,kal,kl
+Kalmyk,kalmouk,xal,
+Kamba,kamba,kam,
+Kannada,kannada,kan,kn
+Kanuri,kanouri,kau,kr
+Karachay-Balkar,"karatchaï balkar",krc,
+Kara-Kalpak,karakalpak,kaa,
+Karen,karen,kar,
+Kashmiri,kashmiri,kas,ks
+Kashubian,kachoube,csb,
+Kawi,kawi,kaw,
+Kazakh,kazakh,kaz,kk
+Khasi,khasi,kha,
+Khmer,khmer,khm,km
+"Khoisan (Other)","khoisan, autres langues",khi,
+Khotanese,khotanais,kho,
+"Kikuyu; Gikuyu",kikuyu,kik,ki
+Kimbundu,kimbundu,kmb,
+Kinyarwanda,rwanda,kin,rw
+Kirghiz,kirghize,kir,ky
+"Klingon; tlhlngan-Hol",klingon,tlh,
+Komi,komi,kom,kv
+Kongo,kongo,kon,kg
+Konkani,konkani,kok,
+Korean,coréen,kor,ko
+Kosraean,kosrae,kos,
+Kpelle,kpellé,kpe,
+Kru,krou,kro,
+"Kuanyama; Kwanyama","kuanyama; kwanyama",kua,kj
+Kumyk,koumyk,kum,
+Kurdish,kurde,kur,ku
+Kurukh,kurukh,kru,
+Kutenai,kutenai,kut,
+"Kwanyama, Kuanyama","kwanyama; kuanyama",kua,kj
+Ladino,judéo-espagnol,lad,
+Lahnda,lahnda,lah,
+Lamba,lamba,lam,
+Lao,lao,lao,lo
+Latin,latin,lat,la
+Latvian,letton,lav,lv
+"Letzeburgesch; Luxembourgish",luxembourgeois,ltz,lb
+Lezghian,lezghien,lez,
+"Limburgan; Limburger; Limburgish",limbourgeois,lim,li
+"Limburger; Limburgan; Limburgish;",limbourgeois,lim,li
+"Limburgish; Limburger; Limburgan",limbourgeois,lim,li
+Lingala,lingala,lin,ln
+Lithuanian,lituanien,lit,lt
+Lojban,lojban,jbo,
+"Low German; Low Saxon; German, Low; Saxon, Low","bas allemand; bas saxon; allemand, bas; saxon, bas",nds,
+"Low Saxon; Low German; Saxon, Low; German, Low","bas saxon; bas allemand; saxon, bas; allemand, bas",nds,
+"Lower Sorbian",bas-sorabe,dsb,
+Lozi,lozi,loz,
+Luba-Katanga,luba-katanga,lub,lu
+Luba-Lulua,luba-lulua,lua,
+Luiseno,luiseno,lui,
+"Lule Sami","sami de Lule",smj,
+Lunda,lunda,lun,
+"Luo (Kenya and Tanzania)","luo (Kenya et Tanzanie)",luo,
+Lushai,lushai,lus,
+"Luxembourgish; Letzeburgesch",luxembourgeois,ltz,lb
+Macedonian,macédonien,mac/mkd,mk
+Madurese,madourais,mad,
+Magahi,magahi,mag,
+Maithili,maithili,mai,
+Makasar,makassar,mak,
+Malagasy,malgache,mlg,mg
+Malay,malais,may/msa,ms
+Malayalam,malayalam,mal,ml
+Maltese,maltais,mlt,mt
+Manchu,mandchou,mnc,
+Mandar,mandar,mdr,
+Mandingo,mandingue,man,
+Manipuri,manipuri,mni,
+"Manobo languages","manobo, langues",mno,
+Manx,"manx; mannois",glv,gv
+Maori,maori,mao/mri,mi
+Marathi,marathe,mar,mr
+Mari,mari,chm,
+Marshallese,marshall,mah,mh
+Marwari,marvari,mwr,
+Masai,massaï,mas,
+"Mayan languages","maya, langues",myn,
+Mende,mendé,men,
+Micmac,micmac,mic,
+Minangkabau,minangkabau,min,
+"Miscellaneous languages","diverses, langues",mis,
+Mohawk,mohawk,moh,
+Moksha,moksa,mdf,
+Moldavian,moldave,mol,mo
+"Mon-Khmer (Other)","môn-khmer, autres langues",mkh,
+Mongo,mongo,lol,
+Mongolian,mongol,mon,mn
+Mossi,moré,mos,
+"Multiple languages",multilingue,mul,
+"Munda languages","mounda, langues",mun,
+Nahuatl,nahuatl,nah,
+Nauru,nauruan,nau,na
+"Navaho, Navajo",navaho,nav,nv
+"Navajo; Navaho",navaho,nav,nv
+"Ndebele, North","ndébélé du Nord",nde,nd
+"Ndebele, South","ndébélé du Sud",nbl,nr
+Ndonga,ndonga,ndo,ng
+Neapolitan,napolitain,nap,
+"Nepal Bhasa ; Newari","nepal bhasa ; newari",new,
+Nepali,népalais,nep,ne
+"Newari; Nepal Bhasa","newari; nepal bhasa",new,
+Nias,nias,nia,
+"Niger-Kordofanian (Other)","nigéro-congolaises, autres langues",nic,
+"Nilo-Saharan (Other)","nilo-sahariennes, autres langues",ssa,
+Niuean,niué,niu,
+Nogai,"nogaï; nogay",nog,
+"Norse, Old","norrois, vieux",non,
+"North American Indian (Other)","indiennes d'Amérique du Nord, autres langues",nai,
+"Northern Sami","sami du Nord",sme,se
+"North Ndebele","ndébélé du Nord",nde,nd
+Norwegian,norvégien,nor,no
+"Norwegian Bokmål; Bokmål, Norwegian","norvégien bokmål; bokmål, norvégien",nob,nb
+"Norwegian Nynorsk; Nynorsk, Norwegian","norvégien nynorsk; nynorsk, norvégien",nno,nn
+"Nubian languages","nubiennes, langues",nub,
+Nyamwezi,nyamwezi,nym,
+"Nyanja; Chichewa; Chewa","nyanja; chichewa; chewa",nya,ny
+Nyankole,nyankolé,nyn,
+"Nynorsk, Norwegian; Norwegian Nynorsk","nynorsk, norvégien; norvégien nynorsk",nno,nn
+Nyoro,nyoro,nyo,
+Nzima,nzema,nzi,
+"Occitan (post 1500); Provençal","occitan (après 1500); provençal",oci,oc
+Ojibwa,ojibwa,oji,oj
+"Old Bulgarian; Old Slavonic; Church Slavonic; Church Slavic; Old Church Slavonic","vieux bulgare; vieux slave; slavon liturgique; slavon d'église",chu,cu
+"Old Church Slavonic; Old Slavonic; Church Slavonic; Old Bulgarian; Church Slavic","vieux slave; slavon liturgique; vieux bulgare; slavon d'église",chu,cu
+"Old Newari; Classical Newari; Classical Nepal Bhasa","newari classique",nwc,
+"Old Slavonic; Church Slavonic; Old Bulgarian; Church Slavic; Old Church Slavonic","vieux slave; slavon liturgique; vieux bulgare; slavon d'église",chu,cu
+Oriya,oriya,ori,or
+Oromo,galla,orm,om
+Osage,osage,osa,
+"Ossetian; Ossetic",ossète,oss,os
+"Ossetic; Ossetian",ossète,oss,os
+"Otomian languages","otomangue, langues",oto,
+Pahlavi,pahlavi,pal,
+Palauan,palau,pau,
+Pali,pali,pli,pi
+Pampanga,pampangan,pam,
+Pangasinan,pangasinan,pag,
+"Panjabi; Punjabi",pendjabi,pan,pa
+Papiamento,papiamento,pap,
+"Papuan (Other)","papoues, autres langues",paa,
+Persian,persan,per/fas,fa
+"Persian, Old (ca.600-400 B.C.)","perse, vieux (ca. 600-400 av. J.-C.)",peo,
+"Philippine (Other)","philippines, autres langues",phi,
+Phoenician,phénicien,phn,
+Pohnpeian,pohnpei,pon,
+Polish,polonais,pol,pl
+Portuguese,portugais,por,pt
+"Prakrit languages",prâkrit,pra,
+"Provençal; Occitan (post 1500)","provençal; occitan (après 1500)",oci,oc
+"Provençal, Old (to 1500)","provençal ancien (jusqu'à 1500)",pro,
+"Punjabi; Panjabi",pendjabi,pan,pa
+Pushto,pachto,pus,ps
+Rajasthani,rajasthani,raj,
+Rapanui,rapanui,rap,
+Rarotongan,rarotonga,rar,
+"Reserved for local use","réservée à l'usage local",qaa-qtz,
+"Romance (Other)","romanes, autres langues",roa,
+Romanian,roumain,rum/ron,ro
+Romany,tsigane,rom,
+Rundi,rundi,run,rn
+Russian,russe,rus,ru
+"Salishan languages","salish, langues",sal,
+"Samaritan Aramaic",samaritain,sam,
+"Sami languages (Other)","sami, autres langues",smi,
+Samoan,samoan,smo,sm
+Sandawe,sandawe,sad,
+Sango,sango,sag,sg
+Sanskrit,sanskrit,san,sa
+Santali,santal,sat,
+Sardinian,sarde,srd,sc
+Sasak,sasak,sas,
+"Saxon, Low; German, Low; Low Saxon; Low German","saxon, bas; allemand, bas; bas saxon; bas allemand",nds,
+Scots,écossais,sco,
+"Scottish Gaelic; Gaelic","gaélique écossais; gaélique",gla,gd
+Selkup,selkoupe,sel,
+"Semitic (Other)","sémitiques, autres langues",sem,
+Serbian,serbe,scc/srp,sr
+Serer,sérère,srr,
+Shan,chan,shn,
+Shona,shona,sna,sn
+"Sichuan Yi","yi de Sichuan",iii,ii
+Sidamo,sidamo,sid,
+"Sign languages","langues des signes",sgn,
+Siksika,blackfoot,bla,
+Sindhi,sindhi,snd,sd
+Sinhalese,singhalais,sin,si
+"Sino-Tibetan (Other)","sino-tibétaines, autres langues",sit,
+"Siouan languages","sioux, langues",sio,
+"Skolt Sami","sami skolt",sms,
+"Slave (Athapascan)","esclave (athapascan)",den,
+"Slavic (Other)","slaves, autres langues",sla,
+Slovak,slovaque,slo/slk,sk
+Slovenian,slovène,slv,sl
+Sogdian,sogdien,sog,
+Somali,somali,som,so
+Songhai,songhai,son,
+Soninke,soninké,snk,
+"Sorbian languages","sorabes, langues",wen,
+"Sotho, Northern","sotho du Nord",nso,
+"Sotho, Southern","sotho du Sud",sot,st
+"South American Indian (Other)","indiennes d'Amérique du Sud, autres langues",sai,
+"Southern Sami","sami du Sud",sma,
+"South Ndebele","ndébélé du Sud",nbl,nr
+"Spanish; Castilian","espagnol; castillan",spa,es
+Sukuma,sukuma,suk,
+Sumerian,sumérien,sux,
+Sundanese,soundanais,sun,su
+Susu,soussou,sus,
+Swahili,swahili,swa,sw
+Swati,swati,ssw,ss
+Swedish,suédois,swe,sv
+Syriac,syriaque,syr,
+Tagalog,tagalog,tgl,tl
+Tahitian,tahitien,tah,ty
+"Tai (Other)","thaïes, autres langues",tai,
+Tajik,tadjik,tgk,tg
+Tamashek,tamacheq,tmh,
+Tamil,tamoul,tam,ta
+Tatar,tatar,tat,tt
+Telugu,télougou,tel,te
+Tereno,tereno,ter,
+Tetum,tetum,tet,
+Thai,thaï,tha,th
+Tibetan,tibétain,tib/bod,bo
+Tigre,tigré,tig,
+Tigrinya,tigrigna,tir,ti
+Timne,temne,tem,
+Tiv,tiv,tiv,
+"tlhlngan-Hol; Klingon",klingon,tlh,
+Tlingit,tlingit,tli,
+"Tok Pisin","tok pisin",tpi,
+Tokelau,tokelau,tkl,
+"Tonga (Nyasa)","tonga (Nyasa)",tog,
+"Tonga (Tonga Islands)","tongan (Îles Tonga)",ton,to
+Tsimshian,tsimshian,tsi,
+Tsonga,tsonga,tso,ts
+Tswana,tswana,tsn,tn
+Tumbuka,tumbuka,tum,
+"Tupi languages","tupi, langues",tup,
+Turkish,turc,tur,tr
+"Turkish, Ottoman (1500-1928)","turc ottoman (1500-1928)",ota,
+Turkmen,turkmène,tuk,tk
+Tuvalu,tuvalu,tvl,
+Tuvinian,touva,tyv,
+Twi,twi,twi,tw
+Udmurt,oudmourte,udm,
+Ugaritic,ougaritique,uga,
+Uighur,ouïgour,uig,ug
+Ukrainian,ukrainien,ukr,uk
+Umbundu,umbundu,umb,
+Undetermined,indéterminée,und,
+"Upper Sorbian",haut-sorabe,hsb,
+Urdu,ourdou,urd,ur
+Uzbek,ouszbek,uzb,uz
+Vai,vaï,vai,
+"Valencian; Catalan","valencien; catalan",cat,ca
+Venda,venda,ven,ve
+Vietnamese,vietnamien,vie,vi
+Volapük,volapük,vol,vo
+Votic,vote,vot,
+"Wakashan languages","wakashennes, langues",wak,
+Walamo,walamo,wal,
+Walloon,wallon,wln,wa
+Waray,waray,war,
+Washo,washo,was,
+Welsh,gallois,wel/cym,cy
+Wolof,wolof,wol,wo
+Xhosa,xhosa,xho,xh
+Yakut,iakoute,sah,
+Yao,yao,yao,
+Yapese,yapois,yap,
+Yiddish,yiddish,yid,yi
+Yoruba,yoruba,yor,yo
+"Yupik languages","yupik, langues",ypk,
+Zande,zandé,znd,
+Zapotec,zapotèque,zap,
+Zenaga,zenaga,zen,
+"Zhuang; Chuang","zhuang; chuang",zha,za
+Zulu,zoulou,zul,zu
+Zuni,zuni,zun,