--- 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,