eps_r

不思議の謎を解かねばならぬ

Motorola Milestone 2のキー二重押し(チャタリング)対策

後継機種であるMilestone 3の型番もスペックも写真もリークされそろそろ正式発表来るんじゃねえのなど言われつつある昨今というところでMotorola Milestone 2のことを書きます。

昨年11月末からずっと気になっているのはキーボードドライバの品質がとても良くないことで、とにかくまあキーがよく暴れる。キーが押した数通りに入力されず「っ」がガンガン入るからそれを消そうとBACKSPACEを押すとこれも連打になって余計な文字まで削っちゃって‥‥というループすら珍しくなく、折角まともなサイズ・触感・クリック感を持ち合わせて尚かつカーソルキーまで持ってるのにそれらを全部台無しにするひどいものだったね。

だった‥‥ということで、偶然スマートフォン関連フォーラムxda-developersで見つけたチャタリング対策モジュールをメモする。

導入にあたって

  • 元のスレッドをちゃんと読める人
  • 電話がrootedであること
  • 文鎮になっても怒ったり泣いたりしない人、または自分で直せる人
  • #44によれば作者さんはビルドナンバー 2.2.16 と 2.4.24 で確認したそうですね

debounce.ko

xda-developers - View Single Post - Milestone 2 keyboard double-pressing - fix!#44をよく読んでdebounce.koをダウンロードして /sdcard/ に転送します。

しかる後 adb shell で端末にログインして、 /tmp/ に debounce.ko を移動させてパーミッション644を与えてから insmod でモジュールを読み込ませます。コマンド実行イメージは以下の通り。

$ su
# cp /sdcard/debounce.ko /tmp/
# chmod 644 /tmp/debounce.ko
# insmod /tmp/debounce.ko

dmesg の実行結果に、以下のような debounce.ko によるメッセージが記録されていれば成功しています。

# dmesg
.
(略)
.
<6>[ 1226.493377] Searching for gpio-event...
<6>[ 1226.493804] Found it!
<6>[ 1226.494079] And there is a sholes-keypad connected...
<6>[ 1226.494842] settle_time: 40000
<6>[ 1226.495117] poll_time: 20000000
<6>[ 1226.495391] debounce_delay: 0
<6>[ 1226.495635] Activating debounce!
<6>[ 1226.496917] debounce_delay: 5000000

Milestone 2 Debounceの導入

上記のような面倒くさいことをしなくても、xda-developers - View Single Post - Milestone 2 keyboard double-pressing - fix!#59を読んで apk をインストールすると、二重押し検知の待ち時間の設定、ブート時にモジュールロードする設定、また端末でのモジュールのロードとアンロードが行えるようになります。

追記(2012-11-14):Milestone 2 keyboard double-pressing - fix! - xda-developersでMilestone 2 Debounceの新しいバージョンが公開されていますね。

このモジュールとアプリケーションの導入によって私の環境からチャタリングはだいたい駆逐され、まあパーフェクトとは行かないまでも比較的快適になった(このモジュールと関係なく、キー押しても入力されない症状が時々にある)。

Milestone 2を使っていてチャタリングを起こすキーボードに悩まされている人に試してほしいかも知れなかった。