
Hello I've submitted a bug some time ago. I didn't get any response, so I'm reposing it to ML. http://code.google.com/p/xmonad/issues/detail?id=295 Submap actions don't work when in russian layout. In english layout it does work without problem. Standard xmonad key bindings work in both layouts. I'm using version from darcs. 0.8 is affected to AFAIR. Layout are set up with XCB. $ setxkbmap -model pc104 -layout us,ru -variant basic,winkeys $ setxkbmap -option -option \ "grp_led:scroll,grp:shifts_toggle,compose:menu,ctrl:nocaps" Below is snippet from X.A.Submap. Quick research shown that keymasks m and m' has bit (1<<13) set when russian layout chosen. I have no idea how to interpret it. All valid keymasks are <= (1<<12) as declared in X11 headers.
-- | Like 'submap', but executes a default action if the key did not match. submapDefault :: X () -> M.Map (KeyMask, KeySym) (X ()) -> X () submapDefault def keys = do XConf { theRoot = root, display = d } <- ask
io $ grabKeyboard d root False grabModeAsync grabModeAsync currentTime
(m, s) <- io $ allocaXEvent $ \p -> fix $ \nextkey -> do maskEvent d keyPressMask p KeyEvent { ev_keycode = code, ev_state = m } <- getEvent p keysym <- keycodeToKeysym d code 0 if isModifierKey keysym then nextkey else return (m, keysym)
m' <- cleanMask m
maybe def id (M.lookup (m', s) keys)
io $ ungrabKeyboard d currentTime
-- Khudyakov Alexey