From bff94cc1d22f6403ee4d44b217980fa84c10abbd Mon Sep 17 00:00:00 2001 From: ben Date: Mon, 5 May 2008 20:54:54 +0000 Subject: xmodmap2tastenaufkleber von Martin Engel upgedated git-svn-id: https://svn.neo-layout.org@498 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- grafik/xmodmap2tastenaufkleber/README | 93 + grafik/xmodmap2tastenaufkleber/keysymdef.h | 16 +- grafik/xmodmap2tastenaufkleber/svg_kopf | 1847 +++++++++++++++++++- .../xmodmap2tastenaufkleber.sh | 100 +- 4 files changed, 2024 insertions(+), 32 deletions(-) create mode 100644 grafik/xmodmap2tastenaufkleber/README (limited to 'grafik/xmodmap2tastenaufkleber') diff --git a/grafik/xmodmap2tastenaufkleber/README b/grafik/xmodmap2tastenaufkleber/README new file mode 100644 index 0000000..d158a6b --- /dev/null +++ b/grafik/xmodmap2tastenaufkleber/README @@ -0,0 +1,93 @@ +xmodmap2tastenaufkleber.sh +-------------------------- +Autor: Martin Engel +Die Benutzung erfolgt auf eigene Gefahr! +========================== + +Dieses Skript generiert aus einer xmodmap-Datei eine SVG-Datei, die Tastenaufkleber für die Tastaturbelegung Neo¹ erzeugt. +Alternativ gibt es für Neo auch einen Aufsteller, der die Tasten darstellt, und eine Einführung, die die ersten Ebenen über Eselsbrücken einprägt. Beides ist auf der Neo-Seite zu finden. + + +Abhängigkeiten: +--------------- + +awk +sed +bash + + +Anwendung: +---------- + +Man entpacke das Archiv in ein Verzeichnis und wechsele in das Verzeichnis mit der xmodmap2tastenaufkleber.sh-Datei. Zum Erzeugen der SVG-Datei benutze man das folgende Kommando, falls die xmodmap-Datei »neo_de.xmodmap« heißt: + +bash ./xmodmap2tastenaufkleber.sh neo_de.xmodmap + +Bei erfolgreicher Beendigung des Programmes befindet sich danach eine SVG-Datei mit dem Namen der xmodmap-Datei und angehängtem Suffix ».svg«, in unserem Beispiel also »neo_de.xmodmap.svg«, im selbigen Verzeihnis. +Ein Programm, das mit SVG-Dateien umgehen kann ist Inkscape². Mit diesem kann auch in eine PDF-Datei exportiert werden. + +Der Druck erfolgt am besten mit einem Laserdrucker, da dann scharfe Ausdrucke entstehen. Es gibt Papier zu erwerben, das auf der Unterseite schon eine Klebefläche aufweist. Es bietet sich an, darauf eine Lage durchsichtige Klebefolie anzubringen, um Abnutzungserscheinungen zu unterdrücken. +Eine billigere Möglichkeit ist das Ausdrucken auf Normalpapier und Fixierung auf der Taste durch Klebestreifen. Man sollte sich davor vergewissern, wie breit der Kleberstreifen sein muss, damit nacher nichts übersteht. Weil die Tasten meistens eine nach innen weisende Form in waagerechter Richtung aufweisen, bietet es sich an, die Klebestreifen senkrecht anzubringen. Bei normalen Tastaturen sollte man die einzelnen Tasten heraushebeln können, ohne sie zu beschädigen. Das erleichtert die Arbeit (Manchmal unterscheiden sich die Tasten minimal in ihrer Form. So ist darauf zu achten, wo welche Taste genau war). + +Viel Spaß mit Neo! + + +¹: http://www.neo-layout.org +²: http://www.inkscape.org + + + + + + + +Rechtliches: + +Für keysymdef.h: +---------------- + +Copyright 1987, 1994, 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 1987 by Digital Equipment Corporation, Maynard, Massachusetts + +All Rights Reserved + +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 Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL 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. + diff --git a/grafik/xmodmap2tastenaufkleber/keysymdef.h b/grafik/xmodmap2tastenaufkleber/keysymdef.h index 2ccfd07..ab3ad32 100644 --- a/grafik/xmodmap2tastenaufkleber/keysymdef.h +++ b/grafik/xmodmap2tastenaufkleber/keysymdef.h @@ -125,7 +125,7 @@ SOFTWARE. /* International & multi-key character composition */ -#define XK_Multi_key 0xff20 /* Multi-key character compose */ +#define XK_Multi_key 0xff20 /* U+266B BEAMED EIGHTH NOTES Multi-key character compose */ #define XK_Codeinput 0xff37 #define XK_SingleCandidate 0xff3c #define XK_MultipleCandidate 0xff3d @@ -301,12 +301,12 @@ SOFTWARE. /* Modifiers */ -#define XK_Shift_L 0xffe1 /* Left shift */ -#define XK_Shift_R 0xffe2 /* Right shift */ +#define XK_Shift_L 0xffe1 /* U+21E7 UPWARDS WHITE ARROW */ +#define XK_Shift_R 0xffe2 /* U+21E7 UPWARDS WHITE ARROW */ #define XK_Control_L 0xffe3 /* Left control */ #define XK_Control_R 0xffe4 /* Right control */ #define XK_Caps_Lock 0xffe5 /* Caps lock */ -#define XK_Shift_Lock 0xffe6 /* Shift lock */ +#define XK_Shift_Lock 0xffe6 /* U+21E7 UPWARDS WHITE ARROW */ #define XK_Meta_L 0xffe7 /* Left meta */ #define XK_Meta_R 0xffe8 /* Right meta */ @@ -345,7 +345,7 @@ SOFTWARE. #define XK_ISO_Last_Group 0xfe0e #define XK_ISO_Last_Group_Lock 0xfe0f -#define XK_ISO_Left_Tab 0xfe20 +#define XK_ISO_Left_Tab 0xfe20 /* U+21E4 LEFTWARDS ARROW TO BAR */ #define XK_ISO_Move_Line_Up 0xfe21 #define XK_ISO_Move_Line_Down 0xfe22 #define XK_ISO_Partial_Line_Up 0xfe23 @@ -372,7 +372,7 @@ SOFTWARE. #define XK_dead_circumflex 0xfe52 /* U+005E CIRCUMFLEX ACCENT */ #define XK_dead_tilde 0xfe53 /* U+007E TILDE */ #define XK_dead_macron 0xfe54 /* U+02C9 MODIFIER LETTER MACRON */ -#define XK_dead_breve 0xfe55 +#define XK_dead_breve 0xfe55 /* U+0306 COMBINING BREVE */ #define XK_dead_abovedot 0xfe56 /* U+02D9 DOT ABOVE */ #define XK_dead_diaeresis 0xfe57 /* U+00A8 DIAERESIS */ #define XK_dead_abovering 0xfe58 /* U+02DA RING ABOVE */ @@ -383,10 +383,10 @@ SOFTWARE. #define XK_dead_iota 0xfe5d #define XK_dead_voiced_sound 0xfe5e #define XK_dead_semivoiced_sound 0xfe5f -#define XK_dead_belowdot 0xfe60 +#define XK_dead_belowdot 0xfe60 /* U+0323 COMBINING DOT BELOW */ #define XK_dead_hook 0xfe61 #define XK_dead_horn 0xfe62 -#define XK_dead_stroke 0xfe63 +#define XK_dead_stroke 0xfe63 /* U+0335 COMBINING SHORT STROKE OVERLAY */ #define XK_First_Virtual_Screen 0xfed0 #define XK_Prev_Virtual_Screen 0xfed1 diff --git a/grafik/xmodmap2tastenaufkleber/svg_kopf b/grafik/xmodmap2tastenaufkleber/svg_kopf index e560a7e..ef78942 100644 --- a/grafik/xmodmap2tastenaufkleber/svg_kopf +++ b/grafik/xmodmap2tastenaufkleber/svg_kopf @@ -4,10 +4,11 @@ - + + - + @@ -15,3 +16,1845 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mod4 + + Shift + + + + + + a + + e + + a + e + + mod3 + + + Compose + &tab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mod3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mod4 + + Shift + + + + + + a + + e + + a + e + + mod3 + + + Compose + &tab + + + + + + mod3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mod4 + + Shift + + + + + + a + + e + + a + e + + mod3 + + + Compose + &tab + + + + + + mod3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/grafik/xmodmap2tastenaufkleber/xmodmap2tastenaufkleber.sh b/grafik/xmodmap2tastenaufkleber/xmodmap2tastenaufkleber.sh index c624053..2583095 100644 --- a/grafik/xmodmap2tastenaufkleber/xmodmap2tastenaufkleber.sh +++ b/grafik/xmodmap2tastenaufkleber/xmodmap2tastenaufkleber.sh @@ -75,7 +75,6 @@ sed -n -e '/^keycode/p' $1 > ./tmp_$1 - #================================================ # Freistellen der Zeichen; der keycode bleibt als ID für die SVG-Datei vorhanden @@ -90,6 +89,9 @@ ex -s -c '%s/^[^0-9]\+//' -c '%s/=//' -c '%s/ \+/\t/g' -c '%s/\t\+/\t/g' -c "w! cat tmp_$1 | grep -v -E "^(9|51|65|66|94|113|115|116)[^0-9]" > tmp_$1 + + + #================================================ # Parsfreundlicheres Tablayout @@ -99,19 +101,41 @@ ex -s -c '%s/ \+/\t/g' -c '%s/\t\+/\t/g' -c "w! ./tmp_$1" -c 'q!' ./tmp_$1 #================================================ # Aufbereiten der keysymdef.h zum Nachschlagen des Zeichens +#ex -s -c '%s/^[^_]\+//' -c'%s/^_//' -c "w! ./tmp_keysymdef.h" -c 'q!' ./keysymdef.h +#cat ./tmp_keysymdef.h | sed -e '/^$/d' >./tmp_keysymdef.h ex -s -c '%s/^\([^_]\+\)_//' -c "w! ./tmp_keysymdef.h" -c 'q!' ./keysymdef.h -sed -n -e '/U+/p' ./tmp_keysymdef.h > tmptmp +#ex -s -c '%s/^#define XK_//' -c "w! ./tmp_keysymdef.h" -c 'q!' ./keysymdef.h + + +#cat ./tmp_keysymdef.h | sed -e '/^$/d' >./tmp_keysymdef.h +#sed -n -e '/U\+/p' ./tmp_keysymdef.h > tmp_tmp +sed -n -e '/U+/p' ./tmp_keysymdef.h > tmp_tmp -cp tmptmp tmp_keysymdef.h + +#cat ./tmp_keysymdef.h |grep tra +#cat tmp_tmp |grep tra +#exit 1 + +cp tmp_tmp tmp_keysymdef.h #=============================================== # Nachschlagen und Ersetzen von Symbolnamen -while read ZEILE; do +cp ./tmp_$1 ./tmp_analysiert_$1 + +while read -r ZEILE; do + +#debug +echo +echo ==================================================== +echo -e "\033[40;01;37m $ZEILE \033[0m" +echo ---------------------------------------------------- +echo -e "Tastencode ist \033[40;01;34m`echo $ZEILE | cut -d\ -f1`\033[0m ." + for ebene in `seq 2 8`; do @@ -120,6 +144,9 @@ for ebene in `seq 2 8`; do if [ -s ./tmp_symbolistleer ]; then +### #Tastensymbol ist Keypad -> gleiches Symbol wie normal +### ex -s -c "%s/^KP_//" -c 'w! ./tmp_symbolistleer' -c "q!" ./tmp_symbolistleer + Tastensymbol=`cat ./tmp_symbolistleer` cat ./tmp_keysymdef.h | grep "^$Tastensymbol " > ./tmp_keysymdef.h_buchstabenanalyse @@ -129,25 +156,36 @@ for ebene in `seq 2 8`; do if [ -s ./tmp_keysymdef.h_buchstabenanalyse ]; then if ( grep -q -i "U+" ./tmp_keysymdef.h_buchstabenanalyse ); then - echo -n »$Tastensymbol« hat laut keysymdef.h den Unicode U+ ex -s -c '%s/\(.\+\)U+/U+/g' -c '%s/U+\([^ ]\+\).\+/\1/g' -c "w! ./tmp_keysymdef.h_buchstabenanalyse" -c 'q!' ./tmp_keysymdef.h_buchstabenanalyse; if [ -s ./tmp_keysymdef.h_buchstabenanalyse ]; then - cat ./tmp_keysymdef.h_buchstabenanalyse + #cat ./tmp_keysymdef.h_buchstabenanalyse + echo -e "Mit Unicode \033[40;0;32mU+`cat ./tmp_keysymdef.h_buchstabenanalyse`\033[0m ist in keysymdef.h folgender Zeichenname verknüpft: »\033[40;0;32m$Tastensymbol\033[0m«." else - echo "ERROR" + echo -e "\033[40;0;31mERROR: Unicode in Datei keysymdef.h\033[0m" exit 1 fi - ex -s -c "%s/\t`cat ./tmp_symbolistleer`\t/\t\&\#x`cat ./tmp_keysymdef.h_buchstabenanalyse`;\t/g" -c "w! ./tmp_$1" -c 'q!' ./tmp_$1 - ex -s -c "%s/\t`cat ./tmp_symbolistleer`$/\t\&\#x`cat ./tmp_keysymdef.h_buchstabenanalyse`;\t/g" -c "w! ./tmp_$1" -c 'q!' ./tmp_$1 + ex -s -c "%s/\t`cat ./tmp_symbolistleer`\t/\t\&\#x`cat ./tmp_keysymdef.h_buchstabenanalyse`;\t/g" -c "w! ./tmp_analysiert_$1" -c 'q!' ./tmp_analysiert_$1 + ex -s -c "%s/\t`cat ./tmp_symbolistleer`$/\t\&\#x`cat ./tmp_keysymdef.h_buchstabenanalyse`;\t/g" -c "w! ./tmp_analysiert_$1" -c 'q!' ./tmp_analysiert_$1 + +### #Für KP_ gleiche Ersetzung +### + #### ex -s -c "%s/\tKP_`cat ./tmp_symbolistleer`\t/\t\&\#x`cat ./tmp_keysymdef.h_buchstabenanalyse`;\t/g" -c "w! ./tmp_$1" -c 'q!' ./tmp_$1 +### ex -s -c "%s/\tKP_`cat ./tmp_symbolistleer`$/\t\&\#x`cat ./tmp_keysymdef.h_buchstabenanalyse`;\t/g" -c "w! ./tmp_$1" -c 'q!' ./tmp_$1 else - echo »$Tastensymbol« hat in keysymdef.h keinen Unicode gelistet. + echo -e "\033[40;0;31m»$Tastensymbol« hat in keysymdef.h keinen Unicode gelistet. Deswegen wird der Text unmodifiziert übernommen.\033[0m" fi else - echo »$Tastensymbol« ist in keysymdef.h nicht gelistet. + if [ "${Tastensymbol/U[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f ]/Unicodezeichen}" == "Unicodezeichen" ] + then + echo -e "Der Unicode \033[40;0;32m ${Tastensymbol/U/U+} \033[0m aus $1 wird \033[40;0;32m übernommen \033[0m. \033[0m" + else + echo -e "\033[40;01;31m»$Tastensymbol« ist in keysymdef.h nicht gelistet. Tippfehler? Der Text wird unmodifiziert übernommen. \033[0m" + nichtgelistet="$nichtgelistet, »$Tastensymbol«" + fi fi else #Kein Tastensymbol in der aktuellen Ebene @@ -160,6 +198,9 @@ done; done < ./tmp_$1; +cp ./tmp_analysiert_$1 ./tmp_$1 + + #=============================================== # Unicodezeichen im xmodmaplayout für SVG aufbereiten # Alle Daten die mit einem großen U beginen! @@ -193,12 +234,12 @@ echo "transform=\"translate($X_Translation,$Y_Translation)\" x=\"0\" y=\"0\" / echo $ZEILE | awk '{ printf "> ./tmp_svg_$1 echo "transform=\"translate($X_Translation,$Y_Translation)\" >" >> ./tmp_svg_$1 -echo $ZEILE | awk '{print " "$2""}' >> ./tmp_svg_$1 -echo $ZEILE | awk '{print " "$3""}' >> ./tmp_svg_$1 -echo $ZEILE | awk '{print " "$4""}' >> ./tmp_svg_$1 -echo $ZEILE | awk '{print " "$5""}' >> ./tmp_svg_$1 -echo $ZEILE | awk '{print " "$6""}' >> ./tmp_svg_$1 -echo $ZEILE | awk '{print " "$7""}' >> ./tmp_svg_$1 +echo $ZEILE | awk '{print " "$3""}' >> ./tmp_svg_$1 +echo $ZEILE | awk '{print " "$5""}' >> ./tmp_svg_$1 +echo $ZEILE | awk '{print " "$2""}' >> ./tmp_svg_$1 +echo $ZEILE | awk '{print " "$4""}' >> ./tmp_svg_$1 +echo $ZEILE | awk '{print " "$6""}' >> ./tmp_svg_$1 +echo $ZEILE | awk '{print " "$8""}' >> ./tmp_svg_$1 echo "" >> ./tmp_svg_$1 @@ -221,31 +262,46 @@ echo "" >> ./tmp_svg_$1 ex -s -c '%s/&#x;//g' -c "w! ./tmp_svg_$1" -c 'q!' ./tmp_svg_$1 +#====================== +# Fehleranzeige + +if [ -n "$nichtgelistet" ]; then +echo +echo +echo -e "\033[40;01;31mFehlerbericht\033[0m" +echo +echo Folgende Bezeichner wurden nicht in der keysymdef.h gefunden und wurden unabgeändert übernommen: +echo -e "\033[40;01;31m ${nichtgelistet/, /}\033[0m " +echo +echo +fi #======================= # Dateiausgabe +echo + if [ $# -gt 1 ]; then if echo $2 | grep "\.svg$" ; then # svg-datei mit .svg-suffix cp tmp_svg_$1 $2 - echo "Die SVG-Datei $2 wurde angelegt." >&2 + echo -e "Die SVG-Datei \033[40;01;370m$2\033[0m wurde geschrieben." >&2 else # svg-datei ohne .svg-suffix cp tmp_svg_$1 $2.svg - echo "Die SVG-Datei $2.svg wurde angelegt." >&2 + echo -e "Die SVG-Datei \033[40;01;370m$2.svg\033[0m wurde geschrieben." >&2 fi else # keine svg-datei cp tmp_svg_$1 $1.svg - echo "Die SVG-Datei $1.svg wurde angelegt." >&2 + echo -e "Die SVG-Datei \033[40;01;370m$1.svg\033[0m wurde geschrieben." >&2 fi - +echo #======================== # debug -#rm ./tmp_* +rm ./tmp_* -- cgit v1.2.3