Author Topic: Re-Create the DataHand - Thumb cluster under development. Project 75% done.  (Read 415145 times)

0 Members and 2 Guests are viewing this topic.

Offline sinusoid

  • Posts: 160
  • fd > ESC
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #500 on: Thu, 18 February 2016, 16:41:31 »
@Zekromtor, re: two mice at once, nipples
Lol.
AFAIR, Linux allows multiple cursors. That would be strange.
Gonna leave that for much later though.

@matt2, re: trackhand
YES, I know this! It's awesome. I was thinking about this, but still undecided - this area is needed for hand support, otherwise you're clawing into the device, keeping your fingers tensioned all the time.

I'll focus on modularity, not to exclude any possibilities, so we can check this later.

This project is like opening a can of ideas and possibilities :P


@test321, re:additional switches,
Hm, checked this... I thought it would be uncomfortable, but you're actually right - hand doesn't seem to require much support in that area. I'll try implementing that later.


@berserkfan, re: won't fit everyone's hands
Don't worry. I'm designing it to have a lot of adjustability.

@wolfv, re: someone can make...
Yeah, if it's successful, I'd expect a flood of these things from China :P



On a final note:
This thread is about re-creating the Datahand, to make it available again, and make it more accessible to everyone.
It's not about upgrading the hell out of it. There will be time for that later. For RERO, for community efforts, for hacks, $hits, giggles, and pink resin with glitter.
But now is about getting this thing back 'online'.

I'm trying to troubleshoot the most obvious drawbacks of the design, but at the same time - I'm wary of falling for the development hell trap. Feel free to slap me in the face with an eel if I wander off to one of those wild goose chases to add a minor feature.  :-X

I'll get back to the workbench now, and report back when it's populated with software, so I don't bump this thread without content, like promised earlier.

Offline matt2

  • Posts: 3
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #501 on: Thu, 18 February 2016, 18:14:34 »
@sinusoid  Great to hear.  I agree that making this technology available sooner than later is more helpful.  I do not want to distract you with distracting ideas, like adding stereo speakers in each hand unit to play buckling spring key-tones.  :p

Offline Zekromtor

  • Posts: 241
    • My Setup
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #502 on: Fri, 19 February 2016, 13:07:11 »
@Zekromtor, re: two mice at once, nipples
Lol.
AFAIR, Linux allows multiple cursors. That would be strange.
Gonna leave that for much later though.

I thought you were implying that you the possibility of two mice, both controlling the same cursor, but that one would be high CPI and the other would be low, and their combined motion would affect the cursor. It's nuts, but I could see someone getting proficient with it.

Offline Phenix

  • Posts: 591
  • Location: Germany
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #503 on: Sat, 20 February 2016, 08:13:41 »
why not just count them as 2 mice controlling same cursor but you can set up the dpi?
Or is that that hard?
Winter is coming.

Offline sinusoid

  • Posts: 160
  • fd > ESC
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #504 on: Sat, 20 February 2016, 15:32:12 »
Guys, could someone take a look at this, and tell me if I'm doing it right?
(no need to tell me its ugly, I know that :P also, noob alert.)

This is my first KiCad thing ever, done with Windsor Schmidt's awesome tutorial.

Basically, a breakout board for one of the shift registers.

What it's supposed to do is:
- gather all the parallel inputs to one side
- gather all other inputs and outputs to the other, including GND and Vcc
- get 100nF cap on the VCC line to smooth out the current
- get 10K ohm pulldown resistor on each of the switch lines

The chip being used is SN54HC165 from Texas Instruments in a plastic small outline package.

128905-0






@matt2

Don't forget the lasers. There's got to be lasers. And UV backlight.

@Zekromtor
Yeah, I know, but it was sufficiently ambiguous for me that I remembered you can have several cursors in Linux. At least some time in the past you could.
Idk what multiple cursors could be used for.  Something, probably.

@Phenix
Naah, not hard. Theoretically. You can marge the two signals in the mouse controller, so all that reaches the computer is just the cursor movement data that is a function of both inputs.
« Last Edit: Sat, 20 February 2016, 15:46:28 by sinusoid »

Offline Terex

  • Posts: 7
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #505 on: Sat, 20 February 2016, 17:25:45 »
@sinusoid

The capacitor acts as a resistor with very high resistance except for the moment where it is switched on.
If you want to smooth the current, you need to put it between the vcc-line and ground. This setup would cut off the vcc a few micro seconds after the power gets on.

edit: here an article about capacitors in direct current circuits
http://farside.ph.utexas.edu/teaching/302l/lectures/node60.html
« Last Edit: Sat, 20 February 2016, 19:15:53 by Terex »

Offline sinusoid

  • Posts: 160
  • fd > ESC
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #506 on: Sat, 20 February 2016, 18:54:08 »
THANK YOU!

I had a lot of problems with understanding how that works!
I think I get it now: the cap will charge up when Vcc is pulled high, thereby insulating Vcc from Gnd.
Whenever voltage in Vcc drops, the cap will bleed some of its charge to compensate!

So f***ing simple... :( You just saved me several hours of Sunday.

I'll update the schema, design the PCB and etch it (if nothing breaks!).

Offline Terex

  • Posts: 7
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #507 on: Sat, 20 February 2016, 19:04:08 »
@sinusoid

You are welcome. And your interpretation is correct. Awesome work with the design by the way. I hope to get to print it myself sometime :)

http://www.resistorguide.com/pull-up-resistor_pull-down-resistor/

This guide advices to start with smaller input resistors. About 4,7 K but that will probably be a minor problem.
I calculated the input impedance of the device to be around 6MOhm so the 10K should work.

Btw. Do you still need to understand the decoupling?  It would be some work to figure the exact behaviour out since my electronics education  was a few years ago. But I could write a small course, I assume.

Btw2. What is the type of microswitch you use?  I read about some of them an they either don't announce the number of possible operations per minute or get very low values 30-120ish. 0,5-2 operations per key and second might prove problematic wenn trying to ramp up wpm.
« Last Edit: Sun, 21 February 2016, 00:51:07 by Terex »

