Author Topic: Easy AVR USB Keyboard Firmware and Keymapper  (Read 575295 times)

0 Members and 2 Guests are viewing this topic.

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2350 on: Thu, 05 April 2018, 20:40:12 »
I don't envy you having to code consistency and limit checks within the config file as well as crosschecking to the firmware it's based on - it's probably more complicated than the actual load function!  Necessary when a simple typo can break everything though, it can happen to anyone even if they have read and understood everything.

I added the safety checks today... and found several non-compliant board configs in the default install *facepalm*

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2351 on: Sun, 08 April 2018, 14:29:20 »
3.0.0 beta 3 release: https://github.com/dhowland/EasyAVR/releases/tag/v3.00.00-beta.3

It's working pretty well now and I'm using it for my own keyboards.

There seems to be a problem with wx crashing python on Windows 10.  Haven't found a way to reproduce it yet, it's random.

Offline TalkingTree

  • Posts: 2343
  • Location: Italy (142)
    • My projects
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2352 on: Sun, 08 April 2018, 14:49:05 »
Just flashed a v3beta3 on my keyboard as well and it's working as intended.

On a related note: What template should I import for a 11*11 matrix?

Keep up the good work.
My opensource projects: GH80-3000, Skipad, TOAD (KotM Sept '17), TOAD v2 (KotM April '18), XMMX.

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2353 on: Sun, 08 April 2018, 14:56:07 »
Just flashed a v3beta3 on my keyboard as well and it's working as intended.

On a related note: What template should I import for a 11*11 matrix?

Keep up the good work.

Template sizes are listed in this file: https://github.com/dhowland/EasyAVR/blob/master/keymapper/easykeymap/templates/__init__.py

There is no build that can handle an 11*11 matrix.

Offline TalkingTree

  • Posts: 2343
  • Location: Italy (142)
    • My projects
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2354 on: Sun, 08 April 2018, 15:00:10 »
There is no build that can handle an 11*11 matrix.
Any chance to support it in the future?
My opensource projects: GH80-3000, Skipad, TOAD (KotM Sept '17), TOAD v2 (KotM April '18), XMMX.

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2355 on: Sun, 08 April 2018, 15:04:30 »
There is no build that can handle an 11*11 matrix.
Any chance to support it in the future?

It is in the capabilities of the firmware, but it is a very unusual size.  Costar is pretty strange at 8x18.  Is there actually a keyboard that has 11 rows to scan?

Offline TalkingTree

  • Posts: 2343
  • Location: Italy (142)
    • My projects
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2356 on: Sun, 08 April 2018, 15:08:51 »
Is there actually a keyboard that has 11 rows to scan?
Yes.
My opensource projects: GH80-3000, Skipad, TOAD (KotM Sept '17), TOAD v2 (KotM April '18), XMMX.

Offline suicidal_orange

  • * Global Moderator
  • Posts: 3282
  • Location: England
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2357 on: Sun, 08 April 2018, 19:17:49 »
Can't believe the weekend is over and I still haven't managed to have a play with this :'(
                               
Ducky Zero, MX Reds    JD40, Jailhouse Blues           GH60
Soarer controller

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2358 on: Sun, 08 April 2018, 20:01:25 »
Is there actually a keyboard that has 11 rows to scan?
Yes.

I created a "bigsquare" branch and added a new target size called "SQUARE" which is 12x12.  Added a new build target for ATmega32U4_16MHz_SQUARE.

I made some test builds:
Windows exe:  https://www.dropbox.com/s/2rd0x3swziu75xn/easykeymap_bigsquare_windows_3_00_00.zip?dl=0
Python source package:  https://www.dropbox.com/s/6s78uqmg855lcur/easykeymap-bigsquare-3.0.0.tar.gz?dl=0

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2359 on: Sun, 08 April 2018, 20:08:53 »
Can't believe the weekend is over and I still haven't managed to have a play with this :'(

You have plenty of time.  The main purpose of the rewrite was to replace the awful code that I had out there.  A Github account is like a programmer's public calling card.  I want my name associated with good code.  That goal has been achieved, so I can rest now.

Offline TalkingTree

  • Posts: 2343
  • Location: Italy (142)
    • My projects
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2360 on: Mon, 09 April 2018, 03:11:56 »
Added a new build target for ATmega32U4_16MHz_SQUARE.
Much obliged my good sir. I'll be testing as soon as possible.
My opensource projects: GH80-3000, Skipad, TOAD (KotM Sept '17), TOAD v2 (KotM April '18), XMMX.

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2361 on: Mon, 09 April 2018, 09:34:34 »
Added a new build target for ATmega32U4_16MHz_SQUARE.
Much obliged my good sir. I'll be testing as soon as possible.

cool.  If it works send the config, I'll add it to the source.

Offline whiteTail

  • Posts: 4
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2362 on: Mon, 09 April 2018, 14:42:57 »
3.0.0 beta 3 release: https://github.com/dhowland/EasyAVR/releases/tag/v3.00.00-beta.3

Very cool! Seems to be working on my Mac (OS 10.13.4). Thanks for the updates.

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2363 on: Mon, 09 April 2018, 15:25:49 »
3.0.0 beta 3 release: https://github.com/dhowland/EasyAVR/releases/tag/v3.00.00-beta.3

Very cool! Seems to be working on my Mac (OS 10.13.4). Thanks for the updates.

Glad it works for you.  I don't own a Mac and therefore have no way to test it, or even know how to install it.

Offline TalkingTree

  • Posts: 2343
  • Location: Italy (142)
    • My projects
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2364 on: Mon, 09 April 2018, 15:32:05 »
If it works send the config, I'll add it to the source.
I'm honored.

I've tested the square template and it works like a charm.

So here's the code for the GH80-3000

More
gh80-3000.py
Code: [Select]
"""
Keyboard definition for the GH80-3000 custom keyboard.
Auto-generated from C:/Users/andre/Desktop/keyboard-layout.json
"""

#
# READ THIS
#
# This file contains a description of the various parameters that
# must be defined in order to completely describe the new keyboard.
# This file must be correct for the firmware to work, however if
# if is incorrect reprogramming the board won't cause any damage.
#
# This tool that created this file did not have all the information
# needed to make a perfect config.  Check over all the data for
# correctness.  Definitely make sure to fix the matix rows/columns in
# keyboard_definition, which are almost certainly wrong.
#
# This file uses two helper functions to make the configuration
# easier.  For more complicated hardware, it may be necessary to
# set the parameters by hand.  Look at other configs, such as
# boards/sigma.py, for examples if you want to try it.
#

# The first decision you have to make is to choose a hardware
# build.  A handwire board using a Teensy2.0 will probably want
# ATmega32U4_16MHz_TKL or ATmega32U4_16MHz_SIXTY.  The sizes are
# defined in the templates/__init__.py file of the keymapper.
# Leave the rest of the imports like they are here.

import easykeymap.templates.ATmega32U4_16MHz_SQUARE as firmware
from easykeymap.ioports import *
from easykeymap.helper import make_matrix_config, make_led_config


# The name of the board in the "New" dialog

description = "GH80-3000"

# Unique string to identify THIS exact hardware layout.  If you change
# this file after saving layouts in the GUI, bump the unique_id to
# prevent corrupted builds.

unique_id = "GH80_3000_001"

# The name of the .cfg file the system will try to find for altered
# layout options.  See the configs subdir of the keymapper.

cfg_name = "gh80_3000"


# Hand-wired boards usually use Teensy controllers.  Set this to
# True to make sure that the bootloader works.

teensy = False

# If your board has an exposed switch for going into the bootloader,
# you can set this to True and the system won't prompt you to add a
# BOOT key to your layout.

hw_boot_key = False


# These two parameters define the size of the keyboard in the display.
# Must be whole numbers in units of quarter key lengths.  A TKL
# usually is 6 rows high with a 1/2 key length gutter under the Fn row.
# Therefore int(6.5*4).  Apply the same logic the width.  Remember
# we are talking visual width, not number of columns.

display_height = 26
display_width = 90


# The number of rows and columns in the matrix.  In a hand-wired board
# each of these will correspond to a single pin.

num_rows = 11
num_cols = 11


# Keyboards work by scanning a matrix to check each key.  The scan
# works by setting an active row/column (strobing) and then reading
# the status of every switch that crosses it (sensing).
# strobe_cols tells the firmware which direction you have your diodes
# installed.  If diodes go from column to row, then strobe_cols must
# be False.  If diodes go from row to column, then strobe_cols must be
# True.

strobe_cols = False

# strobe_low tells the firmware if a row/column should be activated
# by pulling the pin high or low.  Hand-wired boards will almost always
# use strobe_low = True

strobe_low = True


# The matrix_hardware, matrix_strobe, matrix_sense parameters tell
# the firmware how to initialize the ports, what pins must be set
# for each row/column, and what order to strobe/sense.  These are
# complicated and are explained fully elsewhere.  It is easiest to
# configure the matrix by using the make_matrix_config function as
# shown below.  Just customize 'rows' and 'cols' for your project.

