! -*- mode: conf; coding: utf-8 -*-
!-------------------------------------------------------------------------------
!
! Author: Nicolas Berthier
! Last modified: Thu Apr 16 10:00:08 2015
!
! Extra Xmodmap configuration file for qwerty, mapping some utf-8 characters
! under "Alt Gr" key.
!
!-------------------------------------------------------------------------------
!
! This program is free software; you can redistribute it and/or modify it under
! the terms of the GNU General Public License version 3 (or higher) as
! published by the Free Software Foundation.
!
! This program is distributed in the hope that it will be useful, but WITHOUT
! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
! FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
! details.
!
!-------------------------------------------------------------------------------
!
! Peculiarities:
!
! This configuration file for xmodmap disables the Insert key, and maps the "Alt
! Gr" key (108) to Mode_switch (akin an auxiliary shift).
!
! French accentuated characters are then mapped based on the wonderful
! Swiss-french layout (mainly, 'é' under ';', 'è' under '[' and 'à' under "'").
!
! Then, lots of greek letters (both small and capital), and mathematical symbols
! (to be used when typing LaTeX in GNU/Emacs notably) are associated to some of
! the remaining extra slots.
!
!-------------------------------------------------------------------------------

! Masculine Ordinal Indicator					  (1 → ¬, ! → º)
keycode  10 = 1 exclam notsign U00BA

! Sharp								 (3 → ≠, \# → ♯)
keycode  12 = 3 numbersign notequal U266F

!								  (4 → ç, $ → Ç)
keycode  13 = 4 dollar ccedilla Ccedilla

keycode  14 = 5 percent EuroSign percent

keycode  15 = 6 asciicircum dead_circumflex dead_diaeresis

! Middle Dot								 (7 → ·)
keycode  16 = 7 ampersand U00B7 ampersand

! Infinity							  (8 → ∞, * → ×)
keycode  17 = 8 asterisk U221E multiply

! Left Angle Bracket				       (( → 〈 - Could be U27E8)
keycode  18 = 9 parenleft 9 U2329

! Empty Set; Right Angle Bracket		(0 → ∅, ) → 〉 - Could be U27E9)
keycode  19 = 0 parenright U2205 U232A

!								  (- → —, _ → –)
keycode  20 = minus underscore emdash endash

! Left-right Double Arrow; Almost Equal				  (= → ⇔, + → ≈)
keycode  21 = equal plus U21D4 U2248

! Rational Numbers							 (Q → ℚ)
keycode  24 = q Q q U211A

! Greek Small Omega; Greek Capital Omega			  (w → ω, W → Ω)
keycode  25 = w W U03C9 U03A9

! Greek Small Epsilon; Exists					  (e → ε, E → ∃)
keycode  26 = e E U03B5 U2203

! Greek Small Tau; Top	       (t → τ, T → ⊤ - Could be "Large Down Tack" U27D9)
keycode  28 = t T U03C4 U22A4

! Greek Small Rho; Douple-Struck Capital R			  (r → ρ, R → ℝ)
keycode  27 = r R U03C1 U211D

! Greek Small Theta; Greek Capital Theta			  (y → θ, Y → Θ)
keycode  29 = y Y U03B8 U0398

! Greek Small Upsilon; Greek Capital Upsilon			  (u → υ, U → Υ)
keycode  30 = u U U03C5 U03A5

! Greek Small Iota; Double Vertical Line			  (i → ι, I → ‖)
keycode  31 = i I U03B9 U2016

!								  (o → œ, O → Œ)
keycode  32 = o O oe OE

! Greek Small Pi; Greel Capital Pi				  (p → π, P → Π)
keycode  33 = p P U03C0 U03A0

!								  ({ → è, } → È)
keycode  34 = bracketleft braceleft egrave Egrave

! Dead acute; Disjoint Union (for now)				(] → ~\', } → ⊎)
keycode  35 = bracketright braceright dead_acute U228E

! Greek Small Alpha; Forall					  (a → α, A → ∀)
keycode  38 = a A U03B1 U2200

! Greek Small Sigma; Greek Capital Sigma			  (s → σ, S → Σ)
keycode  39 = s S U03C3 U03A3

! Greek Small Delta; Greek Capital Delta			  (d → δ, D → Δ)
keycode  40 = d D U03B4 U0394

! Greek Small Phi; Greek Capital Phi				  (f → φ, F → Φ)
keycode  41 = f F U03C6 U03A6

! Greek Xi								 (g → χ)
keycode  42 = g G U03C7 G

! Greek Small Psi; Greek Capital Psi				  (h → ψ, H → Ψ)
keycode  43 = h H U03C8 U03A8

! Greek Small Eta; Square Root					  (j → η, J → √)
keycode  44 = j J U03B7 U221A

! Greek Small Kappa							 (k → κ)
keycode  45 = k K U03BA K

! Greek Small Lambda; Greek Capital Lambda			  (l → λ, L → Λ)
keycode  46 = l L U03BB U039B

!								  (; → é, : → É)
keycode  47 = semicolon colon eacute Eacute

!								(\' → à, \" → À)
keycode  48 = apostrophe quotedbl agrave Agrave

keycode  49 = grave asciitilde dead_grave dead_tilde

! In; Not In							  (\ → ∈, | → ∉)
keycode  51 = backslash bar U2208 U2209

! Greek Small Zeta						  (z → ζ, Z → «)
keycode  52 = z Z U03B6 guillemotleft

! Greek Small Xi						  (x → ξ, X → »)
keycode  53 = x X U03BE guillemotright

! Greek Small Gamma; Greek Capital Gamma			  (c → γ, C → Γ)
keycode  54 = c C U03B3 U0393

! Greek Small Beta; Bottom	 (b → β, B → ⊥ - Could be "Large Up Tack" U27D8)
keycode  56 = b B U03B2 U22A5

! Vee; Wedge							  (v → ∨, V → ∧)
keycode  55 = v V U2228 U2227

! Greek Small Nu; Double-Struck Capital N			  (n → ν, N → ℕ)
keycode  57 = n N U03BD U2115

! Greek Small Mu							 (m → μ)
keycode  58 = m M U03BC M

! Less-than or Equal to							 (< → ≤)
keycode  59 = comma less comma U2264

! Greater-than or Equal to					  (. → …, > → ≥)
keycode  60 = period greater ellipsis U2265

! Reversed Question Mark					  (/ → ÷, ? → ⸮)
keycode  61 = slash question division U2E2E

keycode  65 = space nobreakspace nobreakspace

keycode 108 = Mode_switch

! Upwards Arrow; Upwards Double Arrow					  (↑, ⇑)
keycode 111 = Up NoSymbol U2191 U21D1

! Leftwards Arrow; Leftwards Double Arrow				  (←, ⇐)
keycode 113 = Left NoSymbol U2190 U21D0

! Rightwards Arrow; Rightwards Double Arrow				  (→, ⇒)
keycode 114 = Right NoSymbol U2192 U21D2

! Downwards Arrow; Downwards Double Arrow				  (↓, ⇓)
keycode 116 = Down NoSymbol U2193 U21D3

! Disable override, unless "Alt Gr" is also pressed:
keycode 118 = NoSymbol NoSymbol Insert
