commit 02ca9a060e1b39bc6d362af00d9c368bbe14de4a
Author: Antoine Amarilli <a3nm@a3nm.net>
Date: Sat, 3 Sep 2011 16:33:22 +0200
initial commit
Diffstat:
23 files changed, 3647 insertions(+), 0 deletions(-)
diff --git a/Xdefaults b/Xdefaults
@@ -0,0 +1,38 @@
+#TODO paste result of external command (eg. xclip -o)
+URxvt.scrollstyle: plain
+URxvt.secondaryScroll: true
+URxvt.foreground: #FFFFFF
+URxvt.background: #000000
+URxvt.saveLines: 8192
+URxvt.mapAlert: true
+URxvt.visualBell: true
+URxvt*depth: 32
+URxvt*scrollBar: false
+URxvt*borderLess: false
+URxvt.cursorColor: #FF0000
+URxvt.cursorColor2: #FFFFFF
+URxvt.jumpScroll:: true
+urxvt*font: -*-Terminus*-*-*-*-*-*-*-*-*-*-*-*
+urxvt*boldFont: -*-Terminus-*-*-*-*-*-*-*-*-*-*-*-*
+urxvt*perl-lib: /usr/lib/urxvt/perl/
+URxvt.perl-ext: default,matcher,url-picker,keyboard-select,url-select,urxvt-pipe
+#urxvt*urlLauncher: sensible-browser
+urxvt*matcher.button: 1
+URxvt.keysym.C-y: perl:url-picker
+#URxvt.keysym.C-y: perl:url-select:select_next
+#URxvt.underlineURLs:true
+#URxvt*keysym*M-Return: \ urxvtc\012
+URxvt*keysym*C-F: perl:urxvt-pipe sa|tee ~/temp/urxvt.dmp
+URxvt*keysym*A-F: perl:urxvt-pipe sv|tee ~/temp/urxvt.dmp
+#URxvt*keysym*C-f: perl:urxvt-pipe sa|farg 'urxvt -e vim %s'
+#URxvt*keysym*A-f: perl:urxvt-pipe sv|farg 'urxvt -e vim %s'
+URxvt.keysym.M-y: perl:keyboard-select:activate
+# URxvt.keysym:M-s: perl:keyboard-select:search
+#clipboard
+# buggy:/ URxvt.keysym.M-c: perl:clipboard:copy
+#URxvt.keysym.M-v: perl:clipboard:paste
+#URxvt.keysym.M-C-v: perl:clipboard:paste_escaped
+#URxvt.urlLauncher: w3mn
+URxvt.urlLauncher: firefox
+URxvt.keysym.M-j: command:\033]720;23\007
+URxvt.keysym.M-k: command:\033]721;23\007
diff --git a/gitconfig b/gitconfig
@@ -0,0 +1,20 @@
+[color]
+ diff = auto
+ status = auto
+ branch = auto
+[user]
+ name = Antoine Amarilli
+ email = a3nm@a3nm.net
+[status]
+ relativePaths = false
+[alias]
+ # from http://nerderati.com/2010/07/making-git-behave/
+ d = diff
+ dc = diff --cached
+ lc = log ORIG_HEAD.. --stat --no-merges
+ gl = log --oneline --decorate --stat --graph
+ st = status -sb
+ serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git
+ prune-all = !git remote | xargs -n 1 git remote prune
+ whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short
+ whois = "!sh -c 'git log -i -1 --pretty=\"format:%an <%ae>\n\" --author=\"$1\"' -"
diff --git a/inputrc b/inputrc
@@ -0,0 +1,27 @@
+# set editing-mode vi
+# set keymap vi
+
+# Edit options before rerunning previous command, eg: ls a b c -> ls -al a b c
+#"\e-": "\C-p\C-a\M-f "
+# Cycle thru completions.
+#"\e/": menu-complete
+
+# glob patterns without executing, eg: 'rm *x'
+#"\ee": glob-expand-word
+
+# Vim style history search
+#"\e[A": history-search-backward
+#"\e[B": history-search-forward
+
+#"\e[C": forward-char
+#"\e[D": backward-char
+
+# Two escapes clear command line.
+#"\e\e": "\C-a\C-k"
+
+C-R: reverse-search-history
+C-S: forward-search-history
+C-N: next-history
+C-P: previous-history
+C-_: undo
+
diff --git a/mailcap b/mailcap
@@ -0,0 +1,3 @@
+application/pdf; /usr/bin/evince '%s'; test=test "$DISPLAY" != ""; description=Portable Document Format; nametemplate=%s.pdf
+application/x-pdf; /usr/bin/evince '%s'; test=test "$DISPLAY" != ""; description=Portable Document Format; nametemplate=%s.pdf
+image/gif; /usr/bin/mplayer '%s'
diff --git a/mairixrc b/mairixrc
@@ -0,0 +1,4 @@
+base=/home/a3_nm/Mail
+database=/home/a3_nm/.cache/mairix
+mfolder=Search
+mbox=...
diff --git a/mutt/aliases b/mutt/aliases
@@ -0,0 +1 @@
+../private/mutt/aliases+
\ No newline at end of file
diff --git a/mutt/archive b/mutt/archive
@@ -0,0 +1,11 @@
+macro index z s=archive\n
+macro pager z s=archive\n
+#macro index Z Ns=archive\n
+#macro pager Z Ns=archive\n
+macro index \cv s=pending\n
+macro pager \cv s=pending\n
+macro index \cw s=can_wait\n
+macro pager \cw s=can_wait\n
+macro index \cl s=useful\n
+macro pager \cl s=useful\n
+macro index E c!<enter> "inbox"
diff --git a/mutt/local b/mutt/local
@@ -0,0 +1,7 @@
+set folder=~/Mail
+set spoolfile="~/Mail/INBOX"
+set record=+sent
+set postponed=+drafts
+mailboxes "~/Mail/INBOX"
+source "~/.mutt/archive"
+
diff --git a/mutt/moderation b/mutt/moderation
@@ -0,0 +1 @@
+../private/mutt/moderation+
\ No newline at end of file
diff --git a/mutt/muttrc b/mutt/muttrc
@@ -0,0 +1,174 @@
+source "~/.mutt/local"
+# private stuff
+source "~/.mutt/perso"
+
+# edition stuff
+set edit_headers=yes
+set fast_reply
+# use M for postponed messages, look at statusbar to count them
+set recall="no"
+# useful to abort a message quickly if i change my mind
+set abort_unmodified=yes
+set abort_nosubject=yes
+
+# save draft mail in a secure location in case of crash
+set tmpdir="~/temp/mutt/"
+
+set move=no
+set copy=yes
+set noconfirmappend
+#set mark_old=no
+
+set editor="vim +/^$ ++1"
+
+set imap_keepalive=60
+set imap_idle=yes
+
+# speeds things up sometimes
+set header_cache=~/.cache/mutt_header_cache
+
+# use the right encoding
+set charset=utf-8
+set send_charset=utf-8
+
+# forward things with mime, i don't care about crappy clients
+set mime_forward=yes
+set mime_forward_rest=yes
+
+# check mail frequently
+set timeout=10
+set mail_check=5
+
+# i know my bindings now
+set help=no
+
+set pager_index_lines=5
+
+set include=yes
+#set signature=~/.signature
+#set sig_dashes=no
+
+set smtp_url="smtp://localhost:2525"
+
+# pgp stuff
+set pgp_autosign=yes
+set pgp_replyencrypt=yes
+set pgp_sign_as=0xFD33167A
+message-hook '!(~g|~G) ~b"^-----BEGIN\ PGP\ (SIGNED\ )?MESSAGE"' "exec check-traditional-pgp"
+
+# aliases
+set alias_file=~/config/mutt/aliases
+source ~/config/mutt/aliases
+set reverse_alias
+
+# sorting and threading
+set sort=threads
+set sort_aux="last-date"
+set strict_threads
+
+set tilde
+
+# color url and email addresses
+color body magenta default "(ftp|http)://[-a-z0-9_.+!*',;/?:@&=%~#]+"
+color body red default [-a-z0-9_.]+@[-a-z0-9_.]+
+mono body underline "(ftp|http)://[-a-z0-9_.+!*',;/?:@&=%~#]+"
+mono body underline [-a-z0-9_.]+@[-a-z0-9_.]+
+
+# don't pause to display messages
+set sleep_time=0
+
+# inbox colors
+#color index magenta black ~g
+color index red black ~G
+color index brightwhite black ~p
+color index blue black ~l
+color index yellow black ~P
+color index black blue ~E
+color index black blue ~S
+color index green black ~Q
+color index brightblack yellow ~F
+color index brightwhite cyan ~N
+color index default cyan ~O
+color index black red ~D
+color index white green ~T
+
+# other colors
+color attachment brightmagenta black
+color error brightwhite red # errors yell at you in red
+color hdrdefault red black # headers
+color indicator default magenta # currently selected message
+color markers brightcyan black # the + for wrapped pager lines
+color message brightcyan black # informational messages, not mail
+color quoted green black # quoted text
+color search brightgreen black # hilite search patterns in the pager
+color signature red black # signature (after "-- ") is red
+color status brightyellow blue # status bar is yellow *on blue*
+color tilde blue black # ~'s after message body
+color tree red default # thread tree in index menu is magenta
+color normal brightwhite black # message
+color signature green default
+color underline yellow black
+color tilde green default
+mono tilde bold
+color header cyan black ^(From|Subject): # Important headers
+
+# Coloring quoted text - coloring the first 7 levels:
+color quoted cyan black
+color quoted1 yellow black
+color quoted2 red black
+color quoted3 green black
+color quoted4 cyan black
+color quoted5 yellow black
+color quoted6 red black
+color quoted7 green black
+
+# Colorize smileys: :-) ;-) :-/ :-(
+color body yellow black "[;:]-[)/(|]"
+color body yellow black "[;:][)/(|]"
+color body green black "[[:alpha:]]\+://[^ ]*"
+
+set markers=no
+
+set ssl_starttls=yes
+
+# set index_format="%4C %Z %{%m-%d %H:%M} %-12.12L %4c %s %?M?<#%03M>&?"
+set index_format="%{%d/%m %H:%M}%Z %-15.15L %?M?<#%03M>&?%s"
+set pager_format="%4c -%Z- %C/%m: %-20.20n %s"
+set status_format="%r%f %?l?%l? %?M?%M/?%m:%?n? N%n?%?o? O%o?%?d? D%d?%?F? !%F?%?t? *%t?%> @%h (%s/%S%?V?-%V?) %?p?*P%p*? (%P)"
+
+# more vim-like bindings
+macro index G <last-entry>
+macro index \cf <next-page>
+macro index \cb <previous-page>
+macro index ? <search-reverse>
+macro pager ? <search-reverse>
+# we must move help from '?' to somewhere else, and <F1> is already
+# taken by the manual
+macro index <F2> <help>
+macro pager <F2> <help>
+
+set wait_key=yes
+
+#set menu_scroll=yes
+
+# remove useless bindings and dangerous bindings (no, I don't want to
+# edit mail)
+bind index,pager & noop
+bind index,pager . noop
+bind index,pager e noop
+bind index,pager p noop
+bind index,pager <Down> noop
+bind index,pager <Up> noop
+bind index,pager <Left> noop
+bind index,pager <Right> noop
+bind index,pager <Esc>s noop
+bind index \# noop
+bind index <End> noop
+bind index <Home> noop
+bind index < first-entry
+bind index > last-entry
+bind index \# noop
+
+# private stuff
+source ~/config/mutt/moderation
+
diff --git a/mutt/perso b/mutt/perso
@@ -0,0 +1 @@
+../private/mutt/perso+
\ No newline at end of file
diff --git a/nethackrc b/nethackrc
@@ -0,0 +1,36 @@
+OPTIONS=menucolors,showscore,autodig,perm_invent,autopickup,dump:nethack_dump,showscore,boulder:0
+
+#
+# System-wide NetHack configuration file for console-only NetHack.
+#
+OPTIONS=windowtype:tty,toptenwin,hilite_pet,lit_corridor
+OPTIONS=hpmon,showscore
+OPTIONS=paranoid_hit
+OPTIONS=fixinv,safe_pet,sortpack,tombstone,color,time,showexp
+OPTIONS=verbose,news,fruit:potato
+OPTIONS=dogname:Slinky
+OPTIONS=catname:RexS
+OPTIONS=pickup_types:$
+OPTIONS=nomail
+OPTIONS=name:a3_nm
+OPTIONS=pickup_burden:b
+
+# Enable this if you want to see your inventory sorted in alphabetical
+# order by item instead of by index letter:
+# OPTIONS=sortloot:full
+# or if you just want containers sorted:
+# OPTIONS=sortloot:loot
+
+#
+# Some sane defaults for menucolor
+#
+
+#OPTIONS=menucolors
+#MENUCOLOR=" blessed "=green
+#MENUCOLOR=" holy "=green
+#MENUCOLOR=" uncursed "=yellow
+#MENUCOLOR=" cursed "=red
+#MENUCOLOR=" unholy "=red
+#MENUCOLOR=" cursed .* (being worn)"=orange&underline
+#
+
diff --git a/screenrc b/screenrc
@@ -0,0 +1,37 @@
+defutf8 on
+
+defscrollback 8000
+hardstatus alwayslastline
+
+startup_message off
+
+#dynamic title
+shelltitle '$ |bash'
+
+#TODO be nice
+#TODO can we use colors?
+#TODO optimize this!
+#TODO use some other existing tool which is independent from screen
+backtick 1 0 0 /home/a3_nm/scripts/screen/cpu
+backtick 2 0 0 /home/a3_nm/scripts/screen/ram
+backtick 3 0 0 /home/a3_nm/scripts/screen/swap
+backtick 4 0 0 /home/a3_nm/scripts/screen/load
+backtick 5 0 0 /home/a3_nm/scripts/screen/df
+backtick 6 0 0 /home/a3_nm/scripts/screen/net RX
+backtick 7 0 0 /home/a3_nm/scripts/screen/net TX
+backtick 8 0 0 /home/a3_nm/scripts/screen/disk 6 #i
+backtick 9 0 0 /home/a3_nm/scripts/screen/disk 7 #o
+backtick 10 0 0 /home/a3_nm/scripts/screen/temp #o
+backtick 11 0 0 /home/a3_nm/scripts/screen/bat #o
+backtick 12 0 0 /home/a3_nm/scripts/screen/fan #o
+
+#hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=CPU %1`--%d/%m %c:%s%{-}'
+#hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=C%1` R%2` S%3` L%4` D%5` %c%{-}'
+# hardstatus string '%{= kg}%-Lw%{=b kW}%50> %n%f %t%{= kg}%+Lw%< %-=%{=b kW}C%{= kg}%1` %{=b kW}M%{= kg}%2` %{=b kW}S%{= kg}%3` %{=b kW}L%{= kg}%4` %{=b kW}D%{= kg}%5` %{=b kW}i%{= kg}%6` %{=b kW}o%{= kg}%7` %{=b kW}r%{= kg}%8` %{=b kW}w%{= kg}%9` %{=b kW}%c%{-}'
+# hardstatus string '%{= kg}%-Lw%{=b kW}%50> %n%f %t%{= kg}%+Lw%< %-=%{= kg}C%{=b kW}%1` %{= kg}M%{=b kW}%2` %{= kg}S%{=b kW}%3` %{= kg}L%{=b kW}%4` %{= kg}D%{=b kW}%5` %{= kg}i%{=b kW}%6` %{= kg}o%{=b kW}%7` %{= kg}r%{=b kW}%8` %{= kg}w%{=b kW}%9` %{=b kW}%c%{-}'
+#hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=%c:%s%{-}'
+##hardstatus string '%{= mK}%-Lw%{= KW}%50>%n%f* %t%{= mK}%+Lw%< %{= kG}%-=%D %d %M %Y %c:%s%{-}'
+##hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'
+#
+# hardstatus string '%99`%{= Wk} %100`%112`%= %102`%101`%114`%115`%108`%113`%119`%117`%118`%116`%106`%104`%103`%105`%107`%Y-%m-%d %0c:%s'
+hardstatus string '%{= kg}%-Lw%{=b kW}%50> %n%f %t%{= kg}%+Lw%< %-=%{=b kC}%1` %{=b kM}%2` %{=b kR}%3` %{=b kG}%4` %{=b kY}%5` %{=b kR}%6` %{=b kM}%7` %{=b kB}%8` %{=b kC}%9` %{=b kG}%10` %{=b kR}%12` %{=b kY}%11` %{=b kW}%c:%s%{-}'
diff --git a/uzbl/config b/uzbl/config
@@ -0,0 +1,456 @@
+# Example uzbl config. All settings are optional. You can use uzbl without
+# any config at all (but it won't do much).
+
+#TODO tree tabs
+#yank current selection
+#youtubedl interface
+#way to select text
+#text hints
+#peek link
+#download and open
+
+# === Core settings ==========================================================
+
+# common directory locations
+set prefix = @(echo $PREFIX)@
+set data_home = @(echo $XDG_DATA_HOME)@
+set cache_home = @(echo $XDG_CACHE_HOME)@
+set config_home = @(echo $XDG_CONFIG_HOME)@
+
+# Interface paths.
+set fifo_dir = /tmp
+set socket_dir = /tmp
+
+set shell_cmd = sh -c
+
+# === General config aliases =================================================
+
+# Config related events (use the request function):
+# request MODE_CONFIG <mode> <key> = <value>
+set mode_config = request MODE_CONFIG
+# request ON_EVENT <EVENT_NAME> <command>
+set on_event = request ON_EVENT
+# request ON_SET <key/glob> <command>
+set on_set = request ON_SET
+# request MODMAP <From> <To>
+set modmap = request MODMAP
+# request IGNORE_KEY <glob>
+set ignore_key = request IGNORE_KEY
+# request MODKEY_ADDITION <key1> <key2> <keyn> <result>
+set modkey_addition = request MODKEY_ADDITION
+# request TOGGLE_MODES <mode1> <mode2> ... <moden>
+set toggle_modes = request TOGGLE_MODES
+
+set set_mode = set mode =
+set set_status = set status_message =
+
+# Spawn path shortcuts. In spawn the first dir+path match is used in "dir1:dir2:dir3:executable"
+set scripts_dir = @data_home/uzbl:@prefix/share/uzbl/examples/data:scripts
+
+# === Hardcoded handlers =====================================================
+
+# These handlers can't be moved to the new event system yet as we don't
+# support events that can wait for a response from a script.
+set scheme_handler = sync_spawn @scripts_dir/scheme.py
+set authentication_handler = sync_spawn @scripts_dir/auth.py
+set download_handler = sync_spawn @scripts_dir/download.sh
+
+# === Dynamic event handlers =================================================
+
+# What to do when a website wants to open a new window:
+# Open link in new window
+@on_event NEW_WINDOW sh 'uzbl-browser ${1:+-u "$1"}' %r
+# Open in current window (also see the REQ_NEW_WINDOW event handler below)
+#@on_event NEW_WINDOW uri %s
+# Open in new tab. Other options are NEW_TAB_NEXT, NEW_BG_TAB and NEW_BG_TAB_NEXT.
+#@on_event NEW_WINDOW event NEW_TAB %s
+
+# What to do when the user requests a new window:
+# If your the NEW_WINDOW handler opens the uri in the current window, you'll
+# probably want to change this handler to open a new window or tab.
+@on_event REQ_NEW_WINDOW event NEW_WINDOW %s
+
+# Load start handler
+@on_event LOAD_START @set_status <span foreground="khaki">wait</span>
+# Reset the keycmd on navigation
+@on_event LOAD_START @set_mode
+
+# Load commit handlers
+@on_event LOAD_COMMIT @set_status <span foreground="green">recv</span>
+
+ # add some javascript to the page for other 'js' and 'script' commands to access later.
+@on_event LOAD_COMMIT js uzbl = {};
+@on_event LOAD_COMMIT script @scripts_dir/formfiller.js
+@on_event LOAD_COMMIT script @scripts_dir/follow.js
+
+# Userscripts/per-site-settings. See the script and the example configuration for details
+#@on_event LOAD_COMMIT spawn @scripts_dir/per-site-settings.py @data_home/uzbl/per-site-settings
+
+# Load finish handlers
+@on_event LOAD_FINISH @set_status <span foreground="gold">done</span>
+@on_event LOAD_FINISH spawn @scripts_dir/history.sh
+
+# Switch to insert mode if a (editable) html form is clicked
+@on_event FORM_ACTIVE @set_mode insert
+# Switch to command mode if anything else is clicked
+@on_event ROOT_ACTIVE @set_mode command
+
+# Example CONFIG_CHANGED event handler
+#@on_event CONFIG_CHANGED print Config changed: %1 = %2
+
+# Scroll percentage calculation
+@on_event SCROLL_VERT set scroll_message = \@<(function(){var p='--';if(%3!=%2){p=(%1/(%3-%4));p=Math.round(10000*p)/100;};return p+'%';})()>\@
+
+# === Behaviour and appearance ===============================================
+
+# Custom CSS can be defined here, including link follower hint styles
+set stylesheet_uri = file://@config_home/uzbl/style.css
+
+set show_status = 1
+set status_top = 0
+set status_background = #303030
+
+set modcmd_style = weight="bold" foreground="red"
+set keycmd_style = weight="light" foreground="red"
+set prompt_style = foreground="grey"
+set cursor_style = underline="single"
+set completion_style = foreground="green"
+set hint_style = weight="bold"
+
+set mode_section = <span background="khaki" foreground="black">[\@[\@mode_indicator]\@]</span>
+set keycmd_section = [<span \@prompt_style>\@[\@keycmd_prompt]\@</span><span \@modcmd_style>\@modcmd</span><span \@keycmd_style>\@keycmd</span><span \@completion_style>\@completion_list</span>]
+set progress_section = <span foreground="#606060">\@[\@progress.output]\@</span>
+set scroll_section = <span foreground="#606060">\@[\@scroll_message]\@</span>
+set uri_section = <span foreground="#99FF66">\@[\@uri]\@</span>
+set name_section = <span foreground="khaki">\@[\@NAME]\@</span>
+set status_section = <span foreground="orange">\@status_message</span>
+set selected_section = <span foreground="#606060">\@[\@SELECTED_URI]\@</span>
+
+set download_section = <span foreground="white">\@downloads</span>
+
+set status_format = <span font_family="monospace">@mode_section @keycmd_section @progress_section @name_section @status_section @scroll_section @selected_section @download_section</span>
+set status_format_right = <span font_family="monospace"><span foreground="#666">uri:</span> @uri_section</span>
+
+set title_format_long = \@keycmd_prompt \@raw_modcmd \@raw_keycmd \@TITLE - Uzbl browser <\@NAME> \@SELECTED_URI
+
+# Progress bar config
+# %d = done, %p = pending %c = percent done, %i = int done, %s = spinner,
+# %t = percent pending, %o = int pending, %r = sprite scroll
+set progress.width = 8
+set progress.format = [%d>%p]%c
+set progress.done = =
+set progress.pending =
+
+# === Useragent setup ========================================================
+
+set useragent = Uzbl (Webkit @{WEBKIT_MAJOR}.@{WEBKIT_MINOR}) (@(+uname -sm)@ [@ARCH_UZBL])
+
+# === Configure cookie blacklist ========================================================
+
+# Accept 'session cookies' from uzbl.org (when you have a whitelist all other cookies are dropped)
+#request WHITELIST_COOKIE domain 'uzbl.org$' expires '^$'
+
+# Drop google analytics tracking cookies (applied after whitelists if any)
+#request BLACKLIST_COOKIE name '^__utm.$'
+
+# === Key binding configuration ==============================================
+# --- Internal modmapping and ignoring ---------------------------------------
+
+#modmap <From> <To>
+@modmap <Control> <Ctrl>
+@modmap <ISO_Left_Tab> <Shift-Tab>
+@modmap <space> <Space>
+@modmap <KP_Enter> <Enter>
+
+#modkey_addition <Key1> <Key2> <Result>
+@modkey_addition <Shift> <Ctrl> <Meta>
+@modkey_addition <Shift> <Tab> <Shift-Tab>
+@modkey_addition <Shift> <Insert> <Shift-Insert>
+
+#ignore_key <glob>
+@ignore_key <ISO_*>
+@ignore_key <Shift>
+@ignore_key <Multi_key>
+
+# --- Bind aliases -----------------------------------------------------------
+
+# request BIND <bind cmd> = <command>
+set bind = request MODE_BIND global
+
+# request MODE_BIND <mode> <bind cmd> = <command>
+set mode_bind = request MODE_BIND
+
+# Insert mode binding alias
+set ibind = @mode_bind insert
+
+# Command mode binding alias
+set cbind = @mode_bind command
+
+# Non-insert mode bindings alias (ebind for edit-bind).
+set ebind = @mode_bind global,-insert
+
+# --- Global & keycmd editing binds ------------------------------------------
+
+# Resets keycmd and returns to default mode.
+@on_event ESCAPE @set_mode
+@on_event ESCAPE event KEYCMD_CLEAR
+@on_event ESCAPE js uzbl.follow.clearHints()
+@bind <Escape> = event ESCAPE
+@bind <Ctrl>[ = event ESCAPE
+
+# Commands for editing and traversing the keycmd.
+@ebind <Return> = event KEYCMD_EXEC_CURRENT
+@ebind <Home> = event SET_CURSOR_POS 0
+@ebind <End> = event SET_CURSOR_POS -1
+@ebind <Left> = event SET_CURSOR_POS -
+@ebind <Right> = event SET_CURSOR_POS +
+@ebind <BackSpace> = event KEYCMD_BACKSPACE
+@ebind <Delete> = event KEYCMD_DELETE
+@ebind <Tab> = event START_COMPLETION
+# Readline-ish bindings.
+@ebind <Ctrl>w = event KEYCMD_STRIP_WORD
+@ebind <Ctrl>u = event SET_KEYCMD
+@ebind <Ctrl>a = event SET_CURSOR_POS 0
+@ebind <Ctrl>e = event SET_CURSOR_POS -1
+
+@ebind <Up> = event HISTORY_PREV
+@ebind <Down> = event HISTORY_NEXT
+@ebind <Ctrl>r<search:>_ = event HISTORY_SEARCH %s
+# Keycmd injection/append examples.
+#@ebind <Ctrl>su = event INJECT_KEYCMD \@uri
+#@ebind <Ctrl>st = event INJECT_KEYCMD \@title
+#@ebind <Ctrl>du = event APPEND_KEYCMD \@uri
+#@ebind <Ctrl>dt = event APPEND_KEYCMD \@title
+
+# --- Mouse bindings ---------------------------------------------------------
+
+# Middle click open in new window
+@bind <Button2> = sh 'if [ "$1" ]; then echo "event REQ_NEW_WINDOW $1" > "$UZBL_FIFO"; else echo "uri $(xclip -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"; fi' '\@SELECTED_URI'
+
+# --- Keyboard bindings ------------------------------------------------------
+
+# With this command you can enter in any command at runtime when prefixed with
+# a colon.
+@cbind :_ = %s
+
+# open a new window or a new tab (see the on_event NEW_WINDOW settings above)
+@cbind w = event REQ_NEW_WINDOW
+
+# Page movement binds
+@cbind j = scroll vertical 20
+@cbind k = scroll vertical -20
+@cbind h = scroll horizontal -20
+@cbind l = scroll horizontal 20
+@cbind <Ctrl>f = scroll vertical 100%
+@cbind <Ctrl>b = scroll vertical -100%
+@cbind << = scroll horizontal begin
+@cbind >> = scroll horizontal end
+@cbind <Home> = scroll vertical begin
+@cbind <End> = scroll vertical end
+@cbind ^ = scroll vertical begin
+@cbind $ = scroll vertical end
+@cbind < = scroll vertical begin
+@cbind > = scroll vertical end
+@cbind <Space> = scroll vertical 100%
+
+# Navigation binds
+@cbind b = back
+@cbind m = forward
+@cbind S = stop
+@cbind r = reload
+@cbind R = reload_ign_cache
+
+# Zoom binds
+@cbind + = zoom_in
+@cbind - = zoom_out
+@cbind T = toggle_zoom_type
+@cbind 1 = set zoom_level = 1.0
+@cbind 2 = set zoom_level = 2.0
+
+# Appearance binds
+@cbind t = toggle_status
+
+# Page searching binds
+@cbind /* = search %s
+@cbind ?* = search_reverse %s
+# Jump to next and previous items
+@cbind n = search
+@cbind N = search_reverse
+
+# Print pages to a printer
+# @cbind <Ctrl>p = hardcopy
+
+# Web searching binds
+@cbind gg<Google:>_ = uri http://www.google.com/search?q=\@<encodeURIComponent(%r)>\@
+@cbind ddg<DuckDuckGo:>_ = uri http://duckduckgo.com/?q=%s
+# @cbind \\awiki<Archwiki:>_ = uri http://wiki.archlinux.org/index.php/Special:Search?search=\@<encodeURIComponent(%r)>\@&go=Go
+@cbind \\we<wikipedia en:>_ = uri http://en.wikipedia.org/w/index.php?title=Special:Search&search=\@<encodeURIComponent(%r)>\@&go=Go
+@cbind \\wfe<wikipedia fr:>_ = uri http://fr.wikipedia.org/w/index.php?title=Special:Search&search=\@<encodeURIComponent(%r)>\@&go=Go
+@cbind \\wde<wikipedia de:>_ = uri http://de.wikipedia.org/w/index.php?title=Special:Search&search=\@<encodeURIComponent(%r)>\@&go=Go
+@cbind \\woe<wikipedia eo:>_ = uri http://eo.wikipedia.org/w/index.php?title=Special:Search&search=\@<encodeURIComponent(%r)>\@&go=Go
+@cbind \\wte<wiktionary en:>_ = uri http://en.wiktionary.org/w/index.php?title=Special:Search&search=\@<encodeURIComponent(%r)>\@&go=Go
+@cbind \\wtfe<wiktionary fr:>_ = uri http://fr.wiktionary.org/w/index.php?title=Special:Search&search=\@<encodeURIComponent(%r)>\@&go=Go
+@cbind \\wtde<wiktionary de:>_ = uri http://de.wiktionary.org/w/index.php?title=Special:Search&search=\@<encodeURIComponent(%r)>\@&go=Go
+@cbind \\wtoe<wiktionary eo:>_ = uri http://eo.wiktionary.org/w/index.php?title=Special:Search&search=\@<encodeURIComponent(%r)>\@&go=Go
+@cbind \\wtse<wiktionary es:>_ = uri http://es.wiktionary.org/w/index.php?title=Special:Search&search=\@<encodeURIComponent(%r)>\@&go=Go
+
+# Handy binds
+# Set function shortcut
+@cbind s<var:>_<value:>_ = set %1 = %2
+# Exit binding
+@cbind ZZ = exit
+# Dump config to stdout
+@cbind !dump = sh 'echo dump_config > "$UZBL_FIFO"'
+# Reload all variables in the config
+@cbind !reload = sh "sed '/^# === Post-load misc commands/,$d' \"$UZBL_CONFIG\" | grep '^set ' > \"$UZBL_FIFO\""
+
+# Use socat to directly inject commands into uzbl-core and view events
+# raised by uzbl-core:
+@cbind <Ctrl><Alt>t = sh 'xterm -e "socat unix-connect:\"$UZBL_SOCKET\" -"'
+#@cbind <Ctrl><Alt>t = sh 'urxvt -e socat unix-connect:"$UZBL_SOCKET" -'
+
+# Uri opening prompts
+@cbind o<uri:>_ = uri %s
+# Or have it load the current uri into the keycmd for editing
+@cbind O<uri:\@uri>_ = uri %s
+
+# Mode setting binds
+@cbind i = @set_mode insert
+@bind <Ctrl>i = @set_mode insert
+@bind <Ctrl>c = @set_mode command
+
+# Hard-bound bookmarks
+# @cbind gh = uri http://www.uzbl.org
+
+# New window binds
+@cbind gw = event REQ_NEW_WINDOW
+
+# SSL-ify bindings
+@cbind zs = uri \@(echo "$UZBL_URI" | sed -e 's/^http:/https:/')\@
+@cbind zS = event REQ_NEW_WINDOW \@(echo "$UZBL_URI" | sed -e 's/^http:/https:/')\@
+
+# Yanking & pasting binds
+@cbind yu = sh 'printf "$UZBL_URI" | xclip'
+@cbind yU = sh 'printf "$1" | xclip' \@SELECTED_URI
+@cbind yy = sh 'printf "$UZBL_TITLE" | xclip'
+
+# Clone current window
+@cbind c = event REQ_NEW_WINDOW \@uri
+# Go the page from primary selection
+@cbind p = sh 'echo "uri $(xclip -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"'
+# Go to the page in clipboard
+@cbind P = sh 'echo "uri $(xclip -selection clipboard -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"'
+# Start a new uzbl instance from the page in primary selection
+@cbind 'p = sh 'echo "event REQ_NEW_WINDOW $(xclip -o)" > "$UZBL_FIFO"'
+# paste primary selection into keycmd at the cursor position
+@bind <Shift-Insert> = sh 'echo "event INJECT_KEYCMD $(xclip -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"'
+
+# Bookmark inserting binds
+# TODO @cbind <Ctrl>b<tags:>_ = sh 'echo `printf "$UZBL_URI %s"` >> "$XDG_DATA_HOME"/uzbl/bookmarks'
+# Or use a script to insert a bookmark.
+@cbind B = spawn @scripts_dir/insert_bookmark.sh
+
+# Bookmark/history loading
+@cbind U = spawn @scripts_dir/load_url_from_history.sh
+@cbind u = spawn @scripts_dir/load_url_from_bookmarks.sh
+
+# Link following (similar to vimperator and konqueror)
+# Set custom keys you wish to use for navigation. Some common examples:
+set follow_hint_keys = 0123456789
+#set follow_hint_keys = qwerty
+#set follow_hint_keys = asdfghjkl;
+#set follow_hint_keys = thsnd-rcgmvwb/;789aefijkopquxyz234
+@cbind fl* = spawn @scripts_dir/follow.sh \@< uzbl.follow("\@follow_hint_keys", "%s", 0) >\@
+@cbind Fl* = spawn @scripts_dir/follow.sh \@< uzbl.follow("\@follow_hint_keys", "%s", 1) >\@
+@cbind fi = spawn @scripts_dir/go_input.sh
+
+# Form filler binds
+# This script allows you to configure (per domain) values to fill in form
+# fields (eg login information) and to fill in these values automatically.
+# This implementation allows you to save multiple profiles for each form
+# (think about multiple accounts on some website).
+set formfiller = spawn @scripts_dir/formfiller.sh
+@cbind za = @formfiller add
+@cbind ze = @formfiller edit
+@cbind zn = @formfiller new
+@cbind zl = @formfiller load
+
+# --- Uzbl tabbed binds ------------------------------------------------------
+
+# Tab opening
+@cbind gn = event NEW_TAB
+@cbind gN = event NEW_TAB_NEXT
+@cbind go<uri:>_ = event NEW_TAB %s
+@cbind gO<uri:>_ = event NEW_TAB_NEXT %s
+
+# Closing / resting
+@cbind gC = exit
+@cbind gQ = event CLEAN_TABS
+
+# Tab navigating
+@cbind g< = event FIRST_TAB
+@cbind g> = event LAST_TAB
+@cbind gt = event NEXT_TAB
+@cbind gT = event PREV_TAB
+@cbind gi<index:>_ = event GOTO_TAB %s
+
+# Preset loading
+set preset = event PRESET_TABS
+@cbind gs<preset save:>_ = @preset save %s
+@cbind glo<preset load:>_ = @preset load %s
+@cbind gd<preset del:>_ = @preset del %s
+# This doesn't work right now.
+#@cbind gli = @preset list
+
+# === Context menu items =====================================================
+
+# Default context menu
+menu_add Google = set uri = http://google.com
+menu_add Go Home = set uri = http://uzbl.org
+menu_separator separator_1
+menu_add Quit uzbl = exit
+
+# Link context menu
+menu_link_add Print Link = print \@SELECTED_URI
+
+# === Mode configuration =====================================================
+
+# Define some mode specific uzbl configurations.
+set command = @mode_config command
+set insert = @mode_config insert
+set stack = @mode_config stack
+
+# Command mode config.
+@command keycmd_style = foreground="red"
+@command status_background = #202020
+@command mode_indicator = Cmd
+@command keycmd_events = 1
+@command forward_keys = 0
+@command modcmd_updates = 1
+
+# Insert mode config.
+@insert status_background = #303030
+@insert mode_indicator = Ins
+@insert forward_keys = 1
+@insert keycmd_events = 0
+@insert modcmd_updates = 0
+
+# Multi-stage-binding mode config.
+@stack keycmd_style = foreground="red"
+@stack status_background = #202020
+@stack mode_indicator = Bnd
+@stack prompt_style = foreground="#888" weight="light"
+@stack keycmd_events = 1
+@stack modcmd_updates = 1
+@stack forward_keys = 0
+
+set default_mode = command
+
+# === Post-load misc commands ================================================
+sync_spawn_exec @scripts_dir/load_cookies.sh
+sync_spawn_exec @scripts_dir/load_cookies.sh @data_home/uzbl/session-cookies.txt
+
+# Set the "home" page.
+set uri = uzbl.org/doesitwork/@COMMIT
+
+# vim: set fdm=syntax:
diff --git a/uzbl/style.css b/uzbl/style.css
@@ -0,0 +1,28 @@
+#uzbl_link_hints > span {
+ z-index: 1000 !important;
+
+ background-color: #333 !important;
+ margin: 0 !important;
+ padding: 3px !important;
+
+ color: #ccc !important;
+ font-size: 9px !important;
+ line-height: 9px !important;
+ font-weight: bold !important;
+ font-variant: normal !important;
+ text-decoration: none !important;
+
+ -webkit-transform: translate(-5px,-5px);
+ opacity: 0.8;
+ -webkit-border-radius: 6px !important;
+ /* Play around with this, pretty fun things to do :) */
+ /* -webkit-transform: scale(1) rotate(0deg) translate(-6px,-5px) !important; */
+}
+
+/* we can have different colours for different types of hints! */
+#uzbl_link_hints.new-window > span {
+ background-color: #ffff00 !important;
+ color: black !important;
+}
+
+/* vim:set et ts=4: */
diff --git a/vim/new_vim b/vim/new_vim
@@ -0,0 +1 @@
+../private/vim/new_vim+
\ No newline at end of file
diff --git a/vim/vimrc b/vim/vimrc
@@ -0,0 +1,84 @@
+call pathogen#runtime_append_all_bundles()
+call pathogen#helptags()
+
+" personal stuff
+source ~/.vim/perso
+
+set nocompatible
+
+set autoindent
+set expandtab
+set softtabstop=2
+set shiftwidth=2
+
+set iskeyword+=-
+
+set incsearch
+syntax on
+set background=dark
+
+filetype on
+filetype plugin on
+filetype indent on
+
+autocmd FileType html,htmldjango,jinjahtml,eruby,mako let b:closetag_html_style=1
+autocmd FileType html,xhtml,xml,htmldjango,jinjahtml,eruby,mako source ~/.vim/bundle/closetag/plugin/closetag.vim
+
+set ofu=syntaxcomplete#Complete
+let g:SuperTabDefaultCompletionType = "context"
+
+set ignorecase
+set smartcase
+
+set scrolloff=4
+
+set notitle
+
+set wildmenu
+set wildmode=longest,list
+set ttyfast
+set lbr
+
+set encoding=utf8
+
+set hidden
+nnoremap ' `
+nnoremap ` '
+set history=1000
+runtime macros/matchit.vim
+
+set shortmess=atI
+
+set viminfo='100,n~/.viminfo
+
+set tw=72
+
+map <C-q> {gq}
+
+map ZW :w<CR>
+map ZM :w<CR>:make<CR>
+map ZO :CommandT<CR>
+map ZB :CommandTBuffer<CR>
+
+:nnoremap <F8> :setl noai nocin nosi inde=<CR>
+
+:cnoreabbrev W w
+
+set nojoinspaces
+set showcmd
+set matchpairs+=<:>
+
+set nomodeline
+
+set backup
+set backupdir=~/temp/vim/temp
+set directory=~/temp/vim/backup
+
+set background=dark
+
+"let g:solarized_termtrans=1
+"let g:solarized_termcolors=256
+"let g:solarized_contrast="high"
+"let g:solarized_visibility="high"
+"colorscheme solarized
+
diff --git a/wmii/wmiirc b/wmii/wmiirc
@@ -0,0 +1,307 @@
+#!/bin/dash -f
+# Configure wmii
+wmiiscript=wmiirc # For wmii.sh
+. wmii.sh
+
+
+# Configuration Variables
+MODKEY=Mod4
+UP=k
+DOWN=j
+LEFT=h
+RIGHT=l
+
+# Bars
+noticetimeout=5
+noticebar=/rbar/!notice
+
+# . ~/.zshrc.path
+
+# Colors tuples: "<text> <background> <border>"
+export WMII_NORMCOLORS='#000000 #c1c48b #81654f'
+export WMII_FOCUSCOLORS='#000000 #81654f #000000'
+
+export WMII_BACKGROUND='#333333'
+export WMII_FONT='fixed'
+
+set -- $(echo $WMII_NORMCOLORS $WMII_FOCUSCOLORS)
+export WMII_TERM="urxvtc"
+
+if ! test -d "${WMII_CONFPATH%%:*}"; then
+ mkdir "${WMII_CONFPATH%%:*}"
+ res=$(wihack -type DIALOG xmessage -nearmouse -buttons Windows,Alt -print -fn $WMII_FONT \
+ "Welcome to wmii,$wi_newline$wi_newline" \
+ "Most of wmii's default key bindings make use of the$wi_newline" \
+ "Windows key, or equivalent. For keyboards lacking such$wi_newline" \
+ "a key, many users change this to the Alt key.$wi_newline$wi_newline" \
+ "Which would you prefer?")
+ [ "$res" = "Alt" ] && MODKEY=Mod1
+ echo "MODKEY=$MODKEY" >"${WMII_CONFPATH%%:*}/wmiirc_local"
+ chmod +x "${WMII_CONFPATH%%:*}/wmiirc_local"
+fi
+
+# Menu history
+hist="${WMII_CONFPATH%%:*}/history"
+histnum=5000
+
+# Column Rules
+wmiir write /colrules <<!
+/gimp/ -> 17+83+41
+/.*/ -> 62+38 # Golden Ratio
+!
+
+# Tagging Rules
+wmiir write /tagrules <<!
+/MPlayer|VLC/ -> ~
+!
+
+# Status Bar Info
+status() {
+ echo -n $(uptime | sed 's/.*://; s/,//g') '|' $(date)
+}
+
+status2() {
+ echo -n $( acpi -tb | cut -d ',' -f 2 | cut -d ' ' -f 2 | tr '\n' '-')
+}
+
+local_events() { true;}
+wi_runconf -s wmiirc_local
+
+echo $WMII_NORMCOLORS | wmiir create $noticebar
+
+# Event processing
+events() {
+ cat <<'!'
+# Events
+Event CreateTag
+ echo "$WMII_NORMCOLORS" "$@" | wmiir create "/lbar/$@"
+Event DestroyTag
+ wmiir remove "/lbar/$@"
+Event FocusTag
+ wmiir xwrite "/lbar/$@" "$WMII_FOCUSCOLORS" "$@"
+Event UnfocusTag
+ wmiir xwrite "/lbar/$@" "$WMII_NORMCOLORS" "$@"
+Event UrgentTag
+ shift
+ wmiir xwrite "/lbar/$@" "*$@"
+Event NotUrgentTag
+ shift
+ wmiir xwrite "/lbar/$@" "$@"
+Event LeftBarClick LeftBarDND
+ shift
+ wmiir xwrite /ctl view "$@"
+Event Unresponsive
+ {
+ client=$1; shift
+ msg="The following client is not responding. What would you like to do?$wi_newline"
+ resp=$(wihack -transient $client \
+ xmessage -nearmouse -buttons Kill,Wait -print
+ -fn "${WMII_FONT%%,*}" "$msg $(wmiir read /client/sel/label)")
+ if [ "$resp" = Kill ]; then
+ wmiir xwrite /client/$client/ctl slay &
+ fi
+ }&
+Event Notice
+ wmiir xwrite $noticebar $wi_arg
+
+ kill $xpid 2>/dev/null # Let's hope this isn't reused...
+ { sleep $noticetimeout; wmiir xwrite $noticebar ' '; }&
+ xpid = $!
+
+# Menus
+Menu Client-3-Delete
+ wmiir xwrite /client/$1/ctl kill
+Menu Client-3-Kill
+ wmiir xwrite /client/$1/ctl slay
+Menu Client-3-Fullscreen
+ wmiir xwrite /client/$1/ctl Fullscreen on
+Event ClientMouseDown
+ wi_fnmenu Client $2 $1 &
+
+Menu LBar-3-Delete
+ tag=$1; clients=$(wmiir read "/tag/$tag/index" | awk '/[^#]/{print $2}')
+ for c in $clients; do
+ if [ "$tag" = "$(wmiir read /client/$c/tags)" ]; then
+ wmiir xwrite /client/$c/ctl kill
+ else
+ wmiir xwrite /client/$c/tags -$tag
+ fi
+ if [ "$tag" = "$(wi_seltag)" ]; then
+ newtag=$(wi_tags | awk -v't='$tag '
+ $1 == t { if(!l) getline l
+ print l
+ exit }
+ { l = $0 }')
+ wmiir xwrite /ctl view $newtag
+ fi
+ done
+Event LeftBarMouseDown
+ wi_fnmenu LBar "$@" &
+
+# Actions
+Action showkeys
+ echo "$KeysHelp" | xmessage -file - -fn ${WMII_FONT%%,*}
+Action quit
+ wmiir xwrite /ctl quit
+Action exec
+ wmiir xwrite /ctl exec "$@"
+Action rehash
+ wi_proglist $PATH >$progsfile
+Action status
+ set +xv
+ if wmiir remove /rbar/status 2>/dev/null; then
+ sleep 2
+ fi
+ echo "$WMII_NORMCOLORS" | wmiir create /rbar/status
+ while status | wmiir write /rbar/status; do
+ sleep 1
+ done
+Action a_none
+ echo 'nil'
+Action status2
+ set +xv
+ if wmiir remove /rbar/statusd 2>/dev/null; then
+ sleep 2
+ fi
+ echo "$WMII_NORMCOLORS" | wmiir create /rbar/statusd
+ while status2 | wmiir write /rbar/statusd; do
+ sleep 1
+ done
+
+
+Key $MODKEY-e
+ eval $WMII_TERM -e "zsh -c \"$(wimenu -h "${hist}.progs" -n $histnum <$progsfile)\"" &
+Key $MODKEY-u
+ eval $WMII_TERM -e "zsh -c \"$(wimenu -h "${hist}.progs" -n $histnum <$progsfile); zsh -i\"" &
+Key $MODKEY-o
+ eval $WMII_TERM -e "zsh -c mutt" &
+
+Key $MODKEY-w
+ eval "sensible-browser" &
+Key $MODKEY-x
+ sh -c "xtrlock" &
+
+Key $MODKEY-c
+ amixer -c 0 set Master 2dB-
+Key $MODKEY-r
+ amixer -c 0 set Master 2dB+
+
+# Key Bindings
+KeyGroup Moving around
+Key $MODKEY-$LEFT # Select the client to the left
+ wmiir xwrite /tag/sel/ctl select left
+Key $MODKEY-$RIGHT # Select the client to the right
+ wmiir xwrite /tag/sel/ctl select right
+Key $MODKEY-$UP # Select the client above
+ wmiir xwrite /tag/sel/ctl select up
+Key $MODKEY-$DOWN # Select the client below
+ wmiir xwrite /tag/sel/ctl select down
+
+Key $MODKEY-space # Toggle between floating and managed layers
+ wmiir xwrite /tag/sel/ctl select toggle
+
+KeyGroup Moving through stacks
+Key $MODKEY-Control-$UP # Select the stack above
+ wmiir xwrite /tag/sel/ctl select up stack
+Key $MODKEY-Control-$DOWN # Select the stack below
+ wmiir xwrite /tag/sel/ctl select down stack
+
+KeyGroup Moving clients around
+Key $MODKEY-Shift-$LEFT # Move selected client to the left
+ wmiir xwrite /tag/sel/ctl send sel left
+Key $MODKEY-Shift-$RIGHT # Move selected client to the right
+ wmiir xwrite /tag/sel/ctl send sel right
+Key $MODKEY-Shift-$UP # Move selected client up
+ wmiir xwrite /tag/sel/ctl send sel up
+Key $MODKEY-Shift-$DOWN # Move selected client down
+ wmiir xwrite /tag/sel/ctl send sel down
+
+Key $MODKEY-Shift-space # Toggle selected client between floating and managed layers
+ wmiir xwrite /tag/sel/ctl send sel toggle
+
+KeyGroup Client actions
+Key $MODKEY-f # Toggle selected client's fullsceen state
+ wmiir xwrite /client/sel/ctl Fullscreen toggle
+Key $MODKEY-Shift-c # Close client
+ wmiir xwrite /client/sel/ctl kill
+Key $MODKEY-Shift-x # Slay client
+ wmiir xwrite /client/sel/ctl slay
+
+KeyGroup Changing column modes
+Key $MODKEY-d # Set column to default mode
+ wmiir xwrite /tag/sel/ctl colmode sel default-max
+Key $MODKEY-s # Set column to stack mode
+ wmiir xwrite /tag/sel/ctl colmode sel stack-max
+Key $MODKEY-m # Set column to max mode
+ wmiir xwrite /tag/sel/ctl colmode sel stack+max
+
+KeyGroup Running programs
+Key $MODKEY-a # Open wmii actions menu
+ action $(wi_actions | wimenu -h "${hist}.actions" -n $histnum) &
+Key $MODKEY-p # Open program menu
+ eval wmiir setsid "$(wimenu -h "${hist}.progs" -n $histnum <$progsfile)" &
+
+Key $MODKEY-Return # Launch a terminal
+ eval wmiir setsid $WMII_TERM &
+
+KeyGroup Other
+Key $MODKEY-Control-t # Toggle all other key bindings
+ case $(wmiir read /keys | wc -l | tr -d ' \t\n') in
+ 0|1)
+ echo -n "$Keys" | wmiir write /keys
+ wmiir xwrite /ctl grabmod $MODKEY;;
+ *)
+ wmiir xwrite /keys $MODKEY-Control-t
+ wmiir xwrite /ctl grabmod Mod3;;
+ esac
+
+KeyGroup Tag actions
+Key $MODKEY-t # Change to another tag
+ (tag=$(wi_tags | wimenu -h "${hist}.tags" -n 50) && wmiir xwrite /ctl view $tag) &
+Key $MODKEY-Shift-t # Retag the selected client
+ c=$(wi_selclient)
+ (tag=$(wi_tags | wimenu -h "${hist}.tags" -n 50) && wmiir xwrite /client/$c/tags $tag) &
+!
+ for i in 0 1 2 3 4 5 6 7 8 9; do
+ cat <<!
+Key $MODKEY-$i # Move to the numbered view
+ wmiir xwrite /ctl view "$i"
+Key $MODKEY-Shift-$i # Retag selected client with the numbered tag
+ wmiir xwrite /client/sel/tags "$i"
+!
+ done
+}
+wi_events events local_events
+
+# WM Configuration
+wmiir write /ctl <<!
+ font $WMII_FONT
+ focuscolors $WMII_FOCUSCOLORS
+ normcolors $WMII_NORMCOLORS
+ grabmod $MODKEY
+ border 1
+!
+xsetroot -solid "$WMII_BACKGROUND" &
+
+# Misc
+progsfile="$(wmiir namespace)/.proglist"
+action status &
+#action status2 &
+wi_proglist $PATH >$progsfile &
+
+# Setup Tag Bar
+IFS="$wi_newline"
+wmiir rm $(wmiir ls /lbar | sed 's,^,/lbar/,') >/dev/null
+seltag=$(wmiir read /tag/sel/ctl | sed 1q)
+unset IFS
+wi_tags | while read tag
+do
+ if [ "$tag" = "$seltag" ]; then
+ echo "$WMII_FOCUSCOLORS" "$tag"
+ else
+ echo "$WMII_NORMCOLORS" "$tag"
+ fi | wmiir create "/lbar/$tag"
+done
+
+wi_eventloop
+
diff --git a/xmodmaprc b/xmodmaprc
@@ -0,0 +1,2146 @@
+xkb_keymap {
+xkb_keycodes "evdev+aliases(qwerty)" {
+ minimum = 8;
+ maximum = 255;
+ <ESC> = 9;
+ <AE01> = 10;
+ <AE02> = 11;
+ <AE03> = 12;
+ <AE04> = 13;
+ <AE05> = 14;
+ <AE06> = 15;
+ <AE07> = 16;
+ <AE08> = 17;
+ <AE09> = 18;
+ <AE10> = 19;
+ <AE11> = 20;
+ <AE12> = 21;
+ <BKSP> = 22;
+ <TAB> = 23;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <RTRN> = 36;
+ <LCTL> = 37;
+ <AC01> = 38;
+ <AC02> = 39;
+ <AC03> = 40;
+ <AC04> = 41;
+ <AC05> = 42;
+ <AC06> = 43;
+ <AC07> = 44;
+ <AC08> = 45;
+ <AC09> = 46;
+ <AC10> = 47;
+ <AC11> = 48;
+ <TLDE> = 49;
+ <LFSH> = 50;
+ <BKSL> = 51;
+ <AB01> = 52;
+ <AB02> = 53;
+ <AB03> = 54;
+ <AB04> = 55;
+ <AB05> = 56;
+ <AB06> = 57;
+ <AB07> = 58;
+ <AB08> = 59;
+ <AB09> = 60;
+ <AB10> = 61;
+ <RTSH> = 62;
+ <KPMU> = 63;
+ <LALT> = 64;
+ <SPCE> = 65;
+ <CAPS> = 66;
+ <FK01> = 67;
+ <FK02> = 68;
+ <FK03> = 69;
+ <FK04> = 70;
+ <FK05> = 71;
+ <FK06> = 72;
+ <FK07> = 73;
+ <FK08> = 74;
+ <FK09> = 75;
+ <FK10> = 76;
+ <NMLK> = 77;
+ <SCLK> = 78;
+ <KP7> = 79;
+ <KP8> = 80;
+ <KP9> = 81;
+ <KPSU> = 82;
+ <KP4> = 83;
+ <KP5> = 84;
+ <KP6> = 85;
+ <KPAD> = 86;
+ <KP1> = 87;
+ <KP2> = 88;
+ <KP3> = 89;
+ <KP0> = 90;
+ <KPDL> = 91;
+ <LVL3> = 92;
+ <LSGT> = 94;
+ <FK11> = 95;
+ <FK12> = 96;
+ <AB11> = 97;
+ <KATA> = 98;
+ <HIRA> = 99;
+ <HENK> = 100;
+ <HKTG> = 101;
+ <MUHE> = 102;
+ <JPCM> = 103;
+ <KPEN> = 104;
+ <RCTL> = 105;
+ <KPDV> = 106;
+ <PRSC> = 107;
+ <RALT> = 108;
+ <LNFD> = 109;
+ <HOME> = 110;
+ <UP> = 111;
+ <PGUP> = 112;
+ <LEFT> = 113;
+ <RGHT> = 114;
+ <END> = 115;
+ <DOWN> = 116;
+ <PGDN> = 117;
+ <INS> = 118;
+ <DELE> = 119;
+ <I120> = 120;
+ <MUTE> = 121;
+ <VOL-> = 122;
+ <VOL+> = 123;
+ <POWR> = 124;
+ <KPEQ> = 125;
+ <I126> = 126;
+ <PAUS> = 127;
+ <I128> = 128;
+ <I129> = 129;
+ <HNGL> = 130;
+ <HJCV> = 131;
+ <AE13> = 132;
+ <LWIN> = 133;
+ <RWIN> = 134;
+ <COMP> = 135;
+ <STOP> = 136;
+ <AGAI> = 137;
+ <PROP> = 138;
+ <UNDO> = 139;
+ <FRNT> = 140;
+ <COPY> = 141;
+ <OPEN> = 142;
+ <PAST> = 143;
+ <FIND> = 144;
+ <CUT> = 145;
+ <HELP> = 146;
+ <I147> = 147;
+ <I148> = 148;
+ <I149> = 149;
+ <I150> = 150;
+ <I151> = 151;
+ <I152> = 152;
+ <I153> = 153;
+ <I154> = 154;
+ <I155> = 155;
+ <I156> = 156;
+ <I157> = 157;
+ <I158> = 158;
+ <I159> = 159;
+ <I160> = 160;
+ <I161> = 161;
+ <I162> = 162;
+ <I163> = 163;
+ <I164> = 164;
+ <I165> = 165;
+ <I166> = 166;
+ <I167> = 167;
+ <I168> = 168;
+ <I169> = 169;
+ <I170> = 170;
+ <I171> = 171;
+ <I172> = 172;
+ <I173> = 173;
+ <I174> = 174;
+ <I175> = 175;
+ <I176> = 176;
+ <I177> = 177;
+ <I178> = 178;
+ <I179> = 179;
+ <I180> = 180;
+ <I181> = 181;
+ <I182> = 182;
+ <I183> = 183;
+ <I184> = 184;
+ <I185> = 185;
+ <I186> = 186;
+ <I187> = 187;
+ <I188> = 188;
+ <I189> = 189;
+ <I190> = 190;
+ <FK13> = 191;
+ <FK14> = 192;
+ <FK15> = 193;
+ <FK16> = 194;
+ <FK17> = 195;
+ <FK18> = 196;
+ <FK19> = 197;
+ <FK20> = 198;
+ <FK21> = 199;
+ <FK22> = 200;
+ <FK23> = 201;
+ <FK24> = 202;
+ <MDSW> = 203;
+ <ALT> = 204;
+ <META> = 205;
+ <SUPR> = 206;
+ <HYPR> = 207;
+ <I208> = 208;
+ <I209> = 209;
+ <I210> = 210;
+ <I211> = 211;
+ <I212> = 212;
+ <I213> = 213;
+ <I214> = 214;
+ <I215> = 215;
+ <I216> = 216;
+ <I217> = 217;
+ <I218> = 218;
+ <I219> = 219;
+ <I220> = 220;
+ <I221> = 221;
+ <I222> = 222;
+ <I223> = 223;
+ <I224> = 224;
+ <I225> = 225;
+ <I226> = 226;
+ <I227> = 227;
+ <I228> = 228;
+ <I229> = 229;
+ <I230> = 230;
+ <I231> = 231;
+ <I232> = 232;
+ <I233> = 233;
+ <I234> = 234;
+ <I235> = 235;
+ <I236> = 236;
+ <I237> = 237;
+ <I238> = 238;
+ <I239> = 239;
+ <I240> = 240;
+ <I241> = 241;
+ <I242> = 242;
+ <I243> = 243;
+ <I244> = 244;
+ <I245> = 245;
+ <I246> = 246;
+ <I247> = 247;
+ <I248> = 248;
+ <I249> = 249;
+ <I250> = 250;
+ <I251> = 251;
+ <I252> = 252;
+ <I253> = 253;
+ indicator 1 = "Caps Lock";
+ indicator 2 = "Num Lock";
+ indicator 3 = "Scroll Lock";
+ indicator 4 = "Compose";
+ indicator 5 = "Kana";
+ indicator 6 = "Sleep";
+ indicator 7 = "Suspend";
+ indicator 8 = "Mute";
+ indicator 9 = "Misc";
+ indicator 10 = "Mail";
+ indicator 11 = "Charging";
+ virtual indicator 12 = "Shift Lock";
+ virtual indicator 13 = "Group 2";
+ virtual indicator 14 = "Mouse Keys";
+ alias <AC12> = <BKSL>;
+ alias <MENU> = <COMP>;
+ alias <HZTG> = <TLDE>;
+ alias <LMTA> = <LWIN>;
+ alias <RMTA> = <RWIN>;
+ alias <ALGR> = <RALT>;
+ alias <KPPT> = <I129>;
+ alias <LatQ> = <AD01>;
+ alias <LatW> = <AD02>;
+ alias <LatE> = <AD03>;
+ alias <LatR> = <AD04>;
+ alias <LatT> = <AD05>;
+ alias <LatY> = <AD06>;
+ alias <LatU> = <AD07>;
+ alias <LatI> = <AD08>;
+ alias <LatO> = <AD09>;
+ alias <LatP> = <AD10>;
+ alias <LatA> = <AC01>;
+ alias <LatS> = <AC02>;
+ alias <LatD> = <AC03>;
+ alias <LatF> = <AC04>;
+ alias <LatG> = <AC05>;
+ alias <LatH> = <AC06>;
+ alias <LatJ> = <AC07>;
+ alias <LatK> = <AC08>;
+ alias <LatL> = <AC09>;
+ alias <LatZ> = <AB01>;
+ alias <LatX> = <AB02>;
+ alias <LatC> = <AB03>;
+ alias <LatV> = <AB04>;
+ alias <LatB> = <AB05>;
+ alias <LatN> = <AB06>;
+ alias <LatM> = <AB07>;
+};
+
+xkb_types "complete" {
+
+ virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper,AlGr;
+
+ type "ONE_LEVEL" {
+ modifiers= none;
+ level_name[Level1]= "Any";
+ };
+ type "TWO_LEVEL" {
+ modifiers= Shift;
+ map[Shift]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ };
+ type "ALPHABETIC" {
+ modifiers= Shift+Lock;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Caps";
+ };
+ type "KEYPAD" {
+ modifiers= Shift+NumLock;
+ map[Shift]= Level2;
+ map[NumLock]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Number";
+ };
+ type "SHIFT+ALT" {
+ modifiers= Shift+Alt;
+ map[Shift+Alt]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift+Alt";
+ };
+ type "PC_CONTROL_LEVEL2" {
+ modifiers= Control;
+ map[Control]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Control";
+ };
+ type "PC_LCONTROL_LEVEL2" {
+ modifiers= LControl;
+ map[LControl]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "LControl";
+ };
+ type "PC_RCONTROL_LEVEL2" {
+ modifiers= RControl;
+ map[RControl]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "RControl";
+ };
+ type "PC_ALT_LEVEL2" {
+ modifiers= Alt;
+ map[Alt]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Alt";
+ };
+ type "PC_LALT_LEVEL2" {
+ modifiers= LAlt;
+ map[LAlt]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "LAlt";
+ };
+ type "PC_RALT_LEVEL2" {
+ modifiers= RAlt;
+ map[RAlt]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "RAlt";
+ };
+ type "CTRL+ALT" {
+ modifiers= Control+Alt;
+ map[Control+Alt]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Ctrl+Alt";
+ };
+ type "LOCAL_EIGHT_LEVEL" {
+ modifiers= Shift+Lock+Control+LevelThree;
+ map[Shift+Lock]= Level1;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+Lock+LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level4;
+ map[Control]= Level5;
+ map[Shift+Lock+Control]= Level5;
+ map[Shift+Control]= Level6;
+ map[Lock+Control]= Level6;
+ map[Control+LevelThree]= Level7;
+ map[Shift+Lock+Control+LevelThree]= Level7;
+ map[Shift+Control+LevelThree]= Level8;
+ map[Lock+Control+LevelThree]= Level8;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Level3";
+ level_name[Level4]= "Shift Level3";
+ level_name[Level5]= "Ctrl";
+ level_name[Level6]= "Shift Ctrl";
+ level_name[Level7]= "Level3 Ctrl";
+ level_name[Level8]= "Shift Level3 Ctrl";
+ };
+ type "THREE_LEVEL" {
+ modifiers= Shift+LevelThree;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Level3";
+ };
+ type "EIGHT_LEVEL" {
+ modifiers= Shift+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Alt Base";
+ level_name[Level4]= "Shift Alt";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X Alt Base";
+ level_name[Level8]= "X Shift Alt";
+ };
+ type "EIGHT_LEVEL_ALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level4;
+ map[Shift+Lock+LevelThree]= Level3;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ map[Lock+LevelFive]= Level6;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ map[Lock+LevelThree+LevelFive]= Level8;
+ map[Shift+Lock+LevelThree+LevelFive]= Level7;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Alt Base";
+ level_name[Level4]= "Shift Alt";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X Alt Base";
+ level_name[Level8]= "X Shift Alt";
+ };
+ type "EIGHT_LEVEL_SEMIALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level3;
+ preserve[Lock+LevelThree]= Lock;
+ map[Shift+Lock+LevelThree]= Level4;
+ preserve[Shift+Lock+LevelThree]= Lock;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ map[Lock+LevelFive]= Level6;
+ preserve[Lock+LevelFive]= Lock;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ map[Lock+LevelThree+LevelFive]= Level7;
+ preserve[Lock+LevelThree+LevelFive]= Lock;
+ map[Shift+Lock+LevelThree+LevelFive]= Level8;
+ preserve[Shift+Lock+LevelThree+LevelFive]= Lock;
+ map[Shift+Lock+LevelFive]= Level1;
+ preserve[Shift+Lock+LevelFive]= Lock;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Alt Base";
+ level_name[Level4]= "Shift Alt";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X Alt Base";
+ level_name[Level8]= "X Shift Alt";
+ };
+ type "FOUR_LEVEL" {
+ modifiers= Shift+LevelThree;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Alt Base";
+ level_name[Level4]= "Shift Alt";
+ };
+ type "FOUR_LEVEL_ALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level4;
+ map[Shift+Lock+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Alt Base";
+ level_name[Level4]= "Shift Alt";
+ };
+ type "FOUR_LEVEL_SEMIALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level3;
+ preserve[Lock+LevelThree]= Lock;
+ map[Shift+Lock+LevelThree]= Level4;
+ preserve[Shift+Lock+LevelThree]= Lock;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Alt Base";
+ level_name[Level4]= "Shift Alt";
+ };
+ type "FOUR_LEVEL_MIXED_KEYPAD" {
+ modifiers= Shift+NumLock+LevelThree;
+ map[Shift+NumLock]= Level1;
+ map[NumLock]= Level2;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[NumLock+LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Shift+NumLock+LevelThree]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Number";
+ level_name[Level3]= "Alt Base";
+ level_name[Level4]= "Shift Alt";
+ };
+ type "FOUR_LEVEL_X" {
+ modifiers= Shift+Control+Alt+LevelThree;
+ map[LevelThree]= Level2;
+ map[Shift+LevelThree]= Level3;
+ map[Control+Alt]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Alt Base";
+ level_name[Level3]= "Shift Alt";
+ level_name[Level4]= "Ctrl+Alt";
+ };
+ type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level4;
+ preserve[Lock]= Lock;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level3;
+ preserve[Lock+LevelThree]= Lock;
+ map[Shift+Lock+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr Base";
+ level_name[Level4]= "Shift AltGr";
+ };
+ type "FOUR_LEVEL_PLUS_LOCK" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock]= Level5;
+ map[Shift+Lock]= Level2;
+ map[Lock+LevelThree]= Level3;
+ map[Shift+Lock+LevelThree]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Alt Base";
+ level_name[Level4]= "Shift Alt";
+ level_name[Level5]= "Lock";
+ };
+ type "FOUR_LEVEL_KEYPAD" {
+ modifiers= Shift+NumLock+LevelThree;
+ map[Shift]= Level2;
+ map[NumLock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[NumLock+LevelThree]= Level4;
+ map[Shift+NumLock+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Number";
+ level_name[Level3]= "Alt Base";
+ level_name[Level4]= "Alt Number";
+ };
+};
+
+xkb_compatibility "complete" {
+
+ virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper,AlGr;
+
+ interpret.useModMapMods= AnyLevel;
+ interpret.repeat= False;
+ interpret.locking= False;
+ interpret ISO_Level2_Latch+Exactly(Shift) {
+ useModMapMods=level1;
+ action= LatchMods(modifiers=Shift,clearLocks,latchToLock);
+ };
+ interpret Shift_Lock+AnyOf(Shift+Lock) {
+ action= LockMods(modifiers=Shift);
+ };
+ interpret Num_Lock+AnyOf(all) {
+ virtualModifier= NumLock;
+ action= LockMods(modifiers=NumLock);
+ };
+ interpret ISO_Lock+AnyOf(all) {
+ action= ISOLock(modifiers=modMapMods,affect=all);
+ };
+ interpret ISO_Level3_Shift+AnyOf(all) {
+ virtualModifier= LevelThree;
+ useModMapMods=level1;
+ action= SetMods(modifiers=LevelThree,clearLocks);
+ };
+ interpret ISO_Level3_Latch+AnyOf(all) {
+ virtualModifier= LevelThree;
+ useModMapMods=level1;
+ action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
+ };
+ interpret ISO_Level3_Lock+AnyOf(all) {
+ virtualModifier= LevelThree;
+ useModMapMods=level1;
+ action= LockMods(modifiers=LevelThree);
+ };
+ interpret Alt_L+AnyOf(all) {
+ virtualModifier= Alt;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Alt_R+AnyOf(all) {
+ virtualModifier= Alt;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Meta_L+AnyOf(all) {
+ virtualModifier= Meta;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Meta_R+AnyOf(all) {
+ virtualModifier= Meta;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Super_L+AnyOf(all) {
+ virtualModifier= Super;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Super_R+AnyOf(all) {
+ virtualModifier= Super;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Hyper_L+AnyOf(all) {
+ virtualModifier= Hyper;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Hyper_R+AnyOf(all) {
+ virtualModifier= Hyper;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Scroll_Lock+AnyOf(all) {
+ virtualModifier= ScrollLock;
+ action= LockMods(modifiers=modMapMods);
+ };
+ interpret ISO_Level5_Shift+AnyOf(all) {
+ virtualModifier= LevelFive;
+ useModMapMods=level1;
+ action= SetMods(modifiers=LevelFive,clearLocks);
+ };
+ interpret ISO_Level5_Latch+AnyOf(all) {
+ virtualModifier= LevelFive;
+ action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
+ };
+ interpret ISO_Level5_Lock+AnyOf(all) {
+ virtualModifier= LevelFive;
+ action= LockMods(modifiers=LevelFive);
+ };
+ interpret Mode_switch+AnyOfOrNone(all) {
+ virtualModifier= AltGr;
+ useModMapMods=level1;
+ action= SetGroup(group=+1);
+ };
+ interpret ISO_Level3_Shift+AnyOfOrNone(all) {
+ action= SetMods(modifiers=LevelThree,clearLocks);
+ };
+ interpret ISO_Level3_Latch+AnyOfOrNone(all) {
+ action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
+ };
+ interpret ISO_Level3_Lock+AnyOfOrNone(all) {
+ action= LockMods(modifiers=LevelThree);
+ };
+ interpret ISO_Group_Latch+AnyOfOrNone(all) {
+ virtualModifier= AltGr;
+ useModMapMods=level1;
+ action= LatchGroup(group=2);
+ };
+ interpret ISO_Next_Group+AnyOfOrNone(all) {
+ virtualModifier= AltGr;
+ useModMapMods=level1;
+ action= LockGroup(group=+1);
+ };
+ interpret ISO_Prev_Group+AnyOfOrNone(all) {
+ virtualModifier= AltGr;
+ useModMapMods=level1;
+ action= LockGroup(group=-1);
+ };
+ interpret ISO_First_Group+AnyOfOrNone(all) {
+ action= LockGroup(group=1);
+ };
+ interpret ISO_Last_Group+AnyOfOrNone(all) {
+ action= LockGroup(group=2);
+ };
+ interpret KP_1+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+1);
+ };
+ interpret KP_End+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+1);
+ };
+ interpret KP_2+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=+1);
+ };
+ interpret KP_Down+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=+1);
+ };
+ interpret KP_3+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+1);
+ };
+ interpret KP_Next+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+1);
+ };
+ interpret KP_4+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+0);
+ };
+ interpret KP_Left+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+0);
+ };
+ interpret KP_6+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+0);
+ };
+ interpret KP_Right+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+0);
+ };
+ interpret KP_7+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=-1);
+ };
+ interpret KP_Home+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=-1);
+ };
+ interpret KP_8+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=-1);
+ };
+ interpret KP_Up+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=-1);
+ };
+ interpret KP_9+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=-1);
+ };
+ interpret KP_Prior+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=-1);
+ };
+ interpret KP_5+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default);
+ };
+ interpret KP_Begin+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default);
+ };
+ interpret KP_F2+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=1);
+ };
+ interpret KP_Divide+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=1);
+ };
+ interpret KP_F3+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=2);
+ };
+ interpret KP_Multiply+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=2);
+ };
+ interpret KP_F4+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=3);
+ };
+ interpret KP_Subtract+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=3);
+ };
+ interpret KP_Separator+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default,count=2);
+ };
+ interpret KP_Add+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default,count=2);
+ };
+ interpret KP_0+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=lock);
+ };
+ interpret KP_Insert+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=lock);
+ };
+ interpret KP_Decimal+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=unlock);
+ };
+ interpret KP_Delete+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=unlock);
+ };
+ interpret F25+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=1);
+ };
+ interpret F26+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=2);
+ };
+ interpret F27+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=-1);
+ };
+ interpret F29+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=-1);
+ };
+ interpret F31+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default);
+ };
+ interpret F33+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+1);
+ };
+ interpret F35+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+1);
+ };
+ interpret Pointer_Button_Dflt+AnyOfOrNone(all) {
+ action= PtrBtn(button=default);
+ };
+ interpret Pointer_Button1+AnyOfOrNone(all) {
+ action= PtrBtn(button=1);
+ };
+ interpret Pointer_Button2+AnyOfOrNone(all) {
+ action= PtrBtn(button=2);
+ };
+ interpret Pointer_Button3+AnyOfOrNone(all) {
+ action= PtrBtn(button=3);
+ };
+ interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) {
+ action= PtrBtn(button=default,count=2);
+ };
+ interpret Pointer_DblClick1+AnyOfOrNone(all) {
+ action= PtrBtn(button=1,count=2);
+ };
+ interpret Pointer_DblClick2+AnyOfOrNone(all) {
+ action= PtrBtn(button=2,count=2);
+ };
+ interpret Pointer_DblClick3+AnyOfOrNone(all) {
+ action= PtrBtn(button=3,count=2);
+ };
+ interpret Pointer_Drag_Dflt+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=default,affect=both);
+ };
+ interpret Pointer_Drag1+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=1,affect=both);
+ };
+ interpret Pointer_Drag2+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=2,affect=both);
+ };
+ interpret Pointer_Drag3+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=3,affect=both);
+ };
+ interpret Pointer_EnableKeys+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeys);
+ };
+ interpret Pointer_Accelerate+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeysAccel);
+ };
+ interpret Pointer_DfltBtnNext+AnyOfOrNone(all) {
+ action= SetPtrDflt(affect=button,button=+1);
+ };
+ interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) {
+ action= SetPtrDflt(affect=button,button=-1);
+ };
+ interpret AccessX_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=AccessXKeys);
+ };
+ interpret AccessX_Feedback_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=AccessXFeedback);
+ };
+ interpret RepeatKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=RepeatKeys);
+ };
+ interpret SlowKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=SlowKeys);
+ };
+ interpret BounceKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=BounceKeys);
+ };
+ interpret StickyKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=StickyKeys);
+ };
+ interpret MouseKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeys);
+ };
+ interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeysAccel);
+ };
+ interpret Overlay1_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=Overlay1);
+ };
+ interpret Overlay2_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=Overlay2);
+ };
+ interpret AudibleBell_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=AudibleBell);
+ };
+ interpret Terminate_Server+AnyOfOrNone(all) {
+ action= Terminate();
+ };
+ interpret Alt_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Alt,clearLocks);
+ };
+ interpret Alt_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Alt,clearLocks);
+ };
+ interpret Meta_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Meta,clearLocks);
+ };
+ interpret Meta_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Meta,clearLocks);
+ };
+ interpret Super_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Super,clearLocks);
+ };
+ interpret Super_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Super,clearLocks);
+ };
+ interpret Hyper_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Hyper,clearLocks);
+ };
+ interpret Hyper_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Hyper,clearLocks);
+ };
+ interpret XF86_Switch_VT_1+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=1,!same);
+ };
+ interpret XF86_Switch_VT_2+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=2,!same);
+ };
+ interpret XF86_Switch_VT_3+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=3,!same);
+ };
+ interpret XF86_Switch_VT_4+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=4,!same);
+ };
+ interpret XF86_Switch_VT_5+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=5,!same);
+ };
+ interpret XF86_Switch_VT_6+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=6,!same);
+ };
+ interpret XF86_Switch_VT_7+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=7,!same);
+ };
+ interpret XF86_Switch_VT_8+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=8,!same);
+ };
+ interpret XF86_Switch_VT_9+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=9,!same);
+ };
+ interpret XF86_Switch_VT_10+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=10,!same);
+ };
+ interpret XF86_Switch_VT_11+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=11,!same);
+ };
+ interpret XF86_Switch_VT_12+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=12,!same);
+ };
+ interpret XF86_Ungrab+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x55,data[1]=0x6e,data[2]=0x67,data[3]=0x72,data[4]=0x61,data[5]=0x62,data[6]=0x00);
+ };
+ interpret XF86_ClearGrab+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x43,data[1]=0x6c,data[2]=0x73,data[3]=0x47,data[4]=0x72,data[5]=0x62,data[6]=0x00);
+ };
+ interpret XF86_Next_VMode+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
+ };
+ interpret XF86_Prev_VMode+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
+ };
+ interpret ISO_Level5_Shift+AnyOfOrNone(all) {
+ action= SetMods(modifiers=LevelFive,clearLocks);
+ };
+ interpret ISO_Level5_Latch+AnyOfOrNone(all) {
+ action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
+ };
+ interpret ISO_Level5_Lock+AnyOfOrNone(all) {
+ action= LockMods(modifiers=LevelFive);
+ };
+ interpret Any+Exactly(Lock) {
+ action= LockMods(modifiers=Lock);
+ };
+ interpret Any+AnyOf(all) {
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ indicator "Caps Lock" {
+ !allowExplicit;
+ whichModState= locked;
+ modifiers= Lock;
+ };
+ indicator "Num Lock" {
+ !allowExplicit;
+ whichModState= locked;
+ modifiers= NumLock;
+ };
+ indicator "Scroll Lock" {
+ whichModState= locked;
+ modifiers= ScrollLock;
+ };
+ indicator "Shift Lock" {
+ !allowExplicit;
+ whichModState= locked;
+ modifiers= Shift;
+ };
+ indicator "Group 2" {
+ !allowExplicit;
+ groups= 0xfe;
+ };
+ indicator "Mouse Keys" {
+ indicatorDrivesKeyboard;
+ controls= mouseKeys;
+ };
+};
+
+xkb_symbols "pc+us(dvorak)+fr:2+fr(dvorak):3+us:4+inet(evdev)+level3(ralt_switch_for_alts_toggle):1+level3(ralt_" {
+
+ name[group1]="USA - Dvorak";
+ name[group2]="France";
+ name[group3]="France - Dvorak";
+ name[group4]="USA";
+
+ key <ESC> { [ Escape ] };
+ key <AE01> {
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ 1, exclam ],
+ symbols[Group2]= [ ampersand, 1, onesuperior, exclamdown ],
+ symbols[Group3]= [ equal, 1, NoSymbol, NoSymbol ],
+ symbols[Group4]= [ 1, exclam ]
+ };
+ key <AE02> {
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ 2, at ],
+ symbols[Group2]= [ eacute, 2, asciitilde, oneeighth ],
+ symbols[Group3]= [ slash, 2, plusminus, NoSymbol ],
+ symbols[Group4]= [ 2, at ]
+ };
+ key <AE03> {
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ 3, numbersign ],
+ symbols[Group2]= [ quotedbl, 3, numbersign, sterling ],
+ symbols[Group3]= [ minus, 3, onequarter, NoSymbol ],
+ symbols[Group4]= [ 3, numbersign ]
+ };
+ key <AE04> {
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ 4, dollar ],
+ symbols[Group2]= [ apostrophe, 4, braceleft, dollar ],
+ symbols[Group3]= [ egrave, 4, onehalf, NoSymbol ],
+ symbols[Group4]= [ 4, dollar ]
+ };
+ key <AE05> {
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ 5, percent ],
+ symbols[Group2]= [ parenleft, 5, bracketleft, threeeighths ],
+ symbols[Group3]= [ backslash, 5, threequarters, NoSymbol ],
+ symbols[Group4]= [ 5, percent ]
+ };
+ key <AE06> {
+ type[group1]= "FOUR_LEVEL",
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ 6, asciicircum, dead_circumflex, dead_circumflex ],
+ symbols[Group2]= [ minus, 6, bar, fiveeighths ],
+ symbols[Group3]= [ dead_circumflex, 6, NoSymbol, NoSymbol ],
+ symbols[Group4]= [ 6, asciicircum ]
+ };
+ key <AE07> {
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ 7, ampersand ],
+ symbols[Group2]= [ egrave, 7, grave, seveneighths ],
+ symbols[Group3]= [ parenleft, 7, NoSymbol, NoSymbol ],
+ symbols[Group4]= [ 7, ampersand ]
+ };
+ key <AE08> {
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ 8, asterisk ],
+ symbols[Group2]= [ underscore, 8, backslash, trademark ],
+ symbols[Group3]= [ ISO_Level3_Latch, 8, grave, NoSymbol ],
+ symbols[Group4]= [ 8, asterisk ]
+ };
+ key <AE09> {
+ type[group1]= "FOUR_LEVEL",
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ 9, parenleft, dead_grave, NoSymbol ],
+ symbols[Group2]= [ ccedilla, 9, asciicircum, plusminus ],
+ symbols[Group3]= [ parenright, 9, NoSymbol, NoSymbol ],
+ symbols[Group4]= [ 9, parenleft ]
+ };
+ key <AE10> {
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ 0, parenright ],
+ symbols[Group2]= [ agrave, 0, at, degree ],
+ symbols[Group3]= [ quotedbl, 0, NoSymbol, NoSymbol ],
+ symbols[Group4]= [ 0, parenright ]
+ };
+ key <AE11> {
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ bracketleft, braceleft ],
+ symbols[Group2]= [ parenright, degree, bracketright, questiondown ],
+ symbols[Group3]= [ bracketleft, plus, NoSymbol, NoSymbol ],
+ symbols[Group4]= [ minus, underscore ]
+ };
+ key <AE12> {
+ type[group1]= "FOUR_LEVEL",
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ bracketright, braceright, dead_tilde, NoSymbol ],
+ symbols[Group2]= [ equal, plus, braceright, dead_ogonek ],
+ symbols[Group3]= [ bracketright, percent, NoSymbol, NoSymbol ],
+ symbols[Group4]= [ equal, plus ]
+ };
+ key <BKSP> { [ BackSpace ] };
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> {
+ type[group1]= "FOUR_LEVEL",
+ type[group2]= "FOUR_LEVEL_ALPHABETIC",
+ type[group3]= "FOUR_LEVEL",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ apostrophe, quotedbl, dead_acute, dead_diaeresis ],
+ symbols[Group2]= [ a, A, ae, AE ],
+ symbols[Group3]= [ colon, question, ae, AE ],
+ symbols[Group4]= [ q, Q ]
+ };
+ key <AD02> {
+ type[group1]= "FOUR_LEVEL",
+ type[group2]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ comma, less, dead_cedilla, dead_caron ],
+ symbols[Group2]= [ z, Z, guillemotleft, less ],
+ symbols[Group3]= [ apostrophe, less, dollar, NoSymbol ],
+ symbols[Group4]= [ w, W ]
+ };
+ key <AD03> {
+ type[group1]= "FOUR_LEVEL",
+ type[group2]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ period, greater, EuroSign, periodcentered ],
+ symbols[Group2]= [ e, E, EuroSign, cent ],
+ symbols[Group3]= [ eacute, greater, Eacute, NoSymbol ],
+ symbols[Group4]= [ e, E ]
+ };
+ key <AD04> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ p, P ],
+ symbols[Group2]= [ r, R, paragraph, registered ],
+ symbols[Group3]= [ g, G, EuroSign, NoSymbol ],
+ symbols[Group4]= [ r, R ]
+ };
+ key <AD05> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_ALPHABETIC",
+ type[group3]= "FOUR_LEVEL",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ y, Y ],
+ symbols[Group2]= [ t, T, tslash, Tslash ],
+ symbols[Group3]= [ period, exclam, degree, NoSymbol ],
+ symbols[Group4]= [ t, T ]
+ };
+ key <AD06> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group3]= "ALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ f, F ],
+ symbols[Group2]= [ y, Y, leftarrow, yen ],
+ symbols[Group3]= [ h, H ],
+ symbols[Group4]= [ y, Y ]
+ };
+ key <AD07> {
+ type[group1]= "FOUR_LEVEL_ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group3]= "ALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ g, G, gcircumflex, Gcircumflex ],
+ symbols[Group2]= [ u, U, downarrow, uparrow ],
+ symbols[Group3]= [ v, V ],
+ symbols[Group4]= [ u, U ]
+ };
+ key <AD08> {
+ type[group1]= "FOUR_LEVEL_ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group3]= "FOUR_LEVEL_ALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ c, C, ccircumflex, Ccircumflex ],
+ symbols[Group2]= [ i, I, rightarrow, idotless ],
+ symbols[Group3]= [ c, C, ccedilla, Ccedilla ],
+ symbols[Group4]= [ i, I ]
+ };
+ key <AD09> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_ALPHABETIC",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ r, R ],
+ symbols[Group2]= [ o, O, oslash, Oslash ],
+ symbols[Group3]= [ m, M, mu, NoSymbol ],
+ symbols[Group4]= [ o, O ]
+ };
+ key <AD10> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_ALPHABETIC",
+ type[group3]= "ALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ l, L ],
+ symbols[Group2]= [ p, P, thorn, THORN ],
+ symbols[Group3]= [ k, K ],
+ symbols[Group4]= [ p, P ]
+ };
+ key <AD11> {
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "ALPHABETIC",
+ symbols[Group1]= [ slash, question ],
+ symbols[Group2]= [ dead_circumflex, dead_diaeresis, dead_diaeresis, dead_abovering ],
+ symbols[Group3]= [ z, Z ],
+ symbols[Group4]= [ bracketleft, braceleft ]
+ };
+ key <AD12> {
+ type[group2]= "FOUR_LEVEL",
+ symbols[Group1]= [ equal, plus ],
+ symbols[Group2]= [ dollar, sterling, currency, dead_macron ],
+ symbols[Group3]= [ dead_diaeresis, ampersand ],
+ symbols[Group4]= [ bracketright, braceright ]
+ };
+ key <RTRN> { [ Return ] };
+ key <LCTL> { [ Control_L ] };
+ key <AC01> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group3]= "FOUR_LEVEL_ALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ a, A ],
+ symbols[Group2]= [ q, Q, at, Greek_OMEGA ],
+ symbols[Group3]= [ o, O, ograve, Ograve ],
+ symbols[Group4]= [ a, A ]
+ };
+ key <AC02> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group3]= "FOUR_LEVEL_ALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ o, O ],
+ symbols[Group2]= [ s, S, ssharp, section ],
+ symbols[Group3]= [ a, A, agrave, Agrave ],
+ symbols[Group4]= [ s, S ]
+ };
+ key <AC03> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_ALPHABETIC",
+ type[group3]= "FOUR_LEVEL_ALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ e, E ],
+ symbols[Group2]= [ d, D, eth, ETH ],
+ symbols[Group3]= [ u, U, ugrave, Ugrave ],
+ symbols[Group4]= [ d, D ]
+ };
+ key <AC04> {
+ type[group1]= "FOUR_LEVEL_ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group3]= "FOUR_LEVEL_ALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ u, U, ubreve, Ubreve ],
+ symbols[Group2]= [ f, F, dstroke, ordfeminine ],
+ symbols[Group3]= [ e, E, egrave, Egrave ],
+ symbols[Group4]= [ f, F ]
+ };
+ key <AC05> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_ALPHABETIC",
+ type[group3]= "ALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ i, I ],
+ symbols[Group2]= [ g, G, eng, ENG ],
+ symbols[Group3]= [ b, B ],
+ symbols[Group4]= [ g, G ]
+ };
+ key <AC06> {
+ type[group1]= "FOUR_LEVEL",
+ type[group2]= "FOUR_LEVEL_ALPHABETIC",
+ type[group3]= "FOUR_LEVEL",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ apostrophe, quotedbl, dead_acute, dead_diaeresis ],
+ symbols[Group2]= [ a, A, ae, AE ],
+ symbols[Group3]= [ colon, question, ae, AE ],
+ symbols[Group4]= [ q, Q ]
+ };
+ key <AC07> {
+ type[group1]= "FOUR_LEVEL",
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ 6, asciicircum, dead_circumflex, dead_circumflex ],
+ symbols[Group2]= [ minus, 6, bar, fiveeighths ],
+ symbols[Group3]= [ dead_circumflex, 6, NoSymbol, NoSymbol ],
+ symbols[Group4]= [ 6, asciicircum ]
+ };
+ key <AC08> {
+ type[group1]= "FOUR_LEVEL",
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ 9, parenleft, dead_grave, NoSymbol ],
+ symbols[Group2]= [ ccedilla, 9, asciicircum, plusminus ],
+ symbols[Group3]= [ parenright, 9, NoSymbol, NoSymbol ],
+ symbols[Group4]= [ 9, parenleft ]
+ };
+ key <AC06> {
+ type[group1]= "FOUR_LEVEL",
+ type[group2]= "FOUR_LEVEL_ALPHABETIC",
+ type[group3]= "FOUR_LEVEL",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ d, D, dead_acute, dead_acute ],
+ symbols[Group2]= [ h, H, hstroke, Hstroke ],
+ symbols[Group3]= [ f, F, dead_grave, dead_grave ],
+ symbols[Group4]= [ h, H ]
+ };
+ key <AC07> {
+ type[group1]= "FOUR_LEVEL",
+ type[group2]= "FOUR_LEVEL_ALPHABETIC",
+ type[group3]= "FOUR_LEVEL",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ h, H, dead_acute, dead_acute ],
+ symbols[Group2]= [ j, J, j, J ],
+ symbols[Group3]= [ s, S, dead_acute, dead_acute ],
+ symbols[Group4]= [ j, J ]
+ };
+ key <AC08> {
+ type[group1]= "FOUR_LEVEL_ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_ALPHABETIC",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ t, T , dead_circumflex, dead_circumflex],
+ symbols[Group2]= [ k, K, kra, ampersand ],
+ symbols[Group3]= [ t, T , dead_circumflex, dead_circumflex],
+ symbols[Group4]= [ k, K ]
+ };
+ key <AC09> {
+ type[group1]= "FOUR_LEVEL_ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_ALPHABETIC",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ n, N, dead_grave, dead_grave ],
+ symbols[Group2]= [ l, L, lstroke, Lstroke ],
+ symbols[Group3]= [ n, N, dead_grave, dead_grave ],
+ symbols[Group4]= [ l, L ]
+ };
+ key <AC10> {
+ type[group1]= "FOUR_LEVEL_ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group3]= "ALPHABETIC",
+ symbols[Group1]= [ s, S, scircumflex, Scircumflex ],
+ symbols[Group2]= [ m, M, mu, masculine ],
+ symbols[Group3]= [ d, D ],
+ symbols[Group4]= [ semicolon, colon ]
+ };
+ key <AC11> {
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "ALPHABETIC",
+ symbols[Group1]= [ minus, underscore ],
+ symbols[Group2]= [ ugrave, percent, dead_circumflex, dead_caron ],
+ symbols[Group3]= [ w, W ],
+ symbols[Group4]= [ apostrophe, quotedbl ]
+ };
+ key <TLDE> {
+ type[group1]= "FOUR_LEVEL",
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ grave, asciitilde, dead_grave, dead_tilde ],
+ symbols[Group2]= [ twosuperior, asciitilde, notsign, notsign ],
+ symbols[Group3]= [ underscore, asterisk, NoSymbol, NoSymbol ],
+ symbols[Group4]= [ grave, asciitilde ]
+ };
+ key <LFSH> { [ Shift_L ] };
+ key <BKSL> {
+ type[group2]= "FOUR_LEVEL",
+ symbols[Group1]= [ backslash, bar ],
+ symbols[Group2]= [ asterisk, mu, dead_grave, dead_breve ],
+ symbols[Group3]= [ asciitilde, numbersign ],
+ symbols[Group4]= [ backslash, bar ]
+ };
+ key <AB01> {
+ type[group1]= "FOUR_LEVEL",
+ type[group2]= "FOUR_LEVEL_ALPHABETIC",
+ type[group3]= "FOUR_LEVEL_PLUS_LOCK",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ semicolon, colon, dead_ogonek, dead_doubleacute ],
+ symbols[Group2]= [ w, W, lstroke, Lstroke ],
+ symbols[Group3]= [ semicolon, bar, oe, OE, minus ],
+ symbols[Group4]= [ z, Z ]
+ };
+ key <AB02> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ q, Q ],
+ symbols[Group2]= [ x, X, guillemotright, greater ],
+ symbols[Group3]= [ q, Q, braceleft, NoSymbol ],
+ symbols[Group4]= [ x, X ]
+ };
+ key <AB03> {
+ type[group1]= "FOUR_LEVEL_ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group3]= "FOUR_LEVEL",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ j, J, jcircumflex, Jcircumflex ],
+ symbols[Group2]= [ c, C, cent, copyright ],
+ symbols[Group3]= [ comma, at, braceright, NoSymbol ],
+ symbols[Group4]= [ c, C ]
+ };
+ key <AB04> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group3]= "FOUR_LEVEL_ALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ k, K ],
+ symbols[Group2]= [ v, V, leftdoublequotemark, leftsinglequotemark ],
+ symbols[Group3]= [ i, I, igrave, Igrave ],
+ symbols[Group4]= [ v, V ]
+ };
+ key <AB05> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ x, X ],
+ symbols[Group2]= [ b, B, rightdoublequotemark, rightsinglequotemark ],
+ symbols[Group3]= [ y, Y, sterling, NoSymbol ],
+ symbols[Group4]= [ b, B ]
+ };
+ key <AB06> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL_ALPHABETIC",
+ type[group3]= "ALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ b, B ],
+ symbols[Group2]= [ n, N, n, N ],
+ symbols[Group3]= [ x, X ],
+ symbols[Group4]= [ n, N ]
+ };
+ key <AB07> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ type[group4]= "ALPHABETIC",
+ symbols[Group1]= [ m, M ],
+ symbols[Group2]= [ comma, question, dead_acute, dead_doubleacute ],
+ symbols[Group3]= [ r, R, masculine, NoSymbol ],
+ symbols[Group4]= [ m, M ]
+ };
+ key <AB08> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "ALPHABETIC",
+ symbols[Group1]= [ w, W ],
+ symbols[Group2]= [ semicolon, period, horizconnector, multiply ],
+ symbols[Group3]= [ l, L ],
+ symbols[Group4]= [ comma, less ]
+ };
+ key <AB09> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+ symbols[Group1]= [ v, V ],
+ symbols[Group2]= [ colon, slash, periodcentered, division ],
+ symbols[Group3]= [ p, P, section, NoSymbol ],
+ symbols[Group4]= [ period, greater ]
+ };
+ key <AB10> {
+ type[group1]= "ALPHABETIC",
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "ALPHABETIC",
+ symbols[Group1]= [ z, Z ],
+ symbols[Group2]= [ exclam, section, dead_belowdot, dead_abovedot ],
+ symbols[Group3]= [ j, J ],
+ symbols[Group4]= [ slash, question ]
+ };
+ key <RTSH> { [ Shift_R ] };
+ key <KPMU> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ KP_Multiply, XF86_ClearGrab ]
+ };
+ key <LALT> {
+ type= "PC_RALT_LEVEL2",
+ symbols[Group1]= [ Alt_L, ISO_Prev_Group ]
+ };
+ key <SPCE> {
+ type[group1]= "LOCAL_EIGHT_LEVEL",
+ type[group3]= "FOUR_LEVEL",
+ symbols[Group1]= [ space, space, space, nobreakspace, space, U202F, NoSymbol, NoSymbol ],
+ symbols[Group2]= [ space, space ],
+ symbols[Group3]= [ space, space, nobreakspace, nobreakspace ]
+ };
+ key <CAPS> {
+ type= "TWO_LEVEL",
+ symbols[Group1]= [ Multi_key, Multi_key ]
+ };
+ key <FK01> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F1, XF86_Switch_VT_1 ]
+ };
+ key <FK02> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F2, XF86_Switch_VT_2 ]
+ };
+ key <FK03> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F3, XF86_Switch_VT_3 ]
+ };
+ key <FK04> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F4, XF86_Switch_VT_4 ]
+ };
+ key <FK05> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F5, XF86_Switch_VT_5 ]
+ };
+ key <FK06> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F6, XF86_Switch_VT_6 ]
+ };
+ key <FK07> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F7, XF86_Switch_VT_7 ]
+ };
+ key <FK08> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F8, XF86_Switch_VT_8 ]
+ };
+ key <FK09> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F9, XF86_Switch_VT_9 ]
+ };
+ key <FK10> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F10, XF86_Switch_VT_10 ]
+ };
+ key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] };
+ key <SCLK> { [ Scroll_Lock ] };
+ key <KP7> { [ KP_Home, KP_7 ] };
+ key <KP8> { [ KP_Up, KP_8 ] };
+ key <KP9> { [ KP_Prior, KP_9 ] };
+ key <KPSU> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ KP_Subtract, XF86_Prev_VMode ]
+ };
+ key <KP4> { [ KP_Left, KP_4 ] };
+ key <KP5> { [ KP_Begin, KP_5 ] };
+ key <KP6> { [ KP_Right, KP_6 ] };
+ key <KPAD> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ KP_Add, XF86_Next_VMode ]
+ };
+ key <KP1> { [ KP_End, KP_1 ] };
+ key <KP2> { [ KP_Down, KP_2 ] };
+ key <KP3> { [ KP_Next, KP_3 ] };
+ key <KP0> { [ KP_Insert, KP_0 ] };
+ key <KPDL> { [ KP_Delete, KP_Decimal ] };
+ key <LVL3> { [ ISO_Level3_Shift ] };
+ key <LSGT> {
+ type[group1]= "FOUR_LEVEL",
+ type[group2]= "FOUR_LEVEL",
+ type[group3]= "FOUR_LEVEL_PLUS_LOCK",
+ symbols[Group1]= [ less, greater, bar, brokenbar ],
+ symbols[Group2]= [ less, greater, bar, brokenbar ],
+ symbols[Group3]= [ agrave, ccedilla, Agrave, Ccedilla, slash ]
+ };
+ key <FK11> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F11, XF86_Switch_VT_11 ]
+ };
+ key <FK12> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F12, XF86_Switch_VT_12 ]
+ };
+ key <KATA> { [ Katakana ] };
+ key <HIRA> { [ Hiragana ] };
+ key <HENK> { [ Henkan_Mode ] };
+ key <HKTG> { [ Hiragana_Katakana ] };
+ key <MUHE> { [ Muhenkan ] };
+ key <KPEN> { [ KP_Enter ] };
+ key <RCTL> { [ Control_R ] };
+ key <KPDV> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ KP_Divide, XF86_Ungrab ]
+ };
+ key <PRSC> {
+ type= "PC_ALT_LEVEL2",
+ symbols[Group1]= [ Print, Sys_Req ]
+ };
+ key <RALT> {
+ type[group1]= "PC_LALT_LEVEL2",
+ type[group2]= "PC_ALT_LEVEL2",
+ type[group3]= "PC_ALT_LEVEL2",
+ type[group4]= "PC_ALT_LEVEL2",
+ symbols[Group1]= [ ISO_Level3_Shift, ISO_Next_Group ],
+ symbols[Group2]= [ ISO_Level3_Shift, ISO_Next_Group ],
+ symbols[Group3]= [ ISO_Level3_Shift, ISO_Next_Group ],
+ symbols[Group4]= [ ISO_Level3_Shift, ISO_Next_Group ]
+ };
+ key <LNFD> { [ Linefeed ] };
+ key <HOME> { [ Home ] };
+ key <UP> { [ Up ] };
+ key <PGUP> { [ Prior ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+ key <END> { [ End ] };
+ key <DOWN> { [ Down ] };
+ key <PGDN> { [ Next ] };
+ key <INS> { [ Insert ] };
+ key <DELE> { [ Delete ] };
+ key <MUTE> { [ XF86AudioMute ] };
+ key <VOL-> { [ XF86AudioLowerVolume ] };
+ key <VOL+> { [ XF86AudioRaiseVolume ] };
+ key <POWR> { [ XF86PowerOff ] };
+ key <KPEQ> { [ KP_Equal ] };
+ key <I126> { [ plusminus ] };
+ key <PAUS> {
+ type= "PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ Pause, Break ]
+ };
+ key <I128> { [ XF86LaunchA ] };
+ key <I129> { [ KP_Decimal ] };
+ key <HNGL> { [ Hangul ] };
+ key <HJCV> { [ Hangul_Hanja ] };
+ key <LWIN> { [ Super_L ] };
+ key <RWIN> { [ Super_R ] };
+ key <COMP> { [ Menu ] };
+ key <STOP> { [ Cancel ] };
+ key <AGAI> { [ Redo ] };
+ key <PROP> { [ SunProps ] };
+ key <UNDO> { [ Undo ] };
+ key <FRNT> { [ SunFront ] };
+ key <COPY> { [ XF86Copy ] };
+ key <OPEN> { [ SunOpen ] };
+ key <PAST> { [ XF86Paste ] };
+ key <FIND> { [ Find ] };
+ key <CUT> { [ XF86Cut ] };
+ key <HELP> { [ Help ] };
+ key <I147> { [ XF86MenuKB ] };
+ key <I148> { [ XF86Calculator ] };
+ key <I150> { [ XF86Sleep ] };
+ key <I151> { [ XF86WakeUp ] };
+ key <I152> { [ XF86Explorer ] };
+ key <I153> { [ XF86Send ] };
+ key <I155> { [ XF86Xfer ] };
+ key <I156> { [ XF86Launch1 ] };
+ key <I157> { [ XF86Launch2 ] };
+ key <I158> { [ XF86WWW ] };
+ key <I159> { [ XF86DOS ] };
+ key <I160> { [ XF86ScreenSaver ] };
+ key <I162> { [ XF86RotateWindows ] };
+ key <I163> { [ XF86Mail ] };
+ key <I164> { [ XF86Favorites ] };
+ key <I165> { [ XF86MyComputer ] };
+ key <I166> { [ XF86Back ] };
+ key <I167> { [ XF86Forward ] };
+ key <I169> { [ XF86Eject ] };
+ key <I170> { [ XF86Eject, XF86Eject ] };
+ key <I171> { [ XF86AudioNext ] };
+ key <I172> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I173> { [ XF86AudioPrev ] };
+ key <I174> { [ XF86AudioStop, XF86Eject ] };
+ key <I175> { [ XF86AudioRecord ] };
+ key <I176> { [ XF86AudioRewind ] };
+ key <I177> { [ XF86Phone ] };
+ key <I179> { [ XF86Tools ] };
+ key <I180> { [ XF86HomePage ] };
+ key <I181> { [ XF86Reload ] };
+ key <I182> { [ XF86Close ] };
+ key <I185> { [ XF86ScrollUp ] };
+ key <I186> { [ XF86ScrollDown ] };
+ key <I187> { [ parenleft ] };
+ key <I188> { [ parenright ] };
+ key <I189> { [ XF86New ] };
+ key <I190> { [ Redo ] };
+ key <FK13> { [ XF86Tools ] };
+ key <FK14> { [ XF86Launch5 ] };
+ key <FK15> { [ XF86MenuKB ] };
+ key <FK22> { [ XF86TouchpadToggle ] };
+ key <MDSW> { [ Mode_switch ] };
+ key <ALT> { [ NoSymbol, Alt_L ] };
+ key <META> { [ NoSymbol, Meta_L ] };
+ key <SUPR> { [ NoSymbol, Super_L ] };
+ key <HYPR> { [ NoSymbol, Hyper_L ] };
+ key <I208> { [ XF86AudioPlay ] };
+ key <I209> { [ XF86AudioPause ] };
+ key <I210> { [ XF86Launch3 ] };
+ key <I211> { [ XF86Launch4 ] };
+ key <I212> { [ XF86LaunchB ] };
+ key <I213> { [ XF86Suspend ] };
+ key <I214> { [ XF86Close ] };
+ key <I215> { [ XF86AudioPlay ] };
+ key <I216> { [ XF86AudioForward ] };
+ key <I218> { [ Print ] };
+ key <I220> { [ XF86WebCam ] };
+ key <I223> { [ XF86Mail ] };
+ key <I225> { [ XF86Search ] };
+ key <I227> { [ XF86Finance ] };
+ key <I229> { [ XF86Shop ] };
+ key <I231> { [ Cancel ] };
+ key <I232> { [ XF86MonBrightnessDown ] };
+ key <I233> { [ XF86MonBrightnessUp ] };
+ key <I234> { [ XF86AudioMedia ] };
+ key <I235> { [ XF86Display ] };
+ key <I236> { [ XF86KbdLightOnOff ] };
+ key <I237> { [ XF86KbdBrightnessDown ] };
+ key <I238> { [ XF86KbdBrightnessUp ] };
+ key <I239> { [ XF86Send ] };
+ key <I240> { [ XF86Reply ] };
+ key <I241> { [ XF86MailForward ] };
+ key <I242> { [ XF86Save ] };
+ key <I243> { [ XF86Documents ] };
+ key <I244> { [ XF86Battery ] };
+ key <I245> { [ XF86Bluetooth ] };
+ key <I246> { [ XF86WLAN ] };
+ modifier_map Control { <LCTL> };
+ modifier_map Shift { <LFSH> };
+ modifier_map Shift { <RTSH> };
+ modifier_map Mod1 { <LALT> };
+ modifier_map Mod2 { <NMLK> };
+ modifier_map Mod5 { <LVL3> };
+ modifier_map Control { <RCTL> };
+ modifier_map Mod4 { <LWIN> };
+ modifier_map Mod4 { <RWIN> };
+ modifier_map Mod5 { <MDSW> };
+ modifier_map Mod1 { <META> };
+ modifier_map Mod4 { <SUPR> };
+ modifier_map Mod4 { <HYPR> };
+};
+
+xkb_geometry "pc(pc105)" {
+
+ width= 470;
+ height= 180;
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+ baseColor= "white";
+ labelColor= "black";
+ xfont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ description= "Generic 105";
+
+ shape "NORM" {
+ corner= 1,
+ { [ 18, 18 ] },
+ { [ 2, 1 ], [ 16, 16 ] }
+ };
+ shape "BKSP" {
+ corner= 1,
+ { [ 38, 18 ] },
+ { [ 2, 1 ], [ 36, 16 ] }
+ };
+ shape "TABK" {
+ corner= 1,
+ { [ 28, 18 ] },
+ { [ 2, 1 ], [ 26, 16 ] }
+ };
+ shape "BKSL" {
+ corner= 1,
+ { [ 28, 18 ] },
+ { [ 2, 1 ], [ 26, 16 ] }
+ };
+ shape "RTRN" {
+ corner= 1,
+ { [ 42, 18 ] },
+ { [ 2, 1 ], [ 40, 16 ] }
+ };
+ shape "CAPS" {
+ corner= 1,
+ { [ 33, 18 ] },
+ { [ 2, 1 ], [ 31, 16 ] }
+ };
+ shape "LFSH" {
+ corner= 1,
+ { [ 25, 18 ] },
+ { [ 2, 1 ], [ 23, 16 ] }
+ };
+ shape "RTSH" {
+ corner= 1,
+ { [ 50, 18 ] },
+ { [ 2, 1 ], [ 50, 16 ] }
+ };
+ shape "MODK" {
+ corner= 1,
+ { [ 27, 18 ] },
+ { [ 2, 1 ], [ 25, 16 ] }
+ };
+ shape "SMOD" {
+ corner= 1,
+ { [ 23, 18 ] },
+ { [ 2, 1 ], [ 21, 16 ] }
+ };
+ shape "SPCE" {
+ corner= 1,
+ { [ 113, 18 ] },
+ { [ 2, 1 ], [ 111, 16 ] }
+ };
+ shape "KP0" {
+ corner= 1,
+ { [ 37, 18 ] },
+ { [ 2, 1 ], [ 35, 16 ] }
+ };
+ shape "KPAD" {
+ corner= 1,
+ { [ 18, 37 ] },
+ { [ 2, 1 ], [ 16, 35 ] }
+ };
+ shape "LEDS" { { [ 75, 20 ] } };
+ shape "LED" { { [ 5, 1 ] } };
+ section "Function" {
+ key.color= "grey20";
+ priority= 7;
+ top= 22;
+ left= 19;
+ width= 351;
+ height= 19;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <ESC>, "NORM", 1 },
+ { <FK01>, "NORM", 20, color="white" },
+ { <FK02>, "NORM", 1, color="white" },
+ { <FK03>, "NORM", 1, color="white" },
+ { <FK04>, "NORM", 1, color="white" },
+ { <FK05>, "NORM", 11, color="white" },
+ { <FK06>, "NORM", 1, color="white" },
+ { <FK07>, "NORM", 1, color="white" },
+ { <FK08>, "NORM", 1, color="white" },
+ { <FK09>, "NORM", 11, color="white" },
+ { <FK10>, "NORM", 1, color="white" },
+ { <FK11>, "NORM", 1, color="white" },
+ { <FK12>, "NORM", 1, color="white" },
+ { <PRSC>, "NORM", 8, color="white" },
+ { <SCLK>, "NORM", 1, color="white" },
+ { <PAUS>, "NORM", 1, color="white" }
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ key.color= "white";
+ priority= 8;
+ top= 61;
+ left= 19;
+ width= 287;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <TLDE>, "NORM", 1 }, { <AE01>, "NORM", 1 },
+ { <AE02>, "NORM", 1 }, { <AE03>, "NORM", 1 },
+ { <AE04>, "NORM", 1 }, { <AE05>, "NORM", 1 },
+ { <AE06>, "NORM", 1 }, { <AE07>, "NORM", 1 },
+ { <AE08>, "NORM", 1 }, { <AE09>, "NORM", 1 },
+ { <AE10>, "NORM", 1 }, { <AE11>, "NORM", 1 },
+ { <AE12>, "NORM", 1 },
+ { <BKSP>, "BKSP", 1, color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <TAB>, "TABK", 1, color="grey20" },
+ { <AD01>, "NORM", 1 }, { <AD02>, "NORM", 1 },
+ { <AD03>, "NORM", 1 }, { <AD04>, "NORM", 1 },
+ { <AD05>, "NORM", 1 }, { <AD06>, "NORM", 1 },
+ { <AD07>, "NORM", 1 }, { <AD08>, "NORM", 1 },
+ { <AD09>, "NORM", 1 }, { <AD10>, "NORM", 1 },
+ { <AD11>, "NORM", 1 }, { <AD12>, "NORM", 1 },
+ { <BKSL>, "BKSL", 1 }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <CAPS>, "CAPS", 1, color="grey20" },
+ { <AC01>, "NORM", 1 }, { <AC02>, "NORM", 1 },
+ { <AC03>, "NORM", 1 }, { <AC04>, "NORM", 1 },
+ { <AC05>, "NORM", 1 }, { <AC06>, "NORM", 1 },
+ { <AC07>, "NORM", 1 }, { <AC08>, "NORM", 1 },
+ { <AC09>, "NORM", 1 }, { <AC10>, "NORM", 1 },
+ { <AC11>, "NORM", 1 },
+ { <RTRN>, "RTRN", 1, color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <LFSH>, "LFSH", 1, color="grey20" },
+ { <LSGT>, "NORM", 1 }, { <AB01>, "NORM", 1 },
+ { <AB02>, "NORM", 1 }, { <AB03>, "NORM", 1 },
+ { <AB04>, "NORM", 1 }, { <AB05>, "NORM", 1 },
+ { <AB06>, "NORM", 1 }, { <AB07>, "NORM", 1 },
+ { <AB08>, "NORM", 1 }, { <AB09>, "NORM", 1 },
+ { <AB10>, "NORM", 1 },
+ { <RTSH>, "RTSH", 1, color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <LCTL>, "MODK", 1, color="grey20" },
+ { <LWIN>, "SMOD", 1, color="grey20" },
+ { <LALT>, "SMOD", 1, color="grey20" },
+ { <SPCE>, "SPCE", 1 },
+ { <RALT>, "SMOD", 1, color="grey20" },
+ { <RWIN>, "SMOD", 1, color="grey20" },
+ { <MENU>, "SMOD", 1, color="grey20" },
+ { <RCTL>, "SMOD", 1, color="grey20" }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ key.color= "grey20";
+ priority= 9;
+ top= 61;
+ left= 312;
+ width= 58;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <INS>, "NORM", 1 }, { <HOME>, "NORM", 1 },
+ { <PGUP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <DELE>, "NORM", 1 }, { <END>, "NORM", 1 },
+ { <PGDN>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys {
+ { <UP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <LEFT>, "NORM", 1 }, { <DOWN>, "NORM", 1 },
+ { <RGHT>, "NORM", 1 }
+ };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ key.color= "grey20";
+ priority= 10;
+ top= 61;
+ left= 376;
+ width= 77;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <NMLK>, "NORM", 1 }, { <KPDV>, "NORM", 1 },
+ { <KPMU>, "NORM", 1 }, { <KPSU>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <KP7>, "NORM", 1, color="white" },
+ { <KP8>, "NORM", 1, color="white" },
+ { <KP9>, "NORM", 1, color="white" },
+ { <KPAD>, "KPAD", 1 }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <KP4>, "NORM", 1, color="white" },
+ { <KP5>, "NORM", 1, color="white" },
+ { <KP6>, "NORM", 1, color="white" }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <KP1>, "NORM", 1, color="white" },
+ { <KP2>, "NORM", 1, color="white" },
+ { <KP3>, "NORM", 1, color="white" },
+ { <KPEN>, "KPAD", 1 }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <KP0>, "KP0", 1, color="white" },
+ { <KPDL>, "NORM", 1, color="white" }
+ };
+ };
+ }; // End of "Keypad" section
+
+ solid "LedPanel" {
+ top= 22;
+ left= 377;
+ priority= 0;
+ color= "grey10";
+ shape= "LEDS";
+ };
+ indicator "Num Lock" {
+ top= 37;
+ left= 382;
+ priority= 1;
+ onColor= "green";
+ offColor= "green30";
+ shape= "LED";
+ };
+ indicator "Caps Lock" {
+ top= 37;
+ left= 407;
+ priority= 2;
+ onColor= "green";
+ offColor= "green30";
+ shape= "LED";
+ };
+ indicator "Scroll Lock" {
+ top= 37;
+ left= 433;
+ priority= 3;
+ onColor= "green";
+ offColor= "green30";
+ shape= "LED";
+ };
+ text "NumLockLabel" {
+ top= 25;
+ left= 378;
+ priority= 4;
+ width= 19.8;
+ height= 10;
+ XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ text= "Num\nLock";
+ };
+ text "CapsLockLabel" {
+ top= 25;
+ left= 403;
+ priority= 5;
+ width= 26.4;
+ height= 10;
+ XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ text= "Caps\nLock";
+ };
+ text "ScrollLockLabel" {
+ top= 25;
+ left= 428;
+ priority= 6;
+ width= 39.6;
+ height= 10;
+ XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ text= "Scroll\nLock";
+ };
+};
+
+};
diff --git a/zathurarc b/zathurarc
@@ -0,0 +1,4 @@
+map q quit
+set page-padding 3
+set zoom-step 20
+
diff --git a/zsh/path b/zsh/path
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+PATH=$PATH:/mnt/tcvol/script:~/DOCUMENTS/REAL_tcvol/script/:~/jeux_win/:~/scripts/:~/scripts/aliases:/sbin:~/apps/openfst-1.2.7/src/bin
+export PATH
+
diff --git a/zsh/perso b/zsh/perso
@@ -0,0 +1 @@
+../private/zsh/perso+
\ No newline at end of file
diff --git a/zsh/zshrc b/zsh/zshrc
@@ -0,0 +1,250 @@
+. ~/.zsh/path
+. ~/.zsh/perso
+
+. ~/apps/z/z.sh
+
+zstyle ':completion:*' completer _expand _complete _ignored _match _correct _approximate _prefix
+zstyle ':completion:*' max-errors 2
+zstyle :compinstall filename '/home/a3_nm/.zshrc'
+
+autoload -Uz compinit
+compinit
+# End of lines added by compinstall
+
+# export PROMPT="%n@%m:%~$ "
+#PS1=$'%{\e[1;32m%}%n@h%{\e[0m%}:%B%~$%b '
+PS1=$'%{\e[35m%}%m%{\e[0;1m%}:%{\e[35m%}%B%~%{\e[0;1m%}$%b '
+
+# PS1=$'%{\e[1;32m%}%n@%m%{\e[0m%}:%B%~$%b '
+# PS1=$'%{\e[1;32m%}%n%{\e[0m%}@%{\e[1;32m%}%m%{\e[0m%}:%B%~$%b '
+
+HISTSIZE=200000
+SAVEHIST=200000
+HISTFILE=~/.history #-- zsh doesn't like to write on symlinks?
+
+setopt APPEND_HISTORY
+setopt INC_APPEND_HISTORY
+setopt SHARE_HISTORY
+
+setopt EXTENDED_HISTORY
+
+setopt HIST_IGNORE_DUPS
+setopt HIST_EXPIRE_DUPS_FIRST
+
+setopt CORRECT
+
+# . /etc/zsh_command_not_found
+
+LC_ALL=en_US.utf8
+LANG=en_US.utf8
+LESSCHARSET=utf-8
+LC_CTYPE=en_US.utf8
+LC_COLLATE=en_US.utf8
+LC_TIME=fr_FR.utf8
+LC_NUMERIC=fr_FR.utf8
+LC_MONETARY=fr_FR.utf8
+LC_MESSAGES=en_US.utf8
+LC_PAPER=fr_FR.utf8
+LC_NAME=en_US.utf8
+LC_ADDRESS=fr_FR.utf8
+LC_TELEPHONE=fr_FR.utf8
+LC_MEASUREMENT=fr_FR.utf8
+LC_IDENTIFICATION=en_US.utf8
+
+setopt HIST_IGNORE_SPACE
+
+zstyle ':completion:*' use-cache on
+zstyle ':completion:*' cache-path ~/.zsh_cache
+zmodload zsh/complist
+setopt extendedglob
+zstyle ':completion:*:*:kill:*:processes' list-colors "=(#b) #([0-9]#)*=36=31"
+
+export GREP_COLOR=31
+alias grep='grep --color=auto'
+alias guile='rlwrap guile'
+
+alias ls='ls --color=auto -h'
+alias ll='ls --color=auto -lh'
+alias lll='ls --color=auto -lh | less'
+alias truecrypt='truecrypt -t'
+
+alias df='df -h'
+#alias less='less -F'
+alias gpg='gpg --ask-cert-level'
+
+zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin \
+ /usr/sbin /usr/bin /sbin /bin /usr/X11R6/bin
+
+export PAGER='less'
+export EDITOR='vim'
+#export BROWSER='w3mn'
+export BROWSER='firefox'
+
+bindkey -e
+
+bindkey '^N' down-line-or-history
+bindkey '^P' up-line-or-history
+bindkey '^R' history-incremental-search-backward
+bindkey '^S' history-incremental-search-forward
+# bindkey vicmd 'k' history-incremental-search-forward
+bindkey 'ESC-H' run-help
+bindkey 'ESC-h' run-help
+bindkey 'ESC-?' which-command
+bindkey '^_' undo
+
+preexec () {
+ local WD="$(pwd | sed "s/^\/home\/$USER/~/")"
+ export LASTDATE="`date +%T`"
+ if [[ "$TERM" == "rxvt-unicode" ]]; then
+ #echo -ne "\e]0;$LOCALNAME $HOST:$WD$ $1 ($LASTDATE)\a"
+ echo -ne "\e]0;$LOCALNAME $HOST:$WD$ TODO ($LASTDATE)\a"
+ fi
+ export LASTCMD=$1
+ CMD=${1%% *}
+ case $CMD in
+ sudo)
+ CMD=$(echo $1 | cut -d ' ' -f 2)
+ RSL="#$CMD"
+ ;;
+ ssh)
+ HST=$(echo $1 | rev | cut -d ' ' -f 1 | rev)
+ RSL="@$HST"
+ ;;
+ s)
+ HST=$(echo $1 | rev | cut -d ' ' -f 1 | rev)
+ RSL="@$HST"
+ ;;
+ *)
+ RSL="$CMD"
+ esac
+ CMD=$RSL
+ if [[ "$TERM" == "screen" ]]; then
+ echo -ne "\ek$CMD\e\\"
+ fi
+}
+
+export LOCALNAME=""
+function termname () { export LOCALNAME="$1|"; }
+
+autoload edit-command-line
+zle -N edit-command-line
+bindkey '^X' edit-command-line
+
+#alias busy='my_file=$(find /usr/include -type f | sort -R | head -n 1); my_len=$(wc -l $my_file | awk "{print $1}"); let "r = $RANDOM % $my_len" 2>/dev/null; vim +$r $my_file'
+
+alias l=ls
+alias c=cd
+alias v=vim
+alias u=sudo
+alias h=ssh
+alias a=cat
+alias n=man
+alias m=make
+alias ag=apt-get
+alias p=less
+alias t=task
+alias md=mkdir
+alias g=git
+alias la="ls -a"
+alias ll="ls -l"
+alias gs="git status"
+alias ga="git add"
+alias gd="git diff"
+alias gc="git commit"
+alias gcm="git commit -m"
+alias gca="git commit -am"
+alias gps="git push"
+alias gpl="git pull"
+alias gl="git log"
+alias gb="git branch"
+alias gdb="gdb --args"
+alias feh="feh -Z"
+alias x="exec xinit"
+alias mtr="mtr -t"
+alias record=". ~/scripts/my_ttyrec"
+
+autoload -U read-from-minibuffer
+function save-alias()
+{
+ local REPLY
+ read-from-minibuffer "alias as "
+ FILE="$HOME/scripts/aliases/$REPLY"
+ if [ -n "$REPLY" -a ! -f $FILE ]; then
+ echo "#!/usr/bin/zsh\n\n. ~/.zshrc\n" > $FILE
+ echo "$BUFFER \$*" >> $FILE
+ chmod +x $FILE
+ BUFFER="$REPLY"
+ fi
+}
+
+function jump()
+{
+ CD=$(find . -iname \*$1\* | head -1)
+ if [ -n "$CD" ]
+ then
+ echo $CD
+ cd "$(dirname $CD)"
+ else
+ echo "Not found."
+ fi
+}
+
+zle -N save-alias
+
+bindkey '^G' save-alias
+
+# Change to most recently used directory:
+# http://matt.might.net/articles/console-hacks-exploiting-frequency/
+if [ -f ~/.lastdir ]; then
+ cd "`cat ~/.lastdir`"
+fi
+
+export LASTDIR="/"
+
+# fails with spaces in some cases
+function precmd () {
+ # Remember where we are:
+ pwd > ~/.lastdir
+
+ # Record new directory on change.
+ #newdir=`pwd`
+ #if [ ! "$LASTDIR" = "$newdir" ]; then
+ ## List contents:
+ #ls -t | head -7
+ #fi
+
+ export LASTDIR=$newdir
+
+ _z --add "$(pwd -P)"
+ if [[ "$TERM" == "screen" ]]; then
+ echo -ne "\ek_\e\\"
+ elif [[ "$TERM" == "rxvt-unicode" ]]; then
+ local WD=$(pwd | sed "s/^\/home\/$USER/~/")
+ if [ -n "$LASTCMD" ]
+ then
+ #TODO
+ #echo -ne "\e]0;$LOCALNAME $HOST:$WD$ (was $LASTCMD $LASTDATE) `date +%T`\a"
+ echo -ne "\e]0;$LOCALNAME $HOST:$WD$ (was TODO $LASTDATE) `date +%T`\a"
+ else
+ echo -ne "\e]0;urxvtc ready\a"
+ fi
+ fi
+}
+
+# TODO http://aperiodic.net/phil/prompt/
+
+# usage: manf command -flag (via commandlinefu)
+manf () { man $1 | less -p "^ +$2"; }
+# create a directory (with flags) and cd inside it
+mcd () { mkdir "$@" && cd ${@:$#} }
+# move a file somewhere (with flags) and link it here
+mln () { mv "$@" && ln -s ${@:$#} }
+
+alias ms="notmuch search"
+#alias msw="notmuch search"
+alias mn="notmuch search tag:new tag:inbox"
+alias mi="notmuch search tag:inbox"
+alias mw="grep \$\* | cut -d ' ' -f 1 | while read a; do notmuch show \$a; done | less"
+alias msw="history | tail -1 | cut -d ' ' -f2- | mw \$\*"
+alias myip="curl icanhazip.com"
+