On Wed, Aug 10, 2011 at 12:53 PM, Blue Swirl
<blauwirbel@gmail.com> wrote:
On Tue, Aug 9, 2011 at 9:54 PM, William Hahne <
will07c5@gmail.com> wrote:
> "get-key-map" is a Forth word that provides a map of all the keys currently
> pressed on the keyboard. Since it is only used by BootX to determine if one
> of the shortcuts for verbose or single user mode is pressed. It is a waste
> of time to provide a full implementation. This just hands out a dummy key
> map which specifies verbose mode.
> Index: drivers/adb_kbd.c
> ===================================================================
> --- drivers/adb_kbd.c (revision 1041)
> +++ drivers/adb_kbd.c (working copy)
> @@ -43,10 +43,13 @@
>
> static void keyboard_read(void);
>
> +static void keyboard_get_key_map(void);
> +
> NODE_METHODS( keyboard ) = {
> { "open", keyboard_open },
> { "close", keyboard_close },
> { "read", keyboard_read },
> + { "get-key-map", keyboard_get_key_map },
> };
>
> /* VT100 escape sequences */
> @@ -566,3 +569,18 @@
> }
> PUSH(i);
> }
> +
> +static unsigned char fake_keymap[32] = {
Can this be 'const'?
Yes
> + 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
> +};
> +
> +static void keyboard_get_key_map(void)
> +{
> + /* This is a bit of a hack since BootX requires a get-key-map word.
> + In the future this should be changed to give the actual current
> keymap,
> + but since this only effects keyboard input in BootX it isn't a
> priority. */
> + PUSH( (int)fake_keymap );
'long' would not truncate on 64 bit host with 64 bit cells.
Oops, thanks for catching that. :) Revised patch at the bottom.
> +}
> --
Index: drivers/adb_kbd.c
===================================================================
--- drivers/adb_kbd.c (revision 1046)
+++ drivers/adb_kbd.c (working copy)
@@ -43,10 +43,13 @@
static void keyboard_read(void);
+static void keyboard_get_key_map(void);
+
NODE_METHODS( keyboard ) = {
{ "open", keyboard_open },
{ "close", keyboard_close },
{ "read", keyboard_read },
+ { "get-key-map", keyboard_get_key_map },
};
/* VT100 escape sequences */
@@ -566,3 +569,18 @@
}
PUSH(i);
}
+
+static const unsigned char fake_keymap[32] = {
+ 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
+};
+
+static void keyboard_get_key_map(void)
+{
+ /* This is a bit of a hack since BootX requires a get-key-map word.
+ In the future this should be changed to give the actual current keymap,
+ but since this only effects keyboard input in BootX it isn't a priority. */
+ PUSH( (ucell)fake_keymap );
+}