fix InputToChar
This commit is contained in:
parent
4b4fabcfe5
commit
984eab8e1e
64
platform.d
64
platform.d
@ -907,16 +907,65 @@ LoadFunction(Library lib, string name)
|
||||
}
|
||||
|
||||
u8
|
||||
InputToChar(Input input)
|
||||
InputToChar(Input input, bool modified = false)
|
||||
{
|
||||
switch(input)
|
||||
{
|
||||
case Input.Tab:
|
||||
case Input.Enter:
|
||||
case Input.Space: .. case Input.Tilde:
|
||||
case Input.Space:
|
||||
{
|
||||
return cast(u8)(input);
|
||||
}
|
||||
case Input.LeftBracket:
|
||||
case Input.RightBracket:
|
||||
case Input.BackSlash:
|
||||
case Input.Minus:
|
||||
case Input.Equals:
|
||||
case Input.Grave:
|
||||
case Input.Semicolon:
|
||||
case Input.SingleQuote:
|
||||
case Input.Comma:
|
||||
case Input.Period:
|
||||
case Input.Question:
|
||||
case Input.Zero: .. case Input.Nine:
|
||||
{
|
||||
u32 code = cast(u32)(0xFF & input);
|
||||
if(!modified)
|
||||
{
|
||||
return cast(u8)code;
|
||||
}
|
||||
|
||||
switch(cast(Input)code)
|
||||
{
|
||||
case Input.Zero: return ')';
|
||||
case Input.One: return '!';
|
||||
case Input.Two: return '@';
|
||||
case Input.Three: return '#';
|
||||
case Input.Four: return '$';
|
||||
case Input.Five: return '%';
|
||||
case Input.Six: return '^';
|
||||
case Input.Seven: return '&';
|
||||
case Input.Eight: return '*';
|
||||
case Input.Nine: return '(';
|
||||
case Input.LeftBracket: return '{';
|
||||
case Input.RightBracket: return '}';
|
||||
case Input.BackSlash: return '|';
|
||||
case Input.Minus: return '_';
|
||||
case Input.Equals: return '+';
|
||||
case Input.Grave: return '~';
|
||||
case Input.Semicolon: return ':';
|
||||
case Input.SingleQuote: return '"';
|
||||
case Input.Comma: return '<';
|
||||
case Input.Period: return '>';
|
||||
case Input.Question: return '/';
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
case Input.a: .. case Input.z:
|
||||
{
|
||||
return !modified ? cast(u8)input : cast(u8)(input-32);
|
||||
}
|
||||
case Input.NumEnter:
|
||||
case Input.NumAsterisk:
|
||||
case Input.NumPlus:
|
||||
@ -925,9 +974,14 @@ InputToChar(Input input)
|
||||
case Input.NumSlash:
|
||||
case Input.NumZero: .. case Input.NumNine:
|
||||
{
|
||||
return cast(u8)(input & 0xFF);
|
||||
u32 code = cast(u32)(input & 0xFF);
|
||||
return cast(u8)(code);
|
||||
}
|
||||
default:
|
||||
{
|
||||
u32 code = cast(u32)input;
|
||||
return code >= 0x20 && code <= 0x7E ? cast(u8)code : 0;
|
||||
}
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1343,7 +1397,7 @@ unittest
|
||||
{ // Keys
|
||||
u8 ch = InputToChar(Input.NumEight);
|
||||
assert(ch == '8');
|
||||
ch = InputToChar(Input.B);
|
||||
ch = InputToChar(Input.b, true);
|
||||
assert(ch == 'B');
|
||||
|
||||
version(linux)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user