Layout issue
Opened this issue · 1 comments
I'm stuck how to use / change the keyboard layout. I want use use a german layout.
I'm trying to use the example given but
BootKeyboard.write(KEY_7|MOD_LEFT_SHIFT);
doesn't output / it outputs a dollar sign $
keyboard.println also outputs wrong characters. Umlauts for example.
Compiling works, but a lot of warnings are shown:
warnings.txt
Edit: It seems that the #ifndef HID_CUSTOM_LAYOUT in ImprovedKeylayout.h is not working for some reasons. If defining it manual in line 54 #define LAYOUT_GERMAN its working better.
BUT BootKeyboard.println still is nat able to output umlauts (and may some special chars) correctly.
For the println issue i came up with this quirky solution:
Edit KeyboardAPI.hpp
Change Method KeyboardAPI::write(uint8_t k) to the following.
I bet there is a better solution, maybe a method override in case LAYOUT_GERMAN is defined but i don't know how to do it.
`size_t KeyboardAPI::write(uint8_t k)
{
uint8_t p;
switch (k) // Befehle
{
case 0xc2: //stupid workaround
return 1;
case 0xc3: //stupid workaround
return 1;
case 0xb6: //ö
p = write(KEY_OE);
return p;
case 0x96: //Ö
press(KEY_LEFT_SHIFT);
p = write(KEY_OE);
release(KEY_LEFT_SHIFT);
return p;
case 0xa4: //ä
p = write(KEY_AE);
return p;
case 0x84: //Ä
press(KEY_LEFT_SHIFT);
p = write(KEY_AE);
release(KEY_LEFT_SHIFT);
return p;
case 0xbc: //ü
p = write(KEY_UE);
return p;
case 0x9c: //Ü
press(KEY_LEFT_SHIFT);
p = write(KEY_UE);
release(KEY_LEFT_SHIFT);
return p;
case 0x9f: //ß
p = write(KEY_SZ);
return p;
case 0xa7: // §
press(KEY_RIGHT_SHIFT);
p = press(0x33); // 3
release(0x33);
release(KEY_RIGHT_SHIFT);
return p;
case 0xac: // €
press(KEY_RIGHT_ALT);
p = press(KEY_E); // 3
release(KEY_E);
release(KEY_RIGHT_ALT);
press(KEY_LEFT_CTRL); // even more stupid workaraound
release(KEY_LEFT_CTRL); // after executing a pc behaves as if left control is still pressed
return p;
}
// Press and release key (if press was successfull)
auto ret = press(k);
if(ret){
release(k);
}
return ret;
}`