hi everybody,just received my kb today, plugged to my windows PC. Nice, working and good looking.

And as a hobbyist, i've tried to understand how the kb work internally, with the goal to develop my own keyboard configurator.

the dump of the memory stick give a good idea. each .sys file is a memory dump of the keys, each pixel being represented by 2 bytes (so 65536 colors), so the sys file length is 48*48*2.

playing around with the content of each sys file give the color map pretty easily (FF FF being white, 00 00 being black).

now, plugging the keyboard and watching at the vOptimus folder in the virtual disk created by optimus, structure seems to be very similar.

(btw, the virtual disk is not correctly created. Its letter may override a network disk connected, causing the configurator to fail taking control of the keyboard)

runtime analysis of the configurator show that it opens all the sys files in the [...]\vOptimus\dynamic\*.sys. It is evident that, loading images to the keys is done via these files.

So it looks like I'm near of loading by myself something in the keys. however, there is something missing: when the key bitmap is written into the sys file, what trigger the loading of that bitmap into the key ? DeviceIoControl ??? Event ???? something else ???

more extensive study of the configurator should give me the whole trick, however I'm a lazy person, so it's time to remeber the promise of art boss, to disclose enough information to developpers to be able to program ourselves the keyboard.

So I'm asking for such documentation, or at least a small explamation of how the load bitmap into key event is triggered.

by advance, thank you.

Wed Apr 09, 2008 9:41 am

Pretender

Art Lebedev Software Developer

Joined: Wed Mar 12, 2008 8:10 pmPosts: 66

Re: and here comes the specs of optimus (?)

Quote:

...playing around with the content of each sys file give the color map pretty easily (FF FF being white, 00 00 being black).

Pixel color by bits 5-6-5 (RRRRRGGGGGGBBBBB)

Quote:

...runtime analysis of the configurator show that it opens all the sys files in the [...]\vOptimus\dynamic\*.sys. It is evident that, loading images to the keys is done via these files.

Yes.

Quote:

...what trigger the loading of that bitmap into the key

Record of a file also trigger. If to be exact, record in last sector of a file and causes its updating.

Quote:

...so it's time to remeber the promise of art boss, to disclose enough information to developpers to be able to program ourselves the keyboard.

At present the documentation all even in development.

Quote:

...or at least a small explamation of how the load bitmap into key event is triggered.

To the aforesaid still it is necessary to add, that in a file layout.sys should be written down 1 in the byte corresponding dynamically updated button. For the beginning it is possible to use a file entirely consisting from 1. ^__^

Wed Apr 09, 2008 2:58 pm

XAK

Art Lebedev Software Developer

Joined: Thu Mar 20, 2008 7:08 pmPosts: 55Location: Moscow

Re: and here comes the specs of optimus (?)

Here is the code that translates any NSImage to sys-file image format:

begin // Because IO are uncached, we must write an integer multiple of sector size (512 bytes) at once otherwise the IO would fail, // so this requires the use of a working memory buffer for both the key (9 sectors), and the layout file (1 sector) Getmem(Wm,48*48*2); Getmem(Lp,512); Fillchar(lp^,512,0); for I := 0 to high(KeysFiles) do begin BitmapToKey(Imgl.PngImages[Random(Imgl.PngImages.Count)].PngImage,Wm); Keysfiles[I].Position := 0; Keysfiles[I].Write(WM^,48*48*2); Lp[I] := 1; end; layout.Position := 0; Layout.Write(Lp^,512); freemem(Wm); Freemem(Lp);end;

I hope this wasn't too long, it's just testapp, if it may help someone ...

I just found this place. I've been interested in this keyboard for a while, but I need to know if I can change layouts dynamically from within my software. If this is possible, I might be able to use the keyboard, and demonstrate its use as a possible replacement for a custom keyboard that my company makes. From looking at these specs, it seems like it just might be possible.

Is there going to be a published API or an SDK available to software developers, or is this it?

Fri Apr 18, 2008 1:24 am

Pretender

Art Lebedev Software Developer

Joined: Wed Mar 12, 2008 8:10 pmPosts: 66

Re: and here comes the specs of optimus (?)

Quote:

...I need to know if I can change layouts dynamically from within my software.

Yes, you can. Optimus Maximus is a Mass Storage device (disk drive), with a file for each button image. So you can use even a .bat file to copy desired layout images to the keyboard and they will appear on the keyboard instantly.

Quote:

Is there going to be a published API or an SDK available to software developers, or is this it?

...I need to know if I can change layouts dynamically from within my software.

Yes, you can. Optimus Maximus is a Mass Storage device (disk drive), with a file for each button image. So you can use even a .bat file to copy desired layout images to the keyboard and they will appear on the keyboard instantly.

Quote:

Is there going to be a published API or an SDK available to software developers, or is this it?

Who is online

Users browsing this forum: No registered users and 1 guest

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum