Skip to content
This repository was archived by the owner on Oct 10, 2022. It is now read-only.
This repository was archived by the owner on Oct 10, 2022. It is now read-only.

Horizontal/vertical rotation miscalibrated on Linx 810 #27

Open

Description

@CombatTentacles

Not sure if this was me messing something up or not, but currently my tablet's screen rotation is the exact opposite of where it should be: Turning it horizontally orients the screen to vertical and vice versa. Is there a way to correct this?

Tablet is running Kubuntu 20.04 LTS with Plasma Desktop if this makes any difference.

EDIT: Oh, and using the manual screen rotation setting just seems to confuse it even more, and throws touchscreen calibration off to the point of being unusable as well.

Activity

  1. DansDesigns commented on Dec 28, 2021

    @DansDesigns

    I'm having the same problem, everything works perfectly except the screen is 90 degrees out..
    Running Lubuntu 21.04 installed via the iso-respin from Linuxium..
    Does anyone have any suggestions on how to fix this issue?
    Thank you

    EDIT: I think the problem is due to these Tablets being Portrait by default, whereas most other tablets are Landscape by default..

    EDIT 2: I found this script that rotates the touch input with the screen: https://gist.github.com/mildmojo/48e9025070a2ba40795c, all we need to do now is sort the correct orientation..

  2. DansDesigns commented on Jan 1, 2022

    @DansDesigns

    Adjusting the following lines in displaymanager.cpp, allows the screen to rotate correctly...
    (lines 65 - 70)

    from:

    QHash<Orientation, Rotation> orientation2rotation { {TopUp, RR_Rotate_0}, {TopDown, RR_Rotate_180}, {LeftUp, RR_Rotate_90}, {RightUp, RR_Rotate_270}, };

    to:

    QHash<Orientation, Rotation> orientation2rotation { {TopUp, RR_Rotate_90}, {TopDown, RR_Rotate_270}, {LeftUp, RR_Rotate_0}, {RightUp, RR_Rotate_180}, };

    however the touch is not rotating correctly - I will remove the script mentioned in 'EDIT 2' and try to alter the current deployment settings...

    EDIT:

    Touchscreen now works correctly with the following changes made to rotateinput.cpp
    (lines 152 - 169)

    from:

    #ifdef USE_XINPUT static QHash<Orientation, QStringList> orientation_matrix_map { {TopUp, {"1", "0", "0", "0", "1", "0", "0", "0", "1"}}, {TopDown, {"-1", "0", "1", "0", "-1", "1", "0", "0", "1"}}, {LeftUp, {"0", "-1", "1", "1", "0", "0", "0", "0", "1"}}, {RightUp, {"0", "1", "0", "-1", "0", "1", "0", "0", "1"}}, }; auto orientation_matrix = orientation_matrix_map[orientation]; for(auto device: d->devices) { do_set_prop_xi2(d->display, device.id, None, 0, "Coordinate Transformation Matrix", orientation_matrix); } #else static QHash<Orientation, vector<float>> orientation_matrix_map { {TopUp, {1, 0, 0, 0, 1, 0, 0, 0, 1}}, {TopDown, {-1, 0, 1, 0, -1, 1, 0, 0, 1}}, {LeftUp, {0, -1, 1, 1, 0, 0, 0, 0, 1}}, {RightUp, {0, 1, 0, -1, 0, 1, 0, 0, 1}}, };

    to:

    #ifdef USE_XINPUT static QHash<Orientation, QStringList> orientation_matrix_map { {TopUp, {"0", "-1", "1", "1", "0", "0", "0", "0", "1"}}, {TopDown, {"0", "1", "0", "-1", "0", "1", "0", "0", "1"}}, {LeftUp, {"1", "0", "0", "0", "1", "0", "0", "0", "1"}}, {RightUp, {"-1", "0", "1", "0", "-1", "1", "0", "0", "1"}}, }; auto orientation_matrix = orientation_matrix_map[orientation]; for(auto device: d->devices) { do_set_prop_xi2(d->display, device.id, None, 0, "Coordinate Transformation Matrix", orientation_matrix); } #else static QHash<Orientation, vector<float>> orientation_matrix_map { {TopUp, {0, -1, 1, 1, 0, 0, 0, 0, 1}}, {TopDown, {0, 1, 0, -1, 0, 1, 0, 0, 1}}, {LeftUp, {1, 0, 0, 0, 1, 0, 0, 0, 1}}, {RightUp, {-1, 0, 1, 0, -1, 1, 0, 0, 1}}, };

    With both of these adjustments, my Linx8 Lubuntu 21.04 is running perfectly!
    I have found evdev-rce brilliant for emulating the hold-to-right-click on the Goodix Capacitive Touchscreens..

  3. DansDesigns commented on Aug 31, 2022

    @DansDesigns

    I can confirm the above changes work with Lubuntu 20.04, Lubuntu 21.04 and Zorin OS 16.1 running on Linx8 and Linx810.

    Full changes:
    run default build/install process, then browse to: ~/ScreenRotator/src/
    modify displaymanager.cpp
    modify rotateinput.cpp

    then rebuild..
    (in terminal run:)
    cd ScreenRotator/build
    cmake ..
    make all
    sudo make install

    restart the tablet and enjoy!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions