mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Per-key LED effects trial. Better LED write
This commit is contained in:
@@ -53,7 +53,7 @@ Currently if no options are supplied for the CLI mode selection then a default i
|
||||
## Implemented
|
||||
|
||||
- [X] Setting/modifying built-in LED modes
|
||||
- [ ] Per-key LED setting
|
||||
- [X] Per-key LED setting (PARTIALLY COMPLETE)
|
||||
- [ ] Fancy LED modes (custom programs)
|
||||
- [X] Daemon mode
|
||||
- [X] Saving settings for reload
|
||||
|
||||
256
src/aura.rs
256
src/aura.rs
@@ -319,3 +319,259 @@ impl From<BuiltInModeByte> for u8 {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct KeyColourArray([[u8; 64]; 10]);
|
||||
impl KeyColourArray {
|
||||
pub fn new() -> Self {
|
||||
let mut set = [[0u8; 64]; 10];
|
||||
for (count, row) in set.iter_mut().enumerate() {
|
||||
row[0] = 0x5d; // Report ID
|
||||
row[1] = 0xbc; // Mode = custom??, 0xb3 is builtin
|
||||
row[2] = 0x00;
|
||||
row[3] = 0x01; // ??
|
||||
row[4] = 0x01; // ??, 4,5,6 are normally RGB for builtin mode colours
|
||||
row[5] = 0x01; // ??
|
||||
row[6] = (count as u8) << 4; // Key group
|
||||
row[7] = 0x10; // 0b00010000 addressing? flips for group a0
|
||||
if count == 9 {
|
||||
row[7] = 0x08; // 0b00001000
|
||||
}
|
||||
row[8] = 0x00;
|
||||
}
|
||||
KeyColourArray(set)
|
||||
}
|
||||
|
||||
pub fn set(&mut self, key: Key, r: u8, g: u8, b: u8) {
|
||||
let (rr, gg, bb) = self.key(key);
|
||||
*rr = r;
|
||||
*gg = g;
|
||||
*bb = b;
|
||||
}
|
||||
|
||||
pub fn key(&mut self, key: Key) -> (&mut u8, &mut u8, &mut u8) {
|
||||
// Tuples are indexes in to array
|
||||
let (row, col) = match key {
|
||||
Key::VolUp => (0, 15),
|
||||
Key::VolDown => (0, 18),
|
||||
Key::MicMute => (0, 21),
|
||||
Key::ROG => (0, 24),
|
||||
//
|
||||
Key::Esc => (1, 24),
|
||||
Key::F1 => (1, 30),
|
||||
Key::F2 => (1, 33),
|
||||
Key::F3 => (1, 36),
|
||||
Key::F4 => (1, 39),
|
||||
Key::F5 => (1, 45),
|
||||
Key::F6 => (1, 48),
|
||||
Key::F7 => (1, 51),
|
||||
Key::F8 => (1, 54),
|
||||
//
|
||||
Key::F9 => (2, 12),
|
||||
Key::F10 => (2, 15),
|
||||
Key::F11 => (2, 18),
|
||||
Key::F12 => (2, 21),
|
||||
Key::Del => (2, 24),
|
||||
Key::Tilde => (2, 39),
|
||||
Key::N1 => (2, 42),
|
||||
Key::N2 => (2, 45),
|
||||
Key::N3 => (2, 48),
|
||||
Key::N4 => (2, 51),
|
||||
Key::N5 => (2, 54),
|
||||
//
|
||||
Key::N6 => (3, 9),
|
||||
Key::N7 => (3, 12),
|
||||
Key::N8 => (3, 15),
|
||||
Key::N9 => (3, 18),
|
||||
Key::N0 => (3, 21),
|
||||
Key::Hyphen => (3, 24),
|
||||
Key::Equals => (3, 27),
|
||||
Key::BkSpc1 => (3, 30),
|
||||
Key::BkSpc2 => (3, 33),
|
||||
Key::BkSpc3 => (3, 36),
|
||||
Key::Home => (3, 39),
|
||||
Key::Tab => (3, 54),
|
||||
//
|
||||
Key::Q => (4, 9),
|
||||
Key::W => (4, 12),
|
||||
Key::E => (4, 15),
|
||||
Key::R => (4, 18),
|
||||
Key::T => (4, 21),
|
||||
Key::Y => (4, 24),
|
||||
Key::U => (4, 27),
|
||||
Key::I => (4, 30),
|
||||
Key::O => (4, 33),
|
||||
Key::P => (4, 36),
|
||||
Key::LBracket => (4, 39),
|
||||
Key::RBracket => (4, 42),
|
||||
Key::BackSlash => (4, 45),
|
||||
Key::PgUp => (4, 54),
|
||||
//
|
||||
Key::Caps => (5, 21),
|
||||
Key::A => (5, 24),
|
||||
Key::S => (5, 27),
|
||||
Key::D => (5, 30),
|
||||
Key::F => (5, 33),
|
||||
Key::G => (5, 36),
|
||||
Key::H => (5, 39),
|
||||
Key::J => (5, 42),
|
||||
Key::K => (5, 45),
|
||||
Key::L => (5, 48),
|
||||
Key::SemiColon => (5, 51),
|
||||
Key::Quote => (5, 54),
|
||||
//
|
||||
Key::Ret1 => (6, 12),
|
||||
Key::Ret2 => (6, 15),
|
||||
Key::Ret3 => (6, 18),
|
||||
Key::PgDn => (6, 21),
|
||||
Key::LShift => (6, 36),
|
||||
Key::Z => (6, 42),
|
||||
Key::X => (6, 45),
|
||||
Key::C => (6, 48),
|
||||
Key::V => (6, 51),
|
||||
Key::B => (6, 54),
|
||||
//
|
||||
Key::N => (7, 9),
|
||||
Key::M => (7, 12),
|
||||
Key::Comma => (7, 15),
|
||||
Key::Period => (7, 18),
|
||||
Key::FwdSlash => (7, 21),
|
||||
Key::Rshift1 => (7, 27),
|
||||
Key::Rshift2 => (7, 30),
|
||||
Key::Rshift3 => (7, 33),
|
||||
Key::End => (7, 36),
|
||||
Key::LCtrl => (7, 51),
|
||||
Key::LFn => (7, 54),
|
||||
//
|
||||
Key::Meta => (8, 9),
|
||||
Key::LAlt => (8, 12),
|
||||
Key::Space1 => (8, 15),
|
||||
Key::Space2 => (8, 18),
|
||||
Key::Space3 => (8, 21),
|
||||
Key::Space4 => (8, 24),
|
||||
Key::RAlt => (8, 30),
|
||||
Key::PrtSc => (8, 33),
|
||||
Key::RCtrl => (8, 36),
|
||||
Key::Up => (8, 42),
|
||||
Key::RFn => (8, 51),
|
||||
//
|
||||
Key::Left => (9, 54),
|
||||
|
||||
Key::Down => (10, 9),
|
||||
Key::Right => (10, 12),
|
||||
//_ => (0, 24),
|
||||
};
|
||||
// LOLOLOLOLOLOLOL! Look it's safe okay
|
||||
unsafe {
|
||||
(
|
||||
&mut *(&mut self.0[row][col] as *mut u8),
|
||||
&mut *(&mut self.0[row][col + 1] as *mut u8),
|
||||
&mut *(&mut self.0[row][col + 2] as *mut u8),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get(&self) -> &[[u8; 64]; 10] {
|
||||
&self.0
|
||||
}
|
||||
}
|
||||
|
||||
pub enum Key {
|
||||
VolUp,
|
||||
VolDown,
|
||||
MicMute,
|
||||
ROG,
|
||||
Esc,
|
||||
F1,
|
||||
F2,
|
||||
F3,
|
||||
F4,
|
||||
F5,
|
||||
F6,
|
||||
F7,
|
||||
F8,
|
||||
F9,
|
||||
F10,
|
||||
F11,
|
||||
F12,
|
||||
Del,
|
||||
Tilde,
|
||||
N1,
|
||||
N2,
|
||||
N3,
|
||||
N4,
|
||||
N5,
|
||||
N6,
|
||||
N7,
|
||||
N8,
|
||||
N9,
|
||||
N0,
|
||||
Hyphen,
|
||||
Equals,
|
||||
BkSpc1,
|
||||
BkSpc2,
|
||||
BkSpc3,
|
||||
Home,
|
||||
Tab,
|
||||
Q,
|
||||
W,
|
||||
E,
|
||||
R,
|
||||
T,
|
||||
Y,
|
||||
U,
|
||||
I,
|
||||
O,
|
||||
P,
|
||||
LBracket,
|
||||
RBracket,
|
||||
BackSlash,
|
||||
PgUp,
|
||||
Caps,
|
||||
A,
|
||||
S,
|
||||
D,
|
||||
F,
|
||||
G,
|
||||
H,
|
||||
J,
|
||||
K,
|
||||
L,
|
||||
SemiColon,
|
||||
Quote,
|
||||
Ret1,
|
||||
Ret2,
|
||||
Ret3,
|
||||
PgDn,
|
||||
LShift,
|
||||
Z,
|
||||
X,
|
||||
C,
|
||||
V,
|
||||
B,
|
||||
N,
|
||||
M,
|
||||
Comma,
|
||||
Period,
|
||||
FwdSlash,
|
||||
Rshift1,
|
||||
Rshift2,
|
||||
Rshift3,
|
||||
End,
|
||||
LCtrl,
|
||||
LFn,
|
||||
Meta,
|
||||
LAlt,
|
||||
Space1,
|
||||
Space2,
|
||||
Space3,
|
||||
Space4,
|
||||
RAlt,
|
||||
PrtSc,
|
||||
RCtrl,
|
||||
Up,
|
||||
Down,
|
||||
Left,
|
||||
Right,
|
||||
RFn,
|
||||
}
|
||||
|
||||
46
src/core.rs
46
src/core.rs
@@ -1,7 +1,7 @@
|
||||
// Return show-stopping errors, otherwise map error to a log level
|
||||
|
||||
use crate::{
|
||||
aura::{aura_brightness_bytes, BuiltInModeByte},
|
||||
aura::{aura_brightness_bytes, BuiltInModeByte, KeyColourArray},
|
||||
config::Config,
|
||||
error::AuraError,
|
||||
laptops::*,
|
||||
@@ -52,15 +52,12 @@ impl RogCore {
|
||||
|
||||
let dev_config = dev_handle.device().config_descriptor(0).unwrap();
|
||||
// Interface with outputs
|
||||
let mut led_interface_num = 0;
|
||||
let mut keys_interface_num = 0;
|
||||
let mut interface = 0;
|
||||
for iface in dev_config.interfaces() {
|
||||
for desc in iface.descriptors() {
|
||||
for endpoint in desc.endpoint_descriptors() {
|
||||
if endpoint.address() == laptop.key_endpoint() {
|
||||
keys_interface_num = desc.interface_number();
|
||||
} else if endpoint.address() == laptop.led_endpoint() {
|
||||
led_interface_num = desc.interface_number();
|
||||
interface = desc.interface_number();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -69,13 +66,13 @@ impl RogCore {
|
||||
|
||||
dev_handle.set_auto_detach_kernel_driver(true).unwrap();
|
||||
dev_handle
|
||||
.claim_interface(keys_interface_num)
|
||||
.claim_interface(interface)
|
||||
.map_err(|err| AuraError::UsbError(err))?;
|
||||
|
||||
Ok(RogCore {
|
||||
handle: dev_handle,
|
||||
initialised: false,
|
||||
led_endpoint: led_interface_num,
|
||||
led_endpoint: laptop.led_endpoint(),
|
||||
keys_endpoint: laptop.key_endpoint(),
|
||||
config: Config::default().read(),
|
||||
virt_keys: VirtKeys::new(),
|
||||
@@ -101,16 +98,12 @@ impl RogCore {
|
||||
|
||||
fn aura_write(&mut self, message: &[u8]) -> Result<(), AuraError> {
|
||||
self.handle
|
||||
.write_control(0x21, 0x09, 0x035D, 0, message, Duration::new(0, 5))
|
||||
.map_err(|err| AuraError::UsbError(err))?;
|
||||
.write_interrupt(self.led_endpoint, message, Duration::from_micros(1))
|
||||
.unwrap();
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn aura_write_messages(&mut self, messages: &[&[u8]]) -> Result<(), AuraError> {
|
||||
self.handle
|
||||
.claim_interface(self.led_endpoint)
|
||||
.map_err(|err| AuraError::UsbError(err))?;
|
||||
|
||||
if !self.initialised {
|
||||
self.aura_write(&LED_INIT1)?;
|
||||
self.aura_write(LED_INIT2.as_bytes())?;
|
||||
@@ -126,10 +119,29 @@ impl RogCore {
|
||||
}
|
||||
// Changes won't persist unless apply is set
|
||||
self.aura_write(&LED_APPLY)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
self.handle
|
||||
.release_interface(self.led_endpoint)
|
||||
.map_err(|err| AuraError::UsbError(err))?;
|
||||
/// Initialise and clear the keyboard for custom effects
|
||||
pub fn aura_effect_init(&mut self) -> Result<(), AuraError> {
|
||||
let mut init = [0u8; 64];
|
||||
init[0] = 0x5d; // Report ID
|
||||
init[1] = 0xbc; // Mode = custom??, 0xb3 is builtin
|
||||
self.aura_write(&init)?;
|
||||
self.initialised = true;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Write an effect block
|
||||
///
|
||||
/// `aura_effect_init` must be called any effect routine, and called only once.
|
||||
pub fn aura_write_effect(&mut self, effect: &[KeyColourArray]) -> Result<(), AuraError> {
|
||||
for key_colours in effect {
|
||||
for row in key_colours.get() {
|
||||
self.aura_write(row)?;
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
203
src/laptops/gx502gw.rs
Normal file
203
src/laptops/gx502gw.rs
Normal file
@@ -0,0 +1,203 @@
|
||||
use crate::aura::{BuiltInModeByte, Key, KeyColourArray};
|
||||
use crate::core::{Backlight, RogCore};
|
||||
use crate::error::AuraError;
|
||||
use crate::virt_device::ConsumerKeys;
|
||||
//use keycode::{KeyMap, KeyMappingId, KeyState, KeyboardState};
|
||||
use super::Laptop;
|
||||
use log::info;
|
||||
|
||||
pub(super) struct LaptopGX502GW {
|
||||
usb_vendor: u16,
|
||||
usb_product: u16,
|
||||
board_name: &'static str,
|
||||
prod_family: &'static str,
|
||||
report_filter_bytes: [u8; 2],
|
||||
min_led_bright: u8,
|
||||
max_led_bright: u8,
|
||||
led_endpoint: u8,
|
||||
key_endpoint: u8,
|
||||
supported_modes: [BuiltInModeByte; 12],
|
||||
backlight: Backlight,
|
||||
per_key_led: Vec<KeyColourArray>,
|
||||
}
|
||||
|
||||
impl LaptopGX502GW {
|
||||
pub(super) fn new() -> Self {
|
||||
// Setting up a sample effect to run when ROG pressed
|
||||
let mut per_key_led = Vec::new();
|
||||
let mut key_colours = KeyColourArray::new();
|
||||
key_colours.set(Key::ROG, 255, 0, 0);
|
||||
key_colours.set(Key::L, 255, 0, 0);
|
||||
key_colours.set(Key::I, 255, 0, 0);
|
||||
key_colours.set(Key::N, 255, 0, 0);
|
||||
key_colours.set(Key::U, 255, 0, 0);
|
||||
key_colours.set(Key::X, 255, 0, 0);
|
||||
per_key_led.push(key_colours.clone());
|
||||
|
||||
for _ in 0..3 {
|
||||
for _ in 0..50 {
|
||||
*key_colours.key(Key::ROG).0 -= 5;
|
||||
*key_colours.key(Key::L).0 -= 5;
|
||||
*key_colours.key(Key::I).0 -= 5;
|
||||
*key_colours.key(Key::N).0 -= 5;
|
||||
*key_colours.key(Key::U).0 -= 5;
|
||||
*key_colours.key(Key::X).0 -= 5;
|
||||
per_key_led.push(key_colours.clone());
|
||||
}
|
||||
for _ in 0..50 {
|
||||
*key_colours.key(Key::ROG).0 += 5;
|
||||
*key_colours.key(Key::L).0 += 5;
|
||||
*key_colours.key(Key::I).0 += 5;
|
||||
*key_colours.key(Key::N).0 += 5;
|
||||
*key_colours.key(Key::U).0 += 5;
|
||||
*key_colours.key(Key::X).0 += 5;
|
||||
per_key_led.push(key_colours.clone());
|
||||
}
|
||||
}
|
||||
|
||||
// Find backlight
|
||||
LaptopGX502GW {
|
||||
usb_vendor: 0x0B05,
|
||||
usb_product: 0x1866,
|
||||
// from `cat /sys/class/dmi/id/board_name`
|
||||
board_name: "GX502GW",
|
||||
// from `cat /sys/class/dmi/id/product_family`
|
||||
prod_family: "Zephyrus S",
|
||||
report_filter_bytes: [0x5a, 0x02],
|
||||
min_led_bright: 0x00,
|
||||
max_led_bright: 0x03,
|
||||
//from `lsusb -vd 0b05:1866`
|
||||
led_endpoint: 0x04,
|
||||
//from `lsusb -vd 0b05:1866`
|
||||
key_endpoint: 0x83,
|
||||
supported_modes: [
|
||||
BuiltInModeByte::Stable,
|
||||
BuiltInModeByte::Breathe,
|
||||
BuiltInModeByte::Cycle,
|
||||
BuiltInModeByte::Rainbow,
|
||||
BuiltInModeByte::Rain,
|
||||
BuiltInModeByte::Random,
|
||||
BuiltInModeByte::Highlight,
|
||||
BuiltInModeByte::Laser,
|
||||
BuiltInModeByte::Ripple,
|
||||
BuiltInModeByte::Pulse,
|
||||
BuiltInModeByte::ThinZoomy,
|
||||
BuiltInModeByte::WideZoomy,
|
||||
],
|
||||
backlight: Backlight::new("intel_backlight").unwrap(),
|
||||
per_key_led,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl LaptopGX502GW {
|
||||
fn do_keypress_actions(&self, rogcore: &mut RogCore) -> Result<(), AuraError> {
|
||||
if let Some(key_buf) = rogcore.poll_keyboard(&self.report_filter_bytes) {
|
||||
match GX502GWKeys::from(key_buf[1]) {
|
||||
GX502GWKeys::LedBrightUp => {
|
||||
rogcore.aura_bright_inc(&self.supported_modes, self.max_led_bright)?;
|
||||
}
|
||||
GX502GWKeys::LedBrightDown => {
|
||||
rogcore.aura_bright_dec(&self.supported_modes, self.min_led_bright)?;
|
||||
}
|
||||
GX502GWKeys::AuraNext => rogcore.aura_mode_next(&self.supported_modes)?,
|
||||
GX502GWKeys::AuraPrevious => rogcore.aura_mode_prev(&self.supported_modes)?,
|
||||
GX502GWKeys::ScreenBrightUp => self.backlight.step_up(),
|
||||
GX502GWKeys::ScreenBrightDown => self.backlight.step_down(),
|
||||
GX502GWKeys::Sleep => rogcore.suspend_with_systemd(),
|
||||
GX502GWKeys::AirplaneMode => rogcore.toggle_airplane_mode(),
|
||||
GX502GWKeys::MicToggle => {}
|
||||
GX502GWKeys::Fan => {}
|
||||
GX502GWKeys::ScreenToggle => {
|
||||
rogcore.virt_keys().press(ConsumerKeys::BacklightTog.into());
|
||||
}
|
||||
GX502GWKeys::TouchPadToggle => {
|
||||
let mut key = [0u8; 32];
|
||||
key[0] = 0x01;
|
||||
key[3] = 0x070;
|
||||
rogcore.virt_keys().press(key);
|
||||
}
|
||||
GX502GWKeys::Rog => {
|
||||
rogcore.aura_effect_init()?;
|
||||
rogcore.aura_write_effect(&self.per_key_led)?;
|
||||
// let mut key = [0u8; 32];
|
||||
// key[0] = 0x01;
|
||||
// key[3] = 0x68; // XF86Tools? F13
|
||||
// rogcore.virt_keys().press(key);
|
||||
}
|
||||
GX502GWKeys::None => {
|
||||
if key_buf[0] != 0x5A {
|
||||
info!("Unmapped key, attempt passthrough: {:X?}", &key_buf[1]);
|
||||
rogcore.virt_keys().press(key_buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl Laptop for LaptopGX502GW {
|
||||
fn run(&self, rogcore: &mut RogCore) -> Result<(), AuraError> {
|
||||
self.do_keypress_actions(rogcore)
|
||||
}
|
||||
fn led_endpoint(&self) -> u8 {
|
||||
self.led_endpoint
|
||||
}
|
||||
fn key_endpoint(&self) -> u8 {
|
||||
self.key_endpoint
|
||||
}
|
||||
fn usb_vendor(&self) -> u16 {
|
||||
self.usb_vendor
|
||||
}
|
||||
fn usb_product(&self) -> u16 {
|
||||
self.usb_product
|
||||
}
|
||||
fn supported_modes(&self) -> &[BuiltInModeByte] {
|
||||
&self.supported_modes
|
||||
}
|
||||
fn board_name(&self) -> &str {
|
||||
&self.board_name
|
||||
}
|
||||
fn prod_family(&self) -> &str {
|
||||
&self.prod_family
|
||||
}
|
||||
}
|
||||
|
||||
enum GX502GWKeys {
|
||||
Rog = 0x38,
|
||||
MicToggle = 0x7C,
|
||||
Fan = 0xAE,
|
||||
ScreenToggle = 0x35,
|
||||
ScreenBrightDown = 0x10,
|
||||
ScreenBrightUp = 0x20,
|
||||
TouchPadToggle = 0x6b,
|
||||
Sleep = 0x6C,
|
||||
AirplaneMode = 0x88,
|
||||
LedBrightUp = 0xC4,
|
||||
LedBrightDown = 0xC5,
|
||||
AuraPrevious = 0xB2,
|
||||
AuraNext = 0xB3,
|
||||
None,
|
||||
}
|
||||
|
||||
impl From<u8> for GX502GWKeys {
|
||||
fn from(byte: u8) -> Self {
|
||||
match byte {
|
||||
0x38 => GX502GWKeys::Rog,
|
||||
0x7C => GX502GWKeys::MicToggle,
|
||||
0xAE => GX502GWKeys::Fan,
|
||||
0x35 => GX502GWKeys::ScreenToggle,
|
||||
0x10 => GX502GWKeys::ScreenBrightDown,
|
||||
0x20 => GX502GWKeys::ScreenBrightUp,
|
||||
0x6b => GX502GWKeys::TouchPadToggle,
|
||||
0x6C => GX502GWKeys::Sleep,
|
||||
0x88 => GX502GWKeys::AirplaneMode,
|
||||
0xC4 => GX502GWKeys::LedBrightUp,
|
||||
0xC5 => GX502GWKeys::LedBrightDown,
|
||||
0xB2 => GX502GWKeys::AuraPrevious,
|
||||
0xB3 => GX502GWKeys::AuraNext,
|
||||
_ => GX502GWKeys::None,
|
||||
}
|
||||
}
|
||||
}
|
||||
45
src/laptops/mod.rs
Normal file
45
src/laptops/mod.rs
Normal file
@@ -0,0 +1,45 @@
|
||||
use crate::aura::BuiltInModeByte;
|
||||
use crate::core::RogCore;
|
||||
use crate::error::AuraError;
|
||||
//use keycode::{KeyMap, KeyMappingId, KeyState, KeyboardState};
|
||||
use log::info;
|
||||
|
||||
mod gx502gw;
|
||||
use gx502gw::LaptopGX502GW;
|
||||
|
||||
pub(crate) fn match_laptop() -> Box<dyn Laptop> {
|
||||
let dmi = sysfs_class::DmiId::default();
|
||||
let board_name = dmi.board_name().unwrap();
|
||||
match board_name.as_str() {
|
||||
// The hell does it have a \n for anyway?
|
||||
"GX502GW\n" => {
|
||||
info!("Found GX502GW");
|
||||
Box::new(LaptopGX502GW::new())
|
||||
}
|
||||
_ => {
|
||||
panic!("could not match laptop");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// All laptop models should implement this trait. The role of a `Laptop` is to
|
||||
/// "drive" the `RogCore`.
|
||||
///
|
||||
/// `do_hotkey_action` is passed the byte that a hotkey emits, and is expected to
|
||||
/// perform whichever action matches that. For now the only key bytes passed in are
|
||||
/// the ones which match `byte[0] == hotkey_group_byte`. On the GX502GW the keyboard
|
||||
/// has 3 explicit groups: main, vol+media, and the ones that the Linux kernel doesn't
|
||||
/// map.
|
||||
///
|
||||
/// If using the `keycode` crate to build keyboard input, the report must be prefixed
|
||||
/// with the report ID (usually `0x01` for the virtual keyboard).
|
||||
pub(crate) trait Laptop {
|
||||
fn board_name(&self) -> &str;
|
||||
fn prod_family(&self) -> &str;
|
||||
fn run(&self, core: &mut RogCore) -> Result<(), AuraError>;
|
||||
fn led_endpoint(&self) -> u8;
|
||||
fn key_endpoint(&self) -> u8;
|
||||
fn usb_vendor(&self) -> u16;
|
||||
fn usb_product(&self) -> u16;
|
||||
fn supported_modes(&self) -> &[BuiltInModeByte];
|
||||
}
|
||||
@@ -1,97 +1,107 @@
|
||||
VOL_DN = 5dbc00010101001000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
VOL_UP = 5dbc00010101001000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
MIC = 5dbc00010101001000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
ROG = 5dbc00010101001000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
ESC = 5dbc00010101101000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
F1 = 5dbc00010101101000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000
|
||||
F2 = 5dbc00010101101000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000
|
||||
F3 = 5dbc00010101101000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000
|
||||
F4 = 5dbc00010101101000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000
|
||||
F5 = 5dbc00010101101000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000
|
||||
F6 = 5dbc00010101101000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000
|
||||
F7 = 5dbc00010101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000
|
||||
F8 = 5dbc00010101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
||||
F9 = 5dbc00010101201000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
F10 = 5dbc00010101201000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
F11 = 5dbc00010101201000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
F12 = 5dbc00010101201000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Del = 5dbc00010101201000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
~ = 5dbc00010101201000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000
|
||||
1 = 5dbc00010101201000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000
|
||||
2 = 5dbc00010101201000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000
|
||||
3 = 5dbc00010101201000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000
|
||||
4 = 5dbc00010101201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000
|
||||
5 = 5dbc00010101201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
||||
6 = 5dbc00010101301000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
7 = 5dbc00010101301000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
8 = 5dbc00010101301000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
9 = 5dbc00010101301000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0 = 5dbc00010101301000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
- = 5dbc00010101301000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
= = 5dbc00010101301000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000
|
||||
BkSpc1 = 5dbc00010101301000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000
|
||||
BkSpc2 = 5dbc00010101301000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000
|
||||
BkSpc3 = 5dbc00010101301000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000
|
||||
Home = 5dbc00010101301000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000
|
||||
Tab = 5dbc00010101301000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
||||
Q = 5dbc00010101401000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
W = 5dbc00010101401000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
E = 5dbc00010101401000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
R = 5dbc00010101401000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
T = 5dbc00010101401000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Y = 5dbc00010101401000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
U = 5dbc00010101401000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000
|
||||
I = 5dbc00010101401000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000
|
||||
O = 5dbc00010101401000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000
|
||||
P = 5dbc00010101401000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000
|
||||
[ = 5dbc00010101401000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000
|
||||
] = 5dbc00010101401000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000
|
||||
\ = 5dbc00010101401000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000
|
||||
PgUp = 5dbc00010101401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
||||
Caps = 5dbc00010101501000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
A = 5dbc00010101501000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
S = 5dbc00010101501000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000
|
||||
D = 5dbc00010101501000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000
|
||||
F = 5dbc00010101501000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000
|
||||
G = 5dbc00010101501000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000
|
||||
H = 5dbc00010101501000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000
|
||||
J = 5dbc00010101501000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000
|
||||
K = 5dbc00010101501000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000
|
||||
L = 5dbc00010101501000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000
|
||||
; = 5dbc00010101501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000
|
||||
' = 5dbc00010101501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
||||
Enter1 = 5dbc00010101601000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Enter2 = 5dbc00010101601000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Enter3 = 5dbc00010101601000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
PgDn = 5dbc00010101601000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
LShfit = 5dbc00010101601000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000
|
||||
Z = 5dbc00010101601000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000
|
||||
X = 5dbc00010101601000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000
|
||||
C = 5dbc00010101601000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000
|
||||
V = 5dbc00010101601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000
|
||||
B = 5dbc00010101601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
||||
N = 5dbc00010101701000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
M = 5dbc00010101701000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
, = 5dbc00010101701000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
. = 5dbc00010101701000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
/ = 5dbc00010101701000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Rshft1 = 5dbc00010101701000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000
|
||||
Rshft1 = 5dbc00010101701000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000
|
||||
Rshft1 = 5dbc00010101701000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000
|
||||
End = 5dbc00010101701000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000
|
||||
Ctrl = 5dbc00010101701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000
|
||||
LFn = 5dbc00010101701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
||||
Meta = 5dbc00010101801000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
LAlt = 5dbc00010101801000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Space1 = 5dbc00010101801000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Space2 = 5dbc00010101801000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Space3 = 5dbc00010101801000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Space4 = 5dbc00010101801000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
RAlt = 5dbc00010101801000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000
|
||||
PrtScn = 5dbc00010101801000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000
|
||||
RCtrl = 5dbc00010101801000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000
|
||||
Up = 5dbc00010101801000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000
|
||||
RFn = 5dbc00010101801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000
|
||||
Left = 5dbc00010101901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
||||
Down = 5dbc00010101a00800ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Right = 5dbc00010101a00800000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
VOL_DN = 5d,bc,00,01,01,01,00,10,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
VOL_UP = 5d,bc,00,01,01,01,00,10,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
MIC = 5d,bc,00,01,01,01,00,10,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
ROG = 5d,bc,00,01,01,01,00,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
|
||||
ESC = 5d,bc,00,01,01,01,10,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
F1 = 5d,bc,00,01,01,01,10,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
F2 = 5d,bc,00,01,01,01,10,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
F3 = 5d,bc,00,01,01,01,10,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
F4 = 5d,bc,00,01,01,01,10,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
F5 = 5d,bc,00,01,01,01,10,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
F6 = 5d,bc,00,01,01,01,10,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
F7 = 5d,bc,00,01,01,01,10,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,
|
||||
F8 = 5d,bc,00,01,01,01,10,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,
|
||||
|
||||
F9 = 5d,bc,00,01,01,01,20,10,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
F10 = 5d,bc,00,01,01,01,20,10,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
F11 = 5d,bc,00,01,01,01,20,10,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
F12 = 5d,bc,00,01,01,01,20,10,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Del = 5d,bc,00,01,01,01,20,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
~ = 5d,bc,00,01,01,01,20,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
1 = 5d,bc,00,01,01,01,20,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
2 = 5d,bc,00,01,01,01,20,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
3 = 5d,bc,00,01,01,01,20,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
4 = 5d,bc,00,01,01,01,20,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,
|
||||
5 = 5d,bc,00,01,01,01,20,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,
|
||||
|
||||
6 = 5d,bc,00,01,01,01,30,10,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
7 = 5d,bc,00,01,01,01,30,10,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
8 = 5d,bc,00,01,01,01,30,10,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
9 = 5d,bc,00,01,01,01,30,10,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
0 = 5d,bc,00,01,01,01,30,10,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
- = 5d,bc,00,01,01,01,30,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
= = 5d,bc,00,01,01,01,30,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
BkSpc1 = 5d,bc,00,01,01,01,30,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
BkSpc2 = 5d,bc,00,01,01,01,30,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
BkSpc3 = 5d,bc,00,01,01,01,30,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Home = 5d,bc,00,01,01,01,30,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Tab = 5d,bc,00,01,01,01,30,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,
|
||||
|
||||
Q = 5d,bc,00,01,01,01,40,10,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
W = 5d,bc,00,01,01,01,40,10,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
E = 5d,bc,00,01,01,01,40,10,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
R = 5d,bc,00,01,01,01,40,10,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
T = 5d,bc,00,01,01,01,40,10,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Y = 5d,bc,00,01,01,01,40,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
U = 5d,bc,00,01,01,01,40,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
I = 5d,bc,00,01,01,01,40,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
O = 5d,bc,00,01,01,01,40,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
P = 5d,bc,00,01,01,01,40,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
[ = 5d,bc,00,01,01,01,40,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
] = 5d,bc,00,01,01,01,40,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
\ = 5d,bc,00,01,01,01,40,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
PgUp = 5d,bc,00,01,01,01,40,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,
|
||||
|
||||
Caps = 5d,bc,00,01,01,01,50,10,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
A = 5d,bc,00,01,01,01,50,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
S = 5d,bc,00,01,01,01,50,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
D = 5d,bc,00,01,01,01,50,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
F = 5d,bc,00,01,01,01,50,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
G = 5d,bc,00,01,01,01,50,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
H = 5d,bc,00,01,01,01,50,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
J = 5d,bc,00,01,01,01,50,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
K = 5d,bc,00,01,01,01,50,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
L = 5d,bc,00,01,01,01,50,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
; = 5d,bc,00,01,01,01,50,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,
|
||||
' = 5d,bc,00,01,01,01,50,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,
|
||||
|
||||
Enter1 = 5d,bc,00,01,01,01,60,10,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Enter2 = 5d,bc,00,01,01,01,60,10,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Enter3 = 5d,bc,00,01,01,01,60,10,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
PgDn = 5d,bc,00,01,01,01,60,10,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
LShfit = 5d,bc,00,01,01,01,60,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Z = 5d,bc,00,01,01,01,60,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
X = 5d,bc,00,01,01,01,60,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
C = 5d,bc,00,01,01,01,60,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
V = 5d,bc,00,01,01,01,60,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,
|
||||
B = 5d,bc,00,01,01,01,60,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,
|
||||
|
||||
N = 5d,bc,00,01,01,01,70,10,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
M = 5d,bc,00,01,01,01,70,10,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
, = 5d,bc,00,01,01,01,70,10,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
. = 5d,bc,00,01,01,01,70,10,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
/ = 5d,bc,00,01,01,01,70,10,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Rshft1 = 5d,bc,00,01,01,01,70,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Rshft1 = 5d,bc,00,01,01,01,70,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Rshft1 = 5d,bc,00,01,01,01,70,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
End = 5d,bc,00,01,01,01,70,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Ctrl = 5d,bc,00,01,01,01,70,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,
|
||||
LFn = 5d,bc,00,01,01,01,70,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,
|
||||
|
||||
Meta = 5d,bc,00,01,01,01,80,10,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
LAlt = 5d,bc,00,01,01,01,80,10,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Space1 = 5d,bc,00,01,01,01,80,10,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Space2 = 5d,bc,00,01,01,01,80,10,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Space3 = 5d,bc,00,01,01,01,80,10,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Space4 = 5d,bc,00,01,01,01,80,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
RAlt = 5d,bc,00,01,01,01,80,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
PrtScn = 5d,bc,00,01,01,01,80,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
RCtrl = 5d,bc,00,01,01,01,80,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Up = 5d,bc,00,01,01,01,80,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
RFn = 5d,bc,00,01,01,01,80,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,
|
||||
|
||||
Left = 5d,bc,00,01,01,01,90,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,
|
||||
|
||||
Down = 5d,bc,00,01,01,01,a0,08,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
Right = 5d,bc,00,01,01,01,a0,08,00,00,00,00,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
|
||||
BIN
wireshark_data/per_key_raw_bytes.ods
Normal file
BIN
wireshark_data/per_key_raw_bytes.ods
Normal file
Binary file not shown.
Reference in New Issue
Block a user