Offline vvp

  • Posts: 886
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #508 on: Sun, 21 February 2016, 03:54:51 »
It may be a good idea to connect SER to either Vcc or GND to ease firmware debugging (so that you do not have random values in the lower bits of the register which could spill to the output if you cycle clock too many times).
You can replace all the resistors with one part (bussed resistor network). Though it may end up slightly more expensive (but less to solder). I attached an example schematic for using shift registers for both the driving and scanning.

Offline sinusoid

  • Posts: 160
  • fd > ESC
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #509 on: Sun, 21 February 2016, 17:25:04 »
@Terex,
I think I get it now. The hardest thing is learning about the solution when you don't have the tags, the keywords... That's how I went from matrix, to i2c, to shift registers ( as suggested here by senso)
I'll dig into calculations later, when I have this thing alive. This is a totally new ground for me, and I'm having a lot of fun :D
re:switches, I'm using the cheapest ones for prototyping :) You can see the photo a bit earlier in the thread. They are all standard, generic and of the same size, independent of the manufacturer.
If it's gonna work with the cheap ones, it's gonna work with the expensive ones. I'll be testing switch types later, choosing for feel and for electronic properties. Good case to learn how to work with an oscilloscope. 
I'll publish the 3d files once I test it and get the obvious stuff out of the way. I'm focused on deploying this now, so i can start using it as my main board.

@vvp,
I added a pin to serial-in, so I can pull it up or down for debug.
Thanks for the bussed resistor network! It's much better because it has a smaller outline than individual resistors. I have to see what packages this is available in, maybe try to match it to the SO-16 of the register... these could fit inside a single switch!



OK, I etched it today, but failed. Here's the story:

I made the schema into a dual-sided PCB. I could have made it single-layered, and just solder in pass-over wires, but meh, why make it too easy... :P
Here's how it looks like:
129059-0
The front

129061-1
The back

KiCad is totally awesome. By the end of it I could do most of the things with keyboard shortcuts. I spent around 1.5 hours trying to shrinkify the design, so it wouldn't look all that sloppy. Biggest issue I had was that it sometimes wouldn't register DEL clicks on routes (was using latest stable version), and I had to hunt-peck them with the cursor to get them selected.
Predicting the routes is fun, but HAAARD, and time consuming, especially to get the spacing and angles right. Wish it had some sort of follow function, and better re-routing tools. Or maybe it does, but I don't know about them yet.
Done on a .25 mil grid.

I spend the rest of the day toner-transferring it, and that's how it came out:
129063-2
I'm very happy with the result. I washed the PCB with a detergent, sanded it with 400 grade paper, washed it with water, and removed any residue with isopropanol.
Unfortunately, I was sloppy, and didn't match the halves properly:
129065-3
As you can see by the drill holes, they have around a millimeter offset.
I drilled all of them anyway - free exp grinding, wohoo!  ;D I can't get a nice surface of the drill holes on the other side of the PCB, I'll have to do something about it - place a piece of wood underneath or sand it post drilling.
Next time I'll transfer one side, drill the holes, and match the other to the drill holes.
(also use smaller drill for vias, but I didn't really care here, knowing it was spoiled anyway).

Offline LuX

  • Posts: 132
  • Location: Finland
  • 🖲️ 🖲️ 🖲️ 🖲️ 🖲️ 🖲️ 🖲️
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #510 on: Mon, 22 February 2016, 01:42:46 »
This entire topic is awesome! It got me a little excited about the DataHand. Enough that I started to design my own switch system. Originally it was supposed to work using magnets and a hall effect sensor or magnet switch, but it always turned out a little too complicated. So, reading through the topic again, I saw someone compare the DataHand to be like a keyboard with D-pads under each finger, and it got me thinking.... Yes, why not?

After researching about multi-direction tact switches (or joystick/menu switches) I figured that replacing the entire mechanical part with a single switch might just about be possible.
My favorite switch ended up being the Alps RKJXS switch. It's 8+1 directions (4+1 could do), but it stood out from the others with the highest durability and lowest actuation force. At 500,000 cycles per direction it's not quite as durable as an MX switch, and at 160gF on the down stroke, it's a little too heavy. However I'm sure there still is a better switch out there. It's a little hard to find the perfect switch when a lot of switches online don't come with a datasheet.

A quick mock-up of how the switch might look like, and reference of the switch:
More

I like how the switch looks like a futuristic landmine. So what do you guys think? And don't get me wrong, I know it's not quite the same as the DodoHand or sinusoids build, and I'm not trying to deviate them, I'm just curious what you think of the idea...
Some pros I came up with:
- Cheap; 10 switches cost around 6.5-10e, much less in bulk.
- Easy to make, and again leads to being cheap, since it requires minimal material
- Easy to fix. Since the keycaps are solid, they are durable, and new switches are readily available and easy to replace.

Cons:
- Not sure by how much, but probably not as comfortable to use as the other proper replicas
- Also worried about the accuracy of each stroke, especially the center button.
- Switches are far to heavy on the down stokes. Tilting is less of an issue as the cap provides enough leveridge to make eaven heavy ones light
- Could be a little more durable, but 500,000 cycles is still quite impressive for tact switches

Offline Terex

  • Posts: 7
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #511 on: Mon, 22 February 2016, 01:50:55 »
@sinusoid
The Layout looks nice and clean.

Did you consider rounded edges? Like on Page 15 of the datasheet: http://www.ti.com/lit/ds/symlink/sn54hc165.pdf

I don't know how high the clock frequency of your chip is, perhaps you could run into problems with the sharp ones.

re. switches
I had the fear, that there ARE no expensive switches with the same form-factor and better properties in this aspect. About 10,3 *6*6  if i the relations don't fool me. All I've seen in this size was 30ops electrical and 120ops mechanical. The only faster one was also bigger. So I assumed that it is limited by the design. Do you know faster ones in this size?

@Lux
The Problem when using leverage is, that it increases the length of the keystroke. Nice Idea if you find a way to design around the shortcommings. The precision is no problem in my oppinion but the activation force which could be quite uncompfortable for keyboard use. They are probably designed to be activated by the thumb.
« Last Edit: Mon, 22 February 2016, 02:06:24 by Terex »

Offline vvp

  • Posts: 886
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #512 on: Mon, 22 February 2016, 02:46:42 »
I added a pin to serial-in, so I can pull it up or down for debug.
You can drop the pin and leave at GND or Vcc all the time. (That is if you do not want for debugging to be able to define what values should be in those low bits.) It better even from the power consumption point of view. It is negligibly lower when input pit is not floating.

Offline sinusoid

  • Posts: 160
  • fd > ESC
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #513 on: Mon, 22 February 2016, 14:13:57 »
@LuX
Wait a sec, were you the guy that made a blog post about this some time ago, showing some drawings and 3d prints?
I remember someone experimenting with hall effect sensors and the datahand...

Btw, here's the whole line of Alps directional switches with pics:
http://www.mouser.co.uk/catalog/english/101/gbp/1611.pdf

The ones you're suggesting are actually quite cool, because they're flat, so you can arrange them in two layers, effectively - reducing the distance between the fingers. I wonder how would an 8-way switch work...

re: "I know it's not quite the same as the DodoHand or sinusoids build, and I'm not trying to deviate them"

Bro, I'll tell you this: DEVIATE THE HELL OUT OF US ALL.
Like, seriously. Have a go at destroying the Datahand's paradigm. Make it different, make it better, stand on the shoulders of those that were before you, and never say you're sorry!
129151-0
(src: Moebius - Deviation)

If the switches don't fit your parameters, I'd suggest to get 6. Use 5 to make a mockup and test 8 axis movement + force, disassemble the remaining one to see how it's made, and if it can be re-created using different parts.
And if the switches use up fast, just make them easily replacable :D


@Terex,

Argh, yes, I've seen that datasheet :/ Lack of experience, I thought that the little curving KiCad maked is enough... but now I examined some schematics, and people indeed use 45 degree turns on components designed in KiCad.
I can't find a way to make them curved, outside of approximating the curves manually. I'll probably go over the design and do that.

re:switches, these are approx. 12.6x5.5x7 (Z dimension without leaf and legs). Here is one of the higher-end ones: http://www.tme.eu/en/details/d2f211/push-on-blades-microswitches/omron/ It's the same kind of switch that's used in mice.

@vvp
OK, I'll do that. Left the pin, becasue for debug it's better when I can change the variable on the fly, it'll show up in the log immediately. 

Offline Terex

  • Posts: 7
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #514 on: Mon, 22 February 2016, 14:26:56 »
@sinusoid
The datasheet shows exactly what i mean.

i cite:

Operating frequency                  Mechanical                       200 operations per minute (pin plunger actuator type)
Electrical                           30 operations per minute (pin plunger actuator type)

Offline sinusoid

  • Posts: 160
  • fd > ESC
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #515 on: Mon, 22 February 2016, 15:36:42 »
Empirical evidence shows otherwise. They are used in mice, easily registering multiple sub-second clicks - considering their travel and biomechanics involved - much faster than any of us will probably use on a keyboard. 

This number may be for max parameters, which are 3A, 125VAC / 2A, 30VDC. It's really ambiguous without context. What is actually measured by that number? What were the test constraints?

Also, this is exactly the reason I want to get this operational ASAP. To see if it works :) Because you never know what will go wrong until you test the damn thing in the wild!

