Drashna Jaelre 64b1ed4550 | 1 year ago | |
---|---|---|
.. | ||
config.h | 1 year ago | |
keymap.c | 1 year ago | |
readme.md | 1 year ago | |
rules.mk | 1 year ago |
DZ65RGB/v3 Yuannan's Layout Imgur Album
The click events are now programmed with the new Deferred Execution API (https://docs.qmk.fm/#/custom_quantum_functions?id=deferred-execution).
While it's programmed to input with a delay of 1ms (500CPS), the result will vary depending on your board and host. This is a massive improvment compared to timer based events. This new API is much faster and will work with less interference from other tasks on the board.
Linux's input driver (libinput) has a debounce feature. This is useful in normal usage as a person cannot feasibly click more than 20CPS. However when the keyboard tries to input 50+CPS and sometimes up to ~500CPS this is a problem.
Create a file at "/etc/libinput/local-overrides.quirks" with the contents:
[Never Debounce]
MatchUdevType=mouse
ModelBouncingKeys=1
This disables the debounce feature for libnput. This maybe be different if you use evdev, On Arch Linux the driver packages are {"libinput", "xf86-input-libinput"} compared to {"libevdev", "xf86-input-evdev"}. I have {"libinput", "xf86-input-libinput"} installed. In addition I have {"libevdev"} installed as a dependency of other packages. You maybe need to change the driver for your device if you have both installed. For me it was working just fine. Check what driver your xsession currently is utilizing with:
$cat /var/log/Xorg.0.log | grep libinput
If it is using libinput then it will show contents. Otherwise search for "evdev".
Check if the events are reaching your OS with either:
$evtest /dev/input/by-id/YOUR_KEYBOARD
or
$cat /dev/input/by-id/YOUR_KEYBOARD
It should end in event-mouse
. In my case it was /dev/input/by-id/usb-DZTECH_DZ65RGBV3-if02-event-mouse
which was a symlink to /dev/input/event12
. It WILL vary on your setup.
The output will appear "garbled" as it's trying to interoperate the data stream into text. The underlying data is actually a struct of the form:
struct input_event {
struct timeval time;
unsigned short type;
unsigned short code;
unsigned int value;
};
You can read more about it here (https://www.kernel.org/doc/Documentation/input/input.txt)
If it has an output when you autoclick but do not receive it in your desktop then it's a driver issue.
View libinput with:
$libinput debug-events --device /dev/input/by-id/usb-DZTECH_DZ65RGBV3-if02-event-mouse --verbose
If you experience "DEBOUNCE" events then it's a driver issue and should be able to be disabled with the above method, restart your display manager or just reboot afterwards.
If you have any issues feel free to make bug report or pull request to me, QMK, or libinput. Please send logs along with any steps you have tried.
The physical Right_Alt is mapped as a Left_Alt. This is to ensure compatibility in legacy and programs which treat them differently. A key example would be the TTY system in Linux.