aboutsummaryrefslogtreecommitdiffstats
path: root/XMonad/Util/XPaste.hs
diff options
context:
space:
mode:
authorSpencer Janssen <spencerjanssen@gmail.com>2008-09-21 08:09:47 +0200
committerSpencer Janssen <spencerjanssen@gmail.com>2008-09-21 08:09:47 +0200
commit210c40758ec1c209bcc13fbe63ab81214e026da4 (patch)
treeff228c3b56521ed08c864d531ea969379080963a /XMonad/Util/XPaste.hs
parent1e891284095c7318d7fc77e0ec8cb68b57dae136 (diff)
downloadXMonadContrib-210c40758ec1c209bcc13fbe63ab81214e026da4.tar.gz
XMonadContrib-210c40758ec1c209bcc13fbe63ab81214e026da4.tar.xz
XMonadContrib-210c40758ec1c209bcc13fbe63ab81214e026da4.zip
Move XMonad.Util.XPaste to XMonad.Util.Paste
darcs-hash:20080921060947-25a6b-6feda2edc133f5968df19892c2490a3a2df785c8.gz
Diffstat (limited to 'XMonad/Util/XPaste.hs')
-rw-r--r--XMonad/Util/XPaste.hs74
1 files changed, 0 insertions, 74 deletions
diff --git a/XMonad/Util/XPaste.hs b/XMonad/Util/XPaste.hs
deleted file mode 100644
index a51a1e2..0000000
--- a/XMonad/Util/XPaste.hs
+++ /dev/null
@@ -1,74 +0,0 @@
-{- |
-Module : XMonad.Util.XPaste
-Author : Jérémy Bobbio
-Copyright : (C) 2008
-License : BSD3
-
-Maintainer : <gwern0@gmail.com>
-Stability : unstable
-Portability : unportable
-
-A module for sending key presses to windows. This modules provides generalized
-and specialized functions for this task.
--}
-
-module XMonad.Util.XPaste where
-
-import XMonad (io, theRoot, withDisplay, X ())
-import Graphics.X11
-import Graphics.X11.Xlib.Extras (none, setEventType, setKeyEvent)
-import Control.Monad.Reader (asks)
-import XMonad.Operations (withFocused)
-import Data.Char (isUpper)
-import Graphics.X11.Xlib.Misc (stringToKeysym)
-import XMonad.Util.XSelection (getSelection)
-
-
-{- $usage
-
-Import this module into your xmonad.hs as usual:
-
-> import XMonad.Util.XPaste
-
-And use the functions. They all return "X ()", and so are appropriate for use as keybindings.
-Example:
-
-> , ((m, xK_d), pasteString "foo bar") ]
-
-Don't expect too much of the functions; they probably don't work on complex
-texts.
--}
-
--- | Paste the current X mouse selection. Note that this uses 'getSelection' from "XMonad.Util.XSelection" and so is heir to its flaws.
-pasteSelection :: X ()
-pasteSelection = getSelection >>= pasteString
-
--- | Send a string to the window with current focus. This function correctly handles capitalization.
-pasteString :: String -> X ()
-pasteString = mapM_ (\x -> if isUpper x then pasteChar shiftMask x else pasteChar 0 x)
-
-{- | Send a character to the current window. This is more low-level.
- Remember that you must handle the case of capitalization appropriately. That is, from the window's perspective:
-
- > pasteChar mod2Mask 'F' ~> "f"
-
- You would want to do something like:
-
- > pasteChar shiftMask 'F'
--}
-pasteChar :: KeyMask -> Char -> X ()
-pasteChar m c = pasteKey m $ stringToKeysym [c]
-
-pasteKey :: KeyMask -> KeySym -> X ()
-pasteKey = (withFocused .) . pasteKeyWindow
-
-pasteKeyWindow :: KeyMask -> KeySym -> Window -> X ()
-pasteKeyWindow mods key w = withDisplay $ \d -> do
- rootw <- asks theRoot
- keycode <- io $ keysymToKeycode d key
- io $ allocaXEvent $ \ev -> do
- setEventType ev keyPress
- setKeyEvent ev w rootw none mods keycode True
- sendEvent d w True keyPressMask ev
- setEventType ev keyRelease
- sendEvent d w True keyReleaseMask ev \ No newline at end of file