Edit:
found delicious insides of various types:
http://imgur.com/a/yP0Nf
sauce: http://www.overclock.net/t/1394542/omron-d2fc-f-7n-micro-switch-reference-image
« Last Edit: Mon, 22 February 2016, 15:41:20 by sinusoid »

Offline Terex

  • Posts: 7
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #516 on: Mon, 22 February 2016, 16:32:42 »
@sinusoid

I hope you are right :)

Offline LuX

  • Posts: 132
  • Location: Finland
  • 🖲️ 🖲️ 🖲️ 🖲️ 🖲️ 🖲️ 🖲️
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #517 on: Tue, 23 February 2016, 01:37:37 »
@Lux
The Problem when using leverage is, that it increases the length of the keystroke. Nice Idea if you find a way to design around the shortcommings. The precision is no problem in my oppinion but the activation force which could be quite uncompfortable for keyboard use. They are probably designed to be activated by the thumb.
Hmm, I did some calculating and measured that the cap would displace by only >1.5mm. The stem is unnecessarily long, so that could be made even shorter and reduce the travel. Either way, not too bad.

@sinusoid:
I think you have me mistaken with someone else... But I'm glad you like the idea. I went through all mousers and digikeys offerings and came to the conclusion that this one would be the best in terms of actuation force and durability, and yet it still isn't exactly great. 8 directions is probably not needed, but it might turn out to be convenient. I also agree that size is a huge benefit with these switches. At about 12x12mm they take the surface area of Cherry MX switches, meaning that they can be placed quite close to one another without having to arrange them in layers, unless you really want them close.

Here's an exploded images of a similar switch:
More
They are generally built using multiple of those metal popping disks that other single-button tact switches use. On top of them is a plastic rocking plate with stem. Theoretically it should be possible to change the disks for a lighter ones. There are a number of online stores selling just the disks. Or you could try to bend the existing ones somehow to reduce force. Optionally, if enough people were interested, it should be possible to have some Chinese company make custom ones for relatively cheap, but then durability and quality might be questionable.

I just about might be up for the task, for science! It's either a hit or miss. Either way not a huge investment. Mechanically it shouldn't be too different to use a tilting switch than to use multiple small buttons since you're gonna be pressing a single button at a time anyways. Lastly there's the option to build an arcade style joystick system with light micro switches and replace the joystick with a finger operated piece. Though, that would then end up being a much larger switch and lose the benefit of being small.
More

Offline Terex

  • Posts: 7
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #518 on: Tue, 23 February 2016, 11:20:59 »
@Lux

My point was, that you want to use leverage to decrease the necessary force. A decrease in force by leverage implies an increase in way. If you want to decrease the force from 160gF to 40gF you need to increase the travel 4 fold. So your 1,5mm get 6mm. Perhaps you could mitigate that, if you force the switch into an "almost pressed" state by design or change the button.
But the principle itself  is imposed on us by physics.

