キーボードフィルタ

| コメント(0) | トラックバック(0)
キーボードフィルタドライバの使い方がわかってきました。いくらでも試して操作不能にできる仮想PC環境のおかげです。

例えば無変換キーを
  • KEYDOWNでKEYUPも発行
  • KEYUPは無視
  • リピート却下
とする場合、後述のようなコードになっています。

ベースのkbfiltrはWDK 6001.18002です。スキャンコード一覧はこちらにあります。その他、ここここここを参考にしまし た。

レイアウトドライバで無変換にVK_KANAを割り当てれば、遜色ないカナキーにすることができるわけです。

ローレベルの制御をドライバで完了できれば、管理者権限のユーティリティが不要になります。一般権限では管理者権限アプリをフックできませんが、カナインジケータ程度の監視ならポーリングのような、より普通の実装にすべきなのでしょう。

VOID
KbFilter_ServiceCallback(
  IN PDEVICE_OBJECT DeviceObject,
  IN PKEYBOARD_INPUT_DATA InputDataStart,
  IN PKEYBOARD_INPUT_DATA InputDataEnd,
  IN OUT PULONG InputDataConsumed
  )
{
  PDEVICE_EXTENSION  devExt;
  KEYBOARD_INPUT_DATA kana[1] = {0};
  PKEYBOARD_INPUT_DATA curInputData = InputDataStart;
  ULONG tempConsumed = 0;
  static int bInKana = 0;

  devExt = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;

  while( curInputData < InputDataEnd )
  {
    switch ( curInputData->MakeCode )
    {
    case 0x7b:
      if ( ( InputDataStart->Flags & KEY_BREAK ) == 0 ) {
        if ( bInKana == 0 ) {
          bInKana = 1;

          kana[0].MakeCode = 0x7b;
          kana[0].Flags = KEY_MAKE;
          tempConsumed = 0;

          (*(PSERVICE_CALLBACK_ROUTINE) devExt->UpperConnectData.ClassService)(
            devExt->UpperConnectData.ClassDeviceObject,
            &kana[0],
            &kana[1],
            &tempConsumed);

          kana[0].Flags = KEY_BREAK;
          tempConsumed = 0;

          (*(PSERVICE_CALLBACK_ROUTINE) devExt->UpperConnectData.ClassService)(
            devExt->UpperConnectData.ClassDeviceObject,
            &kana[0],
            &kana[1],
            &tempConsumed );
        }
        else {
          curInputData++;
          continue;
        }
      }
      else {
        bInKana = 0;

        curInputData++;
        continue;
      }
      break;
    
    default:
      tempConsumed = 0;
      (*(PSERVICE_CALLBACK_ROUTINE) devExt->UpperConnectData.ClassService)(
        devExt->UpperConnectData.ClassDeviceObject,
        curInputData,
        curInputData + 1,
        &tempConsumed );
    }
    curInputData++;
  }

  *InputDataConsumed = ( InputDataEnd - InputDataStart );
}

iPhone 4

| コメント(0) | トラックバック(0)
iPhone 4が発表されました。6月24日発売だそうです。

個人的に最大の関心事だったFMチューナーは搭載されていませんでした。これはチューナー内蔵ヘッドフォンと組み合わせるのが良いのでしょう。

そうなると敢えて3GSを購入するという選択肢も出てきますが、機能に無頓着な私がiPhone 4を選ぶ理由があるとしたら、下記のような点です。

  • iOS 4で従来機種のスペック不足が予想される
  • ノイズキャンセル機能が付いた
  • アンテナの一部が外枠と一体化して感度が向上
  • 割れているのを見たことがあるので強化ガラスは丈夫そう

ソフトバンクの電波は勤め先のあたりで少し弱いので、外枠アンテナは実は必須かもしれません。また同僚のiPhoneが割れているので、強化ガラスも地味に効果があるかもしれません。

何はともあれ820Pのスーパーボーナスが終わる来月ということで。

デバッグシンボル

| コメント(0) | トラックバック(0)
何となく、ドライバ類からデバッグ用シンボル情報を削除する話をまとめます。

まず、rebaseする方法。Windows 2000 DDKぐらいまではこれ。Free Buildでも入るのでこうしたKBがあります。
[NT DDK] デバイス ドライバからシンボルを削除する方法

Server 2003 SP1 DDKはmakefile.newの修正が必要です。
LINKER_FLAGSにLINKER_DBG_SECTIONを追加している部分をFree Buildの場合に除外します。

LINKER_FLAGS = $(LINKER_FLAGS) $(LINKER_DBG_SECTION) -debugtype:cv $(LINK_OS_VERSIONS)
これを
!if $(FREEBUILD)
LINKER_FLAGS = $(LINKER_FLAGS) $(LINK_OS_VERSIONS)
!else
LINKER_FLAGS = $(LINKER_FLAGS) $(LINKER_DBG_SECTION) -debugtype:cv $(LINK_OS_VERSIONS)
!endif
こう。

WDKもmakefile.new修正ですが少し変わりました。6001.18002と7600.16385.1で共通です。

LINKER_FLAGS = $(LINKER_FLAGS) $(LINKER_DBG_SECTION) $(LINK_OS_VERSIONS)
これを
!if $(FREEBUILD)
LINKER_FLAGS = $(LINKER_FLAGS) $(LINK_OS_VERSIONS)
!else
LINKER_FLAGS = $(LINKER_FLAGS) $(LINKER_DBG_SECTION) $(LINK_OS_VERSIONS)
!endif
こんな感じに。

ただし2003 DDK以降は派手には残らず、pdbファイルへのフルパスが残る程度のものとなっています。ちょうどVisual C++でデフォルト設定のままReleaseビルドした状態に相当ですので、気にしない人には問題ありません。

VK_F

| コメント(0) | トラックバック(0)
時々Windowsのキーボードレイアウトドライバを弄っていますが、VK_F構造体(タグ名_VK_TO_FUNCTION_TABLE)の意味が何となくわかってきました。

# MSDNででも聞けば教えてくれるのでしょうが

NLSFEProcTypeがKBDNLS_TYPE_TOGGLEの場合、NLSFEProcSwitchが8ビットのフラグとしてNLSFEProc[8]の各状態に対応し、その組み合わせでキーが押されると、ビットが立っている状態に関してのみNLSFEProcAltと切り替わるようです。

NLSFEProcCurrentは初期状態をNLSFEProcかNLSFEProcAltのどちらにするか、でしょう。試していませんが2択なので変更する必要性もありません。

WDKのkbd106サンプルの場合、「英数」のNLSFEProcSwitchは2ですから、Shift同時押しでトグル動作です。
このShift同時押しでKBDNLS_SEND_PARAM_VKに従いVK_CAPITALを発行し、同時にNLSFEProcAlt側に切り替わります。次のShift同時押しはNLSFEProcAlt側が参照され、VK_CAPITAL発行と同時にNLSFEProcに戻ってくる、と。
NLSFEProcAltには同時押しのない単体(Base)にもVK_CAPITALが書かれていますが、発行されないことから、Shift同時押しだけが切り替わったものと考えられます。

「ひらがな」はNLSFEProcSwitchが8なのでShift+Ctrl同時押しが対応。VK_KANAと同時にNLSFEProcAltに切り替わり、同様に次にShift+Ctrl同時押しで戻ってきます。

ということに気付いたのは、無変換VK_KANAをKBDNLS_TYPE_TOGGLEで試している途中、NLSFEProcAlt側を全部KBDNLS_NULLのままにしていたら、戻って来られなくなったためですが(汗)。

しかしKBDNLS_TYPE_TOGGLEにしても、少なくともVK_KANAに関して御利益はないようで、相変わらずKEYUPまでON/OFFが変化しません。KEYDOWNで変化するのはCapsLock、NumLock、ScrollLockの特権のようです。

98配列USBキーボードでは、KEYDOWNで切り替えるためのフィルタドライバを別途用意していますが、この部分の書き方についてはまだ理解できていません。

夢喰いメリー

