Merge branch 'pull/win-key-mapping'

Fixes #8.

Signed-off-by: Gergely Nagy <algernon@keyboard.io>
pull/389/head
Gergely Nagy 7 years ago
commit 130b2b2600

@ -41,13 +41,11 @@ void Unicode::start(void) {
hid::sendKeyboardReport(); hid::sendKeyboardReport();
break; break;
case hostos::WINDOWS: case hostos::WINDOWS:
hid::pressRawKey(Key_RightAlt); hid::pressRawKey(Key_LeftAlt);
hid::sendKeyboardReport(); hid::sendKeyboardReport();
hid::releaseRawKey(Key_RightAlt); hid::pressRawKey(Key_KeypadAdd);
hid::sendKeyboardReport(); hid::sendKeyboardReport();
hid::pressRawKey(Key_U); hid::releaseRawKey(Key_KeypadAdd);
hid::sendKeyboardReport();
hid::releaseRawKey(Key_U);
hid::sendKeyboardReport(); hid::sendKeyboardReport();
break; break;
case hostos::OSX: case hostos::OSX:
@ -62,8 +60,8 @@ void Unicode::start(void) {
void Unicode::input(void) { void Unicode::input(void) {
switch (::HostOS.os()) { switch (::HostOS.os()) {
case hostos::LINUX: case hostos::LINUX:
case hostos::WINDOWS:
break; break;
case hostos::WINDOWS:
case hostos::OSX: case hostos::OSX:
hid::pressRawKey(Key_LeftAlt); hid::pressRawKey(Key_LeftAlt);
break; break;
@ -82,7 +80,6 @@ void Unicode::end(void) {
hid::sendKeyboardReport(); hid::sendKeyboardReport();
break; break;
case hostos::WINDOWS: case hostos::WINDOWS:
break;
case hostos::OSX: case hostos::OSX:
hid::releaseRawKey(Key_LeftAlt); hid::releaseRawKey(Key_LeftAlt);
hid::sendKeyboardReport(); hid::sendKeyboardReport();
@ -102,7 +99,12 @@ void Unicode::typeCode(uint32_t unicode) {
uint8_t digit = ((unicode >> (i * 4)) & 0xF); uint8_t digit = ((unicode >> (i * 4)) & 0xF);
if (digit == 0) { if (digit == 0) {
if (on_zero_start == false) { if (on_zero_start == false) {
Key key = hexToKey(digit); Key key;
if (::HostOS.os() == hostos::WINDOWS) {
key = hexToKeysWithNumpad(digit);
} else {
key = hexToKey(digit);
}
input(); input();
hid::pressRawKey(key); hid::pressRawKey(key);
hid::sendKeyboardReport(); hid::sendKeyboardReport();
@ -111,7 +113,12 @@ void Unicode::typeCode(uint32_t unicode) {
hid::sendKeyboardReport(); hid::sendKeyboardReport();
} }
} else { } else {
Key key = hexToKey(digit); Key key;
if (::HostOS.os() == hostos::WINDOWS) {
key = hexToKeysWithNumpad(digit);
} else {
key = hexToKey(digit);
}
input(); input();
hid::pressRawKey(key); hid::pressRawKey(key);
hid::sendKeyboardReport(); hid::sendKeyboardReport();
@ -145,6 +152,38 @@ __attribute__((weak)) Key hexToKey(uint8_t hex) {
return { m, KEY_FLAGS }; return { m, KEY_FLAGS };
} }
__attribute__((weak)) Key hexToKeysWithNumpad(uint8_t hex) {
uint8_t m;
if (hex == 0x0) {
return Key_Keypad0;
}
if (hex < 0xA) {
m = Key_Keypad1.keyCode + (hex - 0x1);
} else {
switch (hex) {
case 0xA:
m = Key_A.keyCode;
break;
case 0xB:
m = Key_B.keyCode;
break;
case 0xC:
m = Key_C.keyCode;
break;
case 0xD:
m = Key_D.keyCode;
break;
case 0xE:
m = Key_E.keyCode;
break;
case 0xF:
m = Key_F.keyCode;
break;
}
}
return { m, KEY_FLAGS };
}
__attribute__((weak)) void unicodeCustomStart(void) { __attribute__((weak)) void unicodeCustomStart(void) {
} }

@ -38,6 +38,7 @@ class Unicode : public KaleidoscopePlugin {
} }
Key hexToKey(uint8_t hex); Key hexToKey(uint8_t hex);
Key hexToKeysWithNumpad(uint8_t hex);
void unicodeCustomStart(void); void unicodeCustomStart(void);
void unicodeCustomEnd(void); void unicodeCustomEnd(void);

Loading…
Cancel
Save