Offline LuX

  • Posts: 132
  • Location: Finland
  • 🖲️ 🖲️ 🖲️ 🖲️ 🖲️ 🖲️ 🖲️
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #519 on: Tue, 23 February 2016, 12:15:16 »
Yeah, I know. So I did the math properly now: The cap is 8mm tall and 15mm wide. The rim is 2mm thick, making the length from the bottom to the rim where your finger would be pushing: sqrt(8^2 + 5.5^2) ~ 10mm. According to the datasheet the switch tilts 7°, so we can calculate that the switch will displace by 1.2mm give or take. The tilt force on the other hand is 0.8N according to the datasheet, measured probably from the top of the 2mm stem, therefor at 10mm it should be 0.16N, or 16.31gF.

The biggest problem still is the center button which in most cases is a lot heavier ( apparently 2.5N in this switch ). Pre-bending it as you suggest might do the trick.
I've also dreamt of a completely custom switch. Imagine 5 cherry-like slim mini-switches arranged in a "plus" shape, and a stem-inserted rocking platform on top kind of switch.
« Last Edit: Tue, 23 February 2016, 12:21:47 by LuX »

Offline Terex

  • Posts: 7
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #520 on: Tue, 23 February 2016, 12:48:42 »
@Lux

if you have an 8+1-way switch, you could also try to redirect the force of the downwards-press to one of the tilts. Or construct a paralellogramm like lever-system.

Offline wolfv

  • Posts: 269
Re: Re-Create the DataHand - Thumb cluster under development. Project 75% done.
« Reply #521 on: Thu, 25 February 2016, 03:29:24 »
Thank you for the PCBs OldDataHands.
The DodoHand firmware runs on the DodoHand PCB.

I have tested the following DataHand features:
 * QWERTY layout
 * Layer keys
 * Sticky Mouse Buttons

Features to be added:
 * Moving the Mouse Pointer fast (currently only slow and quick work)
 * Protected Mode
 * NUM LOCK
 * Double Strike
 * LEDs indicate state of NumLck, CapLck, Mouse, NAS, Normal, 10-key

The keybrd library repository is at https://github.com/wolfv6/keybrd   
The DodoHand sketch compiles on Arduino and can be viewed at https://github.com/wolfv6/keybrd/tree/master/sketches/DH/DH_2565
The layer scheme code is in https://github.com/wolfv6/keybrd/tree/master/keybrd_libraries/keybrd_DH_layers
Its all open source.
« Last Edit: Thu, 25 February 2016, 03:58:28 by wolfv »

Offline wolfv

  • Posts: 269
DataHand indicator-light question
« Reply #522 on: Fri, 04 March 2016, 23:24:09 »
I am starting to work on the DodoHand LED indicator lights.
They will be added to the breadboard keyboard to help debug the DodoHand firmware.

The DataHand guide does not have a complete description of the indicator lights.
What are the indicator lights on the left-hand unit?  Caps Lock?  Num Lock?

Is this correct for right-hand unit LED indicator lights?:
NASorange (I will use blue)
Normalgreen
MFyellow
10-Keyred

Thank you.

Offline arisian

  • Posts: 13
Re: DataHand indicator-light question
« Reply #523 on: Sat, 05 March 2016, 19:38:39 »

The DataHand guide does not have a complete description of the indicator lights.
What are the indicator lights on the left-hand unit?  Caps Lock?  Num Lock?

You've got the right-hand lights correct.  The left-hand unit has four lights, each on the "guide" for the specified key:

CapsLock: green
MouseModeOn (D+mfMode): yellow  (this is on if you're in "mouse" mode, and off if you're in "arrow key" mode)
NumLock (B+mfMode): yellow
ScrollLock ([+mfMode): yellow

Some of the lights are also used in other circumstances; they blink if you switch between "left-side" and "right-side" modes (controls whether the computer sees LCtrl or RCtrl, and a few other similar things).

Obviously, we don't need to exactly replicate the original; different placement and/or color for LEDs isn't going to impact functionality.  And ultimately, it might be nice to throw in a couple of extra LEDs for people who want to add extra layers.
« Last Edit: Sat, 05 March 2016, 19:40:49 by arisian »

Offline wolfv

  • Posts: 269
Thanks arisian :thumb:
The left LEDs are working.

Offline Input Nirvana

  • Master of the Calculated Risk
  • Posts: 2316
  • Location: Somewhere in the San Francisco Bay area/Best Coast
  • If I tell ya, I'll hafta kill ya
Glad to see the quality progress and the increased interest.


Just wanted to chime in on this, I'm thinking it's close to a point in time where social media could come into play and be of assistance.
Kinesis Advantage cut into 2 halves | RollerMouse Free 2 | Apple Magic Trackpad | Colemak
Evil Screaming Flying Door Monkeys From Hell                     Proudly GeekWhacking since 2009
Things change, things stay the same                                        Thanks much, Smallfry  
I AM THE REAPER . . . BECAUSE I KILL IT
~retired from forum activities 2015~

Offline test321

  • Posts: 15
bump

Offline wolfv

  • Posts: 269
The DodoHand firmware is almost done.
The LEDs, Protected Mode, and double strike PRINT features are working.
I am now reading about "L/R Modf" in the DataHand User Guide, but need some clarifications because I don't have access to a DataHand.

According to page 40 of the DataHand User Guide, the "L/R Modf" feature is protected by the MF key.
"L/R Modf" toggles keys between these 12 left-right scancodes:
Code: [Select]
MODIFIERKEY_LEFT_ALT    MODIFIERKEY_RIGHT_ALT
MODIFIERKEY_LEFT_CTRL   MODIFIERKEY_RIGHT_CTRL
MODIFIERKEY_LEFT_SHIFT  MODIFIERKEY_RIGHT_SHIFT
KEY_DELETE              KEYPAD_PERIOD (KEY_NUM_LOCK off)

KEY_INSERT              KEYPAD_0 (KEY_NUM_LOCK off)
KEY_PAGE_UP             KEYPAD_9 (KEY_NUM_LOCK off)
KEY_PAGE_DOWN           KEYPAD_3 (KEY_NUM_LOCK off)
KEY_END                 KEYPAD_1 (KEY_NUM_LOCK off)

KEY_EQUAL + SHIFT       KEYPAD_PLUS
KEY_8 + SHIFT           KEYPAD_ASTERIX
KEY_MINUS               KEYPAD_MINUS
KEY_SLASH               KEYPAD_SLASH
So far so good.

The DataHand User Guide is less clear on what happens when the aforementioned 12 left-right keys are double clicked.
Page 42 of the User Guide says,
Quote
    See "Switching Left and Right Function for Duplicate Keys: The L/R Modf Key" for information on temporarily switching individual key functions.
which on page 40 says,
Quote
    Alternatively the ALT and CNTR keys can toggle to RT by double clicking either key.
Page 46 says,
Quote
    L/R Modf will switch the scan code output of the ALT and CTL keys.
    Alternatively a double strike of the either key will temporarily change to the alternate scan code output.
What does "RT" mean?
What does the User Guide mean by "temporarily"?
When ALT and CTL are double clicked, do all 12 left-right keys toggle L/R, or just the ALT and CTL keys?
Are ALT and CTL the only 2 keys that change L/R on double strike, or do all 12 left-right keys change L/R on double strike?

I appreciate it if someone with a DataHand could clarify the DataHand behavior.
« Last Edit: Tue, 15 March 2016, 15:56:33 by wolfv »

Offline arisian

  • Posts: 13
Note that this is all on a Datahand Personal A80000000; I expect the behaviour is the same on other models, but I don't have anything else to test.  I'll post a description of the behaviour I get; let me know if it's still unclear.

"Protected by the MF key" means that you need to *hold* the MF key while striking the [A] key (as opposed to simply striking the key while MF mode is active). The NAS/10-key mode switch is similar, in that you have to hold the NAS toggle key down (fully down, in the NAS-LOCK position) while striking the []] or [\] keys to switch between standard NAS mode and 10-key mode.

