на главнуюВсе эхи RU.INTERNET.ICQ
войти ?

клавиатура NG

От Eugene Palenock (2:5020/2065.1) к George Hazan

В ответ на Заголовок предыдущего сообщения в треде (Имя Автора)


Привет, George!

26 мар 15 16:18, George Hazan -> Eugene Palenock:

GH> Суть этой проблемы в том, что редактор хоткеев в миранде ничего не знал
GH> о других виртуальных клавишах.

А есть клавиши которые вообще не имеют VK-кода.
Про них он по прежнему ничего не знает...

В принципе, можно им назначать заведомо неиспользуемые VK, и будет работать имеющаяся система хоткеев. Но надо переделать sttHokeyVkToName, чтобы там были допустимы все 255 VK.

EP>> В конфе же обсуждалась другая проблема - с Virtual-Key и из
EP>> некорректными именами. Её частично(!) исправили.
GH> В смысле - частично? туда залили всё, что нашли в хедерах.

Точнее, залили ровно те 18 кодов которые я назвал.
А если бы в хэдерах что-то искали - то наверно нашли бы например VK_SLEEP.
Которая по прежнему выводит артефакты вместо имени.
И ещё штук 10 VK-кнопок можно найти, которые есть на продаваемых в России клавиатурах. Всякие там Zoom, Play для презентации.
Кстати в хедерах, если выкинуть 0-9,A-Z - 156 кодов остаётся. Наверно они тоже где-то используются?

Лучше вообще отказаться от GetKeyNameText и тем более MapVirtualKey. Они обе имеют свои собственные наборы глюков, что в итоге ещё более увеличивает глючность.

GetKeyNameText например завязана на текущую раскладку. И кнопки Б,Ю - называет то Б,Ю то ,. а A-Z при этом всегда A-Z (даже в русской раскладке).

MapVirtualKey при транслировании VK в сканкоды теряет флаг Extended. К примеру две соседних кнопки на numpad: VK_DIVIDE и VK_MULTIPLY. MapVirtualKey первую превращает в сканкод VK_OEM_2, и затем в русской раскладке в точку.
Вместо какого-то глобального решения этой проблемы - авторы миранды сделали дополнительный костыль с перехватом VK_DIVIDE. Но подобных кнопок, о которых авторы пока не знают - ещё ведь много... А пользователям лень писать багрепорты.

EP>> VK-кодов о которых винда не даёт имён - больше, чем там
EP>> приделали.
GH> Давай зальем остальное, в чем вопрос?

У меня предложение сделать массив 0x100 кнопок, со стандартными английскими именами. Примерно так:

const CHAR *kv00 = "VK_Undefined!";
const CHAR *kv01 = "VK_LBUTTON";
...

const CHAR *key_tab[0x100]
{
kv00, kv01, kv02, kv03, kv04, kv05, kv06, kv07, kv08, ...
};

static CHAR *sttHokeyVkToName(WORD vkKey)
{
if (vkKey>=0xFF)
{
return "error";
}
return key_tab[(vkKey)];
}

--
С уважением, Евгений.

---
* Origin: ... (2:5020/2065.1)

Ответы на это письмо:

From: Username
Заголовок следующего сообщения в треде может быть длинным и его придется перенести на новую строку

From: Username
Или коротким

FGHI-url этого письма: area://RU.INTERNET.ICQ?msgid=2:5020/2065.1@FidoNet+55142e89