[WIP] OneHand - 20% Keyboard

User avatar
PJE

23 Jan 2014, 19:19

Hi Muirium,

I've been playing around with the chording Vs 'half keyboard' type encoding. For me, I've come to the conclusion that an optimized half keyboard style can result in faster typing, with chords being left for special characters and QXZ. The main issue I have is providing quick and easy access to number keys, as I program more than I type sentences... I may see how two units work together if I ever receive the MX Reds/Browns I've ordered.

I've been working on a new version of the board which uses a cheaper Pro Micro from EBay, and will investigate using symmetric switch footprints. It would be easy to make a keypad with fewer switches and the CPU on the top, with two rows of connections, to handle the different orientations, but it's simpler for me to simply add the switches to make it symmetric as they're in the same height/width of PCB - you simply mount the switches you need.

I've also been considering adding an additional thumb switch as a second modifier, although the PCB cost jumps a fair bit if I don't stay within a 10x10cm size. I may just add a couple of connection points for additional switches within a 4row x 5col key matrix.

The code I've currently written handles chording and half-keyboard typing simultaneously, although chords need to be pressed within a defined time window to be not recognized as two, or more, separate characters. If you'd like me to send you the code, please let me know.

PS. I'll post a comparison picture of the OneHand, Matias Half Keyboard, and my Cykey chording keyboard once I've tracked them all down!
Last edited by PJE on 23 Jan 2014, 21:13, edited 1 time in total.

User avatar
Muirium
µ

23 Jan 2014, 19:24

Code would be good. I'll see what I can understand of it! The advantage yours has is that it's for one specific project and I have the hardware to run it (besides the case) all here.

User avatar
PJE

23 Jan 2014, 21:15

I'll PM you a link to the code when I get home. I need to make sure it compiles since my last mods.

User avatar
Muirium
µ

23 Jan 2014, 21:37

Cool, thanks.

Too many mods. Too little time! I know that story…

User avatar
fifted

25 Jan 2014, 03:47

Muirium wrote:How do you find the tap key implementation? Is it at all awkward, in the general sense?
I found it tricky in the case where I went to press the mod and then thought better of it. I don't currently have any tap mods, mostly because the Ergodox has enough keys for me to get by without fudging too much.

User avatar
Dubsgalore

25 Jan 2014, 04:30

I'd make great use of one of these!... http://geekhack.org/index.php?topic=532 ... msg1187988

User avatar
Muirium
µ

25 Jan 2014, 11:02

There are indeed plenty of uses for one handed keyboards!

In a push, I'd program in a special left-only layout into Soarer's Converter – using Caps Lock perhaps as the mirrored mod – and hook it up to one of my IBMs to see if I could learn it.

User avatar
PJE

27 Jan 2014, 19:14

Seems like my MX Red and Brown switches have shipped... Hopefully I'll be able to make another couple of units in the next week or so! I'll take photos as I make it to generate an assembly guide.

Once I have a couple of units I'm going to work on the TwoHand code which creates a compact split keyboard with less need for chording. I'll probably look at using one of the available alternative (Non-QWERTY) arrangements to improve the efficiency, but have a QWERTY fall back set for comparison.

I've also nearly finished the V2 design which is basically identical, but uses a $5 Pro Micro from EBay which has the benefit of being easier to install - I'm currently looking for a SMD SIL socket which will allow the Pro Micro to be plugged into the PCB without adding additional height - clearance holes would allow the pins to pass through the PCB and plug into the socket on the opposite side - I remember seeing them around 10 years ago... With the V2 I'm also looking at improving the I2C connection for LCDs/OLEDs as well as connecting units together.

EDIT: Samtec BSW series socket strips allows the socket to be on the opposite side to the CPU board. I'm not sure if there's space between the MX switches for it to fit - I'll have to do some measuring later.
Last edited by PJE on 27 Jan 2014, 19:29, edited 1 time in total.

User avatar
Muirium
µ

27 Jan 2014, 19:27

All sounds sensible to me. To add a bit of nonsensibility, I'll just mention Bluetooth (or some other wireless link?) as my persistent wish. The smaller the keyboard, the greater the benefit of going wireless, I find. And I'm yet to see a fully wireless split keyboard anywhere!

