2017-12-15 21 views
0

私は最近、i3wmからxmonadに切り替えることにしました。私はthis configurationを見つけてそれを試してみることにしました。設定は問題なくすぐに使えます。xmonadのアクセント付きキーへのワークスペースの切り替えを再バインドするにはどうすればよいですか?

英語のキーボードレイアウトを使用しないため、デスクトップワークスペースを切り替えることができないという問題があります。私はFキー行の下の数字の代わりに文字をアクセントにしました。

だから私は、これらのキーのXK_名を検索し、このような設定ファイルにそれらを置く:

[((m .|. modMask, k), windows $ f i) 
    | (i, k) <- zip (XMonad.workspaces conf) [xK_plus, xK_ecaron, xK_scaron, xK_ccaron, xK_rcaron, xK_zcaron, xK_yacute, xK_aacute, xK_iacute] 
    , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]] 

しかし、これは動作しませんでした。だから私は、その意志、少なくとも作業(そのコードでは、上記のコメントアウト)かどうかを確認するために(this answerに応じて)少なくとも1つのキーをバインドしようとしました:

, ((0 .|. modMask, xK_plus), windows $ W.greedyView "1") 
    , ((shiftMask .|. modMask, xK_plus), windows $ W.shift "1") 

しかし、それはしませんでした。両方の場合において、エラーメッセージは以下のとおりであった:

xmonad.hs:292:9:\ A、230 \ 200 \â入力にエラーを解析200 231 \このラインを指す

, ((0 .|. modMask, xK_plus), windows $ W.greedyView "1")、特に私が間違っていない場合は|になります。

私は

[((m .|. modMask, k), windows $ f i) 
    | (i, k) <- zip (XMonad.workspaces conf) [xK_1, xK_2, xK_3, xK_4, xK_5, xK_6, xK_7, xK_8, xK_9] 
    , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]] 

をしようとすると私は同じエラーがスローされ

, ((0 .|. modMask, xK_1), windows $ W.greedyView "1") 
    , ((shiftMask .|. modMask, xK_1), windows $ W.shift "1") 

をしようとすると、それは、しかし、何の問題も無いです。

私はチェコのQWERTYレイアウトとxmonad 0.12を使用しています。

私が間違っていることを教えてください。ありがとう。

編集:

Hereは、最小限の設定ファイルです。

私は別のマシンで私の運を試していた時にも少し進歩しました。スコープで

ない:

[((m .|. modMask, k), windows $ f i) 
    | (i, k) <- zip (XMonad.workspaces conf) [xK_plus, xK_ecaron, xK_scaron, xK_ccaron, xK_rcaron, xK_zcaron, xK_yacute, xK_aacute, xK_iacute] 
    , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]] 

で、私は(すべてのキャロンキーのために)言った別のエラーメッセージが表示されましたâ\ 200 \230xK_ecaronâ\ 200おそらく、あなたがâ意味

231 \ \ (XMonadからインポート)

提案された解決策はまったく異なるキーであるため、すべてのxK_〜caronを削除するだけで、それは驚くほどコンパイルされますed。今私はワークスペースを切り替えることができますが、行の7番目のýキーで2番目のワークスペースに切り替えるのはちょっと変です。

今私がxK_ecaronとして受け入れキャロンキーが完全に有効なキーであるされていない理由を理解していない:あなたの最小限の設定で

~ $ cat /usr/include/X11/keysymdef.h |grep ecaron 
#define XK_ecaron      0x01ec /* U+011B LATIN SMALL LETTER E WITH CARON */ 
+0

ファイルに '。| .'を正確に入れていますか(つまり、' '\ 46 \ 124 \ 46" ')、ASCII以外の奇妙な見た目ではないでしょうか?また、すべてのファイルがUTF-8でエンコードされていることを確認してください。 ([Always](http://utf8everywhere.org/)!) – leftaroundabout

+0

はい、その行のファイルには、バイトシーケンス\ 46 \ 124 \ 46があります。それがどこにあるべきか、どこにいても。すでにUTF-8でエンコードされています。 – Lyarenei

+1

それで、私は本当にこの奇妙な「â\ 200 \ 230、â\ 200 \ 231」が忍び寄ることができるのだろうか?どうやら平文に変えられたターミナルエスケープコードでしょうか?どの端末を使用していますか? - 一般的に、完全な設定ファイル、つまり[MCVE]を投稿することも便利です。 – leftaroundabout

答えて

2

import XMonad 
import qualified XMonad.StackSet as W 

--bind xK_plus to workspace 1 
    , ((0 .|. modMask, xK_plus), windows $ W.greedyView "1") 
    , ((shiftMask .|. modMask, xK_plus), windows $ W.shift "1") 

main = xmonad def 
    { terminal = "gnome-terminal" 
    } 

...あなたは裸のキーバインドを持っていますあなたのファイルの途中で。これらはキーバインドリストの一部として表示されなければなりません。コンマはリストエレメントセパレータです。だから、:(。または類似の)

main = xmonad def 
    { terminal = "gnome-terminal" 
    , keys  = \[email protected](XConfig { modMask = modMask }) -> keys def conf `mappend` M.fromList 
     [ ((0 .|. modMask, xK_plus), windows $ W.greedyView "1") 
     , ((shiftMask .|. modMask, xK_plus), windows $ W.shift "1") 
     ] 
    } 

あなたの他の質問については

xK_ecaronGraphics.X11.ExtraTypes.XorgDefaultから入手可能です。使用可能なすべてのkeysymのリスト(およびそれらを取得するためにインポートするモジュール)hereを表示するか、特定の1つを検索することができますon Hoogle

+0

「Graphics.X11.ExtraTypes.XorgDefault」が助けになりました。「よりコンパクト」なスタイルのワークスペースのキーバインドが完全に機能するようになりました。 しかし、上記の例はコンパイルできません。最小限の設定に 'Import qualified Data.Map as M'を追加すると3つのエラーが発生します: ' Mash(ButtonMask、KeySym)(X) - > M.Map(ButtonMask、KeySym)(X()) '' と 'XConfig l0 - > KeyMask 'と' Foreign.C.Types.CUInt ' 'を繰り返して入力できませんでした。 – Lyarenei

+1

@Lyareneiおっと、はい、 'modMask'をバインドするのを忘れてしまったので、' conf'の値の代わりにレコードセレクタを取得しています。 '\ conf - > keys conf'を' \ conf @(XConfig {modMask = modMask}) - > keys def conf'に変更して修正することができます。多分。 (申し訳ありませんが、確かにテストするためにこのマシンにxmonadがインストールされていません。) –

+0

はい、今は動作します。どうもありがとうございました! – Lyarenei

関連する問題