As promised, I’ve finished porting my 65% QMK layout into a 96% version!
I’ve also enhanced the template to make it a little easier to work with, I would love your FeedBack!
Here’s my keymap:
I built this to help out the GMMK community get a jump start on their QMK Builds for the GMMK 2 96% ANSI Keyboard
* Most default Glorious shortcuts enabled
* Custom Colors For default Glorious shortcuts
* N-key Rollover (NKRO) enabled
* Fn-\ or Fn-ESC for Bootloader mode
* Four Layers, 3 To customize and a function layer
* Macro's included via the macro.h
* Custom Glorious Sides Function to set side Colors
* Sample layers to copy and paste, etc
Notes:
You have to use the QMK Tools that glorious has provided as the standard qmk_tools doesn’t have support for the WB32 yet.
If you have QMK_MSYS already installed you will need to delete the existing qmk_firmware directory to make sure you’ve got the right qmk fork and branch with the right glorious firmware. Just follow the guide instructions for QMK_MSYS after you’ve backed up moved/deleted/renamed the existing folder.
If your on Windows 11, libusb doesn’t pickup the board in bootloader mode. You will need to use zadig to install the right driver. I’ve already posted instructions on the original QMK announcement thread over here.
I’ve tried to improve the documentation a little, and I’m working on some custom side animations for both keyboards! Again feedback is helpful!
This is great! Thank you very much for setting this up! Makes my life a bit easier that’s for sure.
I’ve built a keyboard layout to attempt to get this to work with VIA but when I build your keymap, I’m met with an error about not enough endpoints:
" error: #error There are not enough available endpoints to support all functions. Please disable one or more of the following: Mouse Keys, Extra Keys, Console, NKRO, MIDI, Serial, Steno"
Any suggestions on how I can go about that? I’ll never use MIDI, Mouse Keys, Serial, or Steno.
Thanks, I built it to help the community, glad it’s doing its job, well sort of…
On your rules.mk just disable those modules. Check the qmk documentation for the specifics on how. Did you post an issue on GitHub? If you thinks it’s my code we should continue discussion over there so the convo is more visible to others who may have grabbed it.
Not sure what I am doing wrong, hoping someone could shed some light.
First, I am having trouble compiling and keep getting this error:
Compiling: quantum/keymap_introspection.c In file included from ./keyboards/gmmk/gmmk2/p96/ansi/keymaps/Dig-pestroyer/keymap.c:17,
from quantum/keymap_introspection.c:5:
./keyboards/gmmk/gmmk2/p96/ansi/keymaps/Dig-pestroyer/keymap.c:105:12: error: ‘UC_M_WI’ undeclared here (not in a function)
105 | _______, UC_M_WI, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD, TO(_BL), _______)
| ^~~~~~~
./.build/obj_gmmk_gmmk2_p96_ansi/src/default_keyboard.h:33:31: note: in definition of macro ‘LAYOUT’
33 | {k1A, k1B, k1C, k1D, KC_NO, k1F, k1G, k1H},
| ^~~
In file included from quantum/keymap_introspection.c:5:
./keyboards/gmmk/gmmk2/p96/ansi/keymaps/Dig-pestroyer/keymap.c: In function ‘rgb_matrix_indicators_advanced_user’:
./keyboards/gmmk/gmmk2/p96/ansi/keymaps/Dig-pestroyer/keymap.c:175:9: error: implicit declaration of function ‘IS_HOST_LED_ON’; did you mean ‘IS_LED_ON’? [-Werror=implicit-function-declaration]
175 | if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
| ^~~~~~~~~~~~~~
| IS_LED_ON
cc1.exe: all warnings being treated as errors
[ERRORS]
|
|
|
make[1]: *** [builddefs/common_rules.mk:361: .build/obj_gmmk_gmmk2_p96_ansi_Dig-pestroyer/quantum/keymap_introspection.o] Error 1
Make finished with errors
make: *** [Makefile:392: gmmk/gmmk2/p96/ansi:Dig-pestroyer] Error 1
Second, I am not sure I am placing the files you provided in the correct places either.
It looks like you probably have done some customization to the files. Do you have a github account? I would recommend posting your issue on the github page, it will get more visibility over there, and will force me to fix my code if there’s something wrong with it!
Feel free to fork to your own account to share the code with me if you would like additional help!
I managed to get the first error cleared up, I was trying to compile using the latest qmk firmware and not the one provided by Glorious.
However, I’m still getting the error regarding the rgb matrix. I noticed someone had the same issue for your 65% keymap and that a solution had been found and pushed but I did not find anything documenting what the fix was or that if that it had only been fixed for the 65% or for both.
Per your suggestion I will submit an issue on your git.
I absolutely will and will be looking to expand upon the great foundation you have set here. While doing research I put off for almost a year I found a pretty extensive build for the gmmk pro that I would hope I might be able to use to import some features over to this board.
I’ve merged the branch into main as it was a bug, so no need to pull a special branch now. Its merged to main now, so no one else has a problem! Thanks for the bug report!
Thank you for doing this. How do I disable NKRO? I need to disable it fora KVM and cannot find how you are controlling it in your scripts. FORCE_NKRO isn’t in the config.h file and there ins’t a rules.mk. I’m a QMK noob, so maybe I’m missing something?
Qmk documentation says this function would be enabled by a rules.mk file. By default it is off. Since I don’t even define a rules.mk, this layout should use default NKRO_ENABLE = false.
NKRO_ENABLE
This allows the keyboard to tell the host OS that up to 248 keys are held down at once (default without NKRO is 6). NKRO is off by default, even if NKRO_ENABLE is set. NKRO can be forced by adding #define FORCE_NKRO to your config.h or by binding MAGIC_TOGGLE_NKRO to a key and then hitting the key.
@MetalGeek I just double checked and it seems that the 96% code includes a capslock option:
if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
RGB_MATRIX_INDICATOR_SET_COLOR(54, 255, 255, 255); //capslock key
}
However I believe that code isn’t working at the moment. But, another github user very recently submitted an issue and a fix, but didn’t make a pull request. I just integrated that code into a new branch → DreamingLambsUpdate on github.
Can you pull the new branch and give it a test? Currently the code is statically setting the color to red I believe. I would like to clean that up to just be variables at the top before merging to main. I can compile the code, but I don’t have the board at hand to test with, so I could use an assist there.
After a crash course in github and all the tools, I have a working Firmware loaded. Took a bit and I found out that the GloriousThrall code base has a bug as it’s using the Product_ID of the GMMK Pro. It also has two layout issues. I also didn’t need to change my USB driver. During so didn’t remove the unknown device message in QMK Toolbox and flashing works as expected using the device WinUSB
This Reddit thread discuss the issue in the GloriousThrall codebase and has the correct steps to get a working Firmware with VIA support as well as SignalRGB. I tested both and they work as expected. Here are the steps that worked for me for QMK with and without VIA.
Change directory to C:\qmk_firmware (or whatever other path you cloned to) cd /c/qmk_firmware
Run git clone https://github.com/qmk/qmk_firmware.git /c/qmk_firmware/
wait until completed
Run make git-submodule
wait until completed
Run qmk compile -kb gmmk/gmmk2/p96/ansi -km via for Via support or qmk compile -kb gmmk/gmmk2/p96/ansi -km default for default layout.
wait until completed
Open QMK Toolbox from Glorious (link from above)
Navigate to C:\qmk_firmware.build<buildname>.bin
Put keyboard in DFU Mode (unplug keyboard and hold key combination while plugging in)
If you have a VIA firmware, use Escape [ESC].
Could be Space + B - default for stock Glorious firmware for me
Could be Fn + /
With QMK Toolbox, flash firmware
I then used VIA to fix two layout issues common to all QMK firmware I tested.
The Escape key is bound to ` and Escape. This breaks Ctrl+Shift+Escape to open task manager, which I use all the time. I rebound Escape to just Escape to correct.
Fn+F6 was not bound to Next for media control. I corrected this by changing F6 to Next on Layer1.
Log into github and navigate to my keyboard page. In the right corner is a button to create your own fork! That will make a duplicate of my repo under your user. But it’s still tied to my repo so if you make changes or improvements you can make a pull request, and I can pull it into my repo( and give you credit on the work!)
Once forked you clone the repo to your machine make changes and push the Code back into your fork.
My repo is just a keymap that you bury inside qmk/keyboards/glorious…
Also since I wrote the og guide, you should be able to use standard qmk_tools. When it first came out, the chip in the keyboard hadn’t been merged into qmk_tools Main branch. It’s def been merged since then and may solve some issues automatically
Thank you, I created the fork. Does this include DreamingLambsUpdate? If not, how do I get a hold of that? Good to know regarding the qmk_tools, I’ll give them a try. I had to flash back to the default firmware, so it will be a bit before I start fiddling again. The SignalRGB version (or the standard qmk) doesn’t play nice with my current KVM. Ctrl+V and Ctrl+C will cause the keyboard to keep typing c or v endlessly until I hit another key. Not every time but I use those shortcuts all day long so it’s really annoying while I’m working. I’ll test again with your fork + stock qmk to rule out some oddities in the SignalRGB code. I’m really interested in seeing that caplock work. even if I cannot keep it running, I’ll test the code and makea pull request so you can merge it into your base. Least I can do for the help.
Deleted my last reply. Turns out in order to use GloriousPanda’s repository which looks like your code is based on, I had to revert to an older version of QMK, specifically I went back to 1.7.0, release mid 2022. That cleared up lots of odd errors I was getting with GloriousPanda’s code and your keypa.c compiled. I also manually updated the keymap.c to include the CAPslock and Numlock code. They are two new if/else statements and your single if statement I commented out. Here is what that section looks like. I’ll give this a try later on tonight to see if it works.
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
// if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK))
// RGB_MATRIX_INDICATOR_SET_COLOR(54, 255, 255, 255); //capslock key
//Thanks Sheep!!!!!
//Caps Lock Indicator
if (host_keyboard_led_state().caps_lock) {
RGB_MATRIX_INDICATOR_SET_COLOR(54, 255, 0, 0); // Assuming Caps Lock is at LED #54
} else {
RGB_MATRIX_INDICATOR_SET_COLOR(54, 0, 0, 0);
}
//Num Key Inidicator
if (host_keyboard_led_state().num_lock) {
RGB_MATRIX_INDICATOR_SET_COLOR(32, 255, 0, 0); // Assuming Num Lock is at LED #32
} else {
RGB_MATRIX_INDICATOR_SET_COLOR(32, 0, 0, 0);
}
// }