diff options
author | Spencer Janssen <spencerjanssen@gmail.com> | 2008-09-21 08:09:47 +0200 |
---|---|---|
committer | Spencer Janssen <spencerjanssen@gmail.com> | 2008-09-21 08:09:47 +0200 |
commit | 210c40758ec1c209bcc13fbe63ab81214e026da4 (patch) | |
tree | ff228c3b56521ed08c864d531ea969379080963a /XMonad/Util/XPaste.hs | |
parent | 1e891284095c7318d7fc77e0ec8cb68b57dae136 (diff) | |
download | XMonadContrib-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.hs | 74 |
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 |