Author Topic: Project idea, the universal keyboard controller (Soarer's opinion needed)  (Read 4925 times)

0 Members and 1 Guest are viewing this topic.

Offline The Solutor

  • Thread Starter
  • Posts: 2262
After all the talk about custom layouts and personal preference and after a look to all the mods made with a great amount of curly wires

I had the following idea:


Why not develop an universal controller based on tensy or whatever other controller well suited for the purpose.

The controller should be provided with a number of lines sufficient to drive almost any preexistent keyboard matrix.

A database of matrix connections should be provided by the single users th build a collection of them and a related collection of customized firmwares (like we did with the pixelart images)

The controller should be easy to install in almost any keyboard, just removing the older one and connecting the lines from the new controller to the existent matrix w/o the need of any cut and paste work.

Some  PWM or analog outputs should be provided to drive some leds: just the default three ones, some additional, or even a back light system.

A good range of customizzability would be nice, to mod a basic layout according the personal preference, trough a combination of keys (a la Nortgate), trough a firmware download, or both

Optionally an output line to drive a transmitter, aimed to the ones who want to mod an existent keyboard to wireless.

I'm not a programmer nor I'm so skilled with tose kind of SOCs, but I think that the knowledge already acquired with the terminal/ps2 converter should be more than enough to start a cooperative project.

I think that could be an interesting project for a number of people.

1) the users who want to convert an unusual keyboard, like the old SGI, the terminal keyboards and so on to the PC use.

2) the users who have a mechanically working keyboard , but with broken electronics.

3) the users who need a custom layout, uncommon compact keyboards, dvorak, colemac and so on

4) the users who want to add some features to their boards, media keys, additional indicators, backlit and so on

5) the users who want to add wireless to an existing keyboard

6) the users who need some custom shortcuts for specialized purposes.

7) likely I'm missing something.

So what do you think about that idea ?
« Last Edit: Wed, 27 July 2011, 20:32:06 by The Solutor »
The problem with quotes on the Internet is you never know if they are true  (Abraham Lincoln)

Offline sordna

  • Posts: 2248
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #1 on: Wed, 27 July 2011, 20:17:06 »
Great idea, but I think most of these suggestions are already being discussed here:

http://geekhack.org/showthread.php?19458-QWERTY-to-Colemak-via-hardware.-USB-key-or-built-in-hardware-firmware

maybe you could contribute to that thread and close this one. Take a look and decide.

By the way, how come you are asking for my opinion in particular ?
Kinesis Contoured Advantage & Advantage2 LF with Cherry MX Red switches / Extra keys mod / O-ring dampening mod / Dvorak layout. ErgoDox with buzzer and LED mod.
Also: Kinesis Advantage Classic, Kinesis Advantage2, Data911 TG3, Fingerworks Touchstream LP, IBM SSK (Buckling spring), Goldtouch GTU-0077 keyboard

Offline The Solutor

  • Thread Starter
  • Posts: 2262
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #2 on: Wed, 27 July 2011, 20:29:22 »
Quote from: sordna;388465

By the way, how come you are asking for my opinion in particular ?


Mmmm...:redface:

Because I'm dumb and I wrote Sordna instead of Soarer (I'll correct it quickly)

Btw I mind soarer because it's work on nkro terminal converter, but obviously your opinion is more than welcome too, as a person who as already discussed the compact layout too.
The problem with quotes on the Internet is you never know if they are true  (Abraham Lincoln)

Offline bluecar5556

  • Posts: 126
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #3 on: Thu, 28 July 2011, 05:46:38 »
That is an excellent idea, I thought Input Nirvana's article mainly discussed a usb dongle for converting layouts?  Your thread is talking about replacing the MCU of the keyboard with a teensy for instance, no?  "2) the users who have a mechanically working keyboard , but with broken electronics."

Offline The Solutor

  • Thread Starter
  • Posts: 2262
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #4 on: Thu, 28 July 2011, 05:48:01 »
Quote from: bluecar5556;388653
That is an excellent idea, I thought Input Nirvana's article mainly discussed a usb dongle for converting layouts?  Your thread is talking about replacing the MCU of the keyboard with a teensy for instance, no?


Yes that's my idea
The problem with quotes on the Internet is you never know if they are true  (Abraham Lincoln)