As for the "double click," it's something that only happens for ALT and CTRL, and honestly I find it quite annoying and wish I could turn it off.  Basically, if you strike CTRL, you normally get CTRL-L (assuming you're in "left" mode).  However, if you then strike CTRL again without striking any other keys in between, you will get CTRL-R sent instead.  If you hit CTRL a bunch of times in succession, you get the L and R versions sent in alternation.  In the current datahand firmware, there doesn't seem to be a time threshold; even if you wait 30 seconds between key strikes, you'll still get the other version.  ALT behaves the same way.

The rest of the keys do not behave this way (including SHIFT, oddly enough); the only way to get the alternate version of them is to use the global L/R mode toggle.  Pressing CTRL only changes things if the next strike is another CTRL, and otherwise has no effect on the next stroke.  Likewise, ALT only changes things if the next strike is another ALT.  ALT and CTRL do not interact with each other, or with any other key, to change the L/R mode of the output (e.g. pressing CTRL and ALT in alternation will give CTRL-L and ALT-L).

And I'll reiterate that it's honestly quite annoying under some circumstances.  For example, if I'm setting up a custom keymap in some program, and I want to map some command to the CTRL key, if the program keeps track of L-CTRL and R-CTRL separately, I can't rely on it to always work (e.g. if I forget that I haven't used any other keys since the last time I used CTRL, it won't trigger the command).  While your impulse to accurately replicate Datahand functionality is admirable, in this instance I'm not sure it's worth it (at least for me personally; others may disagree if they actually use this "feature").  The L/R mode toggle is important and useful, but the CTRL/ALT double clicking I just find annoying.

Of course, once I actually get my hands on a dodohand, I'll probably write my own custom mappings anyway, so do whatever makes you happy  ;D

Offline wolfv

  • Posts: 269
Thanks for the detailed description arisian.  That clears up a lot.
There are still some points I am unsure of.  Are these statements correct?:

Quote
If you strike CTRL-L a second time, without striking any other keys in between, you will get CTRL-R sent instead.
When the CTRL-R is released, the CTRL key automatically reverts back CTRL-L.

If you strike CTRL-R a second time, without striking any other keys in between, you will get CTRL-L sent instead.
When the CTRL-L is released, the CTRL key automatically reverts back CTRL-R?

Quote
Global "L/R Modf" changes all 12 left-right keys, including the CTRL and ALT?

I expect the DodoHand firmware to be heavily customized.
The firmware is object oriented and very modular; so customizations are easy.
DataHand functionality is faithfully replicated to give the DodoHand community a common baseline to work from.

Offline LuX

  • Posts: 132
  • Location: Finland
  • 🖲️ 🖲️ 🖲️ 🖲️ 🖲️ 🖲️ 🖲️
The switches I ordered finally came. It's a shame they took so long, because I had already given up on the project. Still, they came so I decided to try them out.
Straight away, I could feel how bad the quality was. I'm not sure if these are fake or real ones. The auction promised real Alps switches. Half of the switches didn't work properly, the other half worked inconsistently, one of the switches rattled and didn't work at all, and only one switch felt consistently good in all directions. After a little closer inspection, the one that felt good had a faint "J" stamped on the top metal part and looked a little darker as well. I assume it's the only legit switch of the bunch.

I grabbed thin tweezers and opened the rattling one. The red arrows point out the tabs that need to be bent out, tweezers will make it easy, but you can use your fingernail as well.
On the bottom left you have the "J" hi-lighted, it appears the small white circle has a small "V" on it as well. The top left switch works, but feels very inconsistent and misses both the J and V.
More
131309-0


A better shot from the bottom. The red arrows point to the two diagonal tabs I didn't realize need to be bent out of the way as well.
More
131311-1


Top left image shows the switch after the top cover has been lifted. It didn't look quite as what I expected. At this point I was a little puzzled how the switch works. It didn't seem there was anything to push to begin with. Looks interesting though.
More
131313-2


A better look at the top cover. It seems to come apart into two pieces.
More
131315-3