matrix_hardware, matrix_strobe, matrix_sense = make_matrix_config(
    strobe_cols=strobe_cols,
    strobe_low=strobe_low,
    rows=[F4, F1, F0, F5, F6, F7, D4, D5, D3, D2, D0],
    cols=[C7, C6, B4, D7, B3, B2, B0, E6, B1, D1, D6],
    device=firmware.device
)


# The num_leds, num_ind, led_hardware, backlighting, num_bl_enab,
# and bl_modes parameters tell the firmware how to operate the LEDs
# for indicators (for example, Caps Lock) and for backlighting.  In
# order to fine-tune the configs, these may have to be defined manually
# but it is easiest to use make_led_config.
# LED_DRIVER_PULLUP is used when the pin is connected to the anode of
# the LED and the cathode is connected to ground.
# LED_DRIVER_PULLDOWN is used when the pin is connected to the cathode
# of the LED and the anode is connected to the power supply.
# Hand-wired boards will usually want to use LED_DRIVER_PULLDOWN.
# If there are no backlights, just leave the list empty (ie. just []).

num_leds, num_ind, led_hardware, backlighting, num_bl_enab, bl_modes = make_led_config(
    led_pins = [B5, B6, B7],
    led_dir=LED_DRIVER_PULLDOWN,
    backlight_pins = [],
    backlight_dir=LED_DRIVER_PULLDOWN
)


# Define the default assignments of the indicator LEDs.  The length
# of this list must equal the length of led_pins.  For each LED, the
# first string is the description of the key shown in the GUI.  The
# second string is the default function assigned to that LED.  LED
# functions must be strings as defined in led_assignments of gui.py.
# Common choices are 'Num Lock', 'Caps Lock', 'Scroll Lock', 'Win Lock',
# 'Fn Active', 'Recording', 'Backlight', and 'Unassigned'.

led_definition = (('LED 1', 'Num Lock'), ('LED 2', 'Caps Lock'), ('LED 3', 'Scroll Lock'))


# Define your layout.  This is a list of rows.  Each row is a list
# of keys.  Each key is a tuple of three items.  First item is a tuple
# defining the width,height of the key.  If it is just a number, it
# will be a space instead of a key.  All units are in quarter key lengths,
# so a standard key would be (4,4).  Second item is a tuple defining the
# row,column in the matrix for that key.  Third item is the default scancode
# for that key, from scancodes.py.  If a row is a number instead of a list,
# it will just make a vertical spacer.
# ((key width, key height), (matrix row, matrix column), 'default mapping')

keyboard_definition = [[((4, 4), (0, 0), 'HID_KEYBOARD_SC_ESCAPE'),
  (4, None, '0'),
  ((4, 4), (0, 1), 'HID_KEYBOARD_SC_F1'),
  ((4, 4), (0, 2), 'HID_KEYBOARD_SC_F2'),
  ((4, 4), (0, 3), 'HID_KEYBOARD_SC_F3'),
  ((4, 4), (3, 0), 'HID_KEYBOARD_SC_F4'),
  (2, None, '0'),
  ((4, 4), (3, 1), 'HID_KEYBOARD_SC_F5'),
  ((4, 4), (3, 2), 'HID_KEYBOARD_SC_F6'),
  ((4, 4), (3, 3), 'HID_KEYBOARD_SC_F7'),
  ((4, 4), (3, 6), 'HID_KEYBOARD_SC_F8'),
  (2, None, '0'),
  ((4, 4), (3, 7), 'HID_KEYBOARD_SC_F9'),
  ((4, 4), (3, 8), 'HID_KEYBOARD_SC_F10'),
  ((4, 4), (3, 9), 'HID_KEYBOARD_SC_F11'),
  ((4, 4), (3, 10), 'HID_KEYBOARD_SC_F12'),
  (1, None, '0'),
  ((4, 4), (0, 4), 'HID_KEYBOARD_SC_PRINT_SCREEN'),
  ((4, 4), (0, 5), 'HID_KEYBOARD_SC_SCROLL_LOCK'),
  ((4, 4), (0, 6), 'HID_KEYBOARD_SC_PAUSE')],
 2,
 [((4, 4), (1, 0), 'HID_KEYBOARD_SC_GRAVE_ACCENT_AND_TILDE'),
  ((4, 4), (1, 1), 'HID_KEYBOARD_SC_1_AND_EXCLAMATION'),
  ((4, 4), (1, 2), 'HID_KEYBOARD_SC_2_AND_AT'),
  ((4, 4), (1, 3), 'HID_KEYBOARD_SC_3_AND_HASHMARK'),
  ((4, 4), (4, 0), 'HID_KEYBOARD_SC_4_AND_DOLLAR'),
  ((4, 4), (4, 1), 'HID_KEYBOARD_SC_5_AND_PERCENTAGE'),
  ((4, 4), (4, 2), 'HID_KEYBOARD_SC_6_AND_CARET'),
  ((4, 4), (4, 3), 'HID_KEYBOARD_SC_7_AND_AND_AMPERSAND'),
  ((4, 4), (4, 4), 'HID_KEYBOARD_SC_8_AND_ASTERISK'),
  ((4, 4), (4, 5), 'HID_KEYBOARD_SC_9_AND_OPENING_PARENTHESIS'),
  ((4, 4), (4, 6), 'HID_KEYBOARD_SC_0_AND_CLOSING_PARENTHESIS'),
  ((4, 4), (4, 7), 'HID_KEYBOARD_SC_MINUS_AND_UNDERSCORE'),
  ((4, 4), (4, 8), 'HID_KEYBOARD_SC_EQUAL_AND_PLUS'),
  ((4, 4), (4, 9), 'HID_KEYBOARD_SC_BACKSPACE'),
  ((4, 4), (4, 10), 'HID_KEYBOARD_SC_BACKSPACE'),
  (1, None, '0'),
  ((4, 4), (1, 4), 'HID_KEYBOARD_SC_INSERT'),
  ((4, 4), (1, 5), 'HID_KEYBOARD_SC_HOME'),
  ((4, 4), (1, 6), 'HID_KEYBOARD_SC_PAGE_UP'),
  (1, None, '0'),
  ((4, 4), (1, 7), 'HID_KEYBOARD_SC_NUM_LOCK'),
  ((4, 4), (1, 8), 'HID_KEYBOARD_SC_KEYPAD_SLASH'),
  ((4, 4), (1, 9), 'HID_KEYBOARD_SC_KEYPAD_ASTERISK'),
  ((4, 4), (1, 10), 'HID_KEYBOARD_SC_KEYPAD_MINUS')],
 [((6, 4), (2, 0), 'HID_KEYBOARD_SC_TAB'),
  ((4, 4), (2, 1), 'HID_KEYBOARD_SC_Q'),
  ((4, 4), (2, 2), 'HID_KEYBOARD_SC_W'),
  ((4, 4), (2, 3), 'HID_KEYBOARD_SC_E'),
  ((4, 4), (5, 0), 'HID_KEYBOARD_SC_R'),
  ((4, 4), (5, 1), 'HID_KEYBOARD_SC_T'),
  ((4, 4), (5, 2), 'HID_KEYBOARD_SC_Y'),
  ((4, 4), (5, 3), 'HID_KEYBOARD_SC_U'),
  ((4, 4), (5, 5), 'HID_KEYBOARD_SC_I'),
  ((4, 4), (5, 6), 'HID_KEYBOARD_SC_O'),
  ((4, 4), (5, 7), 'HID_KEYBOARD_SC_P'),
  ((4, 4), (5, 8), 'HID_KEYBOARD_SC_OPENING_BRACKET_AND_OPENING_BRACE'),
  ((4, 4), (5, 9), 'HID_KEYBOARD_SC_CLOSING_BRACKET_AND_CLOSING_BRACE'),
  ((6, 4), (5, 10), 'HID_KEYBOARD_SC_BACKSLASH_AND_PIPE'),
  (1, None, '0'),
  ((4, 4), (2, 4), 'HID_KEYBOARD_SC_DELETE'),
  ((4, 4), (2, 5), 'HID_KEYBOARD_SC_END'),
  ((4, 4), (2, 6), 'HID_KEYBOARD_SC_PAGE_DOWN'),
  (1, None, '0'),
  ((4, 4), (2, 7), 'HID_KEYBOARD_SC_KEYPAD_7_AND_HOME'),
  ((4, 4), (2, 8), 'HID_KEYBOARD_SC_KEYPAD_8_AND_UP_ARROW'),
  ((4, 4), (2, 9), 'HID_KEYBOARD_SC_KEYPAD_9_AND_PAGE_UP'),
  ((4, 4), (2, 10), 'HID_KEYBOARD_SC_KEYPAD_PLUS')],
 [((7, 4), (8, 0), 'HID_KEYBOARD_SC_CAPS_LOCK'),
  ((4, 4), (8, 1), 'HID_KEYBOARD_SC_A'),
  ((4, 4), (8, 2), 'HID_KEYBOARD_SC_S'),
  ((4, 4), (8, 3), 'HID_KEYBOARD_SC_D'),
  ((4, 4), (6, 0), 'HID_KEYBOARD_SC_F'),
  ((4, 4), (6, 1), 'HID_KEYBOARD_SC_G'),
  ((4, 4), (6, 2), 'HID_KEYBOARD_SC_H'),
  ((4, 4), (6, 3), 'HID_KEYBOARD_SC_J'),
  ((4, 4), (6, 6), 'HID_KEYBOARD_SC_K'),
  ((4, 4), (6, 7), 'HID_KEYBOARD_SC_L'),
  ((4, 4), (6, 8), 'HID_KEYBOARD_SC_SEMICOLON_AND_COLON'),
  ((4, 4), (6, 9), 'HID_KEYBOARD_SC_APOSTROPHE_AND_QUOTE'),
  ((9, 4), (6, 10), 'HID_KEYBOARD_SC_ENTER'),
  (14, None, '0'),
  ((4, 4), (8, 7), 'HID_KEYBOARD_SC_KEYPAD_4_AND_LEFT_ARROW'),
  ((4, 4), (8, 8), 'HID_KEYBOARD_SC_KEYPAD_5'),
  ((4, 4), (8, 9), 'HID_KEYBOARD_SC_KEYPAD_6_AND_RIGHT_ARROW'),
  ((4, 4), (8, 10), 'HID_KEYBOARD_SC_KEYPAD_PLUS')],
 [((5, 4), (9, 0), 'HID_KEYBOARD_SC_LEFT_SHIFT'),
  ((4, 4), (9, 1), 'HID_KEYBOARD_SC_NON_US_BACKSLASH_AND_PIPE'),
  ((4, 4), (9, 2), 'HID_KEYBOARD_SC_Z'),
  ((4, 4), (9, 3), 'HID_KEYBOARD_SC_X'),
  ((4, 4), (7, 0), 'HID_KEYBOARD_SC_C'),
  ((4, 4), (7, 1), 'HID_KEYBOARD_SC_V'),
  ((4, 4), (7, 2), 'HID_KEYBOARD_SC_B'),
  ((4, 4), (7, 3), 'HID_KEYBOARD_SC_N'),
  ((4, 4), (7, 5), 'HID_KEYBOARD_SC_M'),
  ((4, 4), (7, 6), 'HID_KEYBOARD_SC_COMMA_AND_LESS_THAN_SIGN'),
  ((4, 4), (7, 7), 'HID_KEYBOARD_SC_DOT_AND_GREATER_THAN_SIGN'),
  ((4, 4), (7, 8), 'HID_KEYBOARD_SC_SLASH_AND_QUESTION_MARK'),
  ((7, 4), (7, 9), 'HID_KEYBOARD_SC_RIGHT_SHIFT'),
  ((4, 4), (7, 10), 'SCANCODE_FN0'),
  (5, None, '0'),
  ((4, 4), (9, 6), 'HID_KEYBOARD_SC_UP_ARROW'),
  (5, None, '0'),
  ((4, 4), (9, 7), 'HID_KEYBOARD_SC_KEYPAD_1_AND_END'),
  ((4, 4), (9, 8), 'HID_KEYBOARD_SC_KEYPAD_2_AND_DOWN_ARROW'),
  ((4, 4), (9, 9), 'HID_KEYBOARD_SC_KEYPAD_3_AND_PAGE_DOWN'),
  ((4, 4), (9, 10), 'HID_KEYBOARD_SC_KEYPAD_ENTER')],
 [((6, 4), (10, 0), 'HID_KEYBOARD_SC_LEFT_CONTROL'),
  ((4, 4), (10, 1), 'HID_KEYBOARD_SC_LEFT_GUI'),
  ((6, 4), (10, 2), 'HID_KEYBOARD_SC_LEFT_ALT'),
  ((4, 4), (10, 3), 'HID_KEYBOARD_SC_SPACE'),
  ((8, 4), (8, 4), 'HID_KEYBOARD_SC_SPACE'),
  ((4, 4), (8, 5), 'HID_KEYBOARD_SC_SPACE'),
  ((8, 4), (8, 6), 'HID_KEYBOARD_SC_SPACE'),
  ((4, 4), (6, 4), 'HID_KEYBOARD_SC_SPACE'),
  ((6, 4), (6, 5), 'HID_KEYBOARD_SC_RIGHT_ALT'),
  ((4, 4), (9, 4), 'HID_KEYBOARD_SC_APPLICATION'),
  ((6, 4), (9, 5), 'HID_KEYBOARD_SC_RIGHT_CONTROL'),
  (1, None, '0'),
  ((4, 4), (10, 4), 'HID_KEYBOARD_SC_LEFT_ARROW'),
  ((4, 4), (10, 5), 'HID_KEYBOARD_SC_DOWN_ARROW'),
  ((4, 4), (10, 6), 'HID_KEYBOARD_SC_RIGHT_ARROW'),
  (1, None, '0'),
  ((4, 4), (10, 7), 'HID_KEYBOARD_SC_KEYPAD_0_AND_INSERT'),
  ((4, 4), (10, 8), 'HID_KEYBOARD_SC_KEYPAD_0_AND_INSERT'),
  ((4, 4), (10, 9), 'HID_KEYBOARD_SC_KEYPAD_DOT_AND_DELETE'),
  ((4, 4), (10, 10), 'HID_KEYBOARD_SC_KEYPAD_ENTER')]]


