make sure that characters sent from RGFW to mlton char callback are shifted if shift is held
This commit is contained in:
@@ -47,21 +47,6 @@ void keyCallback(RGFW_window* window, unsigned char key, unsigned char symbol, u
|
|||||||
mltonEnter();
|
mltonEnter();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RGFW_backtick:
|
|
||||||
case RGFW_0:
|
|
||||||
case RGFW_1:
|
|
||||||
case RGFW_2:
|
|
||||||
case RGFW_3:
|
|
||||||
case RGFW_4:
|
|
||||||
case RGFW_5:
|
|
||||||
case RGFW_6:
|
|
||||||
case RGFW_7:
|
|
||||||
case RGFW_8:
|
|
||||||
case RGFW_9:
|
|
||||||
case RGFW_minus:
|
|
||||||
case RGFW_equal:
|
|
||||||
case RGFW_tab:
|
|
||||||
case RGFW_space:
|
|
||||||
case RGFW_a:
|
case RGFW_a:
|
||||||
case RGFW_b:
|
case RGFW_b:
|
||||||
case RGFW_c:
|
case RGFW_c:
|
||||||
@@ -88,14 +73,6 @@ void keyCallback(RGFW_window* window, unsigned char key, unsigned char symbol, u
|
|||||||
case RGFW_x:
|
case RGFW_x:
|
||||||
case RGFW_y:
|
case RGFW_y:
|
||||||
case RGFW_z:
|
case RGFW_z:
|
||||||
case RGFW_period:
|
|
||||||
case RGFW_comma:
|
|
||||||
case RGFW_slash:
|
|
||||||
case RGFW_bracket:
|
|
||||||
case RGFW_closeBracket:
|
|
||||||
case RGFW_semicolon:
|
|
||||||
case RGFW_apostrophe:
|
|
||||||
case RGFW_backSlash:
|
|
||||||
if (keymod == RGFW_modShift) {
|
if (keymod == RGFW_modShift) {
|
||||||
mltonChar(toupper((char)key));
|
mltonChar(toupper((char)key));
|
||||||
break;
|
break;
|
||||||
@@ -103,7 +80,186 @@ void keyCallback(RGFW_window* window, unsigned char key, unsigned char symbol, u
|
|||||||
mltonChar((char)key);
|
mltonChar((char)key);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
// These two don't have "shifted versions"
|
||||||
|
// so no need to turn to upper case
|
||||||
|
case RGFW_tab:
|
||||||
|
case RGFW_space:
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Have to "shift" symbols manually
|
||||||
|
// because toupper(char) does not produce
|
||||||
|
// the desired character
|
||||||
|
case RGFW_backtick:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('~');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_0:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar(')');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_1:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('!');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_2:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('@');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_3:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('#');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_4:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('$');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_5:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('%');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_6:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('^');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_7:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('&');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_8:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('*');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_9:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('(');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_minus:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('_');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_equal:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('+');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_period:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('>');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_comma:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('<');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_slash:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('?');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_bracket:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('{');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_closeBracket:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('}');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_semicolon:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar(':');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_apostrophe:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('"');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RGFW_backSlash:
|
||||||
|
if (keymod == RGFW_modShift) {
|
||||||
|
mltonChar('|');
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
mltonChar((char)key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
4
todo.md
4
todo.md
@@ -1,5 +1,3 @@
|
|||||||
# To-do list
|
# To-do list
|
||||||
- Bind functions from RGFW (alternative back-end/window library) and have an option to use it
|
- Bind gamepad functions from GLFW and/or RGFW
|
||||||
- Added most callbacks, including char callbacks, but I need to change the C side of the char callbacks so that symbols like [ become shifted properly.
|
|
||||||
- Bind gamepad functions from GLFW
|
|
||||||
- Implement 'yj' motion and add tests for it
|
- Implement 'yj' motion and add tests for it
|
||||||
|
|||||||
Reference in New Issue
Block a user