making a touchstream out of two igestures

Comments specifically about typing on TS keyboards, and about key layouts.

Moderator: The00Dustin

making a touchstream out of two igestures

Postby advisor » 16 Oct 2005, 18:27

I was wondering if anybody had managed to create a "touchstream" out of two igestures as suggested in the posts made in 2005. I see that IvanW can make numpads out of the igestures, and I'm trying to make that work right now, but I don't see anything about getting the two igestures to work. Anybody have any insights into this? Also, if somebody could document the procedure of reprogramming the igesture to become a numpad, that would be great. I am trying to figure out this XML stuff, but I'm pretty high on the clueless scale.
advisor
Familiar
 
Posts: 10
Joined: 16 Oct 2005, 18:20

Postby Rqyteqto » 16 Oct 2005, 22:30

Hey Advisor, welcome to the clubs, both fingerfans and the clueless club. I think most of us are in the same boat. I also have two iGestures in a hope such an arrangement or some other strategy could be worked out.

At this point in time, ivanw and torben seem to be the most knowlegeble. The best resource on this is at the XMl wiki (bin/view/Main/XmlManual)

as best I can tell, it should be completely possible to do what you suggest, it seems this boards are endlessly programmable, though I doubt its possible you could get the two boards to work as one, with interactivity between them. More likely you could either have two separate boards, say one for numbers and punctuation and the other for letters or stack the left side of the normal keyboard on one and the right side on the other but there wouldn't be any interactivity between them, ie - the shift key on one wouldn't affect the other and you couldn't do two handed gestures. Then again, I wouldn't be entirely surprised if that did indeed turn out to be possible. I don't think there's much that would surprise me about what these boards can be made to do.

The basic process for setting up an iGesture is to establsh each key you want: what it is or does and where it is on the board. That's a matter of writing XML code which appears to be fairly straightforward, at least as far as most languages go.

