Commits

firefly committed 85c3f51

Update xkb layout and vim config.

Comments (0)

Files changed (10)

 # ignore directories/files
 vim/bundle/disabled
+vim/undodir
 ^install.sh_OLD
 
 # ignore file extensions
     key({"Control"}, "z",
         "Enter `passthrough` mode, ignores all luakit keybindings.",
         function (w) w:set_mode("passthrough") end),
+
+
+    ---- "Plugins" via user-scripts ---------------------------------
+    -- ToC Anywhere
+    key({}, "§",
+        "Toggle ToC Anywhere",
+        function (w) w.view:eval_js("_toc_anywhere.toggle()") end),
 })
 
 add_binds("insert", {
 let g:netrw_dirhistmax  =10
-let g:netrw_dirhist_cnt =8
-let g:netrw_dirhist_1='/home/firefly/Dropbox/prog/repos/dotfiles/vim/bundle/svndiff'
-let g:netrw_dirhist_2='/home/firefly/Dropbox/prog/repos/TermKit-mine/Node/node_modules/socket.io-node'
-let g:netrw_dirhist_3='/home/firefly/Dropbox/prog/lang/js/clint/shell/src/shell'
-let g:netrw_dirhist_4='/home/firefly/Dropbox/prog/lang/js/quidam'
-let g:netrw_dirhist_5='/home/firefly/Dropbox/prog/repos/dotfiles/vim/bundle/svndiff'
-let g:netrw_dirhist_6='/home/firefly/Dropbox/prog/repos/nwm/build'
-let g:netrw_dirhist_7='/home/firefly/.config/herbstluftwm'
-let g:netrw_dirhist_8='/home/firefly/annat/hackutils'
+let g:netrw_dirhist_cnt =0

vim/after/syntax/haskell.vim

 " Haskell syntax file amendments.
 
+"let count = 0
 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"
+	" Operators are bounded by either whitespace, parens, or a variable/literal.
+	" Ex: "[1] ++ xs", "(++) [1] xs", "1:[2,3]", "a++b"
 
-  " Disallow operators directly adjacent to identifiers because of compose vs.
-  " module resolution.
+	" 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 '
-\   . '"' . a:pat . boundary . '"me=e-1 '
-\   . 'conceal cchar=' . a:concealment
+	let name = 'hsSugar' . count
+
+	let boundary = '[0-9_()\[\] \t]'
+	" '"ms=s+1,me=e-1 '
+"	exe 'syn match ' . name . ' "' . pat . boundary . '"me=e-1"
+
+"	for v in split(concealment, '\zs')
+"	for i in range(len(concealment))
+"		exe 'syn match ' . name . '_' . i . ' '
+
+
+	exe 'syn match ' . name . ' '
+	\ . '"' . a:pat . boundary . '"me=e-1 '
+	\ . 'conceal cchar=' . a:concealment
 endfun
 
-let concealments = { '->':          '→',
-                   \ '<-':          '←',
-                   \ '\\':          'λ',
-                   \ '\.':          '∘',
-                   \
-                   \ '&&':          '∧',
-                   \ '||':          '∨',
-                   \ '`elem`':      '∈',
-                   \ '`notElem`':   '∉' }
+let concealments =
+\ { '->':          '→',
+  \ '=>':          '⇒',
+  \ '\\':          'λ',
+  \ '::':          '∷',
+  \
+  \ '&&':          '∧',
+  \ '||':          '∨',
+  \ '`elem`':      '∈',
+  \ '`notElem`':   '∉' }
+
+" \ '<-':          '←',
+" \ '\.':          '∘',
+" \ '=>':          '⟾  ',
+" \ '>>=':         '⤜',
+" \ '>=>':         '↣',
+" \ '<=<':         '↢',
+" \ '>>>':         '⋙',
+" \ '<<<':         '⋘',
+
+
+syn match hsSugar /::/      conceal cchar=∷
+\   containedin=hs_DeclareFunction
+
+syn match hsSugar /exists / conceal cchar=∃
+syn match hsSugar /forall / conceal cchar=∀
+
+let boundary = '\%([0-9_()\[\] \t]\|\l\w*\)'
+
+exe 'syn match hsSugar /' .
+  \ '\%(\%(forall\|exists\)\%( \w\+\)\+\)\@<!' .
+  \ boundary . '\@<=' .
+  \ '\.' .
+  \ boundary . '\@=' .
+  \ '/ conceal cchar=∘'
+
+"syn match hsSugar /\%(\%(forall\|exists\)\%( \w\+\)\+\)\@<![0-9_()\[\] \t]\@<=\.[0-9_()\[\] \t]\@=/ conceal cchar=∘
 
 for [pat, subst] in items(concealments)
   call s:concealOp(pat, subst)

vim/after/syntax/javascript.vim

 syn keyword javaScriptFunctionKeyword  function  skipwhite  conceal cchar=λ
 \           nextgroup=javaScriptReservedWord,javaScriptFunctionName,javaScriptFunctionParameters,javaScriptFunctionError
 
-" Add fancy .inherit( ... ) sugar as pseudo-operator
-"syn clear   javaScriptMemberDot
-"syn match   javaScriptMemberDot "\.\<" skipwhite nextgroup=@javaScriptIdentifier
-syn match   jsFancyInherits   /\.inherit/  conceal
+" Sugar .inherit( ... ) as a pseudo-operator
+syn match   jsFancyInherits   /\.inherit\>/  conceal
 \                             nextgroup=jsFancyInheritsParens
 \                             contains=jsFancyInheritsPrefixLetter
 
 \                                  start=/(/  end=/)/  contains=TOP
 
 syn match   jsFancyInheritsPrefixLetter /h/  contained  conceal cchar= 
-syn match   jsFancyInheritsPrefixLetter /e/  contained  conceal cchar=ᐊ
+syn match   jsFancyInheritsPrefixLetter /e/  contained  conceal cchar=ᐊ"◁ᐊ
 syn match   jsFancyInheritsPrefixLetter /r/  contained  conceal cchar= 
 
 "syn region  jsFancyInherits   matchgroup=Conceal  concealends

vim/bundle/tabular/.git/index

Binary file modified.

vim/syntax/note.vim

 
 """" General-purpose formatting """""""""""""""""""""""""""""""""""""
 """ Inline """"""""""""""""""""""""""""""""""""""
+syn region  noteMathMode        matchgroup=Conceal concealends oneline
+\           start="\$" skip="\\\$" end="\$"        contains=@noteMathMode
+
+syn region  noteCodeMode        matchgroup=Conceal concealends oneline
+\           start="`" end="`"
+
 syn region  noteUnderline       matchgroup=Conceal concealends oneline
 \           start="\<_" end="_\>"
+\           contains=TOP
 
-syn region  noteMathMode        matchgroup=Conceal concealends oneline
-\           start="\$" end="\$"                    contains=@noteMathMode
+syn region  noteItalic          matchgroup=Conceal concealends
+\           start="\S\@<=\*\|\*\S\@="      end="\S\@<=\*\|\*\S\@="
+\           contains=TOP
 
-syn region  noteItalic          matchgroup=Conceal concealends oneline
-\           start="\S\@<=\*\|\*\S\@="      end="\S\@<=\*\|\*\S\@="
-
-syn region  noteBold            matchgroup=Conceal concealends oneline
+syn region  noteBold            matchgroup=Conceal concealends
 \           start="\S\@<=\*\*\|\*\*\S\@="  end="\S\@<=\*\*\|\*\*\S\@="
+\           contains=TOP
 
 syn region  noteDeleted         matchgroup=Conceal concealends oneline
 \           start="\~" end="\~"
+\           contains=TOP
 
 "syn match   noteEnDash   "--"   conceal cchar=-
 
-syn match   todoTodo            "\<TODO\>"
+syn keyword noteTodo            TODO FIXME NOTE
 
 """ Block """""""""""""""""""""""""""""""""""""""
 syn region  noteQuoteBlock      matchgroup=Ignore  oneline
 
 """" Highlight links """"""""""""""""""""""""""""""""""""""""""""""""
 hi     link noteMathBlock       noteMathMode
+hi     link noteCodeMode        noteMathMode
 hi     link noteDefnList        noteListMarker
 
 hi def link todoTodo            Todo
 nnoremap <C-e> :e 
 
 " Various
-nnoremap <Leader>== yypv$r=A==<Esc>Vk:center<CR>
+"nnoremap <Leader>== yypVr=A==<Esc>Vk:center<CR>
+nnoremap <Leader>== I <Esc>yypVr=A=<Esc>
 nnoremap <Leader>. :!!<CR>
 map Y y$
 
 "               smartindent, preserveindent, copyindent, shiftround, smarttab.
 " ---- Use :retab for re-applying indentation rules!
 
-set copyindent                  " copy leading whitespace from previous line
-set autoindent
-set expandtab                   " expand tabs into spaces on <C-t>/<C-d>
-"set noexpandtab
+set copyindent autoindent       " copy leading whitespace from previous line
+set expandtab
 set nosmarttab                  " lets <Tab> and <BS> perform predictably.
 
-" NO! Stick to 8-char tabstop!
-"set tabstop=4                   " let actual tabs show up as 4 chars wide
-
-" Use smart tabs (tabs for indentation, spaces for aligning)
-"set shiftwidth=4
-
-" Use 2-space soft tabs
-set softtabstop=2
-set shiftwidth=2
-"set shiftround                  " make (de|in)dents snap to tabstops
+set tabstop=8 sts=0 sw=2
+set preserveindent
+set noshiftround
 
 " Tab key should always enter a tab character; use <C-t> and <C-d> for
 " indentation.
 au BufRead,BufNewFile {*.selfml}             setf selfml
 au BufRead,BufNewFile {*.ijx}                setf j
 au BufRead,BufNewFile {*.om}                 setf om
+au BufRead,BufNewFile {*.vimp}               setf vimperator
 au BufRead            {*/xchatlogs/*.log}    setf irclog | set ro noma
 
 " Custom filetype-dependent metadata
 
 """" Colour scheme """"""""""""""""""""
 if $TERM == "xterm-256color"
-" " assume 256-colour terminal
-" set t_Co=256
+  set t_ZH= t_ZR=
+  set t_SI=[5\ q t_EI=[1\ q
+end
 
-  " italics
-  set t_ZH=
-  set t_ZR=
-end
-"if $TERM != "linux" && $TERM != "screen"
-"  set t_Co=256
-"end
+let g:jellybeans_background_color_256 = "NONE"
+let g:jellybeans_background_color     = "02080F"
+color jellybeans
 
-"color Tomorrow-Night-Bright-ff
-"let g:jellybeans_background_color_256 = "16"
-let g:jellybeans_background_color_256 = "NONE"
-"let g:jellybeans_background_color     = "000"
-let g:jellybeans_overrides =
-\     { 'CursorLine':    { '256ctermbg': '232'  }
-\     , 'ColorColumn':   { '256ctermbg': '233'  }
-\
-\     , 'VertSplit':     { '256ctermbg': 'NONE' }
-\
-\     , 'StatusLine':    { '256ctermbg': '236',  '256ctermfg': '3'   }
-\     , 'StatusLineNC':  { '256ctermbg': '234',  '256ctermfg': '242' }
-\
-\     , 'LineNr':        {                       '256ctermfg': '238' }
-\     , 'CursorLineNr':  { '256ctermbg': '234',  '256ctermfg': '3'   }
-\     , 'SignColumn':    { '256ctermbg': 'NONE' }
-\     , 'Folded':        { '256ctermbg': '233'  }
-\
-\     , 'Conceal':       { '256ctermbg': 'NONE', '256ctermfg': '14'  }
-\     , 'ModeMsg':       { 'attr'      : 'bold', '256ctermfg': '2'   }
-\
-\     , 'Operator':      {                       '256ctermfg': '73'  }
-\     , 'markdownCode':  {                       '256ctermfg': '175' }
-\     , 'markdownCodeBlock': {                   '256ctermfg': '175' }
-\     }
-color jellybeans
+let _ = -1 | let NONE = 'NONE'
+let format_overrides = { " ctermfg bg  cterm   guifg   guibg    gui ": [],
+  \ 'CursorLine':        [    _,  232,     _ ,     _ , '#000',    _ ],
+  \ 'ColorColumn':       [    _,  233,     _ ,     _ , '#111',    _ ],
+  \ 'VertSplit':         [    _, NONE,     _ ,     _ ,  NONE ,    _ ],
+  \ 'StatusLine':        [    3,  236,     _ , '#C93', '#222', NONE ],
+  \ 'StatusLineNC':      [  242,  234,     _ , '#777', '#111', NONE ],
+  \ 'LineNr':            [  238,    _,     _ , '#555',     _ ,    _ ],
+  \ 'CursorLineNr':      [    3,  232,     _ , '#C93', '#000', NONE ],
+  \ 'SignColumn':        [    _, NONE,     _ ,     _ ,     _ ,    _ ],
+  \ 'Folded':            [    _,  233,     _ ,     _ , '#111',    _ ],
+  \ 'ModeMsg':           [    2,    _, 'bold', '#9C3',     _ ,    _ ],
+  \
+  \ 'Conceal':           [   14, NONE,     _ , '#3C9',  NONE ,    _ ],
+  \ 'SpecialKey':        [  236, NONE,     _ , '#333',  NONE ,    _ ],
+  \
+  \ 'Operator':          [   73,    _,     _ ,     _ ,     _ ,    _ ],
+  \ 'markdownCode':      [  175,    _,     _ ,     _ ,     _ ,    _ ],
+  \ 'markdownCodeBlock': [  175,    _,     _ ,     _ ,     _ ,    _ ]
+  \ }
+
+let keys = ['ctermfg', 'ctermbg', 'cterm', 'guifg', 'guibg', 'gui']
+for [name, val] in items(format_overrides)
+  let params = map(val, 'v:val != -1 ? keys[v:key] . "=" . v:val : ""')
+  if len(params) == 0 | continue | endif
+  exec 'hi ' . name . ' ' . join(params, ' ')
+endfor
 
 
 set conceallevel=2
 """ Dump files to web server """"""""""""""""""""""""""""""""""""""""
 " Uses 2html.vim to generate an HTML file and upload it to my server.
 let g:html_number_lines = 0
-
-if !exists("*UploadCurrFileHTML")
-  fun UploadCurrFileHTML()
-    TOhtml
-    silent w
-    silent !scp % xen:srv/http/up
-    silent !rm %
-    silent close
-    " TODO: Put link in clipboard
-  endf
-
-  com Up     call UploadCurrFileHTML()
-  com Upload call UploadCurrFileHTML()
-endif
+" implementation moved to plugin/pastebox.vim
+let g:dropboxWriteCommand = 'ssh xen "cat >srv/http/up/{}"'
 
 
 """" Plug-ins """""""""""""""""""""""""""""""""""""""""""""""""""""""
-call pathogen#infect()
-
-" VimOrganizer
-"au! BufRead,BufWrite,BufWritePost,BufNewFile *.org  " Remove existing autocommands
-"au  BufEnter *.org  call org#SetOrgFileType()       " Init VimOrganizer
-
-" NERDTree
-let g:NERDTreeMinimalUI=1
-nnoremap <F10> :<C-u>NERDTreeToggle<CR>
-
 " gundo
 nnoremap <F9> :GundoToggle<CR>
 
 let g:netrw_bufsettings = 'noma nomod nu nobl nowrap ro'
 
 " Tabularize
-noremap <Leader>a= :Tabularize /=<CR>
-noremap <Leader>a: :Tabularize /:<CR>
+noremap <Leader>a=  :Tabularize /=<CR>
+noremap <Leader>a:  :Tabularize /:<CR>
 noremap <Leader>a\| :Tabularize /\|<CR>
+noremap <Leader>as  :Tabularize /\s\+<CR>
 
-""" Svndiff
-"let g:svndiff_autoupdate = 1
-" automatically load svndiff on every file read.
-au BufRead,BufWritePost *  call <SID>UpdateSvndiff()
-func! <SID>UpdateSvndiff()
-  " Short-circuit if we've already run UpdateSvndiff earlier.
-  if exists("b:ff_has_vcs")
-    if b:ff_has_vcs | call Svndiff("next") | endif
-    return
-  endif
+" Signify
+let g:signify_sign_add               = '+'
+let g:signify_sign_change            = '~'
+let g:signify_sign_delete            = '-'
+let g:signify_sign_change_delete     = '±'
+let g:signify_sign_delete_first_line = '‾'
 
-  let fname = bufname("%")
-  call system("hg  status " . fname) | let has_hg  = (v:shell_error == 0)
-  call system("git status " . fname) | let has_git = (v:shell_error == 0)
+let g:signify_sign_color_ctermfg_add    = 70
+let g:signify_sign_color_ctermfg_delete = 160
+let g:signify_sign_color_ctermfg_change = 178
 
-  let b:ff_has_vcs = has_hg || has_git
-  if b:ff_has_vcs | call Svndiff("next") | endif
-endfunc
 
-hi diffAddSign    cterm=bold ctermfg=70
-hi diffDeleteSign cterm=bold ctermfg=160
-hi diffChangeSign cterm=bold ctermfg=178
-
-" To update in svndiff.vim:
-"sign define svndiff_add    text=+ texthl=diffAddSign
-"sign define svndiff_delete text=− texthl=diffDeleteSign
-"sign define svndiff_change text=~ texthl=diffChangeSign
+call pathogen#infect()
 
 
 """" Scratchpad area """"""""""""""""""""""""""""""""""""""""""""""""
-""" temp
-"if !exists("*JumpToNotesWindow")
-"  fun JumpToNotesWindow()
-"    let l=line(".")
-"    exe "normal \<C-w>l" . l . "G"
-"  endf
-"
-"  noremap <C-x>  :call JumpToNotesWindow()<CR>
-"endif
 
-"au Syntax vim  let b:comment_prefix='"'
-"au Syntax lua  let b:comment_prefix='--'
-"noremap <Leader>gc :exe 's:^ \?:' . b:comment_prefix . ':'<CR>
-"noremap <Leader>gC :exe 's:^' . b:comment_prefix . '\( \?\):\1\1:'<CR>
-
-let s:syntaxStackBufferId = -1
-
-fun! UpdateSyntaxStack()
-  if s:syntaxStackBufferId == -1
-    return
-  endif
-
-  let l:synstack = synstack(line('.'), col('.'))
-  let l:column   = col('.')
-
-  " FIXME: Make this this not mess up what the `#` buffer refers to.
-
-  exe 'buffer ' . s:syntaxStackBufferId
-  normal ggdG
-
-  for id in l:synstack
-    exe 'normal a' . synIDattr(id, 'name') . "\n"
-  endfor
-
-  buffer #
-  exe 'normal ' . l:column . '|'
-endfun
-
-fun! ToggleSyntaxStackWindow()
-  if s:syntaxStackBufferId == -1
-    " Prepare window & buffer
-    topleft vertical new
-    enew
-    vertical resize 20
-    setlocal nonu stl=Syntax\ stack
-    set buftype=nofile
-   "normal <C-w>p
-
-    " Save buffer number
-    let s:syntaxStackBufferId = bufnr('%')
-
-  else
-    " Maybe this should be :bwipeout instead...
-    exe 'bdelete ' . s:syntaxStackBufferId
-    let s:syntaxStackBufferId = -1
-  endif
-endfun
-
-nnoremap <F12> :call ToggleSyntaxStackWindow()<CR>
-
-augroup syntaxStack
-  au!
-  au CursorMoved * :call UpdateSyntaxStack()
-augroup end
-
     ┃ Shift ┃ < | │ . · │ q   │ j ↓ │ k ↑ │ x   │ b   │ m µ │ w   │ v   │ z   ┃             ┃
     ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
     ┃       ┃       ┃       ┃                                   ┃       ┃       ┃       ┃
-    ┃       ┃ Mod4  ┃  Alt  ┃               Space               ┃ AltGr ┃       ┃       ┃
+    ┃       ┃ Mod4  ┃  Alt  ┃               Space               ┃ AltGr ┃ Greek ┃       ┃
     ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
 
       The uppercase variant of letter keys is omitted for sake of brevity.

xkb/firefly.symbols

-// FireFly's custom svorak (A1) variant.
-
+// FireFly's custom keyboard variants.
 // based on a keyboard map from an 'xkb/symbols/se' file
-//
-// $XKeyboardConfig$
-// $XFree86: xc/programs/xkbcomp/symbols/se,v 1.5 2003/01/26 02:01:48 dawes Exp $
 
 // % xkbcomp :0 - | vim -
 
-default partial alphanumeric_keys xkb_symbols "crazy" {
-    name[Group1]="Sweden - Dvorak";
+//-- Complete layout ------------------------------------------------
+default partial alphanumeric_keys xkb_symbols "firefly-crazy" {
+    name[Group1]="FireFly - Svorak";
+    name[Group2]="FireFly - Greek";
 
     include "se(basic)"
+    include "firefly(svorak-a1-base)"
+    include "firefly(firefly-altgr-mixin)"
+  //include "firefly(spacecadet-altgr-mixin)"
+    include "firefly(greek-grp2)"
+    include "firefly(keycap-symbols)"
 
-    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 <AD04> { [         p,          P,           at,           at ] };
-    key <AD05> { [         y,          Y,           at,           at ] };
-    key <AD06> { [         f,          F,           at,           at ] };
-    key <AD07> { [         g,          G,          jot,     infinity ] };
-    key <AD08> { [         c,          C,           at,           at ] };
-    key <AD09> { [         r,          R,           at,           at ] };
-    key <AD10> { [         l,          L,        Right,   rightarrow ] };
-    key <AD11> { [     comma,  semicolon,      radical,  dead_ogonek ] };
-    key <AD12> { [dead_diaeresis, dead_circumflex, asciitilde, asciicircum ] };
+    // Map up <CAPS> to act as a <LCTL>
+    replace key <LCTL>  { [ VoidSymbol ] }; // TODO: this is necessary--why?
+    replace key <CAPS>  { [ Control_L, Control_L ] };
+    replace key <SPCE>  { type="FOUR_LEVEL", [ space, space, _, nobreakspace ] };
 
-    key <AC01> { [         a,          A,           ae,           AE ] };
-    key <AC02> { [         o,          O,       oslash,       Oslash ] };
-    key <AC03> { [         e,          E,           at,           at ] };
-    key <AC04> { [         u,          U,           at,           at ] };
-    key <AC05> { [         i,          I,           at,           at ] };
-    key <AC06> { [         d,          D,           at,           at ] };
-    key <AC07> { [         h,          H,         Left,    leftarrow ] };
-    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 <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 <AB04> { [         k,          K,           Up,      uparrow ] };
-    key <AB05> { [         x,          X,           at,           at ] };
-    key <AB06> { [         b,          B,           at,           at ] };
-    key <AB07> { [         m,          M,           mu,           at ] };
-    key <AB08> { [         w,          W,           at,           at ] };
-    key <AB09> { [         v,          V,           at,           at ] };
-    key <AB10> { [         z,          Z,           at,           at ] };
-
-    // Map up <CAPS> to act as a <LCTL>, and add symbols for each special key on
-    // the key's third-level (altgr + key).
-    replace key <LCTL>  { type="ONE_LEVEL", [ VoidSymbol ] }; // TODO: this is necessary--why?
-
-    replace key <TAB>   { type="THREE_LEVEL", [       Tab, ISO_Left_Tab, U21B9 ] };
-    replace key <CAPS>  { type="THREE_LEVEL", [ Control_L,    Control_L, U2388 ] };
-    replace key <LWIN>  { type="THREE_LEVEL", [   Super_L,      Super_L, U2B25 ] };
-    replace key <LALT>  { type="THREE_LEVEL", [     Alt_L,       Meta_L, U2325 ] };
-    replace key <RTSH>  { type="THREE_LEVEL", [   Shift_L,      Shift_L, U21E7 ] };
-    replace key <DELE>  { type="THREE_LEVEL", [    Delete,       Delete, U2326 ] };
-    replace key <BKSP>  { type="THREE_LEVEL", [ BackSpace,    BackSpace, U232B ] };
-    replace key <RTRN>  { type="THREE_LEVEL", [    Return,       Return, U23CE ] };
-    replace key <SPCE>  { type="FOUR_LEVEL",  [ space,  space,  U2423,  nobreakspace ] };
-
-    // Let <INS> insert combining keycap characters.
-    replace key <INS>   { type="THREE_LEVEL", [    Insert,       Insert, U20E3 ] };
-
-  //replace key <MENU>  { type="ONE_LEVEL", [ ISO_Level5_Shift ] };
+    // ISO_Group_Shift, ISO_Next_Group{,_Lock,Latch}, Mode_switch
+    replace key <MENU>  { type="ONE_LEVEL", [ ISO_Group_Latch ] };
 
 // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
 // │     │ !   │ "   │ #   │ ¤   │ %   │ &   │ /   │ (   │ )   │ =   │ ?   │ è ¬ ┃         ┃
 //      │ 2 4 │  2: shifted,           ê ë  dead modifier key that was used to
 //      │ 1 3 │  3: altgr,             ē ė  produce each character.
 //      └─────┘  4: shift+altgr        ẹ ę
-
 };
 
-//xkb_compatibility "compat" {
-//  include "complete"
-//
-//  replace indicator "Caps Lock" {
-//    !allowExplicit;
-// // whichModState= locked;
-//    whichModState = latched;
-//    modifiers     = Lock;
-//  };
-//};
+//-- Keycaps --------------------------------------------------------
+hidden partial alphanumeric_keys xkb_symbols "keycap-symbols" {
+	replace key <TAB>   { type="THREE_LEVEL", [ _, _, U21B9 ] };
+	replace key <CAPS>  { type="THREE_LEVEL", [ _, _, U2388 ] };
+	replace key <LWIN>  { type="THREE_LEVEL", [ _, _, U2B25 ] };
+	replace key <LALT>  { type="THREE_LEVEL", [ _, _, U2325 ] };
+	replace key <RTSH>  { type="THREE_LEVEL", [ _, _, U21E7 ] };
+	replace key <DELE>  { type="THREE_LEVEL", [ _, _, U2326 ] };
+	replace key <BKSP>  { type="THREE_LEVEL", [ _, _, U232B ] };
+	replace key <RTRN>  { type="THREE_LEVEL", [ _, _, U23CE ] };
+	replace key <SPCE>  { type="THREE_LEVEL", [ _, _, U2423 ] };
+};
 
-//partial hidden modifier_keys xkb_symbols "tweaks" {
-//	// rebind caps to escape
-////	key <caps> { [ escape,      escape     ] }; // caps:escape
-////	key <esc>  { [ voidsymbol,  voidsymbol ] };
-//    key <caps> { [ control_l,   control_l  ] };
-//
-//    replace key <caps>  {  [ control_l  ] };
-//    replace key <lctl>  {  [ voidsymbol ] };
-// // modifier_map  control { <caps>, <lctl> };
-//
-////	key <tab>  { [ escape,      escape     ] };
-////	key <lctl> { [ tab,         tab        ] };
-////	key <lsgt> { [ control_l,   control_l  ] };
-//
-//	// rebind altgr to act as ctrl, and move altgr to the right (to rwin/menu)
-////	key <ralt> { [ control_r               ] };
-////	key <rwin> { [ iso_level3_shift        ] };
-////	key <menu> { [ iso_level3_shift        ] };
-////	modifier_map control { <ralt> };
-//
-////	key <lctl> { [ voidsymbol              ] };
-////	key <rtsh> { [ menu                    ] };
-//
-////	key <menu> { [ control_r,   control_r  ] }; // ctrl:menu_rctrl
-//};
+//-- Alphanumeric ---------------------------------------------------
+// Base US dvorak letter layout
+partial alphanumeric_keys xkb_symbols "dvorak-base" {
+	key <AD01> { [ apostrophe,    quotedbl ] };
+	key <AD02> { [      comma,        less ] };
+	key <AD03> { [     period,     greater ] };
+	key <AD04> { [          p,           P ] };
+	key <AD05> { [          y,           Y ] };
+	key <AD06> { [          f,           F ] };
+	key <AD07> { [          g,           G ] };
+	key <AD08> { [          c,           C ] };
+	key <AD09> { [          r,           R ] };
+	key <AD10> { [          l,           L ] };
+	key <AD11> { [      slash,    question ] };
 
+	key <AC01> { [          a,           A ] };
+	key <AC02> { [          o,           O ] };
+	key <AC03> { [          e,           E ] };
+	key <AC04> { [          u,           U ] };
+	key <AC05> { [          i,           I ] };
+	key <AC06> { [          d,           D ] };
+	key <AC07> { [          h,           H ] };
+	key <AC08> { [          t,           T ] };
+	key <AC09> { [          n,           N ] };
+	key <AC10> { [          s,           S ] };
+	key <AC11> { [      minus,  underscore ] };
+
+	key <AB01> { [      colon,   semicolon ] };
+	key <AB02> { [          q,           Q ] };
+	key <AB03> { [          j,           J ] };
+	key <AB04> { [          k,           K ] };
+	key <AB05> { [          x,           X ] };
+	key <AB06> { [          b,           B ] };
+	key <AB07> { [          m,           M ] };
+	key <AB08> { [          w,           W ] };
+	key <AB09> { [          v,           V ] };
+	key <AB10> { [          z,           Z ] };
+};
+
+// Base Svorak A1
+hidden partial alphanumeric_keys xkb_symbols "svorak-a1-base" {
+	include "firefly(dvorak-base)"
+
+	key <AD01> { [      aring,       Aring ] };
+	key <AD02> { [ adiaeresis,  Adiaeresis ] };
+	key <AD03> { [ odiaeresis,  Odiaeresis ] };
+	key <AD11> { [      comma,   semicolon ] };
+	key <AB01> { [     period,       colon ] };
+};
+
+// Greek (mapped to dvorak), as group 2
+partial alphanumeric_keys alternate_group xkb_symbols "greek-grp2" {
+	key <AD04> { [], [      Greek_pi,      Greek_PI ] };
+	key <AD05> { [], [ Greek_upsilon, Greek_UPSILON ] };
+	key <AD06> { [], [     Greek_phi,     Greek_PHI ] };
+	key <AD07> { [], [   Greek_gamma,   Greek_GAMMA ] };
+	key <AD08> { [], [     Greek_psi,     Greek_PSI ] };
+	key <AD09> { [], [     Greek_rho,     Greek_RHO ] };
+	key <AD10> { [], [  Greek_lambda,  Greek_LAMBDA ] };
+
+	key <AC01> { [], [   Greek_alpha,   Greek_ALPHA ] };
+	key <AC02> { [], [ Greek_omicron, Greek_OMICRON ] };
+	key <AC03> { [], [ Greek_epsilon, Greek_EPSILON ] };
+	key <AC04> { [], [   Greek_theta,   Greek_THETA ] };
+	key <AC05> { [], [    Greek_iota,    Greek_IOTA ] };
+	key <AC06> { [], [   Greek_delta,   Greek_DELTA ] };
+	key <AC07> { [], [     Greek_eta,     Greek_ETA ] };
+	key <AC08> { [], [     Greek_tau,     Greek_TAU ] };
+	key <AC09> { [], [      Greek_nu,      Greek_NU ] };
+	key <AC10> { [], [   Greek_sigma,   Greek_SIGMA ] };
+
+	key <AB02> { [], [             _,             _ ] };
+	key <AB03> { [], [      Greek_xi,      Greek_XI ] };
+	key <AB04> { [], [   Greek_kappa,   Greek_KAPPA ] };
+	key <AB05> { [], [     Greek_chi,     Greek_CHI ] };
+	key <AB06> { [], [    Greek_beta,    Greek_BETA ] };
+	key <AB07> { [], [      Greek_mu,      Greek_MU ] };
+	key <AB08> { [], [Gk_finalsmallsigma,         _ ] };
+	key <AB09> { [], [   Greek_omega,   Greek_OMEGA ] };
+	key <AB10> { [], [    Greek_zeta,    Greek_ZETA ] };
+};
+
+//-- Level3 mappings ------------------------------------------------
+// Custom third- and fourth-level characters
+hidden partial alphanumeric_keys xkb_symbols "firefly-altgr-mixin" {
+	key <AD01> { [ _, _,   logicaland,        U2200 ] }; // U+2200 FOR ALL
+	key <AD02> { [ _, _,    logicalor,        U2203 ] }; // U+2203 THERE EXISTS
+	key <AD03> { [ _, _,     EuroSign,           at ] };
+	key <AD04> { [ _, _,           at,           at ] };
+	key <AD05> { [ _, _,           at,           at ] };
+	key <AD06> { [ _, _,           at,           at ] };
+	key <AD07> { [ _, _,          jot,     infinity ] };
+	key <AD08> { [ _, _,           at,           at ] };
+	key <AD09> { [ _, _,           at,           at ] };
+	key <AD10> { [ _, _,        Right,   rightarrow ] };
+	key <AD11> { [ _, _,      radical,  dead_ogonek ] };
+	key <AD12> { [ _, _,   asciitilde,  asciicircum ] };
+
+	key <AC01> { [ _, _,           ae,           AE ] };
+	key <AC02> { [ _, _,       oslash,       Oslash ] };
+	key <AC03> { [ _, _,           at,           at ] };
+	key <AC04> { [ _, _,           at,           at ] };
+	key <AC05> { [ _, _,           at,           at ] };
+	key <AC06> { [ _, _,           at,           at ] };
+	key <AC07> { [ _, _,         Left,    leftarrow ] };
+	key <AC08> { [ _, _,           at,           at ] };
+	key <AC09> { [ _, _,          eng,        U014A ] };  // U+014A Capital Eng
+	key <AC10> { [ _, _,           at,           at ] };
+	key <AC11> { [ _, _, dead_belowdot, dead_macron ] };
+	key <BKSL> { [ _, _,         grave,    multiply ] };
+
+	key <AB01> { [ _, _, periodcentered, dead_abovedot ] };
+	key <AB02> { [ _, _,           at,      because ] };
+	key <AB03> { [ _, _,         Down,    downarrow ] };
+	key <AB04> { [ _, _,           Up,      uparrow ] };
+	key <AB05> { [ _, _,           at,           at ] };
+	key <AB06> { [ _, _,           at,           at ] };
+	key <AB07> { [ _, _,           mu,           at ] };
+	key <AB08> { [ _, _,           at,           at ] };
+	key <AB09> { [ _, _,           at,           at ] };
+	key <AB10> { [ _, _,           at,           at ] };
+};
+
+// Old altgr layout
+hidden partial alphanumeric_keys xkb_symbols "firefly-altgr-old-mixin" {
+	key <AD01> { [ _, _,   logicaland,            U2200 ] }; // U+2200 FOR ALL
+	key <AD02> { [ _, _,    logicalor,            U2203 ] }; // U+2203 THERE EXISTS
+	key <AD03> { [ _, _,        union,           uptack ] };
+	key <AD04> { [ _, _, intersection,         downtack ] };
+	key <AD05> { [ _, _,   includedin,            U2286 ] }; // U+2286 SUBSET OF OR EQUAL TO
+	key <AD06> { [ _, _,     includes,            U2287 ] }; // U+2287 SUPERSET OF OR EQUAL TO
+	key <AD07> { [ _, _,          jot,            U2219 ] }; // U+2219 BULLET OPERATOR
+	key <AD08> { [ _, _,           at,               at ] };
+	key <AD09> { [ _, _,           at,               at ] };
+	key <AD10> { [ _, _,           at,               at ] };
+	key <AD11> { [ _, _,      radical,      dead_ogonek ] };
+
+	key <AC01> { [ _, _,           ae,               AE ] };
+	key <AC02> { [ _, _,       oslash,           Oslash ] };
+	key <AC03> { [ _, _,           at,               at ] };
+	key <AC04> { [ _, _,           at,               at ] };
+	key <AC05> { [ _, _,     infinity,               at ] };
+	key <AC06> { [ _, _,           at,               at ] };
+	key <AC07> { [ _, _,    leftarrow,            U21D0 ] };  // U+21D0 LEFTWARDS DOUBLE ARROW
+	key <AC08> { [ _, _,    downarrow,         ifonlyif ] };
+	key <AC09> { [ _, _,      uparrow,            U21A6 ] };
+	key <AC10> { [ _, _,   rightarrow,          implies ] };
+
+	key <AB01> { [ _, _, periodcentered,  dead_abovedot ] };
+	key <AB02> { [ _, _,    therefore,          because ] };
+	key <AB03> { [ _, _,    elementof,     notelementof ] };
+	key <AB04> { [ _, _,   containsas,            U220C ] };  // U+220C DOES NOT CONTAIN AS MEMBER
+	key <AB05> { [ _, _,        equal,         notequal ] };
+	key <AB06> { [ _, _,    identical,     notidentical ] };
+	key <AB07> { [ _, _,         less,    lessthanequal ] };
+	key <AB08> { [ _, _,      greater, greaterthanequal ] };
+	key <AB09> { [ _, _,     approxeq,            U2249 ] };  // U+2249 NOT ALMOST EQUAL TO
+};
+
+// Based on the Space-cadet keyboard
+hidden partial alphanumeric_keys xkb_symbols "spacecadet-altgr-mixin" {
+	key <AD01> { [ _, _,       logicaland ] };
+	key <AD02> { [ _, _,        logicalor ] };
+	key <AD03> { [ _, _,     intersection ] };
+	key <AD04> { [ _, _,            union ] };
+	key <AD05> { [ _, _,       includedin ] };
+	key <AD06> { [ _, _,         includes ] };
+	key <AD07> { [ _, _,            U2200 ] }; // U+2200 FOR ALL
+	key <AD08> { [ _, _,         infinity ] };
+	key <AD09> { [ _, _,            U2203 ] }; // U+2203 THERE EXISTS
+	key <AD10> { [ _, _,            U2202 ] }; // U+2202 INFINITY
+
+	key <AC01> { [ _, _,           uptack ] };
+	key <AC02> { [ _, _,         downtack ] };
+	key <AC03> { [ _, _,        righttack ] };
+	key <AC04> { [ _, _,         lefttack ] };
+	key <AC05> { [ _, _,          uparrow ] };
+	key <AC06> { [ _, _,        downarrow ] };
+	key <AC07> { [ _, _,        leftarrow ] };
+	key <AC08> { [ _, _,       rightarrow ] };
+	key <AC09> { [ _, _,            U2194 ] }; // U+2194 LEFT RIGHT ARROW
+
+	key <AB01> { [ _, _,            U230A ] }; // U+230A LEFT FLOOR
+	key <AB02> { [ _, _,            U2308 ] }; // U+2308 LEFT CEILING
+	key <AB03> { [ _, _,         notequal ] };
+	key <AB04> { [ _, _,            U2243 ] }; // U+2243 ASYMPTOTICALLY EQUAL TO
+	key <AB05> { [ _, _,        identical ] };
+	key <AB06> { [ _, _,    lessthanequal ] };
+	key <AB07> { [ _, _, greaterthanequal ] };
+	key <AB08> { [ _, _,             less ] };
+	key <AB09> { [ _, _,          greater ] };
+
+	// elementof, notelementof; containsas, U220C; therefore, because
+
+	// åäöpyfgcrl,¨  ÅÄÖPYFGCRL;^  ∧∨∪∩⊂⊃ @@@√   ∀∃  ⊆⊇∙@@@
+	// aoeuidhtns-   AOEUIDHTNS_   æø@@∞d←↓↑→    ÆØ@@@@⇐ ↦⇒¯
+	// .qjkxbmwvz    :QJKXBMWVZ    ·∴∈∋=  <>≈@   ˙∵∉∌≠≢≤≥≉@
+};
 
 //// Special keys placement
 //
 // zxcvbnm,.-  <>[]|nm,.-
 //
 
-
-//default partial alphanumeric_keys xkb_symbols "crazy" {
-partial alphanumeric_keys xkb_symbols "crazy" {
-    name[Group1]="Sweden - Dvorak";
-
-    include "se(basic)"
-
-    key <AE01> { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] };
-    key <AE02> { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] };
-    key <AE03> { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] };
-    key <AE04> { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] };
-    key <AE05> { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] };
-    key <AE06> { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] };
-    key <AE07> { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] };
-    key <AE08> { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] };
-    key <AE09> { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] };
-    key <AE10> { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] };
-
-    key <AD01> { [     aring,      Aring,            1,           at ]	};
-    key <AD02> { [ adiaeresis, Adiaeresis,           2,           at ]	};
-    key <AD03> { [ odiaeresis, Odiaeresis,           3,           at ]	};
-    key <AD04> { [         p,          P,            4,           at ]	};
-    key <AD05> { [         y,          Y,            5,           at ]	};
-    key <AD06> { [         f,          F,            6,           at ]	};
-    key <AD07> { [         g,          G,            7,           at ]	};
-    key <AD08> { [         c,          C,            8,           at ]	};
-    key <AD09> { [         r,          R,            9,           at ]	};
-    key <AD10> { [         l,          L,            0,           at ]	};
-    key <AD11> { [     comma,  semicolon,      radical,  dead_ogonek ]	};
-    key <AD12> { [ dead_diaeresis, dead_circumflex, asciitilde, asciicircum ]	};
- // key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, asciicircum ]	};
-
-// elementof, notelementof; containsas, U220C; therefore, because
-
-    key <AC01> { [         a,          A,       exclam,           AE ]	};
-    key <AC02> { [         o,          O,     quotedbl,       Oslash ]	};
-    key <AC03> { [         e,          E,   numbersign,           at ]	};
-    key <AC04> { [         u,          U,     currency,           at ]	};
-    key <AC05> { [         i,          I,      percent,           at ]	};
-    key <AC06> { [         d,          D,    ampersand,           at ]	};
-    key <AC07> { [         h,          H,        slash,  bracketleft ]	};
-    key <AC08> { [         t,          T,    parenleft, bracketright ]	};
-    key <AC09> { [         n,          N,   parenright,           at ]	};
-    key <AC10> { [         s,          S,        equal,           at ]	};
-    key <AC11> { [     minus, underscore, dead_belowdot, dead_macron ]	};
-
-    key <AB01> { [    period,   colon, periodcentered, dead_abovedot ]	};
-    key <AB02> { [         q,          Q,           at,      because ]	};
-    key <AB03> { [         j,          J,     sterling, notelementof ]	};
-    key <AB04> { [         k,          K,       dollar,           at ]	};
-    key <AB05> { [         x,          X,   VoidSymbol,           at ]	};
-    key <AB06> { [         b,          B,   VoidSymbol,           at ]	};
-    key <AB07> { [         m,          M,    braceleft,           at ]	};
-    key <AB08> { [         w,          W,  bracketleft,           at ]	};
-    key <AB09> { [         v,          V, bracketright,           at ]	};
-    key <AB10> { [         z,          Z,   braceright,           at ]	};
-
-    replace key <CAPS>  {  [ Control_L  ] };
-    replace key <LCTL>  {  [ VoidSymbol ] };
-
-    // åäöpyfgcrl,¨  ÅÄÖPYFGCRL;^  ..........√   ..........
-    // aoeuidhtns-   AOEUIDHTNS_   æø()∞.{}..    ÆØ....[]..¯
-    // .qjkxbmwvz    :QJKXBMWVZ    ·.∈∋...µ...   ˙.........
-};
-//partial hidden modifier_keys xkb_symbols "tweaks" {
-//};
-
-partial alphanumeric_keys xkb_symbols "se-dvorak-spacecadet" {
-    name[Group1]="Sweden - Dvorak";
-
-    include "se(basic)"
-
-    key <AD01> { [     aring,      Aring,   logicaland,        U2200 ]	};  // U+2200 FOR ALL
-    key <AD02> { [ adiaeresis, Adiaeresis,   logicalor,        U2203 ]	};  // U+2203 THERE EXISTS
-    key <AD03> { [ odiaeresis, Odiaeresis,       union,       uptack ]	};
-    key <AD04> { [         p,          P, intersection,     downtack ]	};
-    key <AD05> { [         y,          Y,   includedin,        U2286 ]	};  // U+2286 SUBSET OF OR EQUAL TO
-    key <AD06> { [         f,          F,     includes,        U2287 ]	};  // U+2287 SUPERSET OF OR EQUAL TO
-    key <AD07> { [         g,          G,          jot,        U2219 ]	}; // U+2219 BULLET OPERATOR
-    key <AD08> { [         c,          C,           at,           at ]	};
-    key <AD09> { [         r,          R,           at,           at ]	};
-    key <AD10> { [         l,          L,           at,           at ]	};
-    key <AD11> { [     comma,  semicolon,      radical,  dead_ogonek ]	};
-    key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, asciicircum ]	};
-
-// elementof, notelementof; containsas, U220C; therefore, because
-
-    key <AC01> { [         a,          A,           ae,           AE ]	};
-    key <AC02> { [         o,          O,       oslash,       Oslash ]	};
-    key <AC03> { [         e,          E,           at,           at ]	};
-    key <AC04> { [         u,          U,           at,           at ]	};
-    key <AC05> { [         i,          I,     infinity,           at ]	};
-    key <AC06> { [         d,          D,           at,           at ]	};
-    key <AC07> { [         h,          H,    leftarrow,        U21D0 ]	};  // U+21D0 LEFTWARDS DOUBLE ARROW
-    key <AC08> { [         t,          T,    downarrow,     ifonlyif ]	};
-    key <AC09> { [         n,          N,      uparrow,        U21A6 ]	};
-    key <AC10> { [         s,          S,   rightarrow,      implies ]	};
-    key <AC11> { [     minus, underscore, dead_belowdot, dead_macron ]	};
-
-    key <AB01> { [    period,   colon, periodcentered, dead_abovedot ]	};
-    key <AB02> { [         q,          Q,    therefore,      because ]	};
-    key <AB03> { [         j,          J,    elementof, notelementof ]	};
-    key <AB04> { [         k,          K,   containsas,        U220C ]	};  // U+220C DOES NOT CONTAIN AS MEMBER
-    key <AB05> { [         x,          X,        equal,     notequal ]	};
-    key <AB06> { [         b,          B,    identical, notidentical ]	};
-    key <AB07> { [         m,          M,         less, lessthanequal ]	};
-    key <AB08> { [         w,          W,      greater, greaterthanequal ]	};
-    key <AB09> { [         v,          V,     approxeq,        U2249 ]	};  // U+2249 NOT ALMOST EQUAL TO
-    key <AB10> { [         z,          Z,           at,           at ]	};
-
-    // åäöpyfgcrl,¨  ÅÄÖPYFGCRL;^  ∧∨∪∩⊂⊃ @@@√   ∀∃  ⊆⊇∙@@@
-    // aoeuidhtns-   AOEUIDHTNS_   æø@@∞d←↓↑→    ÆØ@@@@⇐ ↦⇒¯
-    // .qjkxbmwvz    :QJKXBMWVZ    ·∴∈∋=  <>≈@   ˙∵∉∌≠≢≤≥≉@
-};
-
-//default partial hidden modifier_keys
-//xkb_symbols "firefly-tweaks" {
-//	// Rebind caps to escape
-////	key <CAPS> { [ Escape,      Escape     ] }; // caps:escape
-////	key <ESC>  { [ VoidSymbol,  VoidSymbol ] };
-//    key <CAPS> { [ Control_L,   Control_L  ] };
-//
-//    replace key <CAPS>	{  [ Control_L ] };
-//    replace key <LCTL>  {  [ VoidSymbol ] };
-// // modifier_map  Control { <CAPS>, <LCTL> };
-//
-////	key <TAB>  { [ Escape,      Escape     ] };
-////	key <LCTL> { [ Tab,         Tab        ] };
-////	key <LSGT> { [ Control_L,   Control_L  ] };
-//
-//	// Rebind AltGr to act as Ctrl, and move AltGr to the right (to RWIN/MENU)
-////	key <RALT> { [ Control_R               ] };
-////	key <RWIN> { [ ISO_Level3_Shift        ] };
-////	key <MENU> { [ ISO_Level3_Shift        ] };
-////	modifier_map Control { <RALT> };
-//
-////	key <LCTL> { [ VoidSymbol              ] };
-////	key <RTSH> { [ Menu                    ] };
-//
-////	key <MENU> { [ Control_R,   Control_R  ] }; // ctrl:menu_rctrl
-//};
-
 // vim:syn=xkb