Author Topic: My 60% Keyboard Inspired By Lisp Machine's Keyboard  (Read 5775 times)

0 Members and 1 Guest are viewing this topic.

Offline zshang

  • Thread Starter
  • Posts: 39
My 60% Keyboard Inspired By Lisp Machine's Keyboard
« on: Wed, 04 February 2015, 20:11:47 »
Hi guys,
I've just designed a 60% keyboard layout for my NerD 60 (Which should also work for GH60)
Inspired by Lisp Machine's keyboard, I've put two Hyper keys in there.

As a VIM and Emacs user, modifiers are important to me, and having a Hyper modifier will just make my life much easier ;)

And here is the link:

http://www.keyboard-layout-editor.com/#/layouts/f7d7ad2c397a0bf1584e39ecf7516676

hope you will like it.
« Last Edit: Thu, 05 February 2015, 20:03:46 by zshang »

Offline KRKS

  • Posts: 158
  • Location: "Central" Europe
  • Your friendly neighbourhood umbrella
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #1 on: Thu, 05 February 2015, 06:05:20 »
Could you use the "Save" button in the editor(sometimes needs two presses) and then post that link?

My Firefox thinks that the long links from the editor are XSS attack attempts.
The increasing power of Massdrop WILL kill the community group buys - don't come crying to me after it happens when you're too stupid to see it now. Join me in saving the community!

MD = NO $, NO EXCEPTIONS

Offline zshang

  • Thread Starter
  • Posts: 39
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #2 on: Thu, 05 February 2015, 20:03:28 »
Oops, sorry for that, this is my first time using that website,
here is the link: http://www.keyboard-layout-editor.com/#/layouts/f7d7ad2c397a0bf1584e39ecf7516676

Offline spiceBar

  • Posts: 998
    • ChessTiger.com
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #3 on: Thu, 05 February 2015, 23:36:28 »
Hi guys,
I've just designed a 60% keyboard layout for my NerD 60 (Which should also work for GH60)
Inspired by Lisp Machine's keyboard, I've put two Hyper keys in there.

As a VIM and Emacs user, modifiers are important to me, and having a Hyper modifier will just make my life much easier ;)

And here is the link:

http://www.keyboard-layout-editor.com/#/layouts/f7d7ad2c397a0bf1584e39ecf7516676

hope you will like it.

I just hate the ridiculously small left Shift. But it's your keyboard, my opinion does not matter.

Offline Nai_Calus

  • * Destiny Supporter
  • Posts: 565
  • Location: Middle of nowhere, CA
  • CLACK
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #4 on: Thu, 05 February 2015, 23:38:29 »
I just hate the ridiculously small left Shift. But it's your keyboard, my opinion does not matter.

Yeah, mine either, but I'd at least swap the widths of that shift and the hyper key.
- IBM 4704 Model F 107-key "Bertha"
Other boards: Kinesis Essential, Infinity(G.Clears), Ergodox(MX Blues), Monoprice 9433

Eternally searching for Celestial Blue BS V2 and blue/purple Bros.

Offline user 18

  • * Senior Moderator
  • Posts: 2231
  • Location: Deutschland
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #5 on: Thu, 05 February 2015, 23:57:57 »
I'm curious about the implementation of an extra modifier in firmware.

As far as I am aware, modifiers are sent to the computer as a single byte in the 8-byte USB report, with one bit for each modifier (left and right shift, ctrl, alt, win/super). That layout has nine modifier keys, which won't fit in a byte. It also represents 5 different modifiers, when the USB report is structured to hold up to 4 pairs of modifiers.

The easiest way (off the top of my head) would be to have hyper basically act as a fn2 key, and send a different layer of scancodes on the other keys when hyper is held. It would work, but it would take some fiddling and might have some unpredictable behaviour.

Take what I say with a grain of salt, as it's based on work with the arduino HID keyboard implementation and only minimal research. If you do know of or develop a solution, I'd love to hear it.


I just hate the ridiculously small left Shift. But it's your keyboard, my opinion does not matter.

Yeah, mine either, but I'd at least swap the widths of that shift and the hyper key.

If we want compatibility with existing PCBs and plates, it's not possible to adjust the size of the caps. To make the shift 1.25x, it would have to be moved to the outside of the board, and the hyper key moved in.
Please PM me if you are waiting on classifieds approval or have a question about the classifieds rules. | geekhack Terms of Service

Max Nighthawk x8 (MX Brown) | CM QFR (MX Blue) | CM QFR (MX Clear) | RK-9000 (MX Red) | Model M 1391401 | Model M SSK 1370475 | CM Novatouch | G80-8113 (MX Clear) | 60% (85g MX Blue) | Whitefox Aria (MX Clear) | CL-LX (MX Clear) | Mira SE (MX Clear)
Avatar by ashdenej

