Commits

firefly committed d0dbe90

Add illustrations of keyboard setup, and mess about with config a bit.

Comments (0)

Files changed (8)

+
+                             FireFly's config files
+                            ========================
+
+## Shortcuts
+  Handy links to some common config files.
+
+  * [vimrc](vim/vimrc)
+  * [zshrc](zshrc)
+  * [hlwm/autostart](herbstluftwm/autostart)
+  * [hlwm/panel.sh](herbstluftwm/panel.sh)
+  * [xkb symbols](xkb/firefly.symbols)
+
+## See also
+  * [xkb/](xkb/) for illustrations of keyboard layout/global shortcuts

herbstluftwm/autostart

 feh --bg-fill "$HOME/pics/copland-os/copland-os_768.png"
 
 
-# remove all existing keybindings
-hc keyunbind --all
-
-# keybindings
-#Mod=Mod1
 Mod=Mod4
 Term=pangoterm
 
-hc keybind $Mod-Shift-q quit
-hc keybind $Mod-Shift-r reload
-hc keybind $Mod-Shift-c close
-#hc keybind $Mod-Return spawn xterm
-hc keybind $Mod-Return spawn "$Term"
-hc keybind $Mod-r emit_hook toggle_runner
-
 # tags
 TAG_NAMES=( {1..9} )
 TAG_KEYS=( {1..9} 0 )
 hc rename default "${TAG_NAMES[0]}" || true
 for i in ${!TAG_NAMES[@]} ; do
     hc add "${TAG_NAMES[$i]}"
+done
+
+##-- Keybindings ----------------------------------------------------
+# remove all existing keybindings
+hc keyunbind --all
+
+# General window management
+hc keybind $Mod-Shift-q quit
+hc keybind $Mod-Shift-r reload
+hc keybind $Mod-Shift-c close
+
+hc keybind $Mod-Return spawn "$Term"
+hc keybind $Mod-r emit_hook toggle_runner
+
+# Setup tag bindings
+#hc rename default "${TAG_NAMES[0]}" || true
+for i in ${!TAG_NAMES[@]} ; do
+#   hc add "${TAG_NAMES[$i]}"
     key="${TAG_KEYS[$i]}"
     if ! [ -z "$key" ] ; then
         hc keybind "$Mod-$key" use_index "$i"
 done
 
 # cycle through tags
-hc keybind $Mod-period use_index +1 --skip-visible
-hc keybind $Mod-comma  use_index -1 --skip-visible
+#hc keybind $Mod-period use_index +1 --skip-visible
+#hc keybind $Mod-comma  use_index -1 --skip-visible
 hc keybind $Mod-Right  use_index +1 --skip-visible
 hc keybind $Mod-Left   use_index -1 --skip-visible
 
 hc keybind $Mod-Shift-n shift up
 hc keybind $Mod-Shift-s shift right
 
+### External/Etc
+hc keybind XF86MonBrightnessDown spawn backlight.sh - 1
+hc keybind XF86MonBrightnessUp   spawn backlight.sh + 1
+
+hc keybind $Mod-F10 spawn scrotnow.sh
+hc keybind XF86Display           detect_monitors
+
+# Volume
+hc keybind XF86AudioMute         spawn mute_toggle
+hc keybind XF86AudioLowerVolume  spawn vol_down
+hc keybind XF86AudioRaiseVolume  spawn vol_up
+
+# XF86Display
+# XF86Launch3
+
+# Samsung
+#hc keybind XF86Launch1 spawn \
+#    samsung-tools --show-notify --quiet --backlight hotkey
+#hc keybind XF86Launch2 spawn \
+#    samsung-tools --show-notify --quiet --bluetooth hotkey
+
+# MPC
+hc keybind $Mod-Alt-h spawn mpc toggle
+hc keybind $Mod-Alt-t spawn mpc prev
+hc keybind $Mod-Alt-n spawn mpc next
+
+
+##-- Options --------------------------------------------------------
 # colors
 #hc set frame_border_active_color '#994422'
 #hc set frame_border_normal_color '#101010'

