# Best layout for IntelliJ developer?

**URL:** <https://community.keyboard.io/t/best-layout-for-intellij-developer/3169>\
**Category:** Model 01 Layouts\
**Created:** [September 11, 2019, 3:35am UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169 "2019-09-11T03:35:28Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![benze](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/benze/32/2798_2.png) [@benze](https://community.keyboard.io/u/benze)\
**Post date:** [September 11, 2019, 3:35am UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/1 "2019-09-11T03:35:29Z")

</div>

I just picked up the Model01 a couple of weeks ago, and have been slowly retraining myself to type with it. While the actual typing itself is getting better, I am still struggling on re-learning all the modifier keys. To make things more complicated, I do a lot of work in IntelliJ which uses a significant number of modifier key combinations in shortcuts. To this extent, I find the lack of an Alt key on the left hand side very difficult to work with.

I can only presume that others here use IntelliJ as well; are you using the default layout for the Model01 or have you found you needed to remap IJ shortcuts or the Model01 keymap to better handle the shortcuts?

Is there a good approach to adding the Alt modifier on the left hand side? I’ve considered using Fn-Cmd for Alt, but that throws off most of the short cuts which use Alt since the vast majority of keys are mapped to other keys when using the Fn modifier.

I’ve considered the Butterfly key but it isn’t in a convenient location on the keyboard (on the right hand side).

Has anyone come up with a good solution for this?

Thanks,

Eric

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [September 11, 2019, 12:24pm UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/2 "2019-09-11T12:24:37Z")

</div>

I have a full set of modifiers on each side, but I don’t have them on the thumb keys. I use Qukeys to put them on the home row keys, which makes modifier combos very comfortable. I have `shift` under my index finger, `control` on the middle finger, `alt`/`option` on the ring finger, and `cmd`/`gui` on the pinky on each hand. If I was an exclusive macOS user who didn’t use Emacs, I’d probably swap `cmd` with `ctrl`. The only combo that I find even mildly awkward is the middle finger and pinky without the ring finger (because their tendons are connected), which is why I ordered the modifiers that way.

All that said, OneShot modifiers are a less drastic and more obvious solution to the problem.

---

<div class="post-metadata">

**Author:** ![benze](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/benze/32/2798_2.png) [@benze](https://community.keyboard.io/u/benze)\
**Post date:** [September 11, 2019, 2:11pm UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/3 "2019-09-11T14:11:34Z")

</div>

I’m confused though. If you use Qukeys like that, how does that handle things like alt-d? Don’t you need the ‘D’ key for the Alt modifier in which case how do you get the Alt-D combination?

Do you have a copy of your configuration somewhere that I can look at to get inspired?

Thanks!

Eric

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [September 11, 2019, 9:53pm UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/4 "2019-09-11T21:53:41Z")

</div>

I use the right-hand modifiers when typing left-side letter keys, and _vice versa_.

I don’t have a convenient Kaleidoscope sketch to show you, unfortunately, because I use different firmware that gives me features Kaleidoscope doesn’t support. I think the Qukeys example firmware file has home-row modifiers, though.

---

<div class="post-metadata">

**Author:** ![dshields](https://avatars.discourse-cdn.com/v4/letter/d/b9bd4f/32.png) [@dshields](https://community.keyboard.io/u/dshields)\
**Post date:** [September 12, 2019, 10:42am UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/5 "2019-09-12T10:42:12Z")

</div>

Out of interest, what firmware are you using?

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [September 12, 2019, 12:10pm UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/6 "2019-09-12T12:10:19Z")

</div>

I rewrote Kaleidoscope from scratch to address some issues I had with it, and so that I could make a plugin that allowed me to arbitrarily reassign shifted and unshifted symbols. It’s very similar to Kaleidoscope, so I call it Kaleidoglyph. (I would have called it Kaleidograph, but there’s a graphing program named Kaleidagraph.)

---

<div class="post-metadata">

**Author:** ![albx79](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/albx79/32/127_2.png) [@albx79](https://community.keyboard.io/u/albx79)\
**Post date:** [September 12, 2019, 3:13pm UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/7 "2019-09-12T15:13:56Z")

</div>

I use IntelliJ on Mac and Linux, but I’ve completely changed the Keyobardio map. I have shift on the pinkies, and all other modifiers on the thumb arcs (I also have an extra ctrl where the caps-lock key on a traditional keyboard would be).

If you don’t want to change the original layout that much, then you could move cmd or backspace to the butterfly key, and free up one thumb slot for left-alt.

---

<div class="post-metadata">

**Author:** ![benze](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/benze/32/2798_2.png) [@benze](https://community.keyboard.io/u/benze)\
**Post date:** [September 12, 2019, 5:21pm UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/9 "2019-09-12T17:21:57Z")

</div>

@albx79 I actually like having the BS and the CMD on the thumb arc, but I like the idea of duplicating modifiers on the home row like @merlin has done. That being said, given that I’m still very new on this keyboard, I’d love to see how others have redone their maps after using it for a while to leverage your experiences with it.

Can you share your map/firmware customizations for me to view?

Thanks,

Eric

---

<div class="post-metadata">

**Author:** ![albx79](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/albx79/32/127_2.png) [@albx79](https://community.keyboard.io/u/albx79)\
**Post date:** [September 13, 2019, 8:47am UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/10 "2019-09-13T08:47:03Z")

</div>

Sure, you can find it here: [https://github.com/albx79/Model01-Firmware](https://github.com/albx79/Model01-Firmware) (I only modified the layout).

---

<div class="post-metadata">

**Author:** ![kajsa.anderson](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/kajsa.anderson/32/346_2.png) [@kajsa.anderson](https://community.keyboard.io/u/kajsa.anderson)\
**Post date:** [September 15, 2019, 12:31am UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/11 "2019-09-15T00:31:14Z")

</div>

My thumb-arcs are Backspace-Shift-Cmd-Alt and Ctrl-Cmd-Shift-Space on my work (Mac) Model 01, the one I use at home on Linux is Backspace-Shift-Alt-Ctrl and Ctrl-GUI-Shift-Space (tho writing this, I’m probably going to swap so that Ctrl is in the 3rd slot, not the 4th. My hands are fairly large, but reaching the closest-to-center thumb keys isn’t very comfortable.

I’ve remapped one or two things in IJ to be more comfortable, and will probably remap the stock Enter key to be a high-numbered fn-key, and assign that to autotype, because Ctrl-space on the Mac isn’t working out for me. I’ve got Enter on the butterfly key.

My sketch is [https://github.com/kajsa/Model01-Firmware](https://github.com/kajsa/Model01-Firmware), and viewable [here](http://www.keyboard-layout-editor.com/#/gists/fb97379df0ccaafca9fba1d930c6a4c1).

---

<div class="post-metadata">

**Author:** ![lasse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/lasse/32/185_2.png) [@lasse](https://community.keyboard.io/u/lasse)\
**Post date:** [September 17, 2019, 1:42pm UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/12 "2019-09-17T13:42:12Z")

</div>

I use IntelliJ most of the day. I didn’t remap any keys in IntelliJ, but I modified my layout a lot to make the layout more effective for programming.

I have alt keys on both sides, but I find myself using the left one most of the time.  
You can ignore or remap the danish keys, if you don’t want/need an international layout.

Here is my layout:

> **[lldata/Model01-Firmware](https://github.com/lldata/Model01-Firmware)**
>
> Fork of the Model01 Firmware aimed for a programmer friendly querty layout, with inverse T mouse and arrow keys, a dedicated brackets button and access to danish æøå. Works with windows and WinComp...

---

<div class="post-metadata">

**Author:** ![benze](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/benze/32/2798_2.png) [@benze](https://community.keyboard.io/u/benze)\
**Post date:** [September 17, 2019, 3:17pm UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/13 "2019-09-17T15:17:46Z")

</div>

@merlin

> I use the right-hand modifiers when typing left-side letter keys, and _vice versa_ .

I tried your mappings today (using the home-row for modifiers with QuKeys), and really enjoyed it. However, I find that any combinations using the function keys (F1-F12) fails. At first I thought it was because the Fn layer mapped different keys, but after thinking about it, I realized that QuKeys is based on the key address, and not the actual keymap. So I’m not entirely sure why it was failing.

For instance, with the following QuKeys configuration, using a ctrl,alt,arrow (`K`, `L`, `Fn` & `H` held simultaneously), I don’t get the expected result, but rather just get a back arrow. Similarly, if I try Alt-F1

```
  QUKEYS(
    kaleidoscope::plugin::Qukey(0,KeyAddr(2,4), Key_LeftShift), // left index
    kaleidoscope::plugin::Qukey(0,KeyAddr(2,3), Key_LeftControl), // left middle
    kaleidoscope::plugin::Qukey(0,KeyAddr(2,2), Key_LeftAlt), // left ring
    kaleidoscope::plugin::Qukey(0,KeyAddr(2,1), Key_LeftGui), // left pinky
    
    kaleidoscope::plugin::Qukey(0,KeyAddr(2,11), Key_RightShift), // right index
    kaleidoscope::plugin::Qukey(0,KeyAddr(2,12), Key_RightControl), // right middle
    kaleidoscope::plugin::Qukey(0,KeyAddr(2,13), Key_RightAlt), // right ring
    kaleidoscope::plugin::Qukey(0,KeyAddr(2,14), Key_LeftGui) // right pinky
    );
  Qukeys.activate();

```

Is there a reason why QuKey doesn’t work with the Fn layer/button? Or moreover, is there a way I can make it work with it?

After a little more playing around with it, it seems that it is based on the ordering of the key presses. If I hold Fn down last, it works. If Fn is held anywhere but the last keypress, the combination fails. Is this expected behaviour?

Thanks!

Eric

---

<div class="post-metadata">

**Author:** ![benze](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/benze/32/2798_2.png) [@benze](https://community.keyboard.io/u/benze)\
**Post date:** [September 19, 2019, 1:47am UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/14 "2019-09-19T01:47:52Z")

</div>

@lasse Thanks! I looked at your firmware, and like some of the overall changes you made. I’ll have to take a closer look how you implemented a few options. But why did you bother remapping the Ctrl-ZXCV to Fn-ZXCV? Is there a particular use for that change? Do you find it makes something specifically easier?

Thanks,

Eric

---

<div class="post-metadata">

**Author:** ![lasse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/lasse/32/185_2.png) [@lasse](https://community.keyboard.io/u/lasse)\
**Post date:** [September 19, 2019, 8:55am UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/15 "2019-09-19T08:55:18Z")

</div>

> But why did you bother remapping the Ctrl-ZXCV to Fn-ZXCV? Is there a particular use for that change? Do you find it makes something specifically easier?

I did many iterations on the layout and took note of everything that annoyed me.  
At that time I thought reaching ctrl+zxcv was annoying and I remember using the palm key as an alternative was easier sometimes. I just tried noticing and to my slight surprise I noticed that I actually don’t use fn+zxcv. I use left ctrl, which is not optimal. The good thing is that the layout gives your four ways to reach those commonly used keys!

Bonus info. I tried to make a “text editing wizard mode”. So if you use the right fn, you lock the fn layer and then you can use ZXCV for copy paste without any modifiers. It is a cool idea and it works really well, but I don’t actually use it that much. 😉 I am thinking about sacrificing the mouse keys to make the text edit mode cooler, but to be honest I am too satisfied to work on the layout right now.

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [September 19, 2019, 12:31pm UTC](https://community.keyboard.io/t/best-layout-for-intellij-developer/3169/16 "2019-09-19T12:31:49Z")

</div>

> [@benze](#):
>
> Is there a reason why QuKey doesn’t work with the Fn layer/button? Or moreover, is there a way I can make it work with it?

Sorry I took so long to reply. The answer to both questions is yes. It doesn’t work with fn in your case because those qukeys are only defined on the base layer. That’s the first argument in the `kaleidoscope::plugin::Qukey()` definitions. Those qukeys only exist on the base layer (layer `0`). You can make them exist on all layers by changing that to `-1` if that’s what you want.
