Giter Site home page Giter Site logo

ruiqimao / qmkbuilder Goto Github PK

View Code? Open in Web Editor NEW
379.0 15.0 122.0 5.21 MB

Online GUI for QMK Firmware

Home Page: http://kbfirmware.com

License: GNU General Public License v3.0

JavaScript 13.42% CSS 0.58% HTML 0.09% Makefile 3.52% C 79.69% C++ 1.55% Assembly 0.32% XSLT 0.81% Python 0.02%
keyboard firmware qmk builder

qmkbuilder's People

Contributors

adam-lee avatar donatj avatar jackhumbert avatar noahandrews avatar rswiernik avatar ruiqimao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qmkbuilder's Issues

Did you forget to check in local.js?

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.

Mounting holes

Need to add some mounting holes to the PCB too or at leas add buffer space around the base layout to allow for them.

TT() not selectable

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?

Unable to use layout from the keyboard layout editor site

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 }, "", "", "", "", "", "" ] ]

Key map creation optimization

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.

Can Keycode MT() be expanded to allow MO() as a modifier?

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?

screen shot 2017-07-13 at 11 04 12 am

Rotated keys are displayed incorrectly when board is flipped.

I'm working on a handwired board with rotated keys. In order to make a checklist I thought it would be easy to have a flipped layout (just to print out a hard copy).
Then I noticed something seemed off :)

image
image

Will try to look if I can fix this 'issue' myself.

Still alive?

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

Option to use KC_POWER instead of KC_PWR

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

Indicator LEDs Source current option

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?

Error on Flashing Pro Micro - address out of range

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

Default local.json

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...

Breaks if there's a space in the file path.

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.

Use submodule for QMK source

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?

One layer only does not compile

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 ?

Won't build or deploy

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?

Support permalinks

Have the editor automatically load a config from URL parameters. One way this could be done would be to encode the config in base64.

Update QMK Keycodes link

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

Which version of KLE json

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

KC_RSPC is invalid

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.

FLIP fails to load hex file - address is out of range

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!

Permission to reuse React components

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!

Support for basic unicode UC

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.

local.json

Hello
Can you provide your local.json content, readme.md not understand? thank you.

load json file,

There is an option to save the keyboard to a json file, but there where is the load function?

Specify license?

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.

Oh Yeah!I work it out!

@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

image
image

Cannot load old layout json file

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

Wire keys directly to pins

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

Uploading zip files?

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

[Suggestion] Ignore layers that are ONLY transparent keys

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

Split keyboard support

Would love to see Ergodox support. Don't know if it's painful because of the split layout or not.

Cannot compile from source files downloaded from the website

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

Why the pcb is written protected?

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.

Error on run

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?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.