C # ASCII для ключевого кода?

1
[DllImport("user32.dll")]
private static extern short VkKeyScan(char ch);

set = set + "\r\n";
int txL = set.Length;
for (int o = 1; o < (txL); o++)
{
    short vkey = VkKeyScan(set[o]); //MessageBox.Show(vkey.ToString());
    Keys retval = (Keys)(vkey & 0xff);
    int modifiers = vkey >> 8;
    if ((modifiers & 1) != 0) retval |= Keys.Shift; 
    if ((modifiers & 2) != 0) retval |= Keys.Control;
    if ((modifiers & 4) != 0) retval |= Keys.Alt;
}

Эти функции преобразуют стандартный алфавит и раскладку клавиатуры в KeyCode, как я могу преобразовать все другие Юникоды, как китайцы, а также символы в ASCII? он также не работает для клавиш переключения: "!, @, #, $..." Итак, как можно комбинировать ALT и другой ключ, а затем преобразовать в KeyCode? например, ALT+33 = "!" and KeyCode = 0xF0 ALT+33 = "!" and KeyCode = 0xF0

Теги:
converter
ascii
keycode

2 ответа

1
Лучший ответ

ALT-код - это просто десятичное представление шестнадцатеричного значения символа Unicode. Например, если вы проверите официальный график, вы увидите, что значение для ! это 0021 если вы преобразуете это значение из шестнадцатеричного числа в десятичное, вы получите 33 и именно там появляется alt + numPad-3 + numPad-3.

Вы можете получить все возможные значения кода Unicode, просмотрев соответствующий PDF файл с http://www.unicode.org/charts

  • 0
    если я хочу написать ALT + 33 в программе, чтобы показать "!" в качестве ключевого кода, что я должен делать?
  • 1
    Альт-коды являются частью окон, ваша программа не интерпретирует их. Если вы хотите сделать это вручную, вам нужно будет перехватить Alt вниз, составить номера нумерованных клавиш, где они были нажаты, а затем alt вверх. Преобразуйте значения num pad в байтовый массив, затем используйте Encoding.Unicode.GetString(byte[]) чтобы преобразовать ваш байтовый массив в значение Unicode.
3

Существует много символов Unicode, которые не имеют соответствующих ключей. Например, у меня есть клавиатура с 105 клавишами, в то время как около миллиона символов Unicode. Также отображение символа на клавиатуре зависит от раскладки клавиатуры. Поэтому нет общего ответа на вашу проблему.

  • 0
    tnQ, так как или где я могу найти номера кодов клавиш для каждого Unicode?
  • 1
    Как я уже сказал, миллионы символов Юникода не могут быть набраны на клавиатуре (по крайней мере, не одним нажатием клавиши), поэтому у них нет кодов клавиш (также называемых кодом сканирования). Символы Unicode официально называются кодовыми точками, это просто произвольные числа, которые соответствуют определенным символам. Соотношение между клавишами и символами является только частичным и зависит от раскладки клавиатуры.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню