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
|
## Implemented
|
||||||
|
|
||||||
- [X] Setting/modifying built-in LED modes
|
- [X] Setting/modifying built-in LED modes
|
||||||
- [ ] Per-key LED setting
|
- [X] Per-key LED setting (PARTIALLY COMPLETE)
|
||||||
- [ ] Fancy LED modes (custom programs)
|
- [ ] Fancy LED modes (custom programs)
|
||||||
- [X] Daemon mode
|
- [X] Daemon mode
|
||||||
- [X] Saving settings for reload
|
- [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
|
// Return show-stopping errors, otherwise map error to a log level
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
aura::{aura_brightness_bytes, BuiltInModeByte},
|
aura::{aura_brightness_bytes, BuiltInModeByte, KeyColourArray},
|
||||||
config::Config,
|
config::Config,
|
||||||
error::AuraError,
|
error::AuraError,
|
||||||
laptops::*,
|
laptops::*,
|
||||||
@@ -52,15 +52,12 @@ impl RogCore {
|
|||||||
|
|
||||||
let dev_config = dev_handle.device().config_descriptor(0).unwrap();
|
let dev_config = dev_handle.device().config_descriptor(0).unwrap();
|
||||||
// Interface with outputs
|
// Interface with outputs
|
||||||
let mut led_interface_num = 0;
|
let mut interface = 0;
|
||||||
let mut keys_interface_num = 0;
|
|
||||||
for iface in dev_config.interfaces() {
|
for iface in dev_config.interfaces() {
|
||||||
for desc in iface.descriptors() {
|
for desc in iface.descriptors() {
|
||||||
for endpoint in desc.endpoint_descriptors() {
|
for endpoint in desc.endpoint_descriptors() {
|
||||||
if endpoint.address() == laptop.key_endpoint() {
|
if endpoint.address() == laptop.key_endpoint() {
|
||||||
keys_interface_num = desc.interface_number();
|
interface = desc.interface_number();
|
||||||
} else if endpoint.address() == laptop.led_endpoint() {
|
|
||||||
led_interface_num = desc.interface_number();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -69,13 +66,13 @@ impl RogCore {
|
|||||||
|
|
||||||
dev_handle.set_auto_detach_kernel_driver(true).unwrap();
|
dev_handle.set_auto_detach_kernel_driver(true).unwrap();
|
||||||
dev_handle
|
dev_handle
|
||||||
.claim_interface(keys_interface_num)
|
.claim_interface(interface)
|
||||||
.map_err(|err| AuraError::UsbError(err))?;
|
.map_err(|err| AuraError::UsbError(err))?;
|
||||||
|
|
||||||
Ok(RogCore {
|
Ok(RogCore {
|
||||||
handle: dev_handle,
|
handle: dev_handle,
|
||||||
initialised: false,
|
initialised: false,
|
||||||
led_endpoint: led_interface_num,
|
led_endpoint: laptop.led_endpoint(),
|
||||||
keys_endpoint: laptop.key_endpoint(),
|
keys_endpoint: laptop.key_endpoint(),
|
||||||
config: Config::default().read(),
|
config: Config::default().read(),
|
||||||
virt_keys: VirtKeys::new(),
|
virt_keys: VirtKeys::new(),
|
||||||
@@ -101,16 +98,12 @@ impl RogCore {
|
|||||||
|
|
||||||
fn aura_write(&mut self, message: &[u8]) -> Result<(), AuraError> {
|
fn aura_write(&mut self, message: &[u8]) -> Result<(), AuraError> {
|
||||||
self.handle
|
self.handle
|
||||||
.write_control(0x21, 0x09, 0x035D, 0, message, Duration::new(0, 5))
|
.write_interrupt(self.led_endpoint, message, Duration::from_micros(1))
|
||||||
.map_err(|err| AuraError::UsbError(err))?;
|
.unwrap();
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn aura_write_messages(&mut self, messages: &[&[u8]]) -> Result<(), AuraError> {
|
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 {
|
if !self.initialised {
|
||||||
self.aura_write(&LED_INIT1)?;
|
self.aura_write(&LED_INIT1)?;
|
||||||
self.aura_write(LED_INIT2.as_bytes())?;
|
self.aura_write(LED_INIT2.as_bytes())?;
|
||||||
@@ -126,10 +119,29 @@ impl RogCore {
|
|||||||
}
|
}
|
||||||
// Changes won't persist unless apply is set
|
// Changes won't persist unless apply is set
|
||||||
self.aura_write(&LED_APPLY)?;
|
self.aura_write(&LED_APPLY)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
self.handle
|
/// Initialise and clear the keyboard for custom effects
|
||||||
.release_interface(self.led_endpoint)
|
pub fn aura_effect_init(&mut self) -> Result<(), AuraError> {
|
||||||
.map_err(|err| AuraError::UsbError(err))?;
|
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(())
|
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_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 = 5dbc00010101001000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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 = 5dbc00010101001000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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 = 5dbc00010101001000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000
|
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 = 5dbc00010101101000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
F1 = 5dbc00010101101000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
F2 = 5dbc00010101101000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
F3 = 5dbc00010101101000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000
|
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,
|
||||||
F4 = 5dbc00010101101000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000
|
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,
|
||||||
F5 = 5dbc00010101101000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000
|
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,
|
||||||
F6 = 5dbc00010101101000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000
|
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,
|
||||||
F7 = 5dbc00010101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000
|
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,
|
||||||
F8 = 5dbc00010101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
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,
|
||||||
F9 = 5dbc00010101201000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
F10 = 5dbc00010101201000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
F11 = 5dbc00010101201000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
F12 = 5dbc00010101201000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
Del = 5dbc00010101201000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
~ = 5dbc00010101201000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000
|
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,
|
||||||
1 = 5dbc00010101201000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000
|
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,
|
||||||
2 = 5dbc00010101201000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000
|
~ = 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,
|
||||||
3 = 5dbc00010101201000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000
|
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,
|
||||||
4 = 5dbc00010101201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000
|
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,
|
||||||
5 = 5dbc00010101201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
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,
|
||||||
6 = 5dbc00010101301000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
7 = 5dbc00010101301000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
8 = 5dbc00010101301000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
9 = 5dbc00010101301000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
0 = 5dbc00010101301000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
- = 5dbc00010101301000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
= = 5dbc00010101301000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
BkSpc1 = 5dbc00010101301000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
BkSpc2 = 5dbc00010101301000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000
|
- = 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,
|
||||||
BkSpc3 = 5dbc00010101301000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000
|
= = 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,
|
||||||
Home = 5dbc00010101301000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000
|
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,
|
||||||
Tab = 5dbc00010101301000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
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,
|
||||||
Q = 5dbc00010101401000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
W = 5dbc00010101401000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
E = 5dbc00010101401000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
R = 5dbc00010101401000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
T = 5dbc00010101401000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
Y = 5dbc00010101401000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
U = 5dbc00010101401000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
I = 5dbc00010101401000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
O = 5dbc00010101401000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
P = 5dbc00010101401000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000
|
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,
|
||||||
[ = 5dbc00010101401000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000
|
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,
|
||||||
] = 5dbc00010101401000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000
|
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,
|
||||||
\ = 5dbc00010101401000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000
|
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,
|
||||||
PgUp = 5dbc00010101401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
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,
|
||||||
Caps = 5dbc00010101501000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
[ = 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,
|
||||||
A = 5dbc00010101501000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000
|
] = 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,
|
||||||
S = 5dbc00010101501000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000
|
\ = 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,
|
||||||
D = 5dbc00010101501000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
F = 5dbc00010101501000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000
|
|
||||||
G = 5dbc00010101501000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000
|
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,
|
||||||
H = 5dbc00010101501000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000
|
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,
|
||||||
J = 5dbc00010101501000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000
|
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,
|
||||||
K = 5dbc00010101501000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000
|
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,
|
||||||
L = 5dbc00010101501000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000
|
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,
|
||||||
; = 5dbc00010101501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000
|
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,
|
||||||
' = 5dbc00010101501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
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,
|
||||||
Enter1 = 5dbc00010101601000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
Enter2 = 5dbc00010101601000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
Enter3 = 5dbc00010101601000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
PgDn = 5dbc00010101601000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
; = 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,
|
||||||
LShfit = 5dbc00010101601000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000
|
' = 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,
|
||||||
Z = 5dbc00010101601000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000
|
|
||||||
X = 5dbc00010101601000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000
|
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,
|
||||||
C = 5dbc00010101601000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000
|
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,
|
||||||
V = 5dbc00010101601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000
|
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,
|
||||||
B = 5dbc00010101601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
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,
|
||||||
N = 5dbc00010101701000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
M = 5dbc00010101701000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
, = 5dbc00010101701000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
. = 5dbc00010101701000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
/ = 5dbc00010101701000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
Rshft1 = 5dbc00010101701000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
Rshft1 = 5dbc00010101701000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000
|
|
||||||
Rshft1 = 5dbc00010101701000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
End = 5dbc00010101701000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000
|
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,
|
||||||
Ctrl = 5dbc00010101701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000
|
, = 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,
|
||||||
LFn = 5dbc00010101701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
. = 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,
|
||||||
Meta = 5dbc00010101801000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
/ = 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,
|
||||||
LAlt = 5dbc00010101801000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
Space1 = 5dbc00010101801000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
Space2 = 5dbc00010101801000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
Space3 = 5dbc00010101801000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
Space4 = 5dbc00010101801000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
RAlt = 5dbc00010101801000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
PrtScn = 5dbc00010101801000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000
|
|
||||||
RCtrl = 5dbc00010101801000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000
|
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,
|
||||||
Up = 5dbc00010101801000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000
|
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,
|
||||||
RFn = 5dbc00010101801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000
|
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,
|
||||||
Left = 5dbc00010101901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff00000000000000
|
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,
|
||||||
Down = 5dbc00010101a00800ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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,
|
||||||
Right = 5dbc00010101a00800000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
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