Code Monkey home page Code Monkey logo

easyavr's Introduction

Easy AVR USB Keyboard Firmware and Keymapper

EasyAVR is a keyboard firmware and keymapper GUI for custom keyboards based on USB AVRs. It is powerful but also really easy to use.

Screenshot

easyavr's People

Contributors

danbee avatar dhowland avatar droseger avatar exodious avatar hillam avatar jcowgar avatar majorkoos avatar mrchozo avatar ofthewild avatar pgorny avatar tscott0 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  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

easyavr's Issues

Locking key issue

Specific hardware setup GH60 Satan function key mapped to lockable. The key was double tapped and locked to second layer, however I could not unlock by pressing function key again.

.dat files wont load

Hi recently switched to Ubuntu Budgie and tried to load some of my .dat files and EasyAVR keeps giving me:

"The save file describes a configuration that cannot be loaded."

What can I do to get my layout dat file to be compatible?

Changing the breathing effect speed

Which files would I need to modify before compiling and how would I generate a new build? Specifically for a GH60 Satan.

I am a programmer, but I don't have experience with programming microcontrollers.

Assigning F13 - F24 results in no output of any scancodes.

Using v2.03.01 it seems trying to run a layout with F13-24 results in those keys sending no scancodes for the keys mapped to F13-24

Running evtest in linux results in no scancodes being shown when pressing F13-24.

Running wireshark to scan USB traffic shows nothing at all being sent from the board when pressing keys bound to F13-24.

Everything else works as expected.

One other individual reported being able to reproduce this.

Fix BIOS compatibility

They keyboard doesn't work properly with at least some BIOSes while in NKRO mode. It appears that the "boot" keyboard profile isn't working.

It may be that I misread the HID spec. I know that other keyboards don't do the "swap" method. More investigation is needed.

Send Mouse Buttons in Macros

Being able to send a mouse button event in a macro would make them a lot more useful.

For one simple example, allowing the use of sending mouse button click to select a word (i.e. a double click in a text field/web page selects a 'word,' triple click generally selects a line) and then sending CTRL+C in the same macro to copy the text which becomes highlighted by the mouse button click events. .. Some sort of thing like: \Mouse1\Mouse1\CTRL(c)

