Need reality check

First off, I've never posted here before, so please let me know if I'm in the wrong place.

As the title indicates, I need a reality check. You see, I'd really like to build my own keyboard. I've used many different kinds of keyboards over the years, and none has thus far been the perfect keyboard, so I'm starting to think, if I want it done right I'll have to do it myself.

The rub is I don't really have the skills to do it. A keyboard is not a complicated device, but complicated enough. So what I really want to know before jumping head first into this great unknown and landing unceremoniously on my head is, should I even try?

My background: I'm a software engineer with over 10 years of experience. I haven't written anything in assembly code since I was 16

- that would make it 22 years. I have _some_ electronics experience. I went through electronics tech school at Keesler, AFB back in '93, but never really did anything with it. (When I got to the field, I found that the extent of my troubleshooting would be to determine which black box on the aircraft had failed, to properly fill out a work tag, and to swap said black box with its working replacement. Disappointing to say the least.) Oh, and I own an oscilloscope.

I really don't know where to start, but I've got a lot of ideas. The keyboard should be flash programmable, ideally from the device itself, so hacking an existing keyboard is off the table. I've already designed a couple of layouts. Any help or direction would be of great help, even if just to say, "go away, you're biting off more than you can chew."

Thanks, David

Reply to
David Whetstone
Loading thread data ...

What problems with existing keyboards, exactly, are you trying to solve?

Jon

Reply to
Jonathan Kirwan

I think the main issue with building a keyboard is going to be the need to consistently fabricate a large number of identical mechanical parts.

The embedded software will be comparably much simpler... a few days off and on hacking. Building the mechanical part is the challenge.

If you can find a mechanical part your are happy with, or which you can modify to suit that should make your project a lot more practical/ inexpensive.

There may be discrete key mechanisms that would be acceptable; don't expect them to be cheap though. Good keyboards used to cost $200+ before the use of throwaway-quality fabrication techniques became the norm.

Reply to
cs_posting

Ah, that could take a while to explain. Let's just say I've tried just about every type of keyboard you can think of save for the more esoteric ones such as the DataHand or various chording keyboards. The crux of the problem for me is that I don't want to have to reach my fingers far from the home row, so the keyboard should have less reaches and more modifier keys.

Reply to
David Whetstone

There's no problem there, as I have a small collection of old individual keyswitch keyboards from which to scavenge parts. Even brand new switches would only set me back $70-80 for a set of 100.

Putting the keyboard together is a relatively known quantity for me. But when I look at the electronics aspect, I see a lot of black holes. I have questions like: how do I interface with USB and make my device conform to the HID standards? What microconroller do I use? How do I interface with flash memory? Will I have to design my own circuitry, or is there an off the shelf kit I can buy? If so, which one? And so on.

Reply to
David Whetstone

You do not describe what exactly do you mean by a "perfect keyboard". I am going to guess this means a keyboard to be connected to a standard desktop or laptop computer, and you are not happy with the physical layout of the ones you used in the past.

If you want to learn about microcontrollers by making your own keyboard project, by all means go ahead. Choose a small microcontroller development board, learn to interface it to a key matrix in one side and to a computer on the other, develop your own macro facility etc.

But if you just want a custom keyboard, I would first:

(a) Research. There are more varieties of "keyboards" out there than what most people think. For example:

formatting link
formatting link
formatting link
formatting link
formatting link
(Advantage models)
formatting link
formatting link
formatting link

(b) If no existing keyboard answer your needs, make your own (switches, housing,) while reusing the electronics from an existing keyboard. The main problem you may find is that the key codes will likely not match the key positions anymore. That can be solved remapping the keys in the receiving side.

There are several keyboards with on-board macro capabilities (Twiddler and Advantage in list above, sure there are many more) so hacking an existing one should be put back in the table for a while.

Roberto Waltman

[ Please reply to the group, return address is invalid ]
Reply to
Roberto Waltman

Have you established positively that whatever remapping you want to do can't be done by writing a software stack on the host computer?

Reply to
larwe

Forgot the one you want: Ergodex DX-1 ;)

formatting link

Roberto Waltman

[ Please reply to the group, return address is invalid ]
Reply to
Roberto Waltman

Thanks, Roberto, for your reply.

I'm sorry, I was not specific enough. Your assumptions are correct.

So then, in your opinion, this is within the realm of 'mere mortals'? This was the crux of my question, as I have almost no experience with this aspect of the project. Do you have any microcontroller development boards that you would recommend?

Research I have done. I have tried many different keyboards over the years. The best one so far has been my Kinesis contoured keyboard. The one that had the most promise was my Fingerworks Touchstream LP

formatting link
which is sadly out of production. My latest trial is with the TypeMatrix 2030. A good keyboard save for the bad placement of the modifier keys. I have no interest in chording keyboards.

I thought about gutting an existing keyboard, but I really wanted programmability and more modifier keys than a standard keyboard.

I wouldn't consider gutting my Kinesis, since I still use it and to replace it would cost me over $300. Other programmable keyboards are similarly priced, so buying one just to scavenge its electronics seems too high a price to pay.

Thanks again for your comments, David

Reply to
David Whetstone

That's very cool. I looked at this a while back, and it could almost work, but it has a few shortcomings. First, it requires special drivers and software. Second, there are no drivers for the Mac, which is my main platform these days.

It could be useful for prototyping layouts though.

Reply to
David Whetstone

Some of the things I'd like to do could be done through remapping software. In fact, just before I sent my initial post I was working on writing a replacement HID driver on the Mac. But in addition to changing which key does what, I also want to change the physical placement of the keys, which, short of the ergodex keyboard Roberto mentioned, I can only do if I build it myself.

