2016-12-14 11:12:31
GNOMEアプリ上で日本語入力できなくなったときの対処メモ

何が原因かハッキリしていないが、Linux をアップデート (パッケージの更新という意味) したときに
日本語が入力できなくなることがあった。

起きたこととしては、

  • firefox 上では日本語入力可能 (direct input と日本語のトグル可能) 。
  • Slack、chromium の上では日本語入力できない (direct input のみ可能) 。

環境は、

  • Manjaro Linux (2016年12月あたり)
  • fcitx を使用
  • 日本語入力は mozc

方々ググって対処法を見つけたのでメモ。

dconf Editor で設定を確認し、必要に応じて修正する

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'>}"

当方の環境ではこれで日本語入力ができる状態になった。

参考サイト

2016-11-14 20:14:02
Linux で 無線LAN の USB ドングルを使う

Linux と銘打っておりますが、Manjro で試しています。
本記事は Linux で 無線LAN のドングルを使えるようにした備忘録です。

使ったドングル二種

訳あって二種類のドングルを使いました。いずれも I-O DATA 製。

  • WN-AC433UM
  • WN-G150UMK

WN-AC433UM 編

とりあえずぶっ挿してみたところ、無線LAN デバイスとしては認識されなかった。
つまりデフォルトの Manjro には WN-AC433UM のドライバが入っていなかったということ。
ドライバを入れていく。

WN-AC433UM は rtl8192eu というドライバで動いた

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-G150UMK 編

上記 WN-AC433UM を認識させるにあたって散々ドライバをインストールしたせいなのであろうが、
こちらは挿しただけで認識されてしまった。

WN-G150UMK は rtl8192cu というドライバで動いている模様

もしかしたらドライバをインストールする必要があるかもしれないのでメモしておくと、
WN-G150UMK は rtl8192cu というドライバで動いている模様。lshw コマンドで確認した。

ちなみに、WN-AC433UM は 5 GHz にしか対応していない

WN-AC433UM は 5GHz 帯「のみ」に対応しており、
つまり 2.4 GHz 帯を用いる無線機器とは接続ができない。スキャンしても発見すらしてくれない。
2.4 GHz っていうのはたとえば Android 5.0 以前の Android 端末のテザリングであったり、
ちょっと古めのルーターだったりが該当する。

完全に自分の見落としであるのだが、我が家の装備はことごとく 2.4 GHz 帯を扱うモノばかりだったので、
つまりせっかく頑張って WN-AC433UM を Linux に認識させたのであるが、日の目を見なかったのである…。
悲しい。そんなわけで WN-G150UMK を書い直したが、こちらは快調に動いてます。ナイス。

参考リンク

2014-09-15 00:30:08
二本指スワイプに戻る/進むを割り当てる方法 for Firefox on Arch Linux

ブラウザはFirefoxを好んで使っている。
VimperatorとかPentadactylがあるおかげである。

いままで放置していた問題があって、それは二本指スワイプの挙動設定。

二本指で左右にスワイプしたときに、ヒストリーバック・ヒストリーフォワード、
いわゆる「戻る」「進む」をやってほしいんだけど、これの設定がいまいちわからず、放置していた。
ようやく設定方法がわかったので記しておく。そっこー忘れそうであるので。

ちなみに、「on Arch Linux」と題しているが、おそらくArchに限らないLinux全般の話ではないかと想像。
UbuntuとArch Linux、どちらのFirefoxでもデフォルト設定では横方向二本指スワイプが仕事をしてくれなかったので。

では、以下設定手順。

synclientの確認と設定

そもそもタッチパッドのドライバーレベルで横方向スクロールが無効になっている可能性がある。というかなってた。
なので、確認方法と設定変更方法。

synclientコマンドを打って水平方向二本指スクロールの設定を確認する

以下のコマンドで現在の設定を確認できる。

$ synclient

ずらずらっと出てくる内容のうち、HorizTwoFingerScroll が確認対象の項目。
値が「0」だったら無効になっている。有効にしない限り、いくら頑張って横スワイプしても効かない。

