Что такое виртуальный ключ в Mac для ключа извлечения

Я хотел бы переназначить клавишу извлечения Mac на Insert, в частности, для эмуляции Ctrl+Insert, Alt+Insert, Shift+Insert и других распространенных комбинаций клавиш в приложениях Windows.

Какой код виртуального ключа для ключа извлечения? Я нашел несколько таблиц виртуальных ключей, но по какой-то причине Eject Key никогда не включается.


person Pep    schedule 21.02.2013    source источник
comment
В вашей программе или на вашем компьютере? Какой язык вы используете?   -  person Emil Vikström    schedule 21.02.2013
comment
Мое первое использование будет состоять в том, чтобы попытаться поместить этот виртуальный ключ в таблицы программ эмуляции CoRD, поскольку это необходимо, связанное с программами Windows, доступ к которым осуществляется через CoRD. Если это не сработает, то я, вероятно, попробую что-то с Objective C или C++ (предполагаю, что будет задействован фреймворк Carbon).   -  person Pep    schedule 21.02.2013


Ответы (2)


В: Какой виртуальный ключ в Mac для ключа извлечения?

О: Нет.

Ссылаясь на таблицы использования HID для универсальной последовательной шины, нажатие клавиши, но на самом деле использование HID - управление одним выстрелом со страницы использования потребителя.

3.4.1.4 One Shot Control (OSC)
One Shot Control — это кнопка, которая запускает одно событие или действие. One Shot Control кодируется в 1-битное значение и объявляется как относительный, предпочтительный, основной элемент с логическим минимумом и логическим максимумом 0 и 1 соответственно. Переход с 0 на 1 инициирует событие. При переходе с 1 на 0 ничего не происходит, но это необходимо, прежде чем может произойти другое событие. Пример - размагничивание.

На странице потребительского использования (0x0C) идентификатор извлечения использования определяется как:

Usage ID Usage Name Usage Types Section
B8 Eject OSC 15.7

Если вы хотите имитировать нажатие клавиши Eject на Arduino с поддержкой USB HID, таком как Leonardo, вы можете сделать это с помощью следующего кода, который отправляет Control-Shift-Eject для блокировки экрана...

// NicoHood's HID-Project
#include "HID-Project.h"

void setup() {
  // Make pin 2 an input and turn on the pull-up resistor
  // so it goes high unless connected to ground:
  pinMode(2, INPUT_PULLUP);

  Keyboard.begin();

  // Sends a clean report to the host.
  // This is important on any Arduino type.
  Consumer.begin();
}

void loop() {
  // Control-Shift-Eject locks the screen
  if (digitalRead(2) == LOW) {
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press(KEY_LEFT_SHIFT);

    // This is a One Shot Command so doesn't need a "release"
    Consumer.write(HID_CONSUMER_EJECT);

    // Debounce
    delay(100);
    while (digitalRead(2) == LOW)
      delay(100);

    // Release Control-Shift keys
    Keyboard.releaseAll();
  }
}

Что касается реакции на нажатие клавиши Eject из Windows, если оно не вызывается как одно из событий WM_, связанных с управлением мультимедиа, я ожидаю, что вам придется написать драйвер USB HID/ACPI, который обнаруживает и вызывает сам OSC.

Существует Примеры кнопок в ACPI для устройств под управлением настольных версий Windows 10, демонстрирующих захват некоторых других OSC со страницы потребителя (например, увеличение/уменьшение громкости), вы, вероятно, могли бы расширить это, включив Eject.

Извините, я не могу больше помочь, но, надеюсь, это укажет вам правильное направление.

person AlwaysLearning    schedule 06.01.2021

Я знаю, что этот вопрос был задан много лет назад, но, возможно, некоторые люди все еще ищут этот ответ и в конечном итоге найдут этот вопрос, так что...

В строке 1805 документа VoodooPS2Keyboard.cpp из VoodooPS2Controller от RehabMan говорится, что виртуальный ключ на Mac для ключа извлечения — 0x92.

Ссылка:

https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller/blob/master/VoodooPS2Keyboard/VoodooPS2Keyboard.cpp

person VitorMM    schedule 14.12.2016