錯誤試行

PCや生活の試行錯誤の成果を報告するブログ

macで(SandS以外の)ワンショットモディファイヤを実現する

skk使いとしてはキーカスタマイズにSandSのようなワンショットモディファイヤが必須だが、macでの(SandS以外の)実現方法が発見できず使い勝手に不満があった。しかし、探し回った末にその実現方法を発見したので紹介したい。
macでのキーカスタマイズはKeyRemap4MacBook(新名称Karabiner)に何かとお世話になるが、ワンショットモディファイヤについても実現することができる。以下はKeyRemap4MacBook(8.4.0)での設定内容。
メニューには設定項目は表示されていない。KeyRemap4MacBookの「Misc & Uninstall」タブからprivate.xmlを開き設定を記述する。
以下の例はセミコロンと他のキーを組み合せて押したときはセミコロンがシフトキーとして扱われ、セミコロンだけを押したときにはセミコロンが入力される。

 <item>
   <name>semicolon to Shift_L</name>
   <appendix>(+ When you type semicolon only, send semicolon)</appendix>
   <identifier>remap.semicolon2shiftL_semicolon</identifier>
   <autogen>--KeyOverlaidModifier-- KeyCode::SEMICOLON, KeyCode::SHIFT_L, KeyCode::SEMICOLON</autogen>
 </item>

なお、SandSについてはChange Space Key→Space to Shift_L(+ When you type Space only,send Space)から設定できる(「SandS」や「Shift and Space」という項目名ではないので注意)。
また、KeyRemap4MacBookの設定画面で「Sticky Shift」として記載されている機能は「そのキーの機能を潰して」スティッキーシフトに設定するものであり、ワンショットモディファイヤではない(上の例で言うとセミコロン自身を入力することはできない)。

参照サイト

以下のサイトを参照した。

org-modeのhtmlエクスポートでソースコード部分が読みにくい

org-modeでエクスポートしたhtmlのソースコード部分(#+BEGIN_SRC〜#+END_SRC)の背景色が明るいせいか、ソースコードが読みにくい。
以下のようにして背景色を黒っぽい色に変更した。

#+STYLE: <style type="text/css"> pre {background-color: rgb(70, 88, 105);} </style>

org8.0以降では#+STYLE:が#+HTML_HEAD:に変更されている模様。

Zenfone5(A500KL)国内版のadbコマンド実行についての覚え書き

国内版のZenfone5(A500KL)は、海外版のZenfone5(A500KL)の'apply update from ADB'のようなadbモードに入るための手順のようなものはなく、リカバリモードに入ればadbコマンドを送ることができる。

Androidで撮影した写真が全て消えた(「ギャラリー」「フォト」アプリ等で表示されない)場合の対処

Androidで画像ビューアアプリから写真が全て消えてしまった。しかしファイラーから見ると画像ファイルは全て残っている。アプリのデザインが変化しておりアップデートが掛かった模様。
端末を再起動したところ一部の画像が表示され、再度再起動したところ全ての画像が表示された。アプリのアップデートにより画像データベースが一旦クリアされ、時間差でデータベースの作成処理が実行されたのではないかと思われる。
アプリ上で説明しておいてくれれば無用に混乱することも無いのだが。

anything.elで候補が絞り込まれない&全く表示されない

emacsを再起動せずに使用していたが、あるタイミングでanything-migemoの候補が全く表示されなくなった。migemoなしのanythingでも候補は表示されているものの、何文字か入力しても絞り込みが動作しない。
emacsを再起動するが起動時にエラーは出ず、*Messages*バッファにも何もエラーは出力されていない。
以前のエントリのanything.elがミニバッファヒストリで固まる件の不具合と同様に履歴ファイルの肥大化を考え、.emacs.desktopや.sessionやhistoryファイルを削除したものの改善せず。migemo I-serachは問題なく動作するが、.emacsを表示しても自動でEmacs-lisp-modeになっておらず、カーソルも点滅していない(blinkを切る設定はしていない)のも気になった。
結局OS(Ubuntu12.04)再起動で改善した。

Ubuntu12.04のログイン画面からUnityセッション(Ubuntu,Ubuntu2D)が消えたためgnome-classic環境に変更

数日間溜まっていたソフトウェアアップデートを実行したところ、Android端末をUSB経由でマウントすることができなくなった。lsusbでは認識されているが、Android端末もudevデーモン用の設定ファイル(/etc/udev/rules.d/xx-android.rules)の設定も全く手を加えていないのにnautilusに表示されない(仮想環境のゲストOS内では正しく認識されている)。
アップデート履歴を確認すると、2015/5/5にgvfsがアップデートされており、これが原因である可能性が考えられたので、apt-cache showpkg gvfsで以前のバージョンを確認し、以下を実行してダウングレードを行なった。

sudo aptitude install gvfs=1.12.1-0ubuntu1

再起動したところ、パスワードが間違っていないのにログインに失敗する。ログインネーム右上のアイコンからセッション選択の画面に入ると「Ubuntu」と「Ubuntu2D」が消滅しており、これがログインできなかった原因らしい。gvfsのダウングレード時に依存関係でUnity関係のパッケージまでアンインストールされてしまったのだろうか?
gnome-classicを選択したところログインすることができたが、依然としてAndroid端末はnautilusに表示されない。

調べてみると、Unity環境が壊れたときの復旧方法については対応の方法が見つかるが、セッション選択画面から消えた場合については対応方法が見当たらない。止むを得ないのでgnome-classic環境を元のUnity環境に近付けることとした。
gnome-classic環境はAlt-Tabによるタスク切り替えが動作しない不具合があり、CompizConfig Setting Managerからアプリケーションスイッチャーを有効にすることで機能するようになるが、手元の環境ではXがクラッシュしてしまうので代わりにStatic Application Switcherを有効にしたところ問題なく動作した。
慣れてみると、gnome-classic環境はUnity環境よりもリソース負荷が軽く、きびきびと動作してくれて快適である。画面左端のランチャーメニューが消えて画面が広く使えるオマケまで付いてくる。Android端末がマウントできない状況は変わらないものの、より快適な環境を手に入れることができた。

SHARP NetWalker PC-Z1でBluetoothキーボード REUDO RBK-3000BTを使い最小のモバイルEmacsによる快適入力環境を手に入れる

この記事であなたが短縮できる(かもしれない)時間:2時間

2009年に発売されたNetWalker PC-Z1(Wikipedia)は、近年の大型化したスマホと同等サイズの5インチ液晶を持ち、それより一回り大きいスマートブック(Wikipedia)と呼ばれるカテゴリに属する最小クラスのモバイルPCである。Ubuntu 9.04をOSとして採用しており正真正銘のEmacs(22.2.1)が動作するのだが、キーボードに難があり永らく文鎮ならぬ置物として眠らせたままだった。
この度スマホBluetoothキーボードの購入検討に伴ない、この眠れるモバイル端末を入力用途に使わない手はないと思い立って情報を収集したところ、少し前に販売されていたBluetoothアダプタ PLANEX BT-MicroEDR2XとBluetoothキーボード REUDO RBK-2000BTIIはNetWalkerでの動作確認が取れている様子*1。しかし、2015年3月現在のそれぞれの後継機種であるBT-Micro4とRBK-3000BTで使用できるかどうか動作確認を行なっているサイトが見当たらなかったので、おそらく動くだろうという見込みの下に検証してみることにした。

まずbluetooth関連パッケージをインストールする。

sudo apt-get install bluetooth bluez-gnome bluez-compat

BT-Micro4を接続し、Bluetooth設定マネージャ(bluetooth-applet)を使って設定を試みるが、RBK-3000BTはリストに表示されるものの、ペアリングに失敗する。試行錯誤したのち、使用することに成功したので以下に参考情報として残す。

予めBT-Micro4を別のPCに接続してペアリングを行なっておく(これは不要な手順かもしれない)。

(Netwalker以外のUbuntuでペアリングする場合)
Ubuntubluetooth-wizardを実行してペアリングの手順を進ませていくとPINコード表示まではできるものの、PINを打ち込んでもペアリングに失敗する(gnome-bluetooth(3.2.2-0ubuntu5.1)にて確認)ので、KDEパッケージのbluedevilをインストールする。bluedevil-wizardを起動しPINコード表示画面になったら、トレイのbluetoothアイコンを右クリックしてRBK-3000BTに接続するとPINコード入力なしでペアリングできる。

RBK-3000BTのBluetoothボタンを3秒長押しでペアリングモードにしてから、以下のコマンドでデバイスのアドレスを取得する。

sudo hidd --search

接続が切断されるので、再度RBK-3000BTをペアリングモードにしてから以下を実行する。

sudo hidd --connect (アドレス)

以上でRBK-3000BTから文字入力ができるようになる。
一定時間入力を行なわなかったり、キーボードを折り畳んだりすると接続が無効となるので注意。同様にNetWalkerサスペンドさせてもBlueToothアダプタのLEDが消灯して接続は無効となる。接続が切れてしまうと毎回ペアリングを行なわなければならないのが難点だが、標準のBluetooth設定マネージャ(bluetooth-applet)でペアリングできず全くキーボードを使えない状況に比べれば大きな前進と言える。

BluetoothアダプタのLEDが点滅していない場合

サスペンドからの復帰などでBluetoothアダプタのLEDが点滅しない場合は、以下を実行して30秒程度待ってからBluetoothアダプタを挿し直す。

sudo service bluetooth restart

hciconfigコマンドでbluetoothの接続状態を確認することができる。
以下のようにDOWNと表示されている場合はそのアダプタを使用できない。

$ hciconfig
hci0:	Type: USB
	BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0
	DOWN 
	RX bytes:14 acl:0 sco:0 events:0 errors:0
	TX bytes:3 acl:0 sco:0 commands:1 errors:0

この際に以下のようにアダプタを起動するコマンドを与えることができるが、試してみたところタイムアウトしてうまく動作しない。この状態で、sudo hidd --connect (アドレス)を実行しても入力が戻らず接続することができない。

$ sudo hciconfig hci0 up
Can't init device hci0: Connection timed out (110)

少し待ってからアダプタを挿し直したところ以下のように認識された。この状態になると、sudo hidd --connect (アドレス)で接続することができた。

$ hciconfig
hci0:	Type: USB
	BD Address: 00:0A:AB:15:3A:A4 ACL MTU: 310:10 SCO MTU: 64:8
	UP RUNNING PSCAN 
	RX bytes:1417 acl:0 sco:0 events:56 errors:0
	TX bytes:2888 acl:0 sco:0 commands:56 errors:0

LEDが点滅しているがペアリングができない場合

以下のように表示され、ペアリングができないことがあった。この際は、一旦bluetooth-appletを起動の上、bluetoothアイコン右クリックの「新しいデバイスをセットアップ」(bluetooth-wizard)からペアリング作業を行ない失敗した後に、再度hidd --connctを実行したところペアリングに成功した。bluetooth-appletを起動せず、直接bluetooth-wizardを起動したところペアリングできなかった*2

$ sudo hidd --connect (アドレス)
Can't get device information: Permission denied

一言

NetWalkerUbuntuをOSとして搭載しているため、冒頭に書いた通り(完全な)Emacsが動き、CtrlとCaps Lockキーの入れ替えも可能で、当然ながらマルチウィンドウシステムであるので入力画面の隣りでpdfを表示させておくこともできる*3。これらはシングルウィンドウシステム・独自OSである2015年現在のiPhone,Androidスマートフォンでは実現できない大きな利点である。
本体のキーボードに難があり、これまであまり活用できなかったNetWalker PC-Z1だが、持ち運びやすいBluetoothキーボードによって、その能力を引き出すことができた。

参考サイト・本

Netwalkerbluetooth機器を使用するにはbluez-gnomeとbluez-compatパッケージをインストールする。ペアリング後認識しない場合はsudo hidd -scanを実行する。サスペンド復帰でBluetoothアダプタのLEDが点滅しなくなった場合はsudo service bluetooth restartすると認識する。それでもダメな場合はBluetoothアダプタを抜いてsudo service bluetooth restartし、アダプタを再装着してから2秒ほど待って再度sudo service bluetooth restartを実行すると復帰できるとのこと。
手元の環境ではサスペンド復帰でアダプタが認識しなくなった際には上記の2秒待ちではダメで、アダプタを抜いた状態でbluetoothサービスを再起動した後に30秒程度間を開けてからアダプタを装着しないと認識しなかった。また、その後にsudo hidd -scanを実行してもCan't get device information: Host is downと表示されて接続できなかったが、sudo hidd -sとしたところ接続することができた。また、再接続には必ずキーボードをペアリングモードにする必要があった。

bluetooth-wizardで接続できない場合は、sudo hidd --connect xx:xx:xx:xx:xx:xxによりbluetooth機器に接続できるという貴重な情報。

上記ブログのsudo hidd --connect xx:xx:xx:xx:xx:xxによる接続方法を引用したエントリ。

上と同じブログ。スタンバイに入ると接続デバイスの電源を入れ直し上記コマンドを実行しなければならない旨。

battwalkerの作者でもあるガジェットブログ「ひとりぶろぐ」の作者の、netwalkerbluetoothに関するブックマークページ。蛇の道は蛇で、サスペンド復帰からのキーボード接続やBluetooth認識不具合の解決方法のページがエントリされている。

サスペンド復帰後にペアリングが復活しない場合はsudo hidd -sを実行する。

サスペンド復帰でBluetoothアダプタが認識しなくなる場合の対処。/etc/pm/sleep.d に以下のスクリプトを置く。

#!/bin/sh
case "${1}" in
        suspend|hibernate)
                /etc/init.d/bluetooth stop
                ;;
        resume|thaw)
                sleep 1
                /etc/init.d/bluetooth start
                hidd -s
                ;;