Offline sordna

  • Posts: 2248
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #5 on: Thu, 28 July 2011, 09:38:09 »
Quote from: bluecar5556;388653
That is an excellent idea, I thought Input Nirvana's article mainly discussed a usb dongle for converting layouts?  Your thread is talking about replacing the MCU of the keyboard with a teensy for instance, no?  "2) the users who have a mechanically working keyboard , but with broken electronics."

Well, by the end of the first page in the other thread, the idea became something much more than a layout converter:

Quote from: input nirvana;373793
Sooo...you're proposing a stand-alone "non-keyboard specific mobile adapter" that is basically the "programmable keyboard PCB without the keyboard" Am I right?

-programmable
-re-mapping
-macros
-audible feedback
-embedded layers
-alternate layouts
Kinesis Contoured Advantage & Advantage2 LF with Cherry MX Red switches / Extra keys mod / O-ring dampening mod / Dvorak layout. ErgoDox with buzzer and LED mod.
Also: Kinesis Advantage Classic, Kinesis Advantage2, Data911 TG3, Fingerworks Touchstream LP, IBM SSK (Buckling spring), Goldtouch GTU-0077 keyboard

Offline The Solutor

  • Thread Starter
  • Posts: 2262
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #6 on: Thu, 28 July 2011, 09:48:10 »
Quote from: sordna;388714
Well, by the end of the first page in the other thread, the idea became something much more than a layout converter:


Yes btw this is what one figures reading just the title (me included): a box with an usb(or ps/2) port to connect a keyboard and another port to connect the PC, whit "something" in the middle that translates in real time.

Which anyway should be useful for a number of users.
The problem with quotes on the Internet is you never know if they are true  (Abraham Lincoln)

Offline alaricljs

  • I be WOT'ing all day...
  • ** Moderator Emeritus
  • Posts: 3715
  • Location: NE US
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #7 on: Thu, 28 July 2011, 09:50:45 »
That's why Input Nirvana is asking for help devising an appropriate title before converting that thread to a wiki...
Filco w/ Imsto thick PBT
Ducky 1087XM PCB+Plate, w/ Matias "Quiet Click" spring-swapped w/ XM Greens

Offline The Solutor

  • Thread Starter
  • Posts: 2262
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #8 on: Thu, 28 July 2011, 09:55:14 »
What about  ?

Project idea,the universal, programmable, keyboard controller/layout converter
The problem with quotes on the Internet is you never know if they are true  (Abraham Lincoln)

Offline sordna

  • Posts: 2248
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #9 on: Thu, 28 July 2011, 11:23:09 »
Seems like a good title to me!
Kinesis Contoured Advantage & Advantage2 LF with Cherry MX Red switches / Extra keys mod / O-ring dampening mod / Dvorak layout. ErgoDox with buzzer and LED mod.
Also: Kinesis Advantage Classic, Kinesis Advantage2, Data911 TG3, Fingerworks Touchstream LP, IBM SSK (Buckling spring), Goldtouch GTU-0077 keyboard


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
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #11 on: Thu, 28 July 2011, 12:56:28 »
I'm to blame that the original thread title is not very accurate necessarily for what was originally intended, and even worse now that some great people joined in to be able to make it do more. Please consider this:

The unit should be able to be used as an 'add-on dongle'
The unit should be able to be used as a keyboard controller.
The unit will 'wear many hats, you choose which'
The unit project may be a basis for 2 or 3 actual hardware/firmware units that share a lot in common...it will branch out from the single idea (Version 1, 2, and 3?).

This is why I want to collaborate on a working "Project Title" and "Tag Line", have iMav combine and move threads into a wiki, and have a structured area, and unstructured thread so this can be hashed out. A principle goal is to not compromise on this project and make it all it can be.

So, back to the working project title, it must be clean and descriptive. The units name and such can wait.

The original thread I started a Key Word List for coming up with the project title. Please add to it and lets get this moved to a wiki.
« Last Edit: Thu, 28 July 2011, 13:03:47 by input nirvana »
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 sordna

  • Posts: 2248
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #12 on: Thu, 28 July 2011, 13:12:31 »
What about the existing wiki soarer pointed to? There is a lot of overlap... maybe we can revive that one.
Kinesis Contoured Advantage & Advantage2 LF with Cherry MX Red switches / Extra keys mod / O-ring dampening mod / Dvorak layout. ErgoDox with buzzer and LED mod.
Also: Kinesis Advantage Classic, Kinesis Advantage2, Data911 TG3, Fingerworks Touchstream LP, IBM SSK (Buckling spring), Goldtouch GTU-0077 keyboard

