Кой е виртуалният ключ в Mac за ключа за изваждане

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

Кой е кодът на виртуалния ключ за ключа за изваждане? Намерих някои таблици с виртуални ключове, но по някаква причина ключът за изваждане никога не е включен.


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 таблици за използване за универсална серийна шина, Eject не е натискане на клавиш, но всъщност използване на HID - еднократно управление от страницата за потребителско използване.

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

На страницата за потребителско използване (0x0C) ИД за използване при изваждане се дефинира като:

Usage ID Usage Name Usage Types Section
B8 Eject OSC 15.7

Ако искате да фалшифицирате натискане на клавиш за изваждане от USB HID-съвместим Arduino, като например 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();
  }
}

Що се отнася до реакцията на натискане на клавиш за изваждане от Windows, освен ако не е повдигнато като едно от свързаните с Media Control WM_ събития, очаквам, че ще трябва да напишете USB HID/ACPI драйвер, който открива и повдига самия OSC.

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

Съжалявам, че не мога да бъда повече полезен там, но се надяваме, че това ви насочва в правилната посока.

person AlwaysLearning    schedule 06.01.2021

Знам, че този въпрос е зададен преди години, но може би някои хора все още търсят този отговор и в крайна сметка ще намерят този въпрос, така че...

Ред 1805 от VoodooPS2Keyboard.cpp от VoodooPS2Controller от RehabMan казва, че виртуалният ключ на Mac за Eject Key е 0x92.

Справка:

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

person VitorMM    schedule 14.12.2016