summaryrefslogtreecommitdiffstats
path: root/sys/sys/kbio.h
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2009-09-19 17:56:26 +0000
committered <ed@FreeBSD.org>2009-09-19 17:56:26 +0000
commit48c86dac0525a55eff2b75b5ba8dc573d1014cfe (patch)
tree1c093255582b069eabdbf07475eaefadbeaa94dd /sys/sys/kbio.h
parent064ad1c10a013fdee8dfa0bfcedcec6231604546 (diff)
downloadFreeBSD-src-48c86dac0525a55eff2b75b5ba8dc573d1014cfe.zip
FreeBSD-src-48c86dac0525a55eff2b75b5ba8dc573d1014cfe.tar.gz
Make the keyboard layer Unicode aware.
Just take keyent_t to use an u_int to store the Unicode codepoints. Unfortunately the keymap is now too big to be loaded using an ioctl argument, so change the ioctl to pick a pointer. This change breaks kbdcontrol ABI. It doesn't break X11, because X11 doesn't do anything with syscons keymaps. It just switches the device out of K_XLATE. Obtained from: //depot/user/ed/newcons/...
Diffstat (limited to 'sys/sys/kbio.h')
-rw-r--r--sys/sys/kbio.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/sys/kbio.h b/sys/sys/kbio.h
index 6f82c6d..22b0285 100644
--- a/sys/sys/kbio.h
+++ b/sys/sys/kbio.h
@@ -106,7 +106,7 @@ typedef struct keyboard_repeat keyboard_repeat_t;
#define _KEYMAP_DECLARED
struct keyent_t {
- u_char map[NUM_STATES];
+ u_int map[NUM_STATES];
u_char spcl;
u_char flgs;
#define FLAG_LOCK_O 0
@@ -220,8 +220,9 @@ typedef struct fkeyarg fkeyarg_t;
#define GIO_SCRNMAP _IOR('k', 2, scrmap_t)
#define PIO_SCRNMAP _IOW('k', 3, scrmap_t)
#endif
-#define GIO_KEYMAP _IOR('k', 6, keymap_t)
-#define PIO_KEYMAP _IOW('k', 7, keymap_t)
+/* XXX: Should have keymap_t as an argument, but that's too big for ioctl()! */
+#define GIO_KEYMAP _IO('k', 6)
+#define PIO_KEYMAP _IO('k', 7)
#define GIO_DEADKEYMAP _IOR('k', 8, accentmap_t)
#define PIO_DEADKEYMAP _IOW('k', 9, accentmap_t)
#define GIO_KEYMAPENT _IOWR('k', 10, keyarg_t)
OpenPOWER on IntegriCloud