5

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 つのバインディングがあります。どちらも を使用してmod4Maskおり、これは私のデフォルトの mod キーでもあります。gvim の 2 番目のバインドは完全に機能します。問題は、dmenu の最初のバインドが単に何もしないことです。奇妙なのは、mod4Mask(dmenuの場合)に変更mod1Maskすると機能することです。また、ターミナルから実行すると、dmenu は正常に動作します。

編集: mod4Mask と P は何も生成/実行しないようです。

何か案は?この構成は私には問題ないように思えますが、なぜ機能しないのかわかりません。

4

2 に答える 2

2

何が問題なのかわかりませんが、デバッグするための提案がいくつかあります。

  1. 現在のカスタム xmonad.hs を実行していると思っていた状況がありましたが、実際には以前のバージョンまたはデフォルトを実行していました。xmonad.hs に他の変更を加え、それが機能することを確認して、これを除外します。

  2. mod4Mask p を別のものにマッピングしてみて、それが機能するかどうかを確認してください。

  3. xev を使用して、mod4Mask + p を押して、期待するイベントが実際に生成されることを確認します。mod4Mask + v と比較して、p から v への変更以外に違いがあるかどうかを確認します。

  4. NumLock や Fn などを有効にしていないことを確認してください。(NumLock は p を数値に変更すると思います。)

どのようなキーボードを使用していますか? 私たち?イギリス?他の何か?

于 2012-10-17T14:52:32.177 に答える
1

XFCE は Mod4-p をこのファイル内の何かにバインドします

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

そのファイルで「Super」を検索すると、< Super>-p を含む 2 行が見つかります。1つは「空」のようで、もう1つは外部ディスプレイ出力を設定するために「xfce4-display-settings --minimal」を実行します。

そのファイルの両方のオカレンスを p の代わりに o を使用するように変更し、XFCE からログアウトして再度ログインしました。これで、Mod4-p は XMonad で動作します!

于 2013-12-01T15:00:55.220 に答える