From owner-svn-src-all@FreeBSD.ORG Wed Sep 16 07:01:12 2009 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 192911065676; Wed, 16 Sep 2009 07:01:12 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 090BD8FC1F; Wed, 16 Sep 2009 07:01:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n8G71BYi015047; Wed, 16 Sep 2009 07:01:11 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n8G71BFs015045; Wed, 16 Sep 2009 07:01:11 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <200909160701.n8G71BFs015045@svn.freebsd.org> From: Ed Schouten Date: Wed, 16 Sep 2009 07:01:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r197247 - head/sys/sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Sep 2009 07:01:12 -0000 Author: ed Date: Wed Sep 16 07:01:11 2009 New Revision: 197247 URL: http://svn.freebsd.org/changeset/base/197247 Log: Extend the keyboard character size to 24 bits. Because we use an int to store keyboard chacacters and their flags, we can easily store the flags in the top byte instead of the second byte. This means it's a lot easier to make Unicode work. The only change that still needs to be made, is that keyent_t's map is extended to u_int. Obtained from: //depot/projects/newcons/sys/sys/kbio.h Modified: head/sys/sys/kbio.h Modified: head/sys/sys/kbio.h ============================================================================== --- head/sys/sys/kbio.h Wed Sep 16 06:32:23 2009 (r197246) +++ head/sys/sys/kbio.h Wed Sep 16 07:01:11 2009 (r197247) @@ -229,16 +229,22 @@ typedef struct fkeyarg fkeyarg_t; /* flags set to the return value in the KD_XLATE mode */ -#define NOKEY 0x100 /* no key pressed marker */ -#define FKEY 0x200 /* function key marker */ -#define MKEY 0x400 /* meta key marker (prepend ESC)*/ -#define BKEY 0x800 /* backtab (ESC [ Z) */ +#define NOKEY 0x01000000 /* no key pressed marker */ +#define FKEY 0x02000000 /* function key marker */ +#define MKEY 0x04000000 /* meta key marker (prepend ESC)*/ +#define BKEY 0x08000000 /* backtab (ESC [ Z) */ -#define SPCLKEY 0x8000 /* special key */ -#define RELKEY 0x4000 /* key released */ -#define ERRKEY 0x2000 /* error */ +#define SPCLKEY 0x80000000 /* special key */ +#define RELKEY 0x40000000 /* key released */ +#define ERRKEY 0x20000000 /* error */ -#define KEYCHAR(c) ((c) & 0x00ff) -#define KEYFLAGS(c) ((c) & ~0x00ff) +/* + * The top byte is used to store the flags. This means there are 24 + * bits left to store the actual character. Because UTF-8 can encode + * 2^21 different characters, this is good enough to get Unicode + * working. + */ +#define KEYCHAR(c) ((c) & 0x00ffffff) +#define KEYFLAGS(c) ((c) & ~0x00ffffff) #endif /* !_SYS_KBIO_H_ */