key releases

This commit is contained in:
2026-02-15 21:35:47 +01:00
parent a62ecc6f0f
commit 6198850243
2 changed files with 18 additions and 1 deletions

View File

@@ -1066,6 +1066,10 @@ int main() {
double tickDelay = 0.05;
double tickClock = 0;
struct {int key; nn_codepoint unicode;} keybuf[512];
memset(keybuf, 0, sizeof(keybuf));
size_t keycap = sizeof(keybuf) / sizeof(keybuf[0]);
while(true) {
if(WindowShouldClose()) break;
@@ -1112,6 +1116,9 @@ int main() {
nn_codepoint unicode = GetCharPressed();
if(keycode == 0 && unicode == 0) break;
keybuf[keycode].key = keycode;
keybuf[keycode].unicode = unicode;
if(keycode != 0) {
if(keycode == KEY_ENTER) unicode = '\r';
@@ -1122,6 +1129,16 @@ int main() {
nn_pushKeyDown(c, "mainKB", unicode, keycode_to_oc(keycode), player);
}
for(size_t i = 0; i < keycap; i++) {
if(keybuf[i].key != 0) {
if(IsKeyReleased(keybuf[i].key)) {
int key = keycode_to_oc(keybuf[i].key);
keybuf[i].key = 0;
nn_pushKeyUp(c, "mainKB", keybuf[i].unicode, key, player);
}
}
}
tickClock -= GetFrameTime();
if(tickClock <= 0) {

View File

@@ -3640,7 +3640,7 @@ nn_Exit nn_pushKeyDown(nn_Computer *computer, const char *keyboardAddress, nn_co
nn_Exit nn_pushKeyUp(nn_Computer *computer, const char *keyboardAddress, nn_codepoint charcode, int keycode, const char *player) {
if(!nn_hasUser(computer, player)) return NN_OK;
nn_Exit err = nn_pushstring(computer, "key_down");
nn_Exit err = nn_pushstring(computer, "key_up");
if(err) return err;
err = nn_pushstring(computer, keyboardAddress);
if(err) return err;