So, you find the symmetric physical layout as good as you hoped?

User avatar
PJE

27 Jan 2014, 19:37

I find the symmetric physical arrangement to be excellent for me - especially as the shifts are based on my fingers! - although the option to run two handed will make it more of a daily driver.

The issue with bluetooth is that the software complexity. I just saw this module:

http://learn.adafruit.com/introducing-b ... d-keyboard

It should be possible to link the serial TX/RX on the V2 board to this module to have the characters input via bluetooth. The only issue then would be providing power for the keyboard and bluetooth module. I'd probably need to use a 3.3V Pro Micro running at a lower speed to reduce power consumption, as well as extensive sleep mode switching to place the CPU in idle between presses.

There's always more options than time allows...

User avatar
Muirium
µ

27 Jan 2014, 19:53

Indeed. Bluetooth is a huge amount more work. About that specific module, I'll quote from another thread where it came up:
ne0phyte wrote:You can send ASCII characters via serial.
http://learn.adafruit.com/introducing-b ... via-serial

BUT it looks like it only takes ASCII, not USB keycodes which makes it pretty much unusable since your OS should take care of the keycode->symbol mapping. Ada seems to hide that part for convenience at the cost of flexibility :/
http://deskthority.net/workshop-f7/blue ... it#p128013

Hopefully Ada (and others) is getting wind that some of us want to use Bluetooth HID to make actual keyboards! Bonus points for them if they can make power saving the baseline and provide us with almost all we need.

User avatar
PJE

28 Jan 2014, 18:43

Muirium, Have you seen the Roving Networks RN-42-HID at https://www.sparkfun.com/products/10823

It looks like it'll do everything needed. You can send scan codes and modifiers in a similar way to the USB HID built into the ATmega32U4. I might see if I can drop the footprint onto V2, although it would require a 3.3V supply and level translator unless the CPU was also run on 3.3V and the clock reduced to 8MHz.

To be fully functional it would also need a rechargable battery pack and charge controller IC...

My OCD on PCB layout has kicked in big time on the V2 layout, and I may move the LEDs from the top row of keys to a simpler, more visible location where they can also be used for shift/control/alt indication.

User avatar
Muirium
µ

28 Jan 2014, 18:57

I had not, and I'm pleased you've pointed me to it. Thanks. As for power, Sparkfun does this:

Image

I've been talking with Matt3o about a dual mode USB / Bluetooth keyboard (recharges while connected by wire) and he's been looking into Sparkfun parts. I believe there's also a power controller module which can handle such charging, and even a Bluetooth antenna.

Also a good move on the LEDs. They're so easily hidden by nice caps that they're better off somewhere else, without the restrictions on size. Even RGB LEDs become feasible if you go to the top. Or those square bodied ones so popular on keyboards in the 80s.

User avatar
PJE

29 Jan 2014, 01:56

Muirium - Don't tempt me! ;o)

I think I'm going to hold off on finishing V2 until i get another V1 built up and try using two units together as this may influence my design.

I'm also considering dropping the LEDs totally, replacing them with a better integrated OLED display (although this works against a Bluetooth option). At 96mm the module shown below is almost exactly the same width as the keyboard, and would allow the layer and other options to be viewed more easily across the top of the keyboard. It's available from the wide.hk website, or off ebay.

Image

I've also picked up an old Handkey Twiddler, and need to make a USB interface for it... So many projects, so little time!

Image
Last edited by PJE on 29 Jan 2014, 02:04, edited 1 time in total.

User avatar
Muirium
µ

29 Jan 2014, 02:01

PJE wrote:I think I'm going to hold off on finishing V2 until i get another V1 built up and try using two units together as this may influence my design.
Exactly. This is why you're an engineer and I'm an enthusiast. Something tells me v2 could be really special. All the better then to learn everything from v1, first.

User avatar
PJE

05 Feb 2014, 01:00

Well my MX Red and Brown switches arrived in the mail today - Thanks 7bit!

I now have to resist rushing to make both new boards, one Red, one Brown, so I can fully document the build for posterity...

