1
0
Fork 0
mirror of https://github.com/pikvm/pikvm.git synced 2026-03-02 18:16:56 -05:00

Absolute mouse position buggy under Windows 98 #130

Closed
opened 2026-02-20 13:20:45 -05:00 by deekerman · 19 comments
Owner

Originally created by @mnotgninnep on GitHub (Jan 23, 2021).

Originally assigned to: @mdevaev on GitHub.

Describe the bug
Under Windows 98, absolute mouse position (tablet control) is buggy and scaled to 50% of what it should be and is therefore restricted to the top left quarter of the screen. This affects both pi and arduino control. Relative mouse works ok but absolute would be prefered. Windows 98 needs different coordicates (doubled?). This does not appear to be resolution dependent. Control of other OSs is fine.

Virtualbox have documented the same issue here and produced a workaround with a setting change: https://www.virtualbox.org/manual/ch12.html#ts_win98-guest-usb-tablet-coordinates

To Reproduce
Steps to reproduce the behavior, like:
Use absolute mouse mode from either Pi or Arduino with a Windows 98 computer.

Expected behavior
In absolute mouse mode, the host mouse should exactly follow the client mouse.

Screenshots
Mouse01
Mouse02

Desktop (please complete the following information):

  • OS: Windows 10 laptop, Windows 98 PC.
  • Browser: Chrome
  • Version: 87.0.4280.141 (Official Build) (64-bit)
  • VNC client: No

Pi-KVM info:

  • Raspberry Pi board version Rpi ZeroW
  • Pi-KVM platform: v2-hdmi
  • Video capture type: CSI bridge
  • KVMD version: kvmd 2.13-1
    kvmd-platform-v2-hdmi-zerow 2.13-1
    kvmd-webterm 0.35-1
  • uStreamer version: ustreamer 3.3-1
  • Linux kernel: Linux pikvm 5.4.83-3-ARCH #1 SMP PREEMPT Mon Jan 4 01:09:25 UTC 2021 armv6l GNU/Linux
Originally created by @mnotgninnep on GitHub (Jan 23, 2021). Originally assigned to: @mdevaev on GitHub. **Describe the bug** Under Windows 98, absolute mouse position (tablet control) is buggy and scaled to 50% of what it should be and is therefore restricted to the top left quarter of the screen. This affects both pi and arduino control. Relative mouse works ok but absolute would be prefered. Windows 98 needs different coordicates (doubled?). This does not appear to be resolution dependent. Control of other OSs is fine. Virtualbox have documented the same issue here and produced a workaround with a setting change: https://www.virtualbox.org/manual/ch12.html#ts_win98-guest-usb-tablet-coordinates **To Reproduce** Steps to reproduce the behavior, like: Use absolute mouse mode from either Pi or Arduino with a Windows 98 computer. **Expected behavior** In absolute mouse mode, the host mouse should exactly follow the client mouse. **Screenshots** ![Mouse01](https://user-images.githubusercontent.com/29900450/105576429-a7ea5180-5d6a-11eb-8d4f-2a48d38fce34.jpg) ![Mouse02](https://user-images.githubusercontent.com/29900450/105576431-ac166f00-5d6a-11eb-8c2a-61fab198b981.jpg) **Desktop (please complete the following information):** - OS: Windows 10 laptop, Windows 98 PC. - Browser: Chrome - Version: 87.0.4280.141 (Official Build) (64-bit) - VNC client: No **Pi-KVM info:** - Raspberry Pi board version Rpi ZeroW - Pi-KVM platform: v2-hdmi - Video capture type: CSI bridge - KVMD version: kvmd 2.13-1 kvmd-platform-v2-hdmi-zerow 2.13-1 kvmd-webterm 0.35-1 - uStreamer version: ustreamer 3.3-1 - Linux kernel: Linux pikvm 5.4.83-3-ARCH #1 SMP PREEMPT Mon Jan 4 01:09:25 UTC 2021 armv6l GNU/Linux
deekerman 2026-02-20 13:20:45 -05:00
Author
Owner

@mnotgninnep commented on GitHub (Jan 23, 2021):

SilentLennie posted this in discord from VirtualBox which should help. I don't know what to do with it sorry.

