SSブログ

GNOME on FreeBSDでのKeymap設定(2/2) [FreeBSD]

前回の続き.
US配列のキーボードを使っているにも関わらず,GNOME起動直後はどうしても日本語配列になってしまうという問題に対し,Xorg起動時まではUS配列HHKと認識されているものの,やっぱりまだ日本語配列になってしまう,というところまでが前回のあらすじ.

GNOMEのLowレベルの設定はdconfというものが使われてるということで,その設定を見てみる.dconfの設定にはdconf-editorを使うらしいが,FreeBSD 10.1ではdefaultではinstallされていなかったのでpkgでinstall.
# pkg install dconf-editor

dconf-editorで,desktop > ibus > general にある use-system-keyboard-layoutに✓をつけたところ,GNOME起動直後からUS配列にすることができました.
タグ:Xorg Gnome FreeBSD
にほんブログ村 自転車ブログ ブルベへ
にほんブログ村

GNOME on FreeBSDでのKeymap設定(1/2) [FreeBSD]

GNOME on FreeBSDで,起動直後のキーマップが日本語になってしまい困っている.
  • 使用キーボードはHappy Hacking Lite2 US配列
  • consoleでは期待通りにUS配列になっている.
  • GNOMEメニューのシステム→設定→ハードウェア→キーボードからUS配列を設定すると,そのセッションではUS配列として使えるが,再度GNOMEを立ち上げると日本語配列に戻ってしまう

GNOME起動直後にsetxkbmapを見てみると↓こんな感じ.layout: jp,symbols: pc+jpという記載が気になる.
% setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/base...
Trying to load rules file /usr/local/share/X11/xkb/rules/base...
Success.
Applied rules from base:
rules:      base
model:      hhk
layout:     jp
Trying to build keymap using the following components:
keycodes:   xfree86+aliases(qwerty)
types:      complete
compat:     complete+japan
symbols:    pc+jp
geometry:   hhk(basic)
xkb_keymap {
        xkb_keycodes  { include "xfree86+aliases(qwerty)"       };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete+japan"        };
        xkb_symbols   { include "pc+jp" };
        xkb_geometry  { include "hhk(basic)"    };
};

/etc/X11/xorg.confに以下の設定を加えても変化なし
Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
        Option      "XkbModel" "hhk"    *
        Option      "XkbLayout" "us"     *
EndSection

調べているうちに,FreeBSD 10.1-RELEASE update troubleという記事を発見.書かれていることを参考に,/etc/X11/xorg.conf.d/input.confに以下の内容を設定してみたところ,
Section "InputClass"
        Identifier      "Mouse Defaults"
        Driver          "vmmouse"
        MatchIsPointer  "on"
EndSection

Section "InputClass"
        Identifier      "Keyboard Defaults"
        Driver          "keyboard"
        MatchIsKeyboard "on"
        Option          "XkbRules" "xorg"
        Option          "XkbModel" "hhk"
        Option          "XkbLayout" "us"
EndSection

Xorg.0.logまでは期待通りに認識されるようになった.
[  2942.824] (**) kbdmux: Applying InputClass "Keyboard Defaults"
[  2942.824] (II) LoadModule: "kbd"
[  2942.824] (II) Loading /usr/local/lib/xorg/modules/input/kbd_drv.so
[  2942.825] (II) Module kbd: vendor="X.Org Foundation"
[  2942.825]    compiled for 1.17.4, module version = 1.8.1
[  2942.825]    Module class: X.Org XInput Driver
[  2942.825]    ABI class: X.Org XInput driver, version 21.0
[  2942.825] (II) Using input driver 'kbd' for 'kbdmux'
[  2942.825] (**) kbdmux: always reports core events
[  2942.825] (**) kbdmux: always reports core events
[  2942.825] (**) Option "Protocol" "standard"
[  2942.825] (**) Option "XkbRules" "xorg"
[  2942.825] (**) Option "XkbModel" "hhk"
[  2942.825] (**) Option "XkbLayout" "us"
[  2942.825] (**) Option "config_info" "devd:kbdmux"
[  2942.825] (II) XINPUT: Adding extended input device "kbdmux" (type: KEYBOARD, id 6)
[  2942.848] (II) config/devd: kbdmux is enabled, ignoring device atkbd0

でも,setxkbmap -print -verbose 10 の結果は変化なし...

次回に続く.

タグ:FreeBSD Gnome Xorg
にほんブログ村 自転車ブログ ブルベへ
にほんブログ村

Haskell QuickCheck [Haskell]

リストxの要素数がn以上の場合にはxの先頭n個の要素の平均を返し、nに満たない場合にはNothingを返す関数mavgを書いた。
take'::Int -> [a] -> Maybe [a]
take' n [] =
  if n == 0
  then Just []
  else Nothing
take' n (x:xs) =
  if n == 0
  then Just []
  else
    let rest = take' (n-1) xs
    in  rest >>= (\r -> Just (x:r))
mavg::Int -> [Double] -> Maybe Double
mavg 0 _ = Nothing
mavg n x =
  let xh = take' n x
      sumMay = foldM ( fmap . (+) ) 0
  in case xh of
    Nothing -> Nothing
    Just a -> (sumMay $ sequence $ xh) >>= (\s -> Just(s / fromIntegral(n)))

で、これをQuickCheckでテストしてみたところはまり中。
prop_mavg n x =
  let a = mavg n x
      b = ( sum $ take n x ) / fromIntegral(n)
  in
    if n > 0 && n <= length(x)
    then       
      let a' = fromJust a
      in  a' == b
    else a == Nothing
 main = do
   quickCheck prop_mavg
   let n = 3
       x = [0.0, 0.0, 5.0e-324] :: [Double]
       a = mavg n x
       b = (sum $ take n x) / fromIntegral(n) :: Double
   putStrLn $ show(a == Just b)
   putStrLn $ show(n > 0)
   putStrLn $ show(n <= length(x))
   putStrLn $ show(prop_mavg n x)


*** Failed! Falsifiable (after 29 tests and 1086 shrinks):
3
[0.0,0.0,5.0e-324]
True
True
True
Flase


n=3, x=[0.0,0.0,5.0e-324]でfailしているとのことだけど、prop_mavgの中で計算するa, bを別途計算し比較するとTrueになる。でもprop_mavg 3 [0.0, 0.0. 5.0-e324]を実行するとやっぱりFalseになる。

たぶん、浮動小数の演算誤差だと思うんだけど。。。。
にほんブログ村 自転車ブログ ブルベへ
にほんブログ村

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。