16f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2607ca46eSDavid Howells #ifndef _UAPI_LINUX_KD_H 3607ca46eSDavid Howells #define _UAPI_LINUX_KD_H 4607ca46eSDavid Howells #include <linux/types.h> 5607ca46eSDavid Howells #include <linux/compiler.h> 6607ca46eSDavid Howells 7607ca46eSDavid Howells /* 0x4B is 'K', to avoid collision with termios and vt */ 8607ca46eSDavid Howells 9607ca46eSDavid Howells #define GIO_FONT 0x4B60 /* gets font in expanded form */ 10607ca46eSDavid Howells #define PIO_FONT 0x4B61 /* use font in expanded form */ 11607ca46eSDavid Howells 12607ca46eSDavid Howells #define GIO_FONTX 0x4B6B /* get font using struct consolefontdesc */ 13607ca46eSDavid Howells #define PIO_FONTX 0x4B6C /* set font using struct consolefontdesc */ 14607ca46eSDavid Howells struct consolefontdesc { 15607ca46eSDavid Howells unsigned short charcount; /* characters in font (256 or 512) */ 16607ca46eSDavid Howells unsigned short charheight; /* scan lines per character (1-32) */ 17607ca46eSDavid Howells char __user *chardata; /* font data in expanded form */ 18607ca46eSDavid Howells }; 19607ca46eSDavid Howells 20607ca46eSDavid Howells #define PIO_FONTRESET 0x4B6D /* reset to default font */ 21607ca46eSDavid Howells 22607ca46eSDavid Howells #define GIO_CMAP 0x4B70 /* gets colour palette on VGA+ */ 23607ca46eSDavid Howells #define PIO_CMAP 0x4B71 /* sets colour palette on VGA+ */ 24607ca46eSDavid Howells 25607ca46eSDavid Howells #define KIOCSOUND 0x4B2F /* start sound generation (0 for off) */ 26607ca46eSDavid Howells #define KDMKTONE 0x4B30 /* generate tone */ 27607ca46eSDavid Howells 28607ca46eSDavid Howells #define KDGETLED 0x4B31 /* return current led state */ 29607ca46eSDavid Howells #define KDSETLED 0x4B32 /* set led state [lights, not flags] */ 30607ca46eSDavid Howells #define LED_SCR 0x01 /* scroll lock led */ 31607ca46eSDavid Howells #define LED_NUM 0x02 /* num lock led */ 32607ca46eSDavid Howells #define LED_CAP 0x04 /* caps lock led */ 33607ca46eSDavid Howells 34607ca46eSDavid Howells #define KDGKBTYPE 0x4B33 /* get keyboard type */ 35607ca46eSDavid Howells #define KB_84 0x01 36607ca46eSDavid Howells #define KB_101 0x02 /* this is what we always answer */ 37607ca46eSDavid Howells #define KB_OTHER 0x03 38607ca46eSDavid Howells 39607ca46eSDavid Howells #define KDADDIO 0x4B34 /* add i/o port as valid */ 40607ca46eSDavid Howells #define KDDELIO 0x4B35 /* del i/o port as valid */ 41607ca46eSDavid Howells #define KDENABIO 0x4B36 /* enable i/o to video board */ 42607ca46eSDavid Howells #define KDDISABIO 0x4B37 /* disable i/o to video board */ 43607ca46eSDavid Howells 44607ca46eSDavid Howells #define KDSETMODE 0x4B3A /* set text/graphics mode */ 45607ca46eSDavid Howells #define KD_TEXT 0x00 46607ca46eSDavid Howells #define KD_GRAPHICS 0x01 47607ca46eSDavid Howells #define KD_TEXT0 0x02 /* obsolete */ 48607ca46eSDavid Howells #define KD_TEXT1 0x03 /* obsolete */ 49607ca46eSDavid Howells #define KDGETMODE 0x4B3B /* get current mode */ 50607ca46eSDavid Howells 51607ca46eSDavid Howells #define KDMAPDISP 0x4B3C /* map display into address space */ 52607ca46eSDavid Howells #define KDUNMAPDISP 0x4B3D /* unmap display from address space */ 53607ca46eSDavid Howells 54607ca46eSDavid Howells typedef char scrnmap_t; 55607ca46eSDavid Howells #define E_TABSZ 256 56607ca46eSDavid Howells #define GIO_SCRNMAP 0x4B40 /* get screen mapping from kernel */ 57607ca46eSDavid Howells #define PIO_SCRNMAP 0x4B41 /* put screen mapping table in kernel */ 58607ca46eSDavid Howells #define GIO_UNISCRNMAP 0x4B69 /* get full Unicode screen mapping */ 59607ca46eSDavid Howells #define PIO_UNISCRNMAP 0x4B6A /* set full Unicode screen mapping */ 60607ca46eSDavid Howells 61607ca46eSDavid Howells #define GIO_UNIMAP 0x4B66 /* get unicode-to-font mapping from kernel */ 62607ca46eSDavid Howells struct unipair { 63607ca46eSDavid Howells unsigned short unicode; 64607ca46eSDavid Howells unsigned short fontpos; 65607ca46eSDavid Howells }; 66607ca46eSDavid Howells struct unimapdesc { 67607ca46eSDavid Howells unsigned short entry_ct; 68607ca46eSDavid Howells struct unipair __user *entries; 69607ca46eSDavid Howells }; 70607ca46eSDavid Howells #define PIO_UNIMAP 0x4B67 /* put unicode-to-font mapping in kernel */ 71607ca46eSDavid Howells #define PIO_UNIMAPCLR 0x4B68 /* clear table, possibly advise hash algorithm */ 72607ca46eSDavid Howells struct unimapinit { 73607ca46eSDavid Howells unsigned short advised_hashsize; /* 0 if no opinion */ 74607ca46eSDavid Howells unsigned short advised_hashstep; /* 0 if no opinion */ 75607ca46eSDavid Howells unsigned short advised_hashlevel; /* 0 if no opinion */ 76607ca46eSDavid Howells }; 77607ca46eSDavid Howells 78607ca46eSDavid Howells #define UNI_DIRECT_BASE 0xF000 /* start of Direct Font Region */ 79607ca46eSDavid Howells #define UNI_DIRECT_MASK 0x01FF /* Direct Font Region bitmask */ 80607ca46eSDavid Howells 81607ca46eSDavid Howells #define K_RAW 0x00 82607ca46eSDavid Howells #define K_XLATE 0x01 83607ca46eSDavid Howells #define K_MEDIUMRAW 0x02 84607ca46eSDavid Howells #define K_UNICODE 0x03 85607ca46eSDavid Howells #define K_OFF 0x04 86607ca46eSDavid Howells #define KDGKBMODE 0x4B44 /* gets current keyboard mode */ 87607ca46eSDavid Howells #define KDSKBMODE 0x4B45 /* sets current keyboard mode */ 88607ca46eSDavid Howells 89607ca46eSDavid Howells #define K_METABIT 0x03 90607ca46eSDavid Howells #define K_ESCPREFIX 0x04 91607ca46eSDavid Howells #define KDGKBMETA 0x4B62 /* gets meta key handling mode */ 92607ca46eSDavid Howells #define KDSKBMETA 0x4B63 /* sets meta key handling mode */ 93607ca46eSDavid Howells 94607ca46eSDavid Howells #define K_SCROLLLOCK 0x01 95607ca46eSDavid Howells #define K_NUMLOCK 0x02 96607ca46eSDavid Howells #define K_CAPSLOCK 0x04 97607ca46eSDavid Howells #define KDGKBLED 0x4B64 /* get led flags (not lights) */ 98607ca46eSDavid Howells #define KDSKBLED 0x4B65 /* set led flags (not lights) */ 99607ca46eSDavid Howells 100607ca46eSDavid Howells struct kbentry { 101607ca46eSDavid Howells unsigned char kb_table; 102607ca46eSDavid Howells unsigned char kb_index; 103607ca46eSDavid Howells unsigned short kb_value; 104607ca46eSDavid Howells }; 105607ca46eSDavid Howells #define K_NORMTAB 0x00 106607ca46eSDavid Howells #define K_SHIFTTAB 0x01 107607ca46eSDavid Howells #define K_ALTTAB 0x02 108607ca46eSDavid Howells #define K_ALTSHIFTTAB 0x03 109607ca46eSDavid Howells 110607ca46eSDavid Howells #define KDGKBENT 0x4B46 /* gets one entry in translation table */ 111607ca46eSDavid Howells #define KDSKBENT 0x4B47 /* sets one entry in translation table */ 112607ca46eSDavid Howells 113607ca46eSDavid Howells struct kbsentry { 114607ca46eSDavid Howells unsigned char kb_func; 115607ca46eSDavid Howells unsigned char kb_string[512]; 116607ca46eSDavid Howells }; 117607ca46eSDavid Howells #define KDGKBSENT 0x4B48 /* gets one function key string entry */ 118607ca46eSDavid Howells #define KDSKBSENT 0x4B49 /* sets one function key string entry */ 119607ca46eSDavid Howells 120607ca46eSDavid Howells struct kbdiacr { 121607ca46eSDavid Howells unsigned char diacr, base, result; 122607ca46eSDavid Howells }; 123607ca46eSDavid Howells struct kbdiacrs { 124607ca46eSDavid Howells unsigned int kb_cnt; /* number of entries in following array */ 125607ca46eSDavid Howells struct kbdiacr kbdiacr[256]; /* MAX_DIACR from keyboard.h */ 126607ca46eSDavid Howells }; 127607ca46eSDavid Howells #define KDGKBDIACR 0x4B4A /* read kernel accent table */ 128607ca46eSDavid Howells #define KDSKBDIACR 0x4B4B /* write kernel accent table */ 129607ca46eSDavid Howells 130607ca46eSDavid Howells struct kbdiacruc { 131607ca46eSDavid Howells unsigned int diacr, base, result; 132607ca46eSDavid Howells }; 133607ca46eSDavid Howells struct kbdiacrsuc { 134607ca46eSDavid Howells unsigned int kb_cnt; /* number of entries in following array */ 135607ca46eSDavid Howells struct kbdiacruc kbdiacruc[256]; /* MAX_DIACR from keyboard.h */ 136607ca46eSDavid Howells }; 137607ca46eSDavid Howells #define KDGKBDIACRUC 0x4BFA /* read kernel accent table - UCS */ 138607ca46eSDavid Howells #define KDSKBDIACRUC 0x4BFB /* write kernel accent table - UCS */ 139607ca46eSDavid Howells 140607ca46eSDavid Howells struct kbkeycode { 141607ca46eSDavid Howells unsigned int scancode, keycode; 142607ca46eSDavid Howells }; 143607ca46eSDavid Howells #define KDGETKEYCODE 0x4B4C /* read kernel keycode table entry */ 144607ca46eSDavid Howells #define KDSETKEYCODE 0x4B4D /* write kernel keycode table entry */ 145607ca46eSDavid Howells 146607ca46eSDavid Howells #define KDSIGACCEPT 0x4B4E /* accept kbd generated signals */ 147607ca46eSDavid Howells 148607ca46eSDavid Howells struct kbd_repeat { 149607ca46eSDavid Howells int delay; /* in msec; <= 0: don't change */ 150607ca46eSDavid Howells int period; /* in msec; <= 0: don't change */ 151607ca46eSDavid Howells /* earlier this field was misnamed "rate" */ 152607ca46eSDavid Howells }; 153607ca46eSDavid Howells 154607ca46eSDavid Howells #define KDKBDREP 0x4B52 /* set keyboard delay/repeat rate; 155607ca46eSDavid Howells * actually used values are returned */ 156607ca46eSDavid Howells 157607ca46eSDavid Howells #define KDFONTOP 0x4B72 /* font operations */ 158607ca46eSDavid Howells 159607ca46eSDavid Howells struct console_font_op { 160607ca46eSDavid Howells unsigned int op; /* operation code KD_FONT_OP_* */ 161607ca46eSDavid Howells unsigned int flags; /* KD_FONT_FLAG_* */ 162607ca46eSDavid Howells unsigned int width, height; /* font size */ 163607ca46eSDavid Howells unsigned int charcount; 164*24d69384SSamuel Thibault unsigned char __user *data; /* font data with vpitch fixed to 32 for 165*24d69384SSamuel Thibault * KD_FONT_OP_SET/GET 166*24d69384SSamuel Thibault */ 167607ca46eSDavid Howells }; 168607ca46eSDavid Howells 169607ca46eSDavid Howells struct console_font { 170607ca46eSDavid Howells unsigned int width, height; /* font size */ 171607ca46eSDavid Howells unsigned int charcount; 172*24d69384SSamuel Thibault unsigned char *data; /* font data with vpitch fixed to 32 for 173*24d69384SSamuel Thibault * KD_FONT_OP_SET/GET 174*24d69384SSamuel Thibault */ 175607ca46eSDavid Howells }; 176607ca46eSDavid Howells 177607ca46eSDavid Howells #define KD_FONT_OP_SET 0 /* Set font */ 178607ca46eSDavid Howells #define KD_FONT_OP_GET 1 /* Get font */ 179607ca46eSDavid Howells #define KD_FONT_OP_SET_DEFAULT 2 /* Set font to default, data points to name / NULL */ 1807a089ec7SPeilin Ye #define KD_FONT_OP_COPY 3 /* Obsolete, do not use */ 181*24d69384SSamuel Thibault #define KD_FONT_OP_SET_TALL 4 /* Set font with vpitch = height */ 182*24d69384SSamuel Thibault #define KD_FONT_OP_GET_TALL 5 /* Get font with vpitch = height */ 183607ca46eSDavid Howells 184607ca46eSDavid Howells #define KD_FONT_FLAG_DONT_RECALC 1 /* Don't recalculate hw charcell size [compat] */ 185607ca46eSDavid Howells 186607ca46eSDavid Howells /* note: 0x4B00-0x4B4E all have had a value at some time; 187607ca46eSDavid Howells don't reuse for the time being */ 188607ca46eSDavid Howells /* note: 0x4B60-0x4B6D, 0x4B70-0x4B72 used above */ 189607ca46eSDavid Howells 190607ca46eSDavid Howells #endif /* _UAPI_LINUX_KD_H */ 191