SilentLennieToday at 12:02
@mikeyp here is the code which handles the Windows 98 USB tablet correction: https://www.virtualbox.org/browser/vbox/trunk/src/VBox/Devices/Input/UsbMouse.cpp#L211
just look for u8CoordShift in the file
So I guess it's these: https://www.virtualbox.org/browser/vbox/trunk/src/VBox/Devices/Input/UsbMouse.cpp#L1377
https://www.virtualbox.org/browser/vbox/trunk/src/VBox/Devices/Input/UsbMouse.cpp#L1491

@mnotgninnep commented on GitHub (Jan 23, 2021): SilentLennie posted this in discord from VirtualBox which should help. I don't know what to do with it sorry. SilentLennieToday at 12:02 @mikeyp here is the code which handles the Windows 98 USB tablet correction: https://www.virtualbox.org/browser/vbox/trunk/src/VBox/Devices/Input/UsbMouse.cpp#L211 just look for u8CoordShift in the file So I guess it's these: https://www.virtualbox.org/browser/vbox/trunk/src/VBox/Devices/Input/UsbMouse.cpp#L1377 https://www.virtualbox.org/browser/vbox/trunk/src/VBox/Devices/Input/UsbMouse.cpp#L1491
Author
Owner

@mdevaev commented on GitHub (Jan 23, 2021):

Funny bug. I have no chance of getting Windows 98 working right now, but I can try to fix it remotely on your Pi and then make a patch in the release. Contact me at Discord.

@mdevaev commented on GitHub (Jan 23, 2021): Funny bug. I have no chance of getting Windows 98 working right now, but I can try to fix it remotely on your Pi and then make a patch in the release. Contact me at Discord.
Author
Owner

@mnotgninnep commented on GitHub (Jan 23, 2021):

Awesome, yeah, not worth setting up a Win98 machine. I'll get setup for you to get on. Look for a message from mikeyp. Thank you. :-)

@mnotgninnep commented on GitHub (Jan 23, 2021): Awesome, yeah, not worth setting up a Win98 machine. I'll get setup for you to get on. Look for a message from mikeyp. Thank you. :-)
Author
Owner

@mdevaev commented on GitHub (Aug 14, 2021):

I'm sorry it took so long, but I did it anyway :) The fix for v2/OTG will be ready in the next release, I will build it within half an hour. Use these parameters in /etc/kvmd/override.yaml:

kvmd:
    hid:
        mouse:
            absolute_win98_fix: true
@mdevaev commented on GitHub (Aug 14, 2021): I'm sorry it took so long, but I did it anyway :) The fix for **v2/OTG** will be ready in the next release, I will build it within half an hour. Use these parameters in `/etc/kvmd/override.yaml`: ```yaml kvmd: hid: mouse: absolute_win98_fix: true ```
Author
Owner
@mdevaev commented on GitHub (Aug 14, 2021): Also for arduino: https://github.com/pikvm/pikvm/blob/master/pages/arduino_hid.md#fixing-the-usb-absolute-mouse-on-windows-98
Author
Owner

@mdevaev commented on GitHub (Aug 14, 2021):

@mnotgninnep Let me know if you want dynamic switching between the regular absolute mode and fixed absolute mode in the web UI.

@mdevaev commented on GitHub (Aug 14, 2021): @mnotgninnep Let me know if you want dynamic switching between the regular absolute mode and fixed absolute mode in the web UI.
Author
Owner

@mdevaev commented on GitHub (Aug 14, 2021):

I could do this for Arduino HID, but I need a good reason because the number of available flags in the protocol is limited.

@mdevaev commented on GitHub (Aug 14, 2021): I could do this for Arduino HID, but I need a good reason because the number of available flags in the protocol is limited.
Author
Owner

@mnotgninnep commented on GitHub (Aug 14, 2021):

I've just built and flashed the image. I'll test it later tonight and get back to you. Thank you again for this. If it works, the option to change it in the GUI would be amazing please. I see no reason to add it to the arduino. Random thought but if you're short of flags, could you manipulate the coordinates before they're sent to the arduino rather than changing the arduino itself?

@mnotgninnep commented on GitHub (Aug 14, 2021): I've just built and flashed the image. I'll test it later tonight and get back to you. Thank you again for this. If it works, the option to change it in the GUI would be amazing please. I see no reason to add it to the arduino. Random thought but if you're short of flags, could you manipulate the coordinates before they're sent to the arduino rather than changing the arduino itself?
Author
Owner

@mdevaev commented on GitHub (Aug 14, 2021):

Unfortunately not. The final coordinates are calculated on the arduino side, this was laid down in the protocol. On the one hand, this ensured compatibility between all firmware versions, but in the case of win98 this became a problem. I'll think about how best to deal with this/

@mdevaev commented on GitHub (Aug 14, 2021): Unfortunately not. The final coordinates are calculated on the arduino side, this was laid down in the protocol. On the one hand, this ensured compatibility between all firmware versions, but in the case of win98 this became a problem. I'll think about how best to deal with this/
Author
Owner

@mnotgninnep commented on GitHub (Aug 14, 2021):

Thank you again for this. I can confirm that with the above edit to /etc/kvmd/override.yaml, this works flawlessly in OTG mode. The ability to switch it in the GUI would be greatly appreciated please but I can live with editing it via SSH for now. The only thing I will need the arduino for now will be PS2 only machines.

@mnotgninnep commented on GitHub (Aug 14, 2021): Thank you again for this. I can confirm that with the above edit to /etc/kvmd/override.yaml, this works flawlessly in OTG mode. The ability to switch it in the GUI would be greatly appreciated please but I can live with editing it via SSH for now. The only thing I will need the arduino for now will be PS2 only machines.
Author
Owner

@jeremyherbert commented on GitHub (Jun 7, 2023):

I am having trouble enabling this feature. I have the top quarter problem on windows 98, and my /etc/kvmd/override.yaml file contains the following:

kvmd:
    hid:
        mouse:
            absolute_win98_fix: true

I have tried a systemctl restart as well as a full reboot, but it doesn't appear to have fixed the problem. Am I doing something wrong here? My version is:

KVMD: 3.199
Streamer: 5.37 (ustreamer)
HAS_PDEATHSIG: Yes
WITH_GPIO: Yes
WITH_PTHREAD_NP: Yes
WITH_SETPROCTITLE: Yes
WITH_SYSTEMD: Yes
Linux kernel:
Machine: armv7l
Release: 5.15.68-3-rpi-ARCH
Version: #1 SMP Mon Oct 31 20:56:54 MSK 2022

@jeremyherbert commented on GitHub (Jun 7, 2023): I am having trouble enabling this feature. I have the top quarter problem on windows 98, and my `/etc/kvmd/override.yaml` file contains the following: ``` kvmd: hid: mouse: absolute_win98_fix: true ``` I have tried a systemctl restart as well as a full reboot, but it doesn't appear to have fixed the problem. Am I doing something wrong here? My version is: KVMD: 3.199 Streamer: 5.37 (ustreamer) HAS_PDEATHSIG: Yes WITH_GPIO: Yes WITH_PTHREAD_NP: Yes WITH_SETPROCTITLE: Yes WITH_SYSTEMD: Yes Linux kernel: Machine: armv7l Release: 5.15.68-3-rpi-ARCH Version: #1 SMP Mon Oct 31 20:56:54 MSK 2022
Author
Owner

@jeremyherbert commented on GitHub (Jun 7, 2023):

@mdevaev it seems this is a regression in master: https://github.com/pikvm/kvmd/blob/master/kvmd/plugins/hid/otg/mouse.py

If I manually add the << 1 into the mouse.py file on my system in __make_report, ie

move_x = self.__x << 1
move_y = self.__y << 1

It works correctly on win 98. But it seems there is no code to do this anymore in the master branch.

@jeremyherbert commented on GitHub (Jun 7, 2023): @mdevaev it seems this is a regression in master: https://github.com/pikvm/kvmd/blob/master/kvmd/plugins/hid/otg/mouse.py If I manually add the `<< 1` into the `mouse.py` file on my system in `__make_report`, ie ``` move_x = self.__x << 1 move_y = self.__y << 1 ``` It works correctly on win 98. But it seems there is no code to do this anymore in the master branch.
Author
Owner

@mdevaev commented on GitHub (Jun 7, 2023):

@jeremyherbert this code is right here: https://github.com/pikvm/kvmd/blob/master/kvmd/plugins/hid/otg/events.py#L119

Did you try this? https://docs.pikvm.org/mouse/#fixing-the-absolute-mouse-on-windows-98

