Page 3 of 24

Posted: 19 Oct 2014, 03:21
by shadowkillerdragon
Hey I was wondering what should I do if the keyboard randomly presses keys / sometimes pressing a key activates more than one key. I was able to get the matrix coded correctly and such because I tested each pin out to see if the matrix was correct.

Its just sometimes when moving around the teensy, that this problem is happening. I'm planning on finishing soldering up and making the wires nice and clean sometime next week. I'm assuming the problem would go away when I secure the teensy and cover the components.

Posted: 12 Nov 2014, 08:44
by turtlobenzene
So I tried to build my own code for an ergo board, and after screwing up a ton of times I'm down to this error which seems related to compiling the debug module, which I had nothing to do with. The error is this: http://imgur.com/1BqHPNW

Posted: 13 Nov 2014, 21:19
by tanker666
turtlobenzene wrote: So I tried to build my own code for an ergo board, and after screwing up a ton of times I'm down to this error which seems related to compiling the debug module, which I had nothing to do with. The error is this: http://imgur.com/1BqHPNW
I'm making a 2*4 keyboard out of a QWERKEY sampler and I'm stuck with the same error as yours. :?
If I find out the cause I'll write it down, but hope somebody else knows the reason.

Posted: 14 Nov 2014, 00:45
by hasu
See this for that compile error of debug.c.
https://github.com/tmk/tmk_keyboard/issues/143

You will need to use one of those workarounds for a while until this issue will be finally fixed some later.

Posted: 14 Nov 2014, 00:54
by tanker666
It works with changing the code in debug.c.
Thanks for the quick help!
And for the making this firmware, you are awesome 8-)

Posted: 29 Nov 2014, 11:26
by ماء
what code symbol in teensy !@#$%^&.etc?

Posted: 15 Dec 2014, 19:02
by Ninhalem
Regarding the LED's, what would I need to modify in either the Master\Keyboard\gh60\led or Master\Common\led files to get an LED to be lit when either layer 0, layer 1, or layer 2 is active? I understand that those 3 different LED's go to 3 separate ports on the Teensy controller, but I am confused as to what I need to put in the led file at

Code: Select all

if (usb_led & (1<<USB_LED_CAPS_LOCK))
for the board to illuminate an LED corresponding to which layer is active.

Should the USB_LED_CAPS_LOCK be changed to a key map reference or is there a reference to the layer from the keymap_poker.c file in the tutorial?

Thanks for any help.
Nin

Posted: 10 Jan 2015, 19:34
by ROFLmonster
Hey, so I tried to compile my edited layout for a numpad, and I've got a few errors.

I compared the code to the original, and I still can't fix it. I'm using cygwin64 on Windows, and I can compile the original Makefile, just not mine.

Here's the error I'm getting:
http://i.imgur.com/HEk089x.png
And here's the code I've changed on pastebin:
http://pastebin.com/NTUDWtWh

Re: How to build your very own keyboard firmware

Posted: 10 Jan 2015, 19:41
by hasu
You don't need 'KC_’ in KEYMAP macro. remove that.

Posted: 10 Jan 2015, 19:42
by scottc
There's a trailing comma on line 34, that might be part of the problem too.

Posted: 10 Jan 2015, 20:41
by ROFLmonster
@hasu: I tried without it, and for everything that's not a number (i.e. ESC, SLASH..) it generates an 'undefined' error. For example I put 'ESC' instead of KC_ESCAPE' and it threw up an error. For the rest I wanted to have a 'real' numpad input.

@scottc: Fixed, still error.

http://pastebin.com/ZQ4YCpvY

Thanks for your quick response.

I tried with MHV AVR Tool but it doesn't even start to compile. I also can't seem to change directory. :/ 'cd d:\' does nothing.

Edit: Just noticed that it fixed a couple of errors regarding the initialization of 'keymaps', but there's something wrong with with the array still, in line 49 of the latest pastebin:

Code: Select all

keymap_common.h:46:1: error: parameter name missing
) { \
 ^
Edit2: Found this thread on GH:
geekhack.org/index.php?topic=63467.0
With the same problem as mine. I'll try building it in an Arch VM I have from a while ago, but it'll probably be tomorrow... Meanwhile of you have any suggestion, feel free to help.

Posted: 11 Jan 2015, 14:31
by ROFLmonster
So I booted up my Arch VM, and it says 'avr-gcc: command not found', seems like I don't have the dev tools installed.

I'm not that into Linux, can anyone provide me with some directions on how to install them? I have 'avrdude' installed, the C libraries, avr-gcc, but still command not found.

Edit: Scratch that. avr-gcc is not even installed. When trying to install with pacman it returns error 404 on all the mirrors..

Posted: 11 Jan 2015, 14:39
by scottc
Do a pacman package list update to fix that. I haven't used Arch in years, but I think that it's something like `pacman -u`. Check the manpage. Oh, and I'd strongly recommend against Arch if you're not familiar with Linux...

Posted: 11 Jan 2015, 15:07
by ROFLmonster
I installed it a while ago to just mess with it, to learn and whatnot.

Anyway, updated, installed avr-gcc, and still the same error(s):

Code: Select all

In file included from keymap_poker.c:1:0:
keymap_common.h:46:1: error: parameter name missing
 ) KEYMAP{ \
 ^
keymap_poker.c:4:6: warning: implicit declaration of function 'KEYMAP' [-Wimplicit-function-declaration]
      KEYMAP(KC_ESCAPE,KC_KP_SLASH,KC_KP_ASTERISK,KC_KP_MINUS, \
      ^
keymap_poker.c:9:1: warning: missing braces around initializer [-Wmissing-braces]
 };
 ^
keymap_poker.c:9:1: warning: (near initialization for 'keymaps[0]') [-Wmissing-braces]
keymap_poker.c:9:1: error: initializer element is not constant
keymap_poker.c:9:1: error: (near initialization for 'keymaps[0][0][0]')
../../rules.mk:541: recipe for target 'obj_gh60_lufa/keymap_poker.o' failed
make: *** [obj_gh60_lufa/keymap_poker.o] Error 1
So it's not a problem with Windows after all. I'm definitely missing something here.
Edit: Attached the file in next post.

I've attached the zipped library to a GH thread:
https://geekhack.org/index.php?topic=67579.0
If you want to take a look yourself.

Posted: 11 Jan 2015, 15:17
by scottc
Your first problems are in keymap_common.h. Another trailing comma in the KEYMAP macro definition, then you try to use KEYMAP in its own macro definition. Even after fixing these, I'm getting loads of errors about KC_##K00 etc being undefined, so you've made some more mistakes out there too.

FYI: If you're going to ask for help on Deskthority, it might be an idea to at least attach the file here...

Posted: 11 Jan 2015, 15:24
by ROFLmonster
Sorry, I missed the upload attachment button at first, and used the quick reply since.
Uploaded it for future reference.

If you mean the one on line 45 (right after K42, it's fixed.)
What could be wrong about KC_##K00.., though? It's exactly like in OP. I filled the gaps according to my wiring with KC_NO and everything.

Posted: 11 Jan 2015, 15:31
by scottc
I've just uploaded my changes. It's probably easier than trying to communicate what I did. The changes were made in the definition of the KEYMAP macro in keymap_common.h.

By the way: I have no real experience with Hasu's firmware (I just compiled my own once, using this guide, and it was about a year ago) so I don't know specifics offhand and can't help with those, I just know how to program in C.

Posted: 11 Jan 2015, 15:39
by ROFLmonster
So I thought about what you said that I try to define KEYMAP inside itself, so I deleted lines 46-52 inside 'keymap_common.h', and it compiled. Not only that, but it also works on the teensy.

Problem is I get totally different inputs from what I intended. (i.e. 3 gives me ENTER, 5 gives me 8..)
But it seems like it's still not right if the errors are that big.

And I can't seem to find any differences between yours and my own?..

EDIT:

So someone on GH replied to me. It was the 'KC_' prefix after all. I thought it didn't matter, and this is probably why my first 'solution' didn't work.
It all works now, only the bottom row is flipped which is easily fixable.

Thanks for your help! Damn commas.

Posted: 11 Jan 2015, 15:50
by scottc
Hah, I just noticed that too when comparing it to my own keymap. :D Those gcc errors are terrible but they did actually say what was wrong the whole time.

Posted: 11 Jan 2015, 16:34
by ROFLmonster
Last question.
If I want to use a Pro Micro like in this thread:
http://deskthority.net/workshop-f7/how- ... t8448.html

I don't need to change a thing in the program, right? Can I flash it as is? Assuming I used the right physical pins, the atmega reads them as if it was on a teensy, right?

Because for example pin 16, how do I write it in the code? It's not as straight forwards as PINF/PORTF.

Posted: 11 Jan 2015, 16:53
by scottc
The code stays the same, but you'll have to figure out which ports to use based on the diagrams in the thread that you linked.

Posted: 11 Jan 2015, 17:06
by ROFLmonster
Figured as much. Thanks!

It also makes me wonder, if the chip sees the same pins, why change it in the pcb..?

Posted: 11 Jan 2015, 17:13
by scottc
Well the ordering of the exposed pins is pretty arbitrary. Neither the Arduino nor the Teensy way is the "right" way, they both have their different use cases. For the Pro Micro, bear in mind that the Arduino is aimed at a more beginner level, so ports are probably labelled numerically so that in the code, you can just do things like port(1).

Posted: 17 Jan 2015, 13:16
by copter
Thanks from this great guide. I just started my project and ordered some Teensy controllers for this purposes. Anyway while waiting for them, I'm a bit eager to get started and I have some Arduino controllers lying around that I could use.

I have matrix that requires 21 pins (15 cols, 5 rows), so I cannot use Arduino Micro R3, which otherwise would be a good fit. So I though that I would use Arduino Mega 2560 R3, which has the same ATMEGA8U2 as Leonardo and Micro R3, so it supports USB HID. And it has more than enough pins. Sure it's not that compact, but at least I could test that all works out and then just swap to Teensy when they arrive maybe end of next week.

I put to Makefile:

Code: Select all

TARGET = gh60_lufa
MCU = atmega2560
But, when I try to compile I get this error:

Code: Select all

../../protocol/lufa/LUFA-120730/LUFA/Drivers/USB/Core/USBMode.h:262:7: error: #error USB_DEVICE_ONLY is not available for the currently selected microcontroller model.
      #error USB_DEVICE_ONLY is not available for the currently selected microcontroller model.
If I set

Code: Select all

MCU = atmega32u4
or
MCU = at90usb1287
Then all works out, so it seems that LUFA doesn't support ATmega2560. Does anyone have any workaround etc regarding this, or do I just simply need to wait for my Teensy controllers to arrive?

Posted: 19 Jan 2015, 21:47
by pepers
Can someone please make the hex file for me? I'm trying to mod the firmware for a Planck keyboard, 4 rows and 12 col grid, with a Teensy 2.0, but I keep getting

Code: Select all

      0 [main] sh 1416 sync_with_child: child 3888(0x164) died before initialization with status code 0xC0000142
    628 [main] sh 1416 sync_with_child: *** child state waiting for longjmp
/usr/bin/sh: fork: Resource temporarily unavailable
      0 [main] sh 6488 sync_with_child: child 2144(0x164) died before initialization with status code 0xC0000142
   1095 [main] sh 6488 sync_with_child: *** child state waiting for longjmp
/usr/bin/sh: fork: Resource temporarily unavailable

-------- begin --------
avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 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.

      0 [main] sh 6376 sync_with_child: child 7488(0x15C) died before initialization with status code 0xC0000142
   1187 [main] sh 6376 sync_with_child: *** child state waiting for longjmp
/usr/bin/sh: fork: Resource temporarily unavailable

mkdir -p obj_gh60_lufa
Compiling C: keymap_poker.c
avr-gcc -c -mmcu=atmega32u4 -gdwarf-2 -DF_CPU=16000000UL -DINTERRUPT_CONTROL_ENDPOINT -DBOOTLOADER_SIZE=4096 -DF_USB=16000000UL -DARCH=ARCH_AVR8 -DUSB_DEVICE_ONLY -DUSE_FLASH_DESCRIPTORS -DUSE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)" -DFIXED_CONTROL_ENDPOINT_SIZE=8  -DFIXED_NUM_CONFIGURATIONS=1 -DPROTOCOL_LUFA -DBOOTMAGIC_ENABLE -DMOUSEKEY_ENABLE -DMOUSE_ENABLE -DEXTRAKEY_ENABLE -DCONSOLE_ENABLE -DCOMMAND_ENABLE -DVERSION= -Os -funsigned-char -funsigned-bitfields -ffunction-sections -fno-inline-small-functions -fpack-struct -fshort-enums -fno-strict-aliasing -Wall -Wstrict-prototypes -Wa,-adhlns=obj_gh60_lufa/keymap_poker.lst -I. -I../.. -I../../protocol/lufa -I../../protocol/lufa/LUFA-120730 -I../../common -std=gnu99 -include config.h -MMD -MP -MF .dep/obj_gh60_lufa_keymap_poker.o.d  keymap_poker.c -o obj_gh60_lufa/keymap_poker.o
make: *** [obj_gh60_lufa/keymap_poker.o] Error -1073741502
, and I haven't been able to figure it out. :(

Posted: 19 Jan 2015, 22:02
by Muirium
I'm clumsy with code, too. That's why I use Soarer's:

http://deskthority.net/workshop-f7/soar ... t6767.html

Posted: 19 Jan 2015, 22:45
by aaron
pepers wrote: Can someone please make the hex file for me? I'm trying to mod the firmware for a Planck keyboard, 4 rows and 12 col grid, with a Teensy 2.0, but I keep getting (error)
Sure. I don't double check the pins for the Teensy 2.0 (I use a other controller), but it should be fine. For the planck, I use the pcarrier/tmk_keyboard configuration ( https://github.com/pcarrier/tmk_keyboar ... p_planck.c )

Posted: 20 Jan 2015, 00:17
by Halvar
@pepers: are you using Windows 8.1? I had the same problem until I applied a patch to WinAVR:

http://www.avrfreaks.net/forum/windows- ... tion-error

Posted: 20 Jan 2015, 01:02
by pepers
Halvar wrote: @pepers: are you using Windows 8.1? I had the same problem until I applied a patch to WinAVR:

http://www.avrfreaks.net/forum/windows- ... tion-error
:D That worked, thank you so much!!! I was on windows 8.1

Posted: 21 Jan 2015, 20:47
by ROFLmonster
Hey again,
I wanted to make matters a bit more interesting, but I need your help.
I want to have an RGB LED strip backlight, specifically the WS2812B.
Now I can easily program it using various libraries like this one:https://github.com/cpldcpu/light_ws2812 ... ws2812_AVR
But I can't seem to find a way to incorporate it into the keyboard firmware.

Basically what I want (the most simple solution, IMO) is when there's a certain key stroke (lets say FN0) it calls a function which turns on the strip like void 'backlight_on_fn0();' for example, but I can't seem to do it.
I looked into the lightpad files and it seems to use conditions, but I couldn't recreate it making a 2x2 key matrix with FN0, FN1, FN2 and FN3, it just doesn't do anything.

I've seen some projects use that kind of backlight, but I can't seem to figure out how. If anyone would point me to the right direction I'd really appreciate it. In the meanwhile I'll keep one trying.

Edit: So I've managed to run the function by editing the existing ones in the lightpad firmware, but I still don't get the idea behind it..