2008年02月03日

HID Manager

Leopardで新しくなった、HID Managerを調べています。
APIを調査していて感じたことですが、以前、Cocoa LifeでHIDデバイスをアプリケーションで利用する記事を掲載させていただきましたが、実際の利用を余り考えていないことに気づかされました。もしかして、Leopardリリース直後だったからかもしれませんが、このHID Managerの新APIに手こずっているという情報を得ていたのですが、まだ、手始めですが、動き出したので、茨の道を予想していたので、少し、肩すかしです。

投稿者 murakami : 21:45 | コメント (0)

2005年09月01日

USB開発情報

自分自身へのメモです。

○Mac OS X
http://homepage.mac.com/inada/

○USB付きの学習リモコン
http://www.sugi-ele.co.jp/top.htm
http://www.daisendenshi.com/detail/r_tb4.html

○USB付きのPIC
http://www.picfun.com/usb20frame.html

○USBの規格書
http://www.usb.org/developers/docs/usb_20.zip

投稿者 murakami : 07:50 | コメント (0)

2005年05月01日

UNICODEの正規化について

あるMLで流れていた情報ですが、記録の為、ブログにUpします。

HFS Plusについては、Technical NotesのHFS Plus Volume Formatで、UNICODE DECOMPOSITION TABLEが説明されています。

ある文字

0x1F8C - GREEK CAPITAL LETTER ALPHA WITH PSILI AND

は、上記の資料では、0x0391 0x0345 0x0313 0x0301となっていますが、Normalization Form D では U0391 U0313 U0301 U0345 となるのが正しいそうです。しかし、正規化すると、どちらもU1F8Cとなるとの、同じといえるのだそうです。
ちなみに、上記の資料が正しくないのは、Unicode 2.0.x ベースの古い資料だからだそうです。
Unicodeの正規化については、以下の資料が参考になるそうです。

http://www.unicode.org/reports/tr15/#Decomposition
http://www.unicode.org/versions/Unicode4.0.0/ch03.pdfの 3.7 Decomposition と 3.11 Canonical Ordering Behavior。

投稿者 murakami : 22:29 | コメント (0)

2005年04月08日

[qa1409]Help Viewerの表示失敗への対処法

英語が駄目駄目ですが、ことしのWWDCは同時通訳なしという事ですので、勉強と考え、チャレンジしてみます。

http://developer.apple.com/qa/qa2005/qa1409.html

アプリケーションのヘルプについての情報は、以下の場所に覚えられているようです。
~/Library/Preferences/com.apple.help.plist
この内容を見て気がついたのですが、開発者の場合、ローカルなパスで開発してい、最終的な確認をアプリケーション・フォルダでというパターンは多いと思いますが、開発中のアプリが置いている、ローカルなパスが、ココにキャッシュされてしまうようです。
Q&Aでは、以下を削除すればキャッシュがクリアされると説明しているようですが、これを削除すれば、上記の初期設定が再構築されるのでしょうか?私の英語力では、よく、分かりません。
~/Library/Caches/com.apple.helpui

投稿者 murakami : 12:12 | コメント (0)

2005年04月03日

[qa1414]アイコンの選択表示

英語がまったく駄目な為、間違っていたら、すいません。
ツールバーのようにアイコンを選択表示する方法の解説です。

http://developer.apple.com/qa/qa2005/qa1414.html

Mac OS X 10.3からアイコン描画時に、選択表示である指定をすればよいのだけれど、まだ、ヘッダーに定義していないので、自分で定義して、サンプルの通りにアイコンを描画したら、選択表示になるようです。ただし、アイコンがクリップされて描画された場合に、選択表示の部分がはみ出て描画してしまうという問題があるようです。
以下のソースコードは、僕が動作確認してみたもので、XcodeでCarbon Applicationプロジェクトを生成した際のデフォルト構成で、main.cのソースコードのみをカスタマイズしただけです。

------------------------------(ここから)------------------------------
#include

#define kDemoApplicationSignature 'jcbD'
enum {
kTransformFocused = 0x8000
};

pascal OSStatus DemoMainWindowEventHandler(EventHandlerCallRef myHandler,
EventRef event, void *userData);

int main(int argc, char* argv[])
{
IBNibRef nibRef;
OSStatus err;
WindowRef window;
EventTypeSpec mainSpec[] = {{kEventClassWindow, kEventWindowUpdate},
{kEventClassWindow, kEventWindowDrawContent},
{kEventClassWindow, kEventWindowActivated},
{kEventClassWindow, kEventWindowBoundsChanged}};

err = CreateNibReference(CFSTR("main"), &nibRef);
require_noerr( err, CantGetNibRef );

err = SetMenuBarFromNib(nibRef, CFSTR("MenuBar"));
require_noerr( err, CantSetMenuBar );

err = CreateWindowFromNib(nibRef, CFSTR("MainWindow"), &window);
require_noerr( err, CantCreateWindow );

DisposeNibReference(nibRef);

InstallWindowEventHandler(window, NewEventHandlerUPP(DemoMainWindowEventHandler),
GetEventTypeCount(mainSpec), mainSpec, (void *)window, NULL);

ShowWindow( window );

RunApplicationEventLoop();

CantCreateWindow:
CantSetMenuBar:
CantGetNibRef:
return err;
}

pascal OSStatus DemoMainWindowEventHandler(EventHandlerCallRef myHandler,
EventRef event, void *userData)
{
OSStatus result = eventNotHandledErr;
OSStatus status;
WindowRef window;
CGrafPtr port;
CGContextRef context;
IconRef iconRef;
CGRect iconRect;
RGBColor color;

if (GetEventClass(event) == kEventClassWindow) {
switch (GetEventKind(event)) {
case kEventWindowUpdate:
case kEventWindowDrawContent:
case kEventWindowActivated:
case kEventWindowBoundsChanged:
GetEventParameter(event, kEventParamDirectObject,
typeWindowRef, NULL, sizeof(window), NULL, &window);
SetPortWindowPort(window);
port = GetWindowPort(window);
status = CreateCGContextForPort(port, &context);
iconRect.origin.x = 10;
iconRect.origin.y = 10;
iconRect.size.width = 128;
iconRect.size.height = 128;
status = GetIconRef(kOnSystemDisk, kSystemIconsCreator,
kGenericApplicationIcon, &iconRef);
status = PlotIconRefInContext(context, &iconRect, kAlignNone,
kTransformNone, &color, kPlotIconRefNormalFlags, iconRef);
iconRect = CGRectOffset(iconRect, 160, 0);
status = PlotIconRefInContext(context, &iconRect, kAlignNone,
kTransformFocused, &color, kPlotIconRefNormalFlags, iconRef);
CGContextFlush(context);
CGContextRelease(context);
result = noErr;
break;
}
}
return result;
}
------------------------------(ここまで)------------------------------

投稿者 murakami : 05:11 | コメント (0)