@mdevaev commented on GitHub (Jun 7, 2023): @jeremyherbert this code is right here: https://github.com/pikvm/kvmd/blob/master/kvmd/plugins/hid/otg/events.py#L119 Did you try this? https://docs.pikvm.org/mouse/#fixing-the-absolute-mouse-on-windows-98
Author
Owner

@jeremyherbert commented on GitHub (Jun 7, 2023):

Thank you, I did indeed miss that code. But yes, I did try the adjustment in the docs (my override.yaml is in the earlier post) but it did not work until I hardcoded the shift in.

@jeremyherbert commented on GitHub (Jun 7, 2023): Thank you, I did indeed miss that code. But yes, I did try the adjustment in the docs (my override.yaml is in the earlier post) but it did not work until I hardcoded the shift in.
Author
Owner

@mdevaev commented on GitHub (Jun 7, 2023):

Please attach the entire override file and output of the kvmd -m command.

@mdevaev commented on GitHub (Jun 7, 2023): Please attach the entire override file and output of the `kvmd -m` command.
Author
Owner

@jeremyherbert commented on GitHub (Jun 7, 2023):

Thanks for your help. My full override file is the lines pasted above - there isn't anything else. Below is the output of that command:

ipmi:
    auth:
        file: /etc/kvmd/ipmipasswd

    kvmd:
        timeout: 5.0
        unix: /run/kvmd/kvmd.sock

    server:
        host: '::'
        port: 623
        timeout: 10.0

    sol:
        device: ''
        proxy_port: 0
        select_timeout: 0.1
        speed: 115200


janus:
    check:
        interval: 10.0
        retries: 5
        retries_delay: 5.0

    cmd:
        - /usr/bin/janus
        - --disable-colors
        - --plugins-folder=/usr/lib/ustreamer/janus
        - --configs-folder=/etc/kvmd/janus
        - --interface={src_ip}
        - '{o_stun_server}'
    cmd_append: []
    cmd_remove: []
    stun:
        host: stun.l.google.com
        port: 19302
        retries: 5
        retries_delay: 5.0
        timeout: 5.0


