!! ~/.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
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
clear Lock
clear Mod2
! Mod2 war NumLock !
clear Mod3
clear Mod5

! 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.
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
! 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_First_Group
keycode 66 =  ISO_Group_Shift ISO_Group_Shift ISO_First_Group

! 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
! Der Lock lässt sich durch ein weiteres Mod4 lösen.
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 Mod5 = ISO_Level3_Shift

keycode 115 = Super_L
! keycode 116 = Super_R
keycode 116 = Multi_key Multi_key

add Mod4 = Super_L Super_R


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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
! Mod4-Lock: Mod4(rechts)+Mod4(links)


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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
! add Lock = ISO_Lock



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


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Space key
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 65 = space space space nobreakspace 0 0 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   U2081	 enfilledcircbullet   NoSymbol       notsign
!		°		¹	  subscript-1		•				¬
keycode 11 = 2 numerosign     twosuperior   U2082                 U2023       NoSymbol       logicalor
!		№		²	  subscript-2		‣				∨
keycode 12 = 3 section        threesuperior U2083                 NoSymbol    NoSymbol       logicaland
!		§		³	  subscript-3						∧
keycode 13 = 4 guillemotright U203A         U2113                 Prior       Prior          U22A5
!		»		›		ℓ liter						⊥ perpendicular
keycode 14 = 5 guillemotleft  U2039         femalesymbol          NoSymbol    NoSymbol       U2221
!		«		‹		♀						∡ angle sign
keycode 15 = 6 EuroSign       cent           malesymbol           sterling    NoSymbol       U2225
!		€		¢		♂		£				∥ parallel

keycode 16 = 7 dollar               	yen             	Greek_kappa	currency	NoSymbol  	notelementof
!		$			¥			κ		¤				∉
keycode 17 = 8 doublelowquotemark	singlelowquotemark   	U27E8		slash   	slash          	U2204
!		„			‚			⟨ (bra)		/				∄ not exist
keycode 18 = 9 leftdoublequotemark	leftsinglequotemark  	U27E9    	asterisk 	asterisk       	U2226
!		“			‘			⟩ (ket)		*				∦ not parallel
keycode 19 = 0 rightdoublequotemark	rightsinglequotemark 	U2080    	minus       	NoSymbol       	emptyset
!		”			’			subscript-0	-				∅

keycode 20 = minus      endash      emdash              U2011      	NoSymbol    NoSymbol       hyphen
!		-	–		—		‑ non-breaking					­ 
keycode 21 = dead_acute dead_grave  dead_cedilla  	dead_ogonek	dead_abovedot NoSymbol     dead_abovering
!		'	`		¸		˛		˙				°

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The upper row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 24 = x      X     ellipsis     Greek_xi           U22EE      NoSymbol   U039E
!				…	ξ		 ⋮ vert. ell		Ξ Greek_XI
keycode 25 = v      V     underscore   NoSymbol           BackSpace  BackSpace  U2259
!										≙ 
keycode 26 = l      L     bracketleft  Greek_lambda       Up         Up         U039B
!					λ					Λ Greek_LAMBDA
keycode 27 = c      C     bracketright Greek_chi          Delete     Delete     U2102
!					χ					ℂ komplex
keycode 28 = w      W     asciicircum  Greek_omega        Insert     Insert     U03A9
!					ω					Ω Greek_OMEGA

keycode 29 = k      K     exclam       U03F0              exclamdown NoSymbol   radical
!				!	ϰ Greek_kappa		¡		√
keycode 30 = h      H     less         Greek_psi          7          7          U03A8
!				<	ψ					Ψ Greek_PSI
keycode 31 = g      G     greater      Greek_gamma        8          8          U0393
!				>	γ					Γ Greek_GAMMA
keycode 32 = f      F     equal        Greek_phi          9          9          U03A6
!				=	φ					Φ Greek_PHI
keycode 33 = q      Q     ampersand    U03D5              plus       NoSymbol   U211A
!				&	ϕ Greek_phi		+		ℚ rational

keycode 34 = ssharp	U1E9E 		U017F		Greek_finalsmallsigma	NoSymbol	NoSymbol	U2218
!	     ß		ẞ Capital ß	ſ long s	ς							∘ ring operator

keycode 35 = dead_tilde	dead_macron	dead_diaeresis	dead_doubleacute        NoSymbol        NoSymbol        NoSymbol
!		~	¯		"		˝

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The home row (middle row)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 38 = u 	U 	backslash	NoSymbol	Home		Home		U222E
!			\								∮ contour integral
keycode 39 = i 	I 	slash		Greek_iota	Left    	Left  	integral
!			/		ι						∫
keycode 40 = a	A 	braceleft  	Greek_alpha   	Down    	Down  	U2200
!			{		α						∀ for all
keycode 41 = e 	E 	braceright 	Greek_epsilon 	Right   	Right 	U2203
!			}		ε						∃ there exists
keycode 42 = o 	O 	asterisk	Greek_omicron	End		End      	elementof
!			*		ο						∈