synclientコマンドで水平方向二本指スクロールを有効にする

上の確認で有効だったらここは飛ばしてOK。無効だった場合、有効にするのは以下のコマンド。

$ synclient HorizTwoFingerScroll=1

synclientのほうはこれでOK。

Firefoxの設定

さらに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ならデフォルトの挙動な模様。何の差なのか。。。

2014-05-28 07:49:23
日本語入力のための設定メモ for Arch Linux

IMはずっとibusを使ってきたのだが、なかなか設定に融通が効かないというか、なんというか。
具体的な要望としては、

  • mozcを使いたい
  • Alt + Space でIMEを切り替えたい(Direct Inputと日本語入力をトグルする)

という二点なのだが、後者の「Alt + Space」というキーバインドを設定する方法がわからず。。。
きっとやり方があるというか、いままでごまかしごまかしやってきたのだが、
ついに気持ち悪さが先に立って、「やめてやるわ!」となったところ。

で、IMとしてUIMを使ってみた。uim-mozc。
そしたらいともたやすく Alt + Space でのトグルが設定できちゃったもんだから拍子抜けというか。
はじめからこれ使ってれば良かったね!しばらくこれでいきます。uim-mozc。

備忘録的に、設定方法のメモ。
Arch Linux向けです。

基本的にはWiki参照

ブログに書いた内容というのはいずれ時代遅れになるので、、、
やはり、Arch Wikiのuim-mozcの設定方法を参照するのが確実。
うちもこれでいけた。

インストールしたパッケージ

  • uim
  • uim-mozc

設定箇所

  • .xinitrc の記載

.xinitrcに以下を追記。uimを使う設定ですな。

# uim
export GTK_IM_MODULE='uim'
export QT_IM_MODULE='uim'
uim-xim &
export XMODIFIERS='@im=uim'

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も試してみよっかな。

2014-05-15 12:25:25
Vaio Pro 13における手のひら検知 on Arch Linux

Vaio Pro 13にArch Linuxを入れて遊んでいる近頃である。
概ね快適なLinuxライフを過ごせているのだが、一個だけ非常に不満な点がある。
それは「タッチパッドの手のひら検知」。パームディテクト、Palm Detection、等と呼ばれる機能。

手のひら検知?

もはや手のひら検知について触れる必要もなさそうだが、一応。

Vaio Pro 13のタッチパッドはなかなか大きい。
これは最近のノートPC、MBPとか他のUltraBookにも採用されていて流行と言ったら流行。
これ自体は割と私は好みで、二本指、三本指でのスワイプなんかもやりやすくてなかなかいい。

ただ大きいタッチパッドには弊害もあって、キーボードを打ってるときに親指の付け根のあたりで触れちゃうってこと。
触れちゃうとどうなるかっていうと、クリックした扱いになってしまって、つまりカーソルが飛ぶ。
編集中に予期せぬ場所にカーソルが飛んでしまって、あれ、これどうなった、みたいなことになる。

それを解決してくれるのが、手のひら検知の仕組み。
つまり意図したタッチでないと思われるものは無視してくれるというやつで、考えた人凄いと思います。

Arch Linux on Vaio Pro 13の場合

件の手のひら検知を有効にする仕組みがある(デフォルトではオフ)。
synclient、PalmDetect、あたりでぐぐると結構出てくる。具体的には、
synclient PalamDetect=1 とかってやって手のひら検知を有効にする。する、のだが。

なんか全然効いてない気がするんですけど・・・。ということで調べてみた。
ほんとに効いてるのかどうかを。

結論からいうと効いてなかった

効いてなかったです。ちくしょうめ。やっぱりか。

ドライバのソースコードに簡単にログを仕込んで確認してみたところ、やっぱり効いてなかった。
Arch Linuxでタッチパッドのドライバーは、Synapticsが使われている(というか大体どこでもSynapticsか)。
ソースコードはこれ。Githubに公開されている。xf86-input-synaptics