kvmd:
    atx:
        click_delay: 0.1
        device: /dev/gpiochip0
        hdd_led_debounce: 0.1
        hdd_led_inverted: false
        hdd_led_pin: 22
        long_click_delay: 5.5
        power_led_debounce: 0.1
        power_led_inverted: false
        power_led_pin: 24
        power_switch_pin: 23
        reset_switch_pin: 27
        # type: ''
        type: gpio

    auth:
        enabled: true
        external:
            type: ''

        internal:
            file: /etc/kvmd/htpasswd
            force_users: []
            type: htpasswd

        totp:
            secret:
                file: /etc/kvmd/totp.secret



    gpio:
        drivers:
            __gpio__:
                device: /dev/gpiochip0
                type: gpio


        scheme:
            __v3_usb_breaker__:
                busy_delay: 0.2
                driver: __gpio__
                # initial: false
                initial: true
                inverted: false
                # mode: ''
                mode: output
                # pin: null
                pin: 5
                pulse:
                    # delay: 0.1
                    delay: 0.0
                    max_delay: 0.1
                    min_delay: 0.1

                switch: true


        state_poll: 0.1
        view:
            header:
                title: GPIO

            table: []


    hid:
        ignore_keys: []
        keyboard:
            device: /dev/kvmd-hid-keyboard
            queue_timeout: 0.1
            select_timeout: 0.1
            write_retries: 150

        keymap: /usr/share/kvmd/keymaps/en-us
        mouse:
            absolute: true
            # absolute_win98_fix: false
            absolute_win98_fix: true
            device: /dev/kvmd-hid-mouse
            horizontal_wheel: true
            queue_timeout: 0.1
            select_timeout: 0.1
            write_retries: 150

        mouse_alt:
            device: ''
            horizontal_wheel: true
            queue_timeout: 0.1
            select_timeout: 0.1
            write_retries: 150

        mouse_x_range:
            max: 32767
            min: -32768

        mouse_y_range:
            max: 32767
            min: -32768

        noop: false
        # type: ''
        type: otg

    info:
        extras: /usr/share/kvmd/extras
        fan:
            daemon: kvmd-fan
            state_poll: 5.0
            timeout: 5.0
            # unix: ''
            unix: /run/kvmd/fan.sock

        hw:
            state_poll: 10.0
            vcgencmd_cmd:
                - /opt/vc/bin/vcgencmd

        meta: /etc/kvmd/meta.yaml

    log_reader:
        enabled: true

    msd:
        initial:
            cdrom: false
            image: ''

        read_chunk_size: 65536
        remount_cmd:
            - /usr/bin/sudo
            - --non-interactive
            - /usr/bin/kvmd-helper-otgmsd-remount
            - '{mode}'
        sync_chunk_size: 4194304
        # type: ''
        type: otg
        write_chunk_size: 65536

    ocr:
        langs:
            - eng
        tessdata: /usr/share/tessdata

    server:
        access_log_format: '[%P / %{X-Real-IP}i] ''%r'' => %s; size=%b --- referer=''%{Referer}i''; user_agent=''%{User-Agent}i'''
        heartbeat: 15.0
        unix: /run/kvmd/kvmd.sock
        unix_mode: 432
        unix_rm: true

    snapshot:
        idle_interval: 0.0
        live_interval: 0.0
        online_delay: 5.0
        retries: 10
        retries_delay: 3.0
        wakeup_key: ''
        wakeup_move: 0

    streamer:
        # cmd:
        #     - /bin/true
        cmd:
            - /usr/bin/ustreamer
            - --device=/dev/kvmd-video
            - --persistent
            - --dv-timings
            - --format=uyvy
            - --encoder=omx
            - --workers=3
            - --quality={quality}
            - --desired-fps={desired_fps}
            - --drop-same-frames=30
            - --last-as-blank=0
            - --unix={unix}
            - --unix-rm
            - --unix-mode=0660
            - --exit-on-parent-death
            - --process-name-prefix={process_name_prefix}
            - --notify-parent
            - --no-log-colors
            - --sink=kvmd::ustreamer::jpeg
            - --sink-mode=0660
            - --h264-sink=kvmd::ustreamer::h264
            - --h264-sink-mode=0660
            - --h264-bitrate={h264_bitrate}
            - --h264-gop={h264_gop}
        cmd_append: []
        cmd_remove: []
        desired_fps:
            default: 40
            max: 70
            min: 0

        forever: false
        h264_bitrate:
            # default: 0
            default: 5000
            max: 20000
            min: 25

        h264_gop:
            default: 30
            max: 60
            min: 0

        process_name_prefix: kvmd/streamer
        quality: 80
        reset_delay: 1.0
        resolution:
            available: []
            default: ''

        shutdown_delay: 10.0
        state_poll: 1.0
        timeout: 2.0
        unix: /run/kvmd/ustreamer.sock


# logging: {}
logging:
    disable_existing_loggers: false
    formatters:
        console:
            (): logging.Formatter
            format: '{name:30.30} {levelname:>7} --- {message}'
            style: '{'
    handlers:
        console:
            class: logging.StreamHandler
            formatter: console
            level: DEBUG
            stream: ext://sys.stderr
    root:
        handlers:
        - console
        level: INFO
    version: 1
otg:
    config: PiKVM device
    device_version: -1
    devices:
        drives:
            count: 1
            default:
                cdrom: false
                fua: true
                removable: true
                rw: true
                stall: false

            enabled: false

        ethernet:
            driver: ecm
            enabled: false
            host_mac: ''
            kvm_mac: ''

        msd:
            default:
                cdrom: true
                fua: true
                removable: true
                rw: false
                stall: false


        serial:
            enabled: false


    gadget: kvmd
    init_delay: 3.0
    manufacturer: PiKVM
    max_power: 250
    meta: /run/kvmd/otg
    product: Composite KVM Device
    product_id: 260
    remote_wakeup: false
    serial: CAFEBABE
    udc: ''
    usb_version: 512
    user: kvmd
    vendor_id: 7531