Offline Oobly

  • * Esteemed Elder
  • Posts: 3929
  • Location: Finland
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #6 on: Fri, 06 February 2015, 03:08:12 »
That's an interesting layout. On the GON you can assign the Hyper keys to Fn2 and program the whole layer like that if you want, but I guess it all depends on what you want the Hyper key to do. If you want to act as a "normal" modifer, then I'm afraid you're out of luck. Modern OS's don't have control codes for the "hyper" key. You can map the modifiers to any of Ctrl, Shift, Alt and Gui, but you can't add another code that doesn't exist.
Buying more keycaps,
it really hacks my wallet,
but I must have them.

Offline zshang

  • Thread Starter
  • Posts: 39
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #7 on: Sat, 07 February 2015, 03:03:07 »
That's an interesting layout. On the GON you can assign the Hyper keys to Fn2 and program the whole layer like that if you want, but I guess it all depends on what you want the Hyper key to do. If you want to act as a "normal" modifer, then I'm afraid you're out of luck. Modern OS's don't have control codes for the "hyper" key. You can map the modifiers to any of Ctrl, Shift, Alt and Gui, but you can't add another code that doesn't exist.
Well, as I know, Linux supports the Hyper key out-of-box, and I want to use it for another shortcut key-binding in vim (e.g.: Hyper + T to toggle tagbar)

Anyway, I'll try it out, if it doesn't work, I will try to make a firmware for GH60 myself and get a Chinese-copy board from Taobao

I will update in these thread for the trials

Offline zshang

  • Thread Starter
  • Posts: 39
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #8 on: Sat, 07 February 2015, 03:08:38 »
I'm curious about the implementation of an extra modifier in firmware.

As far as I am aware, modifiers are sent to the computer as a single byte in the 8-byte USB report, with one bit for each modifier (left and right shift, ctrl, alt, win/super). That layout has nine modifier keys, which won't fit in a byte. It also represents 5 different modifiers, when the USB report is structured to hold up to 4 pairs of modifiers.

The easiest way (off the top of my head) would be to have hyper basically act as a fn2 key, and send a different layer of scancodes on the other keys when hyper is held. It would work, but it would take some fiddling and might have some unpredictable behaviour.

Take what I say with a grain of salt, as it's based on work with the arduino HID keyboard implementation and only minimal research. If you do know of or develop a solution, I'd love to hear it.


I just hate the ridiculously small left Shift. But it's your keyboard, my opinion does not matter.

Yeah, mine either, but I'd at least swap the widths of that shift and the hyper key.

If we want compatibility with existing PCBs and plates, it's not possible to adjust the size of the caps. To make the shift 1.25x, it would have to be moved to the outside of the board, and the hyper key moved in.
Well, since there is one third-part firmware for the nerd series, I'll try to modify it and see if it works or not.

I will update in this thread for the progress

Offline zshang

  • Thread Starter
  • Posts: 39
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #9 on: Sat, 14 February 2015, 11:04:56 »
Quick update
I'm having a talk with TEX (yes the company that made TEX YODA) and planning to bring this keyboard to real, here are the details:
http://z-shang.github.io/kbd-for-vim.html

If anybody is interested in it, we can have a group buy

Offline zshang

  • Thread Starter
  • Posts: 39
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #10 on: Sat, 14 February 2015, 11:05:55 »
Btw, for the Hyper modifie, TEX and I are working on an acceptable solution, so please stay tuned

Offline user 18

  • * Senior Moderator
  • Posts: 2231
  • Location: Deutschland
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #11 on: Sat, 14 February 2015, 11:19:37 »
Quick update
I'm having a talk with TEX (yes the company that made TEX YODA) and planning to bring this keyboard to real, here are the details:
http://z-shang.github.io/kbd-for-vim.html

If anybody is interested in it, we can have a group buy
You have listed there as one of your modified switches greens with brown springs -- AFAIK, this will be functionally identical to the MX blues, as reds browns and blues all use the same spring.
Please PM me if you are waiting on classifieds approval or have a question about the classifieds rules. | geekhack Terms of Service

Max Nighthawk x8 (MX Brown) | CM QFR (MX Blue) | CM QFR (MX Clear) | RK-9000 (MX Red) | Model M 1391401 | Model M SSK 1370475 | CM Novatouch | G80-8113 (MX Clear) | 60% (85g MX Blue) | Whitefox Aria (MX Clear) | CL-LX (MX Clear) | Mira SE (MX Clear)
Avatar by ashdenej

