keyboardioのキーボードを手に入れたため、Kaleidoscopeによるキーマップ変更をしていた。
しかし、どうしてもホストOSを取得できず、仕方ないため、開発者に聞いてみた。
以下、私のホストOS取得プログラム(一部)。
const macro_t *macroAction(uint8_t macro_id, KeyEvent &event) {
switch (macro_id) {
case M_OSSelect: // OS
if (keyToggledOff(event.state)) {
const int val = static_cast<int>(HostOS.os());
String os = String(val); // ArduinoのStringクラスを利用(キャスト)
if(HostOS.os() == kaleidoscope::hostos::LINUX) {
Macros.type(PSTR("Linux\n"));
}
else if (HostOS.os() == kaleidoscope::hostos::MACOS) {
Macros.type(PSTR("MacOS\n"));
}
else if (HostOS.os() == kaleidoscope::hostos::WINDOWS) {
Macros.type(PSTR("WindowsOS\n"));
}
else if (HostOS.os() == kaleidoscope::hostos::OTHER) {
Macros.type(PSTR("otherOS\n"));
}
else{
Macros.type(PSTR("none OS"));
}
return Macros.type(PSTR("OSSelect:"), os.c_str(), PSTR("\n"));
}
break;
return MACRO_NONE;
}
以下、出力結果。
Linux
OSSelect:0
何が何でも0が出力される。
どんなOSにつなごうとも0になる。
以下、開発者からの回答。
HostOS is 100% unsupported. It was very much a hack that depends on fingerprinting low-level USB device information since the USB standard does not support this. (When the QMK folks tried to add our implementation to their codebase, we advised them not to do it.)
On top of that, it depends on our old AVR USB implementation. It's not possible for it to work on the Preonic.
私のキーボードではホストOS取得できないとのこと。
そりゃそうだよね。
ちなみに、AVR USB端子は、自作用で使われるようだ。
ちょっと調べた結果は、市販品の製品には使われていない感じに見えた。
端末から操作できるならば、需要ありそうなんだが・・・。
以上。