Below you can see a picture of two OneHand keyboards in the TwoHand configuration, together with my old Matias Halfkeyboard for reference.

Image

The MX Red and MX Brown switches are much quieter than the MX Blue in my original - which my wife will appreciate, but until I have them built I can't comment on the easy of typing for each style. I also need to work on the type of keycap which will work best with the design.

Hopefully I can get one of the boards made up tomorrow, although since my company has moved buildings I've lost track of the PEM inserts used to provide PCB mounting options. I'm also looking to make a couple of wedge bases to give the kayboards the lowest possible height while still giving desk clearance for the Teensy on the bottom.

On playing with them, I feel that the V2 should allow an additional double height thumb switch on each side of the OneHand (4 in total on a Two Hand) to provide a few more options without needing to drop into layers and other tricks. I had added two connection points on each side to allow a switch to be added without needing to expand the PCB size (10cm x 10cm PCBs are much cheaper than 10cm x 15cm!). I'm also thinking of tweaking the vertical offset of the outside rows to better fit my hand shape.

Finally, I'm also looking at connector options to link the two halves via I2C. I'm leaning towards either an RJ11 type connector, of a 4-pin MIN-DIN (S-Video) connector.

Now, where's my soldering iron...

User avatar
Muirium
µ

05 Feb 2014, 10:32

S-video is good, because ADB is the same connector so I have cables already!

As for switches: I think you'll like reds. They're the ideal ergo switch in the MX lineup. Browns are more polarising: either you like the little bump, or feel it's just a gritty red, as I do.

User avatar
PJE

06 Feb 2014, 02:49

Well, I managed to build my second OneHand keyboard. I'm even using it to type this post. It's much quieter than the MX Blue version which my wife appreciates...

Here's a quick photo of the two of them together. I used Red LEDs on the MX Blue unit and (brighter) Blue LEDs on the MX Red unit!

Image

I haven't finalized the link between them yet - it'll probably be a short 0.1' ribbon cable for the time being.

I took lots of photos while i was making it, and I'll put together a guide over the next few days.

MX Brown tomorrow... ;o)

User avatar
Icarium

06 Feb 2014, 08:49

So...you're going back to two handed? :)

User avatar
Muirium
µ

06 Feb 2014, 11:21

Two handed mode has always been in the plan (look at the first and second post). Think of the OneHand as a split ergo keyboard with independent single handed functionality. It's a sneaky wee beast!

User avatar
PJE

06 Feb 2014, 13:36

Icarium wrote:So...you're going back to two handed? :)
As Muirium stated, the design was always intended to be usable with either hand or two hands depending on the application.

If typing speed is needed you can not beat a two handed keyboard with a single hand, but in certain typing limited applications the ability to type everything with one hand while doing something else with the other... ...like holding a mouse will always be useful.

I see the uses of the OneHand as being a Numpad for a TKL keyboard, a macro/gaming pad for a standard keyboard. A way to totally prevent other people from using your PC at work (without plugging in another keyboard)! The options are endless. In TwoHand mode it becomes more of a daily driver.

I'm very happy how the MX Red unit came out (no soldering mistakes requiring a jumper), although there's something in the MX Blue action that I like. The action/noise of the MX Red and MX Blue units are too different to use them together, so I'm focusing on getting the MX Red and Brown units working together as their switch action and noise are closest.

Having used both together, I think my original LED concept wasn't too far from optimum, and I may use the USB Serial channel to provide a small status window on the PC screen rather than needing to keep looking down.

User avatar
PJE

07 Feb 2014, 01:30

I've just finished building the MX Brown version. Unfortunately I only have enough key caps for two, so I removed them from my original MX Blue unit... :-( I need to finalize the optimum cap arrangement and order a few sets...

Tomorrow I'm going to start work on the code to run both hands simultaneously, with one acting as an I/O expander for the other.

I'm also looking at making a low profile base which would mount both units in an ergonomic arrangement.

User avatar
clickclack123

07 Feb 2014, 01:56

PJE wrote:I've just finished building the MX Brown version. Unfortunately I only have enough key caps for two, so I removed them from my original MX Blue unit... :-( I need to finalize the optimum cap arrangement and order a few sets...