Offline zshang

  • Thread Starter
  • Posts: 39
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #12 on: Sat, 14 February 2015, 11:21:07 »
Quick update
I'm having a talk with TEX (yes the company that made TEX YODA) and planning to bring this keyboard to real, here are the details:
http://z-shang.github.io/kbd-for-vim.html

If anybody is interested in it, we can have a group buy
You have listed there as one of your modified switches greens with brown springs -- AFAIK, this will be functionally identical to the MX blues, as reds browns and blues all use the same spring.
Oh I thought there is some difference between the sliders of Green and Blue

Offline zshang

  • Thread Starter
  • Posts: 39
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #13 on: Sat, 14 February 2015, 11:21:34 »
Quick update
I'm having a talk with TEX (yes the company that made TEX YODA) and planning to bring this keyboard to real, here are the details:
http://z-shang.github.io/kbd-for-vim.html

If anybody is interested in it, we can have a group buy
You have listed there as one of your modified switches greens with brown springs -- AFAIK, this will be functionally identical to the MX blues, as reds browns and blues all use the same spring.
Well thanks for it, I'll remove that

Offline Dihedral

  • Posts: 827
  • Location: United Kingdom
  • Mostly Harmless
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #14 on: Sat, 14 February 2015, 11:41:15 »
Why the Need for Hyper, Super, Ctrl and Meta?

Offline zshang

  • Thread Starter
  • Posts: 39
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #15 on: Sat, 14 February 2015, 11:43:49 »
Why the Need for Hyper, Super, Ctrl and Meta?
Some of my friends and I need them for the key mapping of VIM / Emacs
You can also map those two hypers into whatever you want, TEX told me that they can make it into a fully programmable keyboard (like GH60)

Offline Dihedral

  • Posts: 827
  • Location: United Kingdom
  • Mostly Harmless
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #16 on: Sat, 14 February 2015, 12:25:57 »
Why the Need for Hyper, Super, Ctrl and Meta?
Some of my friends and I need them for the key mapping of VIM / Emacs
You can also map those two hypers into whatever you want, TEX told me that they can make it into a fully programmable keyboard (like GH60)

Fair Enough :)

Offline Oobly

  • * Esteemed Elder
  • Posts: 3929
  • Location: Finland
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #17 on: Sat, 14 February 2015, 13:10:41 »
What modifier keycode does the Hyper key send in the USB packet?
Buying more keycaps,
it really hacks my wallet,
but I must have them.

Offline zshang

  • Thread Starter
  • Posts: 39
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #18 on: Sat, 14 February 2015, 13:11:44 »
What modifier keycode does the Hyper key send in the USB packet?
We are working on that, there will be an acceptable solution for sure

Offline spiceBar

  • Posts: 998
    • ChessTiger.com
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #19 on: Sat, 14 February 2015, 15:29:25 »
Thinking about it, creating a new physical layout in order to add the HYPER key is probably a waste of time and resources.

I have been working on a TMK firmware layout of mine the last few days, and this layout happens to leave no key available for the SUPER modifier (Windows key).

I had to find a solution to add this SUPER key, and this is very similar to the problem you are trying to solve with your layout. My constraint, however, is that I must use a standard 60% layout. Contrary to what you have done, I cannot add a physical key on my keyboard.

Here is my solution. It would allow you to have your left HYPER key without any need for a new physical layout at all. You can have your left HYPER key on a GH60, NerD 60 or on an Infinity keyboard. No need to design a new keyboard.

The idea is very simple:

Use CapsLock as a dual-role key.
- Tap CapsLock to get the usual Caps Lock function.
- Press and hold CapsLock to get the HYPER behavior (usually, you press another key simultaneously).


90759-0

This works well because the CapsLock key is not an autorepeat key. So there is absolutely no loss of functionality by combining CapsLock and another modifier like HYPER.

This behavior is extremely easy to implement with the TMK firmware: just one line to add to the keyboard's description.

If is actually possible with this solution to add an HYPER key to any existing keyboard using AutoHotKey under Windows, or Karabiner on a Mac.

Under Linux, I think you can modify the source code of Xcape to get exactly the same behaviour.

It's a multi-platform solution that does not require the design of any new hardware.

Offline zshang

  • Thread Starter
  • Posts: 39
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #20 on: Sat, 14 February 2015, 15:45:33 »
Thinking about it, creating a new physical layout in order to add the HYPER key is probably a waste of time and resources.

I have been working on a TMK firmware layout of mine the last few days, and this layout happens to leave no key available for the SUPER modifier (Windows key).

