hlfw.ca

x9dev

Download patch

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);