International keyboard
Hans-MartinHannibalLauridsen opened this issue · 7 comments
Could we get support for international keyboards? Or atleast a refactor witch would make it possible for the community to create there own keyboard layouts with support for multicharacters/special characters?
I think it's not so hard to implement, just need a few directives to let us choose from different files where we can store different versions of current _asciimap[] array of Keybpoard.cpp (default), thus allowing to have external "KeyboardXX.h" files (e.g. "KeyboardFR.h", "Keyboard IT.h" and so on) to be included, depending on language setting (a specific KEY_LANGUAGE symbol, e.g. "#define KEY_LANGUAGE IT").
What's a bit hard to do is create KeyboardXX.h files with proper language-specific keycodes, but the community could help with that...
Another thing could be to use an extended ASCII table for specific language characters, i.e. by expanding _asciimap[] to a full 256 elements, or by adding an _extendedasciimap[] with upper 128 characters.
I don't believe it is that simple, there need to be a fundamental change to the way characters are mappped, as most special characters simply does not fit into a char, the C implementationer only allocates 1byte! Which does not make room for much other that ASCII, unicode or what ever does not fit into a single byte.
I think it's not so hard to implement, just need a few directives to let us choose from different files where we can store different versions of current _asciimap[] array of Keybpoard.cpp (default), thus allowing to have external "KeyboardXX.h" files (e.g. "KeyboardFR.h", "Keyboard IT.h" and so on) to be included, depending on language setting (a specific KEY_LANGUAGE symbol, e.g. "#define KEY_LANGUAGE IT").
What's a bit hard to do is create KeyboardXX.h files with proper language-specific keycodes, but the community could help with that...
Another thing could be to use an extended ASCII table for specific language characters, i.e. by expanding _asciimap[] to a full 256 elements, or by adding an _extendedasciimap[] with upper 128 characters.
In this issue #26, I want to send KEYCODE_VOLUME_UP and KEYCODE_VOLUME_DOWN, how should they be sent to the host through arduino?
I extend the library, or change the ascii table if you are Lucky enough that those media Keys fit into one byte, which I expect they don`t. Or use the much better lib https://github.com/NicoHood/Hid.
I extend the library, or change the ascii table if you are Lucky enough that those media Keys fit into one byte, which I expect they don`t. Or use the much better lib https://github.com/NicoHood/Hid.
Hi.
I am trying to write a sketch controlling an android device. Right-clicking an ordinary mouse generates a back event. But AbsoluteMouse.click(MOUSE_RIGHT); not working for me. Also, I was not able to find a key combination or key code for the events "Back" and "Home". Could you please help me?
PS. It seems that the "Back" event can be obtained using Win + Backspace, but I still did not understand how to get it.
This issue has been fixed in version 1.0.3, with some limitations:
- Only ASCII characters are supported.
- While both the Shift and AltGr modifiers are supported, using both simultaneously for typing a single character is not supported.
- Characters requiring hitting multiple keys consecutively (like dead circumflex + space →
^
on some layouts) are not supported.
Lifting those limitations would significantly increase the size and/or complexity of the library. See PR #53 for details.
The currently supported keyboard layouts are: da_DK, de_DE, en_US, es_ES, fr_FR, it_IT and sv_SE. If you want to contribute another layout, please see the comments in the file src/KeyboardLayout.h.
Closing as resolved by #53
Thanks @edgar-bonet!