!! ~/.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>
!!      Pascal Hauck <pascal dot hauck at web 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


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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!)
! Ebene 7: wird (bis auf technisch bedingte Ausnahmen) nicht belegt
! Multi_key=Compose (keine eigene Ebene): Mod3+Tab or right window key
! Feststellen/Shift_Lock: Shift+Shift
! Mod4_Lock: Mod4(rechts)+Mod4(links)

! Reihenfolge der Ebenen in der Xmodmap:
!            Ebene1  Ebene2  Ebene3  Ebene5  Ebene4  Ebene4+Sh  Ebene6 Ebene7


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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
! 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 66 =  ISO_Group_Shift ISO_Group_Shift ISO_First_Group  NoSymbol
keycode 51 =  ISO_Group_Shift ISO_Group_Shift ISO_First_Group  NoSymbol

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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 94  = ISO_Level3_Shift  ISO_Level3_Shift  ISO_Group_Shift   ISO_Group_Shift  ISO_Level3_Lock  NoSymbol
keycode 113 = ISO_Level3_Shift  ISO_Level3_Shift  ISO_Group_Shift   ISO_Group_Shift  ISO_Level3_Lock  NoSymbol

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! window keys
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 115 = Super_L
! keycode 116 = Super_R
keycode 116 = Multi_key Multi_key
add Mod4 = Super_L

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


! add Mod3 = ISO_Group_Shift
! add Mod5 = ISO_Level3_Shift



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! main keyboard
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Tab key
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
keycode 23 = Tab  ISO_Left_Tab  Multi_key  ISO_Level3_Lock

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

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! dead keys
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!            Ebene1		Ebene2		Ebene3		Ebene5		Ebene4		Ebene4+Sh	Ebene6		Ebene7

keycode 49 = dead_circumflex	dead_tilde	dead_abovering	dead_breve	dead_caron  Pointer_EnableKeys	dead_macron	NoSymbol
! called T1	ˆ		˜		˚		˘		ˇ	   (keypad-mouse mode)	¯
keycode 21 = dead_grave		NoSymbol	dead_diaeresis	U1FFE		NoSymbol	NoSymbol	NoSymbol	NoSymbol
! called T2	`				¨		῾ dasia (asper)
keycode 35 = dead_acute		dead_cedilla	dead_stroke	U1FBF	     dead_doubleacute	NoSymbol	dead_abovedot	NoSymbol
! called T3	´		¸		/		᾿ psili (lenis)	˝				˙



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The first row (number Row)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!            Ebene1		Ebene2		Ebene3		Ebene5		Ebene4		Ebene4+Sh	Ebene6		Ebene7

keycode 10 = 	1		degree		onesuperior	onesubscript  	masculine   	NoSymbol	notsign		NoSymbol
!				°		¹	  	₁		º	  			¬
keycode 11 = 	2		section		twosuperior	twosubscript	ordfeminine	NoSymbol	logicalor	NoSymbol
!				§		²	  	₂		ª				∨
keycode 12 = 	3		U2113		threesuperior	threesubscript	numerosign	NoSymbol	logicaland	NoSymbol
!				ℓ liter		³	  	₃		№				∧
keycode 13 = 	4		guillemotright	U203A		dagger		Prior		Prior		downtack	NoSymbol
!				»		›		†						⊥ perpendicular
keycode 14 = 	5		guillemotleft	U2039		femalesymbol	NoSymbol	NoSymbol	U2221		NoSymbol
!				«		‹		♀						∡ angle sign
keycode 15 = 	6		EuroSign	cent		malesymbol	sterling	NoSymbol	U2225		NoSymbol
!				€		¢		♂		£				∥ parallel

keycode 16 = 	7		dollar		yen		Greek_kappa	currency	NoSymbol	rightarrow	NoSymbol
!				$		¥		κ		¤				→
keycode 17 = 	8   doublelowquotemark    singlelowquotemark	leftanglebracket  KP_Divide	KP_Divide	infinity	NoSymbol
!				„		‚		⟨ (bra)		  /		/		∞
keycode 18 = 	9   leftdoublequotemark   leftsinglequotemark	rightanglebracket KP_Multiply	KP_Multiply	containsas	NoSymbol
!				“		‘		⟩ (ket)		  *		*		∋
keycode 19 = 	0   rightdoublequotemark  rightsinglequotemark  zerosubscript	KP_Subtract	KP_Subtract	emptyset	NoSymbol
!			”			’		₀		-		-		∅
keycode 20 = minus		endash		emdash		U2011		NoSymbol	NoSymbol	hyphen		NoSymbol
!		-		–		—		‑ non-breaking					­ soft hyphen 

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The upper row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!            Ebene1		Ebene2		Ebene3		Ebene5		Ebene4		Ebene4+Sh	Ebene6		Ebene7

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

keycode 29 = 	k		K		exclam		U03F0		exclamdown	NoSymbol	radical		NoSymbol
!						!		ϰ Greek_kappa	¡				√
keycode 30 = 	h		H		less		Greek_psi	KP_7		KP_7		Greek_PSI	Greek_PSI
!						<		ψ						Ψ		Ψ
keycode 31 = 	g		G		greater		Greek_gamma	KP_8		KP_8		Greek_GAMMA	Greek_GAMMA
!						>		γ						Γ		Γ
keycode 32 = 	f		F		equal		Greek_phi	KP_9		KP_9		Greek_PHI	Greek_PHI
!						=		φ 						Φ		Φ
keycode 33 = 	q		Q		ampersand	U03D5		KP_Add		KP_Add		U211A		NoSymbol
!						&		ϕ Greek_phi	+		+		ℚ rational
keycode 34 = ssharp		U1E9E		U017F	 Greek_finalsmallsigma  NoSymbol	NoSymbol	jot		NoSymbol
!	     	ß		ẞ Capital ß	ſ long s	ς						∘ ring operator

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The home row (middle row)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!            Ebene1		Ebene2		Ebene3		Ebene5		Ebene4		Ebene4+Sh	Ebene6		Ebene7

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

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

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The lower row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!            Ebene1		Ebene2		Ebene3		Ebene5		Ebene4		Ebene4+Sh	Ebene6		Ebene7

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

keycode 57 = 	b		B		plus		Greek_beta	colon		NoSymbol	U21D0		NoSymbol
!						+		β		:				⇐
keycode 58 = 	m		M		percent		Greek_mu	KP_1		KP_1		ifonlyif	NoSymbol
!						%		μ						⇔
keycode 59 = comma	   enfilledcircbullet	quotedbl	Greek_rho	KP_2		KP_2		U21D2		NoSymbol
!		,		•		"		ρ						⇒ implies 
keycode 60 = period		U2023		apostrophe	U03D1		KP_3		KP_3		Greek_THETA	Greek_THETA
!		.		‣		'		ϑ Greek_theta					Θ
keycode 61 = 	j		J		semicolon	Greek_theta	semicolon	NoSymbol	variation	NoSymbol
!						;		θ		;				∝ proportional to



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Keypad
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The uppest row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!            Ebene1		Ebene2		Ebene3		Ebene5		Ebene4		Ebene4+Sh	Ebene6		Ebene7

keycode 77  = Tab 		ISO_Left_Tab	equal		approxeq	notequal	NoSymbol	identical	NoSymbol
!						=		≈ almost equal	≠				≡ identical to
keycode 112 = KP_Divide		KP_Divide	division	U2300		U2044		NoSymbol	U2223		NoSymbol
!		/		/		÷		⌀ diameter	(for ⁶⁄₅₉)			∣ divides
keycode 63  = KP_Multiply	KP_Multiply	U22C5		U2299		multiply	NoSymbol	U2297		NoSymbol
!		*		*		⋅ dot		⊙ cirled dot	× times				⊗ circled times
keycode 82  = KP_Subtract	KP_Subtract	U2212		U2296		U2216		NoSymbol	U2238		NoSymbol
!		-		-		− real minus	⊖ cirled minus	∖ set minus			∸ dot minus

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The upper row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!            Ebene1		Ebene2		Ebene3		Ebene5		Ebene4		Ebene4+Sh	Ebene6		Ebene7

keycode 79 =  KP_7		U2714		U2195		U226A		KP_Home		KP_Home		upstile		NoSymbol
!				✔ check mark	↕ arrow		≪ much less					⌈
keycode 80 =  KP_8		U2718		uparrow		intersection	KP_Up		KP_Up		U22C2		NoSymbol
!				✘ ballot x	↑		∩						⋂ n-ary intersection
keycode 81 =  KP_9		NoSymbol	U20D7		U226B		KP_Prior	KP_Prior	U2309		NoSymbol
!						vector		≫ much greater					⌉
keycode 86 =  KP_Add		KP_Add		plusminus	U2295		U2213		NoSymbol	U2214		NoSymbol
!		+		+		±		circled plus	∓ minus-plus			dot plus

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The middle row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!            Ebene1		Ebene2		Ebene3		Ebene5		Ebene4		Ebene4+Sh	Ebene6		Ebene7

keycode 83 =  KP_4		club		leftarrow	includedin	KP_Left		KP_Left		U2286		NoSymbol
!				♣		←		⊂						⊆
keycode 84 =  KP_5		EuroSign	brokenbar	U22B6 		KP_Begin	KP_Begin	U22B7		NoSymbol
!				€		¦		⊶ original of					⊷ image of
keycode 85 =  KP_6		NoSymbol	rightarrow	includes	KP_Right	KP_Right	U2287		NoSymbol
!						→		⊃						⊇

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The lower row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!            Ebene1		Ebene2		Ebene3		Ebene5		Ebene4		Ebene4+Sh	Ebene6		Ebene7

keycode 87 =  KP_1		diamond		U2194		lessthanequal	KP_End		KP_End		downstile	NoSymbol
!				♦		↔ arrow		≤						⌊
keycode 88 =  KP_2		heart		downarrow	union		KP_Down		KP_Down		U22C3		NoSymbol
!				♥		↓		∪						⋃ n-ary union
keycode 89 =  KP_3		U2660		U21CC	      greaterthanequal	KP_Next		KP_Next		U230B		NoSymbol
!				♠		⇌		≥						⌋
keycode 108 = KP_Enter		KP_Enter	KP_Enter	KP_Enter	KP_Enter	KP_Enter	KP_Enter	KP_Enter
!								


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The lowest row
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!            Ebene1		Ebene2		Ebene3		Ebene5		Ebene4		Ebene4+Sh	Ebene6		Ebene7

keycode 90 = KP_0		U2423		percent		U2030		KP_Insert	KP_Insert	U25A1		NoSymbol
!				␣ space sign	%		‰ per mille					□ white square
keycode 91 = comma		period		KP_Separator	minutes		KP_Delete	KP_Delete	seconds		NoSymbol
!		,		.		,/.		′ min,feets					″ sec,inches




!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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+ß dieser Betriebsmodus ein- und später wieder ausgeschaltet.
!     Die Steuerung des Cursors kann über den Ziffernblock (Ebene 4, eventuell mit
!     eingerastetem Mod4) erfolgen.