Tomorrow I'm going to start work on the code to run both hands simultaneously, with one acting as an I/O expander for the other.

I'm also looking at making a low profile base which would mount both units in an ergonomic arrangement.
It's cool that you are working on this yourself, but you should be aware that MOZ on geekhack is working on a very similar sounding thing on geekhack here for the next Ergodox, not chorded but still having two independent sides that can talk to each other.

Perhaps you guys could share code if you put it up on Github or something.

User avatar
PJE

07 Feb 2014, 20:02

clickclack123 wrote:It's cool that you are working on this yourself, but you should be aware that MOZ on geekhack is working on a very similar sounding thing on geekhack here for the next Ergodox, not chorded but still having two independent sides that can talk to each other.

Perhaps you guys could share code if you put it up on Github or something.
This project is something I've wanted to do for a number of years, but always put off. It's a bit of rest and relaxation from my day job, and the work is almost as enjoyable as the result.

I'm more than happy to share my work with others, although I was intending to make a V2 before releasing the code too widely.

I've been interested in the Ergodox in all its versions, and the new compact portable versions are very close in concept and execution to the TwoHand version of my keyboard. I was also looking at small 40% keyboards without the number row, but came to the conclusion that a small split design would be more comfortable to type on and not be much larger.

User avatar
Muirium
µ

07 Feb 2014, 20:13

MOZ (aka Mohitgarg) is making us acrylic cases for our OneHands, so there's definitely collaboration of sorts going on already!

By the way, PJE, if you're interested in some caps that look like these:
Image
Round 5 is closing soon (supposedly final boarding is the end of this month now) and is due to ship in summer, if you have patience. One $19 kit of blanks literally has my name on it:
Image

User avatar
Iacoizumi

07 Feb 2014, 21:07

Muirium wrote:Round 5 is closing soon (supposedly final boarding is the end of this month now) and is due to ship in summer, if you have patience. One $19 kit of blanks literally has my name on it:
Image
Jeez Muirium, pushing that keycap set of yours everywhere you can, eh?

Trying to push the price down even further? :)

User avatar
Muirium
µ

07 Feb 2014, 21:37

It's already the cheapest price per key of the entire group buy, so I don't expect improvement on that front. But what can I say? SA profile really floats my boat!

User avatar
PJE

08 Feb 2014, 01:19

Muirium wrote:Round 5 is closing soon (supposedly final boarding is the end of this month now) and is due to ship in summer, if you have patience. One $19 kit of blanks literally has my name on it:
Thanks for the suggestion. I might buy a set or two.

What keys (Rows) are you using in the various positions on your OneHand?

User avatar
Vierax

08 Feb 2014, 02:47

Glad to see all the improvement you made !

In the picture showed by Muirium, the row seems to be like this :

12345 in row 1
A/$^Z in row 2
SPACE QÙM BACKSPACE in row 3
and <*! in row 4 (witch is the same profile than row 2 but 180° turned)

All row 3 board (flat profile) must go with a bunch of deepdished keys for the typist homing row.
The SA profile is very thick so leds can't really use the transparency of the caps (as your wasd keyset does) and even if they exist, windowed SA are pretty rare and more expensive. The major problem I see is that I only saw them in row 1 profile witch is the tallest so it makes an high step between row 1 and 3 : If the mold is not already made it should be expensive in a GB :( .

User avatar
PJE

08 Feb 2014, 16:39

I managed to get both units working together last night, but my ribbon connection is not up to the job - it kept dropping connections. I'm going to directly wire them together in the short term if I can't fix it quickly.

The second keyboard scans the keys and sends them to the main unit via a i2c message. The main unit then decides what to do. At present I have the second half sending the 'modded' characters, allowing the modifiers to select numbers and cursor rather than needing a layer.

My main concern is coming up with a keyboard layout which can adapt between one and two hands without compromising either too significantly. At present the main characters are all on the right hand. I may switch some keys between hands to level things out.

Has anyone had experience having two teensy modules connected to a single PC. I'd like to be able to program both units without the constant plugging and unplugging...

Post Reply

Return to “Workshop”