# Copyright 2021 syzkaller project authors. All rights reserved. # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. include include include include resource fd_kbd[fd] openat$kbd(fd const[AT_FDCWD], file ptr[in, string["/dev/kbd"]], flags flags[open_flags], mode const[0]) fd_kbd ioctl$KDGKBMODE(fd fd_kbd, cmd const[KDGKBMODE], arg int32) ioctl$KDSKBMODE(fd fd_kbd, cmd const[KDSKBMODE]) ioctl$KDMKTONE(fd fd_kbd, cmd const[KDMKTONE]) ioctl$KDGETMODE(fd fd_kbd, cmd const[KDGETMODE], arg int32) ioctl$KDSETMODE(fd fd_kbd, cmd const[KDSETMODE]) ioctl$KDSBORDER(fd fd_kbd, cmd const[KDSBORDER]) ioctl$KDGKBSTATE(fd fd_kbd, cmd const[KDGKBSTATE], arg int32) ioctl$KDSKBSTATE(fd fd_kbd, cmd const[KDSKBSTATE]) ioctl$KDENABIO(fd fd_kbd, cmd const[KDENABIO]) ioctl$KDDISABIO(fd fd_kbd, cmd const[KDDISABIO]) ioctl$KIOCSOUND(fd fd_kbd, cmd const[KIOCSOUND]) ioctl$KDGKBTYPE(fd fd_kbd, cmd const[KDGKBTYPE], arg int32) ioctl$KDGETLED(fd fd_kbd, cmd const[KDGETLED], arg int32) ioctl$KDSETLED(fd fd_kbd, cmd const[KDSETLED]) ioctl$KDSETRAD(fd fd_kbd, cmd const[KDSETRAD]) ioctl$KBADDKBD(fd fd_kbd, cmd const[KBADDKBD], arg ptr[in, keyboard_info]) ioctl$KBRELKBD(fd fd_kbd, cmd const[KBRELKBD], arg ptr[in, keyboard_info]) ioctl$KDRASTER(fd fd_kbd, cmd const[KDRASTER], arg ptr[in, scr_size]) ioctl$KDGKBINFO(fd fd_kbd, cmd const[KDGKBINFO], arg ptr[out, keyboard_info]) ioctl$KDSETREPEAT(fd fd_kbd, cmd const[KDSETREPEAT], arg ptr[in, keyboard_repeat]) ioctl$KDGETREPEAT(fd fd_kbd, cmd const[KDGETREPEAT], arg ptr[out, keyboard_repeat]) ioctl$GETFKEY(fd fd_kbd, cmd const[GETFKEY], arg ptr[inout, fkeyarg]) ioctl$SETFKEY(fd fd_kbd, cmd const[SETFKEY], arg ptr[inout, fkeyarg]) ioctl$GIO_SCRNMAP(fd fd_kbd, cmd const[GIO_SCRNMAP], arg ptr[out, scrmap]) ioctl$PIO_SCRNMAP(fd fd_kbd, cmd const[PIO_SCRNMAP], arg ptr[in, scrmap]) ioctl$GIO_KEYMAP(fd fd_kbd, cmd const[GIO_KEYMAP]) ioctl$PIO_KEYMAP(fd fd_kbd, cmd const[PIO_KEYMAP]) ioctl$OGIO_KEYMAP(fd fd_kbd, cmd const[OGIO_KEYMAP], arg ptr[out, okeymap]) ioctl$OPIO_KEYMAP(fd fd_kbd, cmd const[OPIO_KEYMAP], arg ptr[in, okeymap]) ioctl$GIO_DEADKEYMAP(fd fd_kbd, cmd const[GIO_DEADKEYMAP], arg ptr[out, accentmap]) ioctl$PIO_DEADKEYMAP(fd fd_kbd, cmd const[PIO_DEADKEYMAP], arg ptr[in, accentmap]) ioctl$OGIO_DEADKEYMAP(fd fd_kbd, cmd const[OGIO_DEADKEYMAP], arg ptr[out, oaccentmap]) ioctl$OPIO_DEADKEYMAP(fd fd_kbd, cmd const[OPIO_DEADKEYMAP], arg ptr[in, oaccentmap]) ioctl$GIO_KEYMAPENT(fd fd_kbd, cmd const[GIO_KEYMAPENT], arg ptr[inout, keyarg]) ioctl$PIO_KEYMAPENT(fd fd_kbd, cmd const[PIO_KEYMAPENT], arg ptr[in, keyarg]) keyboard_info { kb_index int32 kb_name array[int8, MAXFK] kb_unit int32 kb_type int32 kb_config int32 kb_flags int32 } keyboard_repeat { kb_repeat array[int32, 2] } fkeyarg { keynum int16 keydef array[int8, MAXFK] flen int8 } okeymap { n_keys int16 key array[okeyent_t, NUM_KEYS] } okeyent_t { map array[int8, NUM_STATES] spcl flags[special_keys, int8] flgs int8 } accentmap { n_accs int16 acc array[acc_t, NUM_DEADKEYS] } acc_t { accchar int32 map array[int32, 104] } oaccentmap { n_accs int16 acc array[oacc_t, NUM_DEADKEYS] } oacc_t { accchar int8 map array[int8, 104] } keyarg { keynum int16 key keyent_t } keyent_t { map array[int32, NUM_STATES] spcl int8 flgs flags[keyent_flags, int8] } scrmap { scrmap array[int8, 256] } scr_size { scr_size array[int32, 3] } keyent_flags = FLAG_LOCK_O, FLAG_LOCK_C, FLAG_LOCK_N special_keys = NOP, LSH, RSH, CLK, NLK, SLK, LALT, BTAB, LCTR, NEXT, F_SCR, L_SCR, F_FN, L_FN, RCTR, RALT, ALK, ASH, META, RBT, DBG, SUSP, SPSC, F_ACC, DGRA, DACU, DCIR, DTIL, DMAC, DBRE, DDOT, DUML, DDIA, DSLA, DRIN, DCED, DAPO, DDAC, DOGO, DCAR, L_ACC, STBY, PREV, PNC, LSHA, RSHA, LCTRA, RCTRA, LALTA, RALTA, HALT, PDWN, PASTE