I decided to open a couple more. First of all, a switch that worked inconsistently. The internals look identical, however it had a metal tact dome inside. I was still puzzled how the single button should function as 9 buttons. I decided to open the one and only working switch to see if it was any different, but to my surprise it was again identical. It appears that pushing the switch sideways makes contact at the top of the switch cover, and closes the circuit. The tabs act as the individual buttons contacts. I'm not sure what made the "J" one so much better than the rest.
More
131317-4


Putting the switches back together isn't too hard, but you really need pliers to properly bend the top covers back, or they become much worse.

I bought some tiny little tact switches as well, as I had come up with an even better switch mechanism that would still be quite simple.
The seller doesn't seem to be that careful with his orders as a couple of the switches weren't the right type... Oh well.
More
131319-5
More
131321-6
More
131323-7
More
131325-8
Basically you have small levers in a housing that can be pushed or tilted. As they bend, the "leg" presses down on the tact switches arranged beneath. Missing in the picture is the bottom spacer that keeps the legs in place and has an opening for the switches. Also missing are holes to sandwich the hole system together.
If I ever get around 3D printing, I might try the switches out.

Over all, those Alps are terrible. Even the one that worked, while it felt nice, wouldn't be that awesome.

Offline arisian

  • Posts: 13
Thanks for the detailed description arisian.  That clears up a lot.
There are still some points I am unsure of.  Are these statements correct?:

Quote
If you strike CTRL-L a second time, without striking any other keys in between, you will get CTRL-R sent instead.
When the CTRL-R is released, the CTRL key automatically reverts back CTRL-L.

If you strike CTRL-R a second time, without striking any other keys in between, you will get CTRL-L sent instead.
When the CTRL-L is released, the CTRL key automatically reverts back CTRL-R?

This is correct, with the clarifying note (for those not familiar with the original datahand) that there's actually only one physical switch marked CTRL; "strike Ctrl-R" means strike the Ctrl key when in "R" mode.

Quote
Quote
Global "L/R Modf" changes all 12 left-right keys, including the CTRL and ALT?

This is also correct.  I'll also note that the "L/R Modf" is a persistent mode change; e.g. changing between NAS/Mouse/Normal modes does not change the "L/R Modf" state.  Once you're in "R" mode, you get the "R" versions of all 12 relevant keys persistently, until you hit the "L/F Mode switch" again (with the above noted exceptions for Ctrl/Alt).  The NAS/10-Key mode works in the same way (persistent until explicitly switched).

Quote

I expect the DodoHand firmware to be heavily customized.
The firmware is object oriented and very modular; so customizations are easy.
DataHand functionality is faithfully replicated to give the DodoHand community a common baseline to work from.

Oh, I fully agree, having a faithful replica is the right place to start; there will be plenty of time to get fancy later.  Honestly, I'd probably customize it even if it wasn't easy, but it's nice to hear that it won't be too painful :)

Offline test321

  • Posts: 15
@sinusoid

its been almost a month since your last post!

Offline sinusoid

  • Posts: 160
  • fd > ESC
@test321


Yep. I need to finish a project at work that swallows up most of my time.

There aren't many updates photo-wise, but I still managed to make a few things in the mean time.

I etched and soldered a PCB with a shift reg on it, schematic is in the PCB thread. Will post pics later.

Also, it turned out that I can't (rly?) make Arduino Mega act as a HID using its integrated USB port, I need a shield for that. Ended up buying an 32u4 based arduino that can act as a HID.

Later I realized I could just communicate keypresses from the Mega to a Python script via pyserial and generate stuff from there, but that would have been a whole new level of fugly.

Right now I have the ardu running as a serial keyboard without issues, this was kind of a dumb job, as the Arduino software has libraries and sketches for that, so it essentially ran OOTB. I'll have to write something to handle the shift registers, wire up the keyboard, map keys to symbols, and it should be ready. But that will happen after I'm done with current work, which may take some 3 weeks more.

Offline wolfv

  • Posts: 269
Thanks again arisian.  The double-strike L/R Ctrl and Alt keys are working nicely.

Now to implement the L/R Modf LED indicator lights.  Page 40 of the DataHand User Guide says:
Quote
To change the L/R Modf, hold up the FUNC Mode key and at same time press the L/R Modf (left little finger, well key...light on the right hand will flash to verify entry into right side).
Which light flashes and what color is it?
Is there an indicator light for left the side?

Also some questions about NumLock.
Page 29 of DataHand User Guide says that NAS (both 10-Key-On and 10-Key-Off) send Alpha-number scancodes (KEY_).
When NUM_LOCK is on, these number keys will send the 10-Key pad scancodes (KEYPAD_).

Does DataHand's NUM_LOCK only effect number keys 0-9, or all these keys?:
Code: [Select]
+ - * / . Enter 00 0 1 2 3 4 5 6 7 8 9, arrow keys (on 10-Key-On left-index finger)
For those of you wondering how to tell the difference between identical looking characters, keycodes can be read using command 'xev' in the Linux terminal.
Command 'xev' will open a window and print contents of keyboard events.
« Last Edit: Thu, 24 March 2016, 00:32:06 by wolfv »

Offline test321

  • Posts: 15
@test321


Yep. I need to finish a project at work that swallows up most of my time.

There aren't many updates photo-wise, but I still managed to make a few things in the mean time.

I etched and soldered a PCB with a shift reg on it, schematic is in the PCB thread. Will post pics later.

Also, it turned out that I can't (rly?) make Arduino Mega act as a HID using its integrated USB port, I need a shield for that. Ended up buying an 32u4 based arduino that can act as a HID.

Later I realized I could just communicate keypresses from the Mega to a Python script via pyserial and generate stuff from there, but that would have been a whole new level of fugly.

Right now I have the ardu running as a serial keyboard without issues, this was kind of a dumb job, as the Arduino software has libraries and sketches for that, so it essentially ran OOTB. I'll have to write something to handle the shift registers, wire up the keyboard, map keys to symbols, and it should be ready. But that will happen after I'm done with current work, which may take some 3 weeks more.

im glad to hear you're still working on this project, but how long will it take to move it from prototype phase (once its completed) + crowdfunding + searching for manufacturer +  final shipping time? like at least a year?

