差分表示


#freeze
*&date(Y-n-j[lL],2015/4/20); KEYEVENTF_EXTENDEDKEY

win で fltk のサンプルを動かしてるとキー入力全般で、拙作のキーバインディングソフトDiaKbdMouse経由でのカーソル移動がテンキー数字に化けてしまった。調べてみると fl_win32.cxx で WK_KEYUP/DOWN処理でlParamのbit24=拡張キーをみて、拡張キーじゃなかったら まさにそのようなキーが押されたようにする処理になっている。状況的に DiaKbdMouse側で設定足りてないせいだろうで ググれば [[まさにな頁>http://pelolias.com/archives/1509]]発見。~
win で fltk のサンプルを動かしてるとキー入力全般で、拙作のキーバインディングソフト[[DiaKbdMouse>http://www.6809.net/tenk/html/lib/doc/DiaKbdMouse/DiaKbdMouse.htm]]経由でのカーソル移動がテンキー数字に化けてしまった。調べてみると fl_win32.cxx で WK_KEYUP/DOWN処理でlParamのbit24=拡張キーをみて、拡張キーじゃなかったら まさにそのようなキーが押されたようにする処理になっている。状況的に DiaKbdMouse側で設定足りてないせいだろうで ググれば [[まさにな頁>http://pelolias.com/archives/1509]]発見。~
みごとに KEYEVENTF_EXTENDEDKEY を設定していなかった。というか、キー種類みてKEYEVENTF_EXTENDEDKEY設定していたのを無くても動くやんで#if 0で省いてた...ダメだ>俺。てことで不精して全部にKEYEVENTF_EXTENDEDKEY付けた状態で対処。

しかし fltk でこんな処理をしてるってことはIBM拡張キーボードとは非互換かつ多少なりとも普及したテンキー付キーボードがあった?…ではなく、拡張キー扱いでない時の fltk でのキーコードは、単に (virtualでない) bios のキーコードと同じようなので、本来はそういう扱いをするものなんですかね。いままで KEYEVENTF_EXTENDEDKEY 付けてなくても困ってなかったから WK_KEYUP/DOWN処理で律儀にlParamのbit24見てるソフトは滅多にないと思うけれど... fltkなソフトを今まで使ってなかったとも言えるか。