Another good source of information, at least for the time being, are the forums on the fingerworks website. They are no longer active (you can't post to them) but you can read them and there's lots and lots of information there. Hopefully somebody is saving that against the day the website is no longer up and running.

Whatever you work out, please post it so the rest of us can learn.
Invent the Future
Rqyteqto
Grizzled Veteran
 
Posts: 201
Joined: 13 Jun 2005, 01:40
Location: Kahalu'u, Oahu, Hawaii

taps do not register on an igesture

Postby advisor » 16 Oct 2005, 23:04

Okay... so what I've figured out so far is that in theory, this is pretty straightforward. The FingerWorks MultiTouch applications comes with a .jar file that has the proper "taparea" XML tags for the NumPad. So to turn an igesture into a numpad, what I've tried to do is merge a configuration file saved by the MultiTouch utility with the TapArea tags defined by the numpad file.

Here is the configuration file I get:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MTS_config>
<MTS_config MTS_config_version="1.60" min_firmware_version="1.46">
<RequireLib name="FW_main" />
<TapArea xcenter="0.1" ycenter="9.5" isRectangular="true" width="1.9" height="1.1"
macro_name=" PrintScreen ">
<KeyEvent keyCode="PrintScreen" />
</TapArea>
<TapArea xcenter="2.0" ycenter="9.5" isRectangular="true" width="1.9" height="1.1"
macro_name=" ScrollLock ">
<KeyEvent keyCode="ScrollLock" />
</TapArea>
<TapArea xcenter="3.9" ycenter="9.5" isRectangular="true" width="1.9" height="1.1"
macro_name=" Pause ">
<KeyEvent keyCode="Pause" />
</TapArea>
<TapArea xcenter="2.0" ycenter="7.7" isRectangular="true" xmin="1.05" ymin="6.75" xmax="2.95" ymax="8.85"
macro_name=" Home ">
<KeyEvent keyCode="Home" />
</TapArea>
<TapArea xcenter="2.0" ycenter="5.8" isRectangular="true" xmin="1.05" ymin="4.1" xmax="2.95" ymax="6.75"
macro_name=" End ">
<KeyEvent keyCode="End" />
</TapArea>
<TapArea xcenter="0.1" ycenter="5.8" isRectangular="true" width="1.9" height="1.9"
macro_name=" Delete ">
<KeyEvent keyCode="Delete" />
</TapArea>
<TapArea xcenter="0.1" ycenter="7.7" isRectangular="true" width="1.9" height="1.9"
macro_name=" Insert ">
<KeyEvent keyCode="Insert" />
</TapArea>
<TapArea xcenter="3.9" ycenter="7.7" isRectangular="true" xmin="2.95" ymin="6.75" xmax="5.0" ymax="8.85"
macro_name=" PageUp ">
<KeyEvent keyCode="PageUp" />
</TapArea>
<TapArea xcenter="3.9" ycenter="5.8" isRectangular="true" xmin="2.95" ymin="4.1" xmax="5.0" ymax="6.75"
macro_name=" PageDown ">
<KeyEvent keyCode="PageDown" />
</TapArea>
<TapArea xcenter="0.0" ycenter="0.1" isRectangular="true" xmin="-1.1" ymin="-1.1" xmax="1.0" ymax="1.7"
macro_name=" Left ">
<KeyEvent keyCode="Left" />
</TapArea>
<TapArea xcenter="2.0" ycenter="2.0" isRectangular="true" xmin="1.0" ymin="1.0" xmax="3.0" ymax="3.75"
macro_name=" Up ">
<KeyEvent keyCode="Up" />
</TapArea>
<TapArea xcenter="2.0" ycenter="0.1" isRectangular="true" xmin="1.0" ymin="-1.3" xmax="3.0" ymax="1.0"
macro_name=" Down ">
<KeyEvent keyCode="Down" />
</TapArea>
<TapArea xcenter="4.0" ycenter="0.1" isRectangular="true" xmin="3.0" ymin="-1.1" xmax="5.00" ymax="1.7"
macro_name=" Right " >
<KeyEvent keyCode="Right" />
</TapArea>
<TapArea xcenter="-1.0" ycenter="2.5" isRectangular="true" xmin="-2.0" ymin="1.75" xmax="1.0" ymax="4.8"
macro_name=" InvisibleBackSpace " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="BackSpace" />
</TapArea>
<TapArea xcenter="4.0" ycenter="3.0" isRectangular="true" xmin="3.0" ymin="1.8" xmax="5.0" ymax="4.3"
macro_name=" InvisibleKey0 ">
</TapArea>
<TapArea xcenter="8.0" ycenter="9.5" isRectangular="true" width="1.9" height="1.1"
macro_name=" InvisibleKey1 ">
</TapArea>
<TapArea xcenter="9.9" ycenter="9.5" isRectangular="true" width="1.9" height="1.1"
macro_name=" InvisibleKey2 ">
</TapArea>
<TapArea xcenter="11.8" ycenter="9.5" isRectangular="true" width="1.9" height="1.1"
macro_name=" InvisibleKey3 ">
</TapArea>
<TapArea xcenter="13.7" ycenter="9.5" isRectangular="true" width="1.9" height="1.1"
macro_name=" InvisibleKey4 ">
</TapArea>
<TapArea xcenter="13.7" ycenter="7.7" isRectangular="true" width="1.9" height="1.9"
macro_name=" InvisibleKey5 ">
</TapArea>
<TapArea xcenter="13.7" ycenter="5.8" isRectangular="true" width="1.9" height="1.9"
macro_name=" InvisibleKey6 ">
</TapArea>
<TapArea xcenter="13.7" ycenter="3.9" isRectangular="true" width="1.9" height="1.9"
macro_name=" InvisibleKey7 ">
</TapArea>
<TapArea xcenter="13.7" ycenter="2.0" isRectangular="true" width="1.9" height="1.9"
macro_name=" InvisibleKey8 ">
</TapArea>
<TapArea xcenter="13.7" ycenter="0.1" isRectangular="true" width="1.9" height="1.9"
macro_name=" InvisibleKey9 ">
</TapArea>

<TapArea xcenter="6.1" ycenter="9.5" isRectangular="true" width="1.9" height="1.1"
macro_name=" NumLock ">
<KeyEvent keyCode="NumLock" />
</TapArea>
<TapArea xcenter="6.1" ycenter="7.7" isRectangular="true" width="1.9" height="1.9"
macro_name=" , " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="," />
</TapArea>
<TapArea xcenter="8.0" ycenter="7.7" isRectangular="true" width="1.9" height="1.9"
macro_name=" / " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad/" />
</TapArea>
<TapArea xcenter="9.9" ycenter="7.7" isRectangular="true" width="1.9" height="1.9"
macro_name=" * " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad*" />
</TapArea>

<TapArea xcenter="11.8" ycenter="7.7" isRectangular="true" width="1.9" height="1.9"
macro_name=" - " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad-" />
</TapArea>

<TapArea xcenter="11.8" ycenter="4.85" isRectangular="true" width="1.9" height="3.8"
macro_name=" + " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad+" />
</TapArea>
<TapArea xcenter="6.1" ycenter="2.0" isRectangular="true" width="1.9" height="1.9"
macro_name=" 1 " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad1" />
</TapArea>
<TapArea xcenter="8.0" ycenter="2.0" isRectangular="true" width="1.9" height="1.9"
macro_name=" 2 " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad2" />
</TapArea>
<TapArea xcenter="9.9" ycenter="2.0" isRectangular="true" width="1.9" height="1.9"
macro_name=" 3 " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad3" />
</TapArea>
<TapArea xcenter="6.1" ycenter="3.9" isRectangular="true" width="1.9" height="1.9"
macro_name=" 4 " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad4" />
</TapArea>
<TapArea xcenter="8.0" ycenter="3.9" isRectangular="true" width="1.9" height="1.9"
macro_name=" 5 " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad5" />
</TapArea>
<TapArea xcenter="9.9" ycenter="3.9" isRectangular="true" width="1.9" height="1.9"
macro_name=" 6" layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad6" />
</TapArea>
<TapArea xcenter="6.1" ycenter="5.8" isRectangular="true" width="1.9" height="1.9"
macro_name=" 7 " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad7" />
</TapArea>
<TapArea xcenter="8.0" ycenter="5.8" isRectangular="true" width="1.9" height="1.9"
macro_name=" 8 " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad8" />
</TapArea>
<TapArea xcenter="9.9" ycenter="5.8" isRectangular="true" width="1.9" height="1.9"
macro_name=" 9 " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad9" />
</TapArea>
<TapArea xcenter="7.05" ycenter="0.1" isRectangular="true" width="3.8" height="1.9"
macro_name=" 0 " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad0" />
</TapArea>
<TapArea xcenter="11.8" ycenter="0.95" isRectangular="true" width="1.9" height="3.8"
macro_name=" Enter "
layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="NumpadEnter" />
</TapArea>
<TapArea xcenter="9.9" ycenter="0.1" isRectangular="true" width="1.9" height="1.9"
macro_name=" . " layoutContext="NumLock ScrollLock">
<KeyEvent keyCode="Numpad." />
</TapArea>
<MacroLibrary>
<SpeedParamTemplate sensitivity="76.00" accelThresh="10.00" accelPower="0.10" macro_name="Mouse Pointing Speed" lib="user" user_selectable="false" />
<SpeedParamTemplate sensitivity="76.00" accelThresh="10.00" accelPower="0.10" macro_name="Mouse Dragging Speed" lib="user" user_selectable="false" />
<SpeedParamTemplate sensitivity="25.00" accelThresh="25.00" accelPower="0.00" macro_name="Scroll Speed" lib="user" user_selectable="false" />
</MacroLibrary>
<UserOptions driverContext=" mac qwerty" layoutContext=" numlock" toggle_numlock_internally="true" new_touch_threshold="0.18" tap_timeout_ms="512" typematic_hold_m
s="640">
<EnabledRighthandGestures list=" scroll_mouse fivefinger_mouse clipboard_op file_op window_op text_nav pengrip_op tap_range_chord weird_chords search_edit" />
<EnabledLefthandGestures list="" />
<EnabledBimanualGestures list="" />
</UserOptions>
</MTS_config>

So I load this file into the Multitouch, and then all of sudden, I see a new section that wasn't there before called Surface Keys. So this looks good... and when I click on Surface Keys, I get a key layout that looks a lot like the number pad. So I press transfer to device and then ... nothing. Something is apparently preventing individual key presses (taps I guess is what they are called) from being registered. Does anybody have any clue as to how to work around this?
advisor
Familiar
 
Posts: 10
Joined: 16 Oct 2005, 18:20

Postby ivanw » 16 Oct 2005, 23:44

I agree with all Rqyteqto said. I don't have an iGesture or a NumberPad, meaning that I can't experiment on how far one can cheat with customization.
The hardware signature sensed by the editor when it starts makes that you can't use it with these boards as you would with a TouchStream. This means that you have to tune some XML file.
This said, you can use any mean to generate a base working file. You can go this way: Open MyGesture Editor and change the initial detected device with the menu entry:
Device -> Offline -> Editing -> SOMEDEVICE (Demo). Then you have to understand how the editor exports and imports libraries and how customization files are structured. If you are a programmer, that's not a big deal, if you are not, it's a question of becoming one... that's not peace of cake - but some did just that :wink:
At this point, it's up to you, your knowledge, many experiments, much time, a lot of patience, good guesses ...and á bunch of this forum members, willing to get more from what these devices can provide.
The only thing I can think of in the cannot-be-done side is tactile-feedback we all miss so bad :evil:
User avatar
ivanw
Zealot
 
Posts: 390
Joined: 29 Jul 2005, 12:32
Location: Paris, France

making the taps "register"

Postby advisor » 16 Oct 2005, 23:59

Ivan,

I've seen some other posts where you say that you can turn an iGesture into a NumPad... I think that's the only piece of the puzzle that I'm missing... basically how to make the single taps "register." Can you give me any insight into how to accomplish this?
advisor
Familiar
 
Posts: 10
Joined: 16 Oct 2005, 18:20

Re: taps do not register on an igesture

Postby ivanw » 17 Oct 2005, 00:08

advisor wrote:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MTS_config>
<MTS_config MTS_config_version="1.60" min_firmware_version="1.46">
<RequireLib name="FW_main" />
<TapArea xcenter="0.1" ycenter="9.5" isRectangular="true" width="1.9" height="1.1"
macro_name=" PrintScreen ">
...
So I press transfer to device and then ... nothing. Something is apparently preventing individual key presses (taps I guess is what they are called) from being registered.

The <RequireLib name="FW_main" /> element sucks everything relevant to the true identity of your device from the C:\program files\FingerWorks\lib\FW_defaults.jar file.
I think that you should delete this entry and look what comes out...
User avatar
ivanw
Zealot
 
Posts: 390
Joined: 29 Jul 2005, 12:32
Location: Paris, France

Help...

Postby advisor » 17 Oct 2005, 00:29

I know... I'm dense... but I still don't get it. I removed the include line... and now I'm testing with a relatively trivial XML file... a single big button... but I still can't seem to "register" and taps...

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE MTS_config><MTS_config MTS_config_version="1.60" min_firmware_version="1.46"> <MacroLibrary> <SpeedParamTemplate sensitivity="76.00" accelThresh="10.00" accelPower="0.10" macro_name="Mouse Pointing Speed" lib="user" user_selectable="false" /> <SpeedParamTemplate sensitivity="76.00" accelThresh="10.00" accelPower="0.10" macro_name="Mouse Dragging Speed" lib="user" user_selectable="false" /> <SpeedParamTemplate sensitivity="25.00" accelThresh="25.00" accelPower="0.00" macro_name="Scroll Speed" lib="user" user_selectable="false" /> </MacroLibrary> <TapArea xcenter="8" ycenter="5.5" isRectangular="true" width="15" height="10" macro_name=" Up ">
<KeyEvent keyCode="Up" /> </TapArea>
<UserOptions driverContext=" mac qwerty" layoutContext=" numlock" toggle_numlock_internally="true" new_touch_threshold="0.18" tap_timeout_ms="512" typematic_hold_ms="640">
<EnabledRighthandGestures list=" scroll_mouse fivefinger_mouse clipboard_op file_op window_op text_nav pengrip_op tap_range_chord weird_chords search_edit" />
<EnabledLefthandGestures list="" />
<EnabledBimanualGestures list="" />
</UserOptions>
</MTS_config>

Thanks for your patience.
advisor
Familiar
 
Posts: 10
Joined: 16 Oct 2005, 18:20

that was unreadable...

Postby advisor » 17 Oct 2005, 00:32

forgot to unclick the disable HTML... apologies... let me try this again...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MTS_config>
<MTS_config MTS_config_version="1.60" min_firmware_version="1.46">
<MacroLibrary>
<SpeedParamTemplate sensitivity="76.00" accelThresh="10.00" accelPower="0.10" macro_name="Mouse Pointing Speed" lib="user" user_selectable="false" />
<SpeedParamTemplate sensitivity="76.00" accelThresh="10.00" accelPower="0.10" macro_name="Mouse Dragging Speed" lib="user" user_selectable="false" />
<SpeedParamTemplate sensitivity="25.00" accelThresh="25.00" accelPower="0.00" macro_name="Scroll Speed" lib="user" user_selectable="false" />
</MacroLibrary>
<TapArea xcenter="8" ycenter="5.5" isRectangular="true" width="15" height="10" macro_name=" Up ">
<KeyEvent keyCode="Up" /> </TapArea>
<UserOptions driverContext=" mac qwerty" layoutContext=" numlock" toggle_numlock_internally="true" new_touch_threshold="0.18" tap_timeout_ms="512" typematic_hold_ms="640">
<EnabledRighthandGestures list=" scroll_mouse fivefinger_mouse clipboard_op file_op window_op text_nav pengrip_op tap_range_chord weird_chords search_edit" />
<EnabledLefthandGestures list="" />
<EnabledBimanualGestures list="" />
</UserOptions>
</MTS_config>

That's a relatively trivial configuration... I'm trying to detect ANY key click / tap at all... and of course, it does not work. I must be missing something very simple. Thanks again.
advisor
Familiar
 
Posts: 10
Joined: 16 Oct 2005, 18:20

Postby Rqyteqto » 17 Oct 2005, 00:40

Hey ivanw -

I have two iGestures, I'd be willing to send you one to work with. The only conditions would be:
1 - that you treat it with some respect (ie - don't leave it in the cat's litter tray or laying about outdoors or perform bizarre experiments on it such as what sort of physical abuse it can withstand),
2 - if and when you are done with it you return it to me,
3 - you publish on this website whatever you learn or develop, or if this website dissappears, you make that information available to me so I can freely distribute it, with appropriate credit to yourself.

I understand that your work may indeed result in its demise, shit happens. But as long as you are sensible and reasonable, I don't think you'd bugger it up unnecessarily. So I simply trust you to do your best. If for some reason you felt the need to disect it, I'd like to be informed beforehand and be assured you have good belief it can be reassembled in working order or what you hope to learn is of great enough value to sacrifice it.

If that sounds OK with you, PM me and we can exchange addresses and such.
Invent the Future
Rqyteqto
Grizzled Veteran
 
Posts: 201
Joined: 13 Jun 2005, 01:40
Location: Kahalu'u, Oahu, Hawaii

Postby Rqyteqto » 17 Oct 2005, 00:46

I am also guessing that line is crucial, it shouldn't be eliminated but the libary may have to be modified.

OR

we discussed this before, the firmware was changed at some point (its in the literature somewhere, I forget where) and the iGestures lost their single contact tapping.

I have the old version, from before the change, as well as the new. But I haven't a clue what any of it means.
Invent the Future
Rqyteqto
Grizzled Veteran
 
Posts: 201
Joined: 13 Jun 2005, 01:40
Location: Kahalu'u, Oahu, Hawaii

Re: that was unreadable...

Postby ivanw » 17 Oct 2005, 00:50

advisor wrote:That's a relatively trivial configuration... I'm trying to detect ANY key click / tap at all... and of course, it does not work. I must be missing something very simple. Thanks again.

I don't think so. Anyway I am missing it too because I really don't know whether what you are trying can be done or not.
With the level of understanding we have, this calls for more experimentation on the identification process and device dependant segmentation.
User avatar
ivanw
Zealot
 
Posts: 390
Joined: 29 Jul 2005, 12:32
Location: Paris, France

can somebody try my XML customization on an "old"

Postby advisor » 17 Oct 2005, 00:57

I've put up a very simple customization above... one that turns the entire igesture into a single "Up" button (as in up arrow). Can somebody who has an "older" igesture (one that doesn't support single finger mousing) try it out? I am curious as to what the result is.

--SL
advisor
Familiar
 
Posts: 10
Joined: 16 Oct 2005, 18:20


Return to Typing and Layouts

Who is online

Users browsing this forum: No registered users and 1 guest

cron