Offline sinusoid

  • Posts: 160
  • fd > ESC
im glad to hear you're still working on this project, but how long will it take to move it from prototype phase (once its completed) + crowdfunding + searching for manufacturer +  final shipping time? like at least a year?

Mmmkay, let's get a few things straight.

1. Crowdfunding.
No. I don't spend other people's money. I don't loan stuff. I go to work, make money, and use it for my own projects.

2. Searching for manufacturer.
No. I plan my own manufacturing processes. Whatever I can't make with machines I have access to, I push to local small companies.

3. Shipping time.
If I decide to sell stuff, I will have it made in advance.

4. How Long.
As long as necessary. Lurk here, check updates, if you think I'm doing it wrong/entering development hell/ whatever - tell me.
If you're getting tired of waiting, just do it yourself.

5. When will the files be released
When China freezes over.
OK, seriously now:
The problem with releasing hardware files is that China startups can take over very rapidly. I don't mind that, as long as they make their own R&D instead of ripping off someone else's efforts (vide: Arduino, Ultimaker, Makerbot, and basically every other mildly successful OSHW project).
I don't know what to do with this yet.

6. Will you sell this
I would totally love to do that, but I don't want to think about this during the dev process. It would be nice, I could get some money for the dev time I pushed into this, focus on this more, get more tools, experiment more, make variants...

7. Startups?

°º¤ø,¸¸,ø¤º°GTFO°º¤ø,¸¸,ø¤º° ╭∩╮(סּںסּَ)╭∩╮

All clear?


@LuX
Awesome job man! You're totally doing it right. I tested similar switches, they behave nicely and have a very low travel. I actually made little test rigs with tensioning screws for these, to see how they behave.
Kinda wondering now if I shouldn't have chosen that path, hehe :)

Try getting these printed, assemble a prototype!

Btw, is that Blender?  :thumb:  ;D

@wolfv
That software is for the Teensy, right?
How does it read signals from the keypresses? What input does it expect?

Offline LuX

  • Posts: 132
  • Location: Finland
  • 🖲️ 🖲️ 🖲️ 🖲️ 🖲️ 🖲️ 🖲️
@LuX
Awesome job man! You're totally doing it right. I tested similar switches, they behave nicely and have a very low travel. I actually made little test rigs with tensioning screws for these, to see how they behave.
Kinda wondering now if I shouldn't have chosen that path, hehe :)

Try getting these printed, assemble a prototype!

Btw, is that Blender?  :thumb:  ;D

Thanks. Seeing how I'll be getting the Ergodox soon, this project isn't high on priority, but if I get around a 3D printer I'll look to make a prototype as well.
As long as the switches or domes are high on tactility and low on force the design could actually work quite nicely. There's an american company making tact domes on adhesive film so you could pretty much slap the switches on the PCB and screw the switch mechanism on top. Low cost and easy to assemble. What mode do you need?

Yeah it's Blender. I don't know why people diss it, it's quite good being free and having a helpful community behind it. The pictures of the model I provided are work in progress and look terrible. If you look closer at the middle picture you'll see the different parts aren't aligned properly. And it's missing the described features.

Offline test321

  • Posts: 15
@sinusoid

thanks for comprehensive response  :thumb:

Offline arisian

  • Posts: 13
Thanks again arisian.  The double-strike L/R Ctrl and Alt keys are working nicely.

Now to implement the L/R Modf LED indicator lights.  Page 40 of the DataHand User Guide says:
Quote
To change the L/R Modf, hold up the FUNC Mode key and at same time press the L/R Modf (left little finger, well key...light on the right hand will flash to verify entry into right side).
Which light flashes and what color is it?
Is there an indicator light for left the side?

When switching into "Right" mode, the NAS, Normal and MFMode LEDs (i.e. top three on the right hand unit) blink 4 times, which takes ~2 seconds.  When switching into "Left" mode, the ScrollLock, NumLock, and Mouse-Mode-On LEDs (i.e. left-most three on the left hand unit) blink the same way.   There's not actually a dedicated LED for this, they just used the existing LEDs, so they are all their normal colors.  If an LED is already on (NumLock may be on or off, and MFMode will always be on since you need it to hit LRModeSwitch), it will dim slightly when the ones that were off get lit up (i.e. for the blink), but it doesn't turn off completely.

Quote
Also some questions about NumLock.
Page 29 of DataHand User Guide says that NAS (both 10-Key-On and 10-Key-Off) send Alpha-number scancodes (KEY_).
When NUM_LOCK is on, these number keys will send the 10-Key pad scancodes (KEYPAD_).

Does DataHand's NUM_LOCK only effect number keys 0-9, or all these keys?:
Code: [Select]
+ - * / . Enter 00 0 1 2 3 4 5 6 7 8 9, arrow keys (on 10-Key-On left-index finger)
For those of you wondering how to tell the difference between identical looking characters, keycodes can be read using command 'xev' in the Linux terminal.
Command 'xev' will open a window and print contents of keyboard events.

LRMode doesn't have any impact on most of those keys; however, most of them have other ways of getting the KP version sent.

The primary "return" key in the left thumb cluster always sends keycode 36 (Return).  According to the manual, the ring-finger-right key supposedly sends KP_ENTER when you're in "101-keyboard mode"; however, in "104-keyboard mode" it sends the Windows key instead, and L or R is controlled by the LRMode.  I can find no documentation about how you would switch to "101-keyboard mode;" on my system, I always get the "104-keyboard mode" behavior, regardless of whether I boot to Windows or Linux.  The guide printed on the right hand unit seems to indicate that even in "104-keyboard mode" you should be able to get KP_Enter sent by hitting the key when in 10-key mode, but that doesn't work for me; I get the same "menu" key as I do in 10-key-off NAS mode (i.e. the key next to the right windows key on a "regular" 104-key keyboard).  See page 41 of the datahand pro II user guide.

For the arrow keys, using 10-key-on left-index-finger, and also using MFMode-on-mouse-off right-index-finger, you get the "standard" direction keycodes (Right, Left, etc.).  Using MFMode-on-mouse-off left-index-finger, you get the KP codes (KP_Right, KP_Left, etc.).