Another reason I wish the remapping to be internal to the keyboard is that I don't want to have to load a driver or alternate keymap on every computer that I use. It's already a pain to have to switch from Dvorak to Qwerty whenever someone else wants to use my computer.

- David

Reply to
David Whetstone

So far, you have not described what is _electrically_ wrong with the keyboards, just the ergonomics. If the issues are only placement, you can design your own, with a simple patch-cable to any keyboard electronics. if you like that enough to make a number, then the nextstep is a standard keyboard scan chip, and a new PCB design - (still no software is needed yet ...)

For chips, you can either attack existing cheap keyboards (and probably get an outercase, and a cable for free... ), or look at the demo-boards from companies like Cypress that make USB keyboard chips.

-jg

Reply to
-jg

Though it looks like the hackers are at it:

formatting link

Reply to
David Whetstone

I concur with the other comments that given your background, you should be perfectly capable of learning, but that it's probably not a worthwhile use of your time unless you will derive some pleasure or benefit from the newfound capabilities which go beyond this one particular project.

It also sounds like you have the mechanical aspects under control, so I shall try to address your questions regarding the interface. I would say that this newsgroup is generally appropriate for this kind of question.

USB is a bit of a hassle; the PS/2 protocol is, in my opinion, more accessible and would be lower-hanging fruit.

I recommend that you start with either the PIC or AVR microcontroller, both of which are popular 8-bit microcontrollers with cheap development environments (

Reply to
Terran Melconian

Ideally, the keyboard will have the ability to store multiple keymaps that are selectable from the keyboard without special driver software on the computer. Any key should be mappable to any other key or keys, including modifier keys. This would prevent me from scavenging from any but the more expensive keyboards.

I don't really plan on producing this. It's only for my own use. If it actually comes to fruition, I may consider publishing my designs, should anyone else find them worthy of duplicating.

I was poking around on Cypress's website, but I wasn't sure where to start. I found a USB development kit that _looked_ like it would do the trick, but it was about $900. A bit pricey.

- David

Reply to
David Whetstone

I derive pleasure from just about anything that lets me learn something new. I only wish I had infinite time ;)

Since I'm primarily on the Mac, and PS/2 to USB adapters have given me headaches in the past, ultimately I'd like the keyboard to be USB. But I'm not against starting with PS/2. Will I lose a lot of ground if I start the project as PS/2 and later decide to convert to USB?

Reply to
David Whetstone

I do not believe so. While your specific understanding of PS/2 will no longer be applicable, that is not the greater part of what you will have learned.

I can try to answer questions, but my situation is different than yours, and many of my choices were made for reasons which are no longer relevant and then continued for inertia, so I do not think I could make specific recommendations which would not be misleading.

Some links to further information:

formatting link
formatting link

formatting link
formatting link

Perhaps the best thing would be for you to do some basic research and then come back with either more specific questions or a draft plan for people to flame^Wcritique.

Reply to
Terran Melconian

That's a very broad requirement, and one that will need more complex than normal keyscan. Most keypads have a few keys they can tolerate dual-action from (Alt,Shift,Ctrl etc ), with others they have limits on multiple keypress, plus there are roll-over features where they can tolerate key-overlaps.

Probably the easiest way to roll a one-off (least SW) solution, would be to look at devices called Analog Crosspoint Switches. (eg Intersil CD22M3494 ) - this can wire across a 8x16 scan matrix, and emulate any keys you want. (another smaller one would be used for the Shift/Ctrl/Alt... key matrix) this is also easiest to debug.

Then, you need only code a scan system for your keys, and a table scheme, to remap them via the Crosspoint, onto whichever keypad you want. At the output end, full kbd operation would result; At the IP (your scan) end, you may need more than the minimum pins, for allow map-arbitary multiple key presses, so choose any low cost uC with a lot of IO pins :)

Other suppliers in the USB arena are Atmel AT90USB, and some 89C51's SiLabs Here is one example appnote from SiLabs

formatting link
ST

-jg

Reply to
-jg

It's hard to offer any suggestions without knowing what resources you have and what you are considering as problems to solve.

For example, I happen to like reed-relay switches and I dislike the feel of keys on most modern keyboards now. So that might be your desire, too. But then that poses its own problems and solutions.

In any case, you need to specify if your connection is to be the old large PC keyboard connector (which actually allows downloading code into the CPU, by the way) or the newer PS2 connector or USB or some other means. USB will pose more software and hardware issues than the other two, I believe. Or, at least, I know how to do the others myself but not the USB part -- so it may just be my impression about it.

Scanning keyboards and producing make/break keycodes, with repeating capability, n-key rollover, and so on is yet another chore.

I read from you elsewhere that it is mostly key functions and positioning. You __might__ consider the idea of taking an existing keyboard that already has the USB connection and associated driver and internal software in it, strip off the keys that exist to expose the contacts they make, use another processor that makes an apparent connection under it's control (scope the signals to make sure you can fake them with your processor or else add mosfets to simulate the key connection) and drive all that from your own micro. Doing the observation of one key arrangement and then faking the production of normal keys may be an easier chore. Or not.

Jon

Reply to
Jonathan Kirwan

Something I'd strongly suggest is taking a look at

formatting link
- they're a UK company that has more strange keyboards than you can shake a buckling spring at. They even have some that I like, and I'm a dyed-in-the-wool Model M IBM fan. (though in a pinch I'll take Unicomp's versions ;P)

Seriously though - they have input devides that can meet almost any combination of aesthetic, ergonomic and functional needs.

pete

--
pete@fenelon.com "it made about as much sense as a polythene sandwich"
Reply to
Pete Fenelon

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.