geekhack Projects > Making Stuff Together!

TMK USB to USB keyboard converter

<< < (169/184) > >>

hasu:
ionflux,
This is my implementation of steve losh's Shift Parentheses.
I don't know how QMK does this internally, you may want to looking into their codes.

You can disscuss its details there.

https://github.com/tmk/tmk_keyboard/discussions/744

ionflux:
Many Thanks for this hasu !! I'll try it !!
it's weird because i thought i almost got it with the TMK online editor, except i could sort of do it with the brackets, but not the parens :(
anyway, this looks like it's exactly what I need.

Fabrice:
Hi guys,

I compiled the usb_usb using the command make and I was able to upload the usb_usb.hex file into my "pro micro 5v 16mhz". Then I plugged my "pro micro" in my laptop and it recognizes it as a keyboard => OK :)

Then I compiled using the command "make -f Makefile.8mhz" for my "pro micro 3.3v 8mhz" and I get an error :


--- Code: ----------- begin --------
avr-gcc (GCC) 5.4.0
Copyright (C) 2015 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.

Linking: usb_usb.elf
avr-gcc -mmcu=atmega32u4 -gdwarf-2 -DF_CPU=8000000UL -DBOOTLOADER_SIZE=4096 -DTMK_USB_HOST_SHIELD_VERSION=3b1e03 -DARDUINO=1813 -DTMK_LUFA_VERSION=d6a7df -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 -DUNIMAP_ENABLE -DACTIONMAP_ENABLE -DMOUSEKEY_ENABLE -DMOUSE_ENABLE -DEXTRAKEY_ENABLE -DCONSOLE_ENABLE -DKEYMAP_SECTION_ENABLE -DTMK_VERSION=4923f0 -Os -funsigned-char -funsigned-bitfields -ffunction-sections -fdata-sections -fno-inline-small-functions -fpack-struct -fshort-enums -fno-strict-aliasing -Wall -Wstrict-prototypes -Wa,-adhlns=usb_usb.elf -I../../tmk_core/common -I. -I../../tmk_core -I../../tmk_core/protocol/usb_hid -I../../tmk_core/protocol/usb_hid/USB_Host_Shield_2.0-tmk -I../../tmk_core/protocol/usb_hid/arduino-1.8.13/cores/arduino -I../../tmk_core/protocol/usb_hid/arduino-1.8.13/variants/leonardo -I../../tmk_core/protocol/lufa -I../../tmk_core/protocol/lufa/lufa-abcminiuser -I../../tmk_core/common -std=gnu99 -include config.h -MMD -MP -MF .dep/usb_usb.elf.d   obj_usb_usb/unimap.o obj_usb_usb/usb_usb.cpp.o obj_usb_usb/protocol/usb_hid/parser.cpp.o obj_usb_usb/protocol/usb_hid/override_Serial.cpp.o obj_usb_usb/protocol/usb_hid/override_wiring.o obj_usb_usb/common/avr/timer.o obj_usb_usb/protocol/usb_hid/USB_Host_Shield_2.0-tmk/Usb.cpp.o obj_usb_usb/protocol/usb_hid/USB_Host_Shield_2.0-tmk/usbhid.cpp.o obj_usb_usb/protocol/usb_hid/USB_Host_Shield_2.0-tmk/usbhub.cpp.o obj_usb_usb/protocol/usb_hid/USB_Host_Shield_2.0-tmk/parsetools.cpp.o obj_usb_usb/protocol/usb_hid/USB_Host_Shield_2.0-tmk/message.cpp.o obj_usb_usb/protocol/usb_hid/arduino-1.8.13/cores/arduino/abi.cpp.o obj_usb_usb/protocol/usb_hid/arduino-1.8.13/cores/arduino/Print.cpp.o obj_usb_usb/protocol/usb_hid/arduino-1.8.13/cores/arduino/Stream.cpp.o obj_usb_usb/protocol/lufa/lufa.o obj_usb_usb/protocol/lufa/descriptor.o obj_usb_usb/protocol/lufa/lufa-abcminiuser/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o obj_usb_usb/protocol/lufa/lufa-abcminiuser/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o obj_usb_usb/protocol/lufa/lufa-abcminiuser/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o obj_usb_usb/protocol/lufa/lufa-abcminiuser/LUFA/Drivers/USB/Core/DeviceStandardReq.o obj_usb_usb/protocol/lufa/lufa-abcminiuser/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o obj_usb_usb/protocol/lufa/lufa-abcminiuser/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o obj_usb_usb/protocol/lufa/lufa-abcminiuser/LUFA/Drivers/USB/Core/ConfigDescriptors.o obj_usb_usb/protocol/lufa/lufa-abcminiuser/LUFA/Drivers/USB/Core/Events.o obj_usb_usb/protocol/lufa/lufa-abcminiuser/LUFA/Drivers/USB/Core/USBTask.o obj_usb_usb/protocol/lufa/lufa-abcminiuser/LUFA/Drivers/USB/Class/Common/HIDParser.o obj_usb_usb/common/host.o obj_usb_usb/common/keyboard.o obj_usb_usb/common/matrix.o obj_usb_usb/common/action.o obj_usb_usb/common/action_tapping.o obj_usb_usb/common/action_macro.o obj_usb_usb/common/action_layer.o obj_usb_usb/common/action_util.o obj_usb_usb/common/print.o obj_usb_usb/common/debug.o obj_usb_usb/common/util.o obj_usb_usb/common/hook.o obj_usb_usb/common/avr/suspend.o obj_usb_usb/common/avr/xprintf.o obj_usb_usb/common/avr/bootloader.o obj_usb_usb/common/unimap.o obj_usb_usb/common/mousekey.o --output usb_usb.elf -Wl,-Map=usb_usb.map,--cref -Wl,--gc-sections     -lm -Wl,-L../../tmk_core,-Tldscript_keymap_avr5.x
/usr/lib/gcc/avr/5.4.0/../../../avr/bin/ld: section .keymap loaded at [0000000000006800,00000000000069ff] overlaps section .data loaded at [00000000000067ac,0000000000006847]
collect2: error: ld returned 1 exit status
make: *** [../../tmk_core/rules.mk:552: usb_usb.elf] Error 1