For numbers and operators, whether they send the KP version while in 10-key mode is controlled by NumLock; if NumLock is on, you get the KP version, if NumLock is off, you get the "standard" version.  Oddly, NumLock doesn't seem to do anything in "standard" NAS mode (i.e. 10-key-off).  With 10-key-off, LRMode actually does have an impact on the operators; when in "right" mode, you get the KP variants, in "left" mode you get the standard ones.  However, this seems to impact only the operators (+-*/), NOT the numbers.  I can't find any way to get KP_0, KP_1, etc. other than using NumLock with 10-key-on.

As before, I'll note that some of this is kind of idiosyncratic and arbitrary.  While replicating existing function is a good goal to start with, I'm not sure that all of these things actually make a ton of sense the way they're implemented (it would make more sense for NumLock to work the same way for 10-key-on and 10-key-off NAS mode, among other things).  And this is all still with a DataHand Personal A8000000; I think the Pro II should be the same, but I don't have one to test.

Offline test321

  • Posts: 15
bump

Offline wolfv

  • Posts: 269
I am getting ready to solder the LEDs onto the DodoHand PCB.
What are the LED positions of the left DataHand unit?

These are probably in the wrong order for the left unit:
Code: [Select]
    LEFT INDICATOR LIGHTS
    ---------------------
    MouseOn     yellow
    NumLock     yellow
    ScrollLock  yellow
    CapsLock    green

These should be the correct order for the right unit:
Code: [Select]
    RIGHT INDICATOR LIGHTS
    ----------------------
    NAS         blue
    Normal      green
    MF          yellow
    10-Key      red

A picture of the left PCB can be viewed at https://geekhack.org/index.php?action=dlattach;topic=41422.0;attach=81533;image
(the picture is slow to load).
The picture shows the PCB with 3 LEDs along the right edge, and 1 in the top-right corner.
The LEDs are clear, in the picture they look like shiny screw heads.


Thank you.
« Last Edit: Thu, 19 May 2016, 17:40:21 by wolfv »

Offline OldDataHands

  • Thread Starter
  • Posts: 280
  • Location: Michigan
The order of LEDs on the Left unit is (from Left to Right):
    Name,    Color
Scroll Lock,  ??? (For some reason, mine isn't illuminating)
Num Lock, Amber/Orange
Mouse Mode, Amber/Orange
Caps Lock, Green


Offline OldDataHands

  • Thread Starter
  • Posts: 280
  • Location: Michigan
Perhaps also worth a note: There are spots on the PCBs I laid out
for putting the LEDs on the PCB, and also a pinheader to allow the
LEDs to be remote/located on the case somewhere, as is done on
the original DataHand.

Offline arisian

  • Posts: 13
Scroll Lock,  ??? (For some reason, mine isn't illuminating)

Scroll Lock is the same amber color (orange? yellow?) as NumLock and MouseMode.

Offline LSmithDatahand

  • Posts: 1
  • Location: Phoenix, AZ, USA
Hi All, just discovered this thread by reference from http://octopup.org/computer/datahand. Was VERY happy to see a living collaboration that is progressing.  I've used Datahand units since 1992, did a little side work for them when they really started backsliding in 2004.  I arranged with the owners at that time to receive all their broken, demo units and parts for the DH-200 models, and still have 3 rebuilt sets aside from my daily use ones. I'm set for life, but am often distressed on behalf of the folks whose broken units I try to repair from time to time.  Their desperation is palpable. This project gives me some hope for them.  :thumb:  I'm rather passionate about them since they saved my career.

Are we currently modeling the behavior on the original DH-200's? or the later ProII's?   The physical switches themselves did not change much at along the product lines, so they're all about the same.

I always thought that a separate L/R mode indicator light would have been helpful on the Datahands, but I suspect that either signal line or part count/cost kept them from implementing them separately.  On my DH-200's, switching L/R mode will flash whichever of the [Normal][NAP][Function] lights are presently NOT lit.  It will flash them for 2 seconds, roughly 500ms between each flash and the "on" time is just a flick, for 5 (or sometimes 6) flashes.

the Scroll, Mouse, NumLock, Cursor (L,R,U,D), and Function mode lights are all "red" which, due to them being older LED's or over time start looking more orange-ish.

-Larry

Offline wolfv

  • Posts: 269
Hi Larry,

Welcome to the forum, and the DodoHand thread.

Are we currently modeling the behavior on the original DH-200's? or the later ProII's?
I reversed engineered the firmware from the DataHand Professional II Users Guide version 1.7.8 October 2003, and what ever other information people provided (I don't have access to a DataHand).

I always thought that a separate L/R mode indicator light would have been helpful on the Datahands
Adding another LED to the firmware would be a trivial task.
Replacing the blink with a separate L/R Modf indicator light would actually simplify the firmware.

the Scroll, Mouse, NumLock, Cursor (L,R,U,D), and Function mode lights are all "red" which
What is this "Cursor" light you speak of? And were do the letters "L,R,U,D" come from? - Left, Right, Up, Down
« Last Edit: Sun, 28 August 2016, 13:58:35 by wolfv »

Offline test321

  • Posts: 15
please don't die on us sinusoid.

Offline test321

  • Posts: 15
double post.

Offline Interface

  • Posts: 9
  • Location: Sweden
    • Chronicle of my projects
I've made progress on my version. The goal is to make it suitable for printing on a FDM-based 3d-printer. And make it freely available to everyone. I don't care if Chinese companies steal it.

Anyways I'm working on hand rests modeled in clay to be digitized using photogrammetry this is to ensure they'll be as comfy as possible.

When I'm done with the general design I will feed a dataset of chatlogs and keylogs into it for optimization of the design parameters, later on I will also make simulated hands modeling stresses of indivdual joints etc. and use an evolutionary solver in order to have finger travel distance be as short and movements as varied as possible. I'm also thinking the movement should be as natural as possible, fitting the hands natural mechanics, for example it's harder to individually move the ring and little finger than the middle and index finger so the optimization should take that into account as well. I will release a design asap. Then I'll release optimized versions later on. I suffer from RSI so I'd need this badly myself.