(in the above example one could simply be using their standard mouse to hover over the area they want to select, for this usage example mouse movement events in a macro wouldn't be required)

At the moment it doesn't seem sending a mouse button click event is possible, if there is any way we could get there it'd be great.

Improve config console code

The config console (formerly the debug console) has some issues:

  1. Inefficient -- The code is full of long strings that take up lots of space in program memory. Some of it is needed, but some of it is wasteful
  2. Unintuitive -- The menu system works fine but changing settings, especially toggles, is strange. You don't know what the setting is before you change it.

Move configuration of the HID descriptors into the keymapper tool

Right now the boards are equipped with all possible HID configurations in program flash, and they can be selected via the config console. However this is very awkward to do, it restricts the options for the user, and it takes excessive space in the crowded AVR memory space.

Instead, the HID descriptors should be configured in the keymapper GUI. The user can select 6KRO/NKRO, media enabled, mouse enabled, etc. These settings are not expected to have to change, at least not more than the keymap or macros.

This will be a good optimization. Also, it ties in well #21 and #59.

python error at reprogramming

Hello
i get this error if i do a build and reprogramming under ubuntu 16.04 with python 2.7 installed.
Is this a python problem? Something could not be found. But i could not figure out what.
dfu-programmer is installed under /usr/bin
and is working on the commandline to reprogram my keyboard.
But it would be nice if it works out of EasyAVR.

Here is the error:

error

Increased number of macros/layers ?

Hi !
First, thanks for Easy AVR. I just modded a Filco TKL with a Pegasus Hoof and it does wonder.

I wanted to type characters like ő è ú í ü and other unicodes but currently it is not possible from a US layout. I wish to keep the US layout while being able to print special characters.
I have seen that it was discussed already in issue 35 about unicode, and I thought of a workaround : using Alt+XXXX to print them. But since a lot of macros is required I try to increase the maximum number of macros and layers.

(Disclaimer, I am not great with Python).
I went to guy.py and changed the number of macros from 14 to 16 as a beginning and then I added M15, M16 on the other files while pushing aside some other macros to get some bytes available (from the second parameter of the scancode table).

MACRO_NUM = 14

"SCANCODE_M14": ("M14", 0xDD, "M14"),

Selector(rowframe, self.main, 4, "SCANCODE_M14")

case SCANCODE_M14:

#define NUMBER_OF_MACROS (14)

But now during the firmware building I have this error :
image

I will try to work it out but due to my limited knowledge in Python, any help would be appreciated.
And once again, great piece of software.

TADA68 implementation doesn't work on Saber68

  • Create a new TADA68 layout.
  • Save as FLASH.BIN.
  • Copy the file to flash to keyboard storage.
  • Press ESC on keyboard.

Keyboard is completely unresponsive. I had to reload the backup I had of the layout to get the keyboard working again.

Any ideas?

Access a second layer from a true combination (e.g. `Fn`+`Alt Gr`)

I access Layer 1 from Fn 1 key and Layer 2 from the combination Fn 1+Alt Gr keys.
In order to access Layer 2, I need to press first Fn 1 and then Alt Gr because Alt Gr is Fn 2 on Layer 1. This solution feels a little hacky because the combination will not works when I press Fn 1 and Alt Gr with the reverse order or at the same time.
Is it possible, using Easy AVR, to map a true combination (e.g. Fn+Alt Gr) to a layer?
Thank you.

Update packaging for the new GUI

The old packages are apparently not maintained anymore and in any case they are difficult to use. Since I'm moving to wxPython and would have to redo the setup scripts anyway, now is a good time to move to the more modern PyInstaller.

Edit: After looking into PyInstaller, it is inferior to cx_freeze for complex packages like this one. Also, cx_freeze is actually still maintained. Therefore this issue will instead be used to remove py2exe support, update the cx_freeze scripts, and modernize the setuptools package.

Turn Backlight off when the computer is in standby mode

thanks very much for this great firmware, it worked great with my Gigabyte Osmium and a teensy 2.0++.

However, there is one big flaw so far. The backlight stays on when the usb is powered, and it does not detect a when the computer is in standby mode.

This is possible, as many other input devices do that (including the original controller on my Gigabyte Osmium), and there is also a fix for QMK to support it. As far as I remember there is a standby event built into the USB/HID interface. ('USB suspend').
In the suspend mode, the keyboard is still responsive so it can wake the computer, but the backlight is turned off.
It would be very nice to implement that into EasyAVR as well, as it is quite basic.

Maybe it is even possible to set only specific keys to wake the PC, but I don't know how hard it is to code that, but it would be a very nice and useful feature, so that you do not accidentally wake the PC.

Feature requests; scroll up/down, rapid fire available for media keys, accessing the default layer from another layer, clipboard.

  1. Mouse scroll up/down buttons.
    There are mouse buttons 3, 4 and 5, but no scroll (unless that's what 4 and 5 are, but I wasn't expecting them to be. I could test this, but I have other feature requests as well so I may as well ask : ) ) - Ideally I'd like these to be rapid fire-able.

  2. Rapid fire mode available for Media Keys.
    I use the media keys, especially the volume up/down buttons. As such, I would like these to have the option to be rapid fire, as currently there is no option for this and I believe it could be possible. I use rapid fire on the keys I have mapped to backspace, delete, and arrow keys (48 ms min hold time (default is 800), default / 32 ms repeat delay), and as such would like it on my volume control too as I miss not having it. This may also be nice for macros, but that may be hard to add, as it would conflict with the length of the macros, so I don't know if this would be doable.

  3. Accessing the default layer from another layer.
    Default layer / layer 0. If I'm on another function layer, would there be a way to get back to the default layer? For example, If I was to have the "Caps" key mapped to "Fn", "W" (Qwerty layout) mapped to "Ctrl", and then I want maybe the "Enter" key mapped to "Fn0", such that I can do something like Ctrl+C without moving my hands from the home row or moving them to somewhere uncomfortable as the bottom left of my keyboard / "LCtrl" is uncomfortable to type. Whilst this is a very specific example, I'm sure there could be other uses for this. I know that the default layer can be changed, but then how would you get to layer 0?

  4. Clipboard.
    A temporary copy / paste layer, or a clipboard-style history thing. If (like me) you are using all 10 layers, and then decide you want to move some layers around, whilst the copy / paste function is nice, it isn't as helpful as it could be. Of course, the layers don't necessarily need to be moved around, but it makes it slightly easier to customise the layout if the similar layers are "grouped" (at least in my mind).

Finally, I would like to thank everyone for all their work so far on this project as it makes my one-of-a-kind keyboard possible : )

P.S.: I haven't used Git much, so I'm hoping the "Issues" page is the right place to put this : )

8MHz boards are getting schedule overruns

Matrix scanning needs to be either optimized or elongated because we are having trouble fitting into the schedule, especially on 8MHz boards. Another possibility is to reduce USB speed on those boards.

BOOT key doesn't work on Atreus

The Atreus uses the Astar project board for the controller. The default bootloader on that product contains a boot process that requires a magic number to be in a boot key at a hard coded address.

static const uint16_t bootKey = 0x7777;
volatile uint16_t *const bootKeyPtr = (volatile uint16_t *)0x0800;

EasyAVR obviously does not reserve this address, thus the BOOT key doesn't work. Instead, the user must press the reset switch twice to enter the bootloader.

French symbols not usable

So i can't set altgr or éèçà and such others
even when pushing on my french keyboard the software don't recognize them ^^

Sentraq S60-X is lacking one key

Sentraq S60-X version 1.1 have an additional key immediately left to the right shift. That is to add support for JIS & ABNT2 layouts. SOURCE: I am the PCB designer. ;)

Lines 128 & 129 for full layout should be like that:

     ((4, 4), (3, 12), 'HID_KEYBOARD_SC_SLASH_AND_QUESTION_MARK'),
     ((3, 4), (3, 13), 'HID_KEYBOARD_SC_RIGHT_SHIFT'),

Hyper, Super, Meta Scancodes?

This is more of a question / feature request than a bug.

I noticed that Hyper, Super, and Meta are commented out in scancodes.py at the bottom of the file ... I was just curious for the why and if those codes can be enabled in the near future?

Loading old layouts

Hi. I have my layout saved from an older version, namely: Easy_keymap_multiplatform_20150516 as the archive name says.

Was the backward compatibility lost at some point ?

Remove password generator feature

The password generator function is flawed. It's not that useful for entering passwords because it doesn't travel with the user. It's hard to use because it requires entering a perfect string without visual aids to get the right password. Also it doesn't generate characters with a uniform distribution.

I don't think anyone uses it. I sure don't.

The function started as an investigation into a concept of a keyboard that changes what each key outputs each time it is pressed. Think of the enigma machine. What I ended up with didn't really resemble that at all. Perhaps I will replace it with something like that just for fun. Haven't decided yet.

In any case, the password function should be removed. It takes up a bunch of space I'd rather have back.

Create new documentation

The old help manual will be converted into online documentation. The new docs should also incorporate the README info and wiki help, all into one comprehensive document. There should be developer docs as well as a users guide. Add some screenshots.

GH60 Rev. A

I have a GH60 Revision A prototype that I am still using.

If i use the gh60 satan (rev b) poker layout then 5,t,g,v, and space do not work.
If i use the gh60 (rev c) poker layout then 8,i,k, and m do not work.

hasu in tmk has used this code to support both boards.
Could something like this be done in gh60_satan.py to support both pcb's?