keycode 43 = s 	S 	question   	Greek_sigma   	questiondown 	NoSymbol     	U03A3
!			?		σ		¿				Σ Greek_SIGMA
keycode 44 = n 	N 	parenleft  	Greek_nu      	4         	4        	U2115
!			(		ν						ℕ natural
keycode 45 = r 	R 	parenright 	U03F1         	5         	5        	U211D
!			)		ϱ Greek_rho					ℝ real
keycode 46 = t 	T 	minus      	Greek_tau     	6         	6        	partialderivative
!			-		τ						∂
keycode 47 = d 	D 	colon      	Greek_delta   	comma        	NoSymbol     	U0394
!			:		δ		,				Δ Greek_DELTA	
keycode 48 = y 	Y 	at         	Greek_upsilon 	period       	NoSymbol     	nabla
!			@		υ		.				∇

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The lower row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 52 = udiaeresis	Udiaeresis	numbersign	NoSymbol	Escape		Escape		variation
!		ü	Ü		#								∝ proportional to
keycode 53 = odiaeresis Odiaeresis 	dollar     	NoSymbol   	Tab		Tab		U2111
!		ö	Ö		$								ℑ imaginary part
keycode 54 = adiaeresis Adiaeresis 	bar        	Greek_eta  	Next		Next		U211C
!		ä	Ä		|		η						ℜ real part
keycode 55 = p          P          	asciitilde 	Greek_pi   	Return  	Return		U03A0
!					~		π						Π Greek_PI
keycode 56 = z          Z          	grave      	Greek_zeta	Undo		Redo		  U2124
!					`		ζ						ℤ integers

keycode 57 = b      	B        	plus       	Greek_beta  	colon      	NoSymbol     	U21D0
!					+		β		:				⇐
keycode 58 = m      	M        	percent    	Greek_mu    	1       	1       	ifonlyif
!					%		μ						⇔
keycode 59 = comma  	NoSymbol	quotedbl   	Greek_rho   	2       	2        	U21D2
!		,		.	"		ρ						⇒ implies 
keycode 60 = period 	NoSymbol	apostrophe 	U03D1       	3       	3        	U0398
!		.			'		ϑ Greek_theta					Θ Greek_THETA
keycode 61 = j      	J        	semicolon  	Greek_theta 	semicolon  	NoSymbol     	identical
!					;		θ		;				≡


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

keycode 77  = equal		notequal		U2248		Pointer_EnableKeys    NoSymbol   NoSymbol  NoSymbol
!		=		≠			≈ almost equal	(keypad-mouse mode)
keycode 112 = KP_Divide		KP_Divide		division	U2044                 NoSymbol   NoSymbol  NoSymbol
!	      /			/			÷		(für ⁶⁄₅₉)
keycode 63  = KP_Multiply	KP_Multiply		U22C5		multiply              NoSymbol   NoSymbol  NoSymbol
!	      *			*			⋅		×
keycode 82  = KP_Subtract	KP_Subtract		minus		U2212                 NoSymbol   NoSymbol  NoSymbol
!	      -			-			-		− real minus

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The upper row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 79 =  KP_7	KP_Home		U2195		dagger                                NoSymbol   NoSymbol  NoSymbol
!					↕ arrow		†
keycode 80 =  KP_8	KP_Up		uparrow		intersection                          NoSymbol   NoSymbol  NoSymbol
!					↑		∩	
keycode 81 =  KP_9	KP_Prior	containsas	U2297                                 NoSymbol   NoSymbol  NoSymbol
!					∋		⊗	
keycode 86 =  KP_Add	KP_Add		plusminus	U2213                                 NoSymbol   NoSymbol  NoSymbol
!	      +		+2		±		∓ minus-plus	

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The middle row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 83 =  KP_4	KP_Left		leftarrow	includedin                            NoSymbol   NoSymbol  NoSymbol
!					←		⊂	
keycode 84 =  KP_5	KP_Begin	infinity	EuroSign                              NoSymbol   NoSymbol  NoSymbol
!					∞		€
keycode 85 =  KP_6	KP_Right	rightarrow	includes                              NoSymbol   NoSymbol  NoSymbol
!					→		⊃

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The lower row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 87 =  KP_1	KP_End		U2194		U2714                                 NoSymbol   NoSymbol  NoSymbol
!					↔ arrow		✔ check mark	
keycode 88 =  KP_2	KP_Down		downarrow	union                                 NoSymbol   NoSymbol  NoSymbol
!					↓		∪	
keycode 89 =  KP_3	KP_Next		U21CC		U2717                                 NoSymbol   NoSymbol  NoSymbol
!					⇌ arro		✗ battol X
keycode 108 = KP_Enter	KP_Enter	KP_Enter	KP_Enter                              NoSymbol   NoSymbol  NoSymbol
!								


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The lowest row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 90 = KP_0	KP_Insert	percent		U2030                                 NoSymbol   NoSymbol  NoSymbol
!					%		‰ per mille	
keycode 91 = comma	KP_Delete	period		KP_Separator                          NoSymbol   NoSymbol  NoSymbol
!	     ,				.		,/.		




!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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         U039E



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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 ermöglichen die Steuerung des Mauscursors mit der Tastatur.
!     Hierzu wird mittels Mod4+z dieser Betriebsmodus ein- und später wieder ausgeschaltet.
!     Die Steuerung des Cursors kann über den Ziffernblock 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).