root/linux/bin/installiere_neo @ 1375

Revision 1375, 98.5 KB (checked in by pascal, 4 years ago)

Skripte ›neo‹ und ›num‹ aufgenommen

  • Property svn:executable set to *
Line 
1#!/bin/bash
2# Copyright 2008 Pascal Hauck <pascal.hauck@web.de>
3
4# ======= Installation =======
5# Um NEO auf Ihrem System zu (dauerhaft) zu installieren, genügt es, dieses Skript auszuführen
6# z.B. in der Konsole die folgenden beiden Zeilen eingeben:
7# chmod u+x installiere_neo
8# ./installiere_neo
9# Nun ist NEO auf Ihrem System installiert
10# Nach Eingabe von ›. starte_neo‹ oder nach dem nächsten Login ist:
11# ein Wechsel von NEO zu QWERTZ ist jederzeit mit ›uiae‹ leicht möglich und
12# ein Wechsel von QWERTZ zu NEO ist jederzeit mit ›asdf‹ ebenso leicht möglich
13
14# Wenn NEO nicht automatisch nach dem Login gestartet werden soll, genügt es, vor die Zeile
15# asdf                  # mit einem # am Zeilenanfang bleibt QWERTZ das Standardlayout, sonst ist es NEO
16# in der Datei $HOME/.profile ein # zu setzen
17# Alternativ kann das Skript ›installiere_neo‹ ein weiteres mal aufgerufen werden
18# ==============================
19
20
21# ======= Deinstallation =======
22# Um NEO wieder zu deinstallieren, kann das Skript ›installiere_neo‹ ein weiteres Mal aufgerufen werden
23# ==============================
24
25
26# ======= Bemerkungen ==========
27# Dieses Skript ist eine rudimentäre Installation.
28# Es wird immer das Standardverzeichnis $inst_dir verwendet
29# Es gibt keine graphische Installation
30# Dennoch kann dieses Skrip helfen, NEO auf eine einfache Weise zu installieren.
31# Dieses Skript wird mit der Zeit verbessert werden.
32# ==============================
33
34
35# colours in the Bash
36normal="\033[0m"
37red="\033[31m"
38green="\033[32m"
39
40inst_dir=$HOME/neo
41
42# remove the entry in $HOME/.profile
43rmfromprofile()
44{
45        grep -v "^\# NEO:$" $HOME/.profile | grep -v "asdf   \# mit" | grep -v "asdf" > $HOME/profile.neo.tmp
46        rm /$HOME/.profile
47        mv $HOME/profile.neo.tmp $HOME/.profile
48}
49
50# create directories, files and entries
51create()
52{
53        if [ -f $2 ]                                    # if already exists
54        then
55                echo -e "Die Datei ${red}$2${normal} gibt es bereits – soll die bestehende Datei überschrieben werden? \c"; read -p "[J,N] " -e overwrite
56                if [ "$overwrite" = "J" ]       # overwrite?
57                then
58                        echo "Datei $2 wird überschrieben!"
59                        rm -f $2                        # remove if user wants to overwrite
60                else
61                        echo -e "Datei ${red}$2${normal} gibt es schon → Installation abgebrochen"
62                        exit
63                fi
64        fi
65        echo "Erstelle Datei $2"                        # create
66        $1 > $2                                         # call subroutine $1 and write to file $2
67}
68
69## show options if NEO is not installed so far
70install_options()
71{
72        echo "Bislang gibt es kein vollständig konfiguriertes NEO auf Ihrem System"
73        echo
74        echo "Sie haben folgende Möglichkeiten:"
75        echo
76        echo " [1]  NEO nur testen"
77        echo "       Sie haben die Möglichkeit, NEO zu Testen, ihre Standardbelegung (in der Regel QWERTZ) bleibt erhalten"
78        echo
79        echo
80        echo " [2] NEO als Standardbelegung"
81        echo "       Mit dieser Option wird NEO die neue Standardbelegung für diesen Benutzer und nach (nicht vor!) dem"
82        echo "       Login automatisch aktiviert"
83        echo
84        echo
85        echo -e " Wenn ${green}installiere_neo${normal} ein weiteres Mal aufgerufen wird, haben weitere Optionen – z.B. die Deinstallation von NEO"
86        echo
87
88        installoption=""
89        while [ ! $installoption ]                      # choose between QWERTZ or NEO as standard
90        do                                              # switch with ›asdf‹ and ›uiae‹
91                echo
92                read -p "Wählen Sie eine Option [1,2]: " -e installoption
93                case $installoption in
94                2)
95                        echo
96                        echo "Nach dem Login wird NEO die Standardbelegung sein."
97                        echo -e "Um dies zu ändern, kann ${green}installiere_neo${normal} ein weiteres Mal ausgeführt werden."
98                        echo -e ${red}
99                        read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen"
100                        echo -e ${normal}
101                        ;;
102                1)
103                        echo
104                        echo "Das Standardlayout wird nicht verändert."
105                        echo -e "Zu NEO kann man jederzeit mit der Abrollbewegung ${green}asdf${normal} wechseln."
106                        echo -e ${red}
107                        read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen"
108                        echo -e ${normal}
109                        ;;
110                *)
111                        echo
112                        echo "Bitte wählen Sie die Optionen 1, um NEO zu testen oder 2, um NEO zur Standardbelegung zu machen"
113                        installoption=""
114                        ;;
115                esac
116        done
117
118
119        echo
120        echo "Installation von NEO mit xmodmap wird gestartet…"
121        echo
122        echo
123
124# *** main installation process ***
125# creating a directory $inst_dir
126        if [ -d $inst_dir ]
127        then
128                echo -e "Das Verzeichnis ${red}$inst_dir${normal} gibt es bereits – wird verwendet…"
129        else
130                echo -e "Erstelle $inst_dir"
131                mkdir $inst_dir
132        fi
133
134# creating NEO files in $inst_dir
135        create neo_xmodmap $inst_dir/neo_de.xmodmap
136        create neo_console $inst_dir/neo.map
137        create neo_asdf $inst_dir/asdf
138        chmod u+x $inst_dir/asdf
139        create neo_uiae $inst_dir/uiae
140        chmod u+x $inst_dir/uiae
141        create neo_referenz $inst_dir/neo20.txt
142        create neo_neo $inst_dir/neo
143        chmod u+x $inst_dir/neo
144        create neo_num $inst_dir/num
145        chmod u+x $inst_dir/num
146        create neorc $HOME/.neorc
147
148# entry in $HOME/.profile with NEO or QWERTZ as standard keyboard layout after login
149        case $installoption in
150        2)
151                echo
152                echo "Nach dem Login wird NEO die Standardbelegung sein."
153                echo -e "Um dies zu ändern, kann ${green}installiere_neo${normal} ein weiteres Mal ausgeführt werden."
154                rmfromprofile
155                profile_neo >> $HOME/.profile
156                ;;
157        1)
158                echo
159                echo "Das Standardlayout wird nich verändert."
160                rmfromprofile
161                profile_qwertz >> $HOME/.profile
162                ;;
163        esac
164}
165
166# remove files for uninstall option
167remove()
168{
169        echo "Entferne $1"
170        rm $1 || echo -e "${red}Konnte die Datei $1 nicht entfernen!${normal}"
171}
172
173# remove all directories, files and entries made by ›installiere_neo‹
174deinstall()
175{
176        echo
177        echo
178        rmfromprofile
179        remove $HOME/.neorc
180        remove $inst_dir/starte_neo
181        remove $inst_dir/uiae
182        remove $inst_dir/asdf
183        remove $inst_dir/neo.map
184        remove $inst_dir/neo_de.xmodmap
185        echo "Entferne $inst_dir/"
186        rmdir $inst_dir/ || echo -e "${red}Konnte das Verzeichenis $inst_dir/ nicht entfernen!${normal}"
187}
188
189# show options if NEO is already installed
190deinstall_options()
191{
192        echo "Es gibt auf Ihrem System bereits eine Konfiguration für NEO."
193        echo
194        echo "Sollte NEO nur für diesen Benutzer installiert sein, haben folgende Möglichkeiten:"
195        echo
196        echo " [1]  NEO zukünftig nicht mehr als Standardbelegung"
197        echo -e "       NEO wird nicht länger direkt nach dem Login zur Verfügung stehen, wohl aber nach Eingabe von ${green}adsf${normal}."
198        echo
199        echo
200        echo " [2] NEO vollständig vom System entfernen"
201        echo "       Dieso Option entfernt alle zuvor angelegten Verzeichnisse, Datein und Einträge zur NEO-Belegung"
202        echo
203        echo
204        echo -e " Diese Optionen funktionieren nur dann zuverlässig, wenn NEO auch mit ${green}installiere_neo${normal} installiert wurde"
205        echo
206
207        deinstalloption=""
208        while [ ! $deinstalloption ]                                    # choose between deleting NEO as standard layout or delete NEO at all
209        do                                                              # if deleted as standard layout only, ›asdf‹ is still working
210                echo
211                read -p "Wählen Sie eine Option [1,2]: " -e deinstalloption
212                case $deinstalloption in
213                2)
214                        echo
215                        echo -e "Alle zuvor von ${green}installiere_neo${normal} vorgenommen Änderungen am System werden gelöscht!"
216                        echo -e ${red}
217                        read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen"
218                        echo -e ${normal}
219                        cd $inst_dir
220                        ./uiae
221                        deinstall                                       # full deinstallation
222                        echo
223                        echo -e "Alle von ${green}installiere_neo${normal} gemachten Änderungen an Ihrem System wurden entfernt."
224                        ;;
225                1)
226                        echo
227                        echo "NEO wird als Standardbelegung entfernt"
228                        echo -e "Zu NEO kann man weiterhin jederzeit mit der Abrollbewegung ${green}asdf${normal} wechseln."
229                        echo -e ${red}
230                        read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen"
231                        echo -e ${normal}
232                        echo
233                        rmfromprofile                                   # alter the entry in $HOME/.profile; first: remove old entry
234                        profile_qwertz >> $HOME/.profile                # write the new entry
235                        echo
236                        echo "Nach dem nächsten Login wird NEO nicht mehr die Standardbelegung sein. "
237                        ;;
238                *)
239                        echo
240                        echo "Bitte wählen Sie die Optionen 1, um NEO nicht länger als Standardbelegung zu nutzen"
241                        echo " oder 2, um NEO vollständig zu entfernen"
242                        deinstalloption=""
243                        ;;
244                esac
245        done
246}
247
248neo_xmodmap ()
249{
250cat <<NEO_XMODMAP
251!! ~/.xmodmap
252!!
253!! German NEO-Layout
254!! adopted 2004 by Hanno Behrens <Hanno.Behrens@gmx.de>
255!! inspired by Dvorak/de-ergo  http://www.goebel-consult.de/de-ergo/
256!! Authors:
257!!      Benjamin Kellermann <Benjamin dot Kellermann at gmx dot Germany>
258!!      Erik Streb <mail at erikstreb dot de>
259!!      Pascal Hauck <pascal dot hauck at web dot de>
260!!
261!! Other Questions:
262!!      <mailinglist at neo-layout dot org>
263!!
264!! \$Revision: 1293 \$, \$Date: 2008-12-19 09:39:48 +0100 (Fr, 19 Dez 2008) \$
265!! http://pebbles.schattenlauf.de/layout.php
266!!
267!! To try the layout in this file, simply do xmodmap <file>.
268!! To load the layout in this file at X startup, simply store it as
269!! ~/.xmodmap
270
271
272!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
273! Ebenen
274!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
275! Ebene 1: normal
276! Ebene 2: Shift
277! Ebene 3: Mod3
278! Ebene 4: Mod4 (zum Markieren Shift+Mod4)
279! Ebene 5: Shift+Mod3
280! Ebene 6: Mod3+Mod4 (in dieser Reihenfolge!)
281! Ebene 7: wird (bis auf technisch bedingte Ausnahmen) nicht belegt
282! Multi_key=Compose (keine eigene Ebene): Mod3+Tab or right window key
283! Feststellen/Shift_Lock: Shift+Shift
284! Mod4_Lock: Mod4(rechts)+Mod4(links)
285
286! Reihenfolge der Ebenen in der Xmodmap:
287!            Ebene1  Ebene2  Ebene3  Ebene5  Ebene4  Ebene4+Sh  Ebene6 Ebene7
288
289
290!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
291! Modifier definition
292!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
293clear Lock
294clear Mod2
295! Mod2 war NumLock !
296clear Mod3
297clear Mod5
298
299!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
300! Shift
301!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
302! 50=left 62=right
303! Shift+Shift ergibt ein ShiftLock (wie Caps, wirkt aber auf alle Zeichen, nicht nur auf Großbuchstaben)
304! Der Lock lässt sich durch ein weiteres Shift lösen.
305! Eigentlich (siehe Referenz) sollte hier ein CapsLock stehen.
306keycode 50 =  Shift_L Shift_Lock
307keycode 62 =  Shift_R Shift_Lock
308
309!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
310! Mod3
311!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
312! 66=left 51=right
313! Make CapsLock an modifier called Mod3 (similar to AltGr) (Mode_switch or ISO_Group_Shift is for 3rd and 4th level)
314! Make former CapsLock and qwertz-# to Mode_switch or ISO_Group_Shift
315! Mod3(links) (=Qwertz-Caps) erlaubt nur 4 Ebenen
316! Ohne einen Eintrag in der zweiten Gruppe (=Ebene 3) ergäbe Mod3+Mod3=Group_Shift+Group_Shift=Gruppe 3=Ebene 6. Das ist nicht gewünscht.
317keycode 66 =  ISO_Group_Shift ISO_Group_Shift ISO_First_Group  NoSymbol
318keycode 51 =  ISO_Group_Shift ISO_Group_Shift ISO_First_Group  NoSymbol
319
320!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
321! Mod4
322!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
323! 94=left 113=right
324! Make the former AltGr and qwertz-< to Mod4 (ISO_Level3_Shift)
325! Mod4(rechts)+Mod4(links) lässt Mod4 einrasten (Mod4Lock)
326! das funktioniert nur in dieser Reihenfolge, da Mod4(rechts) (=Qwertz-AltGr) nur 4 Ebenen hat
327! Der Lock lässt sich durch ein weiteres Mod4 lösen.
328keysym less = ISO_Level3_Shift  ISO_Level3_Shift  ISO_Group_Shift   ISO_Group_Shift  ISO_Level3_Lock  NoSymbol
329keysym ISO_Level3_Shift = ISO_Level3_Shift  ISO_Level3_Shift  ISO_Group_Shift   ISO_Group_Shift  ISO_Level3_Lock  NoSymbol
330
331!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
332! window keys
333!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
334! keysym Super_L = Super_L
335! keycode 116 = Super_R
336keysym Super_R = Multi_key Multi_key
337! add Mod4 = Super_L
338
339!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
340! general Lock
341!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
342! Einrasten über linke Win-Taste+Modifier, Lösen über nochmaliges Betätigen des Modifiers
343! Shift_Lock und Mo4_Lock funktionieren, Mod3_Lock lässt sich aber nicht mehr lösen!!!!
344! keycode 115 = ISO_Lock  NoSymbol
345! add Lock = ISO_Lock
346
347
348! add Mod3 = ISO_Group_Shift
349! add Mod5 = ISO_Level3_Shift
350
351
352
353!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
354! main keyboard
355!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
356
357!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
358! Tab key
359!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
360keycode 23 = Tab  ISO_Left_Tab  Multi_key  ISO_Level3_Lock
361
362!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
363! Space key
364!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
365keycode 65 = space  space  space  nobreakspace  KP_0  KP_0  U202F  NoSymbol
366
367!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
368! dead keys
369!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
370!            Ebene1             Ebene2          Ebene3          Ebene5          Ebene4          Ebene4+Sh       Ebene6          Ebene7
371
372keycode 49 = dead_circumflex    dead_tilde      dead_abovering  dead_breve      dead_caron  Pointer_EnableKeys  dead_macron     NoSymbol
373! called T1     ˆ               ˜               ˚               ˘               ˇ          (keypad-mouse mode)  ¯
374keycode 21 = dead_grave         NoSymbol        dead_diaeresis  U1FFE           NoSymbol        NoSymbol        NoSymbol        NoSymbol
375! called T2     \`                              ¨               ῾ dasia (asper)
376keycode 35 = dead_acute         dead_cedilla    dead_stroke     U1FBF        dead_doubleacute   NoSymbol        dead_abovedot   NoSymbol
377! called T3     ´               ¸               /               ᾿ psili (lenis) ˝                               ˙
378
379
380
381!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
382! The first row (number Row)
383!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
384!            Ebene1             Ebene2          Ebene3          Ebene5          Ebene4          Ebene4+Sh       Ebene6          Ebene7
385
386keycode 10 =    1               degree          onesuperior     onesubscript    ordfeminine     NoSymbol        notsign         NoSymbol
387!                               °               ¹               ₁               ª                               ¬
388keycode 11 =    2               section         twosuperior     twosubscript    masculine       NoSymbol        logicalor       NoSymbol
389!                               §               ²               ₂               º                               ∨
390keycode 12 =    3               U2113           threesuperior   threesubscript  numerosign      NoSymbol        logicaland      NoSymbol
391!                               ℓ liter         ³               ₃               №                               ∧
392keycode 13 =    4               guillemotright  U203A           dagger          Prior           Prior           downtack        NoSymbol
393!                               »               ›               †                                               ⊥ perpendicular
394keycode 14 =    5               guillemotleft   U2039           femalesymbol    periodcentered  NoSymbol        U2221           NoSymbol
395!                               «               ‹               ♀               ·                               ∡ angle sign
396keycode 15 =    6               EuroSign        cent            malesymbol      sterling        NoSymbol        U2225           NoSymbol
397!                               €               ¢               ♂               £                               ∥ parallel
398
399keycode 16 =    7               dollar          yen             Greek_kappa     currency        NoSymbol        rightarrow      NoSymbol
400!                               \$              ¥               κ               ¤                               →
401keycode 17 =    8   doublelowquotemark    singlelowquotemark  leftanglebracket  NoSymbol        NoSymbol        infinity        NoSymbol
402!                               „               ‚               ⟨ (bra)                                         ∞
403keycode 18 =    9   leftdoublequotemark   leftsinglequotemark rightanglebracket KP_Divide       KP_Divide       containsas      NoSymbol
404!                               “               ‘               ⟩ (ket)         /               /               ∋
405keycode 19 =    0   rightdoublequotemark  rightsinglequotemark  zerosubscript   KP_Multiply     KP_Multiply     emptyset        NoSymbol
406!                       ”                       ’               ₀               *               *               ∅
407keycode 20 = minus              emdash          NoSymbol        U2011           KP_Subtract     KP_Subtract     hyphen          NoSymbol
408!               -               —                               ‑ non-breaking  -               -               ­ soft hyphen
409
410!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
411! The upper row
412!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
413!            Ebene1             Ebene2          Ebene3          Ebene5          Ebene4          Ebene4+Sh       Ebene6          Ebene7
414
415keycode 24 =    x               X               ellipsis        Greek_xi        U22EE           NoSymbol        Greek_XI        Greek_XI
416!                                               …               ξ               ⋮                               Ξ               Ξ
417keycode 25 =    v               V               underscore      NoSymbol        BackSpace       BackSpace       U2259           NoSymbol
418!                                               _                                                               ≙               ≙
419keycode 26 =    l               L               bracketleft     Greek_lambda    Up              Up              Greek_LAMBDA    Greek_LAMBDA
420!                                               [               λ                                               Λ               Λ
421keycode 27 =    c               C               bracketright    Greek_chi       Delete          Delete          U2102           NoSymbol
422!                                               ]               χ                                               ℂ komplex
423keycode 28 =    w               W               asciicircum     Greek_omega     Insert          Insert          Greek_OMEGA     Greek_OMEGA
424!                                               ^               ω                                               Ω               Ω
425
426keycode 29 =    k               K               exclam          U03F0           exclamdown      NoSymbol        radical         NoSymbol
427!                                               !               ϰ Greek_kappa   ¡                               √
428keycode 30 =    h               H               less            Greek_psi       KP_7            KP_7            Greek_PSI       Greek_PSI
429!                                               <               ψ                                               Ψ               Ψ
430keycode 31 =    g               G               greater         Greek_gamma     KP_8            KP_8            Greek_GAMMA     Greek_GAMMA
431!                                               >               γ                                               Γ               Γ
432keycode 32 =    f               F               equal           Greek_phi       KP_9            KP_9            Greek_PHI       Greek_PHI
433!                                               =               φ                                               Φ               Φ
434keycode 33 =    q               Q               ampersand       U03D5           KP_Add          KP_Add          U211A           NoSymbol
435!                                               &               ϕ Greek_phi     +               +               ℚ rational
436keycode 34 = ssharp             U1E9E           U017F    Greek_finalsmallsigma  NoSymbol        NoSymbol        jot             NoSymbol
437!               ß               ẞ Capital ß     ſ long s        ς                                               ∘ ring operator
438
439!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
440! The home row (middle row)
441!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
442!            Ebene1             Ebene2          Ebene3          Ebene5          Ebene4          Ebene4+Sh       Ebene6          Ebene7
443
444keycode 38 =    u               U               backslash       NoSymbol        Home            Home            U222E           NoSymbol
445!                                               \                                                               ∮ contour integral
446keycode 39 =    i               I               slash           Greek_iota      Left            Left            integral        NoSymbol
447!                                               /               ι                                               ∫
448keycode 40 =    a               A               braceleft       Greek_alpha     Down            Down            U2200           NoSymbol
449!                                               {               α                                               ∀ for all
450keycode 41 =    e               E               braceright      Greek_epsilon   Right           Right           U2203           NoSymbol
451!                                               }               ε                                               ∃ there exists
452keycode 42 =    o               O               asterisk        Greek_omicron   End             End             elementof       NoSymbol
453!                                               *               ο                                               ∈
454
455keycode 43 =    s               S               question        Greek_sigma     questiondown    NoSymbol        Greek_SIGMA     Greek_SIGMA
456!                                               ?               σ               ¿                               Σ               Σ
457keycode 44 =    n               N               parenleft       Greek_nu        KP_4            KP_4            U2115           NoSymbol
458!                                               (               ν                                               ℕ natural
459keycode 45 =    r               R               parenright      U03F1           KP_5            KP_5            U211D           NoSymbol
460!                                               )               ϱ Greek_rho                                     ℝ real
461keycode 46 =    t               T               minus           Greek_tau       KP_6            KP_6            partialderivative
462!                                               -               τ                                               ∂
463keycode 47 =    d               D               colon           Greek_delta     KP_Separator    NoSymbol        Greek_DELTA     Greek_DELTA
464!                                               :               δ               ,/.                             Δ               Δ
465keycode 48 =    y               Y               at              Greek_upsilon   KP_Decimal      NoSymbol        nabla           NoSymbol
466!                                               @               υ               ./,                             ∇
467
468!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
469! The lower row
470!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
471!            Ebene1             Ebene2          Ebene3          Ebene5          Ebene4          Ebene4+Sh       Ebene6          Ebene7
472
473keycode 52 = udiaeresis         Udiaeresis      numbersign      NoSymbol        Escape          Escape          U211C           NoSymbol
474!               ü               Ü               #                                                               ℜ real part
475keycode 53 = odiaeresis         Odiaeresis      dollar          NoSymbol        Tab             ISO_Left_Tab    U2111           NoSymbol
476!               ö               Ö               \$                                                              ℑ imaginary part
477keycode 54 = adiaeresis         Adiaeresis      bar             Greek_eta       Next            Next            U2135           NoSymbol
478!               ä               Ä               |               η                                               ℵ alef symbol
479keycode 55 =    p               P               asciitilde      Greek_pi        Return          Return          Greek_PI        Greek_PI
480!                                               ~               π                                               Π               Π
481keycode 56 =    z               Z               grave           Greek_zeta      Undo            Redo            U2124           NoSymbol
482!                                               \`              ζ                                               ℤ integers
483
484keycode 57 =    b               B               plus            Greek_beta      colon           NoSymbol        U21D0           NoSymbol
485!                                               +               β               :                               ⇐
486keycode 58 =    m               M               percent         Greek_mu        KP_1            KP_1            ifonlyif        NoSymbol
487!                                               %               μ                                               ⇔
488keycode 59 = comma              endash          quotedbl        Greek_rho       KP_2            KP_2            U21D2           NoSymbol
489!               ,               –               "               ρ                                               ⇒ implies
490keycode 60 = period        enfilledcircbullet   apostrophe      U03D1           KP_3            KP_3            Greek_THETA     Greek_THETA
491!               .               •               '               ϑ Greek_theta                                   Θ
492keycode 61 =    j               J               semicolon       Greek_theta     semicolon       NoSymbol        variation       NoSymbol
493!                                               ;               θ               ;                               ∝ proportional to
494
495
496
497!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
498! Keypad
499!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
500!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
501! The uppest row
502!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
503!            Ebene1             Ebene2          Ebene3          Ebene5          Ebene6          Ebene7
504
505keycode 77  = Tab               ISO_Left_Tab    equal           approxeq        identical       NoSymbol
506!                                               =               ≈ almost equal  ≡ identical to
507keysym KP_Divide = KP_Divide    KP_Divide       division        U2300           U2223           NoSymbol
508!               /               /               ÷               ⌀ diameter      ∣ divides
509keycode 63  = KP_Multiply       KP_Multiply     U22C5           U2299           U2297           NoSymbol
510!               *               *               ⋅ dot           ⊙ cirled dot    ⊗ circled times
511keycode 82  = KP_Subtract       KP_Subtract     U2212           U2296           U2238           NoSymbol
512!               -               -               − real minus    ⊖ cirled minus  ∸ dot minus
513
514!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
515! The upper row
516!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
517!            Ebene1             Ebene2          Ebene3          Ebene5          Ebene6          Ebene7
518
519keycode 79 =  KP_7              U2714           U2195           U226A           upstile         NoSymbol
520!                               ✔ check mark    ↕ arrow         ≪ much less     ⌈
521keycode 80 =  KP_8              U2718           uparrow         intersection    U22C2           NoSymbol
522!                               ✘ ballot x      ↑               ∩               ⋂ n-ary intersection
523keycode 81 =  KP_9              NoSymbol        U20D7           U226B           U2309           NoSymbol
524!                                               vector          ≫ much greater  ⌉
525keycode 86 =  KP_Add            KP_Add          plusminus       U2295           U2214           NoSymbol
526!               +               +               ±               circled plus    dot plus
527
528!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
529! The middle row
530!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
531!            Ebene1             Ebene2          Ebene3          Ebene5          Ebene6          Ebene7
532
533keycode 83 =  KP_4              club            leftarrow       includedin      U2286           NoSymbol
534!                               ♣               ←               ⊂               ⊆
535keycode 84 =  KP_5              EuroSign        brokenbar       U22B6           U22B7           NoSymbol
536!                               €               ¦               ⊶ original of   ⊷ image of
537keycode 85 =  KP_6              U2023           rightarrow      includes        U2287           NoSymbol
538!                               ‣               →               ⊃               ⊇
539
540!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
541! The lower row
542!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
543!            Ebene1             Ebene2          Ebene3          Ebene5          Ebene6          Ebene7
544
545keycode 87 =  KP_1              diamond         U2194           lessthanequal   downstile       NoSymbol
546!                               ♦               ↔ arrow         ≤               ⌊
547keycode 88 =  KP_2              heart           downarrow       union           U22C3           NoSymbol
548!                               ♥               ↓               ∪               ⋃ n-ary union
549keycode 89 =  KP_3              U2660           U21CC         greaterthanequal  U230B           NoSymbol
550!                               ♠               ⇌               ≥               ⌋
551! keycode 108 = KP_Enter        KP_Enter        KP_Enter        KP_Enter        KP_Enter        KP_Enter
552!                                                               
553
554
555!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
556! The lowest row
557!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
558!            Ebene1             Ebene2          Ebene3          Ebene5          Ebene6          Ebene7
559
560keycode 90 = KP_0               U2423           percent         U2030           U25A1           NoSymbol
561!                               ␣ space sign    %               ‰ per mille     □ white square
562keycode 91 = comma              period          KP_Separator    minutes         seconds         NoSymbol
563!               ,               .               ,/.             ′ min,feets     ″ sec,inches
564
565
566
567
568!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
569! Bemerkungen
570!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
571! 1.) Ebene 6 (hier: der 7. Eintrag) erreicht man über ISO_Group_Shift+ISO_Group_Shift
572!     (bzw. mode_switch+mode_switch) und über keine andere mir bekannte Kombination. Insbesondere legt
573!     ISO_Level3_Shift Level3 (Ebene 4, hier: Eintrag 5) fest, verschiebt also nicht. Darum kann man
574!     ISO_Level3_Shift nur mit Shift sinnvoll kombinieren. Daraus resultiert, dass Ebene 6 nur über
575!     Mod3+Mod4 (in dieser Reihenfolge!) erreicht werden kann.
576!
577! 2.) Die KP_-Einträge ermöglichen die Steuerung des Mauscursors mit der Tastatur.
578!     Hierzu wird mittels Mod4+ß dieser Betriebsmodus ein- und später wieder ausgeschaltet.
579!     Die Steuerung des Cursors kann über den Ziffernblock (Ebene 4, eventuell mit
580!     eingerastetem Mod4) erfolgen.
581NEO_XMODMAP
582}
583
584neo_console ()
585{
586cat <<NEO_CONSOLE
587! neo.map - german NEO keyboard layout
588! 2008 Pascal Hauck, <pascal.hauck@web.de>
589!
590! Diese Datei ist experimentell!
591! Sollten Fehler auftreten oder sich verschiedene Linux-Distributionen
592! anders verhalten als erwartet, sollte dies auf der Mailingliste
593! der NEO-Tastaturbelegung gemeldet werden.
594!
595! Diese Keymap wird über einige Skripte automatisch aus der neo_de.xmodmap
596! erzeugt.
597!
598
599keymaps 0-18
600strings as usual
601compose as usual
602! --------------------------------------------------------------------------
603! Modifier definitions
604! --------------------------------------------------------------------------
605                   keycode  42 = Shift           
606#          shift   keycode  42 = Caps_Lock       
607                   keycode  54 = Shift           
608#          shift   keycode  54 = Caps_Lock       
609                   keycode  58 = AltGr           
610#          altgr   keycode  58 = AltGr_Lock     
611                   keycode  43 = AltGr           
612#          altgr   keycode  43 = AltGr_Lock     
613                   keycode  86 = ShiftL         
614#          shiftl  keycode  86 = ShiftL_Lock     
615                   keycode 100 = ShiftL         
616#          shiftl  keycode 100 = ShiftL_Lock     
617
618                   keycode   1 = Escape           Escape          Escape          Escape         
619           shiftl  keycode  57 = Escape           
620   shift   shiftl  keycode  57 = Escape           
621   altgr   shiftl  keycode  57 = Escape           
622           alt     keycode   1 = Meta_Escape     
623   shift   altgr   keycode   1 = Meta_Escape     
624
625! --------------------------------------------------------------------------
626! function keys
627! --------------------------------------------------------------------------
628! ----Backspace-------------------------------------------------------------
629                   keycode  14 = Delete           Delete         
630           alt     keycode  14 = Meta_Delete     
631   shift   alt     keycode  14 = Meta_Delete     
632! ----Return Enter----------------------------------------------------------
633                   keycode  28 = Return         
634           alt     keycode  28 = Meta_Control_m 
635                   keycode  96 = KP_Enter       
636           altgr   keycode  96 = Hex_F           
637! ----Tab-------------------------------------------------------------------
638                   keycode  15 = Tab              Meta_Tab       
639           alt     keycode  15 = Meta_Tab       
640           altgr   keycode  15 = Compose
641! ----Control Alt-----------------------------------------------------------
642                   keycode  29 = Control         
643                   keycode  97 = Control         
644                   keycode  56 = Alt             
645! ----Prt SclLk Pause-------------------------------------------------------
646                   keycode  99 =
647           control keycode  99 = Control_backslash
648           alt     keycode  99 = Control_backslash
649   control alt     keycode  99 = Meta_Control_backslash
650                   keycode  70 = Scroll_Lock      Show_Memory      Show_Registers   Show_State     
651           alt     keycode  70 = Scroll_Lock     
652                   keycode 119 = Pause           
653! ----Home block------------------------------------------------------------
654                   keycode 102 = Find           
655                   keycode 104 = Prior           
656           shift   keycode 104 = Scroll_Backward
657                   keycode 107 = Select         
658                   keycode 109 = Next           
659           shift   keycode 109 = Scroll_Forward 
660                   keycode 111 = Remove         
661   altgr   control keycode 111 = Boot           
662   control alt     keycode 111 = Boot           
663                   keycode 110 = Insert         
664! ----Navigation block------------------------------------------------------
665                   keycode 103 = Up             
666           alt     keycode 103 = KeyboardSignal 
667                   keycode 105 = Left           
668           alt     keycode 105 = Decr_Console   
669                   keycode 106 = Right           
670           alt     keycode 106 = Incr_Console   
671                   keycode 108 = Down           
672! ----Win keys--------------------------------------------------------------
673                   keycode 125 = Decr_Console    Last_Console      Incr_Console     
674                   keycode 126 = Incr_Console    Last_Console      Decr_Console     
675! ----menue key-------------------------------------------------------------
676                   keycode 127 = Compose         F100
677! ----F-keys----------------------------------------------------------------
678                   keycode  59 = F1               F13              Console_13       F25             
679           alt     keycode  59 = Console_1       
680   control alt     keycode  59 = Console_1       
681                   keycode  60 = F2               F14              Console_14       F26             
682           alt     keycode  60 = Console_2       
683   control alt     keycode  60 = Console_2       
684                   keycode  61 = F3               F15              Console_15       F27             
685           alt     keycode  61 = Console_3       
686   control alt     keycode  61 = Console_3       
687                   keycode  62 = F4               F16              Console_16       F28             
688           alt     keycode  62 = Console_4       
689   control alt     keycode  62 = Console_4       
690                   keycode  63 = F5               F17              Console_17       F29             
691           alt     keycode  63 = Console_5       
692   control alt     keycode  63 = Console_5       
693                   keycode  64 = F6               F18              Console_18       F30             
694           alt     keycode  64 = Console_6       
695   control alt     keycode  64 = Console_6       
696                   keycode  65 = F7               F19              Console_19       F31             
697           alt     keycode  65 = Console_7       
698   control alt     keycode  65 = Console_7       
699                   keycode  66 = F8               F20              Console_20       F32             
700           alt     keycode  66 = Console_8       
701   control alt     keycode  66 = Console_8       
702                   keycode  67 = F9               F21              Console_21       F33             
703           alt     keycode  67 = Console_9       
704   control alt     keycode  67 = Console_9       
705                   keycode  68 = F10              F22              Console_22       F34             
706           alt     keycode  68 = Console_10     
707   control alt     keycode  68 = Console_10     
708                   keycode  87 = F11              F23              Console_23       F35             
709           alt     keycode  87 = Console_11     
710   control alt     keycode  87 = Console_11     
711                   keycode  88 = F12              F24              Console_24       F36             
712           alt     keycode  88 = Console_12     
713   control alt     keycode  88 = Console_12     
714! ----unknown keys from defkeymap.map---------------------------------------
715                   keycode  84 = Last_Console   
716                   keycode  89 =
717                   keycode  90 =
718                   keycode  91 =
719                   keycode  92 =
720                   keycode  93 =
721                   keycode  94 =
722                   keycode  95 =
723                   keycode 101 = Break           
724                   keycode 112 = Macro           
725   altgr   control keycode 112 = VoidSymbol     
726   shift   alt     keycode 112 = VoidSymbol     
727   altgr   alt     keycode 112 = VoidSymbol     
728                   keycode 113 = F13             
729   altgr   control keycode 113 = VoidSymbol     
730   shift   alt     keycode 113 = VoidSymbol     
731   altgr   alt     keycode 113 = VoidSymbol     
732                   keycode 114 = F14             
733   altgr   control keycode 114 = VoidSymbol     
734   shift   alt     keycode 114 = VoidSymbol     
735   altgr   alt     keycode 114 = VoidSymbol     
736                   keycode 115 = Help           
737   altgr   control keycode 115 = VoidSymbol     
738   shift   alt     keycode 115 = VoidSymbol     
739   altgr   alt     keycode 115 = VoidSymbol     
740                   keycode 116 = Do             
741   altgr   control keycode 116 = VoidSymbol     
742   shift   alt     keycode 116 = VoidSymbol     
743   altgr   alt     keycode 116 = VoidSymbol     
744                   keycode 117 = F17             
745   altgr   control keycode 117 = VoidSymbol     
746   shift   alt     keycode 117 = VoidSymbol     
747   altgr   alt     keycode 117 = VoidSymbol     
748                   keycode 118 = KP_MinPlus     
749   altgr   control keycode 118 = VoidSymbol     
750   shift   alt     keycode 118 = VoidSymbol     
751   altgr   alt     keycode 118 = VoidSymbol     
752                   keycode 119 = Pause
753                   keycode 120 =
754                   keycode 121 =
755                   keycode 122 =
756                   keycode 123 =
757                   keycode 124 =
758
759
760! ----Space key-------------------------------------------------------------
761                   keycode  57 = space                 space                 space                 nobreakspace         
762           shiftl  keycode  57 = KP_0                 
763   shift   shiftl  keycode  57 = KP_0                 
764   altgr   shiftl  keycode  57 = U+202F               
765
766! ----dead keys-------------------------------------------------------------
767                   keycode  41 = dead_circumflex       dead_caron            dead_breve            VoidSymbol           
768           shiftl  keycode  41 = VoidSymbol           
769   shift   shiftl  keycode  41 = VoidSymbol           
770   altgr   shiftl  keycode  41 = VoidSymbol           
771                   keycode  13 = dead_acute            dead_grave            dead_cedilla          VoidSymbol           
772           shiftl  keycode  13 = U+0307               
773   shift   shiftl  keycode  13 = VoidSymbol           
774   altgr   shiftl  keycode  13 = U+030a               
775                   keycode  27 = dead_tilde            U+0304                dead_diaeresis        VoidSymbol           
776           shiftl  keycode  27 = dead_doubleacute     
777   shift   shiftl  keycode  27 = VoidSymbol           
778   altgr   shiftl  keycode  27 = VoidSymbol           
779
780! --------------------------------------------------------------------------
781! Row 1 (number row)
782! --------------------------------------------------------------------------
783                   keycode   2 = one                   degree                onesuperior           U+2081               
784           shiftl  keycode   2 = U+2022               
785   shift   shiftl  keycode   2 = VoidSymbol           
786   altgr   shiftl  keycode   2 = notsign               
787                   keycode   3 = two                   U+2116                twosuperior           U+2082               
788           shiftl  keycode   3 = U+2023               
789   shift   shiftl  keycode   3 = VoidSymbol           
790   altgr   shiftl  keycode   3 = U+2228               
791                   keycode   4 = three                 section               threesuperior         U+2083               
792           shiftl  keycode   4 = VoidSymbol           
793   shift   shiftl  keycode   4 = VoidSymbol           
794   altgr   shiftl  keycode   4 = U+2227               
795                   keycode   5 = four                  guillemotright        U+203A                U+2113               
796           shiftl  keycode   5 = Prior                 
797   shift   shiftl  keycode   5 = Prior                 
798   altgr   shiftl  keycode   5 = U+22a4               
799                   keycode   6 = five                  guillemotleft         U+2039                U+2640               
800           shiftl  keycode   6 = VoidSymbol           
801   shift   shiftl  keycode   6 = VoidSymbol           
802   altgr   shiftl  keycode   6 = U+2221               
803                   keycode   7 = six                   U+20ac                cent                  U+2642               
804           shiftl  keycode   7 = sterling             
805   shift   shiftl  keycode   7 = VoidSymbol           
806   altgr   shiftl  keycode   7 = U+2225               
807                   keycode   8 = seven                 dollar                yen                   U+03ba               
808           shiftl  keycode   8 = currency             
809   shift   shiftl  keycode   8 = VoidSymbol           
810   altgr   shiftl  keycode   8 = U+21C8               
811                   keycode   9 = eight                 U+201e                U+201a                U+2329               
812           shiftl  keycode   9 = KP_Divide             
813   shift   shiftl  keycode   9 = KP_Divide             
814   altgr   shiftl  keycode   9 = U+21C5               
815                   keycode  10 = nine                  U+201c                U+2018                U+232a               
816           shiftl  keycode  10 = KP_Multiply           
817   shift   shiftl  keycode  10 = KP_Multiply           
818   altgr   shiftl  keycode  10 = U+220B               
819                   keycode  11 = zero                  U+201d                U+2019                U+2080               
820           shiftl  keycode  11 = KP_Subtract           
821   shift   shiftl  keycode  11 = KP_Subtract           
822   altgr   shiftl  keycode  11 = U+2205               
823                   keycode  12 = minus                 U+2013                U+2014                U+2011               
824           shiftl  keycode  12 = VoidSymbol           
825   shift   shiftl  keycode  12 = VoidSymbol           
826   altgr   shiftl  keycode  12 = hyphen               
827
828! --------------------------------------------------------------------------
829! Row 2 (upper row)
830! --------------------------------------------------------------------------
831                   keycode  16 = x                     X                     U+2026                U+03be               
832           shiftl  keycode  16 = U+22EE               
833   shift   shiftl  keycode  16 = VoidSymbol           
834   altgr   shiftl  keycode  16 = U+039E               
835           control keycode  16 = Control_x                     
836   shift   control keycode  16 = Control_x                     
837           alt     keycode  16 = Meta_x                     
838   shift   alt     keycode  16 = Meta_X                     
839   control alt     keycode  16 = Meta_Control_x                     
840                   keycode  17 = v                     V                     underscore            VoidSymbol           
841           shiftl  keycode  17 = BackSpace             
842   shift   shiftl  keycode  17 = BackSpace             
843   altgr   shiftl  keycode  17 = U+2259               
844           control keycode  17 = Control_v                     
845   shift   control keycode  17 = Control_v                     
846           alt     keycode  17 = Meta_v                     
847   shift   alt     keycode  17 = Meta_V                     
848   control alt     keycode  17 = Meta_Control_v                     
849                   keycode  18 = l                     L                     bracketleft           U+03bb               
850           shiftl  keycode  18 = Up                   
851   shift   shiftl  keycode  18 = Up                   
852   altgr   shiftl  keycode  18 = U+039B               
853           control keycode  18 = Control_l                     
854   shift   control keycode  18 = Control_l                     
855           alt     keycode  18 = Meta_l                     
856   shift   alt     keycode  18 = Meta_L                     
857   control alt     keycode  18 = Meta_Control_l                     
858                   keycode  19 = c                     C                     bracketright          U+03c7               
859           shiftl  keycode  19 = Remove               
860   shift   shiftl  keycode  19 = Remove               
861   altgr   shiftl  keycode  19 = U+2102               
862           control keycode  19 = Control_c                     
863   shift   control keycode  19 = Control_c                     
864           alt     keycode  19 = Meta_c                     
865   shift   alt     keycode  19 = Meta_C                     
866   control alt     keycode  19 = Meta_Control_c                     
867                   keycode  20 = w                     W                     asciicircum           U+03c9               
868           shiftl  keycode  20 = Insert               
869   shift   shiftl  keycode  20 = Insert               
870   altgr   shiftl  keycode  20 = U+03A9               
871           control keycode  20 = Control_w                     
872   shift   control keycode  20 = Control_w                     
873           alt     keycode  20 = Meta_w                     
874   shift   alt     keycode  20 = Meta_W                     
875   control alt     keycode  20 = Meta_Control_w                     
876                   keycode  21 = k                     K                     exclam                U+03F0               
877           shiftl  keycode  21 = exclamdown           
878   shift   shiftl  keycode  21 = VoidSymbol           
879   altgr   shiftl  keycode  21 = U+221a               
880           control keycode  21 = Control_k                     
881   shift   control keycode  21 = Control_k                     
882           alt     keycode  21 = Meta_k                     
883   shift   alt     keycode  21 = Meta_K                     
884   control alt     keycode  21 = Meta_Control_k                     
885                   keycode  22 = h                     H                     less                  U+03c8               
886           shiftl  keycode  22 = KP_7                 
887   shift   shiftl  keycode  22 = KP_7                 
888   altgr   shiftl  keycode  22 = U+03A8               
889           control keycode  22 = Control_h                     
890   shift   control keycode  22 = Control_h                     
891           alt     keycode  22 = Meta_h                     
892   shift   alt     keycode  22 = Meta_H                     
893   control alt     keycode  22 = Meta_Control_h                     
894                   keycode  23 = g                     G                     greater               U+03b3               
895           shiftl  keycode  23 = KP_8                 
896   shift   shiftl  keycode  23 = KP_8                 
897   altgr   shiftl  keycode  23 = U+0393               
898           control keycode  23 = Control_g                     
899   shift   control keycode  23 = Control_g                     
900           alt     keycode  23 = Meta_g                     
901   shift   alt     keycode  23 = Meta_G                     
902   control alt     keycode  23 = Meta_Control_g                     
903                   keycode  24 = f                     F                     equal                 U+03c6               
904           shiftl  keycode  24 = KP_9                 
905   shift   shiftl  keycode  24 = KP_9                 
906   altgr   shiftl  keycode  24 = U+03A6               
907           control keycode  24 = Control_f                     
908   shift   control keycode  24 = Control_f                     
909           alt     keycode  24 = Meta_f                     
910   shift   alt     keycode  24 = Meta_F                     
911   control alt     keycode  24 = Meta_Control_f                     
912                   keycode  25 = q                     Q                     ampersand             U+03D5               
913           shiftl  keycode  25 = KP_Add               
914   shift   shiftl  keycode  25 = KP_Add               
915   altgr   shiftl  keycode  25 = U+211A               
916           control keycode  25 = Control_q                     
917   shift   control keycode  25 = Control_q                     
918           alt     keycode  25 = Meta_q                     
919   shift   alt     keycode  25 = Meta_Q                     
920   control alt     keycode  25 = Meta_Control_q                     
921                   keycode  26 = ssharp                U+1E9E                U+017F                U+03c2               
922           shiftl  keycode  26 = VoidSymbol           
923   shift   shiftl  keycode  26 = VoidSymbol           
924   altgr   shiftl  keycode  26 = U+2218               
925
926! --------------------------------------------------------------------------
927! Row 3 (home row, middle row)
928! --------------------------------------------------------------------------
929                   keycode  30 = u                     U                     backslash             VoidSymbol           
930           shiftl  keycode  30 = Home                 
931   shift   shiftl  keycode  30 = Home                 
932   altgr   shiftl  keycode  30 = U+222E               
933           control keycode  30 = Control_u                     
934   shift   control keycode  30 = Control_u                     
935           alt     keycode  30 = Meta_u                     
936   shift   alt     keycode  30 = Meta_U                     
937   control alt     keycode  30 = Meta_Control_u                     
938                   keycode  31 = i                     I                     slash                 U+03b9               
939           shiftl  keycode  31 = Left                 
940   shift   shiftl  keycode  31 = Left                 
941   altgr   shiftl  keycode  31 = U+222b               
942           control keycode  31 = Control_i                     
943   shift   control keycode  31 = Control_i                     
944           alt     keycode  31 = Meta_i                     
945   shift   alt     keycode  31 = Meta_I                     
946   control alt     keycode  31 = Meta_Control_i                     
947                   keycode  32 = a                     A                     braceleft             U+03b1               
948           shiftl  keycode  32 = Down                 
949   shift   shiftl  keycode  32 = Down                 
950   altgr   shiftl  keycode  32 = U+2200               
951           control keycode  32 = Control_a                     
952   shift   control keycode  32 = Control_a                     
953           alt     keycode  32 = Meta_a                     
954   shift   alt     keycode  32 = Meta_A                     
955   control alt     keycode  32 = Meta_Control_a                     
956                   keycode  33 = e                     E                     braceright            U+03b5               
957           shiftl  keycode  33 = Right                 
958   shift   shiftl  keycode  33 = Right                 
959   altgr   shiftl  keycode  33 = U+2203               
960           control keycode  33 = Control_e                     
961   shift   control keycode  33 = Control_e                     
962           alt     keycode  33 = Meta_e                     
963   shift   alt     keycode  33 = Meta_E                     
964   control alt     keycode  33 = Meta_Control_e                     
965                   keycode  34 = o                     O                     asterisk              U+03bf               
966           shiftl  keycode  34 = End                   
967   shift   shiftl  keycode  34 = End                   
968   altgr   shiftl  keycode  34 = U+2208               
969           control keycode  34 = Control_o                     
970   shift   control keycode  34 = Control_o                     
971           alt     keycode  34 = Meta_o                     
972   shift   alt     keycode  34 = Meta_O                     
973   control alt     keycode  34 = Meta_Control_o                     
974                   keycode  35 = s                     S                     question              U+03c3               
975           shiftl  keycode  35 = questiondown         
976   shift   shiftl  keycode  35 = VoidSymbol           
977   altgr   shiftl  keycode  35 = U+03A3               
978           control keycode  35 = Control_s                     
979   shift   control keycode  35 = Control_s                     
980           alt     keycode  35 = Meta_s                     
981   shift   alt     keycode  35 = Meta_S                     
982   control alt     keycode  35 = Meta_Control_s                     
983                   keycode  36 = n                     N                     parenleft             U+03bd               
984           shiftl  keycode  36 = KP_4                 
985   shift   shiftl  keycode  36 = KP_4                 
986   altgr   shiftl  keycode  36 = U+2115               
987           control keycode  36 = Control_n                     
988   shift   control keycode  36 = Control_n                     
989           alt     keycode  36 = Meta_n                     
990   shift   alt     keycode  36 = Meta_N                     
991   control alt     keycode  36 = Meta_Control_n                     
992                   keycode  37 = r                     R                     parenright            U+03F1               
993           shiftl  keycode  37 = KP_5                 
994   shift   shiftl  keycode  37 = KP_5                 
995   altgr   shiftl  keycode  37 = U+211D               
996           control keycode  37 = Control_r                     
997   shift   control keycode  37 = Control_r                     
998           alt     keycode  37 = Meta_r                     
999   shift   alt     keycode  37 = Meta_R                     
1000   control alt     keycode  37 = Meta_Control_r                     
1001                   keycode  38 = t                     T                     minus                 U+03c4               
1002           shiftl  keycode  38 = KP_6                 
1003   shift   shiftl  keycode  38 = KP_6                 
1004   altgr   shiftl  keycode  38 = U+2202               
1005           control keycode  38 = Control_t                     
1006   shift   control keycode  38 = Control_t                     
1007           alt     keycode  38 = Meta_t                     
1008   shift   alt     keycode  38 = Meta_T                     
1009   control alt     keycode  38 = Meta_Control_t                     
1010                   keycode  39 = d                     D                     colon                 U+03b4               
1011           shiftl  keycode  39 = comma                 
1012   shift   shiftl  keycode  39 = VoidSymbol           
1013   altgr   shiftl  keycode  39 = U+0394               
1014           control keycode  39 = Control_d                     
1015   shift   control keycode  39 = Control_d                     
1016           alt     keycode  39 = Meta_d                     
1017   shift   alt     keycode  39 = Meta_D                     
1018   control alt     keycode  39 = Meta_Control_d                     
1019                   keycode  40 = y                     Y                     at                    U+03c5               
1020           shiftl  keycode  40 = period               
1021   shift   shiftl  keycode  40 = VoidSymbol           
1022   altgr   shiftl  keycode  40 = U+2207               
1023           control keycode  40 = Control_y                     
1024   shift   control keycode  40 = Control_y                     
1025           alt     keycode  40 = Meta_y                     
1026   shift   alt     keycode  40 = Meta_Y                     
1027   control alt     keycode  40 = Meta_Control_y                     
1028
1029! --------------------------------------------------------------------------
1030! Row 4 (lower row)
1031! --------------------------------------------------------------------------
1032                   keycode  44 = udiaeresis            Udiaeresis            numbersign            VoidSymbol           
1033           shiftl  keycode  44 = Escape               
1034   shift   shiftl  keycode  44 = Escape               
1035   altgr   shiftl  keycode  44 = U+211C               
1036                   keycode  45 = odiaeresis            Odiaeresis            dollar                VoidSymbol           
1037           shiftl  keycode  45 = Tab                   
1038   shift   shiftl  keycode  45 = Meta_Tab             
1039   altgr   shiftl  keycode  45 = U+2111               
1040                   keycode  46 = adiaeresis            Adiaeresis            bar                   U+03b7               
1041           shiftl  keycode  46 = Next                 
1042   shift   shiftl  keycode  46 = Next                 
1043   altgr   shiftl  keycode  46 = U+2135               
1044                   keycode  47 = p                     P                     asciitilde            U+03c0               
1045           shiftl  keycode  47 = Return               
1046   shift   shiftl  keycode  47 = Return               
1047   altgr   shiftl  keycode  47 = U+03A0               
1048           control keycode  47 = Control_p                     
1049   shift   control keycode  47 = Control_p                     
1050           alt     keycode  47 = Meta_p                     
1051   shift   alt     keycode  47 = Meta_P                     
1052   control alt     keycode  47 = Meta_Control_p                     
1053                   keycode  48 = z                     Z                     grave                 U+03b6               
1054           shiftl  keycode  48 = VoidSymbol           
1055   shift   shiftl  keycode  48 = VoidSymbol           
1056   altgr   shiftl  keycode  48 = U+2124               
1057           control keycode  48 = Control_z                     
1058   shift   control keycode  48 = Control_z                     
1059           alt     keycode  48 = Meta_z                     
1060   shift   alt     keycode  48 = Meta_Z                     
1061   control alt     keycode  48 = Meta_Control_z                     
1062                   keycode  49 = b                     B                     plus                  U+03b2               
1063           shiftl  keycode  49 = colon                 
1064   shift   shiftl  keycode  49 = VoidSymbol           
1065   altgr   shiftl  keycode  49 = U+21D0               
1066           control keycode  49 = Control_b                     
1067   shift   control keycode  49 = Control_b                     
1068           alt     keycode  49 = Meta_b                     
1069   shift   alt     keycode  49 = Meta_B                     
1070   control alt     keycode  49 = Meta_Control_b                     
1071                   keycode  50 = m                     M                     percent               U+03bc               
1072           shiftl  keycode  50 = KP_1                 
1073   shift   shiftl  keycode  50 = KP_1                 
1074   altgr   shiftl  keycode  50 = U+21d4               
1075           control keycode  50 = Control_m                     
1076   shift   control keycode  50 = Control_m                     
1077           alt     keycode  50 = Meta_m                     
1078   shift   alt     keycode  50 = Meta_M                     
1079   control alt     keycode  50 = Meta_Control_m                     
1080                   keycode  51 = comma                 VoidSymbol            quotedbl              U+03c1               
1081           shiftl  keycode  51 = KP_2                 
1082   shift   shiftl  keycode  51 = KP_2                 
1083   altgr   shiftl  keycode  51 = U+21D2               
1084                   keycode  52 = period                VoidSymbol            apostrophe            U+03D1               
1085           shiftl  keycode  52 = KP_3                 
1086   shift   shiftl  keycode  52 = KP_3                 
1087   altgr   shiftl  keycode  52 = U+0398               
1088                   keycode  53 = j                     J                     semicolon             U+03b8               
1089           shiftl  keycode  53 = semicolon             
1090   shift   shiftl  keycode  53 = VoidSymbol           
1091   altgr   shiftl  keycode  53 = U+221d               
1092           control keycode  53 = Control_j                     
1093   shift   control keycode  53 = Control_j                     
1094           alt     keycode  53 = Meta_j                     
1095   shift   alt     keycode  53 = Meta_J                     
1096   control alt     keycode  53 = Meta_Control_j                     
1097
1098! --------------------------------------------------------------------------
1099! Keypad Row 1 (uppest row)
1100! --------------------------------------------------------------------------
1101                   keycode  69 = Tab                   Meta_Tab              equal                 U+2248               
1102           shiftl  keycode  69 = U+2260               
1103   shift   shiftl  keycode  69 = VoidSymbol           
1104   altgr   shiftl  keycode  69 = U+2261               
1105                   keycode  98 = KP_Divide             KP_Divide             division              U+2223               
1106           shiftl  keycode  98 = U+2300               
1107   shift   shiftl  keycode  98 = VoidSymbol           
1108   altgr   shiftl  keycode  98 = U+2044               
1109                   keycode  55 = KP_Multiply           KP_Multiply           U+22C5                multiply             
1110           shiftl  keycode  55 = U+2299               
1111   shift   shiftl  keycode  55 = VoidSymbol           
1112   altgr   shiftl  keycode  55 = U+2297               
1113                   keycode  74 = KP_Subtract           KP_Subtract           U+2212                U+2216               
1114           shiftl  keycode  74 = U+2296               
1115   shift   shiftl  keycode  74 = VoidSymbol           
1116   altgr   shiftl  keycode  74 = U+2238               
1117
1118! --------------------------------------------------------------------------
1119! Keypad Row 2 (upper row)
1120! --------------------------------------------------------------------------
1121                   keycode  71 = KP_7                  U+2714                U+2195                U+230a               
1122           shiftl  keycode  71 = Home                 
1123   shift   shiftl  keycode  71 = Home                 
1124   altgr   shiftl  keycode  71 = U+2308               
1125                   keycode  72 = KP_8                  U+2718                U+2191                U+2229               
1126           shiftl  keycode  72 = Up                   
1127   shift   shiftl  keycode  72 = Up                   
1128   altgr   shiftl  keycode  72 = U+22C2               
1129                   keycode  73 = KP_9                  U+2020                U+20D7                U+230B               
1130           shiftl  keycode  73 = Prior                 
1131   shift   shiftl  keycode  73 = Prior                 
1132   altgr   shiftl  keycode  73 = U+2309               
1133                   keycode  78 = KP_Add                KP_Add                plusminus             U+2213               
1134           shiftl  keycode  78 = U+2295               
1135   shift   shiftl  keycode  78 = VoidSymbol           
1136   altgr   shiftl  keycode  78 = U+2214               
1137
1138! --------------------------------------------------------------------------
1139! Keypad Row 3 (home row, middle row)
1140! --------------------------------------------------------------------------
1141                   keycode  75 = KP_4                  U+2663                U+2190                U+2282               
1142           shiftl  keycode  75 = Left                 
1143   shift   shiftl  keycode  75 = Left                 
1144   altgr   shiftl  keycode  75 = U+2286               
1145                   keycode  76 = KP_5                  U+20ac                U+221e                U+22B6               
1146           shiftl  keycode  76 = VoidSymbol           
1147   shift   shiftl  keycode  76 = VoidSymbol           
1148   altgr   shiftl  keycode  76 = U+22B7               
1149                   keycode  77 = KP_6                  brokenbar             U+2192                U+2283               
1150           shiftl  keycode  77 = Right                 
1151   shift   shiftl  keycode  77 = Right                 
1152   altgr   shiftl  keycode  77 = U+2287               
1153
1154! --------------------------------------------------------------------------
1155! Keypad Row 4 (lower row)
1156! --------------------------------------------------------------------------
1157                   keycode  79 = KP_1                  U+2666                U+2194                U+226A               
1158           shiftl  keycode  79 = End                   
1159   shift   shiftl  keycode  79 = End                   
1160   altgr   shiftl  keycode  79 = U+2264               
1161                   keycode  80 = KP_2                  U+2665                U+2193                U+222a               
1162           shiftl  keycode  80 = Down                 
1163   shift   shiftl  keycode  80 = Down                 
1164   altgr   shiftl  keycode  80 = U+22C3               
1165                   keycode  81 = KP_3                  U+2660                U+21CC                U+226B               
1166           shiftl  keycode  81 = Next                 
1167   shift   shiftl  keycode  81 = Next                 
1168   altgr   shiftl  keycode  81 = U+2265               
1169
1170! --------------------------------------------------------------------------
1171! Keypad Row 5 (lowest row)
1172! --------------------------------------------------------------------------
1173                   keycode  82 = KP_0                  U+2423                percent               U+2030               
1174           shiftl  keycode  82 = Insert               
1175   shift   shiftl  keycode  82 = Insert               
1176   altgr   shiftl  keycode  82 = U+25A1               
1177                   keycode  83 = comma                 period                U+002c                U+2032               
1178           shiftl  keycode  83 = Remove               
1179   shift   shiftl  keycode  83 = Remove               
1180   altgr   shiftl  keycode  83 = U+2033               
1181
1182
1183! --------------------------------------------------------------------------
1184! additional Keys with control function (has to be edited manually!!!!)
1185! --------------------------------------------------------------------------
1186   control altgr   keycode  30 = Control_backslash
1187   alt     altgr   keycode  30 = Control_backslash
1188   control alt altgr keycode  30 = Meta_Control_backslash
1189   control altgr   keycode  19 = Control_bracketright
1190   alt     altgr   keycode  19 = Control_bracketright
1191   control alt altgr keycode  19 = Meta_Control_bracketright
1192   control altgr   keycode  17 = Control_underscore
1193   alt     altgr   keycode  17 = Control_underscore
1194   control alt altgr keycode  17 = Meta_Control_underscore
1195   control altgr   keycode  20 = Control_asciicircum
1196   alt     altgr   keycode  20 = Control_asciicircum
1197   control alt altgr keycode  20 = Meta_Control_asciicircum
1198
1199
1200! --------------------------------------------------------------------------
1201! Strings and Compose
1202! --------------------------------------------------------------------------
1203# string F100 = "setleds +num\n"
1204NEO_CONSOLE
1205}
1206
1207neo_asdf ()
1208{
1209cat <<NEO_ASDF
1210#!/bin/sh
1211# Copyright 2008 Bernd Steinhauser <berniyh@exherbo.org>
1212# Copyright 2008 Benjamin Kellermann
1213# Copyright 2008 Pascal Hauck
1214# Copyright 2008 Erik Streb del Toro
1215# Distributed under the terms of the GNU General Public License v3
1216
1217if [ -f "\${NEO_CONFIG}" ]; then
1218        . "\${NEO_CONFIG}" || die "Failed to source \${NEO_CONFIG}"
1219elif [ -f "\${HOME}"/.neorc ]; then
1220        . "\${HOME}"/.neorc || die "Failed to source \${HOME}/.neorc"
1221elif [ -f /etc/neo.conf ]; then
1222        . /etc/neo.conf || die "Failed to source /etc/neo.conf"
1223else
1224        echo "No configuration file found. Using default values, this might fail!"
1225fi
1226
1227# Default paths
1228PATH_XMODMAP=\${PATH_XMODMAP:-/usr/bin/xmodmap}
1229PATH_SETXKBMAP=\${PATH_SETXKBMAP:-/usr/bin/setxkbmap}
1230PATH_LOADKEYS=\${PATH_LOADKEYS:-/usr/bin/loadkeys}
1231PATH_SUDO=\${PATH_SUDO:-/usr/bin/sudo}
1232PATH_SETLEDS=\${PATH_SETLEDS:-/usr/bin/setleds}
1233PATH_NUMLOCKX=\${PATH_NUMLOCKX:-/usr/bin/numlockx}
1234PATH_XSET=\${PATH_XSET:-/usr/bin/xset}
1235
1236# Default values
1237NEO_X_VARIANTE=\${NEO_X_VARIANTE:-xkbmap}
1238NEO_X_VARIANTE=\${1-\$NEO_X_VARIANTE}
1239NEO_XKBMAP=\${NEO_XKBMAP:-de}
1240NEO_XKBVARIANT=\${NEO_XKBVARIANT:-neo}
1241NEO_XMODMAP=\${NEO_XMODMAP:-\$HOME/neo/neo_de.xmodmap}
1242NEO_XMODMAP_XPROG=\${NEO_XMODMAP_XPROG:-\$HOME/neo/neo_de_x-prog.xmodmap}
1243NEO_XMODMAP_ALTERNATIVE=\${NEO_XMODMAP_ALTERNATIVE:-\$HOME/neo/neo_de_alternative.xmodmap}
1244NEO_XMODMAP_EVDEV=\${NEO_XMODMAP_EVDEV:-\$HOME/neo/neo_de_evdev.xmodmap}
1245NEO_CONSOLE_KEYMAP=\${NEO_CONSOLE_KEYMAP:-\$HOME/neo/neo.map}
1246
1247die() {
1248        echo "\$@" >&2
1249        exit 1
1250}
1251
1252numlock_manually() {
1253        echo "\$1" >&2
1254        echo "Please turn Numlock \$2 and press ›Enter‹ to continue." >&2
1255        read
1256}
1257
1258set_xmodmap() {
1259        if [ -e "\${PATH_XMODMAP}" ]; then
1260                if [ -f "\$@" ]; then
1261                        set_xkbmap lv
1262                        "\${PATH_XMODMAP}" "\$@" || ( set_xkbmap de ; die "Failed to set xmodmap \$@." )
1263                else
1264                        die "Cannot use \$@ for xmodmap."
1265                fi
1266        else
1267                die "xmodmap not found, cannot set xmodmap."
1268        fi
1269}
1270
1271set_xkbmap() {
1272        if [ -e "\${PATH_SETXKBMAP}" ]; then
1273                "\${PATH_SETXKBMAP}" "\$@" || die "Failed to select xkbmap \$@."
1274        else
1275                die "setxkbmap not found, cannot set xkbmap."
1276        fi
1277}
1278
1279set_keymap() {
1280        if [ -e "\${PATH_LOADKEYS}" ]; then
1281                if [ -f "\$@" ]; then
1282                        if [ "\${EUID}" = 0 ]; then
1283                                "\${PATH_LOADKEYS}" "\$@" || die "Failed to set keymap \$@."
1284                        elif [ -e "\${PATH_SUDO}" ]; then
1285                                "\${PATH_SUDO}" "\${PATH_LOADKEYS}" "\$@" || die "Failed to set keymap using sudo."
1286                        else
1287                                die "You need root priviliges to change the keymap."
1288                        fi
1289                else
1290                        die "keymap file \$@ does not exist."
1291                fi
1292        else
1293                die "loadkeys not found, cannot set keymap."
1294        fi
1295}
1296
1297if [ -n "\$SSH_CONNECTION" ]; then
1298        die "Cannot set keybord layout in a ssh session."
1299fi
1300
1301if [ -z \${DISPLAY} ]; then
1302        set_keymap "\${NEO_CONSOLE_KEYMAP}"
1303
1304        if [ -e "\${PATH_SETLEDS}" ]; then
1305                "\${PATH_SETLEDS}" +num || numlock_manually "Failed to set NUM status." on
1306        else
1307                numlock_manually "setleds does not exist, cannot set NUM status." on
1308        fi
1309else
1310        if [ -e "\${PATH_NUMLOCKX}" ]; then
1311                "\${PATH_NUMLOCKX}" off || numlock_manually "Failed to turn off Numlock." off
1312        else
1313                numlock_manually "numlockx not found, cannot turn off Numlock." off
1314        fi
1315
1316        if [ -e "\${PATH_XSET}" ]; then
1317                for modifier in 51 94; do
1318                        "\${PATH_XSET}" -r \${modifier} || echo "Failed to unset repeat for modifier \${modifier}." >&2
1319                done
1320                for deadkey in 21 35 49; do
1321                        "\${PATH_XSET}" -r \${deadkey} || echo "Failed to unset repeat for deadkey \${deakey}." >&2
1322                done
1323        else
1324                echo "xset not found, cannot set modifiers and dead keys." >&2
1325        fi
1326
1327        case "\${NEO_X_VARIANTE}" in
1328                xkbmap)
1329                        set_xkbmap "\${NEO_XKBMAP}" "\${NEO_XKBVARIANT}"
1330                        ;;
1331                xmodmap)
1332                        set_xmodmap "\${NEO_XMODMAP}"
1333                        ;;
1334                xprog)
1335                        set_xmodmap "\${NEO_XMODMAP_XPROG}"
1336                        ;;
1337                alternative)
1338                        set_xmodmap "\${NEO_XMODMAP_ALTERNATIVE}"
1339                        ;;
1340                evdev)
1341                        set_xmodmap "\${NEO_XMODMAP_EVDEV}"
1342                        ;;
1343                *)
1344                        die "Unknown Neo X variant \${NEO_X_VARIANTE}."
1345                        ;;
1346        esac
1347fi
1348
1349NEO_ASDF
1350}
1351
1352neo_uiae ()
1353{
1354cat <<NEO_UIAE
1355#!/bin/sh
1356# Copyright 2008 Bernd Steinhauser <berniyh@exherbo.org>
1357# Copyright 2008 Benjamin Kellermann
1358# Copyright 2008 Pascal Hauck
1359# Copyright 2008 Erik Streb del Toro
1360# Distributed under the terms of the GNU General Public License v3
1361
1362if [ -f "\${NEO_CONFIG}" ]; then
1363        . "\${NEO_CONFIG}" || die "Failed to source \${NEO_CONFIG}"
1364elif [ -f "\${HOME}"/.neorc ]; then
1365        . "\${HOME}"/.neorc || die "Failed to source \${HOME}/.neorc"
1366elif [ -f /etc/neo.conf ]; then
1367        . /etc/neo.conf || die "Failed to source /etc/neo.conf"
1368else
1369        echo "No configuration file found. Using default values, this might fail!"
1370fi
1371
1372# Default paths
1373PATH_XMODMAP=\${PATH_XMODMAP:-/usr/bin/xmodmap}
1374PATH_SETXKBMAP=\${PATH_SETXKBMAP:-/usr/bin/setxkbmap}
1375PATH_LOADKEYS=\${PATH_LOADKEYS:-/usr/bin/loadkeys}
1376PATH_SUDO=\${PATH_SUDO:-/usr/bin/sudo}
1377PATH_SETLEDS=\${PATH_SETLEDS:-/usr/bin/setleds}
1378PATH_NUMLOCKX=\${PATH_NUMLOCKX:-/usr/bin/numlockx}
1379PATH_XSET=\${PATH_XSET:-/usr/bin/xset}
1380
1381# Default values
1382STD_X_VARIANTE=\${STD_X_VARIANTE:-xkbmap}
1383STD_XKBMAP=\${STD_XKBMAP:-de}
1384STD_XKBVARIANT=\${STD_XKBVARIANT:-nodeadkeys}
1385STD_CONSOLE_KEYMAP="\${STD_CONSOLE_KEYMAP:-de-latin1-nodeadkeys}"
1386NUM_LOCK_STATUS=\${NUM_LOCK_STATUS:-on}
1387
1388die() {
1389        echo "\$@" >&2
1390        exit 1
1391}
1392
1393set_xmodmap() {
1394        if [ -e "\${PATH_XMODMAP}" ]; then
1395                if [ -f "\$@" ]; then
1396                        "\${PATH_XMODMAP}" "\$@" || die "Failed to set xmodmap \$@."
1397                else
1398                        die "Cannot use \$@ for xmodmap."
1399                fi
1400        else
1401                die "xmodmap not found, cannot set xmodmap."
1402        fi
1403}
1404
1405set_xkbmap() {
1406        if [ -e "\${PATH_SETXKBMAP}" ]; then
1407                "\${PATH_SETXKBMAP}" "\$@" || die "Failed to select xkbmap \$@."
1408        else
1409                die "setxkbmap not found, cannot set xkbmap."
1410        fi
1411}
1412
1413set_keymap() {
1414        if [ -e "\${PATH_LOADKEYS}" ]; then
1415                if [ -f "\$@" ]; then
1416                        if [ "\${EUID}" = 0 ]; then
1417                                "\${PATH_LOADKEYS}" "\$@" || die "Failed to set keymap \$@."
1418                        elif [ -e "\${PATH_SUDO}" ]; then
1419                                "\${PATH_SUDO}" "\${PATH_LOADKEYS}" "\$@" || die "Failed to set keymap using sudo."
1420                        else
1421                                die "You need root priviliges to change the keymap."
1422                        fi
1423                else
1424                        die "keymap file \$@ does not exist."
1425                fi
1426        else
1427                die "loadkeys not found, cannot set keymap."
1428        fi
1429}
1430
1431if [ -n "\$SSH_CONNECTION" ]; then
1432        die "Cannot set keybord layout in a ssh session."
1433fi
1434
1435if [ -z \${DISPLAY} ]; then
1436        set_keymap "\${NEO_CONSOLE_KEYMAP}"
1437
1438        if [ -e "\${PATH_SETLEDS}" ]; then
1439                if [ "\${NUM_LOCK_STATUS}" = "on" ]; then
1440                        "\${PATH_SETLEDS}" -num || echo "Failed to set num lock status to on." >&2
1441                else
1442                        "\${PATH_SETLEDS}" +num || echo "Failed to set num lock status to off." >&2
1443                fi
1444        else
1445                echo "setleds does not exist, cannot set NUM status." >&2
1446        fi
1447else
1448        if [ -e "\${PATH_XSET}" ]; then
1449                for modifier in 51 94; do
1450                        "\${PATH_XSET}" r \${modifier} || echo "Failed to set repeat for modifier \${modifier}." >&2
1451                done
1452                for deadkey in 21 35 49; do
1453                        "\${PATH_XSET}" r \${deadkey} || echo "Failed to set repeat for deadkey \${deakey}." >&2
1454                done
1455        else
1456                echo "xset not found, cannot set modifiers and dead keys." >&2
1457        fi
1458
1459        case "\${STD_X_VARIANTE}" in
1460                xkbmap)
1461                        set_xkbmap "\${STD_XKBMAP}" "\${STD_XKBVARIANT}"
1462                        ;;
1463                xmodmap)
1464                        set_xkbmap de
1465                        set_xmodmap "\${STD_XMODMAP}"
1466                        ;;
1467                *)
1468                        die "Unknown standard X variant \${STD_X_VARIANTE}."
1469                        ;;
1470        esac
1471
1472        if [ -e "\${PATH_NUMLOCKX}" ]; then
1473                if [ "\${NUM_LOCK_STATUS}" = "on" ]; then
1474                        "\${PATH_NUMLOCKX}" on || die "Failed to set num lock status to on."
1475                else
1476                        "\${PATH_NUMLOCKX}" off || die "Failed to set num lock status to off."
1477                fi
1478        else
1479                die "numlockx not found, cannot turn off Numlock."
1480        fi
1481fi
1482
1483NEO_UIAE
1484}
1485
1486neo_referenz ()
1487{
1488cat <<NEO_REFERENZ
1489-------------------------------------------------------------------------------
1490ACHTUNG:
1491Damit alles ordentlich dargestellt wird, muss man für die Darstellung z. B. im
1492Texteditor eine dicktengleiche Schrift einstellen!
1493
1494Im Browser (Firefox) muss man unter Ansicht, Zeichenkodierung auf Unicode
1495(UTF-8) stellen.
1496
1497Unter Windows ist in der Grundinstallation leider keine dicktengleiche Schrift
1498installiert, die befriedigend viele Unicodezeichen beinhaltet.
1499Abhilfe schafft z. B. DejaVu Sans Mono (ist z. B. bei OpenOffice dabei):
1500http://dejavu.sourceforge.net/
1501-------------------------------------------------------------------------------
1502
1503== Haupttastatur ==
1504=== Legende – Haupttastatur ===
1505┌─────┐ 1 … 1. Ebene (kein Mod)     │ 4 … 4. Ebene (Mod4)
1506│2 4 6│ 2 … 2. Ebene (Umschalt)     │ 5 … 5. Ebene (Mod3+Umschalt)
1507│1 3 5│ 3 … 3. Ebene (Mod3)         │ 6 … 6. Ebene (Mod3+Mod4)
1508└─────┘
1509• Ebene 1: Kleinbuchstaben                   (kein Mod)
1510• Ebene 2: Großbuchstaben                    (Umschalt)
1511• Ebene 3: Sonderzeichen                     (Mod3)
1512• Ebene 4: Navigation und Ziffernblock       (Mod4)
1513• Ebene 5: Griechische Kleinbuchstaben       (Mod3+Umschalt)
1514• Ebene 6: Griechische Großbuchstaben        (Mod3+Mod4)
1515
1516• Kombo/Compose: Zusammensetzen von Zeichen (Mod3+Tab)
1517  Beispiel:
1518  »Compose« »Compose loslassen« »o« »c« = ©
1519• Feststellen/Capslock: Dauergroßschreiben   (Umschalt+Umschalt)
1520  Zum Lösen der Feststellung nochmals gleiche Kombination
1521• Feststellen der Ebene 4:                   (Mod4+Mod4) oder (Umschalt+Mod3+Tab)
1522  Zum Lösen der Feststellung nochmals gleiche Kombination
1523
1524  HINWEIS: Unter Linux ist es momentan noch nicht möglich die Feststellung
1525  zu lösen, indem man beide Mods drückt. Man muss dort nur einen drücken!
1526
1527=== Maustastatursteuerung ===
1528Die Maustastatursteuerung schaltet man über Shift+Mod4+T1 ein und ebenso wieder aus.
1529Mit dieser kann man den Mauszeiger über die Tastatur steuern. Dies kann sinnvoll sein, falls
1530die Maus oder das Touchpad streikt oder keine solches Medium vorhanden ist.
1531Am besten geeignet ist dazu die Ebene 4 des Keypads (z.B. mit Mod4_Lock). Verzichtet man auf
1532Markierungen ist auch Ebene 1 des Keypads geeignet.
1533Des Weiteren kann man die Zahlen auf Ebene 4 des Haupttastaturfelds benutzen, jedoch ist die
1534Bedienung dort weniger komfortabel.
1535
1536=== Symbole ===                           
1537⇞⇟   … Bild auf/Bild ab                 
1538⇱⇲   … Pos1/Ende                         
1539⌫ ⌦  … Backspace/Entf                   
1540⌧    … Esc                               
1541⎀    … Einf
1542⇠⇡⇢⇣ … Links/Hoch/Rechts/Runter
1543♫    … Steht als Symbol für die Kombotaste (Compose)
1544╌    … Weicher Trennstrich (U+00AD SOFT HYPHEN)
1545␣    … Leerzeichen (SPACE)
1546⍽    … Geschütztes Leerzeichen (U+00A0 NO-BREAK SPACE)
1547¦    … Schmales, geschütztes Leerzeichen (U+202F NARROW NO-BREAK SPACE)
1548↶    … undo-Funktion
1549
1550=== Akzenttasten ===
1551Zu den Akzenten siehe auch
1552• http://unicode.e-workers.de/
1553• http://de.wikipedia.org/wiki/Diakritisches_Zeichen
1554• http://de.wikipedia.org/wiki/Liste_lateinisch-basierter_Alphabete
1555
1556T1 („Tote Taste 1“: Taste links neben der 1)
1557        1 … Toter Zirkumflex (sieht aus wie U+02C6 MODIFIER LETTER CIRCUMFLEX ACCENT)
1558┌─────┬ 2 … Tote Tilde (sieht aus wie U+02DC SMALL TILDE)
1559│˜ ˇ ¯│ 3 … Toter Ring (sieht aus wie U+02DA RING ABOVE)
1560│ˆ ˚ ˘│ 4 … Toter Caron/Hatschek (sieht aus wie U+02C7 CARON)
1561├─────┴ 5 … Toter Breve/Brevis (sieht aus wie U+02D8 BREVE)
1562        6 … Toter Makron (sieht aus wie U+00AF MACRON)
1563
1564T2 („Tote Taste 2“: zwei Tasten rechts neben der 0)
1565        1 … Toter Grave (sieht aus wie U+02CB MODIFIER LETTER GRAVE ACCENT)
1566┬─────┬ 2 …
1567│  ˵  │ 3 … Tote(s) Trema/Diärese/Diaeresis (sieht aus wie U+00A8 DIAERESIS)
1568│\` ¨ ῾│ 4 … Toter Doppelgravis (sieht aus wie U+030F COMBINING DOUBLE GRAVE ACCENT)
1569┴──┬──┴ 5 … Toter spiritus asper (sieht aus wie U+1FFE GREEK DASIA)
1570        6 …
1571
1572T3 („Tote Taste 3“: Taste rechts neben dem scharfen S (ß))
1573        1 … Toter Akut (sieht aus wie U+02CA MODIFIER LETTER ACUTE ACCENT)
1574┬──┴──┬ 2 … Tote Cedilla (sieht aus wie U+00B8 CEDILLA)
1575│¸ ˝ ˙│ 3 … Toter Quer-/Schrägstrich (sieht aus wie U+02D7 MODIFIER LETTER MINUS SIGN oder wie U+002F SOLIDUS)
1576│´ / ᾿│ 4 … Toter Doppelakut (sieht aus wie U+02DD DOUBLE ACUTE ACCENT)
1577┴┬────┴ 5 … Toter spiritus lenis (sieht aus wie U+1FBF GREEK PSILI)
1578        6 … Toter Punkt darüber (sieht aus wie U+02D9 DOT ABOVE)
1579
1580ACHTUNG: „Tote Tasten“ (Tasten zum Erzeugen toter Zeichen – also Zeichen die nicht
1581gleich erscheinen, sondern nur in Kombination mit einem weiteren Buchstaben) werden
1582folgendermaßen bedient (Beispiel):
15831. Tote Tilde »~« eingeben.
15842. Danach »n«.
15853. Es erscheint das »ñ«.
1586
1587TIPP: Mit den toten Tasten Zirkumflex und Querstrich kann man hoch(ˆ)- und tiefgestellte(/) Ziffern erzeugen.
1588
1589=== Taste mit Bindestrichen, Gedankenstrich usw. ===
1590Zu den Gedankenstrichen usw. siehe
1591• http://www.matthias-kammerer.de/SonsTypo3.htm
1592• http://de.wikipedia.org/wiki/Weicher_Trennstrich
1593
1594Taste rechts neben der 0
1595        1 …
1596┬─────┬ 2 … — Englischer Gedankenstrich (U+2014 EM DASH)
1597│— - ╌│ 3 …
1598│    ‑│ 4 … - Bindestrich/Minusersatz (U+002D HYPHEN-MINUS) (KP-Variante)
1599┴──┬──┴ 5 … ‑ Geschützter Bindestrich (U+2011 NON-BREAKING HYPHEN)
1600        6 … ╌ Weicher Trennstrich (U+00AD SOFT HYPHEN) Achtung: Falsches Zeichen in der Grafik!
1601
1602# Außerdem gibt es noch
1603#  • den (echten) Hyphen (U+2010 HYPHEN), der über <dead_stroke> + <space> erzugt wird
1604#  • das (echte) Minuszeichen (U+2212 MINUS SIGN) auf dem Keypad
1605#  • den (deutschen) Gedankenstrich (U+2013 EN DASH)
1606#  • den Bindestrich/Minusersatz (U+002D HYPHEN-MINUS)
1607
1608=== Anführungszeichen ===
1609Siehe auch http://de.wikipedia.org/wiki/Anf%C3%BChrungszeichen
1610
1611┬─────┬
1612│» ⇞ ⊥│ 2 … » öffnendes doppeltes Guillemet (U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK)
1613│4 › ℓ│ 3 … › öffnendes einfaches Guillemet (U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK)
1614┴──┬──┴
1615
1616┬─────┬
1617│« · ∡│ 2 … « schließendes doppeltes Guillemet (U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK)
1618│5 ‹ †│ 3 … ‹ schließendes einfaches Guillemet (U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK)
1619┴──┬──┴
1620
1621┬─────┬
1622│„   ∄│ 2 … „ öffnendes Gänsefüßchen (U+201E DOUBLE LOW-9 QUOTATION MARK)
1623│8 ‚ ⟨│ 3 … ‚ öffnendes halbes Anführungszeichen (U+201A SINGLE LOW-9 QUOTATION MARK)
1624┴──┬──┴
1625
1626┬─────┬
1627│“ / ∦│ 2 … “ schließendes Gänsefüßchen, englisch öffnendes (U+201C LEFT DOUBLE QUOTATION MARK)
1628│9 ‘ ⟩│ 3   ‘ schließ. halb. Anführz., engl. öffn. halb. Anführz. (U+2018 LEFT SINGLE QUOTATION MARK)
1629┴──┬──┴
1630
1631┬─────┬
1632│” * ∅│ 2 … ” englisches schließendes Gänsefüßchen (U+201D RIGHT DOUBLE QUOTATION MARK)
1633│0 ’ ₀│ 3 … ’ Apostroph, engl. schließendes halbes Anführungsz. (U+2019 RIGHT SINGLE QUOTATION MARK)
1634┴──┬──┴
1635
1636=== Dezimaltrennzeichen ===
1637Das Dezimaltrennzeichen ist auf englischen und südamerikanischen Systemen ein Punkt ».«.
1638Auf deutschen, französischen, spanischen, schweizerischen und anderen ein Komma »,«.
1639Siehe auch http://de.wikipedia.org/wiki/Dezimaltrennzeichen
1640
1641=== Ziffern ===
1642Die Ziffern auf der Ersten Ebene sind die »normalen« Zahlen (also nicht die KP_-Variante),
1643wogegen für den Ziffernblock auf der vierten Ebene stets die KP_‐Varianten verwendet werden
1644sollten, um die Vielseitigkeit und Funktionsfähigkeit der NEO‐Tastatur zu gewährleisten.
1645
1646=== Alle Ebenen – Haupttastatur ===
1647┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────────┐
1648│˜ ˇ ¯│° • ¬│§ ‣ ∨│ℓ № ∧│» ⇞ ⊥│« · ∡│€ £ ∥│\$ ¤ →│„   ∞│“ / ∋│” * ∅│— - ╌│  ˵  │Backspace│
1649│ˆ ˚ ˘│1 ¹ ₁│2 ² ₂│3 ³ ₃│4 › †│5 ‹ ♀│6 ¢ ♂│7 ¥ κ│8 ‚ ⟨│9 ‘ ⟩│0 ’ ₀│    ‑│\` ¨ ῾│    ⌫    │
1650├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──────┤
1651│ Tab⇤   │X   Ξ│V ⌫ ≙│L ⇡ Λ│C ⌦ ℂ│W ⎀ Ω│K ¡ √│H 7 Ψ│G 8 Γ│F 9 Φ│Q + ℚ│ẞ   ∘│¸ ˝ ˙│      │
1652│ Tab⇥ ♫ │x   ξ│v _  │l [ λ│c ] χ│w ^ ω│k ! ϰ│h < ψ│g > γ│f = φ│q & ϕ│ß ſ ς│´ / ᾿│Return│
1653├────────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐     │
1654│   Mod   │U ⇱ ∮│I ⇠ ∫│A ⇣ ∀│E ⇢ ∃│O ⇲ ∈│S ¿ Σ│N 4 ℕ│R 5 ℝ│T 6 ∂│D , Δ│Y . ∇│ Mod │  ↲  │
1655│    3    │u \  │i / ι│a { α│e } ε│o * ο│s ? σ│n ( ν│r ) ϱ│t - τ│d : δ│y @ υ│  3  │     │
1656├──────┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴─────┴─────┤
1657│CapsLk│ Mod │Ü ⌧ ℜ│Ö ⇥ ℑ│Ä ⇟ ℵ│P ↲ Π│Z ↶ ℤ│B : ⇐│M 1 ⇔│– 2 ⇒│… 3 Θ│J ; ∝│   CapsLock   │
1658│Umsch │  4  │ü #  │ö \$  │ä | η│p ~ π│z \` ζ│b + β│m % μ│, " ρ│. ' ϑ│j ; θ│   Umschalt   │
1659├──────┼─────┴┬────┴─┬───┴─────┴─────┴─────┴─────┴─────┴────┬┴─────┼─────┴┬──────┬──────┤
1660│ Strg │      │ Alt  │Leerzeichen␣      0         schmal ¦  │ Lock │      │ Menü │ Strg │
1661│      │      │      │Leerzeichen␣ Leerzeichen␣ geschützt ⍽ │ Mod4 │      │      │      │
1662└──────┴──────┴──────┴──────────────────────────────────────┴──────┴──────┴──────┴──────┘
1663
1664=== Erste Ebene – Miniatur ===
1665┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
1666│ ˆ │1│2│3│4│5│6│7│8│9│0│ │\`│ Back │
1667├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
1668│Tab⇥│x│v│l│c│w│k│h│g│f│q│ß│´│ Ret │
1669├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐   │
1670│ M3  │u│i│a│e│o│s│n│r│t│d│y│M3│   │
1671├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
1672│Ums│M4│ü│ö│ä│p│z│b│m│,│.│j│ Umsch │
1673├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
1674│Str│Fe│Al│Leerzeichen│M4│Fe│Me│Str│
1675└───┴──┴──┴───────────┴──┴──┴──┴───┘
1676
1677=== Zweite Ebene – Miniatur ===
1678┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
1679│ ˜ │°│§│ℓ│»│«│€│\$│„│“│”│—│ │ Back │
1680├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
1681│Tab⇤│X│V│L│C│W│K│H│G│F│Q│ẞ│¸│ Ret │
1682├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐   │
1683│ M3  │U│I│A│E│O│S│N│R│T│D│Y│M3│   │
1684├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
1685│CpL│M4│Ü│Ö│Ä│P│Z│B│M│–│…│J│ Cps_Lk│
1686├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
1687│Str│Fe│Al│Leerzeichen│M4│Fe│Me│Str│
1688└───┴──┴──┴───────────┴──┴──┴──┴───┘
1689
1690=== Dritte Ebene – Miniatur ===
1691┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
1692│ ˚ │¹│²│³│›│‹│¢│¥│‚│‘│’│ │¨│ Back │
1693├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
1694│ ♫  │ │_│[│]│^│!│<│>│=│&│ſ│/│ Ret │
1695├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐   │
1696│ M3  │\│/│{│}│*│?│(│)│-│:│@│M3│   │
1697├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
1698│Ums│M4│#│\$│|│~│\`│+│%│"│'│;│ Umsch │
1699├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
1700│Str│Fe│Al│Leerzeichen│M4│Fe│Me│Str│
1701└───┴──┴──┴───────────┴──┴──┴──┴───┘
1702
1703=== Vierte Ebene – Miniatur ===
1704┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
1705│ ˇ │•│‣│№│⇞│·│£│¤│ │/│*│-│˵│ Back │
1706├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
1707│ 4Lk│ │⌫│⇡│⌦│⎀│¡│7│8│9│+│ │˝│ Ret │
1708├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐   │
1709│ M3  │⇱│⇠│⇣│⇢│⇲│¿│4│5│6│,│.│M3│   │
1710├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
1711│Ums│4L│⌧│⇥│⇟│↲│↶│:│1│2│3│;│ Umsch │
1712├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
1713│Str│Fe│Al│     0     │4L│Fe│Me│Str│
1714└───┴──┴──┴───────────┴──┴──┴──┴───┘
1715
1716=== Fünfte Ebene – Miniatur ===
1717┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
1718│ ˘ │₁│₂│₃│†│♀│♂│κ│⟨│⟩│₀│‑│῾│ Back │
1719├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
1720│    │ξ│ │λ│χ│ω│ϰ│ψ│γ│φ│ϕ│ς│᾿│ Ret │
1721├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐   │
1722│ M3  │ │ι│α│ε│ο│σ│ν│ϱ│τ│δ│υ│M3│   │
1723├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
1724│Ums│M4│ │ │η│π│ζ│β│μ│ρ│ϑ│θ│ Umsch │
1725├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
1726│Str│Fe│Al│geschütz.Lz│M4│Fe│Me│Str│
1727└───┴──┴──┴───────────┴──┴──┴──┴───┘
1728
1729=== Sechste Ebene – Miniatur ===
1730┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
1731│ ¯ │¬│∨│∧│⊥│∡│∥│→│∞│∋│∅│╌│ ̦│ Back │
1732├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
1733│    │Ξ│≙│Λ│ℂ│Ω│√│Ψ│Γ│Φ│ℚ│∘│˙│ Ret │
1734├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐   │
1735│ M3  │∮│∫│∀│∃│∈│Σ│ℕ│ℝ│∂│Δ│∇│M3│   │
1736├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
1737│Ums│M4│ℜ│ℑ│ℵ│Π│ℤ│⇐│⇔│⇒│Θ│∝│ Umsch │
1738├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
1739│Str│Fe│Al│ schmal.Lz.│M4│Fe│Me│Str│
1740└───┴──┴──┴───────────┴──┴──┴──┴───┘
1741
1742== Ziffernblock ==
1743Um die Vielseitigkeit und Funktionsfähigkeit der NEO‐Tastatur zu gewährleisten,
1744sollten für alle Elemente auf dem Keypad wenn möglich die KP_‐Variante verwendet werden!
1745
1746=== Legende – Ziffernblock ===
1747┌───────┐ 1 … 1. Ebene (kein Mod)     │ 4 … 4. Ebene (Mod4)
1748│ 2 4 6 │ 2 … 2. Ebene (Umschalt)     │ 5 … 5. Ebene (Mod3+Umschalt)
1749│ 1 3 5 │ 3 … 3. Ebene (Mod3)         │ 6 … 6. Ebene (Mod3+Mod4)
1750└───────┘
1751
1752=== Rechenzeichen ===
1753┬───────┬ 1 … ASCII-Schrägstrich
1754│ / ⁄ ∣ │ 2 … ASCII-Schrägstrich
1755│ / ÷ ⌀ │ 3 … Geteiltzeichen (U+00F7 DIVISION SIGN)
1756┼───────┼ 4 … Geteiltstrich (U+2215 DIVISION SLASH)
1757          5 … Durchmesser (U+2300 DIAMETER SIGN)
1758          6 … ist ein Teiler von (U+2223 DIVIDES)
1759
1760┬───────┬ 1 … ASCII-Malzeichen
1761│ * × ⊗ │ 2 … ASCII-Malzeichen
1762│ * ⋅ ⊙ │ 3 … Malpunkt (U+2219 BULLET OPERATOR)
1763┼───────┼ 4 … Malkreuz (U+00D7 MULTIPLICATION SIGN)
1764          5 … (U+2299 CIRCLED DOT OPERATOR)
1765          6 … (U+2297 CIRCLED TIMES)
1766
1767┬───────┐ 1 … ASCII-Minus
1768│ - ∖ ∸ │ 2 … ASCII-Minus
1769│ - − ⊖ │ 3 … echtes Minuszeichen (U+2212 MINUS SIGN)
1770┼───────┤ 4 … ohne (U+2216 SET MINUS)
1771          5 … (U+2296 CIRCLED MINUS)
1772          6 … (U+2238 DOT MINUS)
1773
1774┬───────┐ 1 … ASCII-Plus
1775│ + ∓ ∔ │ 2 … ASCII-Plus
1776│ + ± ⊕ │ 3 … Plus-Minus (U+00B1 PLUS-MINUS SIGN)
1777┼───────┤ 4 … Minus-Plus (U+2213 MINUS-OR-PLUS SIGN)
1778          5 … (U+2295 CIRCLED PLUS)
1779          6 … (U+2214 DOT PLUS)
1780
1781=== Alle Ebenen – Ziffernblock ===
1782┌───────┬───────┬───────┬───────┐
1783│ ⇤ ≠ ≡ │ / ⁄ ∣ │ * × ⊗ │ - ∖ ∸ │
1784│ ⇥ = ≈ │ / ÷ ⌀ │ * ⋅ ⊙ │ - − ⊖ │
1785├───────┼───────┼───────┼───────┤
1786│✔ Hom ⌈│✘ KP↑ ⋂│  PgU ⌉│       │
1787│7  ↕  ≪│8  ↑  ∩│9 vec ≫│       │
1788├───────┼───────┼───────┤       │
1789│♣ KP← ⊆│€ Beg ⊷│  KP→ ⊇│ + ∓ ∔ │
1790│4  ←  ⊂│5  ¦  ⊶│6  →  ⊃│ + ± ⊕ │
1791├───────┼───────┼───────┼───────┤
1792│♦ End ⌊│♥ KP↓ ⋃│♠ PgD ⌋│       │
1793│1  ↔  ≤│2  ↓  ∪│3  ⇌  ≥│       │
1794├───────┴───────┼───────┤       │
1795│  ␣   Ins   □  │. Del ″│       │
1796│  0    %    ‱  │, ,/. ′│ Enter │
1797└───────────────┴───────┴───────┘
1798
1799=== Erste Ebene – Miniatur ===
1800┌───┬───┬───┬───┐
1801│ ⇥ │ / │ * │ - │
1802├───┼───┼───┼───┤
1803│ 7 │ 8 │ 9 │   │
1804├───┼───┼───┤   │
1805│ 4 │ 5 │ 6 │ + │
1806├───┼───┼───┼───┤
1807│ 1 │ 2 │ 3 │   │
1808├───┴───┼───┤   │
1809│ 0     │ , │Ent│
1810└───────┴───┴───┘
1811
1812=== Zweite Ebene – Miniatur ===
1813┌───┬───┬───┬───┐
1814│ ⇤ │ / │ * │ - │
1815├───┼───┼───┼───┤
1816│ ✔ │ ✘ │   │   │
1817├───┼───┼───┤   │
1818│ ♣ │ € │   │ + │
1819├───┼───┼───┼───┤
1820│ ♦ │ ♥ │ ♠ │   │
1821├───┴───┼───┤   │
1822│ ␣     │ . │Ent│
1823└───────┴───┴───┘
1824
1825=== Dritte Ebene – Miniatur ===
1826┌───┬───┬───┬───┐
1827│ = │ ÷ │ ⋅ │ − │
1828├───┼───┼───┼───┤
1829│ ↕ │ ↑ │vec│   │
1830├───┼───┼───┤   │
1831│ ← │ ¦ │ → │ ± │
1832├───┼───┼───┼───┤
1833│ ↔ │ ↓ │ ⇌ │   │
1834├───┴───┼───┤   │
1835│ %     │,/.│Ent│
1836└───────┴───┴───┘
1837
1838=== Vierte Ebene – Miniatur ===
1839┌───┬───┬───┬───┐
1840│ ≠ │ ⁄ │ × │ ∖ │
1841├───┼───┼───┼───┤ frc means fraction slash ⁄
1842│Hom│KP↑│PgU│   │
1843├───┼───┼───┤   │
1844│KP←│Beg│KP→│ ∓ │ Beg invokes click of the keyboard mouse
1845├───┼───┼───┼───┤
1846│End│KP↓│PgD│   │
1847├───┴───┼───┤   │
1848│  Ins  │Del│Ent│
1849└───────┴───┴───┘
1850
1851=== Fünfte Ebene – Miniatur ===
1852┌───┬───┬───┬───┐
1853│ ≈ │ ⌀ │ ⊙ │ ⊖ │
1854├───┼───┼───┼───┤
1855│ ≪ │ ∩ │ ≫ │   │
1856├───┼───┼───┤   │
1857│ ⊂ │ ⊶ │ ⊃ │ ⊕ │
1858├───┼───┼───┼───┤
1859│ ≤ │ ∪ │ ≥ │   │
1860├───┴───┼───┤   │
1861│ ‱     │ ′ │Ent│
1862└───────┴───┴───┘
1863
1864=== Sechste Ebene – Miniatur ===
1865┌───┬───┬───┬───┐
1866│ ≡ │ ∣ │ ⊗ │ ∸ │
1867├───┼───┼───┼───┤
1868│ ⌈ │ ⋂ │ ⌉ │   │
1869├───┼───┼───┤   │
1870│ ⊆ │ ⊷ │ ⊇ │ ∔ │
1871├───┼───┼───┼───┤
1872│ ⌊ │ ∪ │ ⌋ │   │
1873├───┴───┼───┤   │
1874│ □     │ ″ │Ent│
1875└───────┴───┴───┘
1876== Tipp ==
1877Trägt man unter Linux/Mac/BSD folgende Zeilen in die ~/.bashrc, ~/.zshrc oder
1878vergleichbares ein, bekommt man anschließend mittels Eingabe von »neo« oder
1879»num« die aktuelle Belegung in der Konsole angezeigt:
1880alias num='grep -m 1 -B 15 "┴───────┘"  PFAD_ZUR_DATEI/neo20.txt'
1881alias neo='grep -m 1 -B 15 "┴──────┘" PFAD_ZUR_DATEI/neo20.txt'
1882 
1883Dazu muss »PFAD_ZUR_DATEI« durch den Pfad zu dieser Datei ersetzt werden.
1884
1885Im Verzeichnis linux/bin sind umfangreichere Skripte mit größerer Funktionalität.
1886
1887== Zeichenerläuterungen ==
1888Ξ … Xi, griechischer Majuskel (U039E)
1889≙ … entspricht (U2259)
1890Λ … Lambda, griechischer Majuskel (U039B)
1891ℂ … Menge der komplexen Zahlen (U2102)
1892Ω … Omega, griechischer Majuskel (U03A9)
1893√ … Wurzel aus (U221A)
1894Ψ … Psi, griechischer Majuskel (U03A8)
1895Γ … Gamma, griechischer Majuskel (U0393)
1896Φ … Phi, griechischer Majuskel (U03A6)
1897ℚ … Menge der rationalen Zahlen (U211A)
1898∘ … Verknüpfungsoperator (U2218)
1899∮ … Integral über eine geschlossene Kurve (U222E)
1900∫ … Integral (U222B)
1901∀ … Allquantor ; für alle (U2200)
1902∃ … Existenzquantor ; es gibt (U2203)
1903∈ … Element von (U2208)
1904Σ … Sigma, griechischer Majuskel (U03A3)
1905ℕ … Menge der natürlichen Zahlen (U2115)
1906ℝ … Menge der reellen Zahlen (U211D)
1907∂ … partielle Ableitung (U2202)
1908Δ … Delta, griechischer Majuskel (U0394)
1909∇ … Nablaoperator (Gradient, Divergenz, Rotation) (U2207)
1910∝ … proportional zu (U221D)
1911ℑ … Imaginärteil einer komplexen Zahl (U2111)
1912ℜ … Realteil einer komplexen Zahl (U211C)
1913ℵ … Kardinalzahlen, Aleph-Symbol (U2135)
1914Π … Pi, griechischer Majuskel (U03A0)
1915ℤ … Menge der ganzen Zahlen (U2124)
1916⇒ … Implikation ; daraus folgt ; hinreichend für (U21D2)
1917⇔ … Äquivalenzzeichen (U21D4)
1918⇐ … notwendig für ; nur dann, wenn (U21D0)
1919Θ … Theta, griechischer Majuskel (U0398)
1920≡ … identisch (U2261)
1921□ … Beweisende (qed) (U25A1)
1922⊙ … direkte Summe ; Vektor aus der Ebene zeigend (U2299)
1923⊗ … Tensorprodukt ; Vektor in die Ebene zeigend (U2297)
1924∞ … unendlich (U221E)
1925∋ … enthält das Element (U220B)
1926ª … weiblicher Ordinalindikator (2ª) (00AA)
1927º … männlicher Ordinalindikator (1º) (00BA)
1928
1929== Hinweise zu Doppelbelegungen in Unicode ==
1930Griechische Minuskel und Majuskel besitzten in der Regel eine weitere Bedeutung, z.B.
1931• Δ für Differenz oder Fehler
1932• Θ für homöopathische Urtinktur
1933• Γ für Gammafunktion
1934
1935Einige finden sich darum an mehreren Stellen im Unicode, um (eventuelle) Unterschiede
1936deutliche machen zu können. Zur Platzersparnis haben wir stets eines (das einfachste
1937und allgemeinste) Zeichen aufgenommen:
1938• Ω (U03A9) ; Einheit des Widerstandes Ohm (U2126)
1939• Σ (U03A3) ; Summenzeichen (U2211)
1940• Δ (U0394) ; Laplaceoperator (2206) ; Dreieck, symmetrische Differenz (25B3)
1941• ∇ (U2207) ; Dreieck (U25BD)
1942• Π (U03A0) ; Produktzeichen ∏ (U220F)
1943• µ (U03BC) ; SI-Vorsilbe micro (U00B5)
1944NEO_REFERENZ
1945}
1946
1947neo_neo ()
1948{
1949cat <<NEO_NEO
1950#!/bin/sh
1951
1952if [ -f "\${NEO_CONFIG}" ]; then
1953        . "\${NEO_CONFIG}" || die "Failed to source \${NEO_CONFIG}"
1954elif [ -f "\${HOME}"/.neorc ]; then
1955        . "\${HOME}"/.neorc || die "Failed to source \${HOME}/.neorc"
1956elif [ -f /etc/neo.conf ]; then
1957        . /etc/neo.conf || die "Failed to source /etc/neo.conf"
1958else
1959        echo "No configuration file found. Using default values, this might fail!"
1960fi
1961
1962NEO_REFERENCE=\${NEO_REFERENCE:-\$HOME/neo/neo20.txt}
1963
1964if [ 0 = \$# ]; then
1965        grep -m 1 -B 15 "┴──────┘" "\${NEO_REFERENCE}"
1966else
1967        for NUM in \$@; do
1968                if [ \$((\$NUM)) -ge 1  -a \$((\$NUM)) -le 6 ]; then
1969                        grep -B 11 -m "\$NUM" "└───┴──┴──┴───────────┴──┴──┴──┴───┘" "\${NEO_REFERENCE}" | tail -n 12
1970                else
1971                        echo "Benutzung: \`basename \$0\` [1-6]"
1972                        echo "           Wenn der Aufruf ohne Zahl erfolgt, werden alle Ebenen ausgegeben."
1973                        echo "           Ansonsten werden nur die Ebenen ausgegeben, die angegeben sind."
1974                        exit 1
1975                fi
1976        done
1977fi
1978NEO_NEO
1979}
1980
1981neo_num ()
1982{
1983cat <<NEO_NUM
1984#!/bin/sh
1985
1986if [ -f "\${NEO_CONFIG}" ]; then
1987        . "\${NEO_CONFIG}" || die "Failed to source \${NEO_CONFIG}"
1988elif [ -f "\${HOME}"/.neorc ]; then
1989        . "\${HOME}"/.neorc || die "Failed to source \${HOME}/neo.conf"
1990elif [ -f /etc/neo.conf ]; then
1991        . /etc/neo.conf || die "Failed to source /etc/neo.conf"
1992else
1993        echo "No configuration file found. Using default values, this might fail!"
1994fi
1995
1996NEO_REFERENCE=\${NEO_REFERENCE:-\$HOME/neo/neo20.txt}
1997
1998if [ 0 = \$# ]; then
1999        grep -m 1 -B 15 "┴───────┘" "\${NEO_REFERENCE}"
2000else
2001        for NUM in \$@; do
2002                if [ \$((\$NUM)) -ge 1  -a \$((\$NUM)) -le 6 ]; then
2003                        grep -B 11 -m "\$NUM" "└───────┴───┴───┘" "\${NEO_REFERENCE}" | tail -n 12
2004                else
2005                        echo "Benutzung: \`basename \$0\` [1-6]"
2006                        echo "           Wenn der Aufruf ohne Zahl erfolgt, werden alle Ebenen ausgegeben."
2007                        echo "           Ansonsten werden nur die Ebenen ausgegeben, die angegeben sind."
2008                        exit 1
2009                fi
2010        done
2011fi
2012NEO_NUM
2013}
2014
2015neorc ()
2016{
2017cat <<NEORC
2018# This file contains the configuration for the Neo scripts
2019
2020# To use the scripts ›neo‹ and ›num‹ you should specify the full path to the
2021# Neo reference
2022NEO_REFERENCE="\$HOME/neo/neo20.txt"
2023
2024
2025# Select the neo Variant to be used when using an X Server
2026# Values are "xkbmap", "xmodmap", "xprog", "alternative" or "evdev"
2027# default is xkbmap, this variable should always be set
2028NEO_X_VARIANTE="xmodmap"
2029
2030
2031# When using xkbmap, you may specify which xkbmap should be used, the default
2032# is "de" (This is useful if you installed the symbols file under a different
2033# name):
2034#NEO_XKBMAP=de
2035
2036# You can also specify the xkbmap variant to be used, the default is "neo":
2037#NEO_XKBVARIANT=neo
2038
2039
2040# When using a xmodmap, you may specify the full path to the xmodmap to be used.
2041# Default:
2042NEO_XMODMAP="\$HOME/neo/neo_de.xmodmap"
2043#NEO_XMODMAP_XPROG="\$HOME/neo/neo_de_x-prog.xmodmap"
2044#NEO_XMODMAP_ALTERNATIVE="\$HOME/neo/neo_de_alternative.xmodmap"
2045#NEO_XMODMAP_EVDEV="\$HOME/neo/neo_de_evdev.xmodmap"
2046
2047
2048# Standard keyboard layout to switch back to when executing "uiae":
2049#STD_XKBMAP=de
2050
2051# Standard layout variant to switch back to when executing "uiae":
2052#STD_XKBVARIANT=nodeadkeys
2053
2054# Numlock status when switching to standard keyboard layout using "uiae",
2055# values are "on" and "off":
2056#NUM_LOCK_STATUS=on
2057
2058
2059# For Neo without an X System set the path to the console keymap
2060NEO_CONSOLE_KEYMAP="\$HOME/neo/neo" # if necessary add „.map“
2061
2062# Set the standard console keymap to switch back to
2063#STD_CONSOLE_KEYMAP="de-latin1-nodeadkeys"
2064
2065
2066# If you installed one of these programs in a non-standard path you may,
2067# uncomment the variable and change the path to the executable:
2068#PATH_XMODMAP=/usr/bin/xmodmap
2069#PATH_SETXKBMAP=/usr/bin/setxkbmap
2070#PATH_LOADKEYS=/usr/bin/loadkeys
2071#PATH_SUDO=/usr/bin/sudo
2072#PATH_SETLEDS=/usr/bin/setleds
2073#PATH_NUMLOCKX=/usr/bin/numlockx
2074#PATH_XSET=/usr/bin/xset
2075
2076NEORC
2077}
2078#!/bin/bash
2079
2080profile_neo() {
2081cat <<PROFIL
2082
2083# NEO:
2084PATH=\$PATH:$inst_dir/  # für asdf und uiae
2085export PATH             # für asdf und uiae
2086asdf                    # mit einem # am Zeilenanfang bleibt QWERTZ das Standardlayout, sonst ist es NEO
2087PROFIL
2088}
2089
2090profile_qwertz() {
2091cat <<PROFIL
2092
2093# NEO:
2094PATH=\$PATH:$inst_dir/  # für asdf und uiae
2095export PATH             # für asdf und uiae
2096# asdf                  # mit einem # am Zeilenanfang bleibt QWERTZ das Standardlayout, sonst ist es NEO
2097PROFIL
2098}
2099
2100neo_path() {
2101cat <<NEO_PATH
2102PATH=$PATH:$inst_dir
2103export PATH
2104echo "Die Belegung wird nun auf NEO geändert…"
2105asdf
2106NEO_PATH
2107}
2108
2109# *** main program ***
2110clear
2111echo
2112echo "   *** NEO – Ergonomie und Zeichenvielfalt ***"
2113echo
2114echo
2115echo " Ihr System wird untersucht…"
2116echo
2117
2118# check for an existing neo configuration
2119if [ -f "${NEO_CONFIG}" ]; then
2120        . "${NEO_CONFIG}" || die "Failed to source ${NEO_CONFIG}"
2121elif [ -f "${HOME}"/.neorc ]; then
2122        . "${HOME}"/.neorc || die "Failed to source ${HOME}/.neorc"
2123elif [ -f /etc/neo.conf ]; then
2124        . /etc/neo.conf || die "Failed to source /etc/neo.conf"
2125else
2126
2127# no configuration file found → install NEO
2128        install_options
2129        neo_path > $inst_dir/starte_neo
2130        echo
2131        echo -e "Um NEO nun jetzt zu aktivieren geben Sie bitte »${green}. $inst_dir/starte_neo${normal}« (mit Punkt und Leerzeichen!) ein."
2132        echo -e "Danach oder nach dem nächsten Login kann jederzeit mit ${green}asdf${normal} von QWERTZ zu NEO und mit ${green}uiae${normal} von NEO zu QWERTZ gewechselt werden."
2133        exit
2134fi
2135
2136
2137# configuration file found → delete/deinstall options
2138deinstall_options
2139exit
2140
Note: See TracBrowser for help on using the browser.