mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Support fn+calc on G712. Customise ROG key
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "rog-daemon"
|
||||
version = "0.14.5"
|
||||
version = "0.15.0"
|
||||
license = "MPL-2.0"
|
||||
readme = "README.md"
|
||||
authors = ["Luke <luke@ljones.dev>"]
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
use crate::virt_device::ConsumerKeys;
|
||||
use rog_client::aura_modes::AuraModes;
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use std::fs::{File, OpenOptions};
|
||||
@@ -7,6 +8,7 @@ pub static CONFIG_PATH: &str = "/etc/rogcore.conf";
|
||||
|
||||
#[derive(Default, Deserialize, Serialize)]
|
||||
pub struct Config {
|
||||
pub rog_key: ConsumerKeys,
|
||||
pub fan_mode: u8,
|
||||
pub bat_charge_limit: u8,
|
||||
pub brightness: u8,
|
||||
|
||||
@@ -7,7 +7,7 @@ use rog_client::{
|
||||
error::AuraError,
|
||||
};
|
||||
//use keycode::{KeyMap, KeyMappingId, KeyState, KeyboardState};
|
||||
use crate::virt_device::ConsumerKeys;
|
||||
use crate::virt_device::{ConsumerKeys, KeyboardKeys};
|
||||
use log::{info, warn};
|
||||
|
||||
static HELP_ADDRESS: &str = "https://github.com/flukejones/rog-core";
|
||||
@@ -192,30 +192,22 @@ impl LaptopBase {
|
||||
}
|
||||
FnKeys::ScreenBrightUp => rogcore.virt_keys().press(ConsumerKeys::BacklightInc.into()), //self.backlight.step_up(),
|
||||
FnKeys::ScreenBrightDn => rogcore.virt_keys().press(ConsumerKeys::BacklightDec.into()),
|
||||
FnKeys::ScreenToggle => rogcore.virt_keys().press(ConsumerKeys::BacklightTog.into()),
|
||||
FnKeys::ScreenToggle => {}
|
||||
FnKeys::Sleep => rogcore.suspend_with_systemd(),
|
||||
FnKeys::AirplaneMode => rogcore.toggle_airplane_mode(),
|
||||
FnKeys::MicToggle => {}
|
||||
FnKeys::MicToggle => rogcore.virt_keys().press(KeyboardKeys::MicToggle.into()),
|
||||
FnKeys::Fan => {
|
||||
rogcore.fan_mode_step(&mut config).unwrap_or_else(|err| {
|
||||
warn!("Couldn't toggle fan mode: {:?}", err);
|
||||
});
|
||||
}
|
||||
|
||||
FnKeys::TouchPadToggle => {
|
||||
let mut key = [0u8; 32];
|
||||
key[0] = 0x01;
|
||||
key[3] = 0x070;
|
||||
rogcore.virt_keys().press(key);
|
||||
}
|
||||
FnKeys::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);
|
||||
}
|
||||
FnKeys::TouchPadToggle => rogcore
|
||||
.virt_keys()
|
||||
.press(KeyboardKeys::TouchpadToggle.into()),
|
||||
FnKeys::Rog => rogcore.virt_keys().press(config.rog_key.into()),
|
||||
FnKeys::Calc => rogcore
|
||||
.virt_keys()
|
||||
.press(ConsumerKeys::LaunchCalculator.into()),
|
||||
FnKeys::None => {
|
||||
if key_buf[0] != 0x5A {
|
||||
info!("Unmapped key, attempt passthrough: {:X?}", &key_buf[1]);
|
||||
@@ -266,6 +258,7 @@ pub enum FnKeys {
|
||||
LedBrightDown = 0xC5,
|
||||
AuraPrevious = 0xB2,
|
||||
AuraNext = 0xB3,
|
||||
Calc = 0x90,
|
||||
None,
|
||||
}
|
||||
|
||||
@@ -285,6 +278,7 @@ impl From<u8> for FnKeys {
|
||||
0xC5 => FnKeys::LedBrightDown,
|
||||
0xB2 => FnKeys::AuraPrevious,
|
||||
0xB3 => FnKeys::AuraNext,
|
||||
0x90 => FnKeys::Calc,
|
||||
_ => FnKeys::None,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ use rog_client::{
|
||||
};
|
||||
use std::io::Write;
|
||||
|
||||
static VERSION: &str = "0.14.5";
|
||||
static VERSION: &str = "0.15.0";
|
||||
|
||||
#[derive(Options)]
|
||||
struct CLIStart {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use log::error;
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use uhid_virt::{Bus, CreateParams, UHIDDevice};
|
||||
|
||||
/// Create a virtual device to emit key-presses
|
||||
@@ -113,12 +114,11 @@ impl VirtKeys {
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
#[derive(Copy, Clone)]
|
||||
#[derive(Copy, Clone, Deserialize, Serialize)]
|
||||
pub enum ConsumerKeys {
|
||||
Power = 0x30,
|
||||
Sleep = 0x32,
|
||||
Menu = 0x0040,
|
||||
|
||||
// Menu = 0x40,
|
||||
MediaRecord = 0xB2,
|
||||
MediaFastFwd = 0xB3,
|
||||
MediaRewind = 0xB4,
|
||||
@@ -126,41 +126,21 @@ pub enum ConsumerKeys {
|
||||
MediaPrev = 0xB6,
|
||||
MediaStop = 0xB7,
|
||||
MediaPlayPause = 0xCD,
|
||||
MediaPause = 0xB0,
|
||||
|
||||
MediaVolMute = 0xE2,
|
||||
MediaVolUp = 0xE9,
|
||||
MediaVolDown = 0xEA,
|
||||
|
||||
BacklightInc = 0x6F,
|
||||
BacklightDec = 0x70,
|
||||
|
||||
BacklightTog = 0x72, // USAGE (Backlight toggle? display toggle?)
|
||||
BacklightMin = 0x73,
|
||||
BacklightMax = 0x74,
|
||||
|
||||
// BacklightTog = 0x72, // USAGE (Backlight toggle? display toggle?)
|
||||
ControlConfig = 0x183,
|
||||
|
||||
LaunchWordEditor = 0x184,
|
||||
LaunchTextEditor = 0x185,
|
||||
LaunchSpreadSheet = 0x186,
|
||||
LaunchGraphicsEditor = 0x187,
|
||||
LaunchPresentationApp = 0x188,
|
||||
LaunchDatabaseEditor = 0x189,
|
||||
LaunchEmailApp = 0x18A,
|
||||
LaunchNewsReader = 0x18B,
|
||||
LaunchCalendarApp = 0x018E,
|
||||
LaunchTaskManagementApp = 0x18F,
|
||||
LaunchCalendar = 0x018E,
|
||||
LaunchCalculator = 0x192,
|
||||
LaunchWebBrowser = 0x196,
|
||||
ControlPanel = 0x19F,
|
||||
|
||||
VideoOutStep = 0x82,
|
||||
|
||||
Documents = 0x1A7,
|
||||
// VideoOutStep = 0x82,
|
||||
FileBrowser = 0x1B4,
|
||||
ImageBrowser = 0x1B6,
|
||||
AudioBrowser = 0x1B7,
|
||||
MovieBrowser = 0x1B8,
|
||||
}
|
||||
|
||||
impl From<ConsumerKeys> for [u8; 32] {
|
||||
@@ -172,3 +152,30 @@ impl From<ConsumerKeys> for [u8; 32] {
|
||||
bytes
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for ConsumerKeys {
|
||||
fn default() -> Self {
|
||||
ConsumerKeys::ControlConfig
|
||||
}
|
||||
}
|
||||
|
||||
/// Implements only a small subset of useful keys
|
||||
#[allow(dead_code)]
|
||||
#[derive(Copy, Clone)]
|
||||
pub enum KeyboardKeys {
|
||||
Config = 0x68, // Desktop configuration, F13
|
||||
MicToggle = 0x6f, // Microphone toggle, F20
|
||||
TouchpadToggle = 0x70, // Touchpad toggle, F21
|
||||
WWW = 0xf0, // Web browser
|
||||
Sleep = 0xf8, // Sleep
|
||||
Coffee = 0xf9, // lockscreen
|
||||
}
|
||||
|
||||
impl From<KeyboardKeys> for [u8; 32] {
|
||||
fn from(key: KeyboardKeys) -> Self {
|
||||
let mut bytes = [0u8; 32];
|
||||
bytes[0] = 0x01; // report ID for keyboard
|
||||
bytes[3] = key as u8;
|
||||
bytes
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user