何が原因かハッキリしていないが、Linux をアップデート (パッケージの更新という意味) したときに
日本語が入力できなくなることがあった。
起きたこととしては、
環境は、
方々ググって対処法を見つけたのでメモ。
dconf Editor を開き、以下の設定を確認する。
/org/gnome/settings-daemon/plugins/xsettings/overrides
を参照する{'Gtk/IMModule': <'fcitx'>}
が入っているかどうかコマンドラインから確認する場合は以下のように入力する。
$ gsettings get org.gnome.settings-daemon.plugins.xsettings overrides
# (期待される出力) {'Gtk/IMModule': <'fcitx'>}
入ってなかったら、上記の値をコピペして設定する。
コマンドラインから設定する場合は以下のように入力する。
$ gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/IMModule':<'fcitx'>}"
当方の環境ではこれで日本語入力ができる状態になった。
Linux と銘打っておりますが、Manjro で試しています。
本記事は Linux で 無線LAN のドングルを使えるようにした備忘録です。
訳あって二種類のドングルを使いました。いずれも I-O DATA 製。
とりあえずぶっ挿してみたところ、無線LAN デバイスとしては認識されなかった。
つまりデフォルトの Manjro には WN-AC433UM のドライバが入っていなかったということ。
ドライバを入れていく。
rtl8192eu というドライバは yaourt rtl8192eu
で一応インストールされるのであるが、
それだけだと WN-AC433UM は認識されなかった。
WN-AC433UM は、idVendor が 04BB、idProduct が 0959 であるが、yaourt rtl8192eu
でインストールされるドライバではこれを認識するようになっていない。
(注: 2016.11.09 時点)
なので、上記 idVendor、idProduct 値を認識するようにソースコードを書き換えた上で、
ビルド・インストールする必要がある。ソースコードは以下から入手できる。
Mange/rtl8192eu-linux-driver - GitHub
なお、リビジョンは f016814
を使った。
os_dep/linux/usb_intf.c に、以下のように追記する。
(注: 妥当か不明だがとりあえず以下の書き換えでうまくいった)
diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c
index 5a62f24..7138a26 100644
--- a/os_dep/linux/usb_intf.c
+++ b/os_dep/linux/usb_intf.c
@@ -220,6 +220,8 @@ static struct usb_device_id rtw_usb_id_tbl[] ={
{USB_DEVICE(0x2357, 0x0109),.driver_info = RTL8192E}, /* TP-Link - Cameo */
/*=== PLANEX ===========*/
{USB_DEVICE(0x2019, 0xab33),.driver_info = RTL8192E}, /* PLANEX - GW-300S Katana */
+ /*=== I-O DATA ===========*/
+ {USB_DEVICE(0x04bb, 0x0959),.driver_info = RTL8192E}, /* I-O DATA */
#endif
#ifdef CONFIG_RTL8723B
ビルドし、インストールする。
$ cd rtl8192eu-linux-driver
$ make
$ sudo make install
再起動すると、無線LAN ドングルを NIC として認識するようになった。
上記 WN-AC433UM を認識させるにあたって散々ドライバをインストールしたせいなのであろうが、
こちらは挿しただけで認識されてしまった。
もしかしたらドライバをインストールする必要があるかもしれないのでメモしておくと、
WN-G150UMK は rtl8192cu というドライバで動いている模様。lshw
コマンドで確認した。
WN-AC433UM は 5GHz 帯「のみ」に対応しており、
つまり 2.4 GHz 帯を用いる無線機器とは接続ができない。スキャンしても発見すらしてくれない。
2.4 GHz っていうのはたとえば Android 5.0 以前の Android 端末のテザリングであったり、
ちょっと古めのルーターだったりが該当する。
完全に自分の見落としであるのだが、我が家の装備はことごとく 2.4 GHz 帯を扱うモノばかりだったので、
つまりせっかく頑張って WN-AC433UM を Linux に認識させたのであるが、日の目を見なかったのである…。
悲しい。そんなわけで WN-G150UMK を書い直したが、こちらは快調に動いてます。ナイス。
ブラウザはFirefoxを好んで使っている。
VimperatorとかPentadactylがあるおかげである。
いままで放置していた問題があって、それは二本指スワイプの挙動設定。
二本指で左右にスワイプしたときに、ヒストリーバック・ヒストリーフォワード、
いわゆる「戻る」「進む」をやってほしいんだけど、これの設定がいまいちわからず、放置していた。
ようやく設定方法がわかったので記しておく。そっこー忘れそうであるので。
ちなみに、「on Arch Linux」と題しているが、おそらくArchに限らないLinux全般の話ではないかと想像。
UbuntuとArch Linux、どちらのFirefoxでもデフォルト設定では横方向二本指スワイプが仕事をしてくれなかったので。
では、以下設定手順。
そもそもタッチパッドのドライバーレベルで横方向スクロールが無効になっている可能性がある。というかなってた。
なので、確認方法と設定変更方法。
以下のコマンドで現在の設定を確認できる。
$ synclient
ずらずらっと出てくる内容のうち、HorizTwoFingerScroll
が確認対象の項目。
値が「0」だったら無効になっている。有効にしない限り、いくら頑張って横スワイプしても効かない。
上の確認で有効だったらここは飛ばしてOK。無効だった場合、有効にするのは以下のコマンド。
$ synclient HorizTwoFingerScroll=1
synclientのほうはこれでOK。
さらにFirefoxの設定を変えてやる必要がある。
設定内容はTouchpad Synaptics - Arch Linux Wiki、Firefox 17.0 and laterの項を参考にした。
about:configを開く。設定内容は以下。
mousewheel.default.action.override_x = 2
とした。
あんまりよく調べていないが、「2」が戻るアクションに対応している数字らしい。
デフォルトでは、左スワイプが「進む」、右スワイプが「戻る」になっている。
逆な気がする。設定してこれを逆転させる。
mousewheel.default.delta_multiplier_x = -100
とした。
デフォルトではものすごく感度がよい。
良すぎてしまって縦スワイプがちょっと横にぶれただけで戻ったり進んだりする。
やりにくいので感度を落とす。
mousewheel.default.delta_multiplier_x = -10
とした。
とりあえず望む形(二本指で左スワイプで戻る、右スワイプで進む)に設定できた。結構ハードルあった。。
ちなみにこれ、Mac OS向けFirefoxならデフォルトの挙動な模様。何の差なのか。。。
IMはずっとibusを使ってきたのだが、なかなか設定に融通が効かないというか、なんというか。
具体的な要望としては、
という二点なのだが、後者の「Alt + Space」というキーバインドを設定する方法がわからず。。。
きっとやり方があるというか、いままでごまかしごまかしやってきたのだが、
ついに気持ち悪さが先に立って、「やめてやるわ!」となったところ。
で、IMとしてUIMを使ってみた。uim-mozc。
そしたらいともたやすく Alt + Space でのトグルが設定できちゃったもんだから拍子抜けというか。
はじめからこれ使ってれば良かったね!しばらくこれでいきます。uim-mozc。
備忘録的に、設定方法のメモ。
Arch Linux向けです。
ブログに書いた内容というのはいずれ時代遅れになるので、、、
やはり、Arch Wikiのuim-mozcの設定方法を参照するのが確実。
うちもこれでいけた。
.xinitrcに以下を追記。uimを使う設定ですな。
# uim
export GTK_IM_MODULE='uim'
export QT_IM_MODULE='uim'
uim-xim &
export XMODIFIERS='@im=uim'
uim-pref-gtk
で設定画面を出し、色々設定する。
「Global settings」の設定。
– Specify Default IMにチェックを入れる。
– Default input method を Mozc にする。
「Mozc」の設定。
– Default Input modeはDirect Inputに。
– ついでにVIM協調モードも有効にしておく。
「Mozc key bindings」の設定。
– [Mozc] on/off、両方に"<Alt>space"を設定。
Alt + Space でDirect Inputと日本語入力がトグルできるようになった。
チャンスがあれば、他のIMも試してみよっかな。
Vaio Pro 13にArch Linuxを入れて遊んでいる近頃である。
概ね快適なLinuxライフを過ごせているのだが、一個だけ非常に不満な点がある。
それは「タッチパッドの手のひら検知」。パームディテクト、Palm Detection、等と呼ばれる機能。
もはや手のひら検知について触れる必要もなさそうだが、一応。
Vaio Pro 13のタッチパッドはなかなか大きい。
これは最近のノートPC、MBPとか他のUltraBookにも採用されていて流行と言ったら流行。
これ自体は割と私は好みで、二本指、三本指でのスワイプなんかもやりやすくてなかなかいい。
ただ大きいタッチパッドには弊害もあって、キーボードを打ってるときに親指の付け根のあたりで触れちゃうってこと。
触れちゃうとどうなるかっていうと、クリックした扱いになってしまって、つまりカーソルが飛ぶ。
編集中に予期せぬ場所にカーソルが飛んでしまって、あれ、これどうなった、みたいなことになる。
それを解決してくれるのが、手のひら検知の仕組み。
つまり意図したタッチでないと思われるものは無視してくれるというやつで、考えた人凄いと思います。
件の手のひら検知を有効にする仕組みがある(デフォルトではオフ)。
synclient、PalmDetect、あたりでぐぐると結構出てくる。具体的には、synclient PalamDetect=1
とかってやって手のひら検知を有効にする。する、のだが。
なんか全然効いてない気がするんですけど・・・。ということで調べてみた。
ほんとに効いてるのかどうかを。
効いてなかったです。ちくしょうめ。やっぱりか。
ドライバのソースコードに簡単にログを仕込んで確認してみたところ、やっぱり効いてなかった。
Arch Linuxでタッチパッドのドライバーは、Synapticsが使われている(というか大体どこでもSynapticsか)。
ソースコードはこれ。Githubに公開されている。xf86-input-synaptics
なんで効かないかと言うと、の前に、ソースコードからどうやって手のひら検知をしているかを調べてみたのでそれをメモ。
以下の3要素を考慮して手のひら検知としている模様。
PalmMinZ は、どれくらい深く(強く?)タッチパッドが押されたら手のひらと判断するか、のしきい値。
PalmMinWidth は、タッチの広さを見ていて、太すぎる指は手のひらとみなしましょう、という判断のためのしきい値。
上記のしきい値のうち、どうやらPalmMinWidthのほうがおかしいっぽくて、
どんな触り方をしても常に「0」で判定されてしまっている模様。
ちなみに、SynapticsはPalmMinWidthが0のときは手のひらとして判断しないように実装されている。
なので、PalmDetect、PalmMinZ、PalmMinWidth、どれをどの値にしても手のひら検知は効かないということである。ちくしょうめ。
調査をしているが今のところわからない。。一般ピープルに手が及ぶ範囲なのかどうか。
PalmMinWidthはもう一切判断に含めないようにソースコードを書き換えてみたが、、、
それってつまりタッチ深度だけで手のひらを検知するということであって、それはまあ微妙な感じ。
**残念ながら、手のひら検知がいまいちな件は解決できていない。**なんとかする方法の調査はTo Be Continuedである。
デュアルブートしているWindowsの側ではできているっぽいので、Arch Linux側でも出来ないことないと信じて。
Windows8.1に対してWindows Updateしたところ、何だかわからないがデュアルブートしなくなって焦ったため、
直し方というか、そもそもどうやってデュアルブートにしているかをメモしておくための記事。
以下のようなPCと、その中身の構成にしている。
– PC本体:Vaio Pro 13
– OS:Arch LinuxとWindows8.1のデュアルブート
USB Installation Media(日本語) - Arch LinuxのWiki なんかが参考になる。
「管理」を使ってやる。ブート パーティンションを作成する - Microsoftのページ等が参考になる。
とにかく何か領域が空いていればいい。うちの構成では180GB程度確保した。
少なくとも30GBくらいいるかな?
あとは↑で作ったパーティションにArch Linuxをインストールしていく。詳しくはやはりArch LinuxのWiki参照。
– パーティションのフォーマット。割り当て可能領域はすべて割り当て。EFIパーティションにする必要はない。普通ので。
– /mnt にフォーマットしたパーティションをマウント。mount /dev/sda5 /mnt
← うちの環境の場合。
– chrootする。arch-chroot /mnt
で。
– Arch Linuxのインストール。 pacman -S base base-devel
とかやる。
– genfstab とかそういったことをこまごま行う。
– ブートローダのインストール。ブートローダにはgummibootを採用した。
mount /dev/sda2 /boot/EFI
cd /boot/EFI
gummiboot install
ここまでで勝手にデュアルブートしてくれたら嬉しかったが、そうはいかなかった(本来はこれだけでOKらしい)。
Vaioのせいなのか、Windowsのせいなのか。。
上記までで何が起きるかというと、、、
どうやら、せっかくgummibootで設定したブートの設定がPC起動時になかったことにされてしまう模様。
つまりWindowsが問答無用で起動される状態に戻ってしまう。VaioのせいなのかWindowsのせいなのか。。。
この点をちゃんと解決するのは諦めました。
諦めて、Windowsの起動に使われるファイルをgummibootのものと置き換えることでデュアルブートを実現。。
一応、やれればいいや、ということで。
– まず、EFIのパーティションをマウントする。
mount /dev/sda2 /mnt/boot/EFI
– Windows起動用のファイルとgummiboot起動用のファイルを置き換える。
— Windows起動用のファイル … /boot/EFI/Microsoft/boot/bootmgrfw.efi
— gummiboot起動用のファイル … /boot/EFI/gummiboot/gummibootx64.efi
上記のWindows起動用のファイルを、gummiboot起動用のファイルで上書きしてやると、、、
次回のPC起動時には、OS選択の画面が表示されるはず。上書きする前にバックアップしてあげてね。。。
だのでWindowsアップデートでデュアルブートができなくなったりするんだろう。
デュアルブートできなくなったら、いちいちgummibootx64.efiをWindows起動用のファイルに上書きしてやる必要がある。