otgnet:
    commands:
        post_start_cmd:
            - /usr/bin/systemd-run
            - --unit=kvmd-otgnet-dnsmasq
            - /usr/sbin/dnsmasq
            - --conf-file=/dev/null
            - --pid-file
            - --user=dnsmasq
            - --interface={iface}
            - --port=0
            - --dhcp-range={dhcp_ip_begin},{dhcp_ip_end},24h
            - --dhcp-leasefile=/run/kvmd/dnsmasq.lease
            - --dhcp-option={dhcp_option_3}
            - --dhcp-option=6
            - --keep-in-foreground
        post_start_cmd_append: []
        post_start_cmd_remove: []
        post_stop_cmd:
            - /bin/true
            - post-stop
        post_stop_cmd_append: []
        post_stop_cmd_remove: []
        pre_start_cmd:
            - /bin/true
            - pre-start
        pre_start_cmd_append: []
        pre_start_cmd_remove: []
        pre_stop_cmd:
            - /usr/bin/systemctl
            - stop
            - kvmd-otgnet-dnsmasq
        pre_stop_cmd_append: []
        pre_stop_cmd_remove: []

    firewall:
        allow_icmp: true
        allow_tcp: []
        allow_udp:
            - 67
        forward_iface: ''
        iptables_cmd:
            - /usr/sbin/iptables
            - --wait=5

    iface:
        ip_cmd:
            - /usr/bin/ip
        net: 169.254.0.0/28


pst:
    remount_cmd:
        - /usr/bin/sudo
        - --non-interactive
        - /usr/bin/kvmd-helper-pst-remount
        - '{mode}'
    ro_cleanup_delay: 3.0
    ro_retries_delay: 10.0
    server:
        access_log_format: '[%P / %{X-Real-IP}i] ''%r'' => %s; size=%b --- referer=''%{Referer}i''; user_agent=''%{User-Agent}i'''
        heartbeat: 15.0
        unix: /run/kvmd/pst.sock
        unix_mode: 432
        unix_rm: true


vnc:
    auth:
        vencrypt:
            enabled: true

        vncauth:
            enabled: false
            file: /etc/kvmd/vncpasswd


    desired_fps: 30
    keymap: /usr/share/kvmd/keymaps/en-us
    kvmd:
        timeout: 5.0
        unix: /run/kvmd/kvmd.sock

    memsink:
        h264:
            drop_same_frames: 0.0
            lock_timeout: 1.0
            # sink: ''
            sink: kvmd::ustreamer::h264
            wait_timeout: 1.0

        jpeg:
            drop_same_frames: 1.0
            lock_timeout: 1.0
            # sink: ''
            sink: kvmd::ustreamer::jpeg
            wait_timeout: 1.0


    server:
        host: '::'
        keepalive:
            count: 3
            enabled: true
            idle: 10
            interval: 3

        max_clients: 10
        no_delay: true
        port: 5900
        tls:
            ciphers: ALL:@SECLEVEL=0
            timeout: 30.0
            x509:
                cert: /etc/kvmd/vnc/ssl/server.crt
                key: /etc/kvmd/vnc/ssl/server.key



    streamer:
        timeout: 5.0
        unix: /run/kvmd/ustreamer.sock


watchdog:
    interval: 30
    rtc: 0
    timeout: 300
