!! ~/.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$, $Date$
!! 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 113 = 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 KP_0 U202F


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The first row (number Row)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 49 = dead_circumflex dead_caron dead_breve dead_stroke dead_belowdot dead_belowdot dead_belowdot

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

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

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

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The upper row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 24 = x X x            Greek_xi     x         x         Greek_XI
keycode 25 = v V underscore   v            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 exclamdown radical
keycode 30 = h      H     less      Greek_psi             KP_7       KP_7       Greek_PSI
keycode 31 = g      G     greater   Greek_gamma           KP_8       KP_8       Greek_GAMMA
keycode 32 = f      F     equal     U03D5                 KP_9       KP_9       Greek_PHI
keycode 33 = q      Q     ampersand Greek_phi             plus       plus       U211A
keycode 34 = ssharp U1E9E U017F     Greek_finalsmallsigma ssharp     ssharp     jot

keycode 35 = dead_tilde dead_macron dead_diaeresis dead_doubleacute

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The home row (middle row)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 38 = u U backslash  u             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 questiondown Greek_SIGMA
keycode 44 = n N parenleft  Greek_nu      KP_4         KP_4         U2115
keycode 45 = r R parenright Greek_rho     KP_5         KP_5         U211D
keycode 46 = t T minus      Greek_tau     KP_6         KP_6         partialderivative
keycode 47 = d D colon      Greek_delta   comma        comma        Greek_DELTA
keycode 48 = y Y at         Greek_upsilon y            y            nabla

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The lower row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 52 = udiaeresis Udiaeresis numbersign udiaeresis Escape   Escape    variation
keycode 53 = odiaeresis Odiaeresis dollar     odiaeresis 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 z        z         U2124

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


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

!keycode 77 = Num_Lock Pointer_EnableKeys
keycode 112 = KP_Divide   KP_Divide   division  U2215
keycode 63  = KP_Multiply U2217 multiply  U22C5
keycode 82  = KP_Subtract KP_Subtract U2212

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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 108 = 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).