I had to find a solution to add this SUPER key, and this is very similar to the problem you are trying to solve with your layout. My constraint, however, is that I must use a standard 60% layout. Contrary to what you have done, I cannot add a physical key on my keyboard.

Here is my solution. It would allow you to have your left HYPER key without any need for a new physical layout at all. You can have your left HYPER key on a GH60, NerD 60 or on an Infinity keyboard. No need to design a new keyboard.

The idea is very simple:

Use CapsLock as a dual-role key.
- Tap CapsLock to get the usual Caps Lock function.
- Press and hold CapsLock to get the HYPER behavior (usually, you press another key simultaneously).


(Attachment Link)

This works well because the CapsLock key is not an autorepeat key. So there is absolutely no loss of functionality by combining CapsLock and another modifier like HYPER.

This behavior is extremely easy to implement with the TMK firmware: just one line to add to the keyboard's description.

If is actually possible with this solution to add an HYPER key to any existing keyboard using AutoHotKey under Windows, or Karabiner on a Mac.

Under Linux, I think you can modify the source code of Xcape to get exactly the same behaviour.

It's a multi-platform solution that does not require the design of any new hardware.
The key of my problem is not the layout itself, since we are making it fully programmable, it is just a copy of standard Infinity Keyboard with a separated L_Shift.
The problem is how to make the "Hyper" available in the firmware, I've check the document of Kiibohd (the IC of Infinity Keyboard) and some standard documents the TEX guy gave me, the result is the "Hyper" is not in the modern standard of USB keyboard.
It is sure that I can make it possible by using a rare key which is not provided by most of the keyboards (like F13) and map it in my key mapping, but what I want to do is to make it a product for those who have the same requirement as I do, so the "dirty-hack" will be the last fallback option.
I'm currently having a discussion with the TEX guy about modification of the firmware (and my group and I am gonna work it out).
Anyway I appropriate for your opinion and the fallback solution.

Offline spiceBar

  • Posts: 998
    • ChessTiger.com
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #21 on: Sat, 14 February 2015, 16:31:27 »
Thinking about it, creating a new physical layout in order to add the HYPER key is probably a waste of time and resources.

I have been working on a TMK firmware layout of mine the last few days, and this layout happens to leave no key available for the SUPER modifier (Windows key).

I had to find a solution to add this SUPER key, and this is very similar to the problem you are trying to solve with your layout. My constraint, however, is that I must use a standard 60% layout. Contrary to what you have done, I cannot add a physical key on my keyboard.

Here is my solution. It would allow you to have your left HYPER key without any need for a new physical layout at all. You can have your left HYPER key on a GH60, NerD 60 or on an Infinity keyboard. No need to design a new keyboard.

The idea is very simple:

Use CapsLock as a dual-role key.
- Tap CapsLock to get the usual Caps Lock function.
- Press and hold CapsLock to get the HYPER behavior (usually, you press another key simultaneously).


(Attachment Link)

This works well because the CapsLock key is not an autorepeat key. So there is absolutely no loss of functionality by combining CapsLock and another modifier like HYPER.

This behavior is extremely easy to implement with the TMK firmware: just one line to add to the keyboard's description.

If is actually possible with this solution to add an HYPER key to any existing keyboard using AutoHotKey under Windows, or Karabiner on a Mac.

Under Linux, I think you can modify the source code of Xcape to get exactly the same behaviour.

It's a multi-platform solution that does not require the design of any new hardware.
The key of my problem is not the layout itself, since we are making it fully programmable, it is just a copy of standard Infinity Keyboard with a separated L_Shift.
The problem is how to make the "Hyper" available in the firmware, I've check the document of Kiibohd (the IC of Infinity Keyboard) and some standard documents the TEX guy gave me, the result is the "Hyper" is not in the modern standard of USB keyboard.
It is sure that I can make it possible by using a rare key which is not provided by most of the keyboards (like F13) and map it in my key mapping, but what I want to do is to make it a product for those who have the same requirement as I do, so the "dirty-hack" will be the last fallback option.
I'm currently having a discussion with the TEX guy about modification of the firmware (and my group and I am gonna work it out).
Anyway I appropriate for your opinion and the fallback solution.

You certainly have a problem with the fact that HYPER is not a standard modifier, but your separate L_Shift significantly limits the appeal of your keyboard.

You are basically planning to produce a keyboard for the handful of people who will be able to stand this tiny left Shift. Coincidentally, in another thread that is currently active on this forum, most people say that the left Shift is the only Shift they use. It's a safe bet to say that you are hurting usability by making the left Shift that small.

It's maybe your goal to produce a very limited run of this specific keyboard (5-10 units?).

