Right now it's a little awkward. The leads between the glove and the breadboard aren't quite long enough, so I don't have a lot of freedom of movement, but that won't be a problem in the breadboardless prototype or the production version. I also still need a cheat-sheet for the chordset (http://chorder.cs.vassar.edu/spiffchorder/modified_nasa), which I don't like very much; I don't know who decided it was a great idea to have common letters like 'e' require three buttons (no, really), but it's rather inconvenient.
I think I'll be able to get used to it pretty easily, though. :)
Yup, the guys who wrote the software had this in mind -- I can recompile the image using a different keymap by just changing the KEYMAP entry in the Makefile to a different .h file (keybindings are represented as constants). I suspect I will end up hacking my own, though this does mean I'll want to find some way to attach headers for in-system programming.
AFAICT it's about as dynamic as you get with a microcontroller -- at least, one that doesn't have external flash storage. And even then you'd need a way to get the new keymappings into the flash. The SpiffChorder design uses the 8k of flash onboard the ATMega8, which can be altered using ISP (in-system programming); we could probably figure out a way to make the USB connector pull double-duty for ISP and power/data lines, but it'd require a fairly major redesign of the circuit and I'm not sure it would fit into a pair of 28-pin wirewrap sockets anymore (which is a Major Win feature for me).
That said, we could probably use gEDA or EagleCad and the existing schematic to design a breadboard with surface-mount components, which would be a little spendier but would look really awesome. Can I have that rework station I keep asking for? :D
OOh! A decent one? I looked at chording keyboards a few years ago but none of them looked very ergonomic. I keep thinking about doing a chorded keyboard because of the way I work when I'm doing artwork.
For the moment it's a winter glove, seven switches, fourteen long leads and a populated breadboard, so it sucks pretty badly for typing, but once I get it off the breadboard and into a pair of 28-pin wirewrap sockets it'll be much more convenient. Ergonomics seem pretty decent so far, although the current keymap is terrible and I plan to write a new one.
I was actually planning on having the mouse be a separate glove, because unless I want to do some hardcore multiplexing, it'd be a real pain to have both keyboard and mouse signals going over the same USB channel. (Yes, it's a USB keyboard. I laughed like a little girl when I got it working -- I've never been more excited to see the letter 'w' appear in a terminal window in my entire life.)
But yeah, I already have a couple of 2-axis accelerometers and an ATTiny that I think will work just fine for a mouse. (Unless you can think of a reason why I'd need or want a 3-axis accelerometer. 2-axis seems simpler, and it's a tiny little chip -- the ones I have are SMD.)
I haven't looked at the Twiddler keymap yet, but will have a look at it; I'm sure there are several options.
I could lay it on its back, sit it on top of the ATTiny, and either wirewrap the pins of the socket the Tiny sits in and (carefully, at as low a temperature as possible) solder the wire to the exposed flat bits on the accelerometer (it's SMD), or solder to both the Tiny and the accelerometer...
It might be too soon for you to _MOONWALK_ in a white suit with a fedora, but you SO should get yourself filmed using the glove while wearing a white suit and a fedora.
I'm pretty sure the ATMega8 has enough I/O pins to make that work -- my understanding is that the USB communication is just done by bit-banging, so the code is pretty simple. I can check that for you, and it might be the case that a surface-mount version, e.g. QFP, might have more I/O lines than the DIP version. Also, if the DIP version doesn't have enough I/O lines by itself, it'd probably be possible to multiplex it.
Let me look into it and get back to you; if I haven't done so in about a week, kick me about it.
I have only the vaguest idea of what those acronyms signify, but that's exciting to hear. I guess my only remaining question is how you're operating the glove; since you haven't posted pictures, I can't quite imagine what you're pressing against what to trip each switch.
This (http://en.wikipedia.org/wiki/File:Stenkeys.gif) is what I'm desperately desiring in glove form, but I'm not entirely sure it can be done, especially since in the ordinary course of things the right pinky and index fingers have to do double duty (for the TS/DZ and FR/*, respectively). Without double density of switches on those fingers -- which I figure would lead to some accuracy issues, especially since the pinky is such a skinny finger -- I don't know how the finger switching can be done. But, oh, I want one so bad I can taste it. Yeeee!
Do you think you could come up with a mapping of character combinations to finger positions, i.e., a gesture-based mapping (either static gestures or ones that involve moving the fingers)? You should check out the conversation I'm having with siliconshaman below; it strikes me that finger positions (ie, amount of curl) could be learned fairly easily and intuitively, it would be quite fast, and it would certainly require fewer discrete components.
Hm. Well, the thing is that the steno layout already requires a certain amount of finger curl. For example, the middle finger on the right hand can press just the "P" key or just the "B" key, by only striking each key with the tip of the finger. When it flattens out, though, and presses both P and B together, you get the final "N" sound. So you've got to have three options for that column of keys: curled top, curled bottom, and flattened-out top-plus-bottom. One might possibly adapt an extreme curl option, though, which isn't used in traditional steno -- flat against the top of the palm, for instance, to signify pressing both keys. I'm still not quite clear on the best implementation, whether it should be twiddling the air or the palm or another surface like the forearm or trouser leg. How is your glove currently set up to trigger switches?
meant to get back to you about the Theramin idea I had for a chording glove...sorry, life got busy.
Anyway, you know how one works (http://en.wikipedia.org/wiki/Theramin) right?
So, it occured to me that if you had a loop antenna on the back of your hand, and used flexible wiring down the length of the fingers as the dipole antenna, with different harmonic frequencies for each finger, then as you curled your fingers to 'type' the EM field as measured by the pick up would change depending one which finger curled by how much...
Granted, the back-end circuit would be more complicated, as a 5 channel A-D converter would be needed to process the signal before it reached the control board...but you'd not only get information about which finger was pressed, but by how much [ie, how far it moved] and speed of movement over time data too. which wouldn't be important for typing, but would be very useful for context sensitive applications like painting, control applications, or providing the sensor half of a force-feedback loop.
Add in a 3-axis accelerometer and you've got a full-on position sensing VR interface.
Hrrrrrrm. I know there are Freescale 8-bit uCs that have multiple ADCs on them -- the one that was used on the Defcon badge in 2007 had several ADC lines, enochsmiles and our team and I only had to use one of them for our badge-hacking project. I'd probably want to do that surface-mount and actually fab a board for it, though.
I will for sure look into this further. I've built more wire dipoles than I care to think about, and 30ga wire could be threaded through the stitches of a glove, at least in an early version. I might be a little worried about wire fatigue, though kynar insulation seems to do a halfway decent job of strain relief.
The SpiffChorder code base is open-source, so I could build on that ... this is a pretty fabulous idea, I need to read that page about theremins. (I actually don't know how they work, I look forward to reading the link.)
Thanks, this is a really fabulous idea!
Are you planning on going to HAR (www.har2009.org) by any chance?
Hm. The optical theremin makes me think of another approach: using IR LEDs of different frequencies (assuming I can get those...) and appropriate IR receivers mounted along the palm, and using proxmity to the IR receiver (ie, intensity of light received) to determine position of the fingertip switches. Or maybe some kind of gesture-based thing. For the thumb switches I could use something similar to the reset circuit in Mitch Altman's Trippy RGB Waves (http://www.tvbgone.com/cfe_trippyRGB_instructions.php) kit -- cover up the LEDs to interrupt the light, since those switches are meant to be binary. Though if I can get enough positions out of the fingers, I might not actually need the switches. My hands aren't super-flexible, though -- curling one finger enough tends to make all the other ones curl too -- so the design considerations are going to be interesting.
I did, and it looks quite cool! Dunno why it's so damn expensive, though -- that's about $30-$40 worth of accelerometers, from the look of it. I guess the sunk cost is for all the software they wrote.
(no subject)
Date: 2009-07-01 01:08 pm (UTC)(no subject)
Date: 2009-07-01 01:12 pm (UTC)(no subject)
Date: 2009-07-01 01:14 pm (UTC)(no subject)
Date: 2009-07-01 01:42 pm (UTC)Also, dude, patent this shit before some asshole does.
(no subject)
Date: 2009-07-01 01:54 pm (UTC)Also, wow, I am going to have the strongest left hand in the world.
(no subject)
Date: 2009-07-01 11:27 pm (UTC)(no subject)
Date: 2009-07-01 01:20 pm (UTC)(no subject)
Date: 2009-07-01 01:27 pm (UTC)I think I'll be able to get used to it pretty easily, though. :)
(no subject)
Date: 2009-07-01 01:46 pm (UTC)(no subject)
Date: 2009-07-01 01:53 pm (UTC)(no subject)
Date: 2009-07-01 04:34 pm (UTC)(no subject)
Date: 2009-07-01 04:46 pm (UTC)That said, we could probably use gEDA or EagleCad and the existing schematic to design a breadboard with surface-mount components, which would be a little spendier but would look really awesome. Can I have that rework station I keep asking for? :D
(no subject)
Date: 2009-07-01 01:27 pm (UTC)(no subject)
Date: 2009-07-01 03:15 pm (UTC)(no subject)
Date: 2009-07-01 04:25 pm (UTC)(no subject)
Date: 2009-07-01 04:31 pm (UTC)(no subject)
Date: 2009-07-01 04:35 pm (UTC)Also, have you thought of adding a 3-axis accelerometer to the glove? Chorded mouse!
(no subject)
Date: 2009-07-01 04:49 pm (UTC)But yeah, I already have a couple of 2-axis accelerometers and an ATTiny that I think will work just fine for a mouse. (Unless you can think of a reason why I'd need or want a 3-axis accelerometer. 2-axis seems simpler, and it's a tiny little chip -- the ones I have are SMD.)
I haven't looked at the Twiddler keymap yet, but will have a look at it; I'm sure there are several options.
(no subject)
Date: 2009-07-01 08:11 pm (UTC)(no subject)
Date: 2009-07-02 01:51 am (UTC)(no subject)
Date: 2009-07-01 04:50 pm (UTC)Go you! You are the new Geeked Out Michael Jackson!
(no subject)
Date: 2009-07-01 04:52 pm (UTC)(no subject)
Date: 2009-07-01 05:52 pm (UTC)It isn't.
It might be too soon for you to _MOONWALK_ in a white suit with a fedora, but you SO should get yourself filmed using the glove while wearing a white suit and a fedora.
For me? Please?
(no subject)
Date: 2009-07-01 06:00 pm (UTC)(no subject)
Date: 2009-07-01 05:00 pm (UTC)(no subject)
Date: 2009-07-01 05:03 pm (UTC)(no subject)
Date: 2009-07-01 08:33 pm (UTC)(no subject)
Date: 2009-07-02 01:54 am (UTC)Let me look into it and get back to you; if I haven't done so in about a week, kick me about it.
(no subject)
Date: 2009-07-02 02:02 am (UTC)This (http://en.wikipedia.org/wiki/File:Stenkeys.gif) is what I'm desperately desiring in glove form, but I'm not entirely sure it can be done, especially since in the ordinary course of things the right pinky and index fingers have to do double duty (for the TS/DZ and FR/*, respectively). Without double density of switches on those fingers -- which I figure would lead to some accuracy issues, especially since the pinky is such a skinny finger -- I don't know how the finger switching can be done. But, oh, I want one so bad I can taste it. Yeeee!
(no subject)
Date: 2009-07-02 02:11 am (UTC)(no subject)
Date: 2009-07-02 02:19 am (UTC)(no subject)
Date: 2009-07-09 10:29 pm (UTC)(no subject)
Date: 2009-07-01 08:46 pm (UTC)Anyway, you know how one works (http://en.wikipedia.org/wiki/Theramin) right?
So, it occured to me that if you had a loop antenna on the back of your hand, and used flexible wiring down the length of the fingers as the dipole antenna, with different harmonic frequencies for each finger, then as you curled your fingers to 'type' the EM field as measured by the pick up would change depending one which finger curled by how much...
Granted, the back-end circuit would be more complicated, as a 5 channel A-D converter would be needed to process the signal before it reached the control board...but you'd not only get information about which finger was pressed, but by how much [ie, how far it moved] and speed of movement over time data too. which wouldn't be important for typing, but would be very useful for context sensitive applications like painting, control applications, or providing the sensor half of a force-feedback loop.
Add in a 3-axis accelerometer and you've got a full-on position sensing VR interface.
(no subject)
Date: 2009-07-02 02:00 am (UTC)I will for sure look into this further. I've built more wire dipoles than I care to think about, and 30ga wire could be threaded through the stitches of a glove, at least in an early version. I might be a little worried about wire fatigue, though kynar insulation seems to do a halfway decent job of strain relief.
The SpiffChorder code base is open-source, so I could build on that ... this is a pretty fabulous idea, I need to read that page about theremins. (I actually don't know how they work, I look forward to reading the link.)
Thanks, this is a really fabulous idea!
Are you planning on going to HAR (www.har2009.org) by any chance?
(no subject)
Date: 2009-07-02 10:34 am (UTC)Oh, and found this link for some circuit diagrams (http://www.discovercircuits.com/T/theremin.htm).
(no subject)
Date: 2009-07-04 01:35 pm (UTC)I do hope you can make it to HAR!
(no subject)
Date: 2009-07-01 11:41 pm (UTC)-- L
(no subject)
Date: 2009-07-03 08:23 am (UTC)(no subject)
Date: 2009-07-04 01:24 pm (UTC)