@jeremyherbert commented on GitHub (Jun 7, 2023): Thanks for your help. My full override file is the lines pasted above - there isn't anything else. Below is the output of that command: ``` ipmi: auth: file: /etc/kvmd/ipmipasswd kvmd: timeout: 5.0 unix: /run/kvmd/kvmd.sock server: host: '::' port: 623 timeout: 10.0 sol: device: '' proxy_port: 0 select_timeout: 0.1 speed: 115200 janus: check: interval: 10.0 retries: 5 retries_delay: 5.0 cmd: - /usr/bin/janus - --disable-colors - --plugins-folder=/usr/lib/ustreamer/janus - --configs-folder=/etc/kvmd/janus - --interface={src_ip} - '{o_stun_server}' cmd_append: [] cmd_remove: [] stun: host: stun.l.google.com port: 19302 retries: 5 retries_delay: 5.0 timeout: 5.0 kvmd: atx: click_delay: 0.1 device: /dev/gpiochip0 hdd_led_debounce: 0.1 hdd_led_inverted: false hdd_led_pin: 22 long_click_delay: 5.5 power_led_debounce: 0.1 power_led_inverted: false power_led_pin: 24 power_switch_pin: 23 reset_switch_pin: 27 # type: '' type: gpio auth: enabled: true external: type: '' internal: file: /etc/kvmd/htpasswd force_users: [] type: htpasswd totp: secret: file: /etc/kvmd/totp.secret gpio: drivers: __gpio__: device: /dev/gpiochip0 type: gpio scheme: __v3_usb_breaker__: busy_delay: 0.2 driver: __gpio__ # initial: false initial: true inverted: false # mode: '' mode: output # pin: null pin: 5 pulse: # delay: 0.1 delay: 0.0 max_delay: 0.1 min_delay: 0.1 switch: true state_poll: 0.1 view: header: title: GPIO table: [] hid: ignore_keys: [] keyboard: device: /dev/kvmd-hid-keyboard queue_timeout: 0.1 select_timeout: 0.1 write_retries: 150 keymap: /usr/share/kvmd/keymaps/en-us mouse: absolute: true # absolute_win98_fix: false absolute_win98_fix: true device: /dev/kvmd-hid-mouse horizontal_wheel: true queue_timeout: 0.1 select_timeout: 0.1 write_retries: 150 mouse_alt: device: '' horizontal_wheel: true queue_timeout: 0.1 select_timeout: 0.1 write_retries: 150 mouse_x_range: max: 32767 min: -32768 mouse_y_range: max: 32767 min: -32768 noop: false # type: '' type: otg info: extras: /usr/share/kvmd/extras fan: daemon: kvmd-fan state_poll: 5.0 timeout: 5.0 # unix: '' unix: /run/kvmd/fan.sock hw: state_poll: 10.0 vcgencmd_cmd: - /opt/vc/bin/vcgencmd meta: /etc/kvmd/meta.yaml log_reader: enabled: true msd: initial: cdrom: false image: '' read_chunk_size: 65536 remount_cmd: - /usr/bin/sudo - --non-interactive - /usr/bin/kvmd-helper-otgmsd-remount - '{mode}' sync_chunk_size: 4194304 # type: '' type: otg write_chunk_size: 65536 ocr: langs: - eng tessdata: /usr/share/tessdata server: access_log_format: '[%P / %{X-Real-IP}i] ''%r'' => %s; size=%b --- referer=''%{Referer}i''; user_agent=''%{User-Agent}i''' heartbeat: 15.0 unix: /run/kvmd/kvmd.sock unix_mode: 432 unix_rm: true snapshot: idle_interval: 0.0 live_interval: 0.0 online_delay: 5.0 retries: 10 retries_delay: 3.0 wakeup_key: '' wakeup_move: 0 streamer: # cmd: # - /bin/true cmd: - /usr/bin/ustreamer - --device=/dev/kvmd-video - --persistent - --dv-timings - --format=uyvy - --encoder=omx - --workers=3 - --quality={quality} - --desired-fps={desired_fps} - --drop-same-frames=30 - --last-as-blank=0 - --unix={unix} - --unix-rm - --unix-mode=0660 - --exit-on-parent-death - --process-name-prefix={process_name_prefix} - --notify-parent - --no-log-colors - --sink=kvmd::ustreamer::jpeg - --sink-mode=0660 - --h264-sink=kvmd::ustreamer::h264 - --h264-sink-mode=0660 - --h264-bitrate={h264_bitrate} - --h264-gop={h264_gop} cmd_append: [] cmd_remove: [] desired_fps: default: 40 max: 70 min: 0 forever: false h264_bitrate: # default: 0 default: 5000 max: 20000 min: 25 h264_gop: default: 30 max: 60 min: 0 process_name_prefix: kvmd/streamer quality: 80 reset_delay: 1.0 resolution: available: [] default: '' shutdown_delay: 10.0 state_poll: 1.0 timeout: 2.0 unix: /run/kvmd/ustreamer.sock # logging: {} logging: disable_existing_loggers: false formatters: console: (): logging.Formatter format: '{name:30.30} {levelname:>7} --- {message}' style: '{' handlers: console: class: logging.StreamHandler formatter: console level: DEBUG stream: ext://sys.stderr root: handlers: - console level: INFO version: 1 otg: config: PiKVM device device_version: -1 devices: drives: count: 1 default: cdrom: false fua: true removable: true rw: true stall: false enabled: false ethernet: driver: ecm enabled: false host_mac: '' kvm_mac: '' msd: default: cdrom: true fua: true removable: true rw: false stall: false serial: enabled: false gadget: kvmd init_delay: 3.0 manufacturer: PiKVM max_power: 250 meta: /run/kvmd/otg product: Composite KVM Device product_id: 260 remote_wakeup: false serial: CAFEBABE udc: '' usb_version: 512 user: kvmd vendor_id: 7531 otgnet: commands: post_start_cmd: - /usr/bin/systemd-run - --unit=kvmd-otgnet-dnsmasq - /usr/sbin/dnsmasq - --conf-file=/dev/null - --pid-file - --user=dnsmasq - --interface={iface} - --port=0 - --dhcp-range={dhcp_ip_begin},{dhcp_ip_end},24h - --dhcp-leasefile=/run/kvmd/dnsmasq.lease - --dhcp-option={dhcp_option_3} - --dhcp-option=6 - --keep-in-foreground post_start_cmd_append: [] post_start_cmd_remove: [] post_stop_cmd: - /bin/true - post-stop post_stop_cmd_append: [] post_stop_cmd_remove: [] pre_start_cmd: - /bin/true - pre-start pre_start_cmd_append: [] pre_start_cmd_remove: [] pre_stop_cmd: - /usr/bin/systemctl - stop - kvmd-otgnet-dnsmasq pre_stop_cmd_append: [] pre_stop_cmd_remove: [] firewall: allow_icmp: true allow_tcp: [] allow_udp: - 67 forward_iface: '' iptables_cmd: - /usr/sbin/iptables - --wait=5 iface: ip_cmd: - /usr/bin/ip net: 169.254.0.0/28 pst: remount_cmd: - /usr/bin/sudo - --non-interactive - /usr/bin/kvmd-helper-pst-remount - '{mode}' ro_cleanup_delay: 3.0 ro_retries_delay: 10.0 server: access_log_format: '[%P / %{X-Real-IP}i] ''%r'' => %s; size=%b --- referer=''%{Referer}i''; user_agent=''%{User-Agent}i''' heartbeat: 15.0 unix: /run/kvmd/pst.sock unix_mode: 432 unix_rm: true vnc: auth: vencrypt: enabled: true vncauth: enabled: false file: /etc/kvmd/vncpasswd desired_fps: 30 keymap: /usr/share/kvmd/keymaps/en-us kvmd: timeout: 5.0 unix: /run/kvmd/kvmd.sock memsink: h264: drop_same_frames: 0.0 lock_timeout: 1.0 # sink: '' sink: kvmd::ustreamer::h264 wait_timeout: 1.0 jpeg: drop_same_frames: 1.0 lock_timeout: 1.0 # sink: '' sink: kvmd::ustreamer::jpeg wait_timeout: 1.0 server: host: '::' keepalive: count: 3 enabled: true idle: 10 interval: 3 max_clients: 10 no_delay: true port: 5900 tls: ciphers: ALL:@SECLEVEL=0 timeout: 30.0 x509: cert: /etc/kvmd/vnc/ssl/server.crt key: /etc/kvmd/vnc/ssl/server.key streamer: timeout: 5.0 unix: /run/kvmd/ustreamer.sock watchdog: interval: 30 rtc: 0 timeout: 300 ```
Author
Owner