But I wanted to point out that you can use a standard keyboard to add your HYPER keys. Sacrificing the left Shift just to add the left HYPER key is not only bad for usability, it's also unnecessary.

No need to listen to me anyway. You can go ahead with the design and we will see.

Offline zshang

  • Thread Starter
  • Posts: 39
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #22 on: Sat, 14 February 2015, 16:37:24 »
Thinking about it, creating a new physical layout in order to add the HYPER key is probably a waste of time and resources.

I have been working on a TMK firmware layout of mine the last few days, and this layout happens to leave no key available for the SUPER modifier (Windows key).

I had to find a solution to add this SUPER key, and this is very similar to the problem you are trying to solve with your layout. My constraint, however, is that I must use a standard 60% layout. Contrary to what you have done, I cannot add a physical key on my keyboard.

Here is my solution. It would allow you to have your left HYPER key without any need for a new physical layout at all. You can have your left HYPER key on a GH60, NerD 60 or on an Infinity keyboard. No need to design a new keyboard.

The idea is very simple:

Use CapsLock as a dual-role key.
- Tap CapsLock to get the usual Caps Lock function.
- Press and hold CapsLock to get the HYPER behavior (usually, you press another key simultaneously).


(Attachment Link)

This works well because the CapsLock key is not an autorepeat key. So there is absolutely no loss of functionality by combining CapsLock and another modifier like HYPER.

This behavior is extremely easy to implement with the TMK firmware: just one line to add to the keyboard's description.

If is actually possible with this solution to add an HYPER key to any existing keyboard using AutoHotKey under Windows, or Karabiner on a Mac.

Under Linux, I think you can modify the source code of Xcape to get exactly the same behaviour.

It's a multi-platform solution that does not require the design of any new hardware.
The key of my problem is not the layout itself, since we are making it fully programmable, it is just a copy of standard Infinity Keyboard with a separated L_Shift.
The problem is how to make the "Hyper" available in the firmware, I've check the document of Kiibohd (the IC of Infinity Keyboard) and some standard documents the TEX guy gave me, the result is the "Hyper" is not in the modern standard of USB keyboard.
It is sure that I can make it possible by using a rare key which is not provided by most of the keyboards (like F13) and map it in my key mapping, but what I want to do is to make it a product for those who have the same requirement as I do, so the "dirty-hack" will be the last fallback option.
I'm currently having a discussion with the TEX guy about modification of the firmware (and my group and I am gonna work it out).
Anyway I appropriate for your opinion and the fallback solution.

You certainly have a problem with the fact that HYPER is not a standard modifier, but your separate L_Shift significantly limits the appeal of your keyboard.

You are basically planning to produce a keyboard for the handful of people who will be able to stand this tiny left Shift. Coincidentally, in another thread that is currently active on this forum, most people say that the left Shift is the only Shift they use. It's a safe bet to say that you are hurting usability by making the left Shift that small.

It's maybe your goal to produce a very limited run of this specific keyboard (5-10 units?).

But I wanted to point out that you can use a standard keyboard to add your HYPER keys. Sacrificing the left Shift just to add the left HYPER key is not only bad for usability, it's also unnecessary.

No need to listen to me anyway. You can go ahead with the design and we will see.
Thank you again for the suggestions.

Do you think swapping the Hyper and Shft (to make the Left Shift 0.25 unit longer) will work?

Offline user 18

  • * Senior Moderator
  • Posts: 2231
  • Location: Deutschland
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #23 on: Sat, 14 February 2015, 18:08:16 »
Having the shift portion on the outside would definitely improve usability -- that's where it is on ISO layout boards, including many laptops (at least where I'm from). The length is less the issue, more the position.
Please PM me if you are waiting on classifieds approval or have a question about the classifieds rules. | geekhack Terms of Service

Max Nighthawk x8 (MX Brown) | CM QFR (MX Blue) | CM QFR (MX Clear) | RK-9000 (MX Red) | Model M 1391401 | Model M SSK 1370475 | CM Novatouch | G80-8113 (MX Clear) | 60% (85g MX Blue) | Whitefox Aria (MX Clear) | CL-LX (MX Clear) | Mira SE (MX Clear)
Avatar by ashdenej

Offline zshang

  • Thread Starter
  • Posts: 39
Re: My 60% Keyboard Inspired By Lisp Machine's Keyboard
« Reply #24 on: Sat, 14 February 2015, 18:09:37 »
Having the shift portion on the outside would definitely improve usability -- that's where it is on ISO layout boards, including many laptops (at least where I'm from). The length is less the issue, more the position.
Thanks for the suggestion, I will swap it with the left Hyper