!! ~/.xmodmap
!! 
!! German NEO-Layout
!! adopted 2004 by Hanno Behrens <Hanno.Behrens@gmx.de>
!! inspired by Dvorak/de-ergo  http://www.goebel-consult.de/de-ergo/
!! Authors: 
!!      Benjamin Kellermann <Benjamin dot Kellermann at gmx dot Germany>
!!      Erik Streb <mail at erikstreb dot de>
!! 
!! Other Questions:
!!      <mailinglist at neo-layout dot org>
!! 
!! $Revision: 497 $, $Date: 2008-05-05 15:22:14 +0200 (Mo, 05 Mai 2008) $
!! http://pebbles.schattenlauf.de/layout.php
!! 
!! To try the layout in this file, simply do xmodmap <file>.
!! To load the layout in this file at X startup, simply store it as
!! ~/.xmodmap

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Modifier definition
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
remove Lock = Caps_Lock
remove Mod3 = ISO_Level3_Shift
clear Mod3
clear Mod4

! Shift 50=left 62=right
! Shift+Shift ergibt ein ShiftLock (wie Caps, wirkt aber auf alle Zeichen, nicht nur auf Großbuchstaben)
! Der Lock lässt sich durch ein weiteres Shift lösen.
! Eigentlich (siehe Referenz) sollte hier ein CapsLock stehen. Der funktioniert aber über Shift+Shift.
keycode 50 =  Shift_L Shift_Lock
keycode 62 =  Shift_R Shift_Lock

! Mod3 66=left 51=right
! Make CapsLock an modifier called Mod3 (similar to AltGr) (Mode_switch or ISO_Group_Shift is for 3rd and 4th level)
! Make former CapsLock and qwertz-# to Mode_switch or ISO_Group_Shift (which is the 3rd and 4th level)
! Mod3(links) (=Qwertz-Caps) erlaubt nur 4 Ebenen
! ISO_Lock funktioniert nicht! Weder das Einrasten, noch das Lösen
! 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.
keycode 51 =  ISO_Group_Shift ISO_Group_Shift ISO_Lock
keycode 66 =  ISO_Group_Shift ISO_Group_Shift ISO_Lock

! Mod4 94=left 113=right
! Make the former AltGr and qwertz-< to Mod4 (ISO_Level3_Shift)
! Mod4(rechts)+Mod4(links) lässt Mod4 einrasten (Mod4Lock)
! das funktioniert nur in dieser Reihenfolge, da Mod4(rechts) (=Qwertz-AltGr) nur 4 Ebenen hat
keycode 108 = ISO_Level3_Shift  ISO_Level3_Shift  ISO_Group_Shift   ISO_Group_Shift  ISO_Level3_Lock
keycode 94 =  ISO_Level3_Shift  ISO_Level3_Shift  ISO_Group_Shift   ISO_Group_Shift  ISO_Level3_Lock

!add Mod3 = ISO_Group_Shift
!add Mod4 = ISO_Level3_Shift


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Ebenen
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Ebene 1: normal
! Ebene 2: Shift
! Ebene 3: Mod3
! Ebene 4: Mod4 (zum Markieren Shift+Mod4)
! Ebene 5: Shift+Mod3
! Ebene 6: Mod3+Mod4 (in dieser Reihenfolge!)
! Compose (keine eigene Ebene): Mod3+Tab
! Feststellen/Capslock: Shift+Shift

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! general Lock
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Einrasten über linke Win-Taste+Modifier, Lösen über nochmaliges Betätigen des Modifiers
! ShiftLock und Mo5Lock funktionieren, Mod3Lock lässt sich aber nicht mehr lösen!!!!
! keycode 115 = ISO_Lock


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Tab as Multi_key (Compose)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 23 = Tab ISO_Left_Tab Multi_key


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Space key
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 65 = space space space nobreakspace KP_0 NoSymbol U202F


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The first row (number Row)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!            Ebene1          Ebene2     Ebene3     Ebene5      Ebene4         Ebene4+Sh      Ebene6
keycode 49 = dead_circumflex dead_caron dead_breve dead_stroke dead_belowdot  NoSymbol       dead_belowdot

