На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА 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();
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0198 ]   [ 15 queries used ]   [ Generated: 28.03.24, 08:12 GMT ]