vim/after/syntax/haskell.vim

 function! s:concealOp(pat, concealment)
   " Operators are bounded by either whitespace, parens, or a variable/literal.
   " Ex: "[1] ++ xs", "(++) [1] xs", "1:[2,3]", "a++b"
-  let boundary = '[A-Za-z0-9_()\[\] \t]'
 
+  " Disallow operators directly adjacent to identifiers because of compose vs.
+  " module resolution.
+
+  let boundary = '[0-9_()\[\] \t]'
+ " '"ms=s+1,me=e-1 '
   exe 'syn match haskellSugar '
-\ . '"' . boundary . a:pat . boundary . '"ms=s+1,me=e-1 '
-\ . 'conceal cchar=' . a:concealment
+\   . '"' . a:pat . boundary . '"me=e-1 '
+\   . 'conceal cchar=' . a:concealment
 endfun
 
-let concealments =
-\ { '->':          '→',
-\   '<-':          '←',
-\   '\\':          'λ',
-\   '\.':          '∘',
-\
-\   '&&':          '∧',
-\   '||':          '∨',
-\   '`elem`':      '∈',
-\   '`notElem`':   '∉' }
+let concealments = { '->':          '→',
+                   \ '<-':          '←',
+                   \ '\\':          'λ',
+                   \ '\.':          '∘',
+                   \
+                   \ '&&':          '∧',
+                   \ '||':          '∨',
+                   \ '`elem`':      '∈',
+                   \ '`notElem`':   '∉' }
 
 for [pat, subst] in items(concealments)
   call s:concealOp(pat, subst)

vim/syntax/note.vim

 syn region  noteMathBlock       matchgroup=Ignore  oneline
 \           start="^|" end="$"
 
-syn match   noteListMarker      "^\s\+\zs\*\ze " conceal cchar=•
+syn match   noteListMarker      "^\s*\zs\*\ze " conceal cchar=•
 \                               skipwhite nextgroup=noteDefnList
 syn match   noteListMarker      "^\s\+\zs(\*)\ze " conceal cchar=⍟
 \                               skipwhite nextgroup=noteDefnList
 " ~/.vimrc
 
 """" General settings """""""""""""""""""""""""""""""""""""""""""""""
-set nocompatible                " IMprove the editor
-set encoding=utf-8              " (we're not in the eighties anymore)
+set nocompatible
+set encoding=utf-8
 
 "filetype plugin indent on
 filetype on
 
 set shortmess+=I                " Skip intro message
-set lazyredraw                  " Slight speedup by not redrawing as often
+set lazyredraw
 
 set incsearch
-set spelllang=sv
 set hidden                      " Abandoning a buffer makes it hidden instead of
-                                " unloading it, thus preserving changes/stuff.
+                                " unloading it.
+set showcmd
+set splitright
 
-set showcmd                     " Show keys pressed in normal mode in last line
-set splitright                  " :vsplit splits to right
-
-set history=500                 " Long ex-command & search history is nice.
+set history=500
 set cpoptions+=M                " Makes % not skip over \( and \)
 
 set tildeop                     " Makes tilde an operator instead of a command.
   set undoreload=10000
 end
 
+set spelllang=sv
+
 
 """" Mappings """""""""""""""""""""""""""""""""""""""""""""""""""""""
-"let mapleader = ","
 let mapleader = "-"
-
-noremap ä :
+noremap å :
 
 " Bind C-h to fully dedent (clear all leading whitespace)
 noremap  <C-h> :s/^\s*//<CR>
 cnoremap <C-a> <Home>
 cnoremap <C-e> <End>
 
-cnoremap <C-h> <S-Left>
-cnoremap <C-l> <S-Right>
-
-cnoremap <C-j> <Down>
-cnoremap <C-k> <Up>
-
 " Fast shortcut for opening files
 nnoremap <C-e> :e 
 
-" Headerify current line
+" Various
 nnoremap <Leader>== yypv$r=A==<Esc>Vk:center<CR>
-"nnoremap <Leader>-- yypv$r-A--<Esc>kI <Esc>j
-
-" Shortcut for splitting
-" NO! use <C-w>s and <C-w>v instead!
-"nnoremap <Leader>-  :split<CR>
-"nnoremap <Leader>\| :vsplit<CR>
-
-" NO! use <C-w>q
-"nnoremap <Leader>q :q<CR>
-
-" Make Y behave similar to D
+nnoremap <Leader>. :!!<CR>
 map Y y$
 
-" Repeat last shellscript on <Leader>.
-nnoremap <Leader>. :!!<CR>
-
 " Make w!! do a superuser-write of the file
 cnoremap w!! w !sudo dd of=%
 
 map <Leader>v :set noscb<CR>:botright vsplit<CR><C-f>:set scb<CR><C-w>h:set scb<CR>
 
 
+"""" Text objects """""""""""""""""""""
+" u/U: forward/backward 'til next uppercase character
+onoremap u /\u<CR>
+onoremap U ?\u<CR>
+
+
 """" Buffer management mappings """""""
 " Switch to last (alternate) buffer with <Leader><Leader>, and reload current
 " file with <Leader>e.
 
 " Custom filetype-dependent metadata
 au FileType lua  setlocal comments=:--
+au FileType go   setlocal nolist ts=2 noet
 
 
 """" Colour scheme """"""""""""""""""""
 # ~/.xinitrc
 #
 
-#(sleep 10 && dropboxd) &          # launch dropboxd as user.
-#(sleep 5 && xbindkeys) &          # xbindkeys (bind fn keys)
-#xcape                             # lets Ctrl act as Esc if not held.
 pulseaudio --start                 # mmm, pulseaudio
-#(sleep 5 && xcape) &
 
 xbacklight = 0
 
-(sleep 2 &&
-  setxkbmap se-ff
-  xbindkeys
+(sleep 2 && (
+# setxkbmap se-ff
   xcape
 
   mpd
 # mpdscribble
-) &
+
+  xbacklight = 50
+)) &
 
 #(sleep 10 && kmail) &
 
+
+                                 Keyboard setup
+                                ================
+
+## Regular
+
+    ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
+    │     │ !   │ "   │ #   │ ¤   │ %   │ &   │ /   │ (   │ )   │ =   │ ?   │ è ¬ ┃         ┃
+    │     │ 1 ¡ │ 2 @ │ 3 £ │ 4 $ │ 5   │ 6   │ 7 { │ 8 [ │ 9 ] │ 0 } │ + \ │ é ± ┃   BS    ┃
+    ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
+    ┃       ┃   ∀ │   ∃ │     │     │     │     │   ∞ │     │     │   → │ ; ę │ ê ^ ┃       ┃
+    ┃ Tab   ┃ å ∧ │ ä ∨ │ ö € │ p   │ y   │ f   │ g ∘ │ c   │ r   │ l → │ , √ │ ë ~ ┃       ┃
+    ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓  CR  ┃
+    ┃ (Esc)  ┃   Æ │   Ø │     │     │     │     │   ← │     │     │     │ _ ē │ * × ┃      ┃
+    ┃ Ctrl_L ┃ a æ │ o ø │ e   │ u   │ i   │ d   │ h ← │ t   │ n   │ s   │ - ẹ │ ' ` ┃      ┃
+    ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
+    ┃       ┃ >   │ : ė │     │   ↓ │   ↑ │     │     │     │     │     │     ┃             ┃
+    ┃ Shift ┃ < | │ . · │ q   │ j ↓ │ k ↑ │ x   │ b   │ m µ │ w   │ v   │ z   ┃             ┃
+    ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
+    ┃       ┃       ┃       ┃                                   ┃       ┃       ┃       ┃
+    ┃       ┃ Mod4  ┃  Alt  ┃               Space               ┃ AltGr ┃       ┃       ┃
+    ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
+
+      The uppercase variant of letter keys is omitted for sake of brevity.
+
+         ┌─────┐  1: None,              è é  These refer to the corresponding
+         │ 2 4 │  2: Shift,             ê ë  dead modifier key that was used to
+         │ 1 3 │  3: AltGr,             ē ė  produce each character.
+         └─────┘  4: AltGr+Shift        ẹ ę
+
+
+## Greek modifier ("Greek" prefix)
+
+    ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
+    │     │     │     │     │     │     │     │     │     │     │     │     │     ┃         ┃
+    │     │     │     │     │     │     │     │     │     │     │     │     │     ┃         ┃
+    ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
+    ┃       ┃     │     │     │     │     │     │     │     │     │     │     │     ┃       ┃
+    ┃       ┃     │     │     │ π   │ υ   │ φ   │ γ   │ ψ   │ ρ   │ λ   │     │     ┃       ┃
+    ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
+    ┃        ┃     │     │     │     │     │     │     │     │     │     │     │     ┃      ┃
+    ┃        ┃ α   │ ο   │ ε   │ θ   │ ι   │ δ   │ η   │ τ   │ ν   │ σ   │     │     ┃      ┃
+    ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
+    ┃       ┃     │     │     │     │     │     │     │     │     │     │     ┃             ┃
+    ┃ Shift ┃     │ q   │ ξ   │ κ   │ κ   │ χ   │ β   │ μ   │ ς   │ ω   │ ζ   ┃             ┃
+    ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
+    ┃       ┃       ┃       ┃                                   ┃       ┃░░░░░░░┃       ┃
+    ┃       ┃ Mod4  ┃  Alt  ┃                                   ┃ AltGr ┃░Greek░┃       ┃
+    ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
+
+      The uppercase variant of letter keys is omitted for sake of brevity.
+
+         ┌─────┐
+         │ 2   │  1: Greek,
+         │ 1   │  2: Greek+Shift,
+         └─────┘
+
+
+## WM shortcuts ("Mod4" prefix)
+
+    ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
+    │     │ 1   │ 2   │ 3   │ 4   │ 5   │ 6   │ 7   │ 8   │ 9   │ 0   │     │     ┃         ┃
+    │     │ 1   │ 2   │ 3   │ 4   │ 5   │ 6   │ 7   │ 8   │ 9   │ 0   │     │     ┃   BS    ┃
+    ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
+    ┃       ┃     │     │     │     │     │     │ C   │     │ R   │     │     │     ┃       ┃
+    ┃ Tab   ┃     │     │     │ p   │     │ f   │     │     │ r   │     │     │     ┃       ┃
+    ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓  CR  ┃
+    ┃        ┃     │     │     │     │     │     │ H   │ T   │ N   │ S   │     │     ┃      ┃
+    ┃ Ctrl_L ┃ a   │     │     │     │     │ d   │ h h │ t t │ n n │ s s │ -   │     ┃      ┃
+    ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
+    ┃       ┃ Q   │     │     │     │     │     │     │     │     │     │     ┃             ┃
+    ┃ Shift ┃     │     │     │     │     │     │     │ m   │     │ v   │     ┃             ┃
+    ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
+    ┃       ┃░░░░░░░┃       ┃               Space               ┃       ┃       ┃       ┃
+    ┃       ┃░Mod4░░┃  Alt  ┃               Space               ┃ AltGr ┃       ┃       ┃
+    ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
+
+         ┌─────┐  1: Mod4,                 [htns]:       change focus
+         │ 2 4 │  2: Mod4+Shift,           Shift+[htns]: resize frame
+         │ 1 3 │  3: Mod4+Ctrl,            Ctrl+[htns]:  move window
+         └─────┘  4: Mod4+Ctrl+Shift       v: split vertical; -: split horizontal
+
+
+## Media shortcuts ("Mod4+Alt" prefix)
+
+    ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
+    │     │     │     │     │     │     │     │     │     │     │     │     │     ┃         ┃
+    │     │     │     │     │     │     │     │     │     │     │     │     │     ┃         ┃
+    ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
+    ┃       ┃     │     │     │     │     │     │     │     │     │     │     │     ┃       ┃
+    ┃       ┃     │     │     │     │     │     │     │     │     │     │     │     ┃       ┃
+    ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
+    ┃        ┃     │     │     │     │     │     │     │     │     │     │     │     ┃      ┃
+    ┃        ┃     │     │     │     │     │     │ h   │ t   │ n   │     │     │     ┃      ┃
+    ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
+    ┃       ┃     │     │     │     │     │     │     │     │     │     │     ┃             ┃
+    ┃ Shift ┃     │     │     │     │     │     │     │     │     │     │     ┃             ┃
+    ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
+    ┃       ┃░░░░░░░┃░░░░░░░┃                                   ┃       ┃       ┃       ┃
+    ┃       ┃░Mod4░░┃░░Alt░░┃                                   ┃ AltGr ┃       ┃       ┃
+    ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
+
+         ┌─────┐                              h: play/pause
+         │     │  1: Mod4+Alt                 t: prev track
+         │ 1   │                              n: next track
+         └─────┘

xkb/firefly.symbols

 
     include "se(basic)"
 
-  //key.type[group1]="EIGHT_LEVEL_ALPHABETIC";
     key <AD01> { [     aring,      Aring,   logicaland,        U2200 ] }; // U+2200 FOR ALL
     key <AD02> { [adiaeresis, Adiaeresis,    logicalor,        U2203 ] }; // U+2203 THERE EXISTS
     key <AD03> { [odiaeresis, Odiaeresis,     EuroSign,           at ] };
     key <AC04> { [         u,          U,           at,           at ] };
     key <AC05> { [         i,          I,           at,           at ] };
     key <AC06> { [         d,          D,           at,           at ] };
-    // TODO: make sure that e.g. altgr+shift+h gets interpreted as Shift+Left
-    // (or maybe just have them print as arrow characters instead)
     key <AC07> { [         h,          H,         Left,    leftarrow ] };
-    key <AC08> { [         t,          T,         Down,    downarrow ] };
-    key <AC09> { [         n,          N,           Up,      uparrow ] };
-    key <AC10> { [         s,          S,        Right,   rightarrow ] };
- // key <AC07> { symbols[Group1] = [ h, H,  Left ] };
- // key <AC08> { symbols[Group1] = [ t, T,  Down ] };
- // key <AC09> { symbols[Group1] = [ n, N,    Up ] };
- // key <AC10> { symbols[Group1] = [ s, S, Right ] };
+    key <AC08> { [         t,          T,           at,           at ] };
+    key <AC09> { [         n,          N,          eng,        U014A ] };  // U+014A Capital Eng
+    key <AC10> { [         s,          S,           at,           at ] };
     key <AC11> { [     minus, underscore, dead_belowdot, dead_macron ] };
-//  key <AC12> { [     minus, underscore, dead_belowdot, dead_macron ] };
     key <BKSL> { [apostrophe,   asterisk,         grave,    multiply ] };
 
     key <AB01> { [    period,   colon, periodcentered, dead_abovedot ] };
     key <AB02> { [         q,          Q,           at,      because ] };
     key <AB03> { [         j,          J,         Down,    downarrow ] };
- // key <AB03> { symbols[Group1] = [ j, J,  Down ] };
-  //key <AB03> { [         j,          J,    elementof, notelementof ] };
     key <AB04> { [         k,          K,           Up,      uparrow ] };
- // key <AB04> { symbols[Group1] = [ k, K,    Up ] };
-  //key <AB04> { [         k,          K,           at,           at ] };
     key <AB05> { [         x,          X,           at,           at ] };
     key <AB06> { [         b,          B,           at,           at ] };
     key <AB07> { [         m,          M,           mu,           at ] };
 
   //replace key <MENU>  { type="ONE_LEVEL", [ ISO_Level5_Shift ] };
 
-    // åäöpyfgcrl,¨  ÅÄÖPYFGCRL;^  ..........√   ..........
-    // aoeuidhtns-   AOEUIDHTNS_   æø()∞.{}..    ÆØ....[]..¯
-    // .qjkxbmwvz    :QJKXBMWVZ    ·.∈∋...µ...   ˙.........
-
 // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
-// │     │ !   │ "   │ #   │ ¤   │ %   │ &   │ /   │ (   │ )   │ =   │ ?   │ ` ¬ ┃         ┃
-// │     │ 1 ¡ │ 2 @ │ 3 £ │ 4 $ │ 5   │ 6   │ 7 { │ 8 [ │ 9 ] │ 0 } │ + \ │ ´ ± ┃   BS    ┃
+// │     │ !   │ "   │ #   │ ¤   │ %   │ &   │ /   │ (   │ )   │ =   │ ?   │ è ¬ ┃         ┃
+// │     │ 1 ¡ │ 2 @ │ 3 £ │ 4 $ │ 5   │ 6   │ 7 { │ 8 [ │ 9 ] │ 0 } │ + \ │ é ± ┃   BS    ┃
 // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
-// ┃       ┃     │     │     │     │     │     │     │     │     │     │ ;   │ ^ ^ ┃       ┃
-// ┃ Tab   ┃ å   │ ä   │ ö € │ p   │ y   │ f   │ g ∘ │ c   │ r   │ l → │ , √ │ ¨ ~ ┃       ┃
+// ┃       ┃   ∀ │   ∃ │     │     │     │     │   ∞ │     │     │   → │ ; ę │ ê ^ ┃       ┃
+// ┃ Tab   ┃ å ∧ │ ä ∨ │ ö € │ p   │ y   │ f   │ g ∘ │ c   │ r   │ l → │ , √ │ ë ~ ┃       ┃
 // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓  CR  ┃
-// ┃ (Esc)  ┃   Æ │   Ø │  RTb│     │     │     │     │     │     │     │ _   │ * × ┃      ┃
-// ┃ Ctrl_L ┃ a æ │ o ø │ e Tb│ u   │ i ∞ │ d   │ h ← │ t ↓ │ n ↑ │ s → │ -   │ '   ┃      ┃
+// ┃ (Esc)  ┃   Æ │   Ø │     │     │     │     │   ← │     │     │     │ _ ē │ * × ┃      ┃
+// ┃ Ctrl_L ┃ a æ │ o ø │ e   │ u   │ i   │ d   │ h ← │ t   │ n   │ s   │ - ẹ │ ' ` ┃      ┃
 // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
-// ┃       ┃ >   │ :   │     │      │     │     │     │     │     │     ┃             ┃
+// ┃       ┃ >   │ : ė │     │    │     │     │     │     │     │     ┃             ┃
 // ┃ Shift ┃ < | │ . · │ q   │ j ↓ │ k ↑ │ x   │ b   │ m µ │ w   │ v   │ z   ┃             ┃
 // ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
 // ┃       ┃       ┃       ┃                                   ┃       ┃       ┃       ┃
-// ┃       ┃ Mod4  ┃  Alt  ┃               Space               ┃ AltGr ┃       ┃       ┃
+// ┃       ┃ Mod4  ┃  Alt  ┃               Space               ┃ AltGr ┃ Greek ┃       ┃
 // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
 //
-//    All letter keys have their corresponding uppercase letter as their shifted
-//    symbol; these have been omitted for brevity.
+//   The uppercase variant of letter keys is omitted for sake of brevity.
 //
-//       ┌─────┐   1: regular,
-//       │ 2 4 │   2: shifted,
-//       │ 1 3 │   3: altgr,
-//       └─────┘   4: shift+altgr
-//
+//      ┌─────┐  1: regular,           è é  These refer to the corresponding
+//      │ 2 4 │  2: shifted,           ê ë  dead modifier key that was used to
+//      │ 1 3 │  3: altgr,             ē ė  produce each character.
+//      └─────┘  4: shift+altgr        ẹ ę
 
 };