gpt4 book ai didi

linux - XMonad 不会使用 mod4Mask 产生任何东西

转载 作者:IT王子 更新时间:2023-10-29 00:36:16 26 4
gpt4 key购买 nike

我在 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

您会注意到在 additionalKeys 部分,我有 2 个绑定(bind)。两者都使用 mod4Mask,这也是我的默认 mod key 。对于 gvim,第二个绑定(bind)工作完美。问题是第一个绑定(bind),对于 dmenu,根本什么都不做。奇怪的是,如果我将 mod4Mask(对于 dmenu)更改为 mod1Mask 那么它就可以工作了。此外,如果我从终端运行 dmenu,它也能正常工作。

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

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

最佳答案

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

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

  2. 尝试将 mod4Mask p 映射到其他东西,看看是否可行。

  3. 使用 xev,按 mod4Mask + p,并验证它确实生成了您期望的事件。与mod4Mask + v对比,除了p变成v外,有什么不同。

  4. 确保您没有激活 NumLock 或 Fn 或类似的东西! (我认为 NumLock 会将你的 p 更改为数字。)

您使用的是哪种键盘?我们?英国?还有别的吗?

关于linux - XMonad 不会使用 mod4Mask 产生任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12764021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com