Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > 16551e78563a5b49ff9624ee1c8b8101 > files > 1393

ghc-xmonad-contrib-devel-0.11-1.1.fc18.i686.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
<title>XMonad/Util/CustomKeys.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-comment'>--------------------------------------------------------------------</span>
<a name="line-2"></a><span class='hs-comment'>-- |</span>
<a name="line-3"></a><span class='hs-comment'>-- Module     : XMonad.Util.CustomKeys</span>
<a name="line-4"></a><span class='hs-comment'>-- Copyright  : (c) 2007 Valery V. Vorotyntsev</span>
<a name="line-5"></a><span class='hs-comment'>-- License    : BSD3-style (see LICENSE)</span>
<a name="line-6"></a><span class='hs-comment'>--</span>
<a name="line-7"></a><span class='hs-comment'>-- Maintainer : Valery V. Vorotynsev &lt;valery.vv@gmail.com&gt;</span>
<a name="line-8"></a><span class='hs-comment'>--</span>
<a name="line-9"></a><span class='hs-comment'>-- Customized key bindings.</span>
<a name="line-10"></a><span class='hs-comment'>--</span>
<a name="line-11"></a><span class='hs-comment'>-- (See also "XMonad.Util.EZConfig" in xmonad-contrib.)</span>
<a name="line-12"></a><span class='hs-comment'>--------------------------------------------------------------------</span>
<a name="line-13"></a>
<a name="line-14"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>XMonad</span><span class='hs-varop'>.</span><span class='hs-conid'>Util</span><span class='hs-varop'>.</span><span class='hs-conid'>CustomKeys</span> <span class='hs-layout'>(</span>
<a name="line-15"></a>                              <span class='hs-comment'>-- * Usage</span>
<a name="line-16"></a>                              <span class='hs-comment'>-- $usage</span>
<a name="line-17"></a>                               <span class='hs-varid'>customKeys</span>
<a name="line-18"></a>                              <span class='hs-layout'>,</span> <span class='hs-varid'>customKeysFrom</span>
<a name="line-19"></a>                              <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
<a name="line-20"></a>
<a name="line-21"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>XMonad</span>
<a name="line-22"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Reader</span>
<a name="line-23"></a>
<a name="line-24"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>M</span>
<a name="line-25"></a>
<a name="line-26"></a><span class='hs-comment'>-- $usage</span>
<a name="line-27"></a><span class='hs-comment'>--</span>
<a name="line-28"></a><span class='hs-comment'>-- 1. In @~\/.xmonad\/xmonad.hs@ add:</span>
<a name="line-29"></a><span class='hs-comment'>--</span>
<a name="line-30"></a><span class='hs-comment'>-- &gt; import XMonad.Util.CustomKeys</span>
<a name="line-31"></a><span class='hs-comment'>--</span>
<a name="line-32"></a><span class='hs-comment'>-- 2. Set key bindings with 'customKeys':</span>
<a name="line-33"></a><span class='hs-comment'>--</span>
<a name="line-34"></a><span class='hs-comment'>-- &gt; main = xmonad defaultConfig { keys = customKeys delkeys inskeys }</span>
<a name="line-35"></a><span class='hs-comment'>-- &gt;     where</span>
<a name="line-36"></a><span class='hs-comment'>-- &gt;       delkeys :: XConfig l -&gt; [(KeyMask, KeySym)]</span>
<a name="line-37"></a><span class='hs-comment'>-- &gt;       delkeys XConfig {modMask = modm} =</span>
<a name="line-38"></a><span class='hs-comment'>-- &gt;           -- we're preferring Futurama to Xinerama here</span>
<a name="line-39"></a><span class='hs-comment'>-- &gt;           [ (modm .|. m, k) | (m, k) &lt;- zip [0, shiftMask] [xK_w, xK_e, xK_r] ]</span>
<a name="line-40"></a><span class='hs-comment'>-- &gt;</span>
<a name="line-41"></a><span class='hs-comment'>-- &gt;       inskeys :: XConfig l -&gt; [((KeyMask, KeySym), X ())]</span>
<a name="line-42"></a><span class='hs-comment'>-- &gt;       inskeys conf@(XConfig {modMask = modm}) =</span>
<a name="line-43"></a><span class='hs-comment'>-- &gt;           [ ((mod1Mask,             xK_F2  ), spawn $ terminal conf)</span>
<a name="line-44"></a><span class='hs-comment'>-- &gt;           , ((modm .|. controlMask, xK_F11 ), spawn "xscreensaver-command -lock")</span>
<a name="line-45"></a><span class='hs-comment'>-- &gt;           , ((mod1Mask,             xK_Down), spawn "amixer set Master 1-")</span>
<a name="line-46"></a><span class='hs-comment'>-- &gt;           , ((mod1Mask,             xK_Up  ), spawn "amixer set Master 1+")</span>
<a name="line-47"></a><span class='hs-comment'>-- &gt;           ]</span>
<a name="line-48"></a><span class='hs-comment'>--</span>
<a name="line-49"></a><span class='hs-comment'>-- 0 (/hidden feature/). You can always replace bindings map</span>
<a name="line-50"></a><span class='hs-comment'>--   entirely. No need to import "CustomKeys" this time:</span>
<a name="line-51"></a><span class='hs-comment'>--</span>
<a name="line-52"></a><span class='hs-comment'>-- &gt; import XMonad</span>
<a name="line-53"></a><span class='hs-comment'>-- &gt; import System.Exit</span>
<a name="line-54"></a><span class='hs-comment'>-- &gt; import qualified Data.Map as M</span>
<a name="line-55"></a><span class='hs-comment'>-- &gt;</span>
<a name="line-56"></a><span class='hs-comment'>-- &gt; main = xmonad defaultConfig {</span>
<a name="line-57"></a><span class='hs-comment'>-- &gt;          keys = \_ -&gt; M.fromList [</span>
<a name="line-58"></a><span class='hs-comment'>-- &gt;                  -- Let me out of here! I want my KDE back! Help! Help!</span>
<a name="line-59"></a><span class='hs-comment'>-- &gt;                  ( (0, xK_Escape), io (exitWith ExitSuccess) ) ] }</span>
<a name="line-60"></a>
<a name="line-61"></a><a name="customKeys"></a><span class='hs-comment'>-- | Customize 'XMonad.Config.defaultConfig' -- delete needless</span>
<a name="line-62"></a><span class='hs-comment'>-- shortcuts and insert those you will use.</span>
<a name="line-63"></a><span class='hs-definition'>customKeys</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>XConfig</span> <span class='hs-conid'>Layout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>KeyMask</span><span class='hs-layout'>,</span> <span class='hs-conid'>KeySym</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ shortcuts to delete</span>
<a name="line-64"></a>           <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>XConfig</span> <span class='hs-conid'>Layout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>KeyMask</span><span class='hs-layout'>,</span> <span class='hs-conid'>KeySym</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>X</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ key bindings to insert</span>
<a name="line-65"></a>           <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>XConfig</span> <span class='hs-conid'>Layout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>M</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span> <span class='hs-layout'>(</span><span class='hs-conid'>KeyMask</span><span class='hs-layout'>,</span> <span class='hs-conid'>KeySym</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>X</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span>
<a name="line-66"></a><span class='hs-definition'>customKeys</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>customKeysFrom</span> <span class='hs-varid'>defaultConfig</span>
<a name="line-67"></a>
<a name="line-68"></a><a name="customKeysFrom"></a><span class='hs-comment'>-- | General variant of 'customKeys': customize key bindings of</span>
<a name="line-69"></a><span class='hs-comment'>-- third-party configuration.</span>
<a name="line-70"></a><span class='hs-definition'>customKeysFrom</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>XConfig</span> <span class='hs-varid'>l</span> <span class='hs-comment'>-- ^ original configuration</span>
<a name="line-71"></a>               <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>XConfig</span> <span class='hs-conid'>Layout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>KeyMask</span><span class='hs-layout'>,</span> <span class='hs-conid'>KeySym</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ shortcuts to delete</span>
<a name="line-72"></a>               <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>XConfig</span> <span class='hs-conid'>Layout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>KeyMask</span><span class='hs-layout'>,</span> <span class='hs-conid'>KeySym</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>X</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ key bindings to insert</span>
<a name="line-73"></a>               <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>XConfig</span> <span class='hs-conid'>Layout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>M</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span> <span class='hs-layout'>(</span><span class='hs-conid'>KeyMask</span><span class='hs-layout'>,</span> <span class='hs-conid'>KeySym</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>X</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span>
<a name="line-74"></a><span class='hs-definition'>customKeysFrom</span> <span class='hs-varid'>conf</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-varid'>runReader</span> <span class='hs-varop'>.</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>customize</span> <span class='hs-varid'>conf</span>
<a name="line-75"></a>
<a name="line-76"></a><a name="customize"></a><span class='hs-definition'>customize</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>XConfig</span> <span class='hs-varid'>l</span>
<a name="line-77"></a>          <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>XConfig</span> <span class='hs-conid'>Layout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>KeyMask</span><span class='hs-layout'>,</span> <span class='hs-conid'>KeySym</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
<a name="line-78"></a>          <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>XConfig</span> <span class='hs-conid'>Layout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>KeyMask</span><span class='hs-layout'>,</span> <span class='hs-conid'>KeySym</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>X</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
<a name="line-79"></a>          <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Reader</span> <span class='hs-layout'>(</span><span class='hs-conid'>XConfig</span> <span class='hs-conid'>Layout</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>M</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span> <span class='hs-layout'>(</span><span class='hs-conid'>KeyMask</span><span class='hs-layout'>,</span> <span class='hs-conid'>KeySym</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>X</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-80"></a><span class='hs-definition'>customize</span> <span class='hs-varid'>conf</span> <span class='hs-varid'>ds</span> <span class='hs-varid'>is</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>asks</span> <span class='hs-layout'>(</span><span class='hs-varid'>keys</span> <span class='hs-varid'>conf</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>delete</span> <span class='hs-varid'>ds</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>insert</span> <span class='hs-varid'>is</span>
<a name="line-81"></a>
<a name="line-82"></a><a name="delete"></a><span class='hs-definition'>delete</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadReader</span> <span class='hs-varid'>r</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>r</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>M</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-conid'>M</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
<a name="line-83"></a><span class='hs-definition'>delete</span> <span class='hs-varid'>dels</span> <span class='hs-varid'>kmap</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>asks</span> <span class='hs-varid'>dels</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>return</span> <span class='hs-varop'>.</span> <span class='hs-varid'>foldr</span> <span class='hs-conid'>M</span><span class='hs-varop'>.</span><span class='hs-varid'>delete</span> <span class='hs-varid'>kmap</span>
<a name="line-84"></a>
<a name="line-85"></a><a name="insert"></a><span class='hs-definition'>insert</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadReader</span> <span class='hs-varid'>r</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span>
<a name="line-86"></a>          <span class='hs-layout'>(</span><span class='hs-varid'>r</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>M</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-conid'>M</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
<a name="line-87"></a><span class='hs-definition'>insert</span> <span class='hs-varid'>ins</span> <span class='hs-varid'>kmap</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>asks</span> <span class='hs-varid'>ins</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>return</span> <span class='hs-varop'>.</span> <span class='hs-varid'>foldr</span> <span class='hs-layout'>(</span><span class='hs-varid'>uncurry</span> <span class='hs-conid'>M</span><span class='hs-varop'>.</span><span class='hs-varid'>insert</span><span class='hs-layout'>)</span> <span class='hs-varid'>kmap</span>
</pre></body>
</html>