| コメント(0) | トラックバック(0)
yumekui.jpg牛木義隆氏はローゼンメイデンのファンアートで知った名前です。顔の表情がとても好きなのですが、プロデビューしていたと知り単行本を買ってみました。

夢をテーマとする作品です。スタイルはバトルものですし、ネタとしてもそう珍しくはありませんが、キャラがよく立っています。ストーリーも起伏があって良いですよ。

特に人外キャラがいい感じです。極端なディフォルメであれ、全く現世にないものであれ、現実から離れれば離れるほど、独自のリズムで形を整えなければなりません。そこに何となく王ドロボウを感じたのですが、熊倉裕一氏がお好きだそうで。

夢の世界で人外いっぱい、というと「風のクロノア」というこれまた大好きな作品がありますが、この路線は胸がときめくのです。

「追跡者」ジョン・ドゥが素敵です。こういうトリックスターは元々好きなのですが、マントとか仮面とかしゃべり方とか主人公へのちょっかいとか、ツボ突かれまくりですよ。一巻冒頭ではまだそれほどではありませんが、再登場する度に格好良くなっています。牛木氏も好きなのでしょう。取り巻きの猫が大勢いるのですが、直立してたりケモノ好きにはたまりません。

「迷宮」ランズボローは子分らしい小物ですが、表情豊かですし、主人公らを絶望に落としてみたりと活躍しています。一方で、悪の親玉である「灯台」エルクレスは人外というほどではありません。素顔が兜で完全に隠れていたら、好みから完全に外れるところでした。もっとも、夢魔が全部人外というわけでもないので、その方向に期待しすぎてもいけませんが。

1巻を買ってから2巻がなかなか手に入らず、ようやく見つけた書店で4巻までまとめ買いしてしまいましたが、いいとこで終わってますね。5巻は半年後ぐらいでしょうか。単行本派はこういう時に困ります。

銀河ヒッチハイク・ガイド

| コメント(0) | トラックバック(0)
hitchhiker.jpg人類は地上で三番目の知能だ、というファイアボールの台詞の元ネタがこれだと聞いて読んでみました。

バイパス建設のために主人公アーサーの家が破壊されようとする事件と、それにまつわるお役所仕事の描写から始まるという、何とも辛気くさい開幕です。宇宙に飛んでからは次から次へとアイデア山盛り。文体そのものは淡々としていて、視点は一歩引いた感じがします。

役所仕事ネタといえば、この作品より前ですが、モンティ・パイソン「THE GAS COOKER SKETCH」(1971)を連想しました。アメリカでも刑事コロンボ「パイルD-3の壁」(1972)がありましたが、同年代ですね。

マーヴィンはひょっとして、ギャラクシーエンジェルのノーマッドの先輩だったりするのでしょうか。

一見すると散漫なライトノベルと似た文体ですが、どーでもいい裏話に見えるものが後からほぼ伏線として回収されていくので、作り込まれているのは間違いありません。ゼイフォードの脳みその話がいつ回収されるのかわかりませんが。

地球は作られた惑星だった、それも我々俗人には何の意味もない目的のために、という衝撃の種明かしですが、園山俊二「ギャートルズ」冒頭もそんな感じでしたね。厭世的ですが肩肘を張らないのは素敵なことです。

モニタ選考

| コメント(0) | トラックバック(0)
結婚を機に引っ越すことになり、部屋が狭くなるのでPCモニタとテレビを統合する方向で調べています。

選考要素は色々あります。チューナー、解像度、スピーカー音質、光出力、デジタル同士PinP、ノングレアパネル。

まずチューナー。SONY BDZ-T70は居間に接収されると思われますが、Buffalo LH-H91DTVを流用する手があるので、必須ではありません。自室に籠もる時間など少なくなりますから、利便性は大した問題ではないでしょう。

WUXGAのI-O DATA LCD-TV241XBR-2からなので、解像度は少なくともフルHD。

スピーカー音質という点ではI-O DATA LCD-DTV223XBEが気になっています。強いこだわりはありませんが、昨今の液晶スピーカーは耐えられません。もっともONKYO SA-205HDを使えば済む話ではあります。

