Как читать / записывать регистр EC (встроенный контроллер) с помощью программы cpp - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь написать программу для управления клавиатурой с подсветкой и ШИМ от встроенного контроллера EC ноутбука (IT8570E).

Для этого программе необходимо: - Поймать, когда пользователь нажимаетFn + F3 / F4 для увеличения / уменьшения яркости.- Отредактируйте значения регистра EC, чтобы изменить ШИМ, таким образом, яркость.

Вопрос: как прочитать / записать этот регистр EC в сценарии c ++?Я нашел программу, которая может сделать такую ​​вещь, поэтому я думаю, что это возможно (EC-probe.exe на https://github.com/hirschmann/nbfc/wiki) и хотел бы знать, как это сделать с помощью cpp.

Является ли регистр ECвключены в регистры windows?

(PS: если вы также знаете, как ловить, когда пользователь нажимает комбинацию клавиш, мне было бы интересно!)

Примечание: изначально ноутбук не имеет клавиатуры с подсветкой,но для этого есть аппаратный интерфейс. Другие аналогичные модели имеют клавиатуру с подсветкой, но, похоже, функции реагирования на комбинации Fn-F3 / Fn-F4 включены в код BIOS / EC, потому что редактирование BIOS выглядит действительно сложно.и рискованно. Я изучаю возможность написания программы для прямой подсветки.

Полное описание проекта: https://www.bios -mods.com / forum / Thread-Asus-N71JQ-enable-backlit-клавиатура

1 Ответ

0 голосов
/ 25 января 2019

Stricto sensu, вы не можете прочитать регистр в чисто переносимой стандартной программе C ++ (так как спецификация C ++ не знает о регистрах). Узнайте больше о языке C ++, например, некоторые C ++ ссылка сайт, некоторые Введение в программирование на C ++ и его n3337 стандарт для C ++ 11.

Однако вы можете использовать asm операторов. Они генерируют код специфичным для реализации способом.

Если вы используете компилятор GCC , прочитайте его раздел на , используя язык ассемблера с C (большая часть относится также к C ++).

Если вам нужен доступ к клавиатуре в Windows (или другой распространенной операционной системе , такой как Android, MacOSX, Linux), вам необходимо использовать специфические для операционной системы примитивы (которые не соответствуют стандарту C ++). ).

Для Windows погрузитесь в документацию WinAPI .

Для Linux начните с чтения о системных вызовах , например. * 1 028 * системные вызовы (2) .

Большинство операционных систем абстрагируют доступ к аппаратному обеспечению. Потому что ваш процесс изолирован от него. Он работает в режиме пользователя .

На компьютерах с архитектурой x86 обратите внимание на SMM , BIOS, UEFI. Он, вероятно, управляет такими волшебными клавишами яркости (или взаимодействует с вашей ОС kernel ).

Включен ли регистр EC в регистры Windows?

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

PS. https://github.com/hirschmann/nbfc - это бесплатное программное обеспечение (лицензия GPLv3 +). Пожалуйста, погрузитесь в его исходный код (который, вероятно, имеет определенные части операционной системы) и изучите исходный код (некоторый код, связанный с Windows, например nbfc / Windows / NbfcClient / AppSettings.cs , выглядит как C # код).

...