The UDock X - 13.3" LapDock is a combination of touch display, keyboard, touch-pad and battery. It can be used as an extension of various devices, like laptops, PCs, handhelds and smartphones. But primarily, and importantly (!), it is advertised to turn certain smartphones into laptops.
I haven't tried the connection with a smartphone yet, just with a laptop (running Debian Linux with KDE Plasma on Wayland), the Steam Deck, and the Steam Deck Dock. The experience is pretty much plug'n'play.
The screen looks good. The 10 finger touch are registered, which I checked via
$ libinput debug-gui
Turning the display 360° makes this device basically into a tablet. With maliit-keyboard and qtvirtualkeyboard-plugin I get a virtual keyboard when touch hitting input fields. I couldn't see any pressure sensitivity, so fancy drawing isn't directly possible, as far as I can see. But all in all, the touch works fine. Including long press for right click, double tap in YouTube for 10 second for- or backwards, scrolling, swiping in from the sides for special actions, like seeing the overview. Even HDR can be enabled and used with the Steam Deck, but of course, the 300 cd/m² won't be too much visible.
The LapDock can pass power to a connected device. The included 20W charger isn't enough for the Steam Deck. Using the 45W charger of the Steam Deck seems to work better and provide more juice, but the Deck was still losing more energy then it gained.
The keyboard is just available with one layout: US
Not the international one, so one key is missing. (For comparison with the German layout: it is the one labeled <>|
Personally I don't mind this, as my usual need for those characters are in programming, where I switch to the English layouts either way.
The typing feels okay for now. I need more time with it to maybe find a few annoying things.
There are function keys available. The good thing: You need to press the Fn key to reach them, so you have access to the F1 to F12 keys normally. I am not sure, how I feel about the actual functions. You have your usual volume, brightness, media keys. But some are wired directly into the LapDock instead of into the system. So, instead of changing the volume or the brightness within my Linux system letting it handle those events, it directly changes the LapDock. This could be fine, but if I use a different audio output (which is highly likely), it won't be adjusted, neither another screens brightness. The audio part is annoying for me, the brightness part not. The touch-pad toggle is strangely both directly affecting the touch-pad, and also sending an event.
The media-keys send media-events, the ESC-key Meta-Tab.
The speakers… they remind me a bit of those speakers, that were inside PCs around 30 years ago. Those ones could play music with the right settings, e.g. pcspkr. Putting some Amiga, Atari, C64, SEGA, Nintendo… tunes on it, sound quite alright and enjoyable. And they can get quite loud. Don't forget to turn the volume up in the operating system AND on the LapDock. Listening to someone talk, is also okay. But "normal" music… as long as there are just mid and high tones, you might be okay with it. But everything lower and warmer is not available.
There is a headphone jack, which provides a simple way to get better audio out of another speaker or headphone.
I haven't tried the TF-card reader.
The HDMI in works, as does the USB-C in. And, of course, the USB-C power in.
But, finally, the most weird part is the touch-pad. It is AND is NOT a touch-pad. Under Linux it is registered as mouse with two buttons.
When you are do two finger swipes up and down, it will send wheel-up and wheel-down events (POINTER_SCROLL_WHEEL) like a mouse wheel (and also left and right) instead of POINTER_SCROLL_FINGER, which makes scrolling very unsmooth, tedious, choppy, annoying.
Certain areas and certain touches will even generate and send keyboard shortcuts. I found:
- one finger swipe in from top: Left-Meta + Down-Arrow
- one finger swipe in from left: Left-Meta + Tab
- one finger swipe in from right: Left-Meta + A
- one finger swipe in from bottom: Left-Meta + B
- three finger tap: Left-Meta + S
- three finger swipe down: Left-Meta + D
- three finger swipe up: Left-Meta + Tab
- three finger swipe right: Left-Alt + Tab
- three finger swipe left: Left-Shift + Left-Alt + Tab
- four finger tap: Left-Meta + A
The one finger swipes are super annoying to me, as I continuously accidentally trigger those. I had to unbind the Left-Meta + Down-Arrow in the system (which was set to organize a window at the lower half of the screen).
Middle click is also important to me. I found ydotool (instead of xdotool, because… wayland). The Debian provided version is old, so I had to either take the provided files, or compile it myself. Compiling directly provides a systemd-service file, which makes running the daemon a little easier.
$ git clone https://github.com/ReimuNotMoe/ydotool.git
$ cd ydotool
$ mkdir build
$ cd build
$ cmake -GNinja -DCMAKE_BUILD_TYPE=Release ..
$ ninja
$ sudo ninja install
$ systemctl enable --user ydotool
$ systemctl start --user ydotool
Afterwards I could create a new command in the KDE Plasma Systemsettings Shortcuts
ydotool click 0x42 0x82
and binding it to Meta + S (by just doing a three finger tap).
It doesn't react instantly, but still better, then not having it.
ydotool key 158:1 158:0
ydotool key 159:1 159:0
are two more shortcuts, that I bound to Meta + A and Meta + Tab to have the same backward and forward functionality in Firefox as it is by swiping with two fingers left and right. (The keycodes can be found, as ydotool says, under /usr/include/linux/input-event-codes.h) Somehow, the click on 5 and 6 didn't respond in the same way, that's why I used the keys instead here.
This feels better.
But there is this one thing: when typing, the touch-pad is turned off. This might be fine for some people, especially when continuously accidentally hitting it. But What about moving and dragging things and needing to hold Shift, Ctrl, Alt, Meta or any other key? Not possible. Prepare yourself to use the touchscreen in such cases. Or find another way without the need of the touch-pad.
The NexDock seems to do the same thing
- https://www.reddit.com/r/NexDock/comments/jfq3cb/why_that_dang_touchpad_is_so_weird_and_why_you/
- https://www.reddit.com/r/NexDock/comments/jc8pp2/nexdock_is_probably_a_subpar_linux_shell_a_review/
- https://www.reddit.com/r/NexDock/comments/jh1dyl/guide_how_to_disable_specific_trackpad_gestures/
It seems to have to do with Android. Some third-party game-pads have toggles to switch between different modes, like Android, X-Input, Switch, …. It would be nice to have something similar here to switch to Android or Other (e.g. Linux).
And probably more interfaces, making it a more versatile hub (else you need to put a USB-hub before to add more USB-Devices, LAN, DisplayPort, …). Which would be handy for e.g. the Steam Deck and similar devices.
Android smartphones are currently just … annoying.
They are powerful and could replace many peoples laptop. This is, where this LapDock comes in very handy. But then you find out, that many devices don't have DisplayPort out. And those, that have, don't have to have a Desktop Mode. Because there is no working one build in…
- Android 12 Desktop Mode: Use a Phone as PC, but Where's the Progress?
- Android 13 Desktop Mode is BROKEN! Let's FIX IT!
- Does Pixel 8 have video out and desktop mode?
Which basically just leaves custom desktop modes, which are provided by Samsung Dex and Motorola Ready For. (For gamers there is also Nubia Redmagic and Asus ROG with gaming modes. But not a real desktop.) (Huawei and Honor seem to also have a custom desktop mode - EMUI)
Android was released 15 years ago. And a lot of very different devices and companies are using it, developing for it. In comparison: Linux (released 1991) had KDE 3 after 11 years. How can there not be a normal desktop mode already. How can there be problems handling a track-pad. (Not even mentioning the lack of normal tools and programs, especially for a software developer. You can't just use your normal things like git, vscode, vim, … without having to install termux and proot to get an actual usable Linux environment. So much wasted potential.)
Let's see, what the future will bring.
For now, it is still rough and bumpy, and this seems to be a look into a future, for what can be, when things fall into place.
Finally, let's put some hardware information here:
Bus 001 Device 018: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x1a86 QinHeng Electronics
idProduct 0x7523 CH340 serial converter
bcdDevice 2.64
iManufacturer 0
iProduct 2 USB Serial
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0027
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 98mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 1
bInterfaceProtocol 2
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 1
Device Status: 0x0000
(Bus Powered)
Bus 001 Device 017: ID 27c0:0819 Cadwell Laboratories, Inc. WingCoolTouch
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x27c0 Cadwell Laboratories, Inc.
idProduct 0x0819
bcdDevice 1.13
iManufacturer 1 WingCoolTouch
iProduct 2 WingCoolTouch
iSerial 3 9LQ0172005164
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0042
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 200mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 200
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 33 US
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 38
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Device Status: 0x0000
(Bus Powered)
Bus 001 Device 016: ID 258a:8071 SINO WEALTH USB KEYBOARD
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x258a
idProduct 0x8071
bcdDevice 3.43
iManufacturer 1 SINO WEALTH
iProduct 2 USB KEYBOARD
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x003b
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 1 Keyboard
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 65
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 10
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 298
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 10
Device Status: 0x0000
(Bus Powered)
*-usb:0
description: Keyboard
product: SINO WEALTH USB KEYBOARD Consumer Control
vendor: SINO WEALTH
physical id: 1
bus info: usb@1:3.1
logical name: input82
logical name: /dev/input/event12
logical name: input82::capslock
logical name: input82::numlock
logical name: input82::scrolllock
logical name: input83
logical name: /dev/input/event13
logical name: /dev/input/mouse2
logical name: input84
logical name: /dev/input/event14
logical name: input85
logical name: /dev/input/event15
logical name: input86
logical name: /dev/input/event16
version: 3.43
capabilities: usb-1.10 usb
configuration: driver=usbhid maxpower=100mA speed=1Mbit/s
*-usb:1
description: Human interface device
product: WingCoolTouch WingCoolTouch
vendor: WingCoolTouch
physical id: 2
bus info: usb@1:3.2
logical name: input87
logical name: /dev/input/event17
logical name: /dev/input/mouse3
version: 1.13
serial: 9LQ0172005164
capabilities: usb-1.10 usb
configuration: driver=usbhid maxpower=200mA speed=12Mbit/s
*-usb:2
description: Generic USB device
product: USB Serial
vendor: QinHeng Electronics
physical id: 3
bus info: usb@1:3.3
version: 2.64
capabilities: usb-1.10
configuration: driver=ch341 maxpower=98mA speed=12Mbit/s
/dev/input/event12: SINO WEALTH USB KEYBOARD
/dev/input/event13: SINO WEALTH USB KEYBOARD Mouse
/dev/input/event14: SINO WEALTH USB KEYBOARD System Control
/dev/input/event15: SINO WEALTH USB KEYBOARD Wireless Radio Control
/dev/input/event16: SINO WEALTH USB KEYBOARD Consumer Control
/dev/input/event17: WingCoolTouch WingCoolTouch
-event12 DEVICE_ADDED SINO WEALTH USB KEYBOARD seat0 default group5 cap:k
-event13 DEVICE_ADDED SINO WEALTH USB KEYBOARD Mouse seat0 default group5 cap:p left scroll-nat scroll-button
-event14 DEVICE_ADDED SINO WEALTH USB KEYBOARD System Control seat0 default group5 cap:k
-event15 DEVICE_ADDED SINO WEALTH USB KEYBOARD Wireless Radio Control seat0 default group5 cap:k
-event16 DEVICE_ADDED SINO WEALTH USB KEYBOARD Consumer Control seat0 default group5 cap:k
-event17 DEVICE_ADDED WingCoolTouch WingCoolTouch seat0 default group6 cap:t size 216x91mm ntouches 10 calib
Device: SINO WEALTH USB KEYBOARD
Kernel: /dev/input/event12
Group: 5
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: SINO WEALTH USB KEYBOARD Mouse
Kernel: /dev/input/event13
Group: 5
Seat: seat0, default
Capabilities: pointer
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: disabled
Nat.scrolling: disabled
Middle emulation: disabled
Calibration: n/a
Scroll methods: button
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: flat *adaptive custom
Rotation: 0.0
Device: SINO WEALTH USB KEYBOARD System Control
Kernel: /dev/input/event14
Group: 5
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: SINO WEALTH USB KEYBOARD Wireless Radio Control
Kernel: /dev/input/event15
Group: 5
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: SINO WEALTH USB KEYBOARD Consumer Control
Kernel: /dev/input/event16
Group: 5
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: WingCoolTouch WingCoolTouch
Kernel: /dev/input/event17
Group: 6
Seat: seat0, default
Size: 216x91mm
Capabilities: touch
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: identity matrix
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
The Changingtouch monitor is also an excellent portable monitor and very cost-effective! It’s a lapdock that looks like a laptop, equipped with a keyboard and touchpad, and is also suitable for gaming and graphic design programs, with particularly good compatibility! Full metal body, lightweight design, suitable for any scenario! Limited time offer of $200!
AntwortenLöschenhttps://store.changingtouch.com/products/x14-lite
Interesting. But it looks very much the same.
LöschenDo you know, if it has the same problem with the touchpad (being on-device emulated as mouse)?