Offline The Solutor

  • Thread Starter
  • Posts: 2262
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #13 on: Thu, 28 July 2011, 13:12:55 »
Quote from: Soarer;388806
Something like "Open Source" Generic keyboard controller?


Yea, something... :happy:

That's why I asked for your opinion, I was sure that was someone had a similar idea, but I wasn't able find it here, just some sparse projects from single users.

 I'll look in to it to understand what of the initial requirements are already meet.
The problem with quotes on the Internet is you never know if they are true  (Abraham Lincoln)

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
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #14 on: Thu, 28 July 2011, 13:32:57 »
Quote from: sordna;388828
What about the existing wiki soarer pointed to? There is a lot of overlap... maybe we can revive that one.

Ahhh...... We want to use available info, yet try not to absorb too much baggage, as well as not create our own new baggage.

I'm open to what the "group" sees as best, I feel strongly about a single location and a good working title (to attract others, we will need this). So if we can merge/copy relevant threads/posts to one wiki...and if the title of that wiki is good enough (an existing title or a new one) we can put it 'out there'.

I will aggressively push this project forward. One of my paths to this is finding the needed people/skills to keep it moving along. I'm looking outside of GH as well. I say this so you can understand my commitment to having a single wiki/thread/effort and the appropriate working title.
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 komar007

  • Posts: 712
  • Location: Poland
    • komar's blog
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #15 on: Tue, 16 August 2011, 16:23:09 »
Not sure if this is the right thread, because I've read about custom controllers on a few already, but anyway.

I'm currently building what I call a "poor man's poker", actually as a cherry POS mod (I'll hopefully post about it on geekhack soon) and I was thinking of redefining 60% keyoard experience. But then I came across this thread, and it seems that building a universal controller would be even better, so I'm definitely interested in participating (as firmware developer).

I'm now on the point of trying different features which I find useful for a mini keyboard, like conditional scancodes, layer switching and so on.
I'll just write how I would go about making a universal controller (it's basically the ideas for the firmware for my keyboard, extended for an easy to set up and use controller):

1. support for new features, that have not been used in keyboards in the market - mainly for the owners of mini keyboards (that's my basic point, as I'd like to use this firmware in my build too):
  • conditional scan codes (scan code depends on the state of other keys) - useful for keys whose use together with some modifiers is very uncommon, for example on my keyboard escape is in place of tilde/backtick and shift+escape sends tilde/backtick, which results in a tilde on the computer side, and still leaves escape on the first layer
  • macros - both simple series of keystrokes, and timed press/release events, so that gamers can cheat macro-aware protections in games
  • layers switchable in many ways, like key state (2 layers - some key pressed and released), key stroke, ability to choose multiple keys for layer switching
  • nkro support
  • more to be added...

2. simple design, easy to solder and cheap to buy fully assembled, also easy to integrate into a new keyboard build. So I'm thinking teensy 2.0 or basically anything based on atmega32u4
3. support for on-the-go programming of new layouts (to me, layout means all the layers, macros, and other configuration, according to the features list). We can achieve this by adding a simple raw hid or serial port endpoint, which will use a simple binary protocol to update layouts

