На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Windows
1. Указывайте версию Вашей ОС.
2. Запрещается размещать запросы и ссылки на кряки, серийники и т.п., а также вопросы нарушения лицензии ПО и его взлома.
3. Не разрешается давать советы из разряда "Поставь Linux".
4. Переустановка ОС - крайнее и безотказное лекарство, которое знают все. В таких советах никто не нуждается.
5. При публикации скриптов пользоваться тегами code. Тип подсветки кода выбирать строго в соответствии с языком публикуемого кода.
6. Прежде чем задать вопрос, обязательно загляните в FAQ и следуйте написанным рекомендациям для устранения проблемы. И если не помогло, а поиск по разделу не дал результатов - только тогда задавайте вопрос на форуме.
7. Вопросы, связанные с проблемами ПО, задавайте в разделе Программное обеспечение
Модераторы: Akina
  
> Переназначение клавиш на клавиатуре., Windows XP.
Стандартные клавиши переназначаются здесь.

- HKEY_LOCAL_MACHINE;
- SYSTEM\ControlSet001\Control\Keyboard Layout;
- бинарный параметр Scancode Map.

Но нужен скан-код именно специальной клавиши: громкость+, громкость-. На текущей клавиатуре их вообще нет - а реализовать хотелось бы.
См. https://download.microsoft.com/download/1/6...6c/scancode.doc , Appendix C.

Ну или можно поиграться программами типа SharpKeys, KeyTweak и т.п.
Сообщение отредактировано: Akina -
Какая же гадость, а... В разных источниках - разные коды (что-то связанное с алогичностью клавиатур ноутбуков).

Получилось.

ExpandedWrap disabled
    TRegistry *regObject = new TRegistry(); //Для добавления/удаления автозапуска.
        const int iButtons_Count = 4; //Количество изменяемых пар кнопок.
        BYTE byteRemap[16+4*iButtons_Count]; //Массив для записи в реестр.
     
        for (int i=0; i<8; i++) byteRemap[i] = 0x00; //Вступительные нулевые 8 байтов.
        byteRemap[8] = iButtons_Count + 1; //Число изменений клавиш (пар) + 1. По факту - ни на что не влияет, можно и 0 написать.
        for (int i=9; i<12; i++) byteRemap[i] = 0x00; //Промежуточные нулевые 3 байта.
     
        byteRemap[12] = 0x30; byteRemap[13] = 0xE0; //На что заменить (Громкость Плюс).
        byteRemap[14] = 0x4E; byteRemap[15] = 0x00; //Что заменить (Правый Плюс).
        byteRemap[16] = 0x2E; byteRemap[17] = 0xE0; //На что заменить (Громкость Минус).
        byteRemap[18] = 0x4A; byteRemap[19] = 0x00; //Что заменить (Правый Минус).
        byteRemap[20] = 0x20; byteRemap[21] = 0xE0; //На что заменить (Звук вкл/выкл).
        byteRemap[22] = 0x37; byteRemap[23] = 0x00; //Что заменить (Правая Звездочка).
        byteRemap[24] = 0x22; byteRemap[25] = 0xE0; //На что заменить (Пауза).
        byteRemap[26] = 0x35; byteRemap[27] = 0xE0; //Что заменить (Правый Прямой Слэш).
     
        for (int i=16+4*(iButtons_Count-1); i<16+4*iButtons_Count; i++) byteRemap[i] = 0x00; //Заключительные нулевые 4 байта.
     
        regObject->RootKey = HKEY_LOCAL_MACHINE; //Работает в HKEY_LOCAL_MACHINE.
        regObject->OpenKey("SYSTEM\\ControlSet001\\Control\\Keyboard Layout", true);
        regObject->WriteBinaryData("Scancode Map", byteRemap, 16+4*iButtons_Count);
        regObject->CloseKey();
     
        MessageBox(0, "Программа отработала. Требуется перезагрузка.", "Всё.", MB_ICONINFORMATION);
        Close();
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script execution time: 0,0203 ]   [ 19 queries used ]   [ Generated: 25.10.21, 03:37 GMT ]