esac

サスペンド復帰でBluetoothアダプタが認識しなくなる場合の対処。/etc/acpi/suspend.dに以下のスクリプトを置く。

#!/bin/sh
/usr/sbin/hciconfig hci0 down

スリープ前にアダプタを落とすことで不具合が改善されるとのことだったが、手元の環境では上記のように設定しても問題が改善されなかった。サスペンド前にsudo hciconfig hci0 downを手入力で実行しても同様だった。

再起動しても自動でキーボードを接続させる方法について。記述されている方法を行ないキーボードをペアリングモードにしたところ自動で接続できることを確認した(コードが一部正しくないようなので記事文末リンク先のコードを使用すること)。ただ、手元の環境では接続できたりできなかったりと不安定であるため、マニュアル接続に戻した。

sudo hidd --connect xx:xx:xx:xx:xx:xxによる接続方法についての記述の他、再起動しても自動でキーボードを接続させる方法について。記述されている方法では自動で接続させることができなかった。

予めペアリングを済ませておき、キーボードのボタンで接続状態にしてからsudo hcitool auth aa:bb:cc:dd:ee:ffとするとPINコードのダイアログが出るとの情報。同コマンドを実行したがI/Oエラーが表示され接続できなかった。

bluetooth動作報告。ドングルによりPINコードを毎回変更される機器ではペアリングできない機器があったなどの報告。

KDEアプリbluedevilの情報。gnome-bluetooth(3.2.2-0ubuntu5.1)に含まれるbluetooth-wizardでPINコードでの認証に失敗した。この際はbluedevilを利用するとPINコードの入力無しでペアリングが可能。

Anrdoidスマートフォンでマルチウィンドウを実現するアプリである、Floating Apps FREEについての記事。対応した専用アプリでのみマルチウィンドウ操作が実現できる。

au初のスマートフォン(スマートブック)であり、NetWalkerAndroidスマートフォン版とも言える同機種についての紹介記事。

スマートブック製品は2011年のNEC LifeTouch NOTE以降各メーカーから新製品が発表されていない様子。関連記事として。

Androidスマートフォンをデスクトップコンピュータに変えるというAndromium OSがスマートブックとの連携を検討していくとの記事。

*1:PLANEX BT-MicroEDR2Xは書籍「NetWalkerガリガリ活用術」ほか多数のWebサイトで動作確認されており、REUDO RBK-2000BTIIはマニュアルにNetWalker PC-Z1の対応が表記されている

*2:bluetooth-appletの起動で認証に必要な他のサービスが起動しているのかもしれない

*3:標準pdfビューアのEvinceはhjklで上下左右のスクロールが可能