keycode 10 = 1 degree         onesuperior   femalesymbol enfilledcircbullet   NoSymbol       notsign
keycode 11 = 2 numerosign     twosuperior   U26A5                 U2023       NoSymbol       logicalor
keycode 12 = 3 section        threesuperior malesymbol            NoSymbol    NoSymbol       logicaland
keycode 13 = 4 guillemotright U203A         U2113                 KP_Prior    KP_Prior       uptack
keycode 14 = 5 guillemotleft  U2039         dagger                NoSymbol    NoSymbol       U2221
keycode 15 = 6 EuroSign       cent          NoSymbol              sterling    NoSymbol       U2225

keycode 16 = 7 dollar               yen                  U03F0    currency    NoSymbol       notelementof
keycode 17 = 8 doublelowquotemark   singlelowquotemark   NoSymbol KP_Divide   NoSymbol       U2204
keycode 18 = 9 leftdoublequotemark  leftsinglequotemark  NoSymbol KP_Multiply NoSymbol       U2226
keycode 19 = 0 rightdoublequotemark rightsinglequotemark NoSymbol minus       NoSymbol       emptyset

keycode 20 = minus      endash      emdash               U2011    NoSymbol    NoSymbol       hyphen
keycode 21 = dead_acute dead_grave  dead_cedilla    dead_ogonek dead_abovedot NoSymbol       dead_abovering

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The upper row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 24 = x      X     NoSymbol     Greek_xi           NoSymbol   NoSymbol   Greek_XI
keycode 25 = v      V     underscore   NoSymbol           BackSpace  BackSpace  U2259
keycode 26 = l      L     bracketleft  Greek_lambda       KP_Up      KP_Up      Greek_LAMBDA
keycode 27 = c      C     bracketright Greek_chi          KP_Delete  KP_Delete  U2102
keycode 28 = w      W     asciicircum  Greek_omega        KP_Insert  KP_Insert  Greek_OMEGA

keycode 29 = k      K     exclam       Greek_kappa        exclamdown NoSymbol   radical
keycode 30 = h      H     less         Greek_psi          KP_7       NoSymbol   Greek_PSI
keycode 31 = g      G     greater      Greek_gamma        KP_8       NoSymbol   Greek_GAMMA
keycode 32 = f      F     equal        U03D5              KP_9       NoSymbol   Greek_PHI
keycode 33 = q      Q     ampersand    Greek_phi          plus       NoSymbol   U211A
keycode 34 = ssharp U1E9E U017F     Greek_finalsmallsigma NoSymbol   NoSymbol   jot

keycode 35 = dead_tilde dead_macron dead_diaeresis dead_doubleacute

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The home row (middle row)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 38 = u U backslash  NoSymbol      KP_Home  KP_Home  U222E
keycode 39 = i I slash      Greek_iota    KP_Left  KP_Left  integral
keycode 40 = a A braceleft  Greek_alpha   KP_Down  KP_Down  U2200
keycode 41 = e E braceright Greek_epsilon KP_Right KP_Right U2203
keycode 42 = o O asterisk   Greek_omicron KP_End   KP_End   elementof

keycode 43 = s S question   Greek_sigma   questiondown NoSymbol     Greek_SIGMA
keycode 44 = n N parenleft  Greek_nu      KP_4         NoSymbol     U2115
keycode 45 = r R parenright Greek_rho     KP_5         NoSymbol     U211D
keycode 46 = t T minus      Greek_tau     KP_6         NoSymbol     partialderivative
keycode 47 = d D colon      Greek_delta   NoSymbol     NoSymbol     Greek_DELTA
keycode 48 = y Y at         Greek_upsilon NoSymbol     NoSymbol     nabla

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The lower row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 52 = udiaeresis Udiaeresis numbersign NoSymbol   Escape   Escape    variation
keycode 53 = odiaeresis Odiaeresis dollar     NoSymbol   Tab      Tab       U2111
keycode 54 = adiaeresis Adiaeresis bar        Greek_eta  KP_Next  KP_Next   U211C
keycode 55 = p          P          asciitilde Greek_pi   KP_Enter KP_Enter  Greek_PI
keycode 56 = z          Z          grave      Greek_zeta NoSymbol NoSymbol  U2124

