blob: fb77c9a6b3abae7c1d049afd1635cda724e7d2d1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
# Dualshock 4 Keyboard
> Use your DS4 gamepad as a keyboard with touchpad while laying on the couch!
This is a proof of concept implementation of virtual keyboard device that
enables you to press any of these keyboard buttons with Dualshock 4 gamepad. It
currently words only on Linux and have non-trivial way to set up and run.
## Installation on Linux
You will need a C compiler (GCC or Clang) and `make` utility. Download and
unpack zip archive of this repo or clone it with git. Then run the following
from the root of the downloaded repo directory:
```
make
```
It will produce a binary named `main`.
## Run
First of all you need to be able to open `/dev/uinput` as a user, unless you
decided to do everything from root. Do this for your `user` as root if you want
to be able to run the virtual keyboard as user:
```
chown user:user /dev/uinput
```
### USB
Open up a file `/proc/bus/input/events` with some text editor or viewer. For example:
```
less /proc/bus/input/devices
```
Then find there an entry for `"Sony Interactive Entertainment Wireless Controller"`. It will look like this:
```
I: Bus=0003 Vendor=054c Product=09cc Version=8111
N: Name="Sony Interactive Entertainment Wireless Controller"
P: Phys=usb-0000:02:00.0-1.4.2.4/input3
S: Sysfs=/devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-1/1-1.4/1-1.4.2/1-1.4.2.4/1-1.4.2.4:1.3/0003:054C:09CC.000B/input/input27
U: Uniq=d0:bc:c1:a2:be:9f
H: Handlers=js0 event23
B: PROP=0
B: EV=1b
B: KEY=7fdb000000000000 0 0 0 0
B: ABS=3003f
B: MSC=10
```
If you don't see any entries for "Sony Interactive Entertainment something something..." and you are sure your USB cable is good, then go mess around with your kernel and find a way to enable DS4 support in the kernel.
The line `H: Handlers=js0 event23` is what wee need. `event23` is the gamepad device. You may end up with different event number. You must use it in the following commands instead of `event23`.
Once again, if you are planning to use virtual keyboard as `user`, run this as root:
```
chown oxore:oxore -R /dev/input/event23
```
Then run the program like this:
```
./main /dev/input/event23
```
### Bluetooth
TODO: Describe how to run when the gamepad is connected via Bluetooth
## Usage
Now you can issue keyboard keypresses by pressing some combinations of the gamepad buttons as shown in the following chart:

## Meta
Authors:
- Vladimir Novikov – oxore@protonmail.com
This is free and unencumbered software released into the public domain. See
``UNLICENSE`` for more information.
<!-- Markdown link & img dfn's -->
[readme-template]: https://github.com/dbader/readme-template
|