#! /bin/bash --
#
# us.pts_magyar.sh: Script to install the pts_magyar layout for X11 (X.Org)
# by pts@fazekas.hu at Sat Jun 12 22:37:08 CEST 2010
#
# This script hash been tested and found working on Ubuntu Karmic and Ubuntu
# Lucid.
if test "$EUID" = 0; then SUDO=; else SUDO=sudo; fi
exec $SUDO bash /dev/stdin "$@" <<'ENDSUDO'
set -ex
perl -pi -0777 -e \
's@^// BEGIN pts_magyar\s.*?\n// END pts_magyar[ \t]*\n@@mgs' \
/usr/share/X11/xkb/symbols/us
cat >>/usr/share/X11/xkb/symbols/us <<'END'
// BEGIN pts_magyar
//
// us.pts_magyar: pts_magyar layout, append to /usr/share/X11/xkb/symbols/us
// by pts@fazekas.hu at Wed Jul 23 21:39:45 CEST 2008
//
// Register on Hardy: sudo bash: echo ' pts_magyar us: pts magyar' >>/usr/share/X11/xkb/rules/xorg.lst
// Test: setxkbmap 'us(pts_magyar),hu'
// Test: setxkbmap 'us(pts_magyar),hu' -print | xkbcomp - $DISPLAY
//
// Register on Ubuntu Karmic:
// (strace -e open -o key.log gnome-keyboard-properties) reports evdev.lst and evdev.xml.
// $ sudo bash: echo ' pts_magyar us: pts magyar' >>/usr/share/X11/xkb/rules/evdev.lst
// ?$ sudo bash: echo ' pts_magyar us: pts magyar' >>/usr/share/X11/xkb/rules/base.lst
// * Add this a bit above euro in /usr/share/X11/xkb/rules/evdev.xml
//
//
// pts_magyar
// pts magyar
//
//
// * ?Ditto for base.xml
// * ?Ditto for xfree86.xml
// * ?Ditto for base.xml
partial alphanumeric_keys modifier_keys
xkb_symbols "pts_magyar" {
name[Group1]= "USA - pts magyar";
key { [ less, greater, iacute, Iacute ] };
key { [ grave, asciitilde, iacute, Iacute ] };
key { [ 1, exclam ] };
key { [ 2, at ] };
key { [ 3, numbersign ] };
key { [ 4, dollar ] };
// 0xA4==degree in EuroSign in biki
key { [ 5, percent, EuroSign, EuroSign ] };
key { [ 6, asciicircum ] };
key { [ 7, ampersand ] };
key { [ 8, asterisk ] };
key { [ 9, parenleft ] };
key { [ 0, parenright, odiaeresis, Odiaeresis ] };
key { [ minus, underscore, udiaeresis, Udiaeresis ] };
key { [ equal, plus, oacute, Oacute ] };
key { [ q, Q, ssharp, ssharp ] };
key { [ w, W ] };
key { [ e, E, adiaeresis, Adiaeresis ] };
key { [ r, R ] };
key { [ t, T ] };
key { [ y, Y, y, Y, y, Y, y, Y, y, Y, y, Y, y, Y ] };
key { [ u, U ] };
key { [ i, I ] };
key { [ o, O ] };
key { [ p, P ] };
key { [ bracketleft, braceleft, odoubleacute, Odoubleacute ] };
key { [ bracketright, braceright, uacute, Uacute ] };
key { [ a, A ] };
key { [ s, S ] };
key { [ d, D ] };
key { [ f, F ] };
key { [ g, G ] };
key { [ h, H ] };
key { [ j, J ] };
key { [ k, K ] };
key { [ l, L ] };
key { [ semicolon, colon, eacute, Eacute ] };
key { [ apostrophe, quotedbl, aacute, Aacute ] };
key { [ backslash, bar, udoubleacute, Udoubleacute ] };
key { [ z, Z, z, Z, z, Z, z, Z, z, Z, z, Z, z, Z ] };
key { [ x, X ] };
key { [ c, C ] };
key { [ v, V ] };
key { [ b, B ] };
key { [ n, N ] };
key { [ m, M ] };
key { [ comma, less, division, division ] };
key { [ period, greater, endash, endash ] };
key { [ slash, question ] };
key { [ Caps_Lock ] };
key { [ KP_Delete, KP_Decimal ] };
include "level3(ralt_switch)"
};
// END pts_magyar
END
# evdev.lst is enough for Ubuntu Lucid.
for F in /usr/share/X11/xkb/rules/{base,evdev,xorg,xfree86}.lst; do
if test -f "$F"; then
perl -pi -e '$_="" if /\bpts_magyar\b/' "$F"
# After /^! variant\n/
perl -pi -0777 -e 's@^( dvorak-intl[ \t]*us: .*)@$1\n pts_magyar us: pts magyar@gm' "$F"
fi
done
# evdev.xml is enough for Ubuntu Lucid.
for F in /usr/share/X11/xkb/rules/{base,evdev,xorg,xfree86}.xml; do
if test -f "$F"; then
perl -pi -0777 -e 's@^[ \t]*\s*\s*pts_magyar.*?[ \t]*@@gsm' "$F"
perl -pi -0777 -e 's@^([ \t]*\s*\s*dvorak-intl.*?)[ \t]*\n@$1\n \n \n pts_magyar\n pts magyar\n \n \n@gsm' "$F"
fi
done
ENDSUDO