# Just leave this here as-is.
alt_layouts = {}

# Just leave this here as-is.
KMAC_key = None

gh80-3000.cfg
Code: [Select]
[ANSI Winkey]
# 2u Backspace
MAKE_SPACER(2, 13, 0)
MAKE_KEY(2, 14, 8, 4)
# 2.25u Left Shift
MAKE_KEY(5, 0, 9, 4)
MAKE_SPACER(5, 1, 0)
# 2.75u Right Shift
MAKE_KEY(5, 12, 11, 4)
MAKE_SPACER(5, 13, 0)
#bottom row
MAKE_KEY(6, 0, 5, 4)
MAKE_KEY(6, 1, 5, 4)
MAKE_KEY(6, 2, 5, 4)
MAKE_SPACER(6, 3, 0)
MAKE_SPACER(6, 4, 0)
MAKE_KEY(6, 5, 25, 4)
MAKE_SPACER(6, 6, 0)
MAKE_KEY(6, 7, 5, 4)
MAKE_KEY(6, 8, 5, 4)
MAKE_KEY(6, 9, 5, 4)
MAKE_KEY(6, 10, 5, 4)
#numpad
MAKE_KEY(4, 17, 4, 8)
MAKE_SPACER(3, 22, 0)
MAKE_KEY(6, 19, 4, 8)
MAKE_SPACER(5, 20, 0)
MAKE_KEY(6, 16, 8, 4)
MAKE_SPACER(6, 17, 0)

[ANSI Winkeyless]
# 2u Backspace
MAKE_SPACER(2, 13, 0)
MAKE_KEY(2, 14, 8, 4)
# 2.25u Left Shift
MAKE_KEY(5, 0, 9, 4)
MAKE_SPACER(5, 1, 0)
# 2.75u Right Shift
MAKE_KEY(5, 12, 11, 4)
MAKE_SPACER(5, 13, 0)
#bottom row
MAKE_KEY(6, 0, 6, 4)
MAKE_SPACER(6, 1, 4)
MAKE_KEY(6, 2, 6, 4)
MAKE_SPACER(6, 3, 0)
MAKE_SPACER(6, 4, 0)
MAKE_KEY(6, 5, 28, 4)
MAKE_SPACER(6, 6, 0)
MAKE_SPACER(6, 7, 0)
MAKE_KEY(6, 8, 6, 4)
MAKE_SPACER(6, 9, 4)
MAKE_KEY(6, 10, 6, 4)
#numpad
MAKE_KEY(4, 17, 4, 8)
MAKE_SPACER(3, 22, 0)
MAKE_KEY(6, 19, 4, 8)
MAKE_SPACER(5, 20, 0)
MAKE_KEY(6, 16, 8, 4)
MAKE_SPACER(6, 17, 0)

[ISO Winkey]
# 2u Backspace
MAKE_SPACER(2, 13, 0)
MAKE_KEY(2, 14, 8, 4)
# 2.75u Right Shift
MAKE_KEY(5, 12, 11, 4)
MAKE_SPACER(5, 13, 0)
#bottom row
MAKE_KEY(6, 0, 5, 4)
MAKE_KEY(6, 1, 5, 4)
MAKE_KEY(6, 2, 5, 4)
MAKE_SPACER(6, 3, 0)
MAKE_SPACER(6, 4, 0)
MAKE_KEY(6, 5, 25, 4)
MAKE_SPACER(6, 6, 0)
MAKE_KEY(6, 7, 5, 4)
MAKE_KEY(6, 8, 5, 4)
MAKE_KEY(6, 9, 5, 4)
MAKE_KEY(6, 10, 5, 4)
#numpad
MAKE_KEY(4, 17, 4, 8)
MAKE_SPACER(3, 22, 0)
MAKE_KEY(6, 19, 4, 8)
MAKE_SPACER(5, 20, 0)
MAKE_KEY(6, 16, 8, 4)
MAKE_SPACER(6, 17, 0)

