]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Ignore next key release support.
authorToni Wilen <twilen@winuae.net>
Sat, 15 Feb 2020 08:32:16 +0000 (10:32 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 15 Feb 2020 08:32:16 +0000 (10:32 +0200)
include/keybuf.h
keybuf.cpp

index 5c47174f7b5bc932630a36854c5e922f55f58182..01f629f0a87a39b71d5b4042e53ba89a924b1c3f 100644 (file)
@@ -18,5 +18,6 @@ extern void keybuf_init (void);
 extern int getcapslockstate (void);
 extern void setcapslockstate (int);
 extern void keybuf_inject(const uae_char*);
+extern void keybuf_ignore_next_release(void);
 
 #endif /* UAE_KEYBUF_H */
index c637cc242ce0efa0b44a4bc19b1cd6ce1a502c44..8777802337582089ac7872c0c8a63699715c625d 100644 (file)
@@ -32,6 +32,7 @@ static int keyinject_offset;
 static uae_u8 keyinject_previous;
 static bool keyinject_state;
 static bool keyinject_do;
+static bool ignore_next_release;
 
 struct kbtab
 {
@@ -252,8 +253,16 @@ int record_key (int kc)
 int record_key_direct (int kc)
 {
        int kpb_next = kpb_first + 1;
+       int kcd = (kc << 7) | (kc >> 1);
 
-       //write_log (_T("got kc %02X\n"), ((kc << 7) | (kc >> 1)) & 0xff);
+       if (ignore_next_release) {
+               ignore_next_release = false;
+               if (kcd & 0x80) {
+                       return 0;
+               }
+       }
+
+       //write_log (_T("got kc %02X\n"), kcd & 0xff);
        if (kpb_next == KEYBUF_SIZE)
                kpb_next = 0;
        if (kpb_next == kpb_last) {
@@ -274,6 +283,11 @@ void keybuf_init (void)
        inputdevice_updateconfig (&changed_prefs, &currprefs);
 }
 
+void keybuf_ignore_next_release(void)
+{
+       ignore_next_release = true;
+}
+
 void keybuf_inject(const uae_char *txt)
 {
        uae_char *newbuf = xmalloc(uae_char, strlen(txt) + 1);