HHK試行錯誤

基本的な仕組みは分かった。

  • USBキーボードからの入力は linux/drivers/usb/usbkbd.c で処理される。キーボードデバイスの生コードをスキャンコードに変換している。その変換表が usb_kbd_keycode 配列。
    • HHKのバックスラッシュキーのスキャンコードが0になっているので、カーネルモジュールをいじらずにHHKを使うのは不可能。orz
  • スキャンコードとQtのKey_*の変換表が /opt/QtPalmtop/etc/keycode.tbl にある。
  • スキャンコードは普通 include/linux/input.h が使われるみたいだが、ザウルスでは include/asm-arm/sharp_keyboard.h のスキャンコードが使われている。しかし、このスキャンコードがかなり適当? たとえば、スキャンコード106はSLKEY_LALTという名前になっているが、keycode.tblを見るとKey_PageUpに変換されている。意味わからん。内蔵キーボードに無いキーは適当なんかな?
  • F1〜F8のマッピングがkeycode.tblに無い。無くて困ることってあったっけ? とりあえず無視。
  • とりあえず全部のキーに適当なスキャンコードを割り当てて、あとはKeyHelperでマッピングする。