[ISO Winkeyless]
# 2u Backspace
MAKE_SPACER(2, 13, 0)
MAKE_KEY(2, 14, 8, 4)
# 2.75u Right Shift
MAKE_KEY(5, 12, 11, 4)
MAKE_SPACER(5, 13, 0)
#bottom row
MAKE_KEY(6, 0, 6, 4)
MAKE_SPACER(6, 1, 4)
MAKE_KEY(6, 2, 6, 4)
MAKE_SPACER(6, 3, 0)
MAKE_SPACER(6, 4, 0)
MAKE_KEY(6, 5, 28, 4)
MAKE_SPACER(6, 6, 0)
MAKE_SPACER(6, 7, 0)
MAKE_KEY(6, 8, 6, 4)
MAKE_SPACER(6, 9, 4)
MAKE_KEY(6, 10, 6, 4)
#numpad
MAKE_KEY(4, 17, 4, 8)
MAKE_SPACER(3, 22, 0)
MAKE_KEY(6, 19, 4, 8)
MAKE_SPACER(5, 20, 0)
MAKE_KEY(6, 16, 8, 4)
MAKE_SPACER(6, 17, 0)

I haven't found a reliable way to make an ISO enter with the 1u key on its left in the config file. What am I missing?


Also a couple of suggestions, if you don't mind:
1) Gray out the edit and build menus, and disable their shortcuts, until a keymap has been created. It would be a much cleaner approach than a popup alert, in my opinion.
2) Add a tooltip when hovering a scancode to show the full constant name. It's handy when making custom boards.
3) Fix the Smart(ass)screen on Windows 10 (see attached image).

Thanks for making this tool, it's getting everyday better.
My opensource projects: GH80-3000, Skipad, TOAD (KotM Sept '17), TOAD v2 (KotM April '18), XMMX.

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2365 on: Mon, 09 April 2018, 15:53:50 »
I'm sure the ISO thing can be done correctly.  I'll look into it tonight.  If I can get that damn Phantom to look right, I aught to be able to get this right.

1) Gray out the edit and build menus, and disable their shortcuts, until a keymap has been created. It would be a much cleaner approach than a popup alert, in my opinion.

That's a good idea.  Not sure why that didn't occur to me.  Probably because I was porting from the old app. 

2) Add a tooltip when hovering a scancode to show the full constant name. It's handy when making custom boards.

In the picker or the layout editor?  That's also good idea.

3) Fix the Smart(ass)screen on Windows 10 (see attached image).

I don't know how to do that.  That doesn't show up for me.  Perhaps it's because it is a downloaded executable?  I'll have to google around for an answer. 

Offline TalkingTree

  • Posts: 2343
  • Location: Italy (142)
    • My projects
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2366 on: Mon, 09 April 2018, 16:00:11 »
I'm sure the ISO thing can be done correctly.  I'll look into it tonight.  If I can get that damn Phantom to look right, I aught to be able to get this right.
The Phantom has short ANSI Enter support, which makes easy to draw an ISO enter. I've the same situation on the XMMX and the Toad.

2) Add a tooltip when hovering a scancode to show the full constant name. It's handy when making custom boards.
In the picker or the layout editor?
Why not both?
It's mostly useful in the new popup screen in my opinion.
My opensource projects: GH80-3000, Skipad, TOAD (KotM Sept '17), TOAD v2 (KotM April '18), XMMX.

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2367 on: Mon, 09 April 2018, 16:18:29 »
I'm sure the ISO thing can be done correctly.  I'll look into it tonight.  If I can get that damn Phantom to look right, I aught to be able to get this right.
The Phantom has short ANSI Enter support, which makes easy to draw an ISO enter. I've the same situation on the XMMX and the Toad.

Okay so in this case, the problem is that the main layout, aka <All Keys>, doesn't actually have all the keys.  It's easily fixed, though.  I'm using the graphic in the original link as a guide.

2) Add a tooltip when hovering a scancode to show the full constant name. It's handy when making custom boards.
In the picker or the layout editor?
Why not both?
It's mostly useful in the new popup screen in my opinion.

My original plan for the interface had tooltips all over everything.  That didn't last long.  They're good on menus and toolbar buttons, but on anything else they quickly become annoying because they often cover up something you're trying to read.  When I'm making configs, I usually just open scancodes.py

Offline TalkingTree

  • Posts: 2343
  • Location: Italy (142)
    • My projects
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2368 on: Mon, 09 April 2018, 16:28:21 »
My original plan for the interface had tooltips all over everything.  That didn't last long.  They're good on menus and toolbar buttons, but on anything else they quickly become annoying because they often cover up something you're trying to read.
That makes sense. Perhaps you can have a Toggle tooltip feature in a View submenu.
My opensource projects: GH80-3000, Skipad, TOAD (KotM Sept '17), TOAD v2 (KotM April '18), XMMX.

Online ErgoMacros

  • Posts: 251
  • Location: SF Bay Area
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2369 on: Mon, 09 April 2018, 16:47:14 »
or, instead of toggle (settable) long delay.
Today's quote: '...“but then the customer successfully broke that.”

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2370 on: Mon, 09 April 2018, 20:43:04 »
I added TalkingTree's suggestions.  The tooltips on the scancode picker dialog is an awesome idea.  I didn't end up adding them to the layout editor because they seemed redundant with just clicking for the property window.

making new release now.

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy

Offline TalkingTree

  • Posts: 2343
  • Location: Italy (142)
    • My projects
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2372 on: Tue, 10 April 2018, 03:07:34 »
Loving the new release. Thanks a lot for supporting the GH80-3000.

Regarding the SmartScreen this wall of text may (or not) be relevant to this software; it basically tells that digitally signing the sofware would speed up the removal process.
My opensource projects: GH80-3000, Skipad, TOAD (KotM Sept '17), TOAD v2 (KotM April '18), XMMX.

Offline TalkingTree

  • Posts: 2343
  • Location: Italy (142)
    • My projects
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2373 on: Thu, 12 April 2018, 08:28:14 »
Hey metalliqaz, would you consider adding the code for the XMMX and the Toad to the source as well?
They share the same matrix so it's one config file for both.

Eventually, here it is. Thank you.

More
xmmx_toad.py
Code: [Select]
# Easy AVR USB Keyboard Firmware Keymapper
# Copyright (C) 2013-2016 David Howland
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program.  If not, see <http://www.gnu.org/licenses/>.

"""Keyboard definition for the XMMX keyboard"""

# The first decision you have to make is to choose a hardware
# layout.  Assuming you are using a Teensy2.0, ATmega32U4_16MHz_TKL
# is probably the best hardware layout for you.  ATmega32U4_16MHz_SIXTY
# might also work for you, though.  The sizes are defined in the
# templates/__init__.py file of the keymapper.
# Leave the rest of the imports like they are here.
import easykeymap.templates.ATmega32U4_16MHz_TKL as firmware
from easykeymap.ioports import *
from easykeymap.helper import make_matrix_config

# The name of the board in the "New" dialog
description = "XMMX and Toad"
# Unique string to identify THIS exact hardware layout
unique_id = "xmmx_toad"
# The name of the .cfg file the system will try to find for altered
# layout options.  See the configs subdir of the keymapper.
cfg_name = "xmmx_toad"

# Hand-wired boards usually use Teensy controllers.  Set this to
# True to make sure that the bootloader works.
teensy = False
# If your board has an exposed switch for going into the bootloader,
# you can set this to True and the system won't prompt you to add a
# BOOT key to your layout.
hw_boot_key = False

# These two parameters define the size of the keyboard in the display.
# Must be whole numbers in units of quarter key lengths.  A TKL
# usually is 6 rows high with a 1/2 key length gutter under the Fn row.
# Therefore int(6.5*4).  Apply the same logic the width.  Remember
# we are talking visual width, not number of columns.
display_height = int(6.5*4)
display_width = int(18.25*4)

# The number of rows and columns in the matrix.  In a hand-wired board
# each of these will correspond to a single pin.
num_rows = 6
num_cols = 17

# Keyboards work by scanning a matrix to check each key.  The scan
# works by setting an active row/column (strobing) and then reading
# the status of every switch that crosses it (sensing).
# strobe_cols tells the firmware which direction you have your diodes
# installed.  If diodes go from column to row, then strobe_cols must
# be False.  If diodes go from row to column, then strobe_cols must be
# True.
strobe_cols = False
# strobe_low tells the firmware if a row/column should be activated
# by pulling the pin high or low.  Hand-wired boards will almost always
# use strobe_low = True
strobe_low = True