@mdevaev commented on GitHub (Jun 7, 2023):

Ah. I forgot about one thing. Win98 mod depends from relative mouse. Use this:

kvmd:
    hid
        mouse:
            absolute_win98_fix: true
        mouse_alt:
            device: /dev/kvmd-hid-mouse-alt

After that you will get 3 buttons in the system menu. Switch it to Abs-Win98:
image

@mdevaev commented on GitHub (Jun 7, 2023): Ah. I forgot about one thing. Win98 mod depends from relative mouse. Use this: ```yaml kvmd: hid mouse: absolute_win98_fix: true mouse_alt: device: /dev/kvmd-hid-mouse-alt ``` After that you will get 3 buttons in the system menu. Switch it to Abs-Win98: ![image](https://github.com/pikvm/pikvm/assets/416259/d12afa50-e245-46a4-a9ea-60c545e6df3c)
Author
Owner

@jeremyherbert commented on GitHub (Jun 8, 2023):

Thank you! That fixed it.

@jeremyherbert commented on GitHub (Jun 8, 2023): Thank you! That fixed it.
Author
Owner

@mdevaev commented on GitHub (Jun 8, 2023):

👌

@mdevaev commented on GitHub (Jun 8, 2023): :ok_hand:
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/pikvm-pikvm#130
No description provided.