Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[34.200.219.10] |
|
Сообщ.
#1
,
|
|
|
Стандартные клавиши переназначаются здесь.
- HKEY_LOCAL_MACHINE; - SYSTEM\ControlSet001\Control\Keyboard Layout; - бинарный параметр Scancode Map. Но нужен скан-код именно специальной клавиши: громкость+, громкость-. На текущей клавиатуре их вообще нет - а реализовать хотелось бы. |
Сообщ.
#2
,
|
|
|
См. https://download.microsoft.com/download/1/6...6c/scancode.doc , Appendix C.
Ну или можно поиграться программами типа SharpKeys, KeyTweak и т.п. |
Сообщ.
#3
,
|
|
|
Какая же гадость, а... В разных источниках - разные коды (что-то связанное с алогичностью клавиатур ноутбуков).
Получилось. 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(); |