MacBook AirにインストールしたArch Linuxのハード関連の設定まとめ


##はじめに

ハード関連の設定をまとめます。ちなみに、MacBook AirとArchの相性は結構良いです。なぜかというと、MacBookユーザー有志の尽力により、調整や情報の共有が活発だからです。

MacBookはユーザー数が多いので、その辺りは、ユーザー数が多いThinkPadなどと同じ感じですね。

<a href="https://wiki.archlinux.org/index.php/MacBook_(%E6%97%A5%E6%9C%AC%E8%AA%9E)" target="_blank">MacBook (日本語) - ArchWiki</a>

##タッチパッド

<a href="https://wiki.archlinux.org/index.php/Touchpad_Synaptics_(%E6%97%A5%E6%9C%AC%E8%AA%9E)" target="_blank">Touchpad Synaptics (日本語) - ArchWiki</a>

タッチパッドの設定は、通常、`/etc/X11/xorg.conf.d/50-synaptics.conf`になります。`Ctrl+Alt+BackSpace`でXを再起動することにより設定が反映されます。

現在の設定は以下の様な感じになっています。1本指でタップすると、クリック。2本指タップは右クリック。3本指タップは`Alt+Up`でブラウザの戻るに対応しています。また、端からはじめて、ぐるぐる回すと、回す方向によりスクロールが実現します。

大体は、Arch Wikiを読めば分かります。しかし、特定のキーをマウスボタンに割り当てる方法は、特殊なやり方を使っているので、下記で解説します。

```bash:/etc/X11/xorg.conf.d/50-synaptics.conf
Section "InputClass"
  Identifier "touchpad catchall"
  Driver "synaptics"
  MatchIsTouchpad "on"
  MatchDevicePath "/dev/input/event*"
  Option "TapButton1" "1"
  Option "TapButton2" "3"
  Option "TapButton3" "8"
  Option "VertTwoFingerScroll" "on"
  Option "HorizTwoFingerScroll" "on"
  Option "CoastingSpeed" "2"
  Option "PalmDetect" "1"
  Option "PalmMinWidth" "10"
  Option "PalmMinZ" "200"
  Option "CircularScrolling" "on"
  Option "CircScrollTrigger" "0"
  #Option "LockedDrags" "on"
  #Option "ClickFinger3" "2"
  #Option "EmulateTwoFingerMinZ" "100"
  #Option "EmulateTwoFingerMinW" "50"
  #Option "Thumbsize" "50"
  #Option "ScrollDistance" "100"
  #Option "HorizEdgeScroll" "on"
  #Option "VertEdgeScroll" "on"
  #Option "TapAndDragGesture" "true"
  #Option "RBCornerButton" "8"
  #Option "RTCornerButton" "8"
  #Option "LBCornerButton" "9"
  #Option "LTCornerButton" "9"
  #Option "ClickFinger1" "1"
  #Option "ClickFinger2" "1"
  #Option "Scroll Axes" "1"
  #Option "Scroll X Out Scale" "1.25"
  #Option "Scroll Y Out Scale" "1.25"
  #Option "ButtonMapping" "1 2 3 8 9"
EndSection

Section "InputClass"
  Identifier "touchpad ignore duplicates"
  MatchIsTouchpad "on"
  MatchOS "Linux"
  MatchDevicePath "/dev/input/mouse*"
  Option "Ignore" "on"
EndSection

Section "InputClass"
  Identifier "Default clickpad buttons"
  MatchDriver "synaptics"
  Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"
EndSection

Section "InputClass"
  Identifier "Disable clickpad buttons on Apple touchpads"
  MatchProduct "Apple|bcm5974"
  MatchDriver "synaptics"
  Option "SoftButtonAreas" "0 0 0 0 0 0 0 0"
EndSection
```

何かわからないことがあれば、とりあえず以下のコマンドを叩きます。

```bash:
# タッチパッドの情報を調べる
$ xinput -list

# すべてのオプションを調べる
$ man synaptics

# 現在の設定をリスト化する
$ synclient -l

# オプションを一時的に設定する
$ synclient PalmDetect=1 (手のひら検出を有効にする)
$ synclient TapButton1=1 (ボタンのイベントを設定する)
$ synclient TouchpadOff=1 (タッチパッドを無効にする)
```

ここで、少しだけ解説します。具体的には、`Option "TapButton3" "8"`の部分ですね。前提として、ブラウザの設定を変更することで、対応できる場合があります。下記は、Firefoxの場合ですね。

> mousewheel.default.action.override_x = 2


しかし、他のブラウザはそうは行きませんので、無理やり対応させてみます。具体的には、マウスボタンにキーを割り当て、それをタッチパッドの特定の動作に設定します。

```bash:
$ pacman -S xvkbd xbindkeys

$ cat << EOF > ~/.xbindkeysrc

#"/usr/bin/xvkbd -text "\[設定したいキー]\[設定したいキー2]""
#  b:(設定したいマウスボタンの番号)

"/usr/bin/xvkbd -text "\[Alt_L]\[Up]""
  b:8

"/usr/bin/xvkbd -text "\[Alt_L]\[Down]""
  b:9

EOF
```

そういえば、`CornerButton`オプションがなぜか動作しないみたいなのですが、なぜでしょう。動作させる方法があれば、ここに`b:9`などを割り当てても良いと思います。

**だれか、Mac並にタッチパッドを快適にさせる調整や設定、お願いします。←切実**

##フォント

###システム全体にフォントを設定する

これで、`Chromium`のタブやタイトルなどが文字化けする問題を解消できます。

```bash:
$ sudo yaourt -S otf-ipaexfont

$ sudo cat << EOF > /etc/fonts/conf.avail/71-no-embedded-bitmaps.conf
<fontconfig>
  <match target="font">
    <edit mode="assign" name="embeddedbitmap">
      <bool>false</bool>
    </edit>
    <edit mode="assign" name="hintstyle">
       <const>hintnone</const>
    </edit>
  </match>
</fontconfig>
EOF

$ sudo ln -s /etc/fonts/conf.avail/71-no-embedded-bitmaps.conf /etc/fonts/conf.d/71-no-embedded-bitmaps.conf

$ fc-cache -vf
```

Arch Linuxで文字を綺麗に表示する検証をされている方のブログが非常に参考になりました。

[http://archlinux-blogger.blogspot.jp/2013/08/arch-linux.html](http://archlinux-blogger.blogspot.jp/2013/08/arch-linux.html)


###従来のフォント設定

ちなみに、従来のやり方では、以下のように`$HOME`に`.fonts.conf`を作ればよいみたいです。

```bash:
$ sudo yaourt -S ttf-migmix

$ fc-list

$ fc-list :lang=ja

$ cat << EOF > ~/.fonts.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>serif</family>
    <prefer>
       <family>DejaVu Sans</family>
       <family>MigMix 1P</family>
    </prefer>
  </alias>
  <alias>
    <family>sans-serif</family>
    <prefer>
      <family>DejaVu Serif</family>
       <family>MigMix 1P</family>
    </prefer>
  </alias>
  <alias>
    <family>monospace</family>
    <prefer>
      <family>Nimbus Mono L</family>
    </prefer>
  </alias>
</fontconfig>
EOF
```

[http://spxi.ie-t.net/archlinux/lang.html](http://spxi.ie-t.net/archlinux/lang.html)


##キーボード

###キーモードの用意とキーバインドの切り替え

私の場合は、日本語入力時の便利を図って、キーモードを用意し、`xmodmap`を`awesome`などのウィンドウマネージャーのショートカットに割り当てて切り替えをして使っています。

```bash:
$ xmodmap -pke > ~/.xmodmap2

$ vim ~/.config/awesome/rc.lua
```

```lua:~/.config/awesome/rc.lua
awful.key({ modkey }, "[", function () awful.util.spawn_with_shell("xmodmap ~/.xmodmap1") end),
    awful.key({ modkey }, "]", function () awful.util.spawn_with_shell("xmodmap ~/.xmodmap2") end)
```

###キーボードを光らせる

MacBookはなんとキーボードが光ります。光らせるためのスクリプトが用意されていますので、それを使えば簡単ですね。

```bash:
$ git clone https://github.com/hobarrera/kbdlight/

$ cd !$:t

$ sudo make

$ sudo make install

$ sudo ./kbdlight max
```

https://github.com/hobarrera/kbdlight/