ruiqimao / qmkbuilder Goto Github PK
View Code? Open in Web Editor NEWOnline GUI for QMK Firmware
Home Page: http://kbfirmware.com
License: GNU General Public License v3.0
Online GUI for QMK Firmware
Home Page: http://kbfirmware.com
License: GNU General Public License v3.0
Both on Windows and Debian, npm run build
produces this error: errorify: Error: Cannot find module './local' from '/home/noah/qmkbuilder/src/const'
. It appears there should be a file called local.js
in src/const
, but there is none.
Need to add some mounting holes to the PCB too or at leas add buffer space around the base layout to allow for them.
I don't seem to be able to use the tap/toggle layer function. I don't see it in the "Fn" list under the keymapper, and when I try to type it in the "other" box, it just switches back to my previous entry on that key. Am I doing something wrong?
I'm working on a totally custom macro pad kind of build and I'm following QMK handwired guide for it. I've landed on kbfirmware.com to set it up but when I copy my layout JSON into the site I just get an error saying it's invalid.
No idea what I'm doing wrong here. It's just a single row of 6 across I'm building. Sorry if this is totally the wrong place for this!
 [ [ { "a": 7 }, "", "", "", "", "", "" ] ]
It reproduces very well in vivaldi, chrome and firefox on Linux with this config.
The config was created by pasting raw data from layout builder and then changing some stuff and saving it from the settings menu.
myspacefn.json.txt
Hey, I am working on a 68 key board;
The system set me up with 16 columns and 4 rows. I was able to change it to 15 columns with 4 rows. It may not seem like much but can mean the difference between a 20 or 25 port controller.
https://github.com/qmk/qmk_firmware/blob/master/keyboards/xd60/config.h#L50
Backlight pin is F5 - can you enable this somehow - currently it throws an error via QMK compile to use the B pins only? I think in latest QMK it is okay to do that as well.
Thanks!
Essentially I am on a minivan, and am trying to switch from TMK to QMK. I want my enter key to be enter when pressed, and momentarily turn on layer 1 when held. I want the same for space but layer 2. I am able to do this on the http://minivan.config.thevankeyboards.com/ which uses TMK and have to assume it is possible to do on QMK, but honestly am not positive.
It seems MT() only allows for traditional modifiers and modifier combos and your site. Is there a way to expand that to include momentary layers?
Hi
Is this project still alive? The link to http://www.ruiqimao.com/ gives 404.
The compile page does not download hex or zip ... don't know if this is because of my non-standard layout or if something on the site is broken ...
Can't use the qmk_configurator at the moment because it doesn't know my physical layout.
Thanks, Ian
could you add support for the other mcus like STM32xxx
Looks like KC_PWR
doesn't work on Mac OS, but KC_POWER
does (source). As far as I can tell there isn't a way to set KC_POWER
with this right now. A quick fix could be an option to manually enter a keycode, especially if there are some others that are missing from the GUI
In the configurator currently the Indicator LEDs are set to sink the current to turn on the LED.
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
DDRA |= (1 << 3); PORTA &= ~(1 << 3);
}
else {
DDRA &= ~(1 << 3); PORTA &= ~(1 << 3);
}
But there are some PCBs that source the current to turn on the LED.
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
DDRA |= (1 << 3); PORTA |= (1 << 3);
}
else {
DDRA &= ~(1 << 3); PORTA &= ~(1 << 3);
}
Would it be possible to add an option to let these PCBs use the tool?
it seems like in the keymap section the 'other' section is supposed to allow for custom keycode entry but it kinda doesnt. would be very helpful
i tried to enter the keycode manually but it reverts back to the old keycode after i click outside.
Hi Ruiqimao,
Thank you for your keyboard firmware builder, it is an excellent tool! It greatly helps our newbies on building QMK firmware without the necessity of setting up QMK environment. I am using it for most of new keyboards testing before writing my own QMK code.
Issue Description
Recently, a friend of mine found that the firmware generated by the builder does not work on Pro Micro, I did a test and found there is an address out of range
error.
Potential Solution
I've experienced the same issue on my own QMK installation. It took me quite some time to figure out that, avr-gcc v8 does not work well for Pro Micro, while avr-gcc v7 works perfectly with the same code. The problem seems related to the bootloader, because avr-gcc v8 works well on GH60 board.
Could you please help investigate if it is the same issue? We are really appreciate!
Flashing Log
*** QMK Toolbox (http://qmk.fm/toolbox)
Supporting following bootloaders:
- DFU (Atmel, LUFA) via dfu-programmer (http://dfu-programmer.github.io/)
- Caterina (Arduino, Pro Micro) via avrdude (http://nongnu.org/avrdude/)
- Halfkay (Teensy, Ergodox EZ) via teensy_loader_cli (https://pjrc.com/teensy/loader_cli.html)
- STM32 (ARM) via dfu-util (http://dfu-util.sourceforge.net/)
- Kiibohd (ARM) via dfu-util (http://dfu-util.sourceforge.net/)
*** Caterina device connected
*** Attempting to flash, please don't remove device
Found port: /dev/cu.usbmodem145410
>>> avrdude -p atmega32u4 -c avr109 -U flash:w:/Users/mingjie/Downloads/gh60.hex:i -P /dev/cu.usbmodem145410 -C avrdude.conf
avrdude: warning at avrdude.conf:14976: part atmega32u4 overwrites previous definition avrdude.conf:11487.
Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
Software Version = 1.0; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.
Programmer supports the following devices:
Device code: 0x44
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9587
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/Users/mingjie/Downloads/gh60.hex"
avrdude: ERROR: address 0x80024b out of range at line 1149 of /Users/mingjie/Downloads/gh60.hex
avrdude: read from file '/Users/mingjie/Downloads/gh60.hex' failed
avrdude done. Thank you.
Thank you!
Mingjie
Why don't you simply provide a default local.json file
which lets one easily check out the project by hosting the static directory?
(e.g. with cd static && python3 -m http.server
)
This works to make the presets available:
{
"PRESETS": "/presets/"
}
No idea what the API key is good for...
Is there a way to add NKRO_ENABLE to the Makefile from within the GUI configurator?
If there's a space in the file path for example C:\Users\User Name\Documents\keyboard.hex
instead of properly working it will output the dfu-programmer help message and display 'An Error has occurred'. It's not program-breaking, but it took quite a while before I managed to figure out and fix it.
The system is on Windows 10, the board is a GH60 Satan.
Look at this schema, the columns here are wired in "U" shapes to conserve pins.
https://github.com/Supermagnum/98keys-ergo/blob/master/joined-boards.pdf
Please add the support for this method in the qmkbuilder.
Currently, the QMK source is manually pulled into the repo. This opens up the possibility of errors and issues when copying in the source, as well as the possibility of falling behind of mainline QMK very quickly. From an organizational perspective, I think it would be better to have the QMK source included as a submodule. It's even pretty reasonable to pin this submodule to a specific version tag.
Thoughts? Was this looked at and passed over for some other reason I might be missing?
I tried to compile a file where I removed all layers except layer 0, and nothing happened.
I thought the UI froze, because the Download buttons were deactivated, but I then realised this was intentional.
However, I saw an error message in the console: key[0].keycodes[layer] is undefined
I think the culprate is src/files/generators/keymap.c.js
:
for (let layer = 0; layer < C.KEYMAP_MAX_LAYERS; layer ++) {
let layerMap = '\tKEYMAP(\n\t\t';
for (let row = 0; row < keyboard.rows; row ++) {
for (let col = 0; col < keyboard.cols; col ++) {
const key = keyboard.wiring[row + ',' + col];
if (!key || !key.length) continue;
layerMap += key[0].keycodes[layer].getCode() + ', ';
}
layerMap += '\n\t\t';
}
layerMap = layerMap.substring(0, layerMap.length - 5) + '),\n\n';
keymaps += layerMap;
}
For some reason, that for loop looks a bit dodgy. It seems to assume that there will always be the max amount of layers.
I don't know if that is supposed to be the case.
I did modify my layout file by hand, and in order to get a clean, human-readable JSON, I removed the unused layers. If that's not supported, that should either fail gracefully or maybe add KC_TRNS
keycodes by default ?
Iv'e setup a build environment on Windows, Linux and Mac, but I can't seem to get this to build.
Am I missing something?
Have the editor automatically load a config from URL parameters. One way this could be done would be to encode the config in base64.
Would be AMAZING if we could do tap dances in your tool... no idea how involved that would be though
I've made available at my Github the base JSON files for the S60-X RGB keyboard. These includes standard ANSI layout, standard ISO layout and a generic layout, making visible all the keys available, in special the split backspace and both shift keys. The right shift key can be split like in JIS layout or like in HHKB layout.
The current link goes to a 404. The new page is at https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
or https://docs.qmk.fm/#/keycodes
Hi
Could maybe specify which version of KLE json to use ... the 'lite' version displayed on screen or the full Download Json/ Upload Json version
Im trying to configure Space Cadet shift keys and the left shift can be set, KC_LSPO for open perentheses, but the right shift cannot, KC_RSPC, for close parentheses cannot.
Attempted to export and save the json then reupload but complained the config was invalid.
Interstingly you can set a key as KC_RSPO however this will trigger a compile error when trying to download the hex file.
I'm trying to compile a working hex file for the Prime L keyboard using kbfirmware.com.
I uploaded my config, changed a key, downloaded the compiled hex file, set the Device in FLIP 3.4.7 to ATmega32U4 and tried to load it. - But it generates the error message "address is out of range".
I then downloaded the default Json-file from
https://www.primekb.com/pages/programming
just to make sure but this gives me the same result. It was working fine before - for instance It is possible to load a hex file that I generated last year using the same method.
Any help would be appreciated. Thanks!
Hey there! I am starting off a new open source effort (MIT license) to write an Electron app that would allow configuring the Anne Pro keyboard on basically any OS.
The idea will be to leverage the https://github.com/sandeepmistry/noble bluetooth library.
I noticed you are already using React which is exactly what I'll be using for this project so I was wondering if I could use your components as base/inspiration for my efforts.
Please let me know.
Thank you!
Thank you for the great work @ruiqimao, https://kbfirmware.com/ allowed me to get my first custom keyboard up and running quickly!
I was wondering if you had any plans for unicode support or if there is already a way to do so? I am trying to have my kb support french accents.
Curious to hear your thoughts on it.
Nico.
The URL in the description of the project (http://kb.rmao.io) is dead. I think the correct URL should be http://kbfirmware.com/..?
Hello
Can you provide your local.json content, readme.md not understand? thank you.
There is an option to save the keyboard to a json file, but there where is the load function?
It's not clear whether this is intended to be proprietary software or not; either way it would be helpful to state in the readme. Thanks.
@ruiqimao Hello,Could you please add these key in SECONDARY?It is very useful!
SC070 International2
SC071 Lang2
SC072 Lang1
SC073 International1
SC077 Lang4
SC078 Lang3
SC079 International4
SC07B International5
SC07D International3
I had an old json file that I made on your site a few months back, and now when I try to load it, the site throws an error, saying invalid layout. Has anything changed in the way you store data? Is there any way for me to convert my old layout file? Here is the full file
Hello,
There are some cases where you have so few keys (ej: a 9 key macro pad) that it's way easier to attach each key to a single pin than building a matrix.
Is there a way to specify this on your tool ?
Thanks in advance
Hello! Is there any way to upload generated zip file (or some element of it) back on the site? I had to reboot a PC and now site is refreshed so I cannot edit my keyboard anymore. I cannot find any json file in that folder as well. Thanks
If I go up a bunch of layers, they're all KC_TRANS by default for being entirely blank. However, once I go back down to used layers, when exporting anything it'll include the many empty layers.
This isn't really an issue for the json settings, but for the hex file it is way too large. I suppose one could download the zip source and compile after editing out the empty layers, but that defeats the purpose (and windows-only users can't compile unless they go through a ton of hoops)
Or simply have an option to delete layers in the editor
Would love to see Ergodox support. Don't know if it's painful because of the split layout or not.
According to KLE Decals are "Purely Decorative"
Unfortunately, qmkbuilder does not ignore these and adds them to the matrix.
Example that causes this error: http://www.keyboard-layout-editor.com/#/gists/7abe0f9944f72517c9f9f7b989548eb5
Here is the output:
$ make
Making kb with keymap default
avr-gcc.exe (AVR_8_bit_GNU_Toolchain_3.5.4_1709) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Compiling: keyboards/kb/kb.c [OK]
Compiling: keyboards/kb/keymaps/default/keymap.c keyboards/kb/keymaps/default/keymap.c: In function 'action_get_macro':
keyboards/kb/keymaps/default/keymap.c:104:13: warning: unused variable 'event' [-Wunused-variable]
keyevent_t event = record->event;
^
[OK]
Compiling: quantum/quantum.c [OK]
Compiling: quantum/keymap_common.c [OK]
Compiling: quantum/keycode_config.c [OK]
Compiling: quantum/process_keycode/process_leader.c [OK]
Compiling: quantum/matrix.c [OK]
Compiling: quantum/light_ws2812.c [OK]
Compiling: quantum/rgblight.c [OK]
Compiling: ./tmk_core/common/host.c [OK]
Compiling: ./tmk_core/common/keyboard.c [OK]
Compiling: ./tmk_core/common/action.c [OK]
Compiling: ./tmk_core/common/action_tapping.c [OK]
Compiling: ./tmk_core/common/action_macro.c [OK]
Compiling: ./tmk_core/common/action_layer.c [OK]
Compiling: ./tmk_core/common/action_util.c [OK]
Compiling: ./tmk_core/common/print.c [OK]
Compiling: ./tmk_core/common/debug.c [OK]
Compiling: ./tmk_core/common/util.c [OK]
Compiling: ./tmk_core/common/eeconfig.c [OK]
Compiling: ./tmk_core/common/avr/suspend.c [OK]
Compiling: ./tmk_core/common/avr/timer.c [OK]
Compiling: ./tmk_core/common/avr/bootloader.c [OK]
Assembling: ./tmk_core/common/avr/xprintf.S [OK]
Compiling: ./tmk_core/common/bootmagic.c [OK]
Compiling: ./tmk_core/common/mousekey.c [OK]
Compiling: ./tmk_core/common/backlight.c [OK]
Compiling: ./tmk_core/protocol/lufa/lufa.c [OK]
Compiling: ./tmk_core/protocol/lufa/descriptor.c [OK]
Compiling: ./tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Class/Common/HIDParser.c [OK]
Compiling: ./tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.c [OK]
Compiling: ./tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c [OK]
Compiling: ./tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.c [OK]
Compiling: ./tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.c [OK]
Compiling: ./tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.c [OK]
Compiling: ./tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c [OK]
Compiling: ./tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c [OK]
Compiling: ./tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c [OK]
Compiling: ./tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/ConfigDescriptors.c [OK]
Compiling: ./tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/DeviceStandardReq.c [OK]
Compiling: ./tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/Events.c [OK]
Compiling: ./tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/HostStandardReq.c [OK]
Compiling: ./tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/USBTask.c [OK]
Linking: .build/kb_default.elf [OK]
Creating load file for Flash: .build/kb_default.hex [OK]
Size after:
text data bss dec hex filename
0 21898 0 21898 558a kb_default.hex
Making test serial_link_byte_stuffer [ERRORS]
quantum/serial_link/tests/byte_stuffer_tests.cpp:25:25: fatal error: gtest/gtest.h: No such file or directory
#include "gtest/gtest.h"
^
compilation terminated.
|
|
|
make[1]: *** [tmk_core/rules.mk:355: .build/test_obj/serial_link_byte_stuffer/./quantum/serial_link/tests/byte_stuffer_tests.o] Error 1
Making test serial_link_frame_validator [ERRORS]
quantum/serial_link/tests/frame_validator_tests.cpp:25:25: fatal error: gtest/gtest.h: No such file or directory
#include "gtest/gtest.h"
^
compilation terminated.
|
|
|
make[1]: *** [tmk_core/rules.mk:355: .build/test_obj/serial_link_frame_validator/./quantum/serial_link/tests/frame_validator_tests.o] Error 1
Making test serial_link_frame_router [ERRORS]
quantum/serial_link/tests/frame_router_tests.cpp:25:25: fatal error: gtest/gtest.h: No such file or directory
#include "gtest/gtest.h"
^
compilation terminated.
|
|
|
make[1]: *** [tmk_core/rules.mk:355: .build/test_obj/serial_link_frame_router/./quantum/serial_link/tests/frame_router_tests.o] Error 1
Making test serial_link_triple_buffered_object [ERRORS]
quantum/serial_link/tests/triple_buffered_object_tests.cpp:25:25: fatal error: gtest/gtest.h: No such file or directory
#include "gtest/gtest.h"
^
compilation terminated.
|
|
|
make[1]: *** [tmk_core/rules.mk:355: .build/test_obj/serial_link_triple_buffered_object/./quantum/serial_link/tests/triple_buffered_object_tests.o] Error 1
Making test serial_link_transport [ERRORS]
quantum/serial_link/tests/transport_tests.cpp:25:25: fatal error: gtest/gtest.h: No such file or directory
#include "gtest/gtest.h"
^
compilation terminated.
|
|
|
make[1]: *** [tmk_core/rules.mk:355: .build/test_obj/serial_link_transport/./quantum/serial_link/tests/transport_tests.o] Error 1
Make finished with errors
make: *** [Makefile:501: test-all] Error 1
hello everyone, i want to flash my keyboard, and i do this
`alias d0='dfu-programmer atmega32u4 erase --force'
alias d1='dfu-programmer atmega32u4 reset'
alias d2='dfu-programmer atmega32u4 flash kb_default.hex'`
error occured in step 3:
**Checking memory from 0x0 to 0x587F... Empty.
0% 100% Programming 0x5880 bytes...
[Device is write protected.
X ERROR
Memory write error, use debug for more info.
**
Anyone knows, thanks advance.
Hi, I want to deploy this project to my own VPS. What should I do?
Hi I am getting the following error when running with node index.js or npm run deploy
errorify: Error: Cannot find module '/main/index' from 'S:\Coding\qmkbuilder\src'
Any suggestions?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.