Author Topic: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!  (Read 83296 times)

0 Members and 1 Guest are viewing this topic.

Offline HaaTa

  • Master Kiibohd Hunter
  • Posts: 794
  • Location: San Jose, CA, USA
  • Kiibohds!
    • http://kiibohd.com
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #500 on: Sun, 16 August 2015, 16:59:55 »
So, I was about to write an explanation on why, but then, figured, might as well write an example on how to use events directly.  :thumb:
You're correct, I haven't implemented any specific examples of using capabilities yet (which are extremely useful for this sort of thing).
Even implemented a "super" basic key blocking (only works for a single key at a time). Doesn't require any changes to the kll spec (even though I found/fixed a bug in the compiler while writing it :P).

Code changes.
https://github.com/kiibohd/controller/commit/398018ecf86bac3174d40b8cfb7d7321130759db

Using the "custom capabilities/actions" in a kll file.
https://github.com/kiibohd/kll/commit/5f8880d7efd7cc0abceb3543a03ba8db78135e7d

Just replace md1Overlay in https://github.com/kiibohd/controller/blob/master/Keyboards/infinity.bash to md1Action and run the script to try it out.


If you don't mind writing a bit of C code, it's possible to fully interact with all key states (Usually, just Press/Release/Hold but sometimes Off as well). This will also translate to Analog states in the future.
The clunky part here is specifying output USB codes. Due to a compiler/spec limitation it has to be a number (hex or decimal), but I can fix this in a future version.

Seems to work quite well for the Shift+Esc is ~ case. And can work for other single cases as well (simultaneous cases would require a more complicated C code).


Now, I'm not really sure if this is the best approach for this specific case, but it does work.
Kiibohd

ALWAYS looking for cool and interesting switches
I take requests for making keyboard converters (i.e. *old keyboard* to USB).

Offline KHAANNN

  • Posts: 1648
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #501 on: Mon, 17 August 2015, 01:53:42 »
So, I was about to write an explanation on why, but then, figured, might as well write an example on how to use events directly.  :thumb:
You're correct, I haven't implemented any specific examples of using capabilities yet (which are extremely useful for this sort of thing).
Even implemented a "super" basic key blocking (only works for a single key at a time). Doesn't require any changes to the kll spec (even though I found/fixed a bug in the compiler while writing it :P).

Code changes.
https://github.com/kiibohd/controller/commit/398018ecf86bac3174d40b8cfb7d7321130759db

Using the "custom capabilities/actions" in a kll file.
https://github.com/kiibohd/kll/commit/5f8880d7efd7cc0abceb3543a03ba8db78135e7d

Just replace md1Overlay in https://github.com/kiibohd/controller/blob/master/Keyboards/infinity.bash to md1Action and run the script to try it out.


If you don't mind writing a bit of C code, it's possible to fully interact with all key states (Usually, just Press/Release/Hold but sometimes Off as well). This will also translate to Analog states in the future.
The clunky part here is specifying output USB codes. Due to a compiler/spec limitation it has to be a number (hex or decimal), but I can fix this in a future version.

Seems to work quite well for the Shift+Esc is ~ case. And can work for other single cases as well (simultaneous cases would require a more complicated C code).


Now, I'm not really sure if this is the best approach for this specific case, but it does work.

I inspected these new capabilities, than the MD1 Scan routine, and the Output routine later on, but still, I can't see a practical entry point to achieve what I want

I think this would satisfy a lot of basic use cases:
1) The ability to block the last keypress (I think you already have this, this is kind of a special case, because the last keypress is the actual trigger, for example the "Esc" in my examples)
2) The ability to manually release keypresses
3) The ability to manually engage keypresses
4) A Practical access to a blocking delay
(Even (1) is not ideal, ideally, it shouldn't be a "block", but rather a "catch"/"handle" event)

The Shift+Esc example was more practical, as the Shift is used in the end result too

But for "Ctrl+A" to "Cmd+Shift+B" for example

The routine would be
a) Block "A"
b) Release "Ctrl"
c) Output "Cmd+1ms+Shift+1ms+B"
d) Release "Shift+Cmd"
e) Re-Engage "Ctrl"

In this scenario, there will be a custom "my_custom_capability" function that the user writes, that calls the functions I mentioned in (1-4)

Both the scan and output routines seem simple, yet since I'm not fluent in the dynamics, I can't determine a practical entry point to add these capabilities myself

So basically, what I really want myself is to have direct access to the input/output logic as tmk_keyboard provides

I think it would even be simpler to write some basic C code than to learn kll, even for non-programmers, I've seen a lot of people edit/adapt code in a language they are not fluent in, however I haven't seen a lot of people that took the time to learn kll yet, everyone on the infinity drop waited years building their infinities as the online configurator wasn't working