光出力がないと、せっかくのサラウンドヘッドフォンが宝の持ち腐れです。三菱 VISEOシリーズぐらいしか選択肢はありませんが、これもSA-205HDから出力させる手があります。

デジタル同士PinPは、大きさとして選択肢に入れられる範囲では、三菱RDT232WM-Z、EIZO FX2431(TV)、旧商品のI-O DATA LCD-MF241Xぐらいのようです。FX2431は完全に予算オーバー、LCD-MF241Xも新品だと予算オーバーです。配線が複雑になって構わなければ、子画面用に別途コンポジットを接続しても良いのですし、諦めましょう。

ただしSA-205HDに依存すると、音声切り替えと映像切り替えが分かれてしまうため、PinPはかなり使いにくくなります。

今回の選択肢に入るノングレアはLCD-DTV223XBE、三菱 RDT232WXMDT221WTFMDT243WGIIあたりです。光出力があり高音質なモデルがないのでSA-205HDは必須。となるとスピーカーの置き場所を考えないといけません。下置きの可能性があるとすると、画面の位置が上がるためKDL-19J5の経験に従いTNパネルは外れます。TNは上から見ると白く、下から見ると黒くなるのです。

RDT232WXとMDT243WGII。...MDT243WGII、行ってみましょうかね。

ClamXavの更新ログ

| コメント(0) | トラックバック(0)
ClamXavの更新ログを削除したところ、更新しても表示できなくなりました。

ファイル自体はあるので何事かと思ったら、パーミッションが足りていませんでした。_clamavグループ・同名ユーザーに640では見えません。

sudo chmod 644 /usr/local/clamXav/share/clamav/freshclam.log

カーナビと声

| コメント(0) | トラックバック(0)
プレオから外したNV-XYZ88はそのまま、R2では代わりにMAPLUS3を使っています。釘宮理恵と井上喜久子の声が入っていて快適ですが、性能については値段相応です。

北埼玉のような郊外では楽勝で実用になりますが、外環下の国道298号のような、電波が入らない巨大交差点では少し困ります。標識を見ておけば対応できますが、フルスペックのナビに慣れた人には物足りないでしょう。

ソフトと別の問題として、PSPハード自身の耐久性も、車載するには頼りない気がします。まれに勝手に画面がスクロールしたり、最近はHOMEボタンが押されたりしています。音声データはPSP本体を識別しての課金ですので、壊れると買い直しになるため震動対策を強化しなければなりません。

声が売りのMAPLUSですが、最近はクラリオンとコラボしていたりするようですね。DTR-P7DT typeIIがMAPLUS声優データ対応らしく、もう少し上のグレードにも広がってくれることを期待します。

クラリオンの簡易ナビはソニーnav-u等と比べると、完全に廉価版の位置づけになっているため、現状のままだと新規はともかくPSPからの乗り換えでは、メリットが少ないと言わざるを得ません。

加速度センサーぐらいは対応したものを...と思ったら、MAPLUS自身が出しているE-100MPは装備しているのですね。クラリオンも何とかSmoonaviシリーズまで声優データ対応をしてほしいものです。

Core Textに手をつけてみる

| コメント(0) | トラックバック(0)
XCodeのCoreTextTestサンプルが文字化けして動作しませんでした。MacBook、Mac OS X 10.5.8、XCode 3.1.3にて。

文字列が入ったutxtファイルをmiでLittle Endian(UTF-16LE)で保存し直したら表示されました。

CFStringオブジェクトの中にファイルから直接バイナリで読み込んでいるので、BOM無しのアーキテクチャ依存なエンディアンでしか正常に読み込めないように見えます。
<<前のページへ 4849505152535455565758

アーカイブ

ウェブページ

Powered by Movable Type 5.2.13

ホームページ

最近のコメント

アイテム

  • magnet_runner.jpg
  • autocraft1.jpg
  • material_sniper.jpg
  • acrobatdc_appcontainer.png
  • atok2017_kana.png
  • shinjuku_yahoo.jpg
  • shinjuku_google.jpg
  • synology_2.png
  • synology_1.png
  • pdpc10b.jpg