XMonad不会使用mod4Mask生成任何东西

gen*_*ass 5 linux haskell xmonad fedora xfce

我在Arch论坛上看到了一些类似的问题,但是我还没有找到解决方案.

所以我在Fedora 17 x64上运行XFCE4中的XMonad 0.1,我也安装了xmonad-contrib.这是我的xmonad.hs文件:

import System.Posix.Env (getEnv)
import Data.Maybe (maybe)
import Control.Monad
import XMonad.Hooks.SetWMName
import qualified XMonad.StackSet as W
import XMonad.Util.EZConfig

import XMonad
import XMonad.Config.Desktop
import XMonad.Config.Gnome
import XMonad.Config.Kde
import XMonad.Config.Xfce

main = do
     session <- getEnv "DESKTOP_SESSION"
     xmonad  $ xfceConfig     --(maybe desktopConfig desktop session)        
        {
        modMask = mod4Mask
        , terminal = "gnome-terminal"
        , logHook = takeTopFocus >> setWMName "LG3D"
        }
        `additionalKeys` [ ((mod4Mask, xK_p), spawn "dmenu_run")
                           ,((mod4Mask, xK_v), spawn "gvim")
            ]


-----------------------------------------
------------Custom Keys------------------
-----------------------------------------


-----------------------------------------
------------Other horrible stuff---------
-----------------------------------------

desktop "gnome" = gnomeConfig
desktop "kde" = kde4Config
desktop "xfce" = xfceConfig
desktop "xmonad-gnome" = gnomeConfig
desktop _ = desktopConfig

atom_WM_TAKE_FOCUS ::
  X Atom
atom_WM_TAKE_FOCUS =
  getAtom "WM_TAKE_FOCUS"

takeFocusX ::
  Window
  -> X ()
takeFocusX w =
  withWindowSet . const $ do
    dpy       <- asks display
    wmtakef   <- atom_WM_TAKE_FOCUS
    wmprot    <- atom_WM_PROTOCOLS
    protocols <- io $ getWMProtocols dpy w
    when (wmtakef `elem` protocols) $
      io . allocaXEvent $ \ev -> do
          setEventType ev clientMessage
          setClientMessageEvent ev w wmprot 32 wmtakef currentTime
          sendEvent dpy w False noEventMask ev

takeTopFocus ::
  X ()
takeTopFocus =
  withWindowSet $ maybe (setFocusX =<< asks theRoot) takeFocusX . W.peek
Run Code Online (Sandbox Code Playgroud)

你会注意到additionalKeys,我有2个绑定.两者都在使用mod4Mask,这也是我的默认模式键.gvim的第二个绑定工作完美.问题是dmenu的第一个绑定什么都不做.奇怪的是,如果我改变mod4Mask(对于dmenu)mod1Mask那么它是有效的.此外,如果我从终端运行它,dmenu工作正常.

编辑:mod4Mask和P似乎没有产生/做任何事情.

有任何想法吗?这个配置对我来说似乎很好,我不知道它为什么不起作用.

mhw*_*bat 2

我不知道出了什么问题,但我有一些调试建议。

  1. 我曾经遇到过这样的情况:我以为我正在运行当前的自定义 xmonad.hs,但实际上我正在运行以前的版本或默认版本。通过对 xmonad.hs 进行一些其他更改并验证其是否有效来排除此问题。

  2. 尝试将 mod4Mask p 映射到其他内容,看看是否有效。

  3. 使用 xev,按 mod4Mask + p,并验证它确实生成您期望的事件。与 mod4Mask + v 进行比较,看看除了 p 到 v 的变化之外,还有什么不同吗?

  4. 确保您没有启用 NumLock 或 Fn 或类似的功能!(我认为 NumLock 会将你的 p 更改为数字。)

您使用什么类型的键盘?我们?英国?还有别的事吗?