Ellipse wrote: 11 Sep 2023, 19:45Vial even has a check mark to enable and disable NKRO right from the GUI.
My firmwares actually do not support this particular feature. Support for QMK "Magic" (now called "Command" by QMK themselves) toggles within the Vial GUI only arrived in Vial 0.6.0, and my firmwares are still based on 0.4.1, since I haven't yet managed to get Vial 0.5+ running stably on the Xwhatsit. NKRO on/off is located under this "Magic" feature. You can still control the keyboards running this firmware with the latest version of the Vial utility (0.7.1 at the time of this writing) and even the vial.rocks web site, but it can detect which Vial features the firmware does and doesn't support, and will only show the options applicable to that firmware. Thus the "Magic" tab doesn't even show up under QMK Settings.
So for the time being, to toggle NKRO on and off, similar to HPT_TOG (haptic/solenoid toggle), you still have to assign MAGIC_TOGGLE_NKRO (0x5c14) to some key on some layer of your keymap, and then press that key.
I'm guessing maybe you saw the NKRO toggle in the Vial interface while you were testing a keyboard with a Leyden Jar controller. I'm sure current Leyden Jar firmware is based on a much newer version of Vial than my wcass-xwhatsit Vial firmwares are, so I would expect that option to show up and work on the Leyden Jar.
Ellipse wrote: 11 Sep 2023, 23:55
hid-remapper is correctly passing through both keyboards' keypresses, but I do not know how to configure it to pass through the MO(1) layer key.
I attempted to explain this in a PM but I'm not sure I explained it very well.
This will never work. Period. If somebody told you that this was possible, then they were confused. And if you asked the hid-remapper project lead about this and he answered that it would, then either he didn't understand your question, or you didn't understand his response. Or both. Either way, I think you were talking past each other a bit.
MO(x) keys in QMK do not generate scancodes. Pressing MO(x) + some key stored in that layer *internal* to the keyboard will generate a scancode, of course, but pressing the MO(x) key all by itself will not.
Even if it did, there is no provision for one keyboard half to be able to "talk" to the other keyboard half when they are both plugged into a common hub sitting behind the hid-remapper. The two keyboard halves are completely unaware of each other, and can only talk to a single common host, not to each other. Thus if you have a MO(1) button on the right half, you can't hold it down and then expect to press a key on the left half & have it register whatever is internally programmed using Vial into that key on layer 1 of the left-side board.
I believe the way that this is expected to work is that the hid-remapper has its OWN set of layers that you program into IT. So the "layers 0/1/2/3" that the hid-remapper interface is referring to is talking about layers inside the hid-remapper's memory. It's NOT talking about the layers that Vial/QMK knows about. Those are two separate things.
So when you are using two QMK-based keyboards plugged into a hid-remapper, you actually have TWO completely different & separate sets of layers to think about:
- The native QMK/Vial layers, one per keyboard, which are internal to just that keyboard and which the other keyboard is not aware of & vice-versa. Also, the hid-remapper is not aware of QMK/Vial layers, either, and has no way to be able to trigger them.
- The layers that you program within the hid-remapper that would then be common between both keyboards, but are controlled wholly by the hid-remapper (the keyboards are not aware of these layers; the hid-remapper takes care of implementing this itself before passing the scancodes to the host computer).
In the screenshot of your config, you show mapping "Layer 1" to "Layer 1", as if the hid-remapper can pass a layer selection from one keyboard to another, which again isn't possible. This just turns out to be a nonsense configuration that the hid-remapper interface allows you to configure, because it happens to give you the same options for "Input" and "Output" and won't stop you from picking the same thing for both. But that configuration effectively does nothing.
If you want an example of how to configure a shared layer using hid-remapper, you can go to the Examples and look at the one titled "arrows act as mouse when caps lock held". First, you have to pick a key that actually generates a valid scancode when pressed to use as the layer select (so can't be a QMK MO(x) key); in this example, Ctrl. You set that key as the Input, and then for Output, you pick the hid-remapper layer # that you want that key to trigger when held. So now holding Ctrl down acts as the Layer 1 select key for hid-remapper Layer 1 (again, NOT QMK/Vial layer 1! completely separate!!!). Then for the keys that you want to trigger particular actions on that layer, you select that key as Input, make sure to select the appropriate layer checkbox on the right for that key (in this case layer 1), and then for Output you select the action that Ctrl+that key should trigger. So now Ctrl+Left moves the mouse cursor on the X axis by -0.5 units. And so on.
The only way to actually share QMK layers between split keyboards is to wire the two keyboard controllers directly up to each other, and utilize the native provisions within QMK to support split keyboards. In which case the split keyboard would only have one cable going to the host computer & it would appear as a single keyboard to the host without the need for a hid-remapper-like device.
`
![hidremapper-layer-example.png](./download/file.php?id=78897)
- hidremapper-layer-example.png (102.61 KiB) Viewed 135605 times