なんで効かないかと言うと、の前に、ソースコードからどうやって手のひら検知をしているかを調べてみたのでそれをメモ。

どうやって手のひら検知している?

以下の3要素を考慮して手のひら検知としている模様。

  • PalmDetectの設定が有効になっているか(synclient PalmDetect=1 で有効になるやつ)
  • PalmMinZがしきい値を超えているか(これも synclient PalmMinZ=XXX で設定できる)
  • PalmMinWidthがしきい値を超えているか(これも synclient PalmMinWidth=XXX で設定できる)

PalmMinZ は、どれくらい深く(強く?)タッチパッドが押されたら手のひらと判断するか、のしきい値。
PalmMinWidth は、タッチの広さを見ていて、太すぎる指は手のひらとみなしましょう、という判断のためのしきい値。

Arch Linux on Vaio Pro 13 が手のひら検知をしてくれない理由

上記のしきい値のうち、どうやらPalmMinWidthのほうがおかしいっぽくて、
どんな触り方をしても常に「0」で判定されてしまっている模様。
ちなみに、SynapticsはPalmMinWidthが0のときは手のひらとして判断しないように実装されている。
なので、PalmDetect、PalmMinZ、PalmMinWidth、どれをどの値にしても手のひら検知は効かないということである。ちくしょうめ。

どうすれば解決するのか?

PalmMinWidthを正しく判定させる方法

調査をしているが今のところわからない。。一般ピープルに手が及ぶ範囲なのかどうか。

それ以外の対処法?

PalmMinWidthはもう一切判断に含めないようにソースコードを書き換えてみたが、、、
それってつまりタッチ深度だけで手のひらを検知するということであって、それはまあ微妙な感じ。

つまり

**残念ながら、手のひら検知がいまいちな件は解決できていない。**なんとかする方法の調査はTo Be Continuedである。
デュアルブートしているWindowsの側ではできているっぽいので、Arch Linux側でも出来ないことないと信じて。

2014-05-14 17:59:10
Arch LinuxとWindows8.1をデュアルブートにしたときの備忘録

このポストは

Windows8.1に対してWindows Updateしたところ、何だかわからないがデュアルブートしなくなって焦ったため、
直し方というか、そもそもどうやってデュアルブートにしているかをメモしておくための記事。

件のPCについて

以下のようなPCと、その中身の構成にしている。

– PC本体:Vaio Pro 13
– OS:Arch LinuxとWindows8.1のデュアルブート

デュアルブートのためにしたこと - まずは普通にArch Linuxをインストール

  • Arch Linux起動のためのUSBメモリを作成。ここはWindowsを使う。

USB Installation Media(日本語) - Arch LinuxのWiki なんかが参考になる。

  • Windowsを使ってLinux向けのパーティションを切る。

「管理」を使ってやる。ブート パーティンションを作成する - Microsoftのページ等が参考になる。
とにかく何か領域が空いていればいい。うちの構成では180GB程度確保した。
少なくとも30GBくらいいるかな?

  • Arch Linux起動用のUSBを挿した状態でPCを起動し、USBからのブートを行う。

あとは↑で作ったパーティションに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を使わせる

上記までで何が起きるかというと、、、
どうやら、せっかくgummibootで設定したブートの設定がPC起動時になかったことにされてしまう模様。
つまりWindowsが問答無用で起動される状態に戻ってしまう。VaioのせいなのかWindowsのせいなのか。。。

この点をちゃんと解決するのは諦めました。
諦めて、Windowsの起動に使われるファイルをgummibootのものと置き換えることでデュアルブートを実現。。
一応、やれればいいや、ということで。

  • 先ほどのUSBからArch Linuxを起動し、無理やり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アップデートのときに、bootmgrfw.efiが更新されちゃうことがあるっぽい

だのでWindowsアップデートでデュアルブートができなくなったりするんだろう。
デュアルブートできなくなったら、いちいちgummibootx64.efiをWindows起動用のファイルに上書きしてやる必要がある。

これでWindowsアップデートも怖くない!