Index: kernel/genarch/include/drivers/via-cuda/cuda.h
===================================================================
--- kernel/genarch/include/drivers/via-cuda/cuda.h	(revision c2417bcc6cc9caba6dca867e322c9cc5723b35f4)
+++ kernel/genarch/include/drivers/via-cuda/cuda.h	(revision 925be4ecd563f177285f5d0da2d0bf42b4bb85f6)
@@ -39,7 +39,59 @@
 #include <arch/types.h>
 #include <console/chardev.h>
+#include <synch/spinlock.h>
 
 typedef struct {
+	uint8_t b;
+	uint8_t pad0[0x1ff];
+
+	uint8_t a;
+	uint8_t pad1[0x1ff];
+
+	uint8_t dirb;
+	uint8_t pad2[0x1ff];
+
+	uint8_t dira;
+	uint8_t pad3[0x1ff];
+
+	uint8_t t1cl;
+	uint8_t pad4[0x1ff];
+
+	uint8_t t1ch;
+	uint8_t pad5[0x1ff];
+
+	uint8_t t1ll;
+	uint8_t pad6[0x1ff];
+
+	uint8_t t1lh;
+	uint8_t pad7[0x1ff];
+
+	uint8_t t2cl;
+	uint8_t pad8[0x1ff];
+
+	uint8_t t2ch;
+	uint8_t pad9[0x1ff];
+
+	uint8_t sr;
+	uint8_t pad10[0x1ff];
+
+	uint8_t acr;
+	uint8_t pad11[0x1ff];
+
+	uint8_t pcr;
+	uint8_t pad12[0x1ff];
+
+	uint8_t ifr;
+	uint8_t pad13[0x1ff];
+
+	uint8_t ier;
+	uint8_t pad14[0x1ff];
+
+	uint8_t anh;
+	uint8_t pad15[0x1ff];
 } cuda_t;
+
+enum {
+	CUDA_RCV_BUF_SIZE = 5
+};
 
 typedef struct {
@@ -47,4 +99,6 @@
 	cuda_t *cuda;
 	indev_t *kbrdin;
+	uint8_t rcv_buf[CUDA_RCV_BUF_SIZE];
+	SPINLOCK_DECLARE(dev_lock);
 } cuda_instance_t;
 
Index: kernel/genarch/include/kbrd/scanc_mac.h
===================================================================
--- kernel/genarch/include/kbrd/scanc_mac.h	(revision 925be4ecd563f177285f5d0da2d0bf42b4bb85f6)
+++ kernel/genarch/include/kbrd/scanc_mac.h	(revision 925be4ecd563f177285f5d0da2d0bf42b4bb85f6)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup genarch
+ * @{
+ */
+/**
+ * @file
+ * @brief Scan codes for Macintosh ADB keyboards.
+ */
+
+#ifndef KERN_SCANC_MAC_H_
+#define KERN_SCANC_MAC_H_
+
+#define SC_LSHIFT       0x38
+#define SC_RSHIFT       0xfd	/* Not used */
+#define SC_CAPSLOCK     0xfe	/* Not used */
+#define SC_SCAN_ESCAPE  0xff	/* Not used */
+
+#endif
+
+/** @}
+ */