--- End code ---

The content of the file Makefile.8mhz :


--- Code: ---F_CPU = 8000000
F_USB = 16000000
UNIMAP_ENABLE = yes
KEYMAP_SECTION_ENABLE = yes
include Makefile

--- End code ---

So, commenting the lines "KEYMAP_SECTION_ENABLE" and "UNIMAP_ENABLE",  I am able to compile. So I uploaded the hex file into my "pro micro 3.3v 8mhz". But when I plug it into my laptop, it returns "Unknown device ..." =>  NOK  :(
I tried on 2 different "pro micro 3.3v 8mhz", so I assume that it is not a hardware issue.

Any idea ?

Thanks for your help :)

Fabrice

hasu:
Your firmware build runs out of flash space.


--- Code: ---/usr/lib/gcc/avr/5.4.0/../../../avr/bin/ld: section .keymap loaded at [0000000000006800,00000000000069ff] overlaps section .data loaded at [00000000000067ac,0000000000006847]

--- End code ---


You will have to make firmware smaller in some way

1) Give up some feature and disable build options in Makefile.


--- Code: ---# Build Options
#   comment out to disable the options.
#
MOUSEKEY_ENABLE ?= yes  # Mouse keys
EXTRAKEY_ENABLE ?= yes  # Media control and System control
CONSOLE_ENABLE ?= yes   # Console for debug

--- End code ---


2) Or try other version of GCC. I confirmed that default 'Makefile.8mhz' firmware can be compiled with  7.3.0.


--- Code: ---$ avr-gcc --version
avr-gcc (AVR_8_bit_GNU_Toolchain_3.7.0_1796) 7.3.0
[code]

--- End code ---

Fabrice:
Thanks Hasu, it works !

I updated my avr-gcc from 5.4.0 to 12.1.0 and set MOUSEKEY_ENABLE to no.
So it compiled.
But once uploaded into my "pro micro 3.3v 8mhz", it is seen as "unknown device" when my "pro micro 5.5v 16 mhz" works.
This is another issue I have to investiguate.

Thanks again for your help !

Fabrice

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version