So I know this might not be what you want to hear, but please add direct access to the input/output logic, practical methods to aid people in achieving edge things they want, rather than try to steer kll into edge directions (which should be extremely challenging)


(Edit: These might already be possible, but once again, the lack of examples make it hard for people to use them, as I see now, I might achieve what I want by calling Output_usbCodeSend_capability directly for release, engage stuff etc.)
(Edit 2: manually modifying bits and calling Output_send() seems closer at this point)
« Last Edit: Mon, 17 August 2015, 02:12:00 by KHAANNN »
Endgame | 1.25 Cmd for GMK Sets Please | Or Just 1.25 Blanks Like The Good Old Days

Offline HaaTa

  • Master Kiibohd Hunter
  • Posts: 794
  • Location: San Jose, CA, USA
  • Kiibohds!
    • http://kiibohd.com
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #502 on: Mon, 17 August 2015, 02:30:55 »
You'll need to look a bit closer, you can totally do what you want to do with capabilities. Look at the state parameter, you don't have to do a key release in the capability (it's what makes the most sense in the general case).
Output_usbCodeSend_capability( 0x03, 0x00, <usb code> ); is all you need to release a key. As long as you only think of Triggers as your entry point (events), you should be fine.

Perhaps in the future I may add C code snippet support directly in the kll files so you don't have to know where to add the code amongst the C files (the diff I provided you is complete, there is no hidden code).

One of my earlier proposed schemes would have handled blocking/releasing of A and Ctrl transparently. I still don't see how this would be more complicated.


The big problem with doing straight C, it's the users fault if they screw up. This is *much* harder to support and it's possible to box themselves in. Sure, I can provide an API, but while you say most people understand programming, I disagree.
Next, try to build a configurator, that generates all the possible combinations of C code you need to support all these fancy features, in every single combination.
The whole point of capabilities was to provide 100% control with what happens after a Trigger.
For example, it's possible to do exactly what you want, delays included, using a custom capability. It won't be pretty, but is a pretty straight-forward problem for someone with a bit of embedded C programming knowledge and a few API calls. The reason why I'm hesitant to implement it, is because it has to be re-done for every single macro (which uses up a lot more flash and ram than a kll style implementation).


Key time delay is a completely different beast. While it may seems straight-forward, it is not. Basically, you have to *block all* processing in the microcontroller or have fancy interrupts in order to give API control to doing direct delays. This seems straightforward for OS level programming, it's less so for microcontrollers. I have plans on how to implement this, but it's not straight forward. What if you have multiple time delays on different macros to process?
Let's say there's an LED backlight animation running on your keyboard. If you start your macro, should it stop? Even a few milliseconds can cause noticeable flicker.


Basically, I'm just trying to help you out. If TMK gives you want you want, why not use it? A lot of the use cases you've been suggesting are things I'd normally solve by using layers and a slightly different layout scheme (I need Shift + Esc to do Shift+Esc).
Kiibohd

ALWAYS looking for cool and interesting switches
I take requests for making keyboard converters (i.e. *old keyboard* to USB).

Offline KHAANNN

  • Posts: 1648
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #503 on: Mon, 17 August 2015, 03:15:37 »
Let me just say that you can't view your work well from the eyes of an outsider, it's obviously clear to you what everything does, but for an outsider, it's just a black box that needs to be solved
(Same applies for the feature set, you have your feature set in mind, but in the wild, there are things like SpaceFn layouts that people use and like to use)

I agree on the blocking business, it's far from ideal, but in this state, it's a necessary evil, otherwise I also think delays should be non-blocking, they should just be items in an output events queue (so the animations and scan logic can continue)

I know you are trying to help me out, and I thank you, and I'm also trying to help you out and give as much feedback as I can

tmk_keyboard uses the mbed framework that doesn't compile on osx, that's the main reason I don't use tmk_keyboard, but it's much simpler to just offload the compiling as it seems, so I will move on
(the other reason is that infinity is native to ARM, while tmk_keyboard is native to AVR, there is no guarantee that tmk_keyboard will be ARM-safe in the long run (paranoia speaking) )
Endgame | 1.25 Cmd for GMK Sets Please | Or Just 1.25 Blanks Like The Good Old Days

Offline childofthehorn

  • Posts: 191
  • Location: Dallas, TX
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #504 on: Thu, 05 November 2015, 10:49:51 »
To lighten things up, I have been using some of the canary code and it does fix many of the issues originally encountered.



Got some useful items in the SP trash bag and actually I have quite a few ACTUAL 1.75u sized Shift keycaps if people are interested. MX only though.

Offline KHAANNN

  • Posts: 1648
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #505 on: Thu, 05 November 2015, 11:04:00 »
To lighten things up, I have been using some of the canary code and it does fix many of the issues originally encountered.

Show Image


Got some useful items in the SP trash bag and actually I have quite a few ACTUAL 1.75u sized Shift keycaps if people are interested. MX only though.

That keyboard looks great

I moved to a Sprit PCB and tmk firmware, things have been pretty sane and eventless from that point forward

My brother still had the modified infinity I gave him, we struggled a lot to install Win10 to a new system, turns out the keyboard was creating a deadlock, removing the keyboard solved the issue instantly, after that he has been using a V60 instead, turns out the infinity firmware caused other issues too, sometimes the mouse got stuck etc. (probably a key left pressed)

(darkened things back again :)
Endgame | 1.25 Cmd for GMK Sets Please | Or Just 1.25 Blanks Like The Good Old Days

Offline childofthehorn

  • Posts: 191
  • Location: Dallas, TX
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #506 on: Thu, 05 November 2015, 12:23:11 »
I have a Sprit PCB based 60% I am building right now.
Honestly, I really like the layout of the Infinity other than some minor issues with getting certain keycaps.

From experience, I can say that interrupts can be a total Pain in the butt sometimes and you have 60+ of them in virtually any keyboard. That means you need buffer queue's and being able to structure that to work as optimally as possible is not an easy task. These Freescale chipsets on here are just more capable than the ATMega series from Atmel. Like anything new, there are issues but there are many things to like about the infinity and more importantly the architecture of the whole system that allows for greater overall flexibility and scale for custom keyboards than TMK and FaceW do at the moment. As a Linux user, I also really appreciate the ease of load and go. Granted, windows users do not have the same luxury.... but blame windows there.

Honestly, I would like to get some plates and such available outside of Massdrop. I can get stuff waterjetted and PCB's made if there is enough interest.



Offline KHAANNN

  • Posts: 1648
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #507 on: Thu, 05 November 2015, 12:35:15 »
I have a Sprit PCB based 60% I am building right now.
Honestly, I really like the layout of the Infinity other than some minor issues with getting certain keycaps.

From experience, I can say that interrupts can be a total Pain in the butt sometimes and you have 60+ of them in virtually any keyboard. That means you need buffer queue's and being able to structure that to work as optimally as possible is not an easy task. These Freescale chipsets on here are just more capable than the ATMega series from Atmel. Like anything new, there are issues but there are many things to like about the infinity and more importantly the architecture of the whole system that allows for greater overall flexibility and scale for custom keyboards than TMK and FaceW do at the moment. As a Linux user, I also really appreciate the ease of load and go. Granted, windows users do not have the same luxury.... but blame windows there.

Honestly, I would like to get some plates and such available outside of Massdrop. I can get stuff waterjetted and PCB's made if there is enough interest.

HHKB layout is a preference, you can also get keycaps easily once you set your mind to it, $100 gets you any single SP keycap custom manufactured, you can also find nice alternatives from classifieds, there are many sets with 1.5 Backspace's, 1.75 Shift's, there are a lot of people who get these keycaps from extras packs and not use them, you can reach them and even get one freely

I think you can always find interest for such DIY kits
Endgame | 1.25 Cmd for GMK Sets Please | Or Just 1.25 Blanks Like The Good Old Days

Offline adam.baranyai

  • Posts: 22
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #508 on: Sun, 23 April 2017, 22:29:12 »
Can anyone of you folks able to help me out? I've spent few days figuring out how could I use the very well appreciated TMK firmware on the latest infinity 60% keyboard dropped by MD but apparently I simply can't succeed. I get to a point where my environment is properly setup. I'm using Ubuntu bash shell under Windows 10 and it seemingly works fine. I can build configurations and I can write them on the keyboard in both KLL and TMK. I made a simple keymap file * keymap.c (0.87 kB - downloaded 55 times.) and managed to build the firmware so now I have the infinity.bin file. I can successfully write this file onto the keyboard but it doesn't react on any button press after the firmware is flashed (not even after disconnecting and reconnecting the keyboard). I can restore the keyboard by writing the original KLL firmware on it, so it is not a brick (yet). I really would love to use TMK because I need spaceFN and I wasn't able to achieve that with KLL no matter what I've tried. Can anyone give me hint what do I need to do to get TMK firmware working on this keyboard?

Offline MandrewDavis

  • Posts: 460
  • Location: Fl
  • Chasin' That Neon Rainbow
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #509 on: Wed, 23 May 2018, 00:07:11 »
Can anyone of you folks able to help me out? I've spent few days figuring out how could I use the very well appreciated TMK firmware on the latest infinity 60% keyboard dropped by MD but apparently I simply can't succeed. I get to a point where my environment is properly setup. I'm using Ubuntu bash shell under Windows 10 and it seemingly works fine. I can build configurations and I can write them on the keyboard in both KLL and TMK. I made a simple keymap file (Attachment Link) and managed to build the firmware so now I have the infinity.bin file. I can successfully write this file onto the keyboard but it doesn't react on any button press after the firmware is flashed (not even after disconnecting and reconnecting the keyboard). I can restore the keyboard by writing the original KLL firmware on it, so it is not a brick (yet). I really would love to use TMK because I need spaceFN and I wasn't able to achieve that with KLL no matter what I've tried. Can anyone give me hint what do I need to do to get TMK firmware working on this keyboard?

I am having the exact same issue, anyone figure this out?
I've come to view humanity as predominantly monkey business.

My Classifieds Thread

Offline HaaTa

  • Master Kiibohd Hunter
  • Posts: 794
  • Location: San Jose, CA, USA
  • Kiibohds!
    • http://kiibohd.com
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #510 on: Wed, 23 May 2018, 15:17:20 »
Have you tried using the client side configurator? https://github.com/kiibohd/configurator/releases/latest

Also, if you installed the Zadig driver incorrectly, the keyboard will stop working. You'll need to remove the driver.

This goes through the procedure to remove the driver: https://github.com/nefarius/ScpToolkit/wiki/Manual-driver-removal
Though I'd try flashing with the client side configurator first.
Kiibohd

ALWAYS looking for cool and interesting switches
I take requests for making keyboard converters (i.e. *old keyboard* to USB).

Offline MandrewDavis

  • Posts: 460
  • Location: Fl
  • Chasin' That Neon Rainbow
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #511 on: Wed, 23 May 2018, 21:25:01 »
Have you tried using the client side configurator? https://github.com/kiibohd/configurator/releases/latest

Also, if you installed the Zadig driver incorrectly, the keyboard will stop working. You'll need to remove the driver.

This goes through the procedure to remove the driver: https://github.com/nefarius/ScpToolkit/wiki/Manual-driver-removal
Though I'd try flashing with the client side configurator first.
There wasn't any issues getting tmk_keyboard/keyboards/infinity to compile, but that bin file did nothing when flashed. What I actually needed to compile and couldn't get to work was tmk_keyboard/keyboards/infinity_chibios. Though out of sheer stubbornness, I finally found a version of ChibiOS as well as a custom fork of TMK that allowed it to compile and work when flashed.

I actually didn't know about the client side configurator, I have been using the web configurator and was trying to move away from it. Thanks, I will probably stick with that from now on. 
I've come to view humanity as predominantly monkey business.

My Classifieds Thread

Offline KHAANNN

  • Posts: 1648
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #512 on: Thu, 24 May 2018, 01:39:40 »
So does TMK work reliably on Infinities, I have 3 infinities that I need to reprogram
Endgame | 1.25 Cmd for GMK Sets Please | Or Just 1.25 Blanks Like The Good Old Days

Offline MandrewDavis

  • Posts: 460
  • Location: Fl
  • Chasin' That Neon Rainbow
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #513 on: Fri, 25 May 2018, 00:44:21 »
So does TMK work reliably on Infinities, I have 3 infinities that I need to reprogram

Yeah! I just spent almost 3 hours figuring out GitHub so check out my repo and give me some feedback!
I've come to view humanity as predominantly monkey business.

My Classifieds Thread

Offline KHAANNN

  • Posts: 1648
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #514 on: Fri, 25 May 2018, 05:04:13 »
Thank you so much for sharing your work

I'll try to test it in the coming days (I had some modifications on the keyboards, have to remember them etc. - it's something that I can't get into atm, otherwise I'd love to give some fast feedback)
Endgame | 1.25 Cmd for GMK Sets Please | Or Just 1.25 Blanks Like The Good Old Days

Offline yasuo

  • Posts: 978
  • Location: ID
  • spanengan puyeng newbie
Re: Infinity: A 60% by Haata Available on Massdrop!
« Reply #515 on: Tue, 08 December 2020, 07:04:43 »
Eggs go lol Greek
Logitech MK220 Colemak DH
SplitSyml by Moz BlacksMx fuk blacks

2/3 8.5pm                                          in de la my september month ya da all get my fukka "fake message"

Offline PTRS

  • Posts: 13
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #516 on: Mon, 21 December 2020, 01:35:47 »
interesting

Offline KHAANNN

  • Posts: 1648
Re: Infinity: A 60% Keyboard Designed by Haata now Available on Massdrop!
« Reply #517 on: Mon, 11 January 2021, 07:52:55 »
I just flashed QMK infinity60 on the first batch infinity 60% PCB - but the col/row layout isn't as expected - the keyboard works but spurts out other keycodes

Before creating a new thread, is there an easy solution?
Endgame | 1.25 Cmd for GMK Sets Please | Or Just 1.25 Blanks Like The Good Old Days