ref: b46505a62403be64f0e8bcf4d02503273f7cd8cc
parent: 91bd4afbfba948539be7f5586140d94437194ad1
author: Michael Misch <michaelmisch1985@gmail.com>
date: Mon Sep 7 18:40:40 PDT 2020
Clean slate, we're going to be writing libdraw functionality as a library that we use, instead of plan9port
--- a/keymap.h
+++ /dev/null
@@ -1,560 +1,0 @@
-/* the key names define come from xwin/winkeynames.h, hence the NOTICE */
-
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Thomas Roell not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Roell makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, 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.
- *
- */
-
-#define MAP_WIDTH 4
-#define NUM_KEYCODES 248
-#define MIN_KEYCODE 8
-#define MAX_KEYCODE (NUM_KEYCODES + MIN_KEYCODE-1)
-
-/*
- * definition of the AT84/MF101/MF102 Keyboard:
- * ============================================================
- * Defined Key Cap Glyphs Pressed value
- * Key Name Main Also (hex) (dec)
- * ---------------- ---------- ------- ------ ------
- */
-
-#define KEY_Escape 1
-#define KEY_1 2
-#define KEY_2 3
-#define KEY_3 4
-#define KEY_4 5
-#define KEY_5 6
-#define KEY_6 7
-#define KEY_7 8
-#define KEY_8 9
-#define KEY_9 10
-#define KEY_0 11
-#define KEY_Minus 12
-#define KEY_Equal 13
-#define KEY_BackSpace 14
-#define KEY_Tab 15
-#define KEY_Q 16
-#define KEY_W 17
-#define KEY_E 18
-#define KEY_R 19
-#define KEY_T 20
-#define KEY_Y 21
-#define KEY_U 22
-#define KEY_I 23
-#define KEY_O 24
-#define KEY_P 25
-#define KEY_LBrace 26
-#define KEY_RBrace 27
-#define KEY_Enter 28
-#define KEY_LCtrl 29
-#define KEY_A 30
-#define KEY_S 31
-#define KEY_D 32
-#define KEY_F 33
-#define KEY_G 34
-#define KEY_H 35
-#define KEY_J 36
-#define KEY_K 37
-#define KEY_L 38
-#define KEY_SemiColon 39
-#define KEY_Quote 40
-#define KEY_Tilde 41
-#define KEY_ShiftL 42
-#define KEY_BSlash 43
-#define KEY_Z 44
-#define KEY_X 45
-#define KEY_C 46
-#define KEY_V 47
-#define KEY_B 48
-#define KEY_N 49
-#define KEY_M 50
-#define KEY_Comma 51
-#define KEY_Period 52
-#define KEY_Slash 53
-#define KEY_ShiftR 54
-#define KEY_KP_Multiply 55
-#define KEY_Alt 56
-#define KEY_Space 57
-#define KEY_CapsLock 58
-#define KEY_F1 59
-#define KEY_F2 60
-#define KEY_F3 61
-#define KEY_F4 62
-#define KEY_F5 63
-#define KEY_F6 64
-#define KEY_F7 65
-#define KEY_F8 66
-#define KEY_F9 67
-#define KEY_F10 68
-#define KEY_NumLock 69
-#define KEY_ScrollLock 70
-#define KEY_KP_7 71
-#define KEY_KP_8 72
-#define KEY_KP_9 73
-#define KEY_KP_Minus 74
-#define KEY_KP_4 75
-#define KEY_KP_5 76
-#define KEY_KP_6 77
-#define KEY_KP_Plus 78
-#define KEY_KP_1 79
-#define KEY_KP_2 80
-#define KEY_KP_3 81
-#define KEY_KP_0 82
-#define KEY_KP_Decimal 83
-#define KEY_SysReqest 84
-/* NOTUSED 0x55 */
-#define KEY_Less 86
-#define KEY_F11 87
-#define KEY_F12 88
-
-#define KEY_Prefix0 96
-#define KEY_Prefix1 97
-
-/*
- * The 'scancodes' below are generated by the server, because the MF101/102
- * keyboard sends them as sequence of other scancodes
- */
-#define KEY_Home 89
-#define KEY_Up 90
-#define KEY_PgUp 91
-#define KEY_Left 92
-#define KEY_Begin 93
-#define KEY_Right 94
-#define KEY_End 95
-#define KEY_Down 96
-#define KEY_PgDown 97
-#define KEY_Insert 98
-#define KEY_Delete 99
-#define KEY_KP_Enter 100
-#define KEY_RCtrl 101
-#define KEY_Pause 102
-#define KEY_Print 103
-#define KEY_KP_Divide 104
-#define KEY_AltLang 105
-#define KEY_Break 106
-#define KEY_LMeta 107
-#define KEY_RMeta 108
-#define KEY_Menu 109
-#define KEY_F13 110
-#define KEY_F14 111
-#define KEY_F15 112
-#define KEY_F16 113
-#define KEY_F17 114
-#define KEY_KP_DEC 115
-#define KEY_KP_Equal 118
-#define KEY_XFER 121
-#define KEY_NFER 123
-#define KEY_Yen 125
-#define KEY_HKTG 200
-#define KEY_BSlash2 203
-
-struct{
- unsigned char key, mod;
-}rune2keycode[] = {
- {KEY_Delete, KEY_ShiftL},
- {KEY_A, KEY_LCtrl},
- {KEY_B, KEY_LCtrl}, /* 0x002 */
- {KEY_C, KEY_LCtrl}, /* 0x003 */
- {KEY_D, KEY_LCtrl}, /* 0x004 */
- {KEY_E, KEY_LCtrl}, /* 0x005 */
- {KEY_F, KEY_LCtrl}, /* 0x006 */
- {KEY_G, KEY_LCtrl}, /* 0x007 */
- {KEY_BackSpace, 0}, /* 0x008 */
- {KEY_Tab, 0}, /* 0x009 */
- {KEY_Enter, 0}, /* 0x00a */
- {KEY_K, KEY_LCtrl}, /* 0x00b */
- {KEY_L, KEY_LCtrl}, /* 0x00c */
- {KEY_M, KEY_LCtrl}, /* 0x00d */
- {KEY_N, KEY_LCtrl}, /* 0x00e */
- {KEY_O, KEY_LCtrl}, /* 0x00f */
- {KEY_P, KEY_LCtrl}, /* 0x010 */
- {KEY_Q, KEY_LCtrl}, /* 0x011 */
- {KEY_R, KEY_LCtrl}, /* 0x012 */
- {KEY_S, KEY_LCtrl}, /* 0x013 */
- {KEY_T, KEY_LCtrl}, /* 0x014 */
- {KEY_U, KEY_LCtrl}, /* 0x015 */
- {KEY_V, KEY_LCtrl}, /* 0x016 */
- {KEY_W, KEY_LCtrl}, /* 0x017 */
- {KEY_X, KEY_LCtrl}, /* 0x018 */
- {KEY_Y, KEY_LCtrl}, /* 0x019 */
- {KEY_Z, KEY_LCtrl}, /* 0x01a */
- {KEY_Escape, 0}, /* 0x01b */
- {KEY_BSlash, KEY_LCtrl}, /* 0x01c */
- {KEY_RBrace, KEY_LCtrl}, /* 0x01d */
- {KEY_Period, KEY_LCtrl}, /* 0x01e */
- {KEY_Slash, KEY_LCtrl},
- {KEY_Space, 0},
- {KEY_1, KEY_ShiftL}, /* 0x021 */
- {KEY_Quote, KEY_ShiftL}, /* 0x022 */
- {KEY_3, KEY_ShiftL}, /* 0x023 */
- {KEY_4, KEY_ShiftL}, /* 0x024 */
- {KEY_5, KEY_ShiftL}, /* 0x025 */
- {KEY_7, KEY_ShiftL}, /* 0x026 */
- {KEY_Quote, 0}, /* 0x027 */
- {KEY_9, KEY_ShiftL}, /* 0x028 */
- {KEY_0, KEY_ShiftL}, /* 0x029 */
- {KEY_8, KEY_ShiftL}, /* 0x02a */
- {KEY_Equal, KEY_ShiftL}, /* 0x02b */
- {KEY_Comma, 0}, /* 0x02c */
- {KEY_KP_Minus, 0}, /* 0x02d */
- {KEY_Period, 0}, /* 0x02e */
- {KEY_Slash, 0}, /* 0x02f */
- {KEY_0, 0}, /* 0x030 */
- {KEY_1, 0}, /* 0x031 */
- {KEY_2, 0}, /* 0x032 */
- {KEY_3, 0}, /* 0x033 */
- {KEY_4, 0}, /* 0x034 */
- {KEY_5, 0}, /* 0x035 */
- {KEY_6, 0}, /* 0x036 */
- {KEY_7, 0}, /* 0x037 */
- {KEY_8, 0}, /* 0x038 */
- {KEY_9, 0}, /* 0x039 */
- {KEY_SemiColon, KEY_ShiftL}, /* 0x03a */
- {KEY_SemiColon, 0}, /* 0x03b */
- {KEY_Comma, KEY_ShiftL}, /* 0x03c */
- {KEY_Equal, 0}, /* 0x03d */
- {KEY_Period, KEY_ShiftL}, /* 0x03e */
- {KEY_Slash, KEY_ShiftL}, /* 0x03f */
- {KEY_2, KEY_ShiftL}, /* 0x040 */
- {KEY_A, KEY_ShiftL}, /* 0x041 */
- {KEY_B, KEY_ShiftL}, /* 0x042 */
- {KEY_C, KEY_ShiftL}, /* 0x043 */
- {KEY_D, KEY_ShiftL}, /* 0x044 */
- {KEY_E, KEY_ShiftL}, /* 0x045 */
- {KEY_F, KEY_ShiftL}, /* 0x046 */
- {KEY_G, KEY_ShiftL}, /* 0x047 */
- {KEY_H, KEY_ShiftL}, /* 0x048 */
- {KEY_I, KEY_ShiftL}, /* 0x049 */
- {KEY_J, KEY_ShiftL}, /* 0x04a */
- {KEY_K, KEY_ShiftL}, /* 0x04b */
- {KEY_L, KEY_ShiftL}, /* 0x04c */
- {KEY_M, KEY_ShiftL}, /* 0x04d */
- {KEY_N, KEY_ShiftL}, /* 0x04e */
- {KEY_O, KEY_ShiftL}, /* 0x04f */
- {KEY_P, KEY_ShiftL}, /* 0x050 */
- {KEY_Q, KEY_ShiftL}, /* 0x051 */
- {KEY_R, KEY_ShiftL}, /* 0x052 */
- {KEY_S, KEY_ShiftL}, /* 0x053 */
- {KEY_T, KEY_ShiftL}, /* 0x054 */
- {KEY_U, KEY_ShiftL}, /* 0x055 */
- {KEY_V, KEY_ShiftL}, /* 0x056 */
- {KEY_W, KEY_ShiftL}, /* 0x057 */
- {KEY_X, KEY_ShiftL}, /* 0x058 */
- {KEY_Y, KEY_ShiftL}, /* 0x059 */
- {KEY_Z, KEY_ShiftL}, /* 0x05a */
- {KEY_LBrace, 0}, /* 0x05b */
- {KEY_BSlash, 0}, /* 0x05c */
- {KEY_RBrace, 0}, /* 0x05d */
- {KEY_6, KEY_ShiftL}, /* 0x05e */
- {KEY_Minus, KEY_ShiftL}, /* 0x05f */
- {KEY_Tilde, 0}, /* 0x060 */
- {KEY_A, 0}, /* 0x061 */
- {KEY_B, 0}, /* 0x062 */
- {KEY_C, 0}, /* 0x063 */
- {KEY_D, 0}, /* 0x064 */
- {KEY_E, 0}, /* 0x065 */
- {KEY_F, 0}, /* 0x066 */
- {KEY_G, 0}, /* 0x067 */
- {KEY_H, 0}, /* 0x068 */
- {KEY_I, 0}, /* 0x069 */
- {KEY_J, 0}, /* 0x06a */
- {KEY_K, 0}, /* 0x06b */
- {KEY_L, 0}, /* 0x06c */
- {KEY_M, 0}, /* 0x06d */
- {KEY_N, 0}, /* 0x06e */
- {KEY_O, 0}, /* 0x06f */
- {KEY_P, 0}, /* 0x070 */
- {KEY_Q, 0}, /* 0x071 */
- {KEY_R, 0}, /* 0x072 */
- {KEY_S, 0}, /* 0x073 */
- {KEY_T, 0}, /* 0x074 */
- {KEY_U, 0}, /* 0x075 */
- {KEY_V, 0}, /* 0x076 */
- {KEY_W, 0}, /* 0x077 */
- {KEY_X, 0}, /* 0x078 */
- {KEY_Y, 0}, /* 0x079 */
- {KEY_Z, 0}, /* 0x07a */
- {KEY_LBrace, KEY_ShiftL}, /* 0x07b */
- {KEY_BSlash, KEY_ShiftL}, /* 0x07c */
- {KEY_RBrace, KEY_ShiftL}, /* 0x07d */
- {KEY_Tilde, KEY_ShiftL}, /* 0x07e */
- {KEY_Delete, 0}, /* 0x07f */
- {0, 0}, /* 0x080 */
- {KEY_F1, 0}, /* 0x081 */
- {KEY_F2, 0}, /* 0x082 */
- {KEY_F3, 0}, /* 0x083 */
- {KEY_F4, 0}, /* 0x084 */
- {KEY_F5, 0}, /* 0x085 */
- {KEY_F6, 0}, /* 0x086 */
- {KEY_F7, 0}, /* 0x087 */
- {KEY_F8, 0}, /* 0x088 */
- {KEY_F9, 0}, /* 0x089 */
- {KEY_F10, 0}, /* 0x08a */
- {KEY_F11, 0}, /* 0x08b */
- {KEY_F12, 0}, /* 0x08c */
- {KEY_Home, 0}, /* 0x08d */
- {KEY_Up, 0}, /* 0x08e */
- {KEY_PgUp, 0}, /* 0x08f */
- {KEY_Print, 0}, /* 0x090 */
- {KEY_Left, 0}, /* 0x091 */
- {KEY_Right, 0}, /* 0x092 */
- {KEY_PgDown, 0}, /* 0x093 */
- {KEY_Insert, 0}, /* 0x094 */
- {0, 0}, /* 0x095 */
- {0, 0}, /* 0x096 */
- {0, 0}, /* 0x097 */
- {KEY_End, 0}, /* 0x098 */
- {KEY_Down, 0}, /* 0x099 */
- {0, 0}, /* 0x09a */
- {0, 0}, /* 0x09b */
- {0, 0}, /* 0x09c */
- {0, 0}, /* 0x09d */
- {0, 0}, /* 0x09e */
- {0, 0}, /* 0x09f */
- {0, 0}, /* 0x0a0 */
- {0, 0}, /* 0x0a1 */
- {0, 0}, /* 0x0a2 */
- {0, 0}, /* 0x0a3 */
- {0, 0}, /* 0x0a4 */
- {0, 0}, /* 0x0a5 */
- {0, 0}, /* 0x0a6 */
- {0, 0}, /* 0x0a7 */
- {0, 0}, /* 0x0a8 */
- {0, 0}, /* 0x0a9 */
- {0, 0}, /* 0x0aa */
- {0, 0}, /* 0x0ab */
- {0, 0}, /* 0x0ac */
- {0, 0}, /* 0x0ad */
- {0, 0}, /* 0x0ae */
- {0, 0}, /* 0x0af */
- {0, 0}, /* 0x0b0 */
- {0, 0}, /* 0x0b1 */
- {0, 0}, /* 0x0b2 */
- {0, 0}, /* 0x0b3 */
- {0, 0}, /* 0x0b4 */
- {0, 0}, /* 0x0b5 */
- {0, 0}, /* 0x0b6 */
- {0, 0}, /* 0x0b7 */
- {0, 0}, /* 0x0b8 */
- {0, 0}, /* 0x0b9 */
- {0, 0}, /* 0x0ba */
- {0, 0}, /* 0x0bb */
- {0, 0}, /* 0x0bc */
- {0, 0}, /* 0x0bd */
- {0, 0}, /* 0x0be */
- {0, 0}, /* 0x0bf */
- {0, 0}, /* 0x0c0 */
- {0, 0}, /* 0x0c1 */
- {0, 0}, /* 0x0c2 */
- {0, 0}, /* 0x0c3 */
- {0, 0}, /* 0x0c4 */
- {0, 0}, /* 0x0c5 */
- {0, 0}, /* 0x0c6 */
- {0, 0}, /* 0x0c7 */
- {0, 0}, /* 0x0c8 */
- {0, 0}, /* 0x0c9 */
- {0, 0}, /* 0x0ca */
- {0, 0}, /* 0x0cb */
- {0, 0}, /* 0x0cc */
- {0, 0}, /* 0x0cd */
- {0, 0}, /* 0x0ce */
- {0, 0}, /* 0x0cf */
- {0, 0}, /* 0x0d0 */
- {0, 0}, /* 0x0d1 */
- {0, 0}, /* 0x0d2 */
- {0, 0}, /* 0x0d3 */
- {0, 0}, /* 0x0d4 */
- {0, 0}, /* 0x0d5 */
- {0, 0}, /* 0x0d6 */
- {0, 0}, /* 0x0d7 */
- {0, 0}, /* 0x0d8 */
- {0, 0}, /* 0x0d9 */
- {0, 0}, /* 0x0da */
- {0, 0}, /* 0x0db */
- {0, 0}, /* 0x0dc */
- {0, 0}, /* 0x0dd */
- {0, 0}, /* 0x0de */
- {0, 0}, /* 0x0df */
- {0, 0}, /* 0x0e0 */
- {0, 0}, /* 0x0e1 */
- {0, 0}, /* 0x0e2 */
- {0, 0}, /* 0x0e3 */
- {0, 0}, /* 0x0e4 */
- {0, 0}, /* 0x0e5 */
- {0, 0}, /* 0x0e6 */
- {0, 0}, /* 0x0e7 */
- {0, 0}, /* 0x0e8 */
- {0, 0}, /* 0x0e9 */
- {0, 0}, /* 0x0ea */
- {0, 0}, /* 0x0eb */
- {0, 0}, /* 0x0ec */
- {0, 0}, /* 0x0ed */
- {0, 0}, /* 0x0ee */
- {0, 0}, /* 0x0ef */
- {0, 0}, /* 0x0f0 */
- {0, 0}, /* 0x0f1 */
- {0, 0}, /* 0x0f2 */
- {0, 0}, /* 0x0f3 */
- {0, 0}, /* 0x0f4 */
- {0, 0}, /* 0x0f5 */
- {0, 0}, /* 0x0f6 */
- {0, 0}, /* 0x0f7 */
- {0, 0}, /* 0x0f8 */
- {0, 0}, /* 0x0f9 */
- {0, 0}, /* 0x0fa */
- {0, 0}, /* 0x0fb */
- {0, 0}, /* 0x0fc */
- {0, 0}, /* 0x0fd */
- {0, 0}, /* 0x0fe */
- {0, 0}, /* 0x0ff */
-};
-
-/* from xwin/winkeymap.h */
-static KeySym map[NUM_KEYCODES*MAP_WIDTH]={
- /* 0x00 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x01 */ XK_Escape, NoSymbol, NoSymbol, NoSymbol,
- /* 0x02 */ XK_1, XK_exclam, NoSymbol, NoSymbol,
- /* 0x03 */ XK_2, XK_at, NoSymbol, NoSymbol,
- /* 0x04 */ XK_3, XK_numbersign, NoSymbol, NoSymbol,
- /* 0x05 */ XK_4, XK_dollar, NoSymbol, NoSymbol,
- /* 0x06 */ XK_5, XK_percent, NoSymbol, NoSymbol,
- /* 0x07 */ XK_6, XK_asciicircum, NoSymbol, NoSymbol,
- /* 0x08 */ XK_7, XK_ampersand, NoSymbol, NoSymbol,
- /* 0x09 */ XK_8, XK_asterisk, NoSymbol, NoSymbol,
- /* 0x0a */ XK_9, XK_parenleft, NoSymbol, NoSymbol,
- /* 0x0b */ XK_0, XK_parenright, NoSymbol, NoSymbol,
- /* 0x0c */ XK_minus, XK_underscore, NoSymbol, NoSymbol,
- /* 0x0d */ XK_equal, XK_plus, NoSymbol, NoSymbol,
- /* 0x0e */ XK_BackSpace, NoSymbol, NoSymbol, NoSymbol,
- /* 0x0f */ XK_Tab, XK_ISO_Left_Tab,NoSymbol, NoSymbol,
- /* 0x10 */ XK_Q, NoSymbol, NoSymbol, NoSymbol,
- /* 0x11 */ XK_W, NoSymbol, NoSymbol, NoSymbol,
- /* 0x12 */ XK_E, NoSymbol, NoSymbol, NoSymbol,
- /* 0x13 */ XK_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x14 */ XK_T, NoSymbol, NoSymbol, NoSymbol,
- /* 0x15 */ XK_Y, NoSymbol, NoSymbol, NoSymbol,
- /* 0x16 */ XK_U, NoSymbol, NoSymbol, NoSymbol,
- /* 0x17 */ XK_I, NoSymbol, NoSymbol, NoSymbol,
- /* 0x18 */ XK_O, NoSymbol, NoSymbol, NoSymbol,
- /* 0x19 */ XK_P, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1a */ XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol,
- /* 0x1b */ XK_bracketright,XK_braceright, NoSymbol, NoSymbol,
- /* 0x1c */ XK_Return, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1d */ XK_Control_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1e */ XK_A, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1f */ XK_S, NoSymbol, NoSymbol, NoSymbol,
- /* 0x20 */ XK_D, NoSymbol, NoSymbol, NoSymbol,
- /* 0x21 */ XK_F, NoSymbol, NoSymbol, NoSymbol,
- /* 0x22 */ XK_G, NoSymbol, NoSymbol, NoSymbol,
- /* 0x23 */ XK_H, NoSymbol, NoSymbol, NoSymbol,
- /* 0x24 */ XK_J, NoSymbol, NoSymbol, NoSymbol,
- /* 0x25 */ XK_K, NoSymbol, NoSymbol, NoSymbol,
- /* 0x26 */ XK_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x27 */ XK_semicolon, XK_colon, NoSymbol, NoSymbol,
- /* 0x28 */ XK_quoteright, XK_quotedbl, NoSymbol, NoSymbol,
- /* 0x29 */ XK_quoteleft, XK_asciitilde, NoSymbol, NoSymbol,
- /* 0x2a */ XK_Shift_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2b */ XK_backslash, XK_bar, NoSymbol, NoSymbol,
- /* 0x2c */ XK_Z, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2d */ XK_X, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2e */ XK_C, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2f */ XK_V, NoSymbol, NoSymbol, NoSymbol,
- /* 0x30 */ XK_B, NoSymbol, NoSymbol, NoSymbol,
- /* 0x31 */ XK_N, NoSymbol, NoSymbol, NoSymbol,
- /* 0x32 */ XK_M, NoSymbol, NoSymbol, NoSymbol,
- /* 0x33 */ XK_comma, XK_less, NoSymbol, NoSymbol,
- /* 0x34 */ XK_period, XK_greater, NoSymbol, NoSymbol,
- /* 0x35 */ XK_slash, XK_question, NoSymbol, NoSymbol,
- /* 0x36 */ XK_Shift_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x37 */ XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol,
- /* 0x38 */ XK_Alt_L, XK_Meta_L, NoSymbol, NoSymbol,
- /* 0x39 */ XK_space, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3a */ XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3b */ XK_F1, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3c */ XK_F2, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3d */ XK_F3, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3e */ XK_F4, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3f */ XK_F5, NoSymbol, NoSymbol, NoSymbol,
- /* 0x40 */ XK_F6, NoSymbol, NoSymbol, NoSymbol,
- /* 0x41 */ XK_F7, NoSymbol, NoSymbol, NoSymbol,
- /* 0x42 */ XK_F8, NoSymbol, NoSymbol, NoSymbol,
- /* 0x43 */ XK_F9, NoSymbol, NoSymbol, NoSymbol,
- /* 0x44 */ XK_F10, NoSymbol, NoSymbol, NoSymbol,
- /* 0x45 */ XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x46 */ XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x47 */ XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol,
- /* 0x48 */ XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol,
- /* 0x49 */ XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol,
- /* 0x4a */ XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4b */ XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol,
- /* 0x4c */ XK_KP_Begin, XK_KP_5, NoSymbol, NoSymbol,
- /* 0x4d */ XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol,
- /* 0x4e */ XK_KP_Add, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4f */ XK_KP_End, XK_KP_1, NoSymbol, NoSymbol,
- /* 0x50 */ XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol,
- /* 0x51 */ XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol,
- /* 0x52 */ XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol,
- /* 0x53 */ XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol,
- /* 0x54 */ XK_Sys_Req, NoSymbol, NoSymbol, NoSymbol,
- /* 0x55 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x56 */ XK_less, XK_greater, NoSymbol, NoSymbol,
- /* 0x57 */ XK_F11, NoSymbol, NoSymbol, NoSymbol,
- /* 0x58 */ XK_F12, NoSymbol, NoSymbol, NoSymbol,
- /* 0x59 */ XK_Home, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5a */ XK_Up, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5b */ XK_Prior, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5c */ XK_Left, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5d */ XK_Begin, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5e */ XK_Right, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5f */ XK_End, NoSymbol, NoSymbol, NoSymbol,
- /* 0x60 */ XK_Down, NoSymbol, NoSymbol, NoSymbol,
- /* 0x61 */ XK_Next, NoSymbol, NoSymbol, NoSymbol,
- /* 0x62 */ XK_Insert, NoSymbol, NoSymbol, NoSymbol,
- /* 0x63 */ XK_Delete, NoSymbol, NoSymbol, NoSymbol,
- /* 0x64 */ XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol,
- /* 0x65 */ XK_Control_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x66 */ XK_Pause, NoSymbol, NoSymbol, NoSymbol,
- /* 0x67 */ XK_Print, NoSymbol, NoSymbol, NoSymbol,
- /* 0x68 */ XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol,
- /* 0x69 */ XK_Alt_R, XK_Meta_R, NoSymbol, NoSymbol,
- /* 0x6a */ XK_Break, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6b */ XK_Meta_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6c */ XK_Meta_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6d */ XK_Menu, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6e */ XK_F13, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6f */ XK_F14, NoSymbol, NoSymbol, NoSymbol,
- /* 0x70 */ XK_F15, NoSymbol, NoSymbol, NoSymbol,
- /* 0x71 */ XK_F16, NoSymbol, NoSymbol, NoSymbol,
- /* 0x72 */ XK_F17, NoSymbol, NoSymbol, NoSymbol,
- /* 0x73 */ XK_backslash, XK_underscore, NoSymbol, NoSymbol,
- /* 0x74 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x75 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x76 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x77 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x78 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x79 */ XK_Henkan, XK_Mode_switch, NoSymbol, NoSymbol,
- /* 0x7a */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7b */ XK_Muhenkan, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7c */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7d */ XK_backslash, XK_bar, NoSymbol, NoSymbol,
- /* 0x7e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
-};
--- a/meson.build
+++ b/meson.build
@@ -1,6 +1,7 @@
+subdir('plan9')
+
srcs = [
'x9dev.c',
- 'plan9.c',
'../../mi/miinitext.c',
]
@@ -7,13 +8,8 @@
x9dev_server = executable(
'x9dev',
srcs,
- include_directories: [
- inc,
- include_directories('/usr/local/plan9/include'),
- ],
- dependencies: [
- common_dep,
- ],
+ include_directories: inc,
+ dependencies: common_dep,
link_with: [
libxserver_main,
libxserver_fb,
--- a/plan9.c
+++ /dev/null
@@ -1,137 +1,0 @@
-#define _PLAN9_SOURCE
-#include <u.h>
-#include <sys/types.h>
-#include <libc.h>
-
-#include <keyboard.h>
-#include <draw.h>
-#include "x9dev.h"
-
-extern void ErrorF(char *, ...);
-extern void FatalError(char *, ...);
-
-x9devInfo x9di;
-
-void
-x9devInfoInit(void)
-{
- char buf[256];
-
- if(initdraw(NULL, 0, "x9dev") < 0)
- FatalError("can't open display");
-
- x9di.depth = screen->depth;
- x9di.width = Dx(screen->r);
- x9di.width -= x9di.width&(screen->depth/8);
- x9di.dpi = 100;
- x9di.bpl = bytesperline(Rect(0, 0, x9di.width, x9di.height), x9di.depth);
- x9di.fb = malloc(x9di.bpl * x9di.height);
- if (x9di.fb == nil)
- FatalError("couldn't allocate framebuffer");
-
- snprint(buf, sizeof buf, "%s/mouse", display->devdir);
- x9di.mouseFd = open(buf, O_RDWR | O_NONBLOCK);
- if(x9di.mouseFd < 0)
- FatalError("can't open mouse");
-
- snprint(buf, sizeof buf, "%s/cons", display->devdir);
- x9di.keybdFd = open(buf, O_RDONLY | O_NONBLOCK);
- if(x9di.keybdFd < 0)
- FatalError("can't open keyboard");
-
- snprint(buf, sizeof buf, "%s/consctl", display->devdir);
- x9di.consctlFd = open(buf, O_WRONLY);
- if(x9di.consctlFd < 0)
- FatalError("can't open consctl");
- if(write(x9di.consctlFd, "rawon", 5) != 5)
- FatalError("can't set rawon");
-}
-
-void
-x9devRefreshScreen(int x1, int y1, int x2, int y2)
-{
- Rectangle r;
- uchar *p;
- int n;
-
- p = (uchar *)x9di.fb+(y1*x9di.width+x1)*(x9di.depth/8);
- r = rectaddpt(Rect(x1, y1, x2, y2), screen->r.min);
- if (Dx(r) == x9di.width) {
- if (loadimage(screen, r, p, x9di.bpl * Dy(r)) < 0)
- FatalError("can't load image");
- goto End;
- }
- n = Dx(r)*(x9di.depth/8);
- y2 += screen->r.min.y;
- while(r.min.y < y2) {
- r.max.y = r.min.y+1;
- if (loadimage(screen, r, p, n) < 0)
- FatalError("can't load image");
- p += x9di.bpl;
- r.min.y++;
- }
-
-End:
- flushimage(display, 1);
-}
-
-static void
-x9devResize(void)
-{
- if (getwindow(display, Refnone) < 0)
- FatalError("can't reattach to window");
-
- draw(screen, screen->r, display->white, nil, ZP);
- x9devRefreshScreen(0, 0, x9di.width, x9di.height);
-}
-
-int
-x9devMouseRead(int *x, int *y, int *b)
-{
- char buf[1+4*12];
- int n;
-
- if ((n = read(x9di.mouseFd, buf, sizeof buf)) <= 0)
- return 0;
-
- if (n != 1 + 4 * 12)
- FatalError("Bad mouse event");
-
- if (buf[0] == 'r') {
- x9devResize();
- return 0;
- }
- *x = atoi(buf + 1 + 0 * 12) - screen->r.min.x;
- *y = atoi(buf + 1 + 1 * 12) - screen->r.min.y;
- *b = atoi(buf + 1 + 2 * 12);
-
- return 1;
-}
-
-wchar_t
-x9devKeybdRead(void)
-{
- static char s[3];
- static int n = 0;
- wchar_t rune;
-
- if (read(x9di.keybdFd, s + n, 1) != 1)
- return 0;
-
- rune = s[0];
- if (n > 0 || (rune & 0x80) != 0x00) {
- if (mbtowc(&rune, s, n + 1) == -1) {
- /* incomplete rune; wait until next char */
- if (++n == 3)
- n = 0;
- return 0;
- }
- n = 0;
- }
- if (rune == Kdown)
- rune = 0x99;
- else if (rune & KF)
- rune = (rune&~KF) + 0x80;
-
- return rune;
-}
--- a/x9dev.c
+++ b/x9dev.c
@@ -47,7 +47,7 @@
#include "dix.h"
#include "miline.h"
#include "shadow.h"
-#include "x9dev.h"
+#include "plan9/plan9.h"
#include "xkbsrv.h"
#include "xserver-properties.h"
#include "keymap.h"
--- a/x9dev.h
+++ b/x9dev.h
@@ -40,6 +40,6 @@
void x9devInfoInit(void);
void x9devRefreshScreen(int, int, int, int);
-int x9devMouseRead(int *, int *, int *);
+int x9devMouseRead(int *, int *, int *);
wchar_t x9devKeybdRead(void);