case CIAASDR:
if (buffer_len == 0)
return 0xffff;
- value = buffer[--buffer_len];
- /* rotate and negate */
- value = ~ROL(value);
+ value = buffer[0];
#ifdef DEBUG_KEYS
- printf("sending key code %02x\n", buffer[buffer_len]);
+ printf("sending amiga code 0x%02x\n", value);
#endif
+ /* rotate and negate */
+ value = ~ROL(value);
+ /* remove first entry from buffer */
+ buffer_len--;
for (i = 0; i < buffer_len; i++)
buffer[i] = buffer[i + 1];
return 0xff00 | value;
return 0xffff;
}
+/* schedule given key to queue,
+ * down == 0: up
+ * down == 1: down
+ */
void set_amiga_key(enum keycode key, int down)
{
int code = -1, isdown;
}
if (code < 0 || code >= 0x80) {
#ifdef DEBUG_KEYS
- printf("Key code '%d' unknown, please fix!\n", key);
+ printf("Key code '%d' unknown, ignoring!\n", key);
#endif
return;
}
}
if (buffer_len == buffer_size) {
- print_error("keyboard buffer overflow\n");
+ print_info("keyboard buffer overflow\n");
return;
}
buffer[buffer_len++] = code;
#ifdef DEBUG_KEYS
- printf("Converting key '%s' to code 0x%02x\n", key, code);
+ printf("Converting keycode %d to amiga code 0x%02x\n", key, code);
#endif
}