// SPDX-License-Identifier: GPL-2.0-or-later /* Copyright (c) 2025 TUXEDO Computers GmbH */ #include "vmlinux.h" #include "hid_bpf.h" #include "hid_bpf_helpers.h" #include HID_BPF_CONFIG( HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, 0x048D, 0x8910) ); SEC(HID_BPF_DEVICE_EVENT) int BPF_PROG(ignore_key_fix_event, struct hid_bpf_ctx *hid_ctx) { const int expected_length = 37; const int expected_report_id = 1; __u8 *data; int i; if (hid_ctx->size < expected_length) return 0; data = hid_bpf_get_data(hid_ctx, 0, expected_length); if (!data || data[0] != expected_report_id) return 0; // Zero out F13 (HID usage ID: 0x68) key press. // The first 6 parallel key presses (excluding modifier keys) are // encoded in an array containing usage IDs. for (i = 3; i < 9; ++i) if (data[i] == 0x68) data[i] = 0x00; // Additional parallel key presses starting with the 7th (excluding // modifier keys) are encoded as a bit flag with the offset being // the usage ID. data[22] &= 0xfe; return 0; } HID_BPF_OPS(ignore_button) = { .hid_device_event = (void *)ignore_key_fix_event, }; char _license[] SEC("license") = "GPL";