Re: simulating chorded keyboards
Matt Minuti writes: > One of the bonus points of using an arduino is that he can just hook up as > many keys as he wants, in whatever kind of layout he wants, and then have > the arduino appear to be a keyboard. Yep, this is the plan. I cleaned out a bunch a few weeks ago because "nobody's doing any of this electronics stuff" and NOW he wants to do Arduino. Fortunately I seem to have kept all the vital pieces (boards, wire, breadboards, etc). ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
One of the bonus points of using an arduino is that he can just hook up as many keys as he wants, in whatever kind of layout he wants, and then have the arduino appear to be a keyboard. No need for any of this NKRO stuff, even, since the arduino could interpret the keypresses and send the appropriate character/code to the OS, as if he just pushed that key on a normal keyboard! See http://arduino.cc/en/Reference/MouseKeyboard for some info and to see how simple the "make it look like a keyboard to the OS" part is. Quite often as simple as just hacking away at one of the bundled examples, or in this case, that's at least a simple place to start. The electronics would be dead simple, since there's not that many keys needed. This is all the wiring he'd need to know: http://arduino.cc/en/tutorial/button. Sure, there's no debouncing, but that can be done in either software or hardware once he's got something working as a proof-of-concept. On Fri, Oct 17, 2014 at 7:26 AM, David Rysdam wrote: > Paul Beaudet writes: > > You might be able to get 7 if one of the keys is a modifier like ctrl alt > > meta or shift > > > > Still likely the keyboard, one adventurous way to check is to open up the > > keyboard and > > see if there is a diode for every key. If not that, well that explains > your > > 3KRO. > > What is great, is that you can probably find one that does, near someones > > trash can. > > Might have to research to find the right models though. > > > > I read this a while back that cleared some of my questions. > > http://blog.komar.be/how-to-make-a-keyboard-the-matrix/ > > > > Unapologetically written by an EE.. might want to skip to the section > > before diode part. > > I'm not an EE but I have taken small roles in some television > productions, so I skimmed and got the gist. The real key is finding the > googleable term "NKRO". > > Looks like these keyboards are about $100-$150. That seems a little > pricey for a fiddling around experiment unless I can find one lying > around somewhere. Alternatively, I see there are some keypads out there > with the diodes to allow 10KRO or NKRO for using with an arduino. > > In a sense that's exactly what he wants, but I suspect that practically > speaking it's going to kill his project since he doesn't know anything > about electronics and I dunno if I want to spend the time being his > hardware engineer. We'll see. > ___ > gnhlug-discuss mailing list > gnhlug-discuss@mail.gnhlug.org > http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ > ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
Paul Beaudet writes: > You might be able to get 7 if one of the keys is a modifier like ctrl alt > meta or shift > > Still likely the keyboard, one adventurous way to check is to open up the > keyboard and > see if there is a diode for every key. If not that, well that explains your > 3KRO. > What is great, is that you can probably find one that does, near someones > trash can. > Might have to research to find the right models though. > > I read this a while back that cleared some of my questions. > http://blog.komar.be/how-to-make-a-keyboard-the-matrix/ > > Unapologetically written by an EE.. might want to skip to the section > before diode part. I'm not an EE but I have taken small roles in some television productions, so I skimmed and got the gist. The real key is finding the googleable term "NKRO". Looks like these keyboards are about $100-$150. That seems a little pricey for a fiddling around experiment unless I can find one lying around somewhere. Alternatively, I see there are some keypads out there with the diodes to allow 10KRO or NKRO for using with an arduino. In a sense that's exactly what he wants, but I suspect that practically speaking it's going to kill his project since he doesn't know anything about electronics and I dunno if I want to spend the time being his hardware engineer. We'll see. ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
>Huh, that doesn't really work either. I can get up to 6, but I still >have to choose carefully (or something). Maybe the Linux keyboard driver >is the real problem? Or the keyboard hardware itself? Or maybe just my >program, which I will admit is hacked together. You might be able to get 7 if one of the keys is a modifier like ctrl alt meta or shift Still likely the keyboard, one adventurous way to check is to open up the keyboard and see if there is a diode for every key. If not that, well that explains your 3KRO. What is great, is that you can probably find one that does, near someones trash can. Might have to research to find the right models though. I read this a while back that cleared some of my questions. http://blog.komar.be/how-to-make-a-keyboard-the-matrix/ Unapologetically written by an EE.. might want to skip to the section before diode part. ^---mean that in a faltering way.. and sarcasticly as some who appreciates more of a dumb down. On Thu, Oct 16, 2014 at 7:24 PM, David Rysdam wrote: > Tom Buskey writes: > > Does the USB HID simultaneous key limit apply to a MIDI-> usb adapter? > > They adapters are pretty cheap nowadays. > > > > Then you need a your chording keyboard to speak MIDI. > > So this is interesting. Evan, the one commissioned to write the program, > reported that he could only get *3* simultaneous keys out. I tried my > semi-independent program and I can partially confirm this. I can always > get 3, but if I choose carefully I can get up to 6. I have to...scatter > the keys across the keyboard more evenly? Or choose different rows? I'm > not sure what the pattern is yet, although it doesn't matter because: > > Kyle's scheme needs at least 7 but he'd prefer 10 keys. So maybe MIDI is > the way to go. Or PS2, if I can find a keyboard and a hole to plug it > into. Oh wait, HIS computer has PS2, so that's OK. And the flea > market/freecycle/people at work probably have tons of PS2 keyboards > they'd love to give away. > > Oh ho ho! His computer actually *has* a PS2 keyboard already attached! > Imma try it now. > > ... > > Huh, that doesn't really work either. I can get up to 6, but I still > have to choose carefully (or something). Maybe the Linux keyboard driver > is the real problem? Or the keyboard hardware itself? Or maybe just my > program, which I will admit is hacked together. > > I'm attaching it for comment. I based it on something I found > online. Compile with > > gcc -o keychord keychord.c -lncurses > > and run like > > sudo ./keychord /dev/input/ > > > > Really, there should be no limitation. I guess it's because they > keyboard has to report "repeat" when you hold a key down. But with our > own electronics, we can define the protocol to just detect edges, so no > numerical limit would exist--just send one at a time, every time. > > ___ > gnhlug-discuss mailing list > gnhlug-discuss@mail.gnhlug.org > http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ > > ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
Tom Buskey writes: > Does the USB HID simultaneous key limit apply to a MIDI-> usb adapter? > They adapters are pretty cheap nowadays. > > Then you need a your chording keyboard to speak MIDI. So this is interesting. Evan, the one commissioned to write the program, reported that he could only get *3* simultaneous keys out. I tried my semi-independent program and I can partially confirm this. I can always get 3, but if I choose carefully I can get up to 6. I have to...scatter the keys across the keyboard more evenly? Or choose different rows? I'm not sure what the pattern is yet, although it doesn't matter because: Kyle's scheme needs at least 7 but he'd prefer 10 keys. So maybe MIDI is the way to go. Or PS2, if I can find a keyboard and a hole to plug it into. Oh wait, HIS computer has PS2, so that's OK. And the flea market/freecycle/people at work probably have tons of PS2 keyboards they'd love to give away. Oh ho ho! His computer actually *has* a PS2 keyboard already attached! Imma try it now. ... Huh, that doesn't really work either. I can get up to 6, but I still have to choose carefully (or something). Maybe the Linux keyboard driver is the real problem? Or the keyboard hardware itself? Or maybe just my program, which I will admit is hacked together. I'm attaching it for comment. I based it on something I found online. Compile with gcc -o keychord keychord.c -lncurses and run like sudo ./keychord /dev/input/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include void handler (int sig) { printf ("nexiting...(%d)n", sig); exit (0); } void perror_exit (char *error) { perror (error); handler (9); } int main (int argc, char *argv[]) { struct input_event ev[64]; int fd, rd, value, size = sizeof (struct input_event), kbdwidth=15, row, col; char name[256] = "Unknown", ch; char *device = NULL; //Setup check if (argv[1] == NULL){ printf("Please specify (on the command line) the path to the dev event interface devicen"); exit (0); } if ((getuid ()) != 0) printf ("You are not root! This may not work...n"); if (argc > 1) device = argv[1]; //Open Device if ((fd = open (device, O_RDONLY)) == -1) printf ("%s is not a vaild device.n", device); //Print Device Name ioctl (fd, EVIOCGNAME (sizeof (name)), name); printf ("Reading From : %s (%s)n", device, name); fflush(stdout); initscr(); noecho(); curs_set(0); refresh(); while (1){ /* seems to be some junk (bounce?) in the first event and the third one is always 0, so just use the second */ if ((rd = read (fd, ev, size * 3)) < size) perror_exit ("read()"); /* printw("\n"); */ /* printw("type (1 = a key event): %u\n", ev[1].type); */ /* printw("code (key code, see linux/input.h): %u\n", ev[1].code); */ /* printw("value (0 = up, 1 = down): %d\n", ev[1].value); */ if (ev[1].type != 1) continue; // keycodes seem to roughly follow layout on actual keyboard row = 4*(ev[1].code/kbdwidth); col = 10*(ev[1].code % kbdwidth); switch(ev[1].code) { case KEY_A: ch = 'a'; break; case KEY_B: ch = 'b'; break; case KEY_C: ch = 'c'; break; case KEY_D: ch = 'd'; break; case KEY_E: ch = 'e'; break; // absolutely no idea why KEY_F doesn't work... case 33: ch = 'f'; break; case KEY_G: ch = 'g'; break; case KEY_H: ch = 'h'; break; case KEY_I: ch = 'i'; break; case KEY_J: ch = 'j'; break; case KEY_K: ch = 'k'; break; case KEY_L: ch = 'l'; break; case KEY_M: ch = 'm'; break; case KEY_N: ch = 'n'; break; case KEY_O: ch = 'o'; break; case KEY_P: ch = 'p'; break; case KEY_Q: ch = 'q'; break; case KEY_R: ch = 'r'; break; case KEY_S: ch = 's'; break; case KEY_T: ch = 't'; break; case KEY_U: ch = 'u'; break; case KEY_V: ch = 'v'; break; case KEY_W: ch = 'w'; break; case KEY_X: ch = 'x'; break; case KEY_Y: ch = 'y'; break; case KEY_Z: ch = 'z'; break; default: ch = ' '; } mvaddch(row, col, ch|(ev[1].value?A_REVERSE:0)); refresh(); } endwin(); return 0; } Really, there should be no limitation. I guess it's because they keyboard has to report "repeat" when you hold a key down. But with our own electronics, we can define the protocol to just detect edges, so no numerical limit would exist--just send one at a time, every time. ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
Production is always a separate issue. MIDI is a real possibility for research. A physical keyboard with capacitive switches can probably support being N key roll over scanned by a custom micro controller code, even if the chip the keyboard originally had doesn't support N key roll over. The old Hall effect switch keyboards can probably support N key rollover scanning as well, though again, the supplied chip may not. Keyboards using hard switch contacts do not support N key roll over unless they also have a series diode per key. On Thu, Oct 16, 2014 at 3:16 PM, David Rysdam wrote: > Tom Buskey writes: > > Then you need a your chording keyboard to speak MIDI. > > It's probably ridiculous to require, for instance, school computers to > have MIDI just so Kyle can use his NerdTyper (I made up that name just > now, but I kinda like it). Instead, an active (in the sense of "has a > CPU") device is probably the way to go so it can emulate a real > keyboard. > ___ > gnhlug-discuss mailing list > gnhlug-discuss@mail.gnhlug.org > http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ > ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
My MIDI device (input & output) was $5.60 on Amazon including shipping. If it adapts via USB correctly you just bury the adapter inside the keyboard. On Thu, Oct 16, 2014 at 3:16 PM, David Rysdam wrote: > Tom Buskey writes: > > Then you need a your chording keyboard to speak MIDI. > > It's probably ridiculous to require, for instance, school computers to > have MIDI just so Kyle can use his NerdTyper (I made up that name just > now, but I kinda like it). Instead, an active (in the sense of "has a > CPU") device is probably the way to go so it can emulate a real > keyboard. > ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
Tom Buskey writes: > Then you need a your chording keyboard to speak MIDI. It's probably ridiculous to require, for instance, school computers to have MIDI just so Kyle can use his NerdTyper (I made up that name just now, but I kinda like it). Instead, an active (in the sense of "has a CPU") device is probably the way to go so it can emulate a real keyboard. ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
One hopes not. If memory serves, MIDI is asynchronous serial at 125,000 bits per second (1/16 or a 2MHz crystal?), send using current loop. Thus it should be a byte stream at the /dev level, with interpretation as MIDI data being done at main program level, rather than device driver level. That is, it should present like a serial port. And if you have a serial port that supports the funny baud rate (or something close enough), you could conceivably build a current loop to RS-232 level translator. What I don't remember is whether the DC isolation occurs in the sender or in the receiver. Probably in the receiver, so you may be stuck providing and opto-isolator, like official MIDI devices do. On Thu, Oct 16, 2014 at 2:48 PM, Tom Buskey wrote: > Does the USB HID simultaneous key limit apply to a MIDI-> usb adapter? > They adapters are pretty cheap nowadays. > > Then you need a your chording keyboard to speak MIDI. > > On Wed, Oct 15, 2014 at 8:17 PM, David Rysdam wrote: > >> Joshua Judson Rosen writes: >> > How about MIDI? >> >> When I was about to hit "reply", I was going to say "I dunno, we haven't >> tried it yet." But as I did, I had a thought (which maybe was your >> intent): MIDI has a chording keyboard input. >> >> Of course, nobody has MIDI >> ___ >> gnhlug-discuss mailing list >> gnhlug-discuss@mail.gnhlug.org >> http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ >> > > > ___ > gnhlug-discuss mailing list > gnhlug-discuss@mail.gnhlug.org > http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ > > ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
Does the USB HID simultaneous key limit apply to a MIDI-> usb adapter? They adapters are pretty cheap nowadays. Then you need a your chording keyboard to speak MIDI. On Wed, Oct 15, 2014 at 8:17 PM, David Rysdam wrote: > Joshua Judson Rosen writes: > > How about MIDI? > > When I was about to hit "reply", I was going to say "I dunno, we haven't > tried it yet." But as I did, I had a thought (which maybe was your > intent): MIDI has a chording keyboard input. > > Of course, nobody has MIDI > ___ > gnhlug-discuss mailing list > gnhlug-discuss@mail.gnhlug.org > http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ > ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
I've got (unless my son tossed it) an old Casio keyboard that no longer makes noise, but the keys to midi out stuff may still work. You can, of course wire the switches in a QWERTY keyboard in parallel with the keys. I'll be at the house to check for it on the 24th. You still need a midi interface. On Wed, Oct 15, 2014 at 8:17 PM, David Rysdam wrote: > Joshua Judson Rosen writes: > > How about MIDI? > > When I was about to hit "reply", I was going to say "I dunno, we haven't > tried it yet." But as I did, I had a thought (which maybe was your > intent): MIDI has a chording keyboard input. > > Of course, nobody has MIDI > ___ > gnhlug-discuss mailing list > gnhlug-discuss@mail.gnhlug.org > http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ > ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
Joshua Judson Rosen writes: > How about MIDI? When I was about to hit "reply", I was going to say "I dunno, we haven't tried it yet." But as I did, I had a thought (which maybe was your intent): MIDI has a chording keyboard input. Of course, nobody has MIDI ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
David Rysdam writes: > > Paul Beaudet writes: > > USB hid can only report 6 keys at a time and some modifiers, which would be > > fine for most chorded applications > > except for the fact that, the keyboards that any given one of us has likely > > fails to report more than > > 3 keys at one time depending on which keys are being chorded. > > Oho, I didn't know either of these things. How about MIDI? -- "'tis an ill wind that blows no minds." ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
Paul Beaudet writes: > USB hid can only report 6 keys at a time and some modifiers, which would be > fine for most chorded applications > except for the fact that, the keyboards that any given one of us has likely > fails to report more than > 3 keys at one time depending on which keys are being chorded. Oho, I didn't know either of these things. Fortunately, he is gravitating towards a design with purpose-built hardware and in-line Arduino. The latter due to not wanting to write device drivers, etc and the former because he wants to be able to put the buttons right where he needs them. ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
Okay I have already put in a lot of pain in suffering over wanting to do David's son wants to do so I feel obligated to divulge more. Typically usb and laptop keyboards will likely fail to meet his needs USB hid can only report 6 keys at a time and some modifiers, which would be fine for most chorded applications except for the fact that, the keyboards that any given one of us has likely fails to report more than 3 keys at one time depending on which keys are being chorded. (not the like the convenient keys to decent hand placement). PS/2 "COULD" handle more without hacks but, who has a native PS/2 port on their machines now and days? Like mentioned before to over come this you will need an "NKRO" ( N key roll-over) or Keyboard that is designed properly as opposed to the cheap stuff that most of us have. These can be anywhere between $40-$400 (yes, people do buy mech keyboards for that much). Though you might be able to find a cheaper old PS/2 that is -> IBM spec <- that is suitable, then use a usb converter or something like this - https://www.adafruit.com/products/1136 and then use a leonardo or mircro to pipe over the keys as an emulated keyboard. Easy code. I also rebuilt some firmware to have the arduino do the conversion wiring ps2 to it directly, but its kinda unreliable, so I recommend the converter Even at that point I think building the layout on the Arduino might be the way to go. Mainly because of the effort in programming around the 6 key limit. Yes people have done it by having one device report as multiple keyboards. If this is the way David wants to go, providing a helping hand. Configuring the TKM firmware with a teensy would be the way to go. A lot of good stuff has been build in teensy land, not for the faint of heart though. Unfortunately this as much of a hardware challenge as is finding software that might make it a tackleable for David's son to make his own layout. The Arduino suggestion may seem like the hard road for young person who might less keen on C programming, but if you really want it, you do what you got to do. Good chance to hook him into a valuable skill young, wish I found my hook into the programming world along time ago. My lack of experience is a real bane to my efforts now. The arduino leo was actually what I found to be the most simple approach based on what I had available to me and my complete inability to program at the time I started the jesterType project. The chorded keyer was second to blinking the LED for me... little bit of a leap, but I think we just established the learning experience is important [?] ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
John Abreau writes: > If the purpose is to play and learn, rather than to solve a problem, then > there's nothing wrong with inventing your own programming language. I agree with the explicit statement above, but I disagree with the implicit statement that other goals mean there is something wrong with inventing your own programming language. ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
If the purpose is to play and learn, rather than to solve a problem, then there's nothing wrong with inventing your own programming language. On Tue, Oct 14, 2014 at 9:07 PM, David Rysdam wrote: > John Abreau writes: > > Same logic could be applied to programming. Why write in C++, Java, > > Perl, or Python, when he could have the fun of designing his own > > programming language from scratch? > > You say this like it's a bad idea for a 13 year old to make things. > > > Heck, why not take it a step further and savor the joys of designing and > > fabricating his own CPU? Or even reinvent the entire history of > technology > > right from the beginning with the earliest stone axe? Yabba dabba do! :) > > Actually, he's already built (some of) his own CPU in Minecraft redstone. > -- John Abreau / Executive Director, Boston Linux & Unix Email j...@blu.org / WWW http://www.abreau.net / PGP-Key-ID 0x920063C6 PGP-Key-Fingerprint A5AD 6BE1 FEFE 8E4F 5C23 C2D0 E885 E17C 9200 63C6 ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
John Abreau writes: > Same logic could be applied to programming. Why write in C++, Java, > Perl, or Python, when he could have the fun of designing his own > programming language from scratch? You say this like it's a bad idea for a 13 year old to make things. > Heck, why not take it a step further and savor the joys of designing and > fabricating his own CPU? Or even reinvent the entire history of technology > right from the beginning with the earliest stone axe? Yabba dabba do! :) Actually, he's already built (some of) his own CPU in Minecraft redstone. ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
>Any time I try to show him other people's starts >he waves them away because designing it is 99% >of the fun. Same logic could be applied to programming. Why write in C++, Java, Perl, or Python, when he could have the fun of designing his own programming language from scratch? Heck, why not take it a step further and savor the joys of designing and fabricating his own CPU? Or even reinvent the entire history of technology right from the beginning with the earliest stone axe? Yabba dabba do! :) On Tue, Oct 14, 2014 at 6:53 PM, David Rysdam wrote: > Paul Beaudet writes: > > I'm more than willing to sit down with and help out anyone with a serious > > interest in building typing devices to help people communicate more > > efficiently. > > Thanks for the tips and the offer. Any time I try to show him other > people's starts he waves them away because designing it is 99% of the > fun. > ___ > gnhlug-discuss mailing list > gnhlug-discuss@mail.gnhlug.org > http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ > -- John Abreau / Executive Director, Boston Linux & Unix Email j...@blu.org / WWW http://www.abreau.net / PGP-Key-ID 0x920063C6 PGP-Key-Fingerprint A5AD 6BE1 FEFE 8E4F 5C23 C2D0 E885 E17C 9200 63C6 ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
>designing it is 99% of the fun. hahahahaha so ironic, If he only knew what he was getting himself into. Let him explore, I learn things the hard way too! Functional design is what I consider to be my "core" talent and have been pinned into the "learning computer science" aspect of the project for the greater portion of the last couple of years. I wish I could sub out the grind and get to the 99% fun part. Ultimately depends on what he wants to design, If its just the layout, I have been intentionally building my code as a skeleton for that type of thing making it as readable as possible for someone new or familiar with Arduino code. Wish I had built on someone else's code base, but like him I thought... "why, I want all the design control". Which is somewhat valid because other code I saw was proprietary and completely greek to me at the time. You might want to check out "Plover" If you do find a NKRO keyboard. Plover is also open source. (and Python based!) Make sure he documents his experiments, I would be interested in seeing them. Just posted an update to the tenkey device - https://hackaday.io/project/1386/log/10446 On Tue, Oct 14, 2014 at 6:53 PM, David Rysdam wrote: > Paul Beaudet writes: > > I'm more than willing to sit down with and help out anyone with a serious > > interest in building typing devices to help people communicate more > > efficiently. > > Thanks for the tips and the offer. Any time I try to show him other > people's starts he waves them away because designing it is 99% of the > fun. > ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
Paul Beaudet writes: > I'm more than willing to sit down with and help out anyone with a serious > interest in building typing devices to help people communicate more > efficiently. Thanks for the tips and the offer. Any time I try to show him other people's starts he waves them away because designing it is 99% of the fun. ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
Matt Minuti writes: > I'd strongly suggest looking at doing a little bit of hardware hacking via > the Arduino Leonardo. It's trivially easy to make it show up as a generic > USB HID keyboard, meaning no fancy driver concerns, no matter the OS. > > The keys could either be a handful (heh) of buttons laid out however he > wants, or you could even use a PS/2 keyboard and have the Arduino interpret > the keycodes and send the appropriate keypress signals via USB. I actually suggested this, but he knows what I consider the bare minimum of programming and even less electronics. Right now he's in an exploratory phase. If he gets farther, I'll help him with an Arduino/Pi/programmable keylogger and he can design and 3D print an enclosure with keys. ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
Have been building chorded keyers for a couple of years now, Going to be brief because I could go off on a real tangent about DIY keyboards. If he is really interested I'll likely have test pcb boards in the future and other opportunities. Ultimately I have been gunning to build a wearable computing platform around wearable typing design idea I've been stewing on for a long time. Most existing keyboards are poorly suited for chording, you'll probably need to spend $80+ to get an keyboard without rollover/ghosting. I have already written a lot of open source code for 5, 8, and 10 key keyers for the leonardo and sparkcore that can be found on Github. Need to update the project page with the 10 key keyer, but the following has links to my github and some of the basic ideas involved. https://hackaday.io/project/1386-Neotype%3A-Haptic-Interfacing. Goes a little further than just chording. (-; Will warn that its hard to get one of these up and running, never-mind actually learning how to use one. I'm more than willing to sit down with and help out anyone with a serious interest in building typing devices to help people communicate more efficiently. On Tue, Oct 14, 2014 at 3:16 PM, Matt Minuti wrote: > I'd strongly suggest looking at doing a little bit of hardware hacking via > the Arduino Leonardo. It's trivially easy to make it show up as a generic > USB HID keyboard, meaning no fancy driver concerns, no matter the OS. > > The keys could either be a handful (heh) of buttons laid out however he > wants, or you could even use a PS/2 keyboard and have the Arduino interpret > the keycodes and send the appropriate keypress signals via USB. > > A student of mine once made a Minecraft griefing controller: it basically > had QWEASD, spacebar, shift, and a dedicated spamming button. The buttons > worked as expected, sending keypresses, but the spam button sent the > necessary keypresses to go into "talk" mode, write some nonsense like > "HAHAHA n00b, you can't get me lol!!," and send it to everyone on the > server. I'm sure the possibilites for good are even greater than such > evil... :) > > On Mon, Oct 13, 2014 at 2:22 PM, David Rysdam wrote: > >> Remember the MIDI son? This is a different son, Kyle, with a different >> project. He's interested in chorded keyboards. You can find these here >> and there online, but he wants to design his own. To start, he wants to >> simulate one with a regular keyboard. >> >> We've been looking into ways to let him flexibly define keyboard input >> (chords, modifier keys, etc) but without requiring a ton of low-level >> programming. >> >> 1) A simple game engine (pygame, e.g.) that reports "key down" and "key >> up" events rather than simply delivering a pressed key via something >> like read(), getchar(), etc. He needs to get between these events to >> figure out the "current chord". Even pygame is more programming than he >> really wants to do, though. >> >> 2) xkeycaps looks like the opposite of what I want, but it's described >> so poorly I can't tell for sure. It looks like I can generate multiple >> keysyms from a single key press, but not vice versa. >> >> 3) emacs! This was actually my first suggestion, since it does almost >> everything he wants. Of course, he'd have to learn emacs first. However, >> there's another problem that I'm not sure can be overcome. Aren't emacs >> sequences limited such that you can't have one be a prefix of another? >> >> For instance, he'd like to be able to do this: >> >> 'i' key down followed by 'i' key up: 'i' >> 'i' down followed by 'k' down followed by 'i' and 'k' both up: 'm' >> >> but with emacs you can have "i+k" mapped to m but then not 'i' mapped to >> 'i'. >> ___ >> gnhlug-discuss mailing list >> gnhlug-discuss@mail.gnhlug.org >> http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ >> > > > ___ > gnhlug-discuss mailing list > gnhlug-discuss@mail.gnhlug.org > http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ > > ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
Second this. Not all the Arduino family will do it but the Leonardo and Leonardo-compatible ones will. -Mark On October 14, 2014 3:16:17 PM EDT, Matt Minuti wrote: >I'd strongly suggest looking at doing a little bit of hardware hacking >via >the Arduino Leonardo. It's trivially easy to make it show up as a >generic >USB HID keyboard, meaning no fancy driver concerns, no matter the OS. > >The keys could either be a handful (heh) of buttons laid out however he >wants, or you could even use a PS/2 keyboard and have the Arduino >interpret >the keycodes and send the appropriate keypress signals via USB. > >A student of mine once made a Minecraft griefing controller: it >basically >had QWEASD, spacebar, shift, and a dedicated spamming button. The >buttons >worked as expected, sending keypresses, but the spam button sent the >necessary keypresses to go into "talk" mode, write some nonsense like >"HAHAHA n00b, you can't get me lol!!," and send it to everyone on the >server. I'm sure the possibilites for good are even greater than such >evil... :) > >On Mon, Oct 13, 2014 at 2:22 PM, David Rysdam wrote: > >> Remember the MIDI son? This is a different son, Kyle, with a >different >> project. He's interested in chorded keyboards. You can find these >here >> and there online, but he wants to design his own. To start, he wants >to >> simulate one with a regular keyboard. >> >> We've been looking into ways to let him flexibly define keyboard >input >> (chords, modifier keys, etc) but without requiring a ton of low-level >> programming. >> >> 1) A simple game engine (pygame, e.g.) that reports "key down" and >"key >> up" events rather than simply delivering a pressed key via something >> like read(), getchar(), etc. He needs to get between these events to >> figure out the "current chord". Even pygame is more programming than >he >> really wants to do, though. >> >> 2) xkeycaps looks like the opposite of what I want, but it's >described >> so poorly I can't tell for sure. It looks like I can generate >multiple >> keysyms from a single key press, but not vice versa. >> >> 3) emacs! This was actually my first suggestion, since it does almost >> everything he wants. Of course, he'd have to learn emacs first. >However, >> there's another problem that I'm not sure can be overcome. Aren't >emacs >> sequences limited such that you can't have one be a prefix of >another? >> >> For instance, he'd like to be able to do this: >> >> 'i' key down followed by 'i' key up: 'i' >> 'i' down followed by 'k' down followed by 'i' and 'k' both up: >'m' >> >> but with emacs you can have "i+k" mapped to m but then not 'i' mapped >to >> 'i'. >> ___ >> gnhlug-discuss mailing list >> gnhlug-discuss@mail.gnhlug.org >> http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ >> > > > > >___ >gnhlug-discuss mailing list >gnhlug-discuss@mail.gnhlug.org >http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
Re: simulating chorded keyboards
I'd strongly suggest looking at doing a little bit of hardware hacking via the Arduino Leonardo. It's trivially easy to make it show up as a generic USB HID keyboard, meaning no fancy driver concerns, no matter the OS. The keys could either be a handful (heh) of buttons laid out however he wants, or you could even use a PS/2 keyboard and have the Arduino interpret the keycodes and send the appropriate keypress signals via USB. A student of mine once made a Minecraft griefing controller: it basically had QWEASD, spacebar, shift, and a dedicated spamming button. The buttons worked as expected, sending keypresses, but the spam button sent the necessary keypresses to go into "talk" mode, write some nonsense like "HAHAHA n00b, you can't get me lol!!," and send it to everyone on the server. I'm sure the possibilites for good are even greater than such evil... :) On Mon, Oct 13, 2014 at 2:22 PM, David Rysdam wrote: > Remember the MIDI son? This is a different son, Kyle, with a different > project. He's interested in chorded keyboards. You can find these here > and there online, but he wants to design his own. To start, he wants to > simulate one with a regular keyboard. > > We've been looking into ways to let him flexibly define keyboard input > (chords, modifier keys, etc) but without requiring a ton of low-level > programming. > > 1) A simple game engine (pygame, e.g.) that reports "key down" and "key > up" events rather than simply delivering a pressed key via something > like read(), getchar(), etc. He needs to get between these events to > figure out the "current chord". Even pygame is more programming than he > really wants to do, though. > > 2) xkeycaps looks like the opposite of what I want, but it's described > so poorly I can't tell for sure. It looks like I can generate multiple > keysyms from a single key press, but not vice versa. > > 3) emacs! This was actually my first suggestion, since it does almost > everything he wants. Of course, he'd have to learn emacs first. However, > there's another problem that I'm not sure can be overcome. Aren't emacs > sequences limited such that you can't have one be a prefix of another? > > For instance, he'd like to be able to do this: > > 'i' key down followed by 'i' key up: 'i' > 'i' down followed by 'k' down followed by 'i' and 'k' both up: 'm' > > but with emacs you can have "i+k" mapped to m but then not 'i' mapped to > 'i'. > ___ > gnhlug-discuss mailing list > gnhlug-discuss@mail.gnhlug.org > http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/ > ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/
simulating chorded keyboards
Remember the MIDI son? This is a different son, Kyle, with a different project. He's interested in chorded keyboards. You can find these here and there online, but he wants to design his own. To start, he wants to simulate one with a regular keyboard. We've been looking into ways to let him flexibly define keyboard input (chords, modifier keys, etc) but without requiring a ton of low-level programming. 1) A simple game engine (pygame, e.g.) that reports "key down" and "key up" events rather than simply delivering a pressed key via something like read(), getchar(), etc. He needs to get between these events to figure out the "current chord". Even pygame is more programming than he really wants to do, though. 2) xkeycaps looks like the opposite of what I want, but it's described so poorly I can't tell for sure. It looks like I can generate multiple keysyms from a single key press, but not vice versa. 3) emacs! This was actually my first suggestion, since it does almost everything he wants. Of course, he'd have to learn emacs first. However, there's another problem that I'm not sure can be overcome. Aren't emacs sequences limited such that you can't have one be a prefix of another? For instance, he'd like to be able to do this: 'i' key down followed by 'i' key up: 'i' 'i' down followed by 'k' down followed by 'i' and 'k' both up: 'm' but with emacs you can have "i+k" mapped to m but then not 'i' mapped to 'i'. ___ gnhlug-discuss mailing list gnhlug-discuss@mail.gnhlug.org http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/