Author Topic: AcidFire's modular keyboard system - Axios [In Development]  (Read 660726 times)

0 Members and 1 Guest are viewing this topic.

Offline yumea

  • Posts: 15
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1350 on: Mon, 16 June 2014, 11:34:53 »
I find your aim to make something like japanese work within the board instead of on the PC side extremely interesting, in part because it falls in with the direction of the board not requiring support on the PC side to function (also because I love the language).
That's exactly what I thought. That's not a perfect solution, because you still need an IME installed (or a program with integrated japanese support, like JWPCE which can be carried on a USB key). But at least you won't need to install drivers for the keyboard to support kana entering. Just maybe some configuration to set up the henkan & muhenkan keys.

Small configuration tweaks in the keyboard can be done without installing anything, anyway (I even used the capslock / numlock LEDs in the past to send data back to a custom device acting as a fake keyboard for the system). As long as the PC believe you're entering Hepburn sequences, that'll do I think.

if you want to write in real japanese, you would want to get kanji and katakana out as well, not only hiragana. for this aim you would need an ime anyway - or program your own equivalent to it, which would be be extremely laborious.
however, a keyboard layout for japanese input is what i am interested in setting up, too. but i am rather tying with the japanese ergonomic m-system layout (http://xahlee.info/kbd/Japan_M-Type_TRON_keyboards.html) to clone it partly on acidfire's keyboard.

additionally to this, like i have mentioned before, i want to use an adjusted version of the flux1.01 layout (http://wiki.neo-layout.org/wiki/Flux1.01 adjusted similar to http://wiki.neo-layout.org/wiki/Ergodox) for german input  - moreover the standard layouts for korean (i guess, this is just qwerty converted by the korean ime into korean) and russian.
i would also like to make an additional (7th) layer for character strings per key (like sending "i n t Space m a i n ( ) Return { Return Return } Uparrow" to speed up programming) in the adjusted flux1.01 layout.
will it be possible to make such a character code string layer - and also create a layout switch key?
« Last Edit: Mon, 16 June 2014, 11:40:11 by yumea »

Offline kfmfe04

  • Posts: 92
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1351 on: Mon, 16 June 2014, 12:01:35 »
I type in Mandarin and Japanese all day long (using pinyin and romanization), so I totally agree with yumea's sentiments...  ...let the IMEs do all the work - typing in CJK languages are complicated enough that programmers have spent tens of thousands of hours to get them to work well - in the present state, it still takes human knowledge of the language to select correct characters even though the software is getting better at guessing: would be backwards to try to re-engineer any of this and load it into firmware, especially given how many languages are out there, and the complexity of each language.

Yumea's is also right about some kind of switch/arrow-keys/wheel which lets you select which layer you are using, but then this begs the use of an LED or some kind of beep-feedback (eg number of beeps?) which tells you which layer you have selected.
⌨White Blank HHKB P2 ⌨Filco TKL SA MXRed
Interests: ⌨AcidFire's Board ⌨Kinesis Advantage LF

Offline Koren

  • Posts: 133
  • Location: France
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1352 on: Mon, 16 June 2014, 14:00:42 »
if you want to write in real japanese, you would want to get kanji and katakana out as well, not only hiragana. for this aim you would need an ime anyway - or program your own equivalent to it, which would be be extremely laborious.
Yes, of course. I think I wasn't clear enough.

My idea is quite simple : all computers can produce japanese text using an IME (even without installing anything, I sometimes use programs like JWPCE which has its own IME included, although not as efficient as Mozc e.g.). Using a normal keyboard, you can do this by typing Hepburn sequences with alphanumeric characters.

But I want my keyboard to act as an kana keyboard (kana nyûryoku) WITHOUT requiring to installing a japanese keyboard driver. A key on the keyboard corresponds to a kana (when the kana layer is active), and when you press it, the *keyboard* translate the key into a Hepburn sequence of ASCII keys. So you can use the IME by typing kanas (and still using the IME for kana>kanji translation) but you don't need to type 'k' then 'a' for 'ka', but directly 'ka'. Still, the IME believes you're entering alphanumeric characters on a normal QWERTY keyboard.

Two reasons for typing kanas instead of Hepburns sequences: a lower number of presses are needed (nearly half less) and with an ergonomic layout, 'w', 'k' and 'y' are not the easiest to reach (at least in french) so typing japanese would become more difficult (and I don't want a layer per-language for alphanumeric keys).

Most japanese people use QWERTY to enter kana/kanjis, but that's mostly because (according to japanese people I know):
- the placement of kana keys is awful and inconvenient (and there's not enough reachable keys on a QWERTY keyboard to change this), and some of the most useful kanas are really far from the home row
- the placement itself seems as random as QWERTY (would be interested to know a reason for this placement if there's one besides "historical placement on typewriters"), so it's very difficult to memorize two layouts, especially if there's twice as many keys as A-Z

I knew about TRON keyboards, they're really nice, I even considered buying one (although it's not easy to import them, and even in Japan, they're nowhere to be found in normal shops). But they're usually not cut in half, not (enough) tented to my taste, usually seriously lack keys for a programmer, and most importantly aren't as customizable as keyboards with microcontrollers.

Most probably those ergonomics keyboards have a clever layout (a kana-dvorak of sorts) for kanas I could copy, but I won't try... I don't enter enough japanese, currently, to warrant learning a complex layout. I'll rather have a finger per vowel (i-u-a-e-o) and a row per sound (t, r, n, -, r, s, h, m) plus keys for y*, w*, n and other special keys (henkan, muhenkan, IME control, hiragana/katakana switch, etc.). And a modifier for ° and " (or deadkey, but with thumb clusters, I prefer a modifier). So, easily remembered layout... I've just chosen the position of each vowel/sound depending on the frequency of each kana, so it's already far better than 'normal' kana keyboards in Japan (tried it on AZERTY keyboard, it's efficient, but I lacks some keys on AZERTY so I lack some kanas, and the lack of programmability makes transforming ka + small-ya in kya tricky, although definitively possible).

i would also like to make an additional (7th) layer for character strings per key (like sending "i n t Space m a i n ( ) Return { Return Return } Uparrow" to speed up programming) in the adjusted flux1.01 layout.
will it be possible to make such a character code string layer - and also create a layout switch key?
Definitively. That's macro keys for you (if it's not in the standard configuration program, it'll definitively be possible in the one I'll try to develop). The only issue could be memory, but there should be plently of memory.

I also considered this (I actually have the layer for this ready for C++, Python and even for TeX). But I'm not sure I'll actually do it, since my editor do mostly the same by using a key then a shortcut (two presses, the same as a layer change). The shortcut would be a direct key on the keyboard. The editor seems a better option to me because it's content-aware. Of course, it's less portable, but I travel with my editor on a key anyway (I can't use an editor with different colors, different shortcuts, etc.)


And by the way, I think you can do far more than that with programmable keyboards (in-keyboard copy-paste, keylogging, cryptography, one-time passwords, etc.). I've far more ideas than I have time for those ^_^  AcidFire, I sure have great hopes for firmware hacking with the Atmega ;)


The first one I'll do, though, is creating a "clever close" key: the keyboard remember your last ( [ { and " using a stack, and when you press the "close" key, it types ), ], } or " based on the stack.

So :

fun(table["key"])

can be entered by

f u n ( t a b l e [ " k e y CLOSE CLOSE CLOSE

(I'd like, if possible, to add a small screen displaying the stack state, too, so that I know how many things I still need to close and which one)

Yes, I've done some LISP in the past, maybe that's where I get this idea ^_^
« Last Edit: Mon, 16 June 2014, 14:50:46 by Koren »

Offline AcidFire

  • Thread Starter
  • Posts: 399
  • Location: Calgary AB
    • Axios - The Open Source Modular Ergonomic Keyboard
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1353 on: Mon, 16 June 2014, 14:52:54 »
is there a release date yet??
where can i sign for the first batch??
do you have a website with news or do you use this forum alone??
will it be a kit like the the ergodox??
do you have a price yet??

 
- Still aiming to get the campaign done for the end of the month, but that'll depend on the delivery of the boards.
- You can sign up for notification of the campaign over at CrowdSupply
- I do have a very negelected website that I'll be working on once the physical side is done to the point I can put a video together. I will also be setting up a support & discussion forum there as well.
- It'll be available both as a kit or preassembled.
- Roughly $170 for the kit, $200 assembled.

I think the only way to improve on this for me is to have the key to the right of the arrow keys be a scroll wheel. (As long as I'm greedy, maybe a tilt scroll wheel :) ).

I have a thought as to where one might fit, but a scroll wheel is a

in the world of wailing shred guitar we have handy allen key holders like this http://guitarheads.net/products/hardware/misc/allen.html maybe you can work something like that into the design.

more variations on the theme here: https://www.google.co.uk/search?q=guitar+headstock+allen+key&source=lnms&tbm=isch&sa=X&ei=oPydU5XPIsH80QX61oDoDQ&ved=0CAgQ_AUoAQ&biw=1753&bih=847
My thinking was along the same lines but without requiring the hardware. I had a thrustmaster HOTAS setup that you could disconnect with an allen key that was stored in the bottom of the throttle like so:


There's enough space in the design so I'll be working on integrating a key for the prototypes to see how it works out.

if you want to write in real japanese, you would want to get kanji and katakana out as well, not only hiragana. for this aim you would need an ime anyway - or program your own equivalent to it, which would be be extremely laborious.
however, a keyboard layout for japanese input is what i am interested in setting up, too. but i am rather tying with the japanese ergonomic m-system layout (http://xahlee.info/kbd/Japan_M-Type_TRON_keyboards.html) to clone it partly on acidfire's keyboard.

additionally to this, like i have mentioned before, i want to use an adjusted version of the flux1.01 layout (http://wiki.neo-layout.org/wiki/Flux1.01 adjusted similar to http://wiki.neo-layout.org/wiki/Ergodox) for german input  - moreover the standard layouts for korean (i guess, this is just qwerty converted by the korean ime into korean) and russian.
Far enough, I'll let Koren take it for a spin on his board and we'll see how it works out.

quote author=yumea link=topic=44940.msg1367439#msg1367439 date=1402936493]
mentioned before, i want to use an adjusted version of the flux1.01 layout (http://wiki.neo-layout.org/wiki/Flux1.01 adjusted similar to http://wiki.neo-layout.org/wiki/Ergodox) for german input  - moreover the standard layouts for korean (i guess, this is just qwerty converted by the korean ime into korean) and russian.
i would also like to make an additional (7th) layer for character strings per key (like sending "i n t Space m a i n ( ) Return { Return Return } Uparrow" to speed up programming) in the adjusted flux1.01 layout.
will it be possible to make such a character code string layer - and also create a layout switch key?
[/quote]
Yes, this should be entirely doable with the macro setup. And you'll be able to create several different types of layer keys:
- Switch (Up/Down)
Fairly self explanatory I think. Cycle up and down through layers
- Toggle
Toggle's a targeted layer on and stays on until released.
- Favorites
Jumps to the assigned layer's position in the layer stack.

My friends in a robotic club find SMD "not challenging enough" and are doing BGA soldering now for FPGAs and microcontrollers, using a custom oven. As crazy as it sounds, it (usually) works. So I have some experience in SMD soldering (they design nearly everything this way), but I still don't like it much.

At least, you still see the components... In my lab, diods were packaged in capsules (like drugs) because they were as thin as hairs. I remember trying to find one fallen on the floor, the hell it was! ^_^
Yeah I just don't like being hunched over while doing it, hard on my back :P And I can only imagine what kind of hell that would be!

I have found that having the navigation keys tucked into that spot has lead to accidents on my TECK. But that has a lot to due with habits that I'm having to change. I expect the Axios layout will lead to even more accidents as I'm climbing the learning curve. There have been times when I've wished they weren't tucked in quite as close or that there was some sort of tactile indication that my fingers were on a navigation button instead of whatever I thought it was.

I don't think they'll be quite as problematic as the wrist supports should lift your hands a bit higher than the TECK does, however it's also possible to use some kind of homing bump or the deep dish keys so you can feel when you hit them.

Do you have a plan for indicator lights? (Caps lock, num lock, something programmed)
Yumea's is also right about some kind of switch/arrow-keys/wheel which lets you select which layer you are using, but then this begs the use of an LED or some kind of beep-feedback (eg number of beeps?) which tells you which layer you have selected.
I'm still looking at where I can possibly get indicator lights on the board, without resorting to using the backlight LEDs as indicators. I'm thinking of tucking them under the arrow keys closer to the thumb cluster on the bottom. Alternatively, I'm also looking at a raised section above the 1.5u keys but that would cause problems with 3D printing the design. Regarding the beep, there is a peizo on the board so that could be used for layer indication as well, but definitely in conjunction with the LEDs as I'm sure those sharing office space would want to turn the beeping off.

Offline Koren

  • Posts: 133
  • Location: France
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1354 on: Mon, 16 June 2014, 15:44:10 »
- Still aiming to get the campaign done for the end of the month, but that'll depend on the delivery of the boards.
Nice!

I'm still looking at where I can possibly get indicator lights on the board, without resorting to using the backlight LEDs as indicators.
Additional LEDs are always welcome, but I don't find using backlight LEDs (so there's indeed backlight LEDs for the first version? That's great...) such a bad idea, actually. I can't look check a status light without actually looking at the keyboard if there's several LEDs, but changing the backlight color depending on the layer/status can provide information about the active layer just using the peripheral vision... I think it's one of the useful uses for the backlight, besides just being "cool".

In short, customizing options are great ^_^

Offline QuadGMoto

  • Posts: 137
  • Location: Pennsylvania
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1355 on: Mon, 16 June 2014, 15:48:53 »
I'm still looking at where I can possibly get indicator lights on the board, without resorting to using the backlight LEDs as indicators. I'm thinking of tucking them under the arrow keys closer to the thumb cluster on the bottom. Alternatively, I'm also looking at a raised section above the 1.5u keys but that would cause problems with 3D printing the design. Regarding the beep, there is a peizo on the board so that could be used for layer indication as well, but definitely in conjunction with the LEDs as I'm sure those sharing office space would want to turn the beeping off.


Here's a couple of ideas: At the top of the thumb pad. On the inside edge of the main board.

Offline jeep

  • Posts: 33
  • Location: Hillsboro
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1356 on: Mon, 16 June 2014, 21:07:45 »
Quote
I have a thought as to where one might fit, but a scroll wheel is a

Oh man, left me hanging...

On another note... End of the month!?!? Woo hoo. Excited to see this see this project hit the end zone and see what comes next.

-JEEP

Offline Larken

  • Posts: 624
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1357 on: Tue, 17 June 2014, 02:49:02 »
glad to see this come to fruition. amazing work as always, Acidfire.
| Ergodox #1 | Ergodox #2 |


Filco Majestouch Brown | Ducky 1087 Brown | Cherry G80-3494 Reds | Unicomp Ultra Classics | Cherry G80-8113 Clears |

Offline vatin

  • Posts: 184
  • Location: Bangkok, Thailand
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1358 on: Tue, 17 June 2014, 18:59:31 »
In the spirit of searching for a better input device and not to derail the thread by any means, are you guys aware of the King's Assembly mouse keyboard combo? Preorder has started already.
OLKB Planck V6

Offline sordna

  • Posts: 2248
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1359 on: Tue, 17 June 2014, 20:17:45 »
Looks like it forces you to type with your hands planted on the device. That's quite bad for RSI. It's a nice concept but primarily a pointing device and not for serious typing in my opinion. I give it points for straight key columns though!
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 jacobolus

  • Posts: 3661
  • Location: San Francisco, CA
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1360 on: Wed, 18 June 2014, 02:21:40 »
In the spirit of searching for a better input device and not to derail the thread by any means, are you guys aware of the King's Assembly mouse keyboard combo? Preorder has started already.
http://geekhack.org/index.php?topic=57497.0
http://geekhack.org/index.php?topic=54723.0

Offline yumea

  • Posts: 15
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1361 on: Wed, 18 June 2014, 10:51:34 »
Thou shalt have no other keyboard before AcidFire's.
In AcidFire we trust.
;)
« Last Edit: Wed, 18 June 2014, 10:53:33 by yumea »

Offline AcidFire

  • Thread Starter
  • Posts: 399
  • Location: Calgary AB
    • Axios - The Open Source Modular Ergonomic Keyboard
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1362 on: Wed, 18 June 2014, 22:51:08 »
Quick update for tonight. While it still needs some tweaking, I have the rough design done for the tenting to be built into the casing.

Flat:



15° incline:



30° incline:



This design currently supports between 0-30° inclines.

This plate shares the anchors for the center pieces that allow the main clusters to be connected for a central board as well, and is completely removable. Next up is the wrist rest :D
« Last Edit: Wed, 18 June 2014, 22:54:36 by AcidFire »

Offline clickclack123

  • Posts: 357
  • Location: Australia, Mate!
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1363 on: Thu, 19 June 2014, 00:11:05 »
Needless to say, this looks fantastic, Acidfire!!

I'm very keen for this to come to fruition. I'm in for at least one for sure.

Offline JackMills

  • Posts: 153
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1364 on: Thu, 19 June 2014, 01:44:40 »
Does it add to the thickness of the case or did you manage to keep it the same size (referring to an older post where you compared the case to another keyboard)?

Edit: It seems to remain quite the same after taking a better look at the pictures

The more I look at it, the more I wish I had one
« Last Edit: Thu, 19 June 2014, 10:10:26 by JackMills »

Offline EvillePanda

  • Posts: 113
  • Location: Tulsa, OK
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1365 on: Thu, 19 June 2014, 09:10:05 »
That looks badass.  I'm really excited for this keyboard now.
Visit the Typing Test and try!

Offline conandy

  • Posts: 43
  • Location: Denver, Colorado
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1366 on: Thu, 19 June 2014, 19:03:50 »
when the thumb cluster gets attached, I'm a little afraid that is going to get a little tippy towards the middle. Great idea, though, on the lift mechanism.  I have toyed with similar ideas in my head for how to add tenting to a flat split keyboard.   Glad to see someone with the time and facilities to try ideas like that out so quickly.  Let us know how that feels once you have thumb cluster attached and start pounding on the keys.   ;D

Offline yakitysax

  • Posts: 51
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1367 on: Thu, 19 June 2014, 20:51:20 »
Quick update for tonight. While it still needs some tweaking, I have the rough design done for the tenting to be built into the casing.

Flat:
Show Image

Show Image


15° incline:
Show Image

Show Image


30° incline:
Show Image

Show Image


This design currently supports between 0-30° inclines.

This plate shares the anchors for the center pieces that allow the main clusters to be connected for a central board as well, and is completely removable. Next up is the wrist rest :D

That latest keyboard iteration looks amazing. I LOVE how you have implemented the tenting and original grand piano thumb cluster orientation. Can you explain how the thumb cluster achieves the custom angle that is not fixed? I really dig it but I do not see exactly how it works. It looks super smart though.

Offline pdf

  • Posts: 3
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1368 on: Fri, 20 June 2014, 01:18:07 »
I'm still looking at where I can possibly get indicator lights on the board, without resorting to using the backlight LEDs as indicators. I'm thinking of tucking them under the arrow keys closer to the thumb cluster on the bottom. Alternatively, I'm also looking at a raised section above the 1.5u keys but that would cause problems with 3D printing the design. Regarding the beep, there is a peizo on the board so that could be used for layer indication as well, but definitely in conjunction with the LEDs as I'm sure those sharing office space would want to turn the beeping off.
Backlight LEDs ought to be fine for this I think, especially if they're RGB.  From what I understand reading through the thread though, we're not going to see RGB/LEDs on the first rev?  Can you expand on your plans for this?

Offline AcidFire

  • Thread Starter
  • Posts: 399
  • Location: Calgary AB
    • Axios - The Open Source Modular Ergonomic Keyboard
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1369 on: Fri, 20 June 2014, 01:40:26 »
That latest keyboard iteration looks amazing. I LOVE how you have implemented the tenting and original grand piano thumb cluster orientation. Can you explain how the thumb cluster achieves the custom angle that is not fixed? I really dig it but I do not see exactly how it works. It looks super smart though.
Right now, there are a pair of arms that connects the thumb to the main cluster, which are curved in at the top to allow the greater range of motion. They tighten down (currently with a hex driver) to lock into position.



when the thumb cluster gets attached, I'm a little afraid that is going to get a little tippy towards the middle. Great idea, though, on the lift mechanism.  I have toyed with similar ideas in my head for how to add tenting to a flat split keyboard.   Glad to see someone with the time and facilities to try ideas like that out so quickly.  Let us know how that feels once you have thumb cluster attached and start pounding on the keys.   ;D

This is something I'd dealt with earlier designs, and I have a solution for it however the printer I currently have doesn't have a big enough bed to print the part I need. Unfortunately the parts my friend has been waiting on were stuck in customs until earlier today, so by the time he receives it and turns it my way it'll be thursday/friday next week. After that I'll be able to print full test units and I'll get more pictures up.

Offline yumea

  • Posts: 15
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1370 on: Fri, 20 June 2014, 12:42:12 »
i worry that this connection construction with screws is not stable enough. when some pressure (lying hand) acts on the hinges for some while, they could slip due to insufficient sticking friction and the quite strong torsional moment on them, and if the screws are tightened too firmly to prevent this, the material could be damaged.

so i took some time to consider about an alternative, a physical barrier which shall keep the setting of thumb and main cluster without screw tension on the material.

my idea consists of a gib with a "gear wheel"-like outer profile

68490-0


so the connectors of thumb cluster, interlink and main cluster to this gib get "gear wheel"-like inner profile negative to the gib's one

68492-1


stuck together it would look like this:

68494-2


in this draft the relative position of the thumb to the main cluster is not continuous, the raster is small and can be made even smaller though, but the advantage is the much better stability of the adjusted state.
to change the relative orientation, the gib has to be removed and inserted again.
the gib itself could be enhanced by a head (like a screw head) for shifting and fixation.

i want to give you this idea for your consideration, acidfire.
« Last Edit: Fri, 20 June 2014, 12:56:01 by yumea »

Offline AcidFire

  • Thread Starter
  • Posts: 399
  • Location: Calgary AB
    • Axios - The Open Source Modular Ergonomic Keyboard
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1371 on: Fri, 20 June 2014, 13:54:09 »
Backlight LEDs ought to be fine for this I think, especially if they're RGB.  From what I understand reading through the thread though, we're not going to see RGB/LEDs on the first rev?  Can you expand on your plans for this?
First rev will feature a single color backlight to keep the initial costs down. An RGB version will follow once everything is working smoothly.

i worry that this connection construction with screws is not stable enough. when some pressure (lying hand) acts on the hinges for some while, they could slip due to insufficient sticking friction and the quite strong torsional moment on them, and if the screws are tightened too firmly to prevent this, the material could be damaged.

so i took some time to consider about an alternative, a physical barrier which shall keep the setting of thumb and main cluster without screw tension on the material.

my idea consists of a gib with a "gear wheel"-like outer profile

(Attachment Link)


so the connectors of thumb cluster, interlink and main cluster to this gib get "gear wheel"-like inner profile negative to the gib's one

(Attachment Link)


stuck together it would look like this:

(Attachment Link)


in this draft the relative position of the thumb to the main cluster is not continuous, the raster is small and can be made even smaller though, but the advantage is the much better stability of the adjusted state.
to change the relative orientation, the gib has to be removed and inserted again.
the gib itself could be enhanced by a head (like a screw head) for shifting and fixation.

i want to give you this idea for your consideration, acidfire.

I like the idea however it may not be necessary. The two materials we're looking at (ABS and Poly Carb) for the case have both been proven to be capable of dealing with the concerns you have, polycarb especially since that's currently whats being used in the GoPro mounting system which was the original inspiration to this design. There are also plans to texture the joint where the arms mate to help improve the friction and require less tightening to lock them into place.

To give you a little more background, what you've suggested was something I had looked at even when I was building these arms out of the laser cut acrylic. The issue arises from the fact that any indentation like what you're suggestion means a loss of flexibility in the angles that can be set, not to mention the rigidity of the materials, especially the teeth, at such a small scale. There's also the problem that it requires either an additional mold for plastic parts for the gear wheel or to have an extrusion mold made for metal parts, both an expensive proposition. It also limits the open source concept for the case being a custom part that for most people with 3D printers won't be able to replicate.

However, if this becomes an issue when the beta units go out, this will be the first solution we'll try, thank you for taking the time to draft an example.

Offline Naed

  • Posts: 13
  • Location: Denmark
  • Tinkerer and maker of weird prototypes
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1372 on: Sat, 21 June 2014, 20:05:12 »
Damn you AcidFire!

Why did you make such a sweet project into reality :P

Offline CommunistWitchDr

  • Posts: 479
  • Location: St. Louis, MO
  • >implying keyboards
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1373 on: Sun, 22 June 2014, 02:18:39 »
The new case is looking sweet, especially with all those fold out parts that can lay flat for transport, my only concern would be adjusting them on the go. While the allen wrench holder would make it easier, perhaps it would be worth looking into thumbscrews as a means of adjustment. Though with the size of the screws that may not be much easier than the wrench.

 

Offline yumea

  • Posts: 15
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1374 on: Sun, 22 June 2014, 09:17:01 »
i guess all of you want to program the keyboard so that keystrokes (single and combined ones like ctrl+alt+something) fire directly unicode codes instead of scancodes (scancodes would throw us back to handling a qwerty keyboard and would lead to complicated difficulties in programming macros for them like i had with autohotkey).
i find it much more beautiful to preset directly the unicode output. (for my further purposes of using adjusted layouts for korean and japanese, this would work, too - i just let the keyboard send the unicode codes which the ime then converts into the desired korean or japanese character; and for using even more layouts controlled by IMEs in their standard layout (like russian), i would program also another qwerty-like scancode layout.)


as i have mentioned before, i want to make keyboard layouts containing several layers, which i habe been in the process of designing.
these layers shall be accessible by modifier keys (just like the old Shift key).
as i am quite unexperienced in programming keyboards i would like to get your help about how to program such layers.
i have made a sample code about how i imagine such modifier key functions and hope to get your advice in how to actually do it. i also expect my sample code to be containing many mistakes which i would appreciate you much to correct for me.


the basic outline of my sample is:
case of pressed modifier keys -> function for the combination with a following character key -> unicode fire function for this key combination <-> timer function to make delay between the unicode fires; presetting of these delays
(i my sample this all follows in reverse order, just like c++ works)


i do not know how to address the keys. so i have assumed the
sample modifier keys to be accessed by: Key03 and Key04 (keys like Ctrl, Shift, Alt, ...)
and the
sample character keys by: KeyA5, KeyA6, KeyA7 (keys like A, L, 4, [, -)

*Key*.state is meant to return if *Key* is pressed down (state=1) or released (state=-1)  - right i have no clue about how to make such a function either.




int d0=500;                                               // sets standard delay between first and second code fire
int d1=50;                                                // sets standard delay between code fires, up from the second code fire

int timer(int ttM, int tKey){                             // timer: makes delay to next code fire as long as the keys are down
  for (int tt=0,tt<ttM,tt++){                             // counts up until delay time ttM (d0 or d1 from the fire unicode function loop) or until the character key tKey is released
    if (tKey.state=-1){                                   // case that the character key tKey is released
      tt=ttM;                                             // sets exit condition to this timer
      st=-1;                                              // sets exit condition to the fire unicode function loop that has initiated this timer
      return st;                                           // returns exit condition to the fire unicode function loop that has initiated this timer
    }
  }
}

 
...

int send03(){...}                                         // fire function to fire unicode for the Key03+... combination

int send04(){...}                                         // fire function to fire unicode for the Key03+... combination

...
int send0304(int unicode, int sKey){                      // fire function to fire the unicode for the Key03+Key04+KeyA5,6,7,..... combination
  for (int st=0,st>-1,st++){                              // repeats infinitely until timer returns exit condition st=-1
      send unicode;                                       // fires the unicode for the Key03+Key04+KeyA5,A6,A7,..... combination
      if st=0 timer(d0, sKey);                            // starts timer for the 1st code fire to make delay of d0 (e.g. 500 from presetting) timer circles to next code fire
      else timer(d1, sKey);                               // starts timer up from the 2nd code fire to make delay of d1 (e.g. 50 from presetting) timer circles to next code fire
  }
}

...

int m03(){...}                                             // function to register the following character in the case of pressed-down Key03

int m04(){...}                                             // function to register the following character in the case of pressed-down Key03

...

int m0304(){                                               // function to register the following character key in the case of pressed-down Key03+Key04 combination
  if (KeyA5.state=1)                                      // case of pressed-down Key03+Key04+KeyA5 combination
    send0304(29D4,KeyA5);                                 // starts function to fire the unicode for the Key03+Key04+KeyA5 combination
  else
  if (KeyA6.state=1)                                      // case of pressed-down Key03+Key04+KeyA6 combination
    send0304(29D5,KeyA6);                                 // starts function to fire the unicode for the Key03+Key04+KeyA6 combination
  else
  if (KeyA7.state=1)                                      // case of pressed-down Key03+Key04+KeyA7 combination
    send0304(29D6,KeyA7);                                 // starts function to fire the unicode for the Key03+Key04+KeyA7 combination
  else
  if
  .....
  else
  if KeyA7.state=-1
    send03()                                              // switches to the function for the case of pressed-down Key03
  else
  if KeyA6.state=-1
    send04()                                              // switches to the function for the case of pressed-down Key04
}

int main(){                                               // MAIN PROGRAM

...

  if (Key03.state=1){
    if (Key04.state=1)
      m0304();                                             // starts function for the case of pressed-down Key03+Key04 combination

    ...

    else m03();                                           // starts function for the case of pressed-down Key03 (placement here unlogical)
    }

  if (Key04.state=1){
    if (Key03.state=1)
      m0304();                                             // starts function for the case of pressed-down Key03+Key04 combination

    ...

    else m04();                                           // starts function for the case of pressed-down Key04 (placement here unlogical)
    }

...

}



i guess one (only one of the certainly numerous) necessary correction would be to put the call for the m0304 function with its calling condition into the m03 and m04 functions.
« Last Edit: Sun, 22 June 2014, 10:05:59 by yumea »

Offline Koren

  • Posts: 133
  • Location: France
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1375 on: Sun, 22 June 2014, 16:09:27 »
i guess all of you want to program the keyboard so that keystrokes (single and combined ones like ctrl+alt+something) fire directly unicode codes instead of scancodes
Is it even possible? (without designing a specific driver for the keyboard, I mean, and even with this, it'll probably fail with some programs directly reading the keyboard state). The idea that the keyboard would send unicodes is great on paper, but I don't think the people who designed the keyboard protocol allowed anything like this, unfortunately (in fact, if you're looking at xkb on Linux, for example, it's an awfully complicated system).

As far as I know, people who want to send unicode characters (or characters not in the standard layout) with a programmable keyboard usually use tricks like sending down-"ALT", a sequence of a possible "+" and digits using the keypad, and releasing "ALT" (compose sequences are also a possibility on some systems). Unfortunately, it'll work only if the OS allow this, and it won't work with every program. Besides, you can't do it for normal characters, or the modifiers (like ctrl, alt, etc.) won't work.


So I'd like to know how you intend to "fire a unicode character"... if there's an easy way, I missed it :( So I'm REALLY interested. You probably won't be able to do far more than what you do with a normal keyboard, except the (great) possibility of sending sequences of scancodes with a single key (which allow already a lot of possibilities... Besides, there's dozen of additional scancodes available that can be used).


Beside this point, I've yet to study your code... I'm a bit busy currently, but I'll get far more free time in july/august, and I'm really interested in what can actually be done in the keyboard.



(BTW, translating key presses in Hepburn sequences before sending them to the PC works well, I tried it with a Leonardo and a couple of microswitchs... Now, I REALLY hope there's a lot of memory in the keyboard, because I intend to put a lot of things inside ^_^ )
« Last Edit: Sun, 22 June 2014, 16:11:57 by Koren »

Offline JackMills

  • Posts: 153
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1376 on: Sun, 22 June 2014, 23:24:31 »
i guess all of you want to program the keyboard so that keystrokes (single and combined ones like ctrl+alt+something) fire directly unicode codes instead of scancodes (scancodes would throw us back to handling a qwerty keyboard and would lead to complicated difficulties in programming macros for them like i had with autohotkey).
i find it much more beautiful to preset directly the unicode output. (for my further purposes of using adjusted layouts for korean and japanese, this would work, too - i just let the keyboard send the unicode codes which the ime then converts into the desired korean or japanese character; and for using even more layouts controlled by IMEs in their standard layout (like russian), i would program also another qwerty-like scancode layout.)


as i have mentioned before, i want to make keyboard layouts containing several layers, which i habe been in the process of designing.
these layers shall be accessible by modifier keys (just like the old Shift key).
as i am quite unexperienced in programming keyboards i would like to get your help about how to program such layers.
i have made a sample code about how i imagine such modifier key functions and hope to get your advice in how to actually do it. i also expect my sample code to be containing many mistakes which i would appreciate you much to correct for me.


the basic outline of my sample is:
case of pressed modifier keys -> function for the combination with a following character key -> unicode fire function for this key combination <-> timer function to make delay between the unicode fires; presetting of these delays
(i my sample this all follows in reverse order, just like c++ works)


i do not know how to address the keys. so i have assumed the
sample modifier keys to be accessed by: Key03 and Key04 (keys like Ctrl, Shift, Alt, ...)
and the
sample character keys by: KeyA5, KeyA6, KeyA7 (keys like A, L, 4, [, -)

*Key*.state is meant to return if *Key* is pressed down (state=1) or released (state=-1)  - right i have no clue about how to make such a function either.




int d0=500;                                               // sets standard delay between first and second code fire
int d1=50;                                                // sets standard delay between code fires, up from the second code fire

int timer(int ttM, int tKey){                             // timer: makes delay to next code fire as long as the keys are down
  for (int tt=0,tt<ttM,tt++){                             // counts up until delay time ttM (d0 or d1 from the fire unicode function loop) or until the character key tKey is released
    if (tKey.state=-1){                                   // case that the character key tKey is released
      tt=ttM;                                             // sets exit condition to this timer
      st=-1;                                              // sets exit condition to the fire unicode function loop that has initiated this timer
      return st;                                           // returns exit condition to the fire unicode function loop that has initiated this timer
    }
  }
}

 
...

int send03(){...}                                         // fire function to fire unicode for the Key03+... combination

int send04(){...}                                         // fire function to fire unicode for the Key03+... combination

...
int send0304(int unicode, int sKey){                      // fire function to fire the unicode for the Key03+Key04+KeyA5,6,7,..... combination
  for (int st=0,st>-1,st++){                              // repeats infinitely until timer returns exit condition st=-1
      send unicode;                                       // fires the unicode for the Key03+Key04+KeyA5,A6,A7,..... combination
      if st=0 timer(d0, sKey);                            // starts timer for the 1st code fire to make delay of d0 (e.g. 500 from presetting) timer circles to next code fire
      else timer(d1, sKey);                               // starts timer up from the 2nd code fire to make delay of d1 (e.g. 50 from presetting) timer circles to next code fire
  }
}

...

int m03(){...}                                             // function to register the following character in the case of pressed-down Key03

int m04(){...}                                             // function to register the following character in the case of pressed-down Key03

...

int m0304(){                                               // function to register the following character key in the case of pressed-down Key03+Key04 combination
  if (KeyA5.state=1)                                      // case of pressed-down Key03+Key04+KeyA5 combination
    send0304(29D4,KeyA5);                                 // starts function to fire the unicode for the Key03+Key04+KeyA5 combination
  else
  if (KeyA6.state=1)                                      // case of pressed-down Key03+Key04+KeyA6 combination
    send0304(29D5,KeyA6);                                 // starts function to fire the unicode for the Key03+Key04+KeyA6 combination
  else
  if (KeyA7.state=1)                                      // case of pressed-down Key03+Key04+KeyA7 combination
    send0304(29D6,KeyA7);                                 // starts function to fire the unicode for the Key03+Key04+KeyA7 combination
  else
  if
  .....
  else
  if KeyA7.state=-1
    send03()                                              // switches to the function for the case of pressed-down Key03
  else
  if KeyA6.state=-1
    send04()                                              // switches to the function for the case of pressed-down Key04
}

int main(){                                               // MAIN PROGRAM

...

  if (Key03.state=1){
    if (Key04.state=1)
      m0304();                                             // starts function for the case of pressed-down Key03+Key04 combination

    ...

    else m03();                                           // starts function for the case of pressed-down Key03 (placement here unlogical)
    }

  if (Key04.state=1){
    if (Key03.state=1)
      m0304();                                             // starts function for the case of pressed-down Key03+Key04 combination

    ...

    else m04();                                           // starts function for the case of pressed-down Key04 (placement here unlogical)
    }

...

}



i guess one (only one of the certainly numerous) necessary correction would be to put the call for the m0304 function with its calling condition into the m03 and m04 functions.
I know this discussion originated here, but doesn't this deserve a separate thread?

Offline AcidFire

  • Thread Starter
  • Posts: 399
  • Location: Calgary AB
    • Axios - The Open Source Modular Ergonomic Keyboard
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1377 on: Mon, 23 June 2014, 17:56:56 »
The new case is looking sweet, especially with all those fold out parts that can lay flat for transport, my only concern would be adjusting them on the go. While the allen wrench holder would make it easier, perhaps it would be worth looking into thumbscrews as a means of adjustment. Though with the size of the screws that may not be much easier than the wrench.
I've spent some time looking, designing and testing both traditional nurled and otherwise patterned thumbscrews and the tight spacing in a number of places makes them somewhat difficult to employ. I haven't given up finding another option but the hex key+holder is still looking like the best bet currently.

Damn you AcidFire!

Why did you make such a sweet project into reality :P
I'm... sorry? No wait, no I'm not ;)

i guess all of you want to program the keyboard so that keystrokes (single and combined ones like ctrl+alt+something) fire directly unicode codes instead of scancodes (scancodes would throw us back to handling a qwerty keyboard and would lead to complicated difficulties in programming macros for them like i had with autohotkey).
snip
Is it even possible? (without designing a specific driver for the keyboard, I mean, and even with this, it'll probably fail with some programs directly reading the keyboard state). The idea that the keyboard would send unicodes is great on paper, but I don't think the people who designed the keyboard protocol allowed anything like this, unfortunately (in fact, if you're looking at xkb on Linux, for example, it's an awfully complicated system).
snip
(BTW, translating key presses in Hepburn sequences before sending them to the PC works well, I tried it with a Leonardo and a couple of microswitchs... Now, I REALLY hope there's a lot of memory in the keyboard, because I intend to put a lot of things inside ^_^ )
It's a really interesting way to look at it, along with the counterpoints Koren's made. I'll be putting up a dedicated forum near launch or shortly after with a section dedicated to programming and sharing of this sort of thing where this can be discussed further, especially after I've released the source code.

As for memory space, I'm still looking at using the LPC11U37 with 64kB flash/12kB sram. However, given the small difference in price (about 0.40-0.50/unit in volume), the newly released LPC11u68 with 256kB/36kB sram is looking mighty tempting as well. I haven't ruled out an M3 solution either, however I'm still aiming for the M0 line right now purely for reasons of power consumption & cost (not to mention the LPC11U line supports the drag & drop programming bootloader).

Offline pdf

  • Posts: 3
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1378 on: Tue, 24 June 2014, 09:56:55 »
Backlight LEDs ought to be fine for this I think, especially if they're RGB.  From what I understand reading through the thread though, we're not going to see RGB/LEDs on the first rev?  Can you expand on your plans for this?
First rev will feature a single color backlight to keep the initial costs down. An RGB version will follow once everything is working smoothly.
Ah right, well without RGB, it's probably not going to work for cycling through layouts for example, but the backlight is still probably alright for two-state toggle indication.

I'm assuming the diodes will be on the main board, so it'll mean a full board replacement to upgrade to RGB when it becomes available?

Offline Koren

  • Posts: 133
  • Location: France
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1379 on: Tue, 24 June 2014, 11:26:03 »

Quote
As for memory space, I'm still looking at using the LPC11U37 with 64kB flash/12kB sram. However, given the small difference in price (about 0.40-0.50/unit in volume)
I'd say it definitively worth the ~ .50 (for me at least). I'll gladly pay for it. Running out of memory just for .50 would be unfortunate.

Layers (and especially macros) take space, and I was thinking that the keyboard could make a double translation: key -> actual character* -> keycodes**. The first one depending on the layout, the second one depending on the keyboard you're trying to emulate. I mean, I'm probably not the only one who will probably use it on different computers. Sometimes, you can't change the keyboard layout in the PC. Being able to say to the *keyboard* "behave like a qwerty", "behave like an azerty", "behave like a qwertz" would be handy.

* or macros
** or sequence of keycodes

What I mean is that the keyboard could translate "second row, second key" into "A", then "A" into 24 or 36 depending on the azerty/qwerty settings (then the PC will translate it back into "A"). Who hasn't been stuck in a terminal, trying to remember how typing a strong password with a azerty layout in a qwerty terminal, without any way to change the layout on the PC side? (OK, probably many people interested in AcidFire's keyboard, but developpers/administrators where qwerty is not the de facto standard will probably understand what I mean ^_^ )

But this require to store both your layout and several standard layouts (that fortunately only have a limited number of layers)

Ah right, well without RGB, it's probably not going to work for cycling through layouts for example, but the backlight is still probably alright for two-state toggle indication.
You can still use shapes with so many leds: all keys = layer 0 ; left&right columns = row 1 ; upper line of keys = layer 2 ; home row = layer 3 ; illuminated heart = layer 4 ; etc.

Still, I agree that RGB is just nicer and cooler.

Offline AcidFire

  • Thread Starter
  • Posts: 399
  • Location: Calgary AB
    • Axios - The Open Source Modular Ergonomic Keyboard
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1380 on: Tue, 24 June 2014, 18:47:29 »
First rev will feature a single color backlight to keep the initial costs down. An RGB version will follow once everything is working smoothly.
Ah right, well without RGB, it's probably not going to work for cycling through layouts for example, but the backlight is still probably alright for two-state toggle indication.

I'm assuming the diodes will be on the main board, so it'll mean a full board replacement to upgrade to RGB when it becomes available?
[/quote]

We're looking at a couple of different methods, but yes that's a possibility as well.


Quote
As for memory space, I'm still looking at using the LPC11U37 with 64kB flash/12kB sram. However, given the small difference in price (about 0.40-0.50/unit in volume)
I'd say it definitively worth the ~ .50 (for me at least). I'll gladly pay for it. Running out of memory just for .50 would be unfortunate.

Layers (and especially macros) take space, and I was thinking that the keyboard could make a double translation: key -> actual character* -> keycodes**. The first one depending on the layout, the second one depending on the keyboard you're trying to emulate. I mean, I'm probably not the only one who will probably use it on different computers. Sometimes, you can't change the keyboard layout in the PC. Being able to say to the *keyboard* "behave like a qwerty", "behave like an azerty", "behave like a qwertz" would be handy.

* or macros
** or sequence of keycodes

What I mean is that the keyboard could translate "second row, second key" into "A", then "A" into 24 or 36 depending on the azerty/qwerty settings (then the PC will translate it back into "A"). Who hasn't been stuck in a terminal, trying to remember how typing a strong password with a azerty layout in a qwerty terminal, without any way to change the layout on the PC side? (OK, probably many people interested in AcidFire's keyboard, but developpers/administrators where qwerty is not the de facto standard will probably understand what I mean ^_^ )

But this require to store both your layout and several standard layouts (that fortunately only have a limited number of layers)

Ah right, well without RGB, it's probably not going to work for cycling through layouts for example, but the backlight is still probably alright for two-state toggle indication.
You can still use shapes with so many leds: all keys = layer 0 ; left&right columns = row 1 ; upper line of keys = layer 2 ; home row = layer 3 ; illuminated heart = layer 4 ; etc.

Still, I agree that RGB is just nicer and cooler.

remember though that what is a .50 difference per part (x2 since each side has a controller) still needs a markup on top of it. So you're looking at $1.00 x 2.6 (often recommended for open source projects) so it's a $2.60 addition to the price tag which doesn't seem like much but adds up quickly across the project. That being said, remember that the layers aren't stored in the micro like most controllers, but rather an external memory card which you can upgrade quite easily.

And you're right, while RGB LEDs would be the slickest option, I have a few patterns in mind which should work nicely with the single color backlights.

Offline Koren

  • Posts: 133
  • Location: France
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1381 on: Wed, 25 June 2014, 08:25:46 »
That being said, remember that the layers aren't stored in the micro like most controllers, but rather an external memory card which you can upgrade quite easily.
Nice to know that the external memory card is still in the project. With this, obviously, memory isn't a problem anymore, so forget about my previous message. This keyboard will be great.

Offline yumea

  • Posts: 15
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1382 on: Fri, 27 June 2014, 08:04:32 »
i guess all of you want to program the keyboard so that keystrokes (single and combined ones like ctrl+alt+something) fire directly unicode codes instead of scancodes (scancodes would throw us back to handling a qwerty keyboard and would lead to complicated difficulties in programming macros for them like i had with autohotkey).
snip
Is it even possible? (without designing a specific driver for the keyboard, I mean, and even with this, it'll probably fail with some programs directly reading the keyboard state). The idea that the keyboard would send unicodes is great on paper, but I don't think the people who designed the keyboard protocol allowed anything like this, unfortunately (in fact, if you're looking at xkb on Linux, for example, it's an awfully complicated system).
snip
(BTW, translating key presses in Hepburn sequences before sending them to the PC works well, I tried it with a Leonardo and a couple of microswitchs... Now, I REALLY hope there's a lot of memory in the keyboard, because I intend to put a lot of things inside ^_^ )
It's a really interesting way to look at it, along with the counterpoints Koren's made. I'll be putting up a dedicated forum near launch or shortly after with a section dedicated to programming and sharing of this sort of thing where this can be discussed further, especially after I've released the source code.
snip


after sharing your constructive considerations on my post and your hint on the keyboard protocol, koren, i tried to get into this matter and also to get a deeper insight into the ergodox firmware files.
but it began to dawn on me that such modifier routines do not work the way i tried to set up in my previous post.
letting the keyboard send scan codes is the simplest way and seems to be done in every firmware i have found so far. but will we really have to deal with just rearranging virtual qwerty keyboard keys?
that is quite stoneage.
in contrast to the conception that only scancodes are possible, i have found a corrective statement in wikipedia:
in the article about keyboard layouts (http://en.wikipedia.org/wiki/Keyboard_layout) just in the introduction in the 8th line it is written
"Most computer keyboards are designed to send scancodes to the operating system, rather than directly sending characters."
hereof i deduce that also some computer keyboards are designed to directly send characters. so, unicode sending keyboard firmware seems to be possible.

however, acidfire has also mentioned many times that there will be compiled a configuration tool for the firmware, that it will support 8+ layers and will be available open source.
in this thread there have been many post by experts as well who are experienced in implementing firmware on keyboards - lastly by koren
so i have considered, instead of reinventing the wheel, i should better ask acidfire and the experts directly if and how my desired layout can be actualized.

on the pictures below i show my desired layout which i have developed so far up to the 4th layer, so on the key images only the characters in layer 1,2,3,4 are shown.
"L2", "L3", "L4", "L5", "L7" are the modifier keys for the layers 2, 3, 4, 5, 7. for the function and the character keys, L2 has the same effect like Shift (L2 + ^⇥ = +^⇥ (shift control tab) for scrolling through tabs reversely).

koren, on the third (japanese) layout i want to show you my proposal for japanese hepburn sequences. i have been considering about your idea, and it seems to be just the same like mine.
except ゛゜ just plane hepburn character sequences can be sent to generate japanese characters. many of these sequences might look weired and some of them are exchangable (like extu→ettu, zy→j, dox→dol), but those who are familiar with japanese input should understand it fully.
do you know how to generate ゛゜ by hepburn?

the last layout is meant for usage with IMEs, sending qwerty scancodes. here, on the right grayed part the characters for the german ime are shown - because the key left of "z" is absent on the american keyboard.


main layout (english, german)
69229-0

korean layout
69231-1

japanese layout
69233-2

qwert keyboard scancode plan
69235-3

Offline Koren

  • Posts: 133
  • Location: France
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1383 on: Fri, 27 June 2014, 10:36:29 »
(disclaimer: if it bothers AcidFire or anyone here that we discuss protocols/layouts/firmware here, we can open a separate thread...)

but will we really have to deal with just rearranging virtual qwerty keyboard keys?
that is quite stoneage.
If fear it's quite a good summarization of the current situation...

Most people are quite happy with their "national" layout, and even for special cases (like japanese), they tend to use standard layouts too, like qwerty + IME.

There was use for additional keys, like multimedia keys, so they added some reserved scancodes (or rather use old scancodes from some manufacturers that created those). But since scancodes means no computing power in the keyboard, thus cheaper keyboards, they never found any reasons to improve the protocol to handle unicode or anything like this. Doing this in the PC was easier.

in contrast to the conception that only scancodes are possible, i have found a corrective statement in wikipedia:
in the article about keyboard layouts (http://en.wikipedia.org/wiki/Keyboard_layout) just in the introduction in the 8th line it is written
"Most computer keyboards are designed to send scancodes to the operating system, rather than directly sending characters."
hereof i deduce that also some computer keyboards are designed to directly send characters. so, unicode sending keyboard firmware seems to be possible.
I think I remember old non-PC keyboards sending directly ASCII (7bits) codes instead of scancodes. And you can always create a keyboard that send unicode characters on PC... but you could need to install a specific driver so that the PC understand the keycodes.

So I'm not sure it's as promising as it sounds.

I you say "I'm ok with installing a custom driver on the PC for the keyboard", there's no doubt that you can send unicode chars with the keyboard.

The problem is that pre-installed keyboard drivers only expect scancodes, afaik, and translate those themselves in characters. I don't think you can explain them that they should fire the codes they're receiving without interpreting them (would be surprised if you could do so in Windows, and I'm pretty sure I've read nothing about this possibility in xkb in Linux)

But, to me, installing a custom keyboard driver (if you're allowed to!) is pretty much the same as carrying an xkb configuration file or an autohotkey macros collection... a non-optimal solution. Using qwerty susbtitution is sub-par, but at least it won't require anything on the PC-side to work.

on the pictures below i show my desired layout which i have developed so far up to the 4th layer
Seems perfectly doable for me. You'll have a lot of macros, but since there's enough memory for this...

koren, on the third (japanese) layout i want to show you my proposal for japanese hepburn sequences. i have been considering about your idea, and it seems to be just the same like mine.
Yes, we've pretty similar ideas. The differences are interesting, though.

Your japanese layout seems similar to a Dvorak japanese layout: enter the sound with the right, and the vowel with the left hand. I rather went with a "one kana, one key".

Here's my current layout : http://imgur.com/9a83OVM

Lower left is normal Layer 4. Upper left require "Shift".
Lower right is Layer 5 (a kind of "alt-gr" layer). Upper right is Layer 5 + shift.

Some placements will probably change. It's not as "confortable" as it can be (I'll probably use the same digit several times in a row on a regular basis) and the pinkie usage may be a bit high, but at least I remember it easily, and most useful kanas are near the home row on strongest fingers.

Only black characters are "required" to type japanese in an IME as far as I know (after some testing, kixya gives the same result as kya in my IME, so that makes everything easier, no specific firmware needed, just macros)

Grayed japanese kanjis are just "shortcuts" for most common sounds (sparing one key press). I don't have shortcuts for non-japanese sounds, but I don't really mind. There's too many sounds possible, anyway.

Grayed ascii sequences may be useful to enter all sequence an IME can know, but I'm pretty sure there're even useless. As long as qw + i and ku + xi gives the same result, I probably don't need "qw". Same for the others.

I was surprised that you included things like "axtu", "onn", etc., at first, but since most of the keys on the right weren't used, that's interesting and will result in fewer keystrokes if you can get used to it.

do you know how to generate ゛゜ by hepburn?
Not sure you actually can create a hepburn sequence for that. "to" must become "do", "ho" become "bo" or "po".

I suppose you want those keys to work as dead keys, like for accentuated characters in some european keyboards. It probably could be done by tweaking the firmware (macro for 't' or 'k' depending on a flag, the " / ° key setting the flag).

But what who you use the " / ° key for, anyway? You already have g for k+", p for h+°, b for h+", d for t+", j for t+"... It seems to me that you can enter anything without this key?

Do you want to be able to enter just " or ° without a character?
« Last Edit: Fri, 27 June 2014, 10:39:54 by Koren »

Offline jeep

  • Posts: 33
  • Location: Hillsboro
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1384 on: Sat, 28 June 2014, 18:53:01 »
So, it's getting close to the end of the month. Still on track? I'm anxious to give you my monies. ;)


Offline sordna

  • Posts: 2248
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1385 on: Sat, 28 June 2014, 23:08:38 »
(disclaimer: if it bothers AcidFire or anyone here that we discuss protocols/layouts/firmware here, we can open a separate thread...)

Please do so. It's an interesting topic but not necessarily tied to this particular keyboard.
So it would be beneficial to move these long posts to a dedicated thread about firmware for advanced layouts I think.
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 AcidFire

  • Thread Starter
  • Posts: 399
  • Location: Calgary AB
    • Axios - The Open Source Modular Ergonomic Keyboard
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1386 on: Mon, 30 June 2014, 12:44:13 »
So, it's getting close to the end of the month. Still on track? I'm anxious to give you my monies. ;)

We're close. I spent the weekend with the latest revision of the case prototype. While something worked, others didn't and I'm currently working to make corrections, particularly in the arm connections. I've also gotten confirmation on shipment for my parts & PCBs which should mean a full working prototype in the next week or so. Once it's confirmed working, the campaign will go live :D

Offline jeep

  • Posts: 33
  • Location: Hillsboro
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1387 on: Mon, 30 June 2014, 12:47:03 »
Great to hear! (And just for the record, I would rather have something that works as you want it to than something today... so don't rush something to market before it's ready.)

Thanks for the update.

Offline kittykatmax

  • Posts: 159
  • Location: United States
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1388 on: Mon, 30 June 2014, 18:03:24 »
Agreed.  Getting it done right beats getting it done fast. 
Visit the Typing Test and try!

Offline jeep

  • Posts: 33
  • Location: Hillsboro
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1389 on: Tue, 01 July 2014, 17:25:24 »
Okay, this is the third time today that I've checked this thread... I've got a problem. (And, no, you can't prove that I checked it more than 3 times... because I wasn't logged in and I used different computers for the other times. :p)

Offline JackMills

  • Posts: 153
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1390 on: Tue, 01 July 2014, 18:23:07 »
Okay, this is the third time today that I've checked this thread... I've got a problem. (And, no, you can't prove that I checked it more than 3 times... because I wasn't logged in and I used different computers for the other times. :p)

I've pinned a tab in my browser for this thread and refresh it regularly, same for the crowdsupply site, even if AcidFire said he has to wait for some parts and it will probably next week or so.

Offline techne

  • Posts: 1
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1391 on: Tue, 01 July 2014, 19:37:53 »
I have been reading this for 6 months.  Well worth my time.  I just registered now.

Offline jakkdl

  • Posts: 32
  • Location: Sweden
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1392 on: Wed, 02 July 2014, 17:00:09 »
I highly suggest you guys turn on notifications so you get a mail everytime there's a new reply (in addition to some sort of notification on new mails) - it will save you a lot of time otherwise spent refreshing.

Das Keyboard S Ultimate, Cherry MX Blue

Offline AcidFire

  • Thread Starter
  • Posts: 399
  • Location: Calgary AB
    • Axios - The Open Source Modular Ergonomic Keyboard
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1393 on: Wed, 02 July 2014, 19:08:14 »
Just so you guys know, I check this thread just as often, I love seeing your feedback and suggestions/thoughts. And email notification is definitely the way to go ;)

Development wise, I had a very productive weekend. After having a little epiphany on friday, I was able to redesign the casing to make it easier to both 3D print and more importantly, reduce the cost of the molds required for production. A side benefit was that the new design should be (relatively) easy to machine as well, opening up the possibility of CNC aluminum case options without needing a 4 axis machine.

The big issue with the design is the slides/rails for the adjustable arms. The original design would call for a mold with 6-7 cams (slides), which complicates production and the cost of the mold. It also makes the design very difficult to produce in any method other than injection molding. While I was talking with someone about the boards and playing with the latest prototype, I realized that the design of the arms gives me a bit more leeway in how much material needs to surround the screws to make them work as a rail. So I put together a quick prototype to test it:





I was grinning ear to ear when I realized that not only does this work, it makes a number of other things possible and easier to achieve. While I was playing with this prototype at my desk, another thought hit me. I squared out the corners on the arm parts, you can then flip them around and lock the arms from being able rotate, while still be able to adjust the distance:



Which should prove to be pretty ideal for those of you looking to keep it flat for travel. So, the work's now been done to the casing, the main in particular, to reflect this new design. To give you a point of comparison, this is what I was originally looking at:

While this is the new design:





I also had a chance to sit down with a local molder today who completely blew me away not only in the quality of their work and what they're capable of, but their pricing as well. It's very likely we'll be working with them for the casings which means not only a top quality case, but a much shorter lead time with no language/timezone barriers to communication (it helps that they're currently a 30 min drive from where I am).

The other good news is that I've received all the FPC cables and connectors and my boards should be here by Friday assuming there aren't any hangups in customs. As for the final case prototype, the same injection molder has the capability of printing me a set of final parts for testing the fit of everything, which is the final step aside from assembling the electronics to finishing the campaign prep and launching :D
« Last Edit: Wed, 02 July 2014, 19:11:26 by AcidFire »

Offline jeep

  • Posts: 33
  • Location: Hillsboro
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1394 on: Wed, 02 July 2014, 20:29:10 »
I highly suggest you guys turn on notifications so you get a mail everytime there's a new reply (in addition to some sort of notification on new mails) - it will save you a lot of time otherwise spent refreshing.

I told you I had a problem... and no it wouldn't save me time. I only like to go through my e-mail twice per day. I don't want to spend all day checking my email instead. ;)

Offline fisofo

  • Posts: 65
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1395 on: Wed, 02 July 2014, 21:29:44 »
Oh man, so much good news! Happy happy happy!  ;D

Offline jacobolus

  • Posts: 3661
  • Location: San Francisco, CA
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1396 on: Wed, 02 July 2014, 21:35:29 »
You may get slightly improved rigidity without increasing weight / amount of plastic by adding some little ribs; this nice page has some about that at the top:
http://lcamtuf.coredump.cx/gcnc/ch6/

Offline AcidFire

  • Thread Starter
  • Posts: 399
  • Location: Calgary AB
    • Axios - The Open Source Modular Ergonomic Keyboard
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1397 on: Thu, 03 July 2014, 03:56:31 »
You may get slightly improved rigidity without increasing weight / amount of plastic by adding some little ribs; this nice page has some about that at the top:
http://lcamtuf.coredump.cx/gcnc/ch6/

The designs are definitely getting ribbing, the f row in particular is susceptible to warpage right now. Admittedly I've been skipping it because it takes additional time to model and when I'm prototyping and iterating through designs fairly quickly those sorts of details tend to slow me down a bit. The final models (which I'm currently working on) will feature them and a few other key things, like holes sized properly for the brass inserts I just ordered which should make it very easy to open up and tinker. I also ordered inserts for the 1/4-20 threading mount point on the bottom of the case as well.

And since I was so giddy about the ongoing case work I completely forgot to mention something else. With the change to the FPC connectors, I'm able to stack headers on each side of the PCB instead of having to double them on the same side. This means I no longer need the internal connections which removes the need for a (relatively) expensive PCB for the controller, aka a cost reduction (which will help to balance the cost of the injection molded parts).

The removal of these 2mm connectors allows me to design a thinner case as well, and while I'm still looking at the numbers and ensuring there's enough space in the case, right now it's looking like I can reduce the overall height by 3mm, which just happens to offset the height of the built in case stand.

The last thing to note was overall assembly. Because of the reduction of the margins on the case (or lack thereof), I had a hard time working screw points into the case, particularly the thumb clusters. This became a bit of an internal debate, because it comes into conflict with one of the major goals of the project; modularity. It's taken a bit of tinkering but I've come up with a hole pattern that'll allow for atleast two different layouts, one being what you've seen for the thumb clusters, and the other being a 3x4 1u key layout which should work nicely as a small macro pad. And because of the modular nature, there's also the possibility of doing new case designs for new layouts down the road (especially since my molding costs are much lower than originally projected).

Offline AcidFire

  • Thread Starter
  • Posts: 399
  • Location: Calgary AB
    • Axios - The Open Source Modular Ergonomic Keyboard
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1398 on: Thu, 03 July 2014, 07:29:15 »
Thanks to a rather painful migraine, I didn't get much sleep last night. So, shiny new forums are up!

Offline JPG

  • Posts: 1124
  • Location: Canada (Beloeil, near Montreal)
  • Model F is my new passion!
Re: AcidFire's modular keyboard system - Nexus [In Development]
« Reply #1399 on: Thu, 03 July 2014, 07:47:05 »
Thanks to a rather painful migraine, I didn't get much sleep last night. So, shiny new forums are up!


A productive migraine that is ...  :p
IBM F122, IBM XT F X2, IBM AT F (all Soarer converted), Filco Camo TKL Browns