diff options
-rw-r--r-- | marsond.8 | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/marsond.8 b/marsond.8 new file mode 100644 index 0000000..0bc4835 --- /dev/null +++ b/marsond.8 @@ -0,0 +1,190 @@ +.\" Man page generated from reStructuredText. +. +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.TH "MARSOND" 8 "2025-05-06" "0.1.4" "SlackBuilds.org" +.SH NAME +marsond \- Fix Enter key timing on Marson/USBLink/MT606-1 PS/2-USB adaptors +.SH SYNOPSIS +.sp +marsond [\fB\-d\fP \fIdelay\-ms*\fP] [\fB\-f\fP] [\fB\-k\fP \fIkeyboard\-device\fP] [\fB\-v\fP] | [\fB\-\-help\fP] | [\fB\-\-version\fP] | [\fB\-V\fP] +.SH DESCRIPTION +.sp +\fBmarsond\fP fixes an issue with a particular model of PS/2 => USB +keyboard adaptor. The symptom: in games and emulators, the Enter key +only works sometimes. This is caused by the firmware in the adaptor +sending the keypress and release events only 8 milliseconds apart. +.sp +The problem happens with any SDL application (SDL1 or SDL2), as well +as other graphics libraries. It happens regardless of what PS/2 +keyboard you have plugged in, what computer you have the adaptor +plugged into, or what OS that computer is running. +.sp +The specific hardware that has the Enter key problem for me is USB +vendor ID 04b4, product ID 0101, "Marson Keyboard and Mouse Link +Ver:ps2120L". It has a label on the front that says "USBLink", and on +the back, the model number is "MT606\-1". It looks like: +.INDENT 0.0 +.INDENT 3.5 +\fI\%https://slackware.uk/~urchlay/sdl\-usblink\-hack/marson\-front.jpg\fP +.sp +\fI\%https://slackware.uk/~urchlay/sdl\-usblink\-hack/marson\-back.jpg\fP +.UNINDENT +.UNINDENT +.sp +I\(aqm not sure if any other USB keyboard adaptors are affected. If you +have the problem on some other adaptor, and \fBmarsond\fP fixes it, +please contact me so I can add the model number to this man page. +.sp +\fBmarsond\fP uses the Linux kernel\(aqs \fBuinput\fP layer to "grab" the +keyboard, create a new virtual keyboard device, and pass events from +the real keyboard to the virtual one. When it sees the key release +event for the Enter key, it simply pauses for a few milliseconds +before delivering it. +.sp +This should work with everything that uses the keyboard. It definitely +does, with SDL 1 and 2 running under X (and SDL 1 on the console, +too). I don\(aqt use Wayland, so I haven\(aqt tested it there. If you do, +please contact me and let me know if it works for you. +.sp +\fBmarsond\fP must be run as root. At startup, it does these +things as root: +.INDENT 0.0 +.IP \(bu 2 +Grab the physical keyboard. +.IP \(bu 2 +Create the virtual keyboard device. +.IP \(bu 2 +Lock its pages into physical memory, to avoid being swapped out. +.IP \(bu 2 +Set its priority (nice value) to \-20 (highest priority), to +avoid slow response on a loaded system. +.UNINDENT +.sp +After doing the above, root access is no longer needed, so it will +drop privileges and run as the \fInobody\fP user by default (but see +\fBENVIRONMENT\fP if you need a different user). +.sp +While \fBmarsond\fP is running, "xinput \-\-list" will show an input +device called "marson virtual keyboard". +.SH OPTIONS +.sp +Options can be "bundled": \fB\-vf\fP is the same as \fB\-v\fP \fB\-f\fP\&. +.INDENT 0.0 +.TP +.BI \-d \ delay\-ms +Amount of time in milliseconds to delay the Enter key release events. +Default: 30. +.UNINDENT +.\" delay time for Enter key relase (default 30). +. +.INDENT 0.0 +.TP +.B \-f +Run in the foreground; do not detach from the terminal or become a +daemon. In this mode, \fBmarsond\fP can be killed with \fI^C\fP\&. +.UNINDENT +.\" run in foreground, not as a daemon. +. +.INDENT 0.0 +.TP +.BI \-k \ keyboard\-device +Input device for the keyboard adaptor. Default: +/dev/input/by\-id/usb\-Marson_Marson_Keyboard_and_Mouse_Link_Ver:ps2120L\-event\-kbd +.UNINDENT +.\" keyboard device (usually under /dev/input/by-id/). +. +.INDENT 0.0 +.TP +.B \-v +Verbose debugging mode. Prints copious trace information to \fBstderr\fP\&. +Debugging mode is turned off when \fBmarsond\fP forks itself into the +background as a daemon. If you want to debug the event loop, combine +\fB\-v\fP and \fB\-f\fP\&. +.UNINDENT +.\" verbose debugging, foreground operation. +. +.INDENT 0.0 +.TP +.B \-h\fP,\fB \-\-help +Shows built\-in usage message and exits. +.UNINDENT +.\" this help text. +. +.INDENT 0.0 +.TP +.B \-V\fP,\fB \-\-version +Shows version number and exits. +.UNINDENT +.\" show version number. +. +.SH ENVIRONMENT +.INDENT 0.0 +.TP +.B MARSOND_USER +After initialization, \fBmarsond\fP will drop privileges by +setting its user ID to this user\(aqs. Default: \fInobody\fP +.TP +.B MARSOND_GROUP +Group to run as, after dropping privileges. Default: +the primary group of the user it\(aqs running as. Normally +you won\(aqt have to set this. +.UNINDENT +.\" EXIT STATUS +. +.\" =========== +. +.\" BUGS +. +.\" ==== +. +.\" EXAMPLES +. +.\" ======== +. +.SH COPYRIGHT +.sp +WTFPL. Short version: do WTF you want. Full version: +.INDENT 0.0 +.INDENT 3.5 +\fI\%http://www.wtfpl.net/txt/copying/\fP +.UNINDENT +.UNINDENT +.SH AUTHORS +.INDENT 0.0 +.IP B. 3 +Watson <\fI\%urchlay@slackware.uk\fP> +.UNINDENT +.SH SEE ALSO +.sp +The homepage: \fI\%https://slackware.uk/~urchlay/repos/marsond\fP +.sp +Another solution to the problem, less complete, but should be portable +to non\-Linux OSes: \fI\%https://slackware.uk/~urchlay/sdl\-usblink\-hack/\fP +.\" Generated by docutils manpage writer. +. |