summaryrefslogtreecommitdiff
path: root/usb_keyboard.h
blob: e989700c99d9d87ac4e9c066432dea38fed9a3e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* usb_keyboard.h - Implementation of a USB keyboard device
 *
 * Copyright (C) 2024  Luke T. Shumaker <lukeshu@lukeshu.com>
 * SPDX-Licence-Identifier: AGPL-3.0-or-later
 */

#ifndef _USB_KEYBOARD_H_
#define _USB_KEYBOARD_H_

#include "coroutine.h"

typedef cr_chan_t(uint32_t, int) usb_keyboard_chan_t;

typedef struct {
	usb_keyboard_chan_t *chan;
	uint32_t             rune;
	uint8_t              report_id;
	uint8_t              modifier;
	uint8_t              keycodes[0];
} usb_keyboard_stack_t;

void usb_keyboard_init(void);
void usb_keyboard_cr(void *stack);

#endif /* _USB_KEYBOARD_H_ */