keycode 57 = b      B        plus       Greek_beta  KP_Decimal NoSymbol     implies
keycode 58 = m      M        percent    Greek_mu    KP_1       NoSymbol     ifonlyif
keycode 59 = comma  U22EE    quotedbl   U03F1       KP_2       NoSymbol     U21D0
keycode 60 = period ellipsis apostrophe Greek_theta KP_3       NoSymbol     Greek_THETA
keycode 61 = j      J        semicolon  U03D1       NoSymbol   NoSymbol     identical


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Keypad
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The uppest row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!keycode 77 = Num_Lock Pointer_EnableKeys
keycode 106 = KP_Divide   KP_Divide   division  U2215
keycode 63  = KP_Multiply KP_Multiply multiply  U2219
keycode 82  = KP_Subtract KP_Subtract U2212     NoSymbol

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The upper row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 79 =  KP_Home     KP_7        U2195      U226A
keycode 80 =  KP_Up       KP_8        uparrow    intersection
keycode 81 =  KP_Prior    KP_9        U2297      U226B
keycode 86 =  KP_Add      KP_Add      plusminus  U2213

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The middle row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 83 =  KP_Left     KP_4        leftarrow  includedin
keycode 84 =  EuroSign    KP_5        infinity   containsas
keycode 85 =  KP_Right    KP_6        rightarrow includes

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The lower row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 87 =  KP_End      KP_1        U2194      lessthanequal 
keycode 88 =  KP_Down     KP_2        downarrow  union 
keycode 89 =  KP_Next     KP_3        U21CC      greaterthanequal 
keycode 104 = KP_Enter    KP_Enter    notequal   U2248
!keysym <KPEQ> KP_Equal

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The lowest row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 90 = KP_Insert    KP_0        percent    U2030
keycode 91 = KP_Delete    KP_Decimal  period     comma



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Anpassungen (mögliche Verbesserungen)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Es gibt naheliegende Möglichkeiten, NEO anzupassen und damit zu verbessern.
! Da sie jedoch nicht zwingend notwendige Redundanzen erzeugen und sich nicht in die
! thematischen Ordnung der Ebenen eingliedern, sind folgende Anpassungen nicht in der offiziellen
! Version von NEO berücksichtigt und müssen bewusst ermöglicht werden, indem das Ausrufezeichen zu
! Beginn der folgenden keycode-Zeile entfernt wird.
!
! Zusätzliches @-Zeichen auf Mod4+x (gleicher Handgriff wie AltGr+q auf QWERTZ)
! Dies ist insbesondere auf ergonomischen Tastaturen mit größerer Mod4 auf der linken Seite sinnvoll
! keycode 24 = x X at           Greek_xi     at        at        Greek_XI
!
! Zusätzliches Gänsefüßchen unten („) neben dem Doppelpunkt
! Dies ist für Wörtliche Rede sinnvoll, um bei :„ oder : „ den Modifer Mod3 liegen lassen zu können
! keycode 48 = y Y doublelowquotemark Greek_upsilon y  y            nabla



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Bemerkungen
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 1.) Ebene 6 (hier: der 7. Eintrag) erreicht man über ISO_Group_Shift+ISO_Group_Shift
!     (bzw. mode_switch+mode_switch) und über keine andere mir bekannte kombination. Insbesondere legt
!     ISO_Level3_Shift Level3 (Ebene 4, hier: Eintrag 5) fest, verschiebt also nicht. Darum kann man
!     ISO_Level3_Shift nur mit Shift sinnvoll kombinieren. Daraus resultiert, dass Ebene 6 nur über
!     Mod3+Mod4 (in dieser Reihenfolge!) erreicht werden kann.
!
! 2.) Die KP_-Einträge auf Ebene 4 ermöglichen die Steuerung des Mauscursors mit der Tastatur.
!     Hierzu wird mittels Shift+Num dieser Betriebsmodus ein- und später wieder ausgeschaltet.
!     Die Steuerung des Cursors kann über den echten Ziffernblock oder den auf Ebene 4 (sinnvollerweise
!     mit eingerastetem Mod4) erfolgen.
!
! 3.) Die KP_-Einträge auf der linken Seite der Ebene 4 müssen vorhanden sein, da anderenfalls Probleme
!     mit (älteren) Programmen wie xterm oder xedit auftreten. Da es keinen mir bekannten Ersatz für
!     Backspace gibt, funktioniert im xterm das v nicht. Wird dies benötigt, muss das Backspace (Mod4+v)
!     entfernt (und z.B. durch v ersetzt) werden.
!
! 4.) Auf 0 und q (Ebene 4) muss minus und plus stehen (nicht KP_Substract und KP_Add)!
!     Anderenfalls funktionieren diese Tasten unter xterm mit shift+q als Vergrößerung (Shift+KP_Add)
!     und shift+0 als Verkleinerung (Shift+KP_Substract).