FILE
TUXEDO__Sirius-16-Gen1-and-Gen2.bpf.c
File preview with syntax highlighting.
linux-6.19.14/drivers/hid/bpf/progs/TUXEDO__Sirius-16-Gen1-and-Gen2.bpf.c
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* Copyright (c) 2025 TUXEDO Computers GmbH 3 */ 4 5#include "vmlinux.h" 6#include "hid_bpf.h" 7#include "hid_bpf_helpers.h" 8#include <bpf/bpf_tracing.h> 9 10HID_BPF_CONFIG( 11 HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, 0x048D, 0x8910) 12); 13 14SEC(HID_BPF_DEVICE_EVENT) 15int BPF_PROG(ignore_key_fix_event, struct hid_bpf_ctx *hid_ctx) 16{ 17 const int expected_length = 37; 18 const int expected_report_id = 1; 19 __u8 *data; 20 int i; 21 22 if (hid_ctx->size < expected_length) 23 return 0; 24 25 data = hid_bpf_get_data(hid_ctx, 0, expected_length); 26 if (!data || data[0] != expected_report_id) 27 return 0; 28 29 // Zero out F13 (HID usage ID: 0x68) key press. 30 // The first 6 parallel key presses (excluding modifier keys) are 31 // encoded in an array containing usage IDs. 32 for (i = 3; i < 9; ++i) 33 if (data[i] == 0x68) 34 data[i] = 0x00; 35 // Additional parallel key presses starting with the 7th (excluding 36 // modifier keys) are encoded as a bit flag with the offset being 37 // the usage ID. 38 data[22] &= 0xfe; 39 40 return 0; 41} 42 43HID_BPF_OPS(ignore_button) = { 44 .hid_device_event = (void *)ignore_key_fix_event, 45}; 46 47char _license[] SEC("license") = "GPL";
~/
Read-only file preview.