mirror of
https://gitlab.com/sortix/sortix.git
synced 2023-02-13 20:55:38 -05:00
611dc22e73
This change makes all the standard library and kernel headers use header guards with a consistent scheme within the reserved namespace to avoid conflicts with non-standard-library-implementation code.
163 lines
4.6 KiB
C
163 lines
4.6 KiB
C
/*
|
|
* Copyright (c) 2012 Jonas 'Sortie' Termansen.
|
|
*
|
|
* Permission to use, copy, modify, and distribute this software for any
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
* copyright notice and this permission notice appear in all copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
*
|
|
* sortix/keycodes.h
|
|
* Defines codes for every logical key on keyboards.
|
|
*/
|
|
|
|
#ifndef _INCLUDE_SORTIX_KEYCODES_H
|
|
#define _INCLUDE_SORTIX_KEYCODES_H
|
|
|
|
/* Each of these keycodes corrospond to a logical key on a keyboard. Code
|
|
reading logical keystrokes from the keyboard will receive a code from this
|
|
list when the key is pressed, and a negative version of the same key when it
|
|
is released by the user. */
|
|
|
|
#define KBKEY_ESC 0x01
|
|
#define KBKEY_NUM1 0x02
|
|
#define KBKEY_NUM2 0x03
|
|
#define KBKEY_NUM3 0x04
|
|
#define KBKEY_NUM4 0x05
|
|
#define KBKEY_NUM5 0x06
|
|
#define KBKEY_NUM6 0x07
|
|
#define KBKEY_NUM7 0x08
|
|
#define KBKEY_NUM8 0x09
|
|
#define KBKEY_NUM9 0x0A
|
|
#define KBKEY_NUM0 0x0B
|
|
#define KBKEY_SYM1 0x0C
|
|
#define KBKEY_SYM2 0x0D
|
|
#define KBKEY_BKSPC 0x0E
|
|
#define KBKEY_TAB 0x0F
|
|
#define KBKEY_Q 0x10
|
|
#define KBKEY_W 0x11
|
|
#define KBKEY_E 0x12
|
|
#define KBKEY_R 0x13
|
|
#define KBKEY_T 0x14
|
|
#define KBKEY_Y 0x15
|
|
#define KBKEY_U 0x16
|
|
#define KBKEY_I 0x17
|
|
#define KBKEY_O 0x18
|
|
#define KBKEY_P 0x19
|
|
#define KBKEY_SYM3 0x1A
|
|
#define KBKEY_SYM4 0x1B
|
|
#define KBKEY_ENTER 0x1C
|
|
#define KBKEY_LCTRL 0x1D
|
|
#define KBKEY_A 0x1E
|
|
#define KBKEY_S 0x1F
|
|
#define KBKEY_D 0x20
|
|
#define KBKEY_F 0x21
|
|
#define KBKEY_G 0x22
|
|
#define KBKEY_H 0x23
|
|
#define KBKEY_J 0x24
|
|
#define KBKEY_K 0x25
|
|
#define KBKEY_L 0x26
|
|
#define KBKEY_SYM5 0x27
|
|
#define KBKEY_SYM6 0x28
|
|
#define KBKEY_SYM7 0x29
|
|
#define KBKEY_LSHIFT 0x2A
|
|
#define KBKEY_SYM8 0x2B
|
|
#define KBKEY_Z 0x2C
|
|
#define KBKEY_X 0x2D
|
|
#define KBKEY_C 0x2E
|
|
#define KBKEY_V 0x2F
|
|
#define KBKEY_B 0x30
|
|
#define KBKEY_N 0x31
|
|
#define KBKEY_M 0x32
|
|
#define KBKEY_SYM9 0x33
|
|
#define KBKEY_SYM10 0x34
|
|
#define KBKEY_SYM11 0x35
|
|
#define KBKEY_RSHIFT 0x36
|
|
#define KBKEY_SYM12 0x37
|
|
#define KBKEY_LALT 0x38
|
|
#define KBKEY_SPACE 0x39
|
|
#define KBKEY_CAPSLOCK 0x3A
|
|
#define KBKEY_F1 0x3B
|
|
#define KBKEY_F2 0x3C
|
|
#define KBKEY_F3 0x3D
|
|
#define KBKEY_F4 0x3E
|
|
#define KBKEY_F5 0x3F
|
|
#define KBKEY_F6 0x40
|
|
#define KBKEY_F7 0x41
|
|
#define KBKEY_F8 0x42
|
|
#define KBKEY_F9 0x43
|
|
#define KBKEY_F10 0x44
|
|
#define KBKEY_NUMLOCK 0x45
|
|
#define KBKEY_SCROLLLOCK 0x46
|
|
#define KBKEY_KPAD7 0x47
|
|
#define KBKEY_KPAD8 0x48
|
|
#define KBKEY_KPAD9 0x49
|
|
#define KBKEY_SYM13 0x4A
|
|
#define KBKEY_KPAD4 0x4B
|
|
#define KBKEY_KPAD5 0x4C
|
|
#define KBKEY_KPAD6 0x4D
|
|
#define KBKEY_SYM14 0x4E
|
|
#define KBKEY_KPAD1 0x4F
|
|
#define KBKEY_KPAD2 0x50
|
|
#define KBKEY_KPAD3 0x51
|
|
#define KBKEY_KPAD0 0x52
|
|
#define KBKEY_SYM15 0x53
|
|
#define KBKEY_ALTSYSRQ 0x54
|
|
#define KBKEY_NO_STANDARD_MEANING_1 0x55 /* Sometimes F11, F12, or even FN */
|
|
#define KBKEY_NO_STANDARD_MEANING_2 0x56 /* Possibly Windows key? */
|
|
#define KBKEY_F11 0x57
|
|
#define KBKEY_F12 0x58
|
|
/* [0x59, 0x7F] are not really standard. */
|
|
#define KBKEY_KPADENTER (0x80 + 0x1C)
|
|
#define KBKEY_RCTRL (0x80 + 0x1D)
|
|
#define KBKEY_FAKELSHIFT (0x80 + 0x2A)
|
|
#define KBKEY_SYM16 (0x80 + 0x35)
|
|
#define KBKEY_FAKERSHIFT (0x80 + 0x36)
|
|
#define KBKEY_CTRLPRINTSCRN (0x80 + 0x37)
|
|
#define KBKEY_RALT (0x80 + 0x38)
|
|
#define KBKEY_CTRLBREAK (0x80 + 0x46)
|
|
#define KBKEY_HOME (0x80 + 0x47)
|
|
#define KBKEY_UP (0x80 + 0x48)
|
|
#define KBKEY_PGUP (0x80 + 0x49)
|
|
#define KBKEY_LEFT (0x80 + 0x4B)
|
|
#define KBKEY_RIGHT (0x80 + 0x4D)
|
|
#define KBKEY_END (0x80 + 0x4F)
|
|
#define KBKEY_DOWN (0x80 + 0x50)
|
|
#define KBKEY_PGDOWN (0x80 + 0x51)
|
|
#define KBKEY_INSERT (0x80 + 0x52)
|
|
#define KBKEY_DELETE (0x80 + 0x53)
|
|
#define KBKEY_LSUPER (0x80 + 0x5B)
|
|
#define KBKEY_RSUPER (0x80 + 0x5C)
|
|
#define KBKEY_MENU (0x80 + 0x5D)
|
|
|
|
#define KBKEY_ENCODE(_kbkey) \
|
|
({ \
|
|
int __kbkey = (_kbkey); \
|
|
uint32_t __codepoint = (1U<<30U) | ((unsigned) __kbkey); \
|
|
__codepoint &= ~(1U<<31U); \
|
|
__codepoint; \
|
|
})
|
|
|
|
#define KBKEY_DECODE(_codepoint) \
|
|
({ \
|
|
struct { union { int __kbkey; uint32_t __codepoint; }; } __u; \
|
|
__u.__codepoint = (_codepoint); \
|
|
if ( __u.__codepoint & (1U<<30U) ) \
|
|
{ \
|
|
if ( __u.__codepoint & (1U<<29U) ) { __u.__codepoint |= (1U<<31U); } \
|
|
else { __u.__codepoint &= ~(1U<<30U); } \
|
|
} \
|
|
else \
|
|
{ \
|
|
__u.__codepoint = 0U; \
|
|
} \
|
|
__u.__kbkey; \
|
|
})
|
|
|
|
#endif
|