# The matrix_hardware, matrix_strobe, matrix_sense parameters tell
# the firmware how to initialize the ports, what pins must be set
# for each row/column, and what order to strobe/sense.  These are
# complicated and are explained fully elsewhere.  It is easiest to
# configure the matrix by using the make_matrix_config function as
# shown below.  Just customize 'rows' and 'cols' for your project.
matrix_hardware, matrix_strobe, matrix_sense = make_matrix_config(
    strobe_cols=strobe_cols,
    strobe_low=strobe_low,
    rows=[B0, F6, F5, F4, F1, F0],
    cols=[B3, B2, B1, E6, B7, C7, C6, D4, D6, D7, B4, D0, D1, F7, D2, D3, D5],
    device=firmware.device
)

# The total number of LED outputs (indicators + backlights)
num_leds = 2
# The number of LED indicators (for example, caps lock)
num_ind = 2
# The number of backlight enable modes.  This counts the number of
# options available for the BL_ENABLE key.  Boards without backlights
# should use the minimum value of 2.
num_bl_enab = 2

# Define the default assignments of the indicator LEDs.  The length
# of this list must equal num_ind.  For each LED, the first string
# is the description of the key shown in the GUI.  The second string
# is the default function assigned to that LED.  LED functions must
# be strings as defined in led_assignments of gui.py.  Common choices
# are 'Num Lock', 'Caps Lock', 'Scroll Lock', 'Win Lock', 'Fn Active',
# 'Recording', 'Backlight', and 'Unassigned'.
led_definition = [
    ('LED1', 'Caps Lock'),
    ('LED2', 'Scroll Lock')
]

# Definition of LED pins.  (indicators and backlights)  Indicators
# must come first and be in the same order as defined in led_definition.
# LED_DRIVER_PULLUP is used when the pin is connected to the anode of
# the LED and the cathode is connected to ground.
# LED_DRIVER_PULLDOWN is used when the pin is connected to the cathode
# of the LED and the anode is connected to the power supply.
led_hardware = [
#       Port    Pin    Direction
    ( REF_PORTB, 6, LED_DRIVER_PULLDOWN ),
    ( REF_PORTB, 5, LED_DRIVER_PULLDOWN )
]

# True if the board supports backlight, otherwise False
backlighting = False

# This can be used to configure different backlighting zones.  Explained
# in more detail elsewhere.  Length of list must equal num_bl_enab.
# Length of each tuple must equal num_leds.  Tuples use the same ordering
# as led_hardware.  Almost everyone should just use an all-on/all-off
# configuration.  That's a list of two tuples, one with all 1s for each
# LED, the other with all 0s for each LED.
bl_modes = [
    ( 0, 0 ),
    ( 1, 1 )
]

# Just leave this here as-is.
KMAC_key = None

# Define your layout.  This is a list of rows.  Each row is a list
# of keys.  Each key is a tuple of three items.  First item is a tuple
# defining the width,height of the key.  If it is just a number, it
# will be a space instead of a key.  All units are in quarter key lengths,
# so a standard key would be (4,4).  Second item is a tuple defining the
# row,column in the matrix for that key.  Third item is the default scancode
# for that key, from scancodes.py.  If a row is a number instead of a list,
# it will just make a vertical spacer.
keyboard_definition = [
    [((4, 4), (0, 0), 'HID_KEYBOARD_SC_ESCAPE'),
     (4, None, '0'),
     ((4, 4), (0, 1), 'HID_KEYBOARD_SC_F1'),
     ((4, 4), (0, 2), 'HID_KEYBOARD_SC_F2'),
     ((4, 4), (0, 3), 'HID_KEYBOARD_SC_F3'),
     ((4, 4), (0, 4), 'HID_KEYBOARD_SC_F4'),
     (2, None, '0'),
     ((4, 4), (0, 5), 'HID_KEYBOARD_SC_F5'),
     ((4, 4), (0, 6), 'HID_KEYBOARD_SC_F6'),
     ((4, 4), (0, 7), 'HID_KEYBOARD_SC_F7'),
     ((4, 4), (0, 8), 'HID_KEYBOARD_SC_F8'),
     (2, None, '0'),
     ((4, 4), (0, 9), 'HID_KEYBOARD_SC_F9'),
     ((4, 4), (0, 10), 'HID_KEYBOARD_SC_F10'),
     ((4, 4), (0, 11), 'HID_KEYBOARD_SC_F11'),
     ((4, 4), (0, 12), 'HID_KEYBOARD_SC_F12'),
     (1, None, '0'),
     ((4, 4), (0, 14), 'HID_KEYBOARD_SC_PRINT_SCREEN'),
     ((4, 4), (0, 15), 'HID_KEYBOARD_SC_SCROLL_LOCK'),
     ((4, 4), (0, 16), 'HID_KEYBOARD_SC_PAUSE')],

    2,

    [((4, 4), (1, 0), 'HID_KEYBOARD_SC_GRAVE_ACCENT_AND_TILDE'),
     ((4, 4), (1, 1), 'HID_KEYBOARD_SC_1_AND_EXCLAMATION'),
     ((4, 4), (1, 2), 'HID_KEYBOARD_SC_2_AND_AT'),
     ((4, 4), (1, 3), 'HID_KEYBOARD_SC_3_AND_HASHMARK'),
     ((4, 4), (1, 4), 'HID_KEYBOARD_SC_4_AND_DOLLAR'),
     ((4, 4), (1, 5), 'HID_KEYBOARD_SC_5_AND_PERCENTAGE'),
     ((4, 4), (1, 6), 'HID_KEYBOARD_SC_6_AND_CARET'),
     ((4, 4), (1, 7), 'HID_KEYBOARD_SC_7_AND_AND_AMPERSAND'),
     ((4, 4), (1, 8), 'HID_KEYBOARD_SC_8_AND_ASTERISK'),
     ((4, 4), (1, 9), 'HID_KEYBOARD_SC_9_AND_OPENING_PARENTHESIS'),
     ((4, 4), (1, 10), 'HID_KEYBOARD_SC_0_AND_CLOSING_PARENTHESIS'),
     ((4, 4), (1, 11), 'HID_KEYBOARD_SC_MINUS_AND_UNDERSCORE'),
     ((4, 4), (1, 12), 'HID_KEYBOARD_SC_EQUAL_AND_PLUS'),
     ((4, 4), (1, 13), 'HID_KEYBOARD_SC_BACKSPACE'),
     ((4, 4), (0, 13), 'HID_KEYBOARD_SC_BACKSPACE'),
     (1, None, '0'),
     ((4, 4), (1, 14), 'HID_KEYBOARD_SC_INSERT'),
     ((4, 4), (1, 15), 'HID_KEYBOARD_SC_HOME'),
     ((4, 4), (1, 16), 'HID_KEYBOARD_SC_PAGE_UP')],

    [((6, 4), (2, 0), 'HID_KEYBOARD_SC_TAB'),
     ((4, 4), (2, 1), 'HID_KEYBOARD_SC_Q'),
     ((4, 4), (2, 2), 'HID_KEYBOARD_SC_W'),
     ((4, 4), (2, 3), 'HID_KEYBOARD_SC_E'),
     ((4, 4), (2, 4), 'HID_KEYBOARD_SC_R'),
     ((4, 4), (2, 5), 'HID_KEYBOARD_SC_T'),
     ((4, 4), (2, 6), 'HID_KEYBOARD_SC_Y'),
     ((4, 4), (2, 7), 'HID_KEYBOARD_SC_U'),
     ((4, 4), (2, 8), 'HID_KEYBOARD_SC_I'),
     ((4, 4), (2, 9), 'HID_KEYBOARD_SC_O'),
     ((4, 4), (2, 10), 'HID_KEYBOARD_SC_P'),
     ((4, 4), (2, 11), 'HID_KEYBOARD_SC_OPENING_BRACKET_AND_OPENING_BRACE'),
     ((4, 4), (2, 12), 'HID_KEYBOARD_SC_CLOSING_BRACKET_AND_CLOSING_BRACE'),
     ((6, 4), (2, 13), 'HID_KEYBOARD_SC_BACKSLASH_AND_PIPE'),
     (1, None, '0'),
     ((4, 4), (2, 14), 'HID_KEYBOARD_SC_DELETE'),
     ((4, 4), (2, 15), 'HID_KEYBOARD_SC_END'),
     ((4, 4), (2, 16), 'HID_KEYBOARD_SC_PAGE_DOWN')],

    [((7, 4), (3, 0), 'HID_KEYBOARD_SC_CAPS_LOCK'),
     ((4, 4), (3, 1), 'HID_KEYBOARD_SC_A'),
     ((4, 4), (3, 2), 'HID_KEYBOARD_SC_S'),
     ((4, 4), (3, 3), 'HID_KEYBOARD_SC_D'),
     ((4, 4), (3, 4), 'HID_KEYBOARD_SC_F'),
     ((4, 4), (3, 5), 'HID_KEYBOARD_SC_G'),
     ((4, 4), (3, 6), 'HID_KEYBOARD_SC_H'),
     ((4, 4), (3, 7), 'HID_KEYBOARD_SC_J'),
     ((4, 4), (3, 8), 'HID_KEYBOARD_SC_K'),
     ((4, 4), (3, 9), 'HID_KEYBOARD_SC_L'),
     ((4, 4), (3, 10), 'HID_KEYBOARD_SC_SEMICOLON_AND_COLON'),
     ((4, 4), (3, 11), 'HID_KEYBOARD_SC_APOSTROPHE_AND_QUOTE'),
     ((4, 4), (3, 12), 'HID_KEYBOARD_SC_NON_US_HASHMARK_AND_TILDE'),
     ((5, 4), (3, 13), 'HID_KEYBOARD_SC_ENTER'),
     (1, None, '0'),
     ((4, 4), (3, 14), '0'),
     ((4, 4), (3, 15), '0'),
     ((4, 4), (3, 16), '0')],

    [((5, 4), (4, 0), 'HID_KEYBOARD_SC_LEFT_SHIFT'),
     ((4, 4), (4, 1), 'HID_KEYBOARD_SC_NON_US_BACKSLASH_AND_PIPE'),
     ((4, 4), (4, 2), 'HID_KEYBOARD_SC_Z'),
     ((4, 4), (4, 3), 'HID_KEYBOARD_SC_X'),
     ((4, 4), (4, 4), 'HID_KEYBOARD_SC_C'),
     ((4, 4), (4, 5), 'HID_KEYBOARD_SC_V'),
     ((4, 4), (4, 6), 'HID_KEYBOARD_SC_B'),
     ((4, 4), (4, 7), 'HID_KEYBOARD_SC_N'),
     ((4, 4), (4, 8), 'HID_KEYBOARD_SC_M'),
     ((4, 4), (4, 9), 'HID_KEYBOARD_SC_COMMA_AND_LESS_THAN_SIGN'),
     ((4, 4), (4, 10), 'HID_KEYBOARD_SC_DOT_AND_GREATER_THAN_SIGN'),
     ((4, 4), (4, 11), 'HID_KEYBOARD_SC_SLASH_AND_QUESTION_MARK'),
     ((7, 4), (4, 12), 'HID_KEYBOARD_SC_RIGHT_SHIFT'),
     ((4, 4), (4, 13), 'SCANCODE_FN0'),
     (1, None, '0'),
     ((4, 4), (4, 14), '0'),
     ((4, 4), (4, 15), 'HID_KEYBOARD_SC_UP_ARROW'),
     ((4, 4), (4, 16), '0')],

    [((5, 4), (5, 0), 'HID_KEYBOARD_SC_LEFT_CONTROL'),
     ((5, 4), (5, 1), 'HID_KEYBOARD_SC_LEFT_GUI'),
     ((5, 4), (5, 2), 'HID_KEYBOARD_SC_LEFT_ALT'),
     ((25, 4), (5, 7), 'HID_KEYBOARD_SC_SPACE'),
     ((5, 4), (5, 10), 'HID_KEYBOARD_SC_RIGHT_ALT'),
     ((5, 4), (5, 11), 'HID_KEYBOARD_SC_RIGHT_GUI'),
     ((5, 4), (5, 12), 'HID_KEYBOARD_SC_APPLICATION'),
     ((5, 4), (5, 13), 'HID_KEYBOARD_SC_RIGHT_CONTROL'),
     (1, None, '0'),
     ((4, 4), (5, 14), 'HID_KEYBOARD_SC_LEFT_ARROW'),
     ((4, 4), (5, 15), 'HID_KEYBOARD_SC_DOWN_ARROW'),
     ((4, 4), (5, 16), 'HID_KEYBOARD_SC_RIGHT_ARROW')]
]

# Just leave this here as-is.
alt_layouts = {}

xmmx_toad.cfg
Code: [Select]
[XMMX: ANSI Winkey]
# 2u Backspace
MAKE_KEY(2, 13, 8, 4)
MAKE_SPACER(2, 14, 0)
# 2.25u Left Shift
MAKE_KEY(5, 0, 9, 4)
MAKE_SPACER(5, 1, 0)
# 2.75u Right Shift
MAKE_KEY(5, 12, 11, 4)
MAKE_SPACER(5, 13, 0)
# 2.25u Enter
MAKE_KEY(4, 13, 9, 4)
MAKE_SPACER(4, 12, 0)
# remove extra navigation keys
MAKE_SPACER(4, 15, 0)
MAKE_SPACER(4, 16, 0)
MAKE_SPACER(4, 17, 0)
MAKE_SPACER(5, 15, 4)
MAKE_SPACER(5, 17, 0)

[XMMX: ANSI Winkeyless]
# 2u Backspace
MAKE_KEY(2, 13, 8, 4)
MAKE_SPACER(2, 14, 0)
# 2.25u Left Shift
MAKE_KEY(5, 0, 9, 4)
MAKE_SPACER(5, 1, 0)
# 2.75u Right Shift
MAKE_KEY(5, 12, 11, 4)
MAKE_SPACER(5, 13, 0)
# 2.25u Enter
MAKE_KEY(4, 13, 9, 4)
MAKE_SPACER(4, 12, 0)
# bottom row
MAKE_KEY(6, 0, 6, 4)
MAKE_SPACER(6, 1, 4)
MAKE_KEY(6, 2, 6, 4)
MAKE_KEY(6, 3, 28, 4)
MAKE_KEY(6, 4, 6, 4)
MAKE_SPACER(6, 5, 0)
MAKE_SPACER(6, 6, 4)
MAKE_KEY(6, 7, 6, 4)
# remove extra navigation keys
MAKE_SPACER(4, 15, 0)
MAKE_SPACER(4, 16, 0)
MAKE_SPACER(4, 17, 0)
MAKE_SPACER(5, 15, 4)
MAKE_SPACER(5, 17, 0)

[XMMX: ISO Winkey]
# 2u Backspace
MAKE_KEY(2, 13, 8, 4)
MAKE_SPACER(2, 14, 0)
# 2.75u Right Shift
MAKE_KEY(5, 12, 11, 4)
MAKE_SPACER(5, 13, 0)
# ISO Enter
MAKE_KEY(4, 13, 5, -8)
MAKE_SPACER(3, 13, 6)
# remove extra navigation keys
MAKE_SPACER(4, 15, 0)
MAKE_SPACER(4, 16, 0)
MAKE_SPACER(4, 17, 0)
MAKE_SPACER(5, 15, 4)
MAKE_SPACER(5, 17, 0)

[XMMX: ISO Winkeyless]
# 2u Backspace
MAKE_KEY(2, 13, 8, 4)
MAKE_SPACER(2, 14, 0)
# 2.75u Right Shift
MAKE_KEY(5, 12, 11, 4)
MAKE_SPACER(5, 13, 0)
# ISO Enter
MAKE_KEY(4, 13, 5, -8)
MAKE_SPACER(3, 13, 6)
# bottom row
MAKE_KEY(6, 0, 6, 4)
MAKE_SPACER(6, 1, 4)
MAKE_KEY(6, 2, 6, 4)
MAKE_KEY(6, 3, 28, 4)
MAKE_KEY(6, 4, 6, 4)
MAKE_SPACER(6, 5, 0)
MAKE_SPACER(6, 6, 4)
MAKE_KEY(6, 7, 6, 4)
# remove extra navigation keys
MAKE_SPACER(4, 15, 0)
MAKE_SPACER(4, 16, 0)
MAKE_SPACER(4, 17, 0)
MAKE_SPACER(5, 15, 4)
MAKE_SPACER(5, 17, 0)

#Toad: 70%
[Toad: <All Keys>]
# remove navigation keys
MAKE_SPACER(0, 17, 0)
MAKE_SPACER(0, 18, 0)
MAKE_SPACER(0, 19, 0)
MAKE_SPACER(2, 16, 0)
MAKE_SPACER(2, 17, 0)
MAKE_SPACER(2, 18, 0)
MAKE_SPACER(3, 15, 0)
MAKE_SPACER(3, 16, 0)
MAKE_SPACER(3, 17, 0)
MAKE_SPACER(4, 15, 0)
MAKE_SPACER(4, 16, 0)
MAKE_SPACER(4, 17, 0)
MAKE_SPACER(5, 15, 0)
MAKE_SPACER(5, 16, 0)
MAKE_SPACER(5, 17, 0)
MAKE_SPACER(6, 9, 0)
MAKE_SPACER(6, 10, 0)
MAKE_SPACER(6, 11, 0)

[Toad: ANSI Winkey]
# 2u Backspace
MAKE_KEY(2, 13, 8, 4)
MAKE_SPACER(2, 14, 0)
# 2.25u Left Shift
MAKE_KEY(5, 0, 9, 4)
MAKE_SPACER(5, 1, 0)
# 2.75u Right Shift
MAKE_KEY(5, 12, 11, 4)
MAKE_SPACER(5, 13, 0)
# 2.25u Enter
MAKE_KEY(4, 13, 9, 4)
MAKE_SPACER(4, 12, 0)
# remove navigation keys
MAKE_SPACER(0, 17, 0)
MAKE_SPACER(0, 18, 0)
MAKE_SPACER(0, 19, 0)
MAKE_SPACER(2, 16, 0)
MAKE_SPACER(2, 17, 0)
MAKE_SPACER(2, 18, 0)
MAKE_SPACER(3, 15, 0)
MAKE_SPACER(3, 16, 0)
MAKE_SPACER(3, 17, 0)
MAKE_SPACER(4, 15, 0)
MAKE_SPACER(4, 16, 0)
MAKE_SPACER(4, 17, 0)
MAKE_SPACER(5, 15, 0)
MAKE_SPACER(5, 16, 0)
MAKE_SPACER(5, 17, 0)
MAKE_SPACER(6, 9, 0)
MAKE_SPACER(6, 10, 0)
MAKE_SPACER(6, 11, 0)


[Toad: ANSI Winkeyless]
# 2u Backspace
MAKE_KEY(2, 13, 8, 4)
MAKE_SPACER(2, 14, 0)
# 2.25u Left Shift
MAKE_KEY(5, 0, 9, 4)
MAKE_SPACER(5, 1, 0)
# 2.75u Right Shift
MAKE_KEY(5, 12, 11, 4)
MAKE_SPACER(5, 13, 0)
# 2.25u Enter
MAKE_KEY(4, 13, 9, 4)
MAKE_SPACER(4, 12, 0)
# bottom row
MAKE_KEY(6, 0, 6, 4)
MAKE_SPACER(6, 1, 4)
MAKE_KEY(6, 2, 6, 4)
MAKE_KEY(6, 3, 28, 4)
MAKE_KEY(6, 4, 6, 4)
MAKE_SPACER(6, 5, 0)
MAKE_SPACER(6, 6, 4)
MAKE_KEY(6, 7, 6, 4)
# remove navigation keys
MAKE_SPACER(0, 17, 0)
MAKE_SPACER(0, 18, 0)
MAKE_SPACER(0, 19, 0)
MAKE_SPACER(2, 16, 0)
MAKE_SPACER(2, 17, 0)
MAKE_SPACER(2, 18, 0)
MAKE_SPACER(3, 15, 0)
MAKE_SPACER(3, 16, 0)
MAKE_SPACER(3, 17, 0)
MAKE_SPACER(4, 15, 0)
MAKE_SPACER(4, 16, 0)
MAKE_SPACER(4, 17, 0)
MAKE_SPACER(5, 15, 0)
MAKE_SPACER(5, 16, 0)
MAKE_SPACER(5, 17, 0)
MAKE_SPACER(6, 9, 0)
MAKE_SPACER(6, 10, 0)
MAKE_SPACER(6, 11, 0)


[Toad: ISO Winkey]
# 2u Backspace
MAKE_KEY(2, 13, 8, 4)
MAKE_SPACER(2, 14, 0)
# 2.75u Right Shift
MAKE_KEY(5, 12, 11, 4)
MAKE_SPACER(5, 13, 0)
# ISO Enter
MAKE_KEY(4, 13, 5, -8)
MAKE_SPACER(3, 13, 6)
# remove navigation keys
MAKE_SPACER(0, 17, 0)
MAKE_SPACER(0, 18, 0)
MAKE_SPACER(0, 19, 0)
MAKE_SPACER(2, 16, 0)
MAKE_SPACER(2, 17, 0)
MAKE_SPACER(2, 18, 0)
MAKE_SPACER(3, 15, 0)
MAKE_SPACER(3, 16, 0)
MAKE_SPACER(3, 17, 0)
MAKE_SPACER(4, 15, 0)
MAKE_SPACER(4, 16, 0)
MAKE_SPACER(4, 17, 0)
MAKE_SPACER(5, 15, 0)
MAKE_SPACER(5, 16, 0)
MAKE_SPACER(5, 17, 0)
MAKE_SPACER(6, 9, 0)
MAKE_SPACER(6, 10, 0)
MAKE_SPACER(6, 11, 0)

[Toad: ISO Winkeyless]
# 2u Backspace
MAKE_KEY(2, 13, 8, 4)
MAKE_SPACER(2, 14, 0)
# 2.75u Right Shift
MAKE_KEY(5, 12, 11, 4)
MAKE_SPACER(5, 13, 0)
# ISO Enter
MAKE_KEY(4, 13, 5, -8)
MAKE_SPACER(3, 13, 6)
# bottom row
MAKE_KEY(6, 0, 6, 4)
MAKE_SPACER(6, 1, 4)
MAKE_KEY(6, 2, 6, 4)
MAKE_KEY(6, 3, 28, 4)
MAKE_KEY(6, 4, 6, 4)
MAKE_SPACER(6, 5, 0)
MAKE_SPACER(6, 6, 4)
MAKE_KEY(6, 7, 6, 4)
# remove navigation keys
MAKE_SPACER(0, 17, 0)
MAKE_SPACER(0, 18, 0)
MAKE_SPACER(0, 19, 0)
MAKE_SPACER(2, 16, 0)
MAKE_SPACER(2, 17, 0)
MAKE_SPACER(2, 18, 0)
MAKE_SPACER(3, 15, 0)
MAKE_SPACER(3, 16, 0)
MAKE_SPACER(3, 17, 0)
MAKE_SPACER(4, 15, 0)
MAKE_SPACER(4, 16, 0)
MAKE_SPACER(4, 17, 0)
MAKE_SPACER(5, 15, 0)
MAKE_SPACER(5, 16, 0)
MAKE_SPACER(5, 17, 0)
MAKE_SPACER(6, 9, 0)
MAKE_SPACER(6, 10, 0)
MAKE_SPACER(6, 11, 0)
My opensource projects: GH80-3000, Skipad, TOAD (KotM Sept '17), TOAD v2 (KotM April '18), XMMX.

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2374 on: Thu, 12 April 2018, 19:56:40 »
Hey metalliqaz, would you consider adding the code for the XMMX and the Toad to the source as well?
They share the same matrix so it's one config file for both.

Cool, will do.