static matrix_row_t read_cols(void)
{
return (PINF&(1<<0) ? 0 : (1<<0)) |
(PINF&(1<<1) ? 0 : (1<<1)) |
(PINE&(1<<6) ? 0 : (1<<2)) |
(PINC&(1<<7) ? 0 : (1<<3)) |
(PINC&(1<<6) ? 0 : (1<<4)) |
(PINB&(1<<6) ? 0 : (1<<5)) |
(PIND&(1<<4) ? 0 : (1<<6)) |
(PINB&(1<<1) ? 0 : (1<<7)) |
((PINB&(1<<0) && PINB&(1<<7)) ? 0 : (1<<8)) | // Rev.A and B
(PINB&(1<<5) ? 0 : (1<<9)) |
(PINB&(1<<4) ? 0 : (1<<10)) |
(PIND&(1<<7) ? 0 : (1<<11)) |
(PIND&(1<<6) ? 0 : (1<<12)) |
(PINB&(1<<3) ? 0 : (1<<13));
}

Reimplement the keymapper GUI

The code for the keymapper is a mess. It grew organically from a simple utility to a complex application. There are several problems. The code is not functionally decomposed into logical sections (spaghetti code). The save file format is finicky and hard to use. It looks awful because of TK. It makes huge exe builds because of TK.

A new keymapper should be built from the ground up with wxPython.

Why is there no left alt support for keys with mods

Hi All this might not be an issue I was just wondering why there is no support for assigning a key with left alt.
selection_002
Every key that I want to have mods pressed down with that have left alt I have to create a macro for

Debugging on device

Hi @dhowland

Any chance you could give some pointers as to the necessary steps for debugging the firmware code?
I've done quite a bit of reading and can't seem to figure out if external hardware is needed or not...

Cheers

unicode macro support

I'm a big fan of ¯\(ツ)/¯ (as well as many others)

But I get the following error when I try to use this as a macro:
image

Alt codes are certainly better than nothing, but it would be great it we could use unicode characters in macros. I've looked through macroparse.py a bit and this seems like it might be within the realm of possibility.

Bouncing issue on Kitten Paw firmware

I've been using a Filco Majestouch 2 with a Kitten Paw (rev 20130602) controller for about three months now, and recently some keys (most notably Return) started to bounce, i.e. being registered twice instead of just once. Using the original controller, or the costar_keyboard firmware by BathroomEpiphanies, this does not happen (but I'd like to keep my custom layout, of course :).
Please let me know if you need any further details.

Replace the Macro mini-language

The current macro mini language doesn't look very nice and isn't intuative. All the escapes require commas after them.

Change the language to use something more like either shell scripts ($(var)) or like templates ({var})

A module will have to be added to convert old macros to the new format

LEDs always on with Sixkeyboard

The LEDs are always on with the Techkeys Sixkeyboard, even when set to "unassigned." I figured out a fix in my fork and submitted a pull request.

Macro parsing Shift seems to be off by one

I have a custom board built on the GH60 Satan sold by 1Up keyboards. I created a macro with the following text:

I compile and flash the board ... then I go to execute the macro and I get this output:

jgorauskas2Gmail.com

I have other examples too ... It seems that the macro parsing / emitting of the codes is off by one when it sees a need to use shift ... at least on the GH60 Satan that I have. I have not tried any other PCB.

Let me know how I can provide any additional information to help debug this issue. I am comfortable programming in Python, but not in C or C++. I downloaded EasyAVR Release v2.05.08

Can anything be done about the slow load times for wx.Choice widgets?

Some widgets just take forever to load on Windows. In my particular case, it's wx.Choice

Robin Dunn himself has blamed this on Windows and not wxWidgets (https://groups.google.com/forum/#!topic/wxpython-users/gODkIvyj-nU)

I don't buy it. I can create a similar UI in tkinter and it will be nice and fast on Windows.

I will create demo programs of the same interface in both and then take those to Robin on stackoverflow. Other than asking the creator, I don't have any ideas for fixing this.

SyntaxError

Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/remlap/Desktop/EasyAVR/keymapper/easykeymap/gui.py", line 61, in <module>
    import easykeymap.newboard as newboard
  File "easykeymap/newboard.py", line 43, in <module>
    import easykeymap.kleparse as kleparse
  File "easykeymap/kleparse.py", line 58
SyntaxError: Non-ASCII character '\xc2' in file easykeymap/kleparse.py on line 58, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

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.