Gemini PDAのdumpsysとgeteventによる調査

2018年6月22日 by
カテゴリ: Android 

image_thumb

物理的な寸法を測った前回の続きです。

system のイメージを覗いてみたところ、ID ごとに個別のレイアウト設定を読み込んでいるということも無く、公開されている各言語のキーボード画像をざっくり見た感じキー自体の数や配置は同じっぽかったので、少量多品種生産のキーボードは物理的には同一のもので、キーの印字だけ変えてると思われます。

すぐわかるところで dumpsys input

INPUT MANAGER (dumpsys input)

Input Manager State:
  Interactive: false
  System UI Visibility: 0x8608
  Pointer Speed: 0
  Pointer Gestures Enabled: true
  Show Touches: false

Event Hub State:
  BuiltInKeyboardId: -2
  Devices:
(中略)
    7: Integrated keyboard
      Classes: 0x00000003
      Path: /dev/input/event2
      Descriptor: 970aa80a7023f77f92a0ef388bc0d390d949b426
      Location: 
      ControllerNumber: 0
      UniqueId: 
      Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
      KeyLayoutFile: /system/usr/keylayout/Generic.kl
      KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
      ConfigurationFile: 
      HaveKeyboardLayoutOverlay: true
    8: ACCDET
      Classes: 0x00000001
      Path: /dev/input/event0
      Descriptor: 1c78f7e0d16d4dbc8d3ab93943523f379203f90b
      Location: 
      ControllerNumber: 0
      UniqueId: 
      Identifier: bus=0x0019, vendor=0x0000, product=0x0000, version=0x0000
      KeyLayoutFile: /system/usr/keylayout/ACCDET.kl
      KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
      ConfigurationFile: 
      HaveKeyboardLayoutOverlay: false
    9: mtk-kpd
      Classes: 0x00000001
      Path: /dev/input/event1
      Descriptor: f0d2e427e7a05eb6d316f5e14800c5ac7b6aee79
      Location: 
      ControllerNumber: 0
      UniqueId: 
      Identifier: bus=0x0019, vendor=0x2454, product=0x6500, version=0x0010
      KeyLayoutFile: /system/usr/keylayout/mtk-kpd.kl
      KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
      ConfigurationFile: 
      HaveKeyboardLayoutOverlay: false
(後略)

キーボードの名前は Integrated keyboard で /dev/input/event2 ということがわかります。

ACCDET はヘッドホンの再生ボタンやボリュームボタンと、画面の開閉イベント関連です。

mtk-kpd は Esc と本体右にある銀色のボタンです。他のキーと並んでいても Esc だけ扱いが違うのは電源ボタンを兼ねているからということのようです。

続きまして adb shell getevent –i の結果を見てみましょう。

(前略)
add device 7: /dev/input/event2
  bus:      0000
  vendor    0000
  product   0000
  version   0000
  name:     "Integrated keyboard"
  location: ""
  id:       ""
  version:  1.0.1
  events:
    KEY (0001): 0002  0003  0004  0005  0006  0007  0008  0009 
                000a  000b  000e  000f  0010  0011  0012  0013 
                0014  0015  0016  0017  0018  0019  001c  001d 
                001e  001f  0020  0021  0022  0023  0024  0025 
                0026  0028  002a  002c  002d  002e  002f  0030 
                0031  0032  0033  0034  0036  0038  0039  0067 
                0069  006a  006c  00f0  01d0 
  input props:
    <none>
add device 8: /dev/input/event0
  bus:      0019
  vendor    0000
  product   0000
  version   0000
  name:     "ACCDET"
  location: ""
  id:       ""
  version:  1.0.1
  events:
    KEY (0001): 0043  0044  0057  0058  0072  0073  00a4  0246 
  input props:
    <none>
add device 9: /dev/input/event1
  bus:      0019
  vendor    2454
  product   6500
  version   0010
  name:     "mtk-kpd"
  location: ""
  id:       ""
  version:  1.0.1
  events:
    KEY (0001): 0072  0074  00e7  0198 
  input props:
    <none>

キーコード一覧が取得できる便利コマンドですね。

adb shell で getevent /dev/input/event2 をして全部のキーを順番に押してみたところ、00f0 に該当するキーが見当たらない以外の52個が反応してました。

Fn キーは 01d0 (464=FUNCTION) として普通にキーとして認識していました。いわゆる小型キーボードは Fn+なんか別のキーでキーコード自体が変わるイメージだったんですが、少量多品種生産のためにソフトウエアでなんとかするってことなんでしょうね。

/dev/input/event0 は画面を閉じると 0057 (87=F11) で、 開くと 0058 (88=F12) が発生します。あとはヘッドホンの着信ボタンが 00a4 (164=HEADSETHOOK) で、0072 (114=VOLUME_DOWN) で、0073 (115=VOLUME_UP) でした。

/dev/input/event1 は Esc が 0074 (116=POWER)で、側面が 00e7 (231=CALL)でした。

 

調査によって、Esc が特殊なボタンで、Fn は普通のキーだということがわかりました。また、画面の開閉もキー扱いなので、adb shell input F11 で画面を消したりできます。だからなんだと言われても困りますが。

なお、画面を閉じる(input keyevent F11)と側面のボタン以外はヘッドホンの着信ボタンや Esc などのキーイベントに応答しなくなります。event0 と event1 はイベント自体は発生しているんですが、途中で握りつぶされてるみたい?なので、音楽聴きながら蓋閉めたら蓋開けないと停止できない謎使用です。キー配置と違って、ユーザーレベルではちょっと解決できなさそうなのでファームウェアの更新で対応してくれると良いんですが。

 

次回は冒頭に画像を貼ったけど話題にもあげなかった User-installable keymaps までたどりつきたい。

コメント

2 件のコメント on Gemini PDAのdumpsysとgeteventによる調査

    […] キーボードが言語ごとにたくさん種類があることでおなじみの Gemini PDA ですが、前回話題にしたように、ハードウェア的に同じキーボードの印字を変えただけのようなので、弊害もあり […]

    […] って書いてますが Generic.kl の key 100 って ALT_RIGHT ですよ?そんなキーないでしょ! […]