@ -0,0 +1,2 @@ | |||||
## Getac T800 G2 on RedHat 9.2 | |||||
@ -0,0 +1,157 @@ | |||||
2018/8/22 v2.5.6722 | |||||
-Support scan more USB devices. | |||||
2018/12/03 v2.5.7103 | |||||
-Support 80H84 series. | |||||
-Fix parsing Vkey data problem. | |||||
-Fix UART resistive controller report point error. | |||||
2018/12/21 v2.5.7121 | |||||
-Support Key combination, ex:"ctrl"+"A" | |||||
(keycode:https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/input-event-codes.h) | |||||
2019/02/01 v2.5.7301 | |||||
-Fix send wrong touch data when using active pen. | |||||
2019/02/18 v2.5.7318 | |||||
-Report resolution change to 2048. | |||||
2019/02/22 v2.5.7322 | |||||
-Support scan specific Product ID only. | |||||
2019/02/25 v2.5.7325 | |||||
-Adjust input event setting. | |||||
2019/03/08 v2.5.7408 | |||||
-Improve compatibility for Android system. | |||||
2019/03/13 v2.5.7413 | |||||
-Support HID Keyboard. | |||||
2019/04/10 v2.5.7510 | |||||
-Improve scan device process. | |||||
2019/05/02 v2.5.7602 | |||||
-Fix touch data problem when using UART interface. | |||||
2019/05/08 v2.5.7608 | |||||
-Fix mouse right click function. | |||||
2019/06/13 v2.5.7713 | |||||
-Improve compatibility for Android system. | |||||
2019/06/18 v2.5.7718 | |||||
-Improve scan USB device process. | |||||
-Improve compatibility for Android system. | |||||
2019/08/22 v2.5.7922 | |||||
-Improve driver initial process for Raptor. | |||||
2019/08/30 v2.5.7930 | |||||
-Support multi monitor. | |||||
2019/10/18 v2.5.8118 | |||||
-Fix report format problem about Raptor 1.12 & Raptor 1.13. | |||||
2019/10/24 v2.5.8124 | |||||
-Improve monitor mapping process. | |||||
2019/10/30 v2.5.8130 | |||||
-Improve monitor mapping process. | |||||
2019/12/05 v2.5.8305 | |||||
-Improve monitor mapping process. | |||||
2019/12/15 v2.5.8315 | |||||
-Scan more UART device path. | |||||
2020/01/08 v2.5.8408 | |||||
-Add the physical path name to create Android input device. | |||||
2020/02/13 v2.5.8513 | |||||
-Add the physical path name to create Linux input device. | |||||
2020/02/20 v2.5.8520 | |||||
-Improve driver initial process. | |||||
-Fix detect monitor rotation function. | |||||
2020/03/19 v2.5.8619 | |||||
-Update setup script. | |||||
2020/03/25 v2.5.8625 | |||||
-Update setup script. | |||||
-Fix monitor mapping problem after system suspend resume. | |||||
2020/03/30 v2.5.8630 | |||||
-Update programming guide. | |||||
2020/04/08 v2.5.8708 | |||||
-Fix monitor mapping problem. | |||||
-Fix multi touch controller problem. | |||||
-Fix click on release function. | |||||
2020/05/05 v2.5.8805 | |||||
-Update setup script. | |||||
-Update programming guide. | |||||
-Improve performance. | |||||
2020/05/25 v2.5.8825 | |||||
-Improve driver initial process. | |||||
-Fix monitor mapping problem for resistive controller. | |||||
2020/07/29 v2.5.9025 | |||||
-Fix resolution issue. | |||||
2020/08/21 v2.5.9321 | |||||
-Support ETR8000. | |||||
-support 80H84 series point calibration. | |||||
2020/11/04 v2.5.9406 | |||||
-Update Android calibration APK eGalaxCalibrator_v0.17. | |||||
-Support 1.018 FW of MERCURY controller. | |||||
-Screen rotation follow system setting. | |||||
-Set touch device to external device in Android. | |||||
2021/03/09 v2.5.9809 | |||||
-Change file mode from 777 to 666 | |||||
-Fix build warning. | |||||
-Modify eGTouchA.ini Pipe_IN/OUT path from /data/ to /data/eGalax/ for Android. | |||||
2021/03/10 v2.5.9810 | |||||
-Fix DetectRotation fail issue. | |||||
2021/05/04 v2.5.10004 | |||||
-Fix Android Pen Pressure range. | |||||
-Add Android Pen ID report. | |||||
-Fix Android TILT_X TILT_Y range. | |||||
2021/05/10 v2.5.10010 | |||||
-Add GetReportInfo() | |||||
-Fix Linux Pen Pressure, TILTE_X/Y range | |||||
-Add Pen ID | |||||
2021/06/18 v2.5.10118 | |||||
-Improve R/W Uinput fail issue. | |||||
-Remove daemon(0,0) for Android. | |||||
2021/07/06 v2.5.10206 | |||||
-fix Android version < 4 issue | |||||
-fix GetReportInfo fail, set to default value. | |||||
2021/10/22 v2.5.10522 | |||||
1.Add support OrionFamily new IC B4XXX & D4XXX. | |||||
3.Fix TILT_Y issue. | |||||
5.Add ini parameter "RS232HWFlowCtl" | |||||
6.Inprove ini file auto generate. | |||||
7.Inprove RS232 scan. | |||||
2021/11/10610 | |||||
1.Add parameter "BarrelKeyEnable" to support Pen Barrel Key as RightClick | |||||
2021/11/10626 | |||||
1.improvement serial packet parsing. | |||||
2021/12/10703 | |||||
1.improvement Merge USB Cmd. | |||||
2022/04/21 v2.5.11121 | |||||
1.Improvement APen support for new Orion 4.18 kernel. | |||||
2.Support VKey combo set, Maximum 5 combo key | |||||
3.Fix RS232 must /dev/ttyXXX issue. | |||||
2022/09/12 v2.5.11612 | |||||
1. Add Support New Orion Familly IC "PCAP A", "PCAP B", "PCAP D", "PCAP E" Series. | |||||
2. Add parameter -i for set ini file path. | |||||
3. Add ini [string] parameter "eGalaxToolPath" for Android pipe & log path. | |||||
4. Inprove when PCAT UART baud rate = 9600 No Touch issue. | |||||
2022/10/03 v2.5.11703 | |||||
1. Fix PCAP UART interface buad rate 9600 issue. | |||||
2. Add Support Event Type A on Linux. |
@ -0,0 +1,153 @@ | |||||
/* Through this source code, you could see the point output architechture of touch device. | |||||
You could follow below code to do point parsing. And develop your own app. */ | |||||
#include <unistd.h> | |||||
#include <stdlib.h> | |||||
#include <stdio.h> | |||||
#include <string.h> | |||||
#include <fcntl.h> | |||||
#include <limits.h> | |||||
#include <sys/types.h> | |||||
#include <sys/stat.h> | |||||
#include <linux/input.h> | |||||
/*Note: If you couldn't build this source code successfully, it may caused by the old kernel issue. | |||||
Please enable below define depending on your kernel version */ | |||||
//#define KERNEL_2_6_35_DOWNWARD /* As kernel <= 2.6.35 */ | |||||
//#define KERNEL_2_6_32_DOWNWARD /* As kernel <= 2.6.32 */ | |||||
//#define KERNEL_2_6_29_DOWNWARD /* As kernel <= 2.6.29 */ | |||||
typedef struct tagevent | |||||
{ | |||||
struct timeval time; | |||||
unsigned short type; | |||||
unsigned short code; | |||||
int value; | |||||
} input_event; | |||||
void ParseEvent( input_event ev ) | |||||
{ | |||||
static unsigned short X, Y, State; | |||||
static unsigned short X2, Y2, State2; | |||||
static unsigned char bIsSecond; | |||||
if( ev.type == EV_ABS ) { | |||||
switch( ev.code ) { | |||||
#ifndef KERNEL_2_6_35_DOWNWARD | |||||
case ABS_MT_SLOT: | |||||
printf(" [ABS_MT_SLOT] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
#endif | |||||
#ifndef KERNEL_2_6_32_DOWNWARD | |||||
case ABS_MT_PRESSURE: | |||||
printf(" [ABS_MT_PRESSURE] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
#endif | |||||
#ifndef KERNEL_2_6_29_DOWNWARD | |||||
case ABS_MT_TRACKING_ID: | |||||
printf(" [ABS_MT_TRACKING_ID] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
case ABS_MT_POSITION_X: | |||||
printf(" [ABS_MT_POSITION_X] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
case ABS_MT_POSITION_Y: | |||||
printf(" [ABS_MT_POSITION_Y] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
case ABS_MT_TOUCH_MAJOR: | |||||
printf(" [ABS_MT_TOUCH_MAJOR] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
case ABS_MT_WIDTH_MAJOR: | |||||
printf(" [ABS_MT_WIDTH_MAJOR] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
#endif | |||||
case ABS_X: | |||||
printf(" [ABS_X] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
case ABS_Y: | |||||
printf(" [ABS_Y] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
case ABS_RX: | |||||
printf(" [ABS_RX] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
case ABS_RY: | |||||
printf(" [ABS_RY] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
case ABS_PRESSURE: | |||||
printf(" [ABS_PRESSURE] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
default: | |||||
break; | |||||
} | |||||
} | |||||
else if( ev.type == EV_KEY ){ | |||||
switch( ev.code ){ | |||||
case BTN_TOUCH: | |||||
printf(" [BTN_TOUCH] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
case BTN_LEFT: | |||||
printf(" [BTN_LEFT] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
case BTN_EXTRA: | |||||
printf(" [BTN_EXTRA] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
default: | |||||
break; | |||||
} | |||||
} | |||||
else if( ev.type == EV_SYN ){ | |||||
switch( ev.code ){ | |||||
case SYN_REPORT: | |||||
printf(" [SYN_REPORT] code = %3d, value = %4d\n\n", ev.code , ev.value); | |||||
break; | |||||
#ifndef KERNEL_2_6_29_DOWNWARD | |||||
case SYN_MT_REPORT: | |||||
printf(" [SYN_MT_REPORT] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
break; | |||||
#endif | |||||
default: | |||||
break; | |||||
} | |||||
} | |||||
else if( ev.type == EV_MSC ){ | |||||
if( ev.code == MSC_SCAN ) | |||||
printf(" [MSC_SCAN] code = %3d, value = %4d\n", ev.code , ev.value); | |||||
} | |||||
} | |||||
int main( int argc, char **argv ) | |||||
{ | |||||
int fd; | |||||
unsigned char byFlag = 0; /* 0: Point */ | |||||
char strPort[64] = { 0 }; | |||||
fd_set readfds; | |||||
if( argc == 1 || argc > 2 ) { | |||||
printf(" \nUsage:\n \tGetEvent [Port]\n"); | |||||
printf("Example:\n \tGetEvent /dev/input/event1\n\n"); | |||||
return 0; | |||||
} | |||||
sprintf( strPort, "%s", argv[1] ); | |||||
printf("Event Port = %s ", strPort); | |||||
fd = open(strPort, O_RDONLY ); | |||||
if( fd >= 0 ) { | |||||
printf(" open: ok\n" ); | |||||
FD_ZERO( &readfds ); | |||||
FD_SET( fd , &readfds ); | |||||
while( 1 ) { | |||||
if( select( fd+1, &readfds, NULL, NULL, NULL ) > 0 ) { | |||||
input_event ev; | |||||
if( sizeof( input_event ) == read( fd, &ev, sizeof( input_event ) ) ) { | |||||
ParseEvent( ev ); | |||||
} else { | |||||
printf(" Nothing read \n" ); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
return 0; | |||||
} |
@ -0,0 +1,93 @@ | |||||
#!/bin/sh | |||||
#Get EETI Debug information script. Version 1.0 (20201007) | |||||
INFO_PATH="./eeti/info.html" | |||||
DMESG_PATH="./eeti/dmesg" | |||||
INFO_FOLDER="./eeti/" | |||||
CheckPermission() { | |||||
echo -n "(I) Check user permission:" | |||||
account=`whoami` | |||||
if [ ${account} = "root" ]; then | |||||
echo " ${account}, you are the supervisor." | |||||
else | |||||
echo " ${account}, you are NOT the supervisor." | |||||
echo "(E) The root permission is required to run this installer." | |||||
echo "" | |||||
exit 1 | |||||
fi | |||||
} | |||||
CheckPermission | |||||
echo "Start to collect log..." | |||||
#Modify DebugBits | |||||
CONFIG_FILE="/etc/eGTouchL.ini" | |||||
DEBUG_BITS="FFFFF" | |||||
sed -i '2d' $CONFIG_FILE | |||||
sed -i '1a DebugEnableBits\t\t\t'`echo $DEBUG_BITS` $CONFIG_FILE | |||||
#Restart driver | |||||
eGTouchD -f | |||||
sleep 5 | |||||
#Create folder to put information | |||||
mkdir $INFO_FOLDER | |||||
touch $INFO_PATH | |||||
chmod 666 $INFO_PATH | |||||
#Print Information to file | |||||
{ | |||||
echo "<html>" | |||||
echo "<body>" | |||||
echo "<tr>" | |||||
echo "<h1><strong><th>EETI Debug Log</th></strong></h1>" | |||||
echo "</tr>" | |||||
echo "<tr>" | |||||
date | |||||
echo "<p><strong><th>=====CPU Arch.=====</th></strong></p>" | |||||
lscpu | grep Architecture | |||||
echo "</tr>" | |||||
echo "<tr>" | |||||
echo "<p><strong><th>=====Kernel version.=====</th></strong></p>" | |||||
uname -r | |||||
echo "</tr>" | |||||
echo "<tr>" | |||||
echo "<p><strong><th>=====Distribution Info.=====</th></strong></p>" | |||||
cat /etc/*release | |||||
echo "</tr>" | |||||
echo "<tr>" | |||||
echo "<p><strong><th>=====Display server=====</th></strong></p>" | |||||
ps -e | grep tty | |||||
echo "</tr>" | |||||
echo "<tr>" | |||||
echo "<p><strong><th>=====Xinput Info.=====</th></strong></p>" | |||||
xinput list | |||||
echo "</tr>" | |||||
echo "<tr>" | |||||
echo "<p><strong><th>=====Input Devices=====</th></strong></p>" | |||||
cat /proc/bus/input/devices | |||||
echo "</tr>" | |||||
echo "</body>" | |||||
echo "</html>" | |||||
}> $INFO_PATH | |||||
#Copy dmesg | |||||
dmesg >> "$DMESG_PATH" | |||||
#Copy driver log | |||||
cp /tmp/eGTouch* $INFO_FOLDER | |||||
#Recover DebugBits | |||||
DEBUG_BITS="1" | |||||
sed -i '2d' $CONFIG_FILE | |||||
sed -i '1a DebugEnableBits\t\t\t'`echo $DEBUG_BITS` $CONFIG_FILE | |||||
#Copy config file | |||||
cp $CONFIG_FILE $INFO_FOLDER | |||||
#Restart driver | |||||
eGTouchD -f | |||||
tar --remove-files -zcvf ./eeti.tar.gz $INFO_FOLDER > /dev/null | |||||
echo "Finish." |
@ -0,0 +1,4 @@ | |||||
[SeatDefaults] | |||||
session-setup-script=/usr/bin/eGTouchD -f | |||||
greeter-setup-script=/usr/bin/eGTouchD -f | |||||
@ -0,0 +1,30 @@ | |||||
Section "InputClass" | |||||
Identifier "eGalax touch class" | |||||
MatchProduct "eGalax Inc.|Touchkit|eGalax_eMPIA Technology Inc." | |||||
MatchDevicePath "/dev/input/event*" | |||||
Driver "void" | |||||
Option "Ignore" | |||||
EndSection | |||||
Section "InputClass" | |||||
Identifier "eGalax mouse class" | |||||
MatchProduct "eGalax Inc.|Touchkit|eGalax_eMPIA Technology Inc.|eGalaxTouch Virtual Device" | |||||
MatchDevicePath "/dev/input/mouse*" | |||||
Driver "void" | |||||
Option "Ignore" | |||||
EndSection | |||||
Section "InputClass" | |||||
Identifier "eGalax joystick class" | |||||
MatchProduct "eGalax Inc.|Touchkit|eGalaxTouch Virtual Device" | |||||
MatchDevicePath "/dev/input/js*" | |||||
Driver "void" | |||||
Option "Ignore" | |||||
EndSection | |||||
Section "InputClass" | |||||
Identifier "eGalax virtual class" | |||||
MatchProduct "eGalaxTouch Virtual Device" | |||||
MatchDevicePath "/dev/input/event*" | |||||
Driver "libinput" | |||||
EndSection |
@ -0,0 +1,30 @@ | |||||
Section "InputClass" | |||||
Identifier "eGalax touch class" | |||||
MatchProduct "eGalax Inc.|Touchkit|eGalax_eMPIA Technology Inc." | |||||
MatchDevicePath "/dev/input/event*" | |||||
Driver "void" | |||||
Option "Ignore" | |||||
EndSection | |||||
Section "InputClass" | |||||
Identifier "eGalax mouse class" | |||||
MatchProduct "eGalax Inc.|Touchkit|eGalax_eMPIA Technology Inc.|eGalaxTouch Virtual Device" | |||||
MatchDevicePath "/dev/input/mouse*" | |||||
Driver "void" | |||||
Option "Ignore" | |||||
EndSection | |||||
Section "InputClass" | |||||
Identifier "eGalax joystick class" | |||||
MatchProduct "eGalax Inc.|Touchkit|eGalaxTouch Virtual Device" | |||||
MatchDevicePath "/dev/input/js*" | |||||
Driver "void" | |||||
Option "Ignore" | |||||
EndSection | |||||
Section "InputClass" | |||||
Identifier "eGalax virtual class" | |||||
MatchProduct "eGalaxTouch Virtual Device" | |||||
MatchDevicePath "/dev/input/event*" | |||||
Driver "evdev" | |||||
EndSection |
@ -0,0 +1,10 @@ | |||||
###for ingore inbox driver### | |||||
ACTION=="add", ENV{ID_VENDOR_ID}=="0eef", ENV{ID_INPUT}="" | |||||
###for ingore inbox driver### | |||||
@ -0,0 +1,18 @@ | |||||
/** | |||||
* Disable Gestures | |||||
* | |||||
* Gnome extension that disables the built in gestures. Useful for kiosks and touch screen apps where they may interfere. | |||||
* | |||||
* Matt Bell 2016 | |||||
* Thanks to Stackoverflow question #36896556 kepler_kingsnake | |||||
*/ | |||||
// When the extension is enabled, disable the gestures | |||||
function enable() { | |||||
global.stage.get_actions().forEach(a => a.enabled = false); | |||||
} | |||||
// When the extension is disabled, enable the gestures | |||||
function disable() { | |||||
global.stage.get_actions().forEach(a => a.enabled = true); | |||||
} |
@ -0,0 +1,11 @@ | |||||
{ | |||||
"_generated": "Generated by SweetTooth, do not edit", | |||||
"description": "Disable all gnome built in gestures. Useful for kiosks and touch screen apps.", | |||||
"name": "Disable Gestures", | |||||
"shell-version": [ | |||||
"3.20.4" | |||||
], | |||||
"url": "", | |||||
"uuid": "disable-gestures@egalax", | |||||
"version": 2 | |||||
} |
@ -0,0 +1,9 @@ | |||||
.helloworld-label { | |||||
font-size: 36px; | |||||
font-weight: bold; | |||||
color: #ffffff; | |||||
background-color: rgba(10,10,10,0.7); | |||||
border-radius: 5px; | |||||
padding: .5em; | |||||
} |
@ -0,0 +1,85 @@ | |||||
#!/bin/bash | |||||
usage() { | |||||
echo "Usage:" | |||||
echo "$0:" | |||||
echo " Install Gnome Extension: Disable-Gnome-Gesuture." | |||||
echo "$0 uninstall:" | |||||
echo " Uninstall Gnome Extension: Disable-Gnome-Gesuture." | |||||
echo "" | |||||
exit 0 | |||||
} | |||||
CheckPermission() { | |||||
echo -n "(I) Check user permission:" | |||||
account=`whoami` | |||||
if [ ${account} = "root" ]; then | |||||
echo " ${account}, you are the supervisor." | |||||
else | |||||
echo " ${account}" | |||||
echo -e "\033[1;31;5mYou are NOT the supervisor.\033[0m" | |||||
echo -e "\033[1;31;5m(E) The root permission is required to run this installer.\033[0m" | |||||
echo "" | |||||
exit 1 | |||||
fi | |||||
} | |||||
InitMember(){ | |||||
drivername="eGalaxInfo" | |||||
installpath="/usr/bin" | |||||
driverEXE="${drivername}_${cpuArch}" | |||||
gnomeShellPath="/usr/share/gnome-shell/extensions" | |||||
gnomeShellDisaleGesture="disable-gestures@egalax" | |||||
SupportDisableGnomeGesture="false" #Gnome Gesture Defalut is enabled. | |||||
} | |||||
install(){ | |||||
if [ -e ${gnomeShellPath} ];then #/usr/share/gnome-shell/extensions folder is exist | |||||
echo "(I) Copying ${gnomeShellDisaleGesture} to ${gnomeShellPath}." | |||||
cp -af "${gnomeShellDisaleGesture}" ${gnomeShellPath} | |||||
gnome-shell-extension-tool -e ${gnomeShellDisaleGesture} | |||||
else | |||||
echo "(I) If you Need to disable Gnome Gesture" | |||||
echo "\t please install gnome-shell-extension-tool, and try again." | |||||
fi | |||||
} | |||||
uninstall(){ | |||||
gnome-shell-extension-tool -d ${gnomeShellDisaleGesture} | |||||
if [ -e ${gnomeShellPath} ];then #/usr/share/gnome-shell/extensions folder is exist | |||||
echo "(I) Remove ${gnomeShellDisaleGesture}." | |||||
rm -rf ${gnomeShellPath}/${gnomeShellDisaleGesture} | |||||
fi | |||||
} | |||||
if [ $# = 0 ]; then | |||||
clear | |||||
CheckPermission | |||||
InitMember | |||||
install | |||||
elif [ $# -ge 1 ]; then | |||||
if [ $1 = "uninstall" ]; then | |||||
clear | |||||
CheckPermission | |||||
InitMember | |||||
uninstall | |||||
echo "(I) Gnome Extension: Disable Gnome Gesuture Uninstall Done." | |||||
echo "" | |||||
else | |||||
usage | |||||
fi | |||||
fi | |||||
@ -0,0 +1,6 @@ | |||||
#!/bin/sh | |||||
### Beginning: Launch eGTouchD daemon while setup boot-up ### | |||||
/usr/bin/eGTouchD | |||||
### End: Launch eGTouchD daemon while setup boot-up ### | |||||
exit 0 |
@ -0,0 +1,11 @@ | |||||
[Desktop Entry] | |||||
Name=eGTouchD | |||||
Comment=eGTouchD | |||||
Exec=sudo /usr/bin/eGTouchD | |||||
Terminal=false | |||||
Type=Application | |||||
X-GNOME-Bugzilla-Bugzilla=GNOME | |||||
X-GNOME-Bugzilla-Product=check window | |||||
X-GNOME-Bugzilla-Component=general | |||||
X-GNOME-Autostart-enabled=true |
@ -0,0 +1,13 @@ | |||||
[Unit] | |||||
SourcePath=/usr/bin/eGTouchD | |||||
[Service] | |||||
Type=forking | |||||
User=root | |||||
Group=root | |||||
ExecStart=/usr/bin/eGTouchD start | |||||
ExecReload=/usr/bin/eGTouchD restart | |||||
ExecStop=/usr/bin/eGTouchD stop | |||||
[Install] | |||||
WantedBy=multi-user.target |
@ -0,0 +1,13 @@ | |||||
[Unit] | |||||
Description=eGTouch Resume Service | |||||
After=suspend.target | |||||
[Service] | |||||
User=root | |||||
Group=root | |||||
Type=oneshot | |||||
ExecStart=/bin/bash -c 'kill -s SIGVTALRM $(pgrep eGTouchD)' | |||||
StandardOutput=syslog | |||||
[Install] | |||||
WantedBy=suspend.target |
@ -0,0 +1,8 @@ | |||||
[Desktop Entry] | |||||
Name=eGTouch Utility | |||||
Comment=eGTouch Utility | |||||
Exec=/usr/local/eGTouch64withX/eGTouchU | |||||
Icon=/usr/local/eGTouch64withX/eGTouchU.png | |||||
Terminal=false | |||||
Type=Application | |||||
Categories=GNOME;GTK;Utility; |
@ -0,0 +1 @@ | |||||
ALL ALL=(root) NOPASSWD:/usr/bin/eGTouchD |
@ -0,0 +1,7 @@ | |||||
#!/bin/sh | |||||
# | |||||
# This script will be executed *after* all the other init scripts. | |||||
# You can put your own initialization stuff in here if you don't | |||||
# want to do the full Sys V style init stuff. | |||||
touch /var/lock/subsys/local |
@ -0,0 +1,15 @@ | |||||
#!/bin/sh -e | |||||
# /etc/init.d/serio_raw: set up serio_raw kernel driver for PS2 aux port. | |||||
### BEGIN INIT INFO | |||||
# Provides: serio_raw | |||||
# Required-Start: $remote_fs $syslog | |||||
# Required-Stop: $remote_fs $syslog | |||||
# Default-Start: S | |||||
# Default-Stop: | |||||
### END INIT INFO | |||||
# Example | |||||
# echo -n "serio_raw" > /sys/bus/serio/devices/serioX/drvctl | |||||
exit 0 |
@ -0,0 +1,99 @@ | |||||
[eGTouchL.ini] | |||||
DebugEnableBits 1 | |||||
ShowDebugPosition 0 | |||||
DeviceNums 1 | |||||
BaudRate 0 | |||||
ScanInterface 0 | |||||
UseDriverCalib 0 | |||||
SkipFirstByte 0 | |||||
ShiftByteBothEnd 1 | |||||
ScanDevStartDelayTime 0 | |||||
[String] | |||||
SerialPath0 default | |||||
SerialPath1 default | |||||
DevPID0 null | |||||
DevPID1 null | |||||
[Device_No.0] | |||||
Physical_Address | |||||
SupportPoints 10 | |||||
SendRawPoints 0 | |||||
Direction 0 | |||||
Orientation 0 | |||||
EdgeCompensate 0 | |||||
EdgeLeft 100 | |||||
EdgeRight 100 | |||||
EdgeTop 100 | |||||
EdgeBottom 100 | |||||
HoldFilterEnable 0 | |||||
HoldRange 20 | |||||
SplitRectMode 0 | |||||
CustomRectLeft 0 | |||||
CustomRectRight 2047 | |||||
CustomRectTop 0 | |||||
CustomRectBottom 2047 | |||||
MonitorName null | |||||
DetectRotation 0 | |||||
ReportMode 1 | |||||
EventType 0 | |||||
BtnType 0 | |||||
RightClickEnable 1 | |||||
RightClickDuration 1500 | |||||
RightClickRange 20 | |||||
BeepState 0 | |||||
BeepDevice 0 | |||||
BeepFreq 1000 | |||||
BeepLen 200 | |||||
VKEYEnable 0 | |||||
VKEYReportMod 1 | |||||
VKEY_0 0 | |||||
[EndOfDevice] | |||||
[EndOfFile] | |||||
[NOTE]: | |||||
1. Remember to put this file at /etc/eGTouchL.ini | |||||
2. This is a parameter list that we can enable or disable functions easily by modifying the above list. | |||||
3. Please make sure just modify the value of the list. "DONT" change any front title of the list. | |||||
4. Below are the parameter explanations. | |||||
[Explanation of all Parameter]: | |||||
DebugEnableBits [0] Close all Debug , [FFFFF] Open all Debug | |||||
ShowDebugPosition [0] Print in file under /tmp , [1] Print in Terminal , [2] Print in both | |||||
SerialPath [default]: It represent serial port use default /dev/ttySX | |||||
/dev/serial/ttyS0: It represent assign the specific serial port. Pls be accordance to the form. | |||||
ScanDevStartDelayTime Driver booting delay time, the unit is millisecond. | |||||
Physical_Address USB physical address ( use for multi-device ) | |||||
SupportPoints [0] No point , [X] Point amount want to report | |||||
SendRawPoints [0] default point format , [1] raw point format | |||||
Direction [1] Invert X , [2] Invert Y , [4] Swap X with Y | |||||
Orientation [0] 0 degree, [1] 90 degree, [2] 180 degree, [3] 270 degree | |||||
EdgeCompensate [0] Disbale , [1] Enable | |||||
EdgeLeft [100] Default with no change , [50-150] Compensate Value. | |||||
EdgeRight [100] Default with no change , [50-150] Compensate Value. | |||||
EdgeTop [100] Default with no change , [50-150] Compensate Value. | |||||
EdgeBottom [100] Default with no change , [50-150] Compensate Value. | |||||
HoldFilterEnable [0] Disable , [1] Enable | |||||
HoldRange [X] Hold Filter Range area | |||||
SplitRectMode [0] Default , [1-8] In-built Mode , [9] Custom Mode | |||||
CustomRectLeft [0-2047] As Custom Mode, left edge value | |||||
CustomRectRight [0-2047] As Custom Mode, right edge value | |||||
CustomRectTop [0-2047] As Custom Mode, top edge value | |||||
CustomRectBottom [0-2047] As Custom Mode, bottom edge value | |||||
ReportMode [1] Normal Mode [2] Single Click on Touch [3] Single Click on Release | |||||
MonitorName Use for mapping touch data output to specific monitor. Check monitor name by command "xrandr", example: "eDP1". | |||||
DetectRotation [0] Disable [1] Enable to detect X rotation and map coordinate. | |||||
EventType [0] AUTO_DETECT | |||||
BtnType [0] BTN_LEFT [1] ABS_PRESSURE [2] BTN_TOUCH | |||||
RightClick [0] Disable RightClick, [1] Enable RightClick | |||||
RightClickDuration [X] After constant touch for X millisec, trigger RightClick | |||||
RightClickRange [X] The touch range(area) which would cause constant touch | |||||
BeepState [0] Disable beep [1] Beep on Touch [2] Beep on Release | |||||
BeepDevice [0] Disable [1] System Beep [2] Sound Card Beep | |||||
BeepFreq [X] Beep sound frequency | |||||
BeepLen [X] Beep sound length |
@ -0,0 +1,99 @@ | |||||
[eGTouchL.ini] | |||||
DebugEnableBits 1 | |||||
ShowDebugPosition 0 | |||||
DeviceNums 1 | |||||
BaudRate 0 | |||||
ScanInterface 0 | |||||
UseDriverCalib 0 | |||||
SkipFirstByte 0 | |||||
ShiftByteBothEnd 1 | |||||
ScanDevStartDelayTime 0 | |||||
[String] | |||||
SerialPath0 default | |||||
SerialPath1 default | |||||
DevPID0 null | |||||
DevPID1 null | |||||
[Device_No.0] | |||||
Physical_Address | |||||
SupportPoints 10 | |||||
SendRawPoints 0 | |||||
Direction 0 | |||||
Orientation 0 | |||||
EdgeCompensate 0 | |||||
EdgeLeft 100 | |||||
EdgeRight 100 | |||||
EdgeTop 100 | |||||
EdgeBottom 100 | |||||
HoldFilterEnable 0 | |||||
HoldRange 20 | |||||
SplitRectMode 0 | |||||
CustomRectLeft 0 | |||||
CustomRectRight 2047 | |||||
CustomRectTop 0 | |||||
CustomRectBottom 2047 | |||||
MonitorName null | |||||
DetectRotation 0 | |||||
ReportMode 1 | |||||
EventType 0 | |||||
BtnType 0 | |||||
RightClickEnable 1 | |||||
RightClickDuration 1500 | |||||
RightClickRange 20 | |||||
BeepState 0 | |||||
BeepDevice 0 | |||||
BeepFreq 1000 | |||||
BeepLen 200 | |||||
VKEYEnable 0 | |||||
VKEYReportMod 1 | |||||
VKEY_0 0 | |||||
[EndOfDevice] | |||||
[EndOfFile] | |||||
[NOTE]: | |||||
1. Remember to put this file at /etc/eGTouchL.ini | |||||
2. This is a parameter list that we can enable or disable functions easily by modifying the above list. | |||||
3. Please make sure just modify the value of the list. "DONT" change any front title of the list. | |||||
4. Below are the parameter explanations. | |||||
[Explanation of all Parameter]: | |||||
DebugEnableBits [0] Close all Debug , [FFFFF] Open all Debug | |||||
ShowDebugPosition [0] Print in file under /tmp , [1] Print in Terminal , [2] Print in both | |||||
SerialPath [default]: It represent serial port use default /dev/ttySX | |||||
/dev/serial/ttyS0: It represent assign the specific serial port. Pls be accordance to the form. | |||||
ScanDevStartDelayTime Driver booting delay time, the unit is millisecond. | |||||
Physical_Address USB physical address ( use for multi-device ) | |||||
SupportPoints [0] No point , [X] Point amount want to report | |||||
SendRawPoints [0] default point format , [1] raw point format | |||||
Direction [1] Invert X , [2] Invert Y , [4] Swap X with Y | |||||
Orientation [0] 0 degree, [1] 90 degree, [2] 180 degree, [3] 270 degree | |||||
EdgeCompensate [0] Disbale , [1] Enable | |||||
EdgeLeft [100] Default with no change , [50-150] Compensate Value. | |||||
EdgeRight [100] Default with no change , [50-150] Compensate Value. | |||||
EdgeTop [100] Default with no change , [50-150] Compensate Value. | |||||
EdgeBottom [100] Default with no change , [50-150] Compensate Value. | |||||
HoldFilterEnable [0] Disable , [1] Enable | |||||
HoldRange [X] Hold Filter Range area | |||||
SplitRectMode [0] Default , [1-8] In-built Mode , [9] Custom Mode | |||||
CustomRectLeft [0-2047] As Custom Mode, left edge value | |||||
CustomRectRight [0-2047] As Custom Mode, right edge value | |||||
CustomRectTop [0-2047] As Custom Mode, top edge value | |||||
CustomRectBottom [0-2047] As Custom Mode, bottom edge value | |||||
ReportMode [1] Normal Mode [2] Single Click on Touch [3] Single Click on Release | |||||
MonitorName Use for mapping touch data output to specific monitor. Check monitor name by command "xrandr", example: "eDP1". | |||||
DetectRotation [0] Disable [1] Enable to detect X rotation and map coordinate. | |||||
EventType [0] AUTO_DETECT | |||||
BtnType [0] BTN_LEFT [1] ABS_PRESSURE [2] BTN_TOUCH | |||||
RightClick [0] Disable RightClick, [1] Enable RightClick | |||||
RightClickDuration [X] After constant touch for X millisec, trigger RightClick | |||||
RightClickRange [X] The touch range(area) which would cause constant touch | |||||
BeepState [0] Disable beep [1] Beep on Touch [2] Beep on Release | |||||
BeepDevice [0] Disable [1] System Beep [2] Sound Card Beep | |||||
BeepFreq [X] Beep sound frequency | |||||
BeepLen [X] Beep sound length |
@ -0,0 +1,99 @@ | |||||
[eGTouchL.ini] | |||||
DebugEnableBits 1 | |||||
ShowDebugPosition 0 | |||||
DeviceNums 1 | |||||
BaudRate 0 | |||||
ScanInterface 0 | |||||
UseDriverCalib 0 | |||||
SkipFirstByte 0 | |||||
ShiftByteBothEnd 1 | |||||
ScanDevStartDelayTime 0 | |||||
[String] | |||||
SerialPath0 default | |||||
SerialPath1 default | |||||
DevPID0 null | |||||
DevPID1 null | |||||
[Device_No.0] | |||||
Physical_Address | |||||
SupportPoints 10 | |||||
SendRawPoints 0 | |||||
Direction 0 | |||||
Orientation 0 | |||||
EdgeCompensate 0 | |||||
EdgeLeft 100 | |||||
EdgeRight 100 | |||||
EdgeTop 100 | |||||
EdgeBottom 100 | |||||
HoldFilterEnable 0 | |||||
HoldRange 20 | |||||
SplitRectMode 0 | |||||
CustomRectLeft 0 | |||||
CustomRectRight 2047 | |||||
CustomRectTop 0 | |||||
CustomRectBottom 2047 | |||||
MonitorName null | |||||
DetectRotation 0 | |||||
ReportMode 1 | |||||
EventType 0 | |||||
BtnType 0 | |||||
RightClickEnable 1 | |||||
RightClickDuration 1500 | |||||
RightClickRange 20 | |||||
BeepState 0 | |||||
BeepDevice 0 | |||||
BeepFreq 1000 | |||||
BeepLen 200 | |||||
VKEYEnable 0 | |||||
VKEYReportMod 1 | |||||
VKEY_0 0 | |||||
[EndOfDevice] | |||||
[EndOfFile] | |||||
[NOTE]: | |||||
1. Remember to put this file at /etc/eGTouchL.ini | |||||
2. This is a parameter list that we can enable or disable functions easily by modifying the above list. | |||||
3. Please make sure just modify the value of the list. "DONT" change any front title of the list. | |||||
4. Below are the parameter explanations. | |||||
[Explanation of all Parameter]: | |||||
DebugEnableBits [0] Close all Debug , [FFFFF] Open all Debug | |||||
ShowDebugPosition [0] Print in file under /tmp , [1] Print in Terminal , [2] Print in both | |||||
SerialPath [default]: It represent serial port use default /dev/ttySX | |||||
/dev/serial/ttyS0: It represent assign the specific serial port. Pls be accordance to the form. | |||||
ScanDevStartDelayTime Driver booting delay time, the unit is millisecond. | |||||
Physical_Address USB physical address ( use for multi-device ) | |||||
SupportPoints [0] No point , [X] Point amount want to report | |||||
SendRawPoints [0] default point format , [1] raw point format | |||||
Direction [1] Invert X , [2] Invert Y , [4] Swap X with Y | |||||
Orientation [0] 0 degree, [1] 90 degree, [2] 180 degree, [3] 270 degree | |||||
EdgeCompensate [0] Disbale , [1] Enable | |||||
EdgeLeft [100] Default with no change , [50-150] Compensate Value. | |||||
EdgeRight [100] Default with no change , [50-150] Compensate Value. | |||||
EdgeTop [100] Default with no change , [50-150] Compensate Value. | |||||
EdgeBottom [100] Default with no change , [50-150] Compensate Value. | |||||
HoldFilterEnable [0] Disable , [1] Enable | |||||
HoldRange [X] Hold Filter Range area | |||||
SplitRectMode [0] Default , [1-8] In-built Mode , [9] Custom Mode | |||||
CustomRectLeft [0-2047] As Custom Mode, left edge value | |||||
CustomRectRight [0-2047] As Custom Mode, right edge value | |||||
CustomRectTop [0-2047] As Custom Mode, top edge value | |||||
CustomRectBottom [0-2047] As Custom Mode, bottom edge value | |||||
ReportMode [1] Normal Mode [2] Single Click on Touch [3] Single Click on Release | |||||
MonitorName Use for mapping touch data output to specific monitor. Check monitor name by command "xrandr", example: "eDP1". | |||||
DetectRotation [0] Disable [1] Enable to detect X rotation and map coordinate. | |||||
EventType [0] AUTO_DETECT | |||||
BtnType [0] BTN_LEFT [1] ABS_PRESSURE [2] BTN_TOUCH | |||||
RightClick [0] Disable RightClick, [1] Enable RightClick | |||||
RightClickDuration [X] After constant touch for X millisec, trigger RightClick | |||||
RightClickRange [X] The touch range(area) which would cause constant touch | |||||
BeepState [0] Disable beep [1] Beep on Touch [2] Beep on Release | |||||
BeepDevice [0] Disable [1] System Beep [2] Sound Card Beep | |||||
BeepFreq [X] Beep sound frequency | |||||
BeepLen [X] Beep sound length |
@ -0,0 +1,99 @@ | |||||
[eGTouchL.ini] | |||||
DebugEnableBits 1 | |||||
ShowDebugPosition 0 | |||||
DeviceNums 1 | |||||
BaudRate 0 | |||||
ScanInterface 0 | |||||
UseDriverCalib 0 | |||||
SkipFirstByte 0 | |||||
ShiftByteBothEnd 1 | |||||
ScanDevStartDelayTime 0 | |||||
[String] | |||||
SerialPath0 default | |||||
SerialPath1 default | |||||
DevPID0 null | |||||
DevPID1 null | |||||
[Device_No.0] | |||||
Physical_Address | |||||
SupportPoints 10 | |||||
SendRawPoints 0 | |||||
Direction 0 | |||||
Orientation 0 | |||||
EdgeCompensate 0 | |||||
EdgeLeft 100 | |||||
EdgeRight 100 | |||||
EdgeTop 100 | |||||
EdgeBottom 100 | |||||
HoldFilterEnable 0 | |||||
HoldRange 20 | |||||
SplitRectMode 0 | |||||
CustomRectLeft 0 | |||||
CustomRectRight 2047 | |||||
CustomRectTop 0 | |||||
CustomRectBottom 2047 | |||||
MonitorName null | |||||
DetectRotation 0 | |||||
ReportMode 1 | |||||
EventType 0 | |||||
BtnType 0 | |||||
RightClickEnable 1 | |||||
RightClickDuration 1500 | |||||
RightClickRange 20 | |||||
BeepState 0 | |||||
BeepDevice 0 | |||||
BeepFreq 1000 | |||||
BeepLen 200 | |||||
VKEYEnable 0 | |||||
VKEYReportMod 1 | |||||
VKEY_0 0 | |||||
[EndOfDevice] | |||||
[EndOfFile] | |||||
[NOTE]: | |||||
1. Remember to put this file at /etc/eGTouchL.ini | |||||
2. This is a parameter list that we can enable or disable functions easily by modifying the above list. | |||||
3. Please make sure just modify the value of the list. "DONT" change any front title of the list. | |||||
4. Below are the parameter explanations. | |||||
[Explanation of all Parameter]: | |||||
DebugEnableBits [0] Close all Debug , [FFFFF] Open all Debug | |||||
ShowDebugPosition [0] Print in file under /tmp , [1] Print in Terminal , [2] Print in both | |||||
SerialPath [default]: It represent serial port use default /dev/ttySX | |||||
/dev/serial/ttyS0: It represent assign the specific serial port. Pls be accordance to the form. | |||||
ScanDevStartDelayTime Driver booting delay time, the unit is millisecond. | |||||
Physical_Address USB physical address ( use for multi-device ) | |||||
SupportPoints [0] No point , [X] Point amount want to report | |||||
SendRawPoints [0] default point format , [1] raw point format | |||||
Direction [1] Invert X , [2] Invert Y , [4] Swap X with Y | |||||
Orientation [0] 0 degree, [1] 90 degree, [2] 180 degree, [3] 270 degree | |||||
EdgeCompensate [0] Disbale , [1] Enable | |||||
EdgeLeft [100] Default with no change , [50-150] Compensate Value. | |||||
EdgeRight [100] Default with no change , [50-150] Compensate Value. | |||||
EdgeTop [100] Default with no change , [50-150] Compensate Value. | |||||
EdgeBottom [100] Default with no change , [50-150] Compensate Value. | |||||
HoldFilterEnable [0] Disable , [1] Enable | |||||
HoldRange [X] Hold Filter Range area | |||||
SplitRectMode [0] Default , [1-8] In-built Mode , [9] Custom Mode | |||||
CustomRectLeft [0-2047] As Custom Mode, left edge value | |||||
CustomRectRight [0-2047] As Custom Mode, right edge value | |||||
CustomRectTop [0-2047] As Custom Mode, top edge value | |||||
CustomRectBottom [0-2047] As Custom Mode, bottom edge value | |||||
ReportMode [1] Normal Mode [2] Single Click on Touch [3] Single Click on Release | |||||
MonitorName Use for mapping touch data output to specific monitor. Check monitor name by command "xrandr", example: "eDP1". | |||||
DetectRotation [0] Disable [1] Enable to detect X rotation and map coordinate. | |||||
EventType [0] AUTO_DETECT | |||||
BtnType [0] BTN_LEFT [1] ABS_PRESSURE [2] BTN_TOUCH | |||||
RightClick [0] Disable RightClick, [1] Enable RightClick | |||||
RightClickDuration [X] After constant touch for X millisec, trigger RightClick | |||||
RightClickRange [X] The touch range(area) which would cause constant touch | |||||
BeepState [0] Disable beep [1] Beep on Touch [2] Beep on Release | |||||
BeepDevice [0] Disable [1] System Beep [2] Sound Card Beep | |||||
BeepFreq [X] Beep sound frequency | |||||
BeepLen [X] Beep sound length |
@ -0,0 +1,113 @@ | |||||
2018/8/22 v2.5.6722 | |||||
-Support scan more USB devices. | |||||
2018/12/03 v2.5.7103 | |||||
-Support 80H84 series. | |||||
-Fix parsing Vkey data problem. | |||||
-Fix UART resistive controller report point error. | |||||
2018/12/21 v2.5.7121 | |||||
-Support Key combination, ex:"ctrl"+"A" | |||||
(keycode:https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/input-event-codes.h) | |||||
2019/02/01 v2.5.7301 | |||||
-Fix send wrong touch data when using active pen. | |||||
2019/02/18 v2.5.7318 | |||||
-Report resolution change to 2048. | |||||
2019/02/22 v2.5.7322 | |||||
-Support scan specific Product ID only. | |||||
2019/02/25 v2.5.7325 | |||||
-Adjust input event setting. | |||||
2019/03/08 v2.5.7408 | |||||
-Improve compatibility for Android system. | |||||
2019/03/13 v2.5.7413 | |||||
-Support HID Keyboard. | |||||
2019/04/10 v2.5.7510 | |||||
-Improve scan device process. | |||||
2019/05/02 v2.5.7602 | |||||
-Fix touch data problem when using UART interface. | |||||
2019/05/08 v2.5.7608 | |||||
-Fix mouse right click function. | |||||
2019/06/13 v2.5.7713 | |||||
-Improve compatibility for Android system. | |||||
2019/06/18 v2.5.7718 | |||||
-Improve scan USB device process. | |||||
-Improve compatibility for Android system. | |||||
2019/08/22 v2.5.7922 | |||||
-Improve driver initial process for Raptor. | |||||
2019/08/30 v2.5.7930 | |||||
-Support multi monitor. | |||||
2019/10/18 v2.5.8118 | |||||
-Fix report format problem about Raptor 1.12 & Raptor 1.13. | |||||
2019/10/24 v2.5.8124 | |||||
-Improve monitor mapping process. | |||||
2019/10/30 v2.5.8130 | |||||
-Improve monitor mapping process. | |||||
2019/12/05 v2.5.8305 | |||||
-Improve monitor mapping process. | |||||
2019/12/15 v2.5.8315 | |||||
-Scan more UART device path. | |||||
2020/01/08 v2.5.8408 | |||||
-Add the physical path name to create Android input device. | |||||
2020/02/13 v2.5.8513 | |||||
-Add the physical path name to create Linux input device. | |||||
2020/02/20 v2.5.8520 | |||||
-Improve driver initial process. | |||||
-Fix detect monitor rotation function. | |||||
2020/03/19 v2.5.8619 | |||||
-Update setup script. | |||||
2020/03/25 v2.5.8625 | |||||
-Update setup script. | |||||
-Fix monitor mapping problem after system suspend resume. | |||||
2020/03/30 v2.5.8630 | |||||
-Update programming guide. | |||||
2020/04/08 v2.5.8708 | |||||
-Fix monitor mapping problem. | |||||
-Fix multi touch controller problem. | |||||
-Fix click on release function. | |||||
2020/05/05 v2.5.8805 | |||||
-Update setup script. | |||||
-Update programming guide. | |||||
-Improve performance. | |||||
2020/05/25 v2.5.8825 | |||||
-Improve driver initial process. | |||||
-Fix monitor mapping problem for resistive controller. | |||||
2020/07/29 v2.5.9025 | |||||
-Fix resolution issue. | |||||
2020/08/21 v2.5.9321 | |||||
-Support ETR8000. | |||||
-support 80H84 series point calibration. | |||||
2020/11/04 v2.5.9406 | |||||
-Update Android calibration APK eGalaxCalibrator_v0.17. | |||||
-Support 1.018 FW of MERCURY controller. | |||||
-Screen rotation follow system setting. | |||||
-Set touch device to external device in Android. |