mirror of
https://github.com/4yn/slidershim.git
synced 2025-02-17 10:58:35 +01:00
add yubideck hid support
This commit is contained in:
parent
856d2ea49a
commit
1fe10cf615
@ -5,6 +5,7 @@ pub enum HardwareSpec {
|
|||||||
TasollerOne,
|
TasollerOne,
|
||||||
TasollerTwo,
|
TasollerTwo,
|
||||||
Yuancon,
|
Yuancon,
|
||||||
|
Yubideck,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
@ -47,6 +48,10 @@ impl DeviceMode {
|
|||||||
spec: HardwareSpec::Yuancon,
|
spec: HardwareSpec::Yuancon,
|
||||||
disable_air: v["disableAirStrings"].as_bool()?,
|
disable_air: v["disableAirStrings"].as_bool()?,
|
||||||
},
|
},
|
||||||
|
"yubideck" => DeviceMode::Hardware {
|
||||||
|
spec: HardwareSpec::Yubideck,
|
||||||
|
disable_air: v["disableAirStrings"].as_bool()?,
|
||||||
|
},
|
||||||
"diva" => DeviceMode::DivaSlider {
|
"diva" => DeviceMode::DivaSlider {
|
||||||
port: v["divaSerialPort"].as_str()?.to_string(),
|
port: v["divaSerialPort"].as_str()?.to_string(),
|
||||||
brightness: u8::try_from(v["divaBrightness"].as_i64()?).ok()?,
|
brightness: u8::try_from(v["divaBrightness"].as_i64()?).ok()?,
|
||||||
|
@ -190,6 +190,49 @@ impl HidJob {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
HardwareSpec::Yubideck => Self::new(
|
||||||
|
state.clone(),
|
||||||
|
0x1973,
|
||||||
|
0x2001,
|
||||||
|
0x81, // Need to confirm
|
||||||
|
0x02, // Need to confirm
|
||||||
|
*disable_air,
|
||||||
|
|buf, input| {
|
||||||
|
if buf.len != 45 {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
input.ground.copy_from_slice(&buf.data[2..34]);
|
||||||
|
for i in 0..6 {
|
||||||
|
input.air[i ^ 1] = (buf.data[0] >> i) & 1;
|
||||||
|
}
|
||||||
|
for i in 0..3 {
|
||||||
|
input.extra[2 - i] = (buf.data[1] >> i) & 1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
WriteType::Interrupt,
|
||||||
|
|buf, lights| {
|
||||||
|
buf.len = 62;
|
||||||
|
let lights_nibbles: Vec<u8> = lights
|
||||||
|
.ground
|
||||||
|
.chunks(3)
|
||||||
|
.rev()
|
||||||
|
.flat_map(|x| x.iter().map(|y| *y >> 4))
|
||||||
|
.chain([0, 0, 0])
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
for (buf_chunk, state_chunk) in buf
|
||||||
|
.data
|
||||||
|
.chunks_mut(3)
|
||||||
|
.take(16)
|
||||||
|
.zip(lights_nibbles.chunks(6))
|
||||||
|
{
|
||||||
|
buf_chunk[0] = (state_chunk[0]) | (state_chunk[1] << 4);
|
||||||
|
buf_chunk[1] = (state_chunk[2]) | (state_chunk[3] << 4);
|
||||||
|
buf_chunk[2] = (state_chunk[4]) | (state_chunk[5] << 4);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,6 +181,7 @@
|
|||||||
<option value="tasoller-one">GAMO2 Tasoller, 1.0 HID Firmware</option>
|
<option value="tasoller-one">GAMO2 Tasoller, 1.0 HID Firmware</option>
|
||||||
<option value="tasoller-two">GAMO2 Tasoller, 2.0 HID Firmware</option>
|
<option value="tasoller-two">GAMO2 Tasoller, 2.0 HID Firmware</option>
|
||||||
<option value="yuancon">Yuancon Laverita, HID Firmware</option>
|
<option value="yuancon">Yuancon Laverita, HID Firmware</option>
|
||||||
|
<option value="yubideck">大四 / Yubideck, HID Firmware</option>
|
||||||
<option value="diva">Slider over Serial</option>
|
<option value="diva">Slider over Serial</option>
|
||||||
<option value="brokenithm">Brokenithm</option>
|
<option value="brokenithm">Brokenithm</option>
|
||||||
<option value="brokenithm-led">Brokenithm + Led</option>
|
<option value="brokenithm-led">Brokenithm + Led</option>
|
||||||
@ -188,7 +189,7 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{#if deviceMode.slice(0, 8) === "tasoller" || deviceMode.slice(0, 7) === "yuancon" || (deviceMode.slice(0, 10) === "brokenithm" && deviceMode !== "brokenithm-nostalgia")}
|
{#if deviceMode.slice(0, 8) === "tasoller" || deviceMode.slice(0, 7) === "yuancon" || deviceMode.slice(0, 8) === "yubideck" || (deviceMode.slice(0, 10) === "brokenithm" && deviceMode !== "brokenithm-nostalgia")}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="label" />
|
<div class="label" />
|
||||||
<div class="input">
|
<div class="input">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user