Like with the GH80-3000, I cleaned up the file a little bit.  In this one I updated the Unique ID to more closely match EasyAVR conventions.  That means if you have saved layouts it will refuse to load them. :( you can just edit your .json files to update the unique_id property, though.

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy

Offline TalkingTree

  • Posts: 2343
  • Location: Italy (142)
    • My projects
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2376 on: Fri, 13 April 2018, 02:46:58 »
Hey metalliqaz, would you consider adding the code for the XMMX and the Toad to the source as well?
They share the same matrix so it's one config file for both.

Cool, will do.
Amazing. Thank you so much.

Like with the GH80-3000, I cleaned up the file a little bit.  In this one I updated the Unique ID to more closely match EasyAVR conventions.  That means if you have saved layouts it will refuse to load them. :( you can just edit your .json files to update the unique_id property, though.
No problem, it won't take more than a couple of minutes to fix that.
My opensource projects: GH80-3000, Skipad, TOAD (KotM Sept '17), TOAD v2 (KotM April '18), XMMX.

Offline tpc2084

  • Posts: 6
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2377 on: Sat, 21 April 2018, 09:00:37 »
Does anyone know if Easy AVR can be used on a keyboard that has an Atmel ATMega32a mcu? This board is the JJ50 from the kprepublic vendor. I've tried to use the 3.00.01 EasyAVR for windows zip and I've gotten as far as editing the scancodes in the jj50.py file that was generated but now when I restart easykeymap.exe I get some python errors like:

Traceback (most recent call last):
  File "D:\Code\EasyAVR\keymapper\easykeymap\gui\easyapp.py", line 34, in OnInit
  File "D:\Code\EasyAVR\keymapper\easykeymap\gui\mainframe.py", line 57, in __init__
  File "D:\Code\EasyAVR\keymapper\easykeymap\gui\mainframe.py", line 61, in make_data
  File "D:\Code\EasyAVR\keymapper\easykeymap\pkgdata.py", line 140, in import_boards
  File "D:\Code\EasyAVR\keymapper\easykeymap\pkgdata.py", line 94, in import_user_boards
  File "C:\Program Files (x86)\Python36-32\lib\importlib\__init__.py", line 126, in import_module
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "D:\cygwin64\home\Terry\.EasyAVR\boards\jj50.py", line 101, in <module>
    device=firmware.device
  File "D:\Code\EasyAVR\keymapper\easykeymap\helper.py", line 50, in make_matrix_config
IndexError: list index out of range

Which I think means that it doesn't like my device=firmware.device line in jj50.py, but that was an autogenerated line and I really don't know what valid choices might be.
Please help a newbie EasyAVR user. Thanks in advance!

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2378 on: Sat, 21 April 2018, 09:14:04 »
Does anyone know if Easy AVR can be used on a keyboard that has an Atmel ATMega32a mcu? This board is the JJ50 from the kprepublic vendor. I've tried to use the 3.00.01 EasyAVR for windows zip and I've gotten as far as editing the scancodes in the jj50.py file that was generated but now when I restart easykeymap.exe I get some python errors like:

Traceback (most recent call last):
  File "D:\Code\EasyAVR\keymapper\easykeymap\gui\easyapp.py", line 34, in OnInit
  File "D:\Code\EasyAVR\keymapper\easykeymap\gui\mainframe.py", line 57, in __init__
  File "D:\Code\EasyAVR\keymapper\easykeymap\gui\mainframe.py", line 61, in make_data
  File "D:\Code\EasyAVR\keymapper\easykeymap\pkgdata.py", line 140, in import_boards
  File "D:\Code\EasyAVR\keymapper\easykeymap\pkgdata.py", line 94, in import_user_boards
  File "C:\Program Files (x86)\Python36-32\lib\importlib\__init__.py", line 126, in import_module
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "D:\cygwin64\home\Terry\.EasyAVR\boards\jj50.py", line 101, in <module>
    device=firmware.device
  File "D:\Code\EasyAVR\keymapper\easykeymap\helper.py", line 50, in make_matrix_config
IndexError: list index out of range

Which I think means that it doesn't like my device=firmware.device line in jj50.py, but that was an autogenerated line and I really don't know what valid choices might be.
Please help a newbie EasyAVR user. Thanks in advance!

That AVR is not supported.  The firmware only supports USB AVR parts.

Offline Helspong

  • Posts: 15
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2379 on: Sat, 21 April 2018, 10:54:26 »
How can I remove / clear a scancode from a key? I'm sure it is possible but I really cannot find out how to do it except for opening the file in notepad and replacing the scancode with a "0".

Offline suicidal_orange

  • * Global Moderator
  • Posts: 3282
  • Location: England
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2380 on: Sat, 21 April 2018, 10:56:53 »
Not 100% sure on the new version but on the old one the top item in the list of keycodes was blank.
                               
Ducky Zero, MX Reds    JD40, Jailhouse Blues           GH60
Soarer controller

Offline Helspong

  • Posts: 15
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2381 on: Sat, 21 April 2018, 11:01:35 »
Not 100% sure on the new version but on the old one the top item in the list of keycodes was blank.

Yes, indeed. But in the new version i can only seem either press the key i want or use a scancode picker (the virtual keyboard thingy). There's no drop down list as far as i can see. :)

Offline suicidal_orange

  • * Global Moderator
  • Posts: 3282
  • Location: England
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2382 on: Sat, 21 April 2018, 11:10:46 »
Just had a look and you're right the dropdown's gone - I think you've found the first bug with the new version.
« Last Edit: Sat, 21 April 2018, 11:56:36 by suicidal_orange »
                               
Ducky Zero, MX Reds    JD40, Jailhouse Blues           GH60
Soarer controller

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2383 on: Sat, 21 April 2018, 11:42:31 »
How can I remove / clear a scancode from a key? I'm sure it is possible but I really cannot find out how to do it except for opening the file in notepad and replacing the scancode with a "0".

heh. There is a point when you've been looking at something so long, you can't see it anymore.

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2384 on: Sat, 21 April 2018, 11:58:30 »
So which would be better?

1) A blank button on the scancode picker?

2) Pressing delete to clear the assignment in the property editor?

Right now, when you press a key in the property editor, it takes it as an assignment request UNLESS it is a key that is used for keyboard navigation.  So the arrows move the cursor, they don't assign arrow keys.  Same with space bar and tab (select and activate, respectively).  So, should I "steal" the delete key?

I lean towards (1) because (2) is non-obvious.

Offline suicidal_orange

  • * Global Moderator
  • Posts: 3282
  • Location: England
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2385 on: Sat, 21 April 2018, 12:00:00 »
Definitely 1), not much room for it in the picker though!
                               
Ducky Zero, MX Reds    JD40, Jailhouse Blues           GH60
Soarer controller

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2386 on: Sat, 21 April 2018, 12:04:38 »
Definitely 1), not much room for it in the picker though!

I know... I made it "mandatory" so I wanted to make it as small as possible.  If anything else gets added it will have to spill on to another row and I won't like how it looks  :mad: Oh well.  There is an empty spot in the top right I can use for now.

Offline Helspong

  • Posts: 15
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2387 on: Sat, 21 April 2018, 14:06:27 »
I agree with 1)

Other more or less useful ideas:
* Have some "delete/clear scancode" function in the first window popping up when you press a key, before entering the scancode picker. (I kinda miss the option to keep the scancode picker open. I see the reason for the first window popping up though.)

* Right click with the mouse and an option there to clear it.

* Another way could be to have a small icon on each key, maybe an "x" that appears when you hold down a key or toggle something to enter some kind of "edit mode" like when you hold down on an icon on a iPhone

Offline TalkingTree

  • Posts: 2343
  • Location: Italy (142)
    • My projects
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2388 on: Sat, 21 April 2018, 14:51:09 »
have a small icon on each key, maybe an "x"
I'm picturing something like this.

194326-0
My opensource projects: GH80-3000, Skipad, TOAD (KotM Sept '17), TOAD v2 (KotM April '18), XMMX.

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2389 on: Sat, 21 April 2018, 15:27:04 »
There are many options.  Unfortunately, the most influential factor for me is the limited amount of free time I have.  A new button for "0" is by far the most expedient and therefore the most attractive.  It is an open source project though, so anyone is welcome to build their own vision and show it off.

I'm currently revamping the USB code, which is a pretty big update.  That's where my focus is for the time being.  I'm sure it will take quite a while

Offline Helspong

  • Posts: 15
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2390 on: Sat, 21 April 2018, 16:03:17 »
There are many options.  Unfortunately, the most influential factor for me is the limited amount of free time I have.  A new button for "0" is by far the most expedient and therefore the most attractive.  It is an open source project though, so anyone is welcome to build their own vision and show it off.

I'm currently revamping the USB code, which is a pretty big update.  That's where my focus is for the time being.  I'm sure it will take quite a while

Then so shall it be! I do not have the knowledge to build anything, i just wanted to share some different approaches and i did not have a clue to which was the least or most time consuming. Keep up the good work.

Offline sk8shape

  • Posts: 1
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2391 on: Fri, 27 April 2018, 06:59:29 »
How do you set a key back to "0" once you set it on the new version?

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2392 on: Fri, 27 April 2018, 09:07:06 »
How do you set a key back to "0" once you set it on the new version?
It's an oversight that shall be fixed in the next release

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2394 on: Sun, 06 May 2018, 22:00:05 »
Another release with a major overhaul.  This times it's the USB code, so not as obvious as the GUI replacement, but hopefully a much more stable build:

https://github.com/dhowland/EasyAVR/releases/tag/3.01.01

Also JetBrains has granted me a sponsored open source license for all their IDEs, so that's pretty cool.  PyCharm is powerful but I haven't got used to it yet.

Offline TalkingTree

  • Posts: 2343
  • Location: Italy (142)
    • My projects
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2395 on: Mon, 07 May 2018, 07:53:58 »
Just played around a bit with the new release and it works flawlessly with NKRO as well.
I especially enjoy how all the DLLs were moved to the lib folder as it sometimes was hard to find the executable among that many files.
The USB options also are also nice.

Thanks for this release. Keep up the good work.  :thumb:
My opensource projects: GH80-3000, Skipad, TOAD (KotM Sept '17), TOAD v2 (KotM April '18), XMMX.

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2396 on: Mon, 07 May 2018, 08:59:56 »
Honestly I find the USB options to be unnecessary. I just leave them all on all the time. However I kept getting requests to disable one of the endpoints, probably for compatibility sake. The old method of changing them was terrible. This makes more sense.

Offline TalkingTree

  • Posts: 2343
  • Location: Italy (142)
    • My projects
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2397 on: Mon, 07 May 2018, 14:19:43 »
By the way, I believe that now SCANCODE_FN0 does nothing as FN1 points to the layer 1.
My opensource projects: GH80-3000, Skipad, TOAD (KotM Sept '17), TOAD v2 (KotM April '18), XMMX.

Offline metalliqaz

  • * Maker
  • Thread Starter
  • Posts: 4911
  • Location: the Making Stuff subforum
  • Leopold fanboy
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2398 on: Mon, 07 May 2018, 15:33:06 »
That's not new. FN1 always pointed to Layer1. FN0 points to Layer0, aka default.

Offline TalkingTree

  • Posts: 2343
  • Location: Italy (142)
    • My projects
Re: Easy AVR USB Keyboard Firmware and Keymapper
« Reply #2399 on: Mon, 07 May 2018, 15:37:02 »
That's not new. FN1 always pointed to Layer1. FN0 points to Layer0, aka default.
Then it was me missing the point. Thanks for clarifying.
My opensource projects: GH80-3000, Skipad, TOAD (KotM Sept '17), TOAD v2 (KotM April '18), XMMX.