[Spice-devel] [PATCH spice-html5] Adjust the presentation of two byte scan codes.

Frediano Ziglio fziglio at redhat.com
Mon Aug 5 16:19:14 UTC 2019


> 
> The previous implementation worked strictly due to a bug which would
> luckily generate roughly the right scan codes, although we would send
> more codes than required.
> 
> For example, the old implementation would send 0xdf48e0 for 'up key down'
> and '0xdfc8e0' for 'up key up'.  Essentially, it stored the bytes
> in reverse order and had a bug while flipping them.
> 

I think would be worth saying that 0x48e0 and 0xc8e0 would be the
correct ones.

> This code stores them in the order we transmit them which simplifies
> the code.
> 

agree!

> Signed-off-by: Jeremy White <jwhite at codeweavers.com>
> ---
>  src/utils.js | 40 ++++++++++++++++++----------------------
>  1 file changed, 18 insertions(+), 22 deletions(-)
> 
> diff --git a/src/utils.js b/src/utils.js
> index 1874e97..af8e574 100644
> --- a/src/utils.js
> +++ b/src/utils.js
> @@ -157,6 +157,7 @@ common_scanmap[16]                 = KeyNames.KEY_ShiftL;
>  common_scanmap[17]                 = KeyNames.KEY_LCtrl;
>  common_scanmap[18]                 = KeyNames.KEY_Alt;
>  common_scanmap[20]                 = KeyNames.KEY_CapsLock;
> +common_scanmap[44]                 = KeyNames.KEY_SysReqest;
>  common_scanmap[144]                = KeyNames.KEY_NumLock;
>  common_scanmap[112]                = KeyNames.KEY_F1;
>  common_scanmap[113]                = KeyNames.KEY_F2;

This looks like spurious but seen the removal below for 44 looks
less odd. On the other hand "Reqest" looks like a wrong spell ("Request")
and the constant was turned from Print to SysRequest.

> @@ -174,19 +175,18 @@ common_scanmap[123]                = KeyNames.KEY_F12;
>  /* These extended scancodes do not line up with values from atKeynames */
>  common_scanmap[42]                 = 99;
>  common_scanmap[19]                 = 101;    // Break
> -common_scanmap[111]                = 0xE035; // KP_Divide
> -common_scanmap[106]                = 0xE037; // KP_Multiply
> -common_scanmap[36]                 = 0xE047; // Home
> -common_scanmap[38]                 = 0xE048; // Up
> -common_scanmap[33]                 = 0xE049; // PgUp
> -common_scanmap[37]                 = 0xE04B; // Left
> -common_scanmap[39]                 = 0xE04D; // Right
> -common_scanmap[35]                 = 0xE04F; // End
> -common_scanmap[40]                 = 0xE050; // Down
> -common_scanmap[34]                 = 0xE051; // PgDown
> -common_scanmap[45]                 = 0xE052; // Insert
> -common_scanmap[46]                 = 0xE053; // Delete
> -common_scanmap[44]                 = 0x2A37; // Print
> +common_scanmap[111]                = 0xE0 | (KeyNames.KEY_Slash << 8);//
> KP_Divide
> +common_scanmap[106]                = 0xE0 | (KeyNames.KEY_KP_Multiply << 8);
> // KP_Multiply
> +common_scanmap[36]                 = 0xE0 | (KeyNames.KEY_KP_7 << 8); //
> Home
> +common_scanmap[38]                 = 0xE0 | (KeyNames.KEY_KP_8 << 8); // Up
> +common_scanmap[33]                 = 0xE0 | (KeyNames.KEY_KP_9 << 8); //
> PgUp
> +common_scanmap[37]                 = 0xE0 | (KeyNames.KEY_KP_4 << 8); //
> Left
> +common_scanmap[39]                 = 0xE0 | (KeyNames.KEY_KP_6 << 8); //
> Right
> +common_scanmap[35]                 = 0xE0 | (KeyNames.KEY_KP_1 << 8); // End
> +common_scanmap[40]                 = 0xE0 | (KeyNames.KEY_KP_2 << 8); //
> Down
> +common_scanmap[34]                 = 0xE0 | (KeyNames.KEY_KP_3 << 8); //
> PgDown
> +common_scanmap[45]                 = 0xE0 | (KeyNames.KEY_KP_0 << 8); //
> Insert
> +common_scanmap[46]                 = 0xE0 | (KeyNames.KEY_KP_Decimal << 8);
> // Delete

Sure

>  
>  /* These are not common between ALL browsers but are between Firefox and
>  DOM3 */
>  common_scanmap['1'.charCodeAt(0)]  = KeyNames.KEY_1;
> @@ -221,9 +221,9 @@ common_scanmap[222]                = KeyNames.KEY_Quote;
>  common_scanmap[219]                = KeyNames.KEY_LBrace;
>  common_scanmap[221]                = KeyNames.KEY_RBrace;
>  
> -common_scanmap[91]                 = 0xE05B; //KeyNames.KEY_LMeta
> -common_scanmap[92]                 = 0xE05C; //KeyNames.KEY_RMeta
> -common_scanmap[93]                 = 0xE05D; //KeyNames.KEY_Menu
> +common_scanmap[91]                 = 0xE0 | (0x5B << 8);
> //KeyNames.KEY_LMeta
> +common_scanmap[92]                 = 0xE0 | (0x5C << 8);
> //KeyNames.KEY_RMeta
> +common_scanmap[93]                 = 0xE0 | (0x5D << 8); //KeyNames.KEY_Menu

Really minor: maybe just 0x5BE0 and so on ?

>  
>  /* Firefox/Mozilla codes */
>  var firefox_scanmap = [];
> @@ -260,11 +260,7 @@ function keycode_to_start_scan(code)
>          return 0;
>      }
>  
> -    if (scancode < 0x100) {
> -        return scancode;
> -    } else {
> -        return 0xe0 | ((scancode - 0x100) << 8);
> -    }
> +    return scancode;
>  }
>  
>  function keycode_to_end_scan(code)
> @@ -276,7 +272,7 @@ function keycode_to_end_scan(code)
>      if (scancode < 0x100) {
>          return scancode | 0x80;
>      } else {
> -        return 0x80e0 | ((scancode - 0x100) << 8);
> +        return scancode | 0x8000;
>      }
>  }
>  

Frediano


More information about the Spice-devel mailing list