I was thinking how to solve configuration (matrix layout, etc) and bootstrapping (for those who build their own keyboard or mod some very old hardware, and aren't much into programming), and I have basically found three ways, two of which I have excluded:
  • configuration on source code level - not good, because it requires the user to install the whole toolchain and mess with source files;
  • firmware generator - hard, messy and hacky, and it requires a new version of generator for every firmware release; and the only sensible option:
  • runtime configuration: if there is a gui for layout, it can also be used to program matrix connections and other features.

I see the interaction between the controller and a constructor as follows:
1. The constructor connects the matrix either to any io pins or, for simplicity, we define some of them to be columns and some to be rows and force a particular connection.
2. Optionally, the constructor assigns io pins to columns and rows of the matrix.
3. The constructor assigns key numbers to matrix coordinates using the gui and programs the keyboard with these settings. The controller saves the configuration in internal eeprom, so no reflashing, recompiling or firmware generation is necessary. Numbering the keys will make binary layouts portable between keyboards of the same number of keys, but different matrix connections.
4. Anyone who uses the keyboard programs it with layouts using the gui. The keyboard can be programmed with mutiple layouts, and the user can switch them for example with a microswitch somewhere in the back.

I'm open to comments and ideas, especially feature related.
I will write this firmware eventually anyway, so my question is, can I help the controller project by making it more generic?
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline The Solutor

  • Thread Starter
  • Posts: 2262
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #16 on: Wed, 17 August 2011, 03:19:54 »
Looks like you have more or less my idea.

To make it more generic there are just two think things that I mind.
A controlled analog or pwm line tho help adding any wanted additional led (say to show any custom layer activated) and to drive a retroillumination circuitry (and this, I presume, is easy enough)

What could be more complicated is an optional RF or BT component.


Other than looks like your view looks "universal" enough.

For now I've started sketching the Majestouch 2 matrix (very quick an dirty design). As you can see some design choices are not so intuitive. (eg. the left win key has its own column and row lines)

[ Attachment Invalid Or Does Not Exist ] 24535[/ATTACH]
[ Attachment Invalid Or Does Not Exist ] 24536[/ATTACH]


The numbers are the actual controller board pins, diodes are omitted for better readability
« Last Edit: Wed, 17 August 2011, 09:18:58 by The Solutor »
The problem with quotes on the Internet is you never know if they are true  (Abraham Lincoln)

Offline komar007

  • Posts: 712
  • Location: Poland
    • komar's blog
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #17 on: Wed, 17 August 2011, 07:56:42 »
Support for pwm and other outputs would be useful, but I think we can go further, and simply provide a number of configurable i/o pins, so that the user can choose which to connect to the matrix (and in what order) and which to diodes and so on. Then we'll take this into account in configuration protocol, and each input/output function of the firmware will be responsible for talking to the right io pins.

As for bt, most modules can be controlled with a single uart channel, so firmware support shouldn't be a problem, but it would be good to reserve some pads and physical space in the reference design.

As for the majestouch... I didn't think it looks so bad. 27 lines to read a tenkeyless... That's more than 25, which is the number of general purpose i/o we can easily provide with an atmega32u4.
On the other hand, some of the lines can be connected together, like the left win key you mentioned can be just attached to other column and row. That's what I did in my mod to limit both row and column count to 8.
But still it looks like the matrix reading code will have to be very customizable. Support for a shift register will be useful too if someone really wants to drive that many lines.
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline The Solutor

  • Thread Starter
  • Posts: 2262
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #18 on: Wed, 17 August 2011, 09:27:27 »
Quote
As for the majestouch... I didn't think it looks so bad. 27 lines to read a tenkeyless...


Yeah, I guess they  chooses a so odd scheme to limit the interferences between common key actuations, maybe even in boards w/o the diodes.

BTW this means that even more odd matrices could be expected in other boards.

Quote
On the other hand, some of the lines can be connected together, like the left win key you mentioned can be just attached to other column and row. That's what I did in my mod to limit both row and column count to 8.

Yes this is the more obvious choice

Quote
Support for pwm and other outputs would be useful, but I think we can go further, and simply provide a number of configurable i/o pins, so that the user can choose which to connect to the matrix (and in what order) and which to diodes and so on. Then we'll take this into account in configuration protocol, and each input/output function of the firmware will be responsible for talking to the right io pins.


Looks perfect. Thanks.
The problem with quotes on the Internet is you never know if they are true  (Abraham Lincoln)

Offline komar007

  • Posts: 712
  • Location: Poland
    • komar's blog
Project idea, the universal keyboard controller (sordna's opinion needed)
« Reply #19 on: Sat, 15 October 2011, 16:42:16 »
Okay,
the universal keyboard controller will soon officially be my Embedded Systems semester project, so if everything goes well, you can expect a working beta by February, 2012. I'm not sure how much of the ideas I'll manage to implement, but I'm going to open-source it anyway, so I do count on some help from other geekhackers;).

I know there are similar projects, but I had to choose something, so there it is. If it doesn't appear worthwhile, I'll just drop it. If it does, I hope we'll be able to implement all the ideas and fit it to everybody's needs later.

I'm concentrating on matrix support first (19x9 simply has to work out of the box, but I think larger matrices will be supported too) and ease of use and configuration by non-programmers.

P.S. I'm still open to suggestions. The sooner the better.
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard