You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1495 lines
44 KiB

#!/bin/sh
Script_Ver="1.04.9406"
#Set CPU Type here for Silent Mode.
#EX: "64", "32", "ARM", "ARMhf, "AARCH64"
cpuArch=""
CheckCpuType(){
ARCH=`uname -m`
echo "(I) Platform application binary interface = ${ARCH}"
if [ ${ARCH} = "64" -o ${ARCH} = "x86_64" ] ; then
cpuArch="64"
elif [ ${ARCH} = "i386" -o $ARCH = "i586" -o $ARCH = "i686" ] ; then
cpuArch="32"
elif [ ${ARCH} = "aarch64" ] ; then
cpuArch="AARCH64"
elif [ ${ARCH} = "armv61" ] ; then
cpuArch="ARM"
else
ReadELF="readelf -A /bin/sh"
tmpfile="tmp.info"
${ReadELF}>${tmpfile} 2>&1
CheckConditionARMhf="Tag_ABI_VFP_args: VFP registers"
CheckConditionMIPS="Tag_GNU_MIPS_ABI_FP"
CheckConditionTagARM="Tag_ARM_ISA_use"
grep -q "${CheckConditionARMhf}" ${tmpfile}
if [ $? = 0 ];then
cpuArch="ARMhf"
else
grep -q "${CheckConditionMIPS}" ${tmpfile}
if [ $? = 0 ];then
cpuArch="MIPS"
else
grep -q "${CheckConditionTagARM}" ${tmpfile}
if [ $? = 0 ];then
cpuArch="ARM"
else
#for Silent Mode.
if [ ${SilentMode} = "true" ]; then
echo "Plese setup CPU Type for Silent Mode in setup.sh"
exit 1
fi
echo "Which platform arch do you use?"
echo "[1] ARM [2] ARMhf [3] AARCH64 [4] MIPS"
while : ; do
read arch
case $arch in
1) cpuArch="ARM"
break;;
2) cpuArch="ARMhf"
break;;
3) cpuArch="AARCH64"
break;;
4) cpuArch="MIPS"
break;;
*) echo "(I) Please choose [1], [2], [3] or [4]"
echo -n "(A) ";;
esac
done
fi
fi
fi
rm ${tmpfile}
fi
}
InitMember(){
# file name
drivername="eGTouch"
eGTouchSH="eGTouch.sh"
xorgfile="52-egalax-virtual.conf"
xorgfile_libinput="52-egalax-virtual-libinput.conf"
calibTool="eCalib"
Distri="GENERAL"
driverEXE="${drivername}D"
IniFile="${drivername}L.ini"
drvPkgFldr="${drivername}${cpuArch}"
drvPkgFldrX="" #This would be give value in functions.
paramfile="${drivername}*.param"
utilityExec="${drivername}U"
UtilityPic="${utilityExec}.png"
UtilityDesktop="${utilityExec}.desktop"
#/etc/system/systemd
daemonService="eGTouchD.service"
resumeService="eGTouchResume.service"
# path name
installpath="/usr/local"
etcpath="/etc"
usrbinpath="/usr/bin"
initpath="/etc/rc.d/init.d"
init1path="/etc/init.d"
rcSpath="/etc/rc.d/rcS.d"
rcS1path="/etc/rcS.d"
rc5path="/etc/rc.d/rc5.d"
rc51path="/etc/rc5.d"
lightdmpath="/etc/lightdm"
lightdmconfdpath="/etc/lightdm/lightdm.conf.d" #new distribution after Ubuntu 16.04.6
lightdmconfdfile="52-egalax-lightdm.conf"
rclocalfile="rc.local"
rclocalpath="/etc/rc.local" # Ubuntu and Fedora, General OS
rclocalpath1="/etc/init.d/boot.local" # OpenSuSe 11.04.
rclocalpath2="/etc/rc.d/rc.local" # Fedora 14 & Redhat6
rclocalpathSUSE11="/etc/rc.d/boot.local"
blacklistpath="/etc/modprobe.d/blacklist.conf"
etcModuleFile1="/etc/modules" # Ubuntu modules bootup file
etcModuleFile2="/etc/modules.conf" # RedHat modules bootup file
etcModuleFile3="/etc/conf.modules" # SuSe modules bootup file
etcModuleFile4="/etc/sysconfig/kernel" # Suse 11.4 module loaded on bootup file
trash="/dev/null"
xorgpath="/usr/share/X11/xorg.conf.d" # Ubuntu and Fedora
xorgpath1="/etc/X11/xorg.conf.d" # OpenSuSe 11.04
xorgpath2="/usr/lib/X11/xorg.conf.d" # for Ubuntu 10.04 and Meego 1.0 netbook
xorgconfpath="/etc/X11/xorg.conf"
parampath="/var/lib"
systemdpath="/etc/systemd/system" # for ubuntu 18.04 18.10
systemctlpath="/bin/systemctl" # for ubuntu 18.04 18.10
pixpath="/usr/share/pixmaps"
iconpath="/usr/share/icons/gnome/48x48/apps"
applicationpath="/usr/share/applications"
#For PS2 interface
seriofile="serio_raw.sh"
rcSfile="S01serio_raw.sh"
Xexist="true"
interface="usb"
SupportRotationMultiMonitor="false" #Enable detect rotation & multi monitor function, driver need start after X. Current use lightdm conf.
lightdmexist="false"
SupportBeep="false"
udevpath="/etc/udev/rules.d"
udevfile="99-egalax-udev.rules"
}
ShowTitle() {
echo ""
echo "(*) Driver installer for touch controller "
echo "(*) Script Version = ${Script_Ver} "
echo ""
}
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
}
pause() {
echo "(I) Please confirm the touch controller is linked with your device. Press [Enter] key to continue.........."
read DISCARD
}
InstallDriverRoutine() {
rm -f ${parampath}/${paramfile}
rm -f ${etcpath}/${paramfile}
if [ -e ${installpath}/${drvPkgFldr} ]; then # check old driver folder1 & remove
rm -rf ${installpath}/${drvPkgFldr}
fi
if [ -e ${installpath}/${drvPkgFldrX} ]; then # check old driver folder2 & remove
rm -rf ${installpath}/${drvPkgFldrX}
fi
cp -rf ${drvPkgFldr}/${drvPkgFldrX} ${installpath} #copy driver directory to target path
sysDrvFldr="${installpath}/${drvPkgFldrX}"
if [ $? = 0 ]; then
echo "(I) Place ${drivername} driver archive to ${sysDrvFldr}."
else
echo "(E) Place ${drivername} driver archive to ${sysDrvFldr} failed."
exit 1
fi
if [ $Xexist = "true" -a -e ${sysDrvFldr}/${utilityExec} ];then
cp Rule/$UtilityPic $sysDrvFldr # copy the png into driver installdest
fi
if [ -e ${sysDrvFldr}/${utilityExec} ]; then
( cd ${sysDrvFldr}; chown root:root ${utilityExec}; chmod 4755 ${utilityExec})
if [ $? != 0 ]; then
echo "(I) Change utility permission failed"
exit 1
fi
fi
cp ${installpath}/${drvPkgFldrX}/${IniFile} ${etcpath}
if [ $? != 0 ]; then
echo "(I) Copy ${IniFile} to ${etcpath} failed."
exit 1
fi
if [ -d ${usrbinpath} ]; then
chmod a+x ${sysDrvFldr}/${driverEXE}
ln -sf ${sysDrvFldr}/${driverEXE} ${usrbinpath}
echo "(I) Create ${drivername} daemon shortcut in ${usrbinpath}."
if [ -e ${sysDrvFldr}/${utilityExec} ]; then
chmod a+x ${sysDrvFldr}/${utilityExec}
ln -sf ${sysDrvFldr}/${utilityExec} ${usrbinpath}
echo "(I) Create ${utilityExec} tool shortcut in ${usrbinpath}."
fi
if [ -e ${sysDrvFldr}/${calibTool} ]; then
chmod 4755 ${sysDrvFldr}/${calibTool}
ln -sf ${sysDrvFldr}/${calibTool} ${usrbinpath}
echo "(I) Create ${calibTool} tool shortcut in ${usrbinpath}."
fi
else
echo "(W) There is no directory ${usrbinpath}. We can NOT link shortcut under ${usrbinpath}."
echo "(W) Please link it manually."
fi
cp setup.sh ${sysDrvFldr}
}
CheckUSBType() {
usbfile="usb.info"
checkusb="lsusb -v -d 0eef:"
${checkusb} > ${usbfile} 2> ${trash}
grep -q "Human Interface Device" ${usbfile}
if [ $? -eq 0 ]; then
echo "(I) Found a HID compliant touch controller."
CheckModuleAndBlacklist
else
grep -q "Vendor Specific Protocol" ${usbfile}
if [ $? -eq 0 ]; then
echo "(W) Found a non-HID compliant touch controller."
echo "(W) This driver doesn't support non-HID touch controller."
echo "(W) Please update touch driver."
RemoveDriver
fi
fi
rm -f ${usbfile}
}
CheckUSBPIDnKernel() {
Kversion=`uname -r`
Kversion=${Kversion##* } #3.8.0-23-generic-pae
Kmajor=${Kversion%%.*} #3
Ktmp=${Kversion#*.}
Kminor=${Ktmp%%.*} #8
if [ $Kmajor -ge 3 -a $Kminor -ge 8 ] && [ $Kmajor -le 3 -a $Kminor -le 12 ] ;then
usbfile="usb.info"
checkusbpid="lsusb -d 0eef:"
${checkusbpid} > ${usbfile} 2> ${trash}
grep -q "0001" ${usbfile}
if [ $? -eq 0 ]; then
echo ""
echo "(I) Found a PID:0001 touch controller in kernel 3.8 upwards."
dmesg | grep "hid-multitouch 0003:0EEF:0001" > ${trash}
if [ $? -ne 0 ]; then
RemindKernelHIDPatch
fi
fi
rm -f ${usbfile}
fi
}
CheckHIDRAW() {
tmpfile="tmp.info"
checkhidraw="dmesg"
${checkhidraw} > ${tmpfile} 2>&1
grep -q "hidraw" ${tmpfile}
if [ $? -eq 0 ]; then
echo "(I) Found hidraw module enabled in system"
else
echo "(E) Found no hidraw module. Please rebuild the module before installation."
exit
fi
rm -f ${tmpfile}
}
GenerateSerioRaw(){
checkcmd="which update-rc.d"
cmdinfofile="cmd.info"
${checkcmd} > ${cmdinfofile} 2>&1
grep -q "no update-rc.d in" ${cmdinfofile}
if [ $? -eq 0 ]; then #Put it into rclocal. Generally, we'll go into this part.
grep -q "added by eGalaxTouch installer" $rclocalModulesPath
if [ $? = 0 ]; then
echo "(I) echo seriow_raw was already written in ${rclocalModulesPath}"
else
filelines=`cat ${rclocalModulesPath} | wc -l`
sed -i ''${filelines}'i\# added by eGalaxTouch installer\necho -n "serio_raw" > /sys/bus/serio/devices/'${1}'/drvctl' ${rclocalModulesPath}
echo "(I) Generate serio script in $rclocalModulesPath"
fi
else # This part seems like not do the verification. I'm not sure that it could work properly.
cp -f Rule/${seriofile} ${initpath}
chmod 755 $initpath/$seriofile
sed -i '13a echo -n "serio_raw" > /sys/bus/serio/devices/'${1}'/drvctl' ${initpath}/${seriofile}
update-rc.d ${seriofile} start 01 S . > ${trash}
echo "(I) Generate serio script as $seriofile"
fi
rm -f ${cmdinfofile}
}
CheckSerioRawModule(){
lsmod | grep serio_raw > ${trash}
if [ $? = 0 ];then
echo "(I) Module serio_raw.ko is detected under lsmod"
else
echo "(W) Module \"serio_raw.ko\" doesn't exist in kernel module."
modprobe serio_raw
if [ $? = 0 ];then
echo "(I) Module serio_raw could be successfully loaded by modprobe."
AttachModuleAtBoot "serio_raw"
if [ $? = 0 ];then
echo "(I) Attach insmod \"serio_raw\" at boot successfully."
else
echo "(E) Module \"serio_raw\" attached at boot failed."
echo "(E) Please mannually let the module \"serio_raw\" attached at boot. Or touch would not be workable."
fi
else
echo "(E) There is no module serio_raw.ko"
echo "(E) Please make sure it is built-in the kernel, or touch would not be workable."
fi
fi
}
SetPS2Config(){
CheckSerioRawModule
echo "(I) Configure PS/2 aux driver."
SerioDevPath="/sys/bus/serio/devices"
tmp_file="tmp.info"
ls ${SerioDevPath} > ${tmp_file}
grep -q "serio" ${tmp_file}
if [ $? = 0 ];then # Check whether /sys/bus/serio/devices/serio0 1 2 3 4 exist
for i in 0 1 2 3 4
do
if [ -e ${SerioDevPath}/serio${i} ];then
ls ${SerioDevPath}/serio${i}/ -al > ${tmp_file} # the serioX"/" is very important, or it would not give what we want
grep -q "psmouse" ${tmp_file}
if [ $? -eq 0 ];then
serioport="serio${i}"
# If this serioX got PS mouse collection, at the file driver would link to ../bus/serio/drivers/psmouse
echo "(I) Found PS2 mouse driver at serio${i}."
GenerateSerioRaw ${serioport}
rm -f ${tmp_file}
return
fi
grep -q "serio_raw" ${tmp_file}
if [ $? = 0 ]; then
echo "(I) Found /"serio_raw/" located under ${SerioDevPath}/serio${i}/"
rm -f ${tmp_file}
return
fi
fi
done
echo "(E) No PS2 mouse driver found under ${SerioDevPath}/serioX"
exit 1
else
echo "(E) No serio device found under ${SerioDevPath}"
exit 1
fi
rm -f ${tmp_file}
}
RemoveeGTouchFile() {
rm -f ${parampath}/${paramfile}
rm -f ${etcpath}/${paramfile}
if [ -e ${etcpath}/${IniFile} ]; then
rm -rf ${etcpath}/${IniFile}
echo "(I) Removed ${IniFile} file from ${etcpath}."
else
echo "(W) No ${etcpath}/${IniFile} file found."
fi
}
RemoveShortcut() {
if [ -d ${usrbinpath} ]; then
if [ -L ${usrbinpath}/${driverEXE} ]; then
rm -f ${usrbinpath}/${driverEXE}
echo "(I) Removed ${driverEXE} shortcut from ${usrbinpath}."
else
echo "(W) No ${usrbinpath}/${driverEXE} shortcut found."
fi
if [ -L ${usrbinpath}/${utilityExec} ]; then
rm -f ${usrbinpath}/${utilityExec}
echo "(I) Removed ${utilityExec} shortcut from ${usrbinpath}."
else
echo "(W) No ${usrbinpath}/${utilityExec} shortcut found."
fi
if [ -L ${usrbinpath}/${calibTool} ]; then
rm -f ${usrbinpath}/${calibTool}
echo "(I) Removed ${calibTool} shortcut from ${usrbinpath}."
else
echo "(W) No ${usrbinpath}/${calibTool} shortcut found."
fi
else
echo "(W) No ${usrbinpath} folder found."
fi
}
AttachDrvExecAtRclocal() {
echo "(I) Append ${drivername} daemon execution into $1."
filelines=`cat $1 | wc -l`
sed -i ''${filelines}'i\### Beginning: Launch eGTouchD daemon while setup boot-up ###\
/usr/bin/eGTouchD -f\
### End: Launch eGTouchD daemon while setup boot-up ###' $1
}
DetachDrvExecFromRclocal() { # Remove the auto execution stings in rc.local
if [ -w ${rclocalModulesPath} ];then
sed -i '/### Beginning: Launch eGTouchD daemon while setup boot-up ###/,/### End: Launch eGTouchD daemon while setup boot-up ###/d' ${rclocalModulesPath}
echo "(I) Detach eGTouchD daemon execution from ${rclocalModulesPath}."
else
echo "(I) No ${rclocalModulesPath} file found."
fi
}
CheckRCExist(){
if [ -e ${systemctlpath} ];then
echo "(I) Found systemd service support in system"
cp -r "Rule/${daemonService}" ${systemdpath}
chmod a+x ${systemdpath}/${daemonService}
else
if [ -e ${initpath} ];then
cp -f "Rule/${eGTouchSH}" ${initpath}
chmod a+x ${initpath}/${eGTouchSH}
echo "(I) Copying ${eGTouchSH} to ${rcSpath}."
else
cp -f "Rule/${eGTouchSH}" ${init1path}
chmod a+x ${init1path}/${eGTouchSH}
echo "(I) Copying ${eGTouchSH} to ${rcS1path}."
fi
if [ -e ${rcSpath} ];then # /etc/rc.d/rcS.d exist
echo "(I) ${rcSpath} path found."
if [ ! -e ${rcSpath}/S99eGTouch ] && [ -e ${initpath}/${eGTouchSH} ]; then
ln -s "${initpath}/${eGTouchSH}" "${rcSpath}/S99eGTouch"
fi
elif [ -e ${rcS1path} ];then # /etc/rcS.d exist
echo "(I) ${rcS1path} path found."
if [ ! -e ${rcS1path}/S99eGTouch ] && [ -e ${init1path}/${eGTouchSH} ]; then
ln -s "${init1path}/${eGTouchSH}" "${rcS1path}/S99eGTouch"
fi
elif [ -e ${rc5path} ];then # /etc/rc.d/rc5.d exist
echo "(I) ${rc5path} path found."
if [ ! -e ${rc5path}/S99eGTouch ] && [ -e ${initpath}/${eGTouchSH} ]; then
ln -s ${initpath}/${eGTouchSH} ${rc5path}/S99eGTouch
fi
elif [ -e ${rc51path} ];then # /etc/rc5.d
echo "(I) ${rc51path} path found."
if [ ! -e ${rc51path}/S99eGTouch ] && [ -e ${initpath}/${eGTouchSH} ]; then
ln -s ${initpath}/${eGTouchSH} ${rc51path}/S99eGTouch
fi
fi
fi
}
RemoveRCSetting(){
if [ -e ${rcSpath}/S99eGTouch ];then # /etc/rc.d/rcS.d exist
echo "(I) ${rcSpath} path found, removing ${rcSpath}/S99eGTouch."
rm "${rcSpath}/S99eGTouch"
fi
if [ -e ${rcS1path}/S99eGTouch ];then # /etc/rcS.d exist
echo "(I) ${rcS1path} path found, removing ${rcS1path}/S99eGTouch."
rm "${rcS1path}/S99eGTouch"
fi
if [ -e ${rc5path}/S99eGTouch ];then
echo "(I) ${rc5path} path found, removing ${rc5path}/S99eGTouch."
rm "${rc5path}/S99eGTouch"
fi
if [ -e ${rc51path}/S99eGTouch ];then
echo "(I) ${rc51path} path found, removing ${rc51path}/S99eGTouch."
rm "${rc51path}/S99eGTouch"
fi
if [ -e ${systemdpath}/${daemonService} ]; then
systemctl disable eGTouchD.service
rm "${systemdpath}/${daemonService}"
fi
if [ -e ${initpath}/${eGTouchSH} ];then
rm "${initpath}/${eGTouchSH}"
echo "(I) Removing ${initpath}/${eGTouchSH}."
fi
if [ -e ${init1path}/${eGTouchSH} ];then
rm "${init1path}/${eGTouchSH}"
echo "(I) Removing ${init1path}/${eGTouchSH}."
fi
}
CheckLightDMExist(){
if [ -e ${lightdmconfdpath} ];then #/etc/lightdm/lightdm.conf.d/ folder is exist
cp -f "Rule/${lightdmconfdfile}" ${lightdmconfdpath}
chmod a+x ${lightdmconfdpath}/${lightdmconfdfile}
echo "(I) Copying ${lightdmconfdfile} to ${lightdmconfdpath}."
sed -i '/DetectRotation/s/0/1/' $etcpath/$IniFile
lightdmexist="true"
elif [ -e ${lightdmpath} ];then # lightdm folder is exist
if [ ! -e ${lightdmpath}/lightdm.conf ]; then
echo [SeatDefaults] > ${lightdmpath}/lightdm.conf
fi
sed -i '/\[SeatDefaults\]/agreeter-setup-script=\/usr\/bin\/eGTouchD' ${lightdmpath}/lightdm.conf
echo "(I) Add startup setting to ${lightdmpath}/lightdm.conf"
sed -i '/DetectRotation/s/0/1/' $etcpath/$IniFile
lightdmexist="true"
fi
}
RemoveLightDMSetting(){
if [ -e ${lightdmconfdpath} ];then #/etc/lightdm/lightdm.conf.d/ folder is exist
rm ${lightdmconfdpath}/${lightdmconfdfile}
echo "(I) Removing ${lightdmconfdpath}/${lightdmconfdfile}"
elif [ -e ${lightdmpath} ];then # lightdm is exist
echo "(I) ${lightdmpath} file found."
sed -i '/eGTouchD/d' ${lightdmpath}/lightdm.conf
echo "(I) Remove startup setting from ${lightdmpath}/lightdm.conf"
fi
}
CheckRClocalExist(){
if [ ! -e ${rclocalModulesPath} ];then # rc.local is not exist
if [ ${Distri} = "FC16" -o ${Distri} = "FC17" -o ${Distri} = "FC18" -o ${Distri} = "FC19" -o ${Distri} = "FC20" -o ${Distri} = "FC21" -o ${Distri} = "FC22" -o ${Distri} = "FC2X" -o ${Distri} = "FC3X" ];then
echo "(I) Copy ${rclocalfile} file to ${rclocalModulesPath}."
cp -f "Rule/${rclocalfile}" ${rclocalModulesPath}
chmod a+x ${rclocalModulesPath}
echo "(I) Starting rc-local.service"
systemctl restart rc-local.service
else
echo "(I) No ${rclocalModulesPath} file found."
RemoveDriver
echo ""
exit 1
fi
fi
echo "(I) Found ${rclocalModulesPath} file."
}
AllotRClocalPath(){ # This function would get target distri's rclocal path. And check whether it exist.
if [ ${Distri} = "SUSE" ]; then
ModifySUSE11Xorg
if [ -e ${rclocalpathSUSE11} ]; then
rclocalModulesPath=${rclocalpathSUSE11}
else
rclocalModulesPath=${rclocalpath1}
fi
elif [ ${Distri} = "FC14" -o ${Distri} = "FC16" -o ${Distri} = "FC17" -o ${Distri} = "FC18" -o ${Distri} = "FC19" -o ${Distri} = "FC20" -o ${Distri} = "FC21" -o ${Distri} = "FC22" -o ${Distri} = "Redhat6" -o ${Distri} = "CentOS6.3" -o ${Distri} = "CentOS6.4" -o ${Distri} = "CentOS6.2" -o ${Distri} = "Slackware" -o ${Distri} = "CentOS6.5" -o ${Distri} = "CentOS7.0" -o ${Distri} = "CentOS6.6" -o ${Distri} = "FC2X" -o ${Distri} = "FC3X" ];then
rclocalModulesPath=${rclocalpath2}
if [ -e ${rclocalpath2} ]; then
chmod 755 ${rclocalpath2}
fi
else
rclocalModulesPath=${rclocalpath}
fi
}
ModifySUSE11Xorg()
{
if [ -e ${xorgconfpath} ]; then
grep -q "ServerFlags" ${xorgconfpath}
fi
if [ $? -eq 0 ]; then
grep -q "AutoAddDevices" ${xorgconfpath}
if [ $? -eq 0 ]; then
echo "(I) Support AutoAddDevices on SUSE11"
else
sed -i '/Section "ServerFlags"/a\ Option "AutoAddDevices" "1"' ${xorgconfpath}
fi
fi
}
ModifyRClocal() {
if [ -e ${rclocalModulesPath} ]; then
grep -q "### Beginning: Launch ${drivername}D daemon while setup boot-up ###" ${rclocalModulesPath}
fi
if [ $? -eq 1 ]; then
AttachDrvExecAtRclocal ${rclocalModulesPath}
else
DetachDrvExecFromRclocal
if [ -e $rclocalModulesPath} ]; then
AttachDrvExecAtRclocal ${rclocalModulesPath}
fi
fi
}
Add2Blacklist() {
if [ -w ${blacklistpath} ]; then
grep -q $1 ${blacklistpath}
if [ $? -eq 1 ]; then
filelines=`cat ${blacklistpath} | wc -l`
if [ ${filelines} > 1 ];then
echo "(I) Add kernel module $1 into ${blacklistpath}."
sed -i ''${filelines}'a\### Beginning: blacklist usbtouchscreen ###\
blacklist usbtouchscreen\
### End: blacklist usbtouchscreen ###' ${blacklistpath}
else
echo -e "\n### Beginning: blacklist usbtouchscreen ###\nblacklist usbtouchscreen\n### End: blacklist usbtouchscreen ###" > ${blacklistpath}
fi
else
echo "(I) The kernel module $1 has been added in ${blacklistpath}."
fi
else
echo -e "\n### Beginning: blacklist usbtouchscreen ###\nblacklist usbtouchscreen\n### End: blacklist usbtouchscreen ###" > ${blacklistpath}
fi
}
ShowBlacklistMenu() {
echo "(I) It is highly recommended to add it into blacklist."
echo -n "(Q) Do you want to add it into blacklist? (y/n) "
while : ; do
read yorn
case $yorn in
[Yy]) Add2Blacklist $1
break;;
[Nn]) # Nothing to do here.
break;;
*) echo "(I) Please choose [y] or [n]"
echo -n "(A) ";;
esac
done
}
CheckModuleAndBlacklist() {
checkmod="lsmod"
modfile="mod.info"
${checkmod} > ${modfile} 2> ${trash}
grep -q "usbtouchscreen" ${modfile}
if [ $? -eq 0 ]; then
echo "(I) Found inbuilt kernel module: usbtouchscreen"
ShowBlacklistMenu "usbtouchscreen"
fi
rm -f ${modfile}
}
RestoreBlacklist() {
if [ -w ${blacklistpath} ]; then
grep -q "blacklist usbtouchscreen" ${blacklistpath}
if [ $? -eq 0 ]; then
sed -i '/### Beginning: blacklist usbtouchscreen ###/,/### End: blacklist usbtouchscreen ###/d' ${blacklistpath}
echo "(I) Removed blacklist usbtouchscreen from ${blacklistpath}."
fi
fi
}
AttachUdevRule() {
if [ ${Distri} = "SUSE" ];then
if [ -e ${xorgpath1}/${xorgfile} ]; then
echo "(W) Found udev rule: ${xorgfile}."
else
echo "(I) Copy udev rule: ${xorgfile} to ${xorgpath1}."
cp -f "Rule/${xorgfile}" ${xorgpath1}
fi
elif [ ${Distri} = "Ubuntu10.04" ];then
if [ -e ${xorgpath2}/${xorgfile} ]; then
echo "(W) Found udev rule: ${xorgfile}."
else
echo "(I) Copy udev rule: ${xorgfile} to ${xorgpath2}."
cp -f "Rule/${xorgfile}" ${xorgpath2}
fi
elif [ -e /usr/lib*/xorg/modules/input/libinput_drv.so ]; then
if [ -e ${xorgpath}/${xorgfile_libinput} ]; then
echo "(W) Found udev rule: ${xorgfile_libinput}."
else
echo "(I) Copy udev rule: ${xorgfile_libinput} to ${xorgpath}."
cp -f "Rule/${xorgfile_libinput}" ${xorgpath}
fi
else
if [ -e ${xorgpath}/${xorgfile} ]; then
echo "(W) Found udev rule: ${xorgfile}."
else
echo "(I) Copy udev rule: ${xorgfile} to ${xorgpath}."
cp -f "Rule/${xorgfile}" ${xorgpath}
fi
fi
}
DetachUdevRule() {
if [ -e ${xorgpath}/${xorgfile} ]; then # for Ubuntu 11.04 and Fedora 15
rm -rf ${xorgpath}/${xorgfile}
echo "(I) Removed udev rule: ${xorgpath}/${xorgfile}."
elif [ -e ${xorgpath}/${xorgfile_libinput} ]; then
rm -rf ${xorgpath}/${xorgfile_libinput}
echo "(I) Removed udev rule: ${xorgpath}/${xorgfile_libinput}."
else
if [ -e ${xorgpath1}/${xorgfile} ]; then # for Open SuSe 11.04
rm -rf ${xorgpath1}/${xorgfile}
echo "(I) Removed udev rule: ${xorgpath1}/${xorgfile}."
else
echo "(W) No udev rule: ${xorgfile} found."
fi
fi
}
RemoveSerioScript() {
if [ -w ${rclocalpath} ]; then
grep -q "echo -n" ${rclocalpath}
if [ $? -eq 0 ]; then
grep -q "# added by eGalaxTouch installer" ${rclocalpath}
if [ $? -eq 0 ]; then
sed -i '/# added by eGalaxTouch installer/,/echo -n/d' ${rclocalpath}
echo "(I) Restored ${rclocalpath}."
fi
fi
fi
if [ -e ${initpath}/${seriofile} ]; then
rm -f ${initpath}/${seriofile}
rm -f ${rcSpath}/${rcSfile}
echo "(I) Removed serio_raw script: ${initpath}/${seriofile}."
fi
}
RemoveDriver() {
temppath=`find ${installpath} -name ${driverEXE}`
sysDrvFldr=${temppath%/*}
if [ -z "${sysDrvFldr}" ]; then
echo "(E) The driver archive has been removed already."
echo ""
exit 1
elif [ -n "${sysDrvFldr}" ]; then
${driverEXE} -k
rm -rf ${sysDrvFldr}
echo "(I) Removed ${drivername} driver archive from ${sysDrvFldr}."
fi
RemoveeGTouchFile
RemoveShortcut
RemoveSerioScript
DetachDrvExecFromRclocal
if [ ${Distri} = "FC16" -o ${Distri} = "FC17" -o ${Distri} = "FC18" -o ${Distri} = "FC19" -o ${Distri} = "FC20" -o ${Distri} = "FC21" -o ${Distri} = "FC22" -o ${Distri} = "FC2X" -o ${Distri} = "FC3X" ];then
rm -rf ${rclocalModulesPath}
fi
RestoreBlacklist
DetachModuleAtBoot "uinput"
if [ $Xexist = "true" ];then
DetachUdevRule
fi
}
AddUtilityShortCut() {
if [ -e ${sysDrvFldr}/${utilityExec} ]; then
if [ -e ${pixpath} ]; then
cp -f Rule/${UtilityPic} ${pixpath}/${UtilityPic}
fi
if [ -e ${iconpath} ]; then
cp -f Rule/${UtilityPic} ${iconpath}/${UtilityPic}
fi
if [ -e ${applicationpath} ]; then
cp -f Rule/${UtilityDesktop} ${applicationpath}/${UtilityDesktop}
if [ $cpuArch = "32" ]; then
sed -i 's/eGTouch64withX/eGTouch32withX/' ${applicationpath}/${UtilityDesktop}
fi
fi
echo "(I) Create ${utilityExec} shortcut in application list."
fi
if [ -f /usr/share/gnome-menus/update-gnome-menus-cache ] ; then
/usr/share/gnome-menus/update-gnome-menus-cache /usr/share/applications > ~/desktop.en_US.utf8.cache
mv ~/desktop.en_US.utf8.cache /usr/share/applications/desktop.en_US.utf8.cache
fi
}
RemoveUtilityShortCut() {
if [ -e ${pixpath}/${UtilityPic} ];then
rm -f ${pixpath}/${UtilityPic}
fi
if [ -e ${iconpath}/${UtilityPic} ];then
rm -f ${iconpath}/${UtilityPic}
fi
if [ -e ${applicationpath}/${UtilityDesktop} ];then
rm -f ${applicationpath}/${UtilityDesktop}
fi
}
CheckUinput(){
UinputPath1="/dev/uinput"
UinputPath2="/dev/input/uinput"
uinput=0
ls ${UinputPath1} 1>${trash} 2>${trash}
if [ $? = 0 ];then
echo "(I) Found uinput at path ${UinputPath1}"
uinput=1
fi
ls ${UinputPath2} 1>${trash} 2>${trash}
if [ $? = 0 ];then
echo "(I) Found uinput at path ${UinputPath2}"
uinput=1
fi
if [ ${uinput} != 1 ];then # Found no uinput file
checkmod="lsmod"
modfile="mod.info"
${checkmod} > ${modfile} 2> ${trash}
grep -q "uinput" ${modfile}
if [ $? != 0 ]; then # Not found uinput.ko in modules
checkmodprobe="modprobe -l -a"
modprobefile="modprobe.info"
${checkmodprobe} > ${modprobefile} 2> ${trash}
grep -q "uinput" ${modprobefile}
if [ $? -eq 0 ]; then # Found uinput.ko in modules
echo "(I) Found uinput.ko in modules."
Loaduinput="modprobe uinput"
${Loaduinput} # Load uinput modules
AttachModuleAtBoot "uinput"
else
echo "(E) Can't load uinput module. Please rebuild the module before installation."
exit 1
fi
fi
fi
rm -f ${modfile}
rm -f ${modprobefile}
}
AttachModuleAtBoot(){
echo "(I) Attach module $1 loaded at boot."
if [ -w ${etcModuleFile1} ]; then
grep -q "### Beginning: Load ${1}.ko modules ###" ${etcModuleFile1}
if [ $? -eq 1 ]; then
filelines=`cat ${etcModuleFile1} | wc -l`
sed -i ''${filelines}'a\### Beginning: Load '${1}'.ko modules ###\
'${1}'\
### End: Load '${1}'.ko modules###' ${etcModuleFile1}
echo "(I) Add ${1} module into ${etcModuleFile1} file."
fi
elif [ -w ${etcModuleFile2} ]; then
grep -q "### Beginning: Load ${1}.ko modules ###" ${etcModuleFile2}
if [ $? -eq 1 ]; then
filelines=`cat ${etcModuleFile2} | wc -l`
sed -i ''${filelines}'a\### Beginning: Load '${1}'.ko modules ###\
'${1}'\
### End: Load '${1}'.ko modules###' ${etcModuleFile2}
echo "(I) Add ${1} module into ${etcModuleFile2} file."
fi
elif [ -w ${etcModuleFile3} ]; then
grep -q "### Beginning: Load ${1}.ko modules ###" ${etcModuleFile3}
if [ $? -eq 1 ]; then
filelines=`cat ${etcModuleFile3} | wc -l`
sed -i ''${filelines}'a\### Beginning: Load '${1}'.ko modules ###\
'${1}'\
### End: Load '${1}'.ko modules###' ${etcModuleFile3}
echo "(I) Add ${1} module into ${etcModuleFile3} file."
fi
elif [ -w ${etcModuleFile4} ]; then
grep -q "### Beginning: Load ${1}.ko modules ###" ${etcModuleFile4}
if [ $? -eq 1 ]; then
filelines=`cat ${etcModuleFile4} | wc -l`
sed -i ''${filelines}'a\### Beginning: Load '${1}'.ko modules ###\
MODULES_LOADED_ON_BOOT="'${1}'"\
### End: Load '${1}'.ko modules###' ${etcModuleFile4}
echo "(I) Add ${1} module into ${etcModuleFile4} file."
fi
elif [ -w ${rclocalModulesPath} ]; then
grep -q "### Beginning: Load ${1}.ko modules ###" ${rclocalModulesPath}
if [ $? -eq 1 ]; then
filelines=`cat ${rclocalModulesPath} | wc -l`
echo "(I) Add modprobe '${1}' module into ${rclocalModulesPath} file."
sed -i ''${filelines}'a\### Beginning: Load '${1}'.ko modules ###\
modprobe '${1}'\
### End: Load '${1}'.ko modules###' ${rclocalModulesPath}
fi
else
echo "(E) Can't add ${1} modules in ${etcModuleFile1}, ${etcModuleFile2}, ${etcModuleFile3} or ${rclocalModulesPath}."
exit 1
fi
}
DetachModuleAtBoot() {
if [ -w ${etcModuleFile1} ]; then
grep -q "Load $1.ko modules" ${etcModuleFile1}
if [ $? -eq 0 ]; then
sed -i '/### Beginning: Load $1.ko modules ###/,/### End: Load $1.ko modules###/d' ${etcModuleFile1}
rmmod $1
echo "(I) Removed $1 modules from ${etcModuleFile1}."
fi
elif [ -w ${etcModuleFile2} ]; then
grep -q "Load $1.ko modules" ${etcModuleFile2}
if [ $? -eq 0 ]; then
sed -i '/### Beginning: Load $1.ko modules ###/,/### End: Load $1.ko modules###/d' ${etcModuleFile2}
rmmod $1
echo "(I) Removed $1 modules from ${etcModuleFile2}."
fi
elif [ -w ${etcModuleFile3} ]; then
grep -q "Load $1.ko modules" ${etcModuleFile3}
if [ $? -eq 0 ]; then
sed -i '/### Beginning: Load $1.ko modules ###/,/### End: Load $1.ko modules###/d' ${etcModuleFile3}
rmmod $1
echo "(I) Removed $1 modules from ${etcModuleFile3}."
fi
elif [ -w ${rclocalModulesPath} ]; then
grep -q "Load $1.ko modules" ${rclocalModulesPath}
if [ $? -eq 0 ]; then
sed -i '/### Beginning: Load $1.ko modules ###/,/### End: Load $1.ko modules###/d' ${rclocalModulesPath}
rmmod $1
echo "(I) Removed $1 modules from ${rclocalModulesPath}."
fi
else
echo "(E) Can't find ${etcModuleFile1}, ${etcModuleFile2}, ${etcModuleFile3} or ${rclocalModulesPath} file."
fi
}
GetDistribution(){
Xcommand="X -version"
tmpfile="tmp.info"
${Xcommand}>${tmpfile} 2>&1
CheckCondition1="SUSE"
CheckCondition2="Build ID: xorg-x11-server 1.9.0-15.fc14 " #FC14
CheckCondition3="Build ID: xorg-x11-server 1.7.7-26.el6" #RHEL 6.1
CheckCondition4="Build ID: xorg-x11-server 1.11.1-1.fc16" #FC16
CheckCondition5="Build ID: xorg-x11-server 1.12.0-2.fc17" #FC17
CheckCondition6="xorg-server 2:1.7.6-2ubuntu7" #Ubuntu 10.04
CheckCondition7="Build ID: xorg-x11-server 1.8.0-12.fc13" #FC13
CheckCondition8="Build ID: xorg-x11-server 1.10.6-1.el6.centos" #CentOS 6.3
CheckCondition9="Build ID: xorg-x11-server 1.13.0-11.el6.centos" #CentOS 6.4
CheckCondition10="Build ID: xorg-x11-server 1.10.4-6.el6" #CentOS 6.2
CheckCondition11="Build ID: xorg-x11-server 1.13.0-11.el6" #RHEL 6.4
CheckCondition12="Build ID: xorg-x11-server 1.13.0-11.fc18" #FC18
CheckCondition13="Build ID: xorg-x11-server 1.14.1-4.fc19" #FC19
CheckCondition14="Build ID: xorg-x11-server 1.10.6-1.el6" #RHEL 6.3
CheckCondition15="Slackware Linux Project" #Slackware
CheckCondition16="Build ID: xorg-x11-server 1.14.4-5.fc20" #FC20
CheckCondition17="Build ID: xorg-x11-server 1.13.0-23" #CentOS 6.5
CheckCondition18="Build ID: xorg-x11-server 1.15.0-7.el7" #CentOS 7.0
CheckCondition19="Build ID: xorg-x11-server 1.15.0-22.el6.centos" #CentOS 6.6
CheckCondition20="Build ID: xorg-x11-server 1.16.1-1.fc21" #FC21
CheckCondition21="Build ID: xorg-x11-server 1.17.1-11.fc22" #FC22
CheckCondition22="fc2" #FC2X
CheckCondition23="fc3" #FC3X
grep -q "${CheckCondition1}" ${tmpfile}
if [ $? = 0 ];then
Distri="SUSE"
fi
grep -q "${CheckCondition2}" ${tmpfile}
if [ $? = 0 ];then
Distri="FC14"
fi
grep -q "${CheckCondition3}" ${tmpfile}
if [ $? = 0 ];then
Distri="Redhat6"
fi
grep -q "${CheckCondition4}" ${tmpfile}
if [ $? = 0 ];then
Distri="FC16"
fi
grep -q "${CheckCondition5}" ${tmpfile}
if [ $? = 0 ];then
Distri="FC17"
fi
grep -q "${CheckCondition6}" ${tmpfile}
if [ $? = 0 ];then
Distri="Ubuntu10.04"
fi
grep -q "${CheckCondition7}" ${tmpfile}
if [ $? = 0 ];then
Distri="FC14"
fi
grep -q "${CheckCondition8}" ${tmpfile}
if [ $? = 0 ];then
Distri="CentOS6.3"
fi
grep -q "${CheckCondition9}" ${tmpfile}
if [ $? = 0 ];then
Distri="CentOS6.4"
fi
grep -q "${CheckCondition10}" ${tmpfile}
if [ $? = 0 ];then
Distri="CentOS6.2"
fi
grep -q "${CheckCondition11}" ${tmpfile}
if [ $? = 0 ];then
Distri="Redhat6"
fi
grep -q "${CheckCondition12}" ${tmpfile}
if [ $? = 0 ];then
Distri="FC18"
fi
grep -q "${CheckCondition13}" ${tmpfile}
if [ $? = 0 ];then
Distri="FC19"
fi
grep -q "${CheckCondition14}" ${tmpfile}
if [ $? = 0 ];then
Distri="RedHat6"
fi
grep -q "${CheckCondition15}" ${tmpfile}
if [ $? = 0 ];then
Distri="Slackware"
fi
grep -q "${CheckCondition16}" ${tmpfile}
if [ $? = 0 ];then
Distri="FC20"
fi
grep -q "${CheckCondition17}" ${tmpfile}
if [ $? = 0 ];then
Distri="CentOS6.5"
fi
grep -q "${CheckCondition18}" ${tmpfile}
if [ $? = 0 ];then
Distri="CentOS7.0"
fi
grep -q "${CheckCondition19}" ${tmpfile}
if [ $? = 0 ];then
Distri="CentOS6.6"
fi
grep -q "${CheckCondition20}" ${tmpfile}
if [ $? = 0 ];then
Distri="FC21"
fi
grep -q "${CheckCondition21}" ${tmpfile}
if [ $? = 0 ];then
Distri="FC22"
fi
grep -q "${CheckCondition22}" ${tmpfile}
if [ $? = 0 ];then
Distri="FC2X"
fi
grep -q "${CheckCondition23}" ${tmpfile}
if [ $? = 0 ];then
Distri="FC3X"
fi
rm ${tmpfile}
return 0
}
RemindKernelHIDPatch(){
echo ""
echo "(W) No hid-multitouch module detected"
echo "(W) Please follow the Programming Guide to patch hid-core source code in kernel."
echo ""
echo " [Y] Yes, I've patched kernel already. [N] No, I haven't patched."
read ans
if [ ${ans} != "Y" -a ${ans} != "y" ];then
echo "(I) Please patch kernel before installing driver. Thanks."
echo ""
exit 1
fi
}
RemindKernelPatch(){
echo ""
echo "(W) You need to do kernel patch first."
echo "(W) Please follow the Programming Guide to patch kernel."
echo ""
echo " [Y] Yes, I've patched kernel already. [N] No, I haven't patched."
read ans
if [ ${ans} != "Y" -a ${ans} != "y" ];then
echo "(I) Please patch kernel before installing driver. Thanks."
echo ""
exit 1
fi
}
CheckXversion(){
Xcommand="X -version"
tmpfile="tmp.info"
${Xcommand}>${tmpfile} 2>&1
Xorg="X.Org X Server"
Xversion=`grep "${Xorg}" ${tmpfile}` # ex: Xversion = X.Org X Server 1.4.0.90.3
rm ${tmpfile}
Xversion=${Xversion##${Xorg} } # 1.4.0.90.3
Xmajor=${Xversion%%.*} # 1
Xtmp=${Xversion#*.} # 4.0.90.3
Xminor=${Xtmp%%.*} # 4
Xtmp=${Xtmp#*.} # 0.90.3
Xrelease=${Xtmp%%.*} # 0
echo "(I) X.Org X server ${Xmajor}.${Xminor}.${Xrelease}" # 1.4.0
if [ $Xmajor -ge 1 -a $Xminor -ge 8 ] || [ $Xmajor -ge 1 -a $Xminor -ge 7 -a $Xrelease -ge 6 ];then
echo "(I) X version is 1.7.6 upwards"
else # kernel version is below 1.8.7
echo "(W) X version is below 1.7.6."
RemindKernelPatch
fi
}
PatentConfirm(){
echo ""
echo "Declaration and Disclaimer
The programs, including but not limited to software and/or firmware (hereinafter referred to \"Programs\" or \"PROGRAMS\", are owned by eGalax_eMPIA Technology Inc. (hereinafter referred to EETI) and are compiled from EETI Source code. EETI hereby grants to licensee a personal, non-exclusive, non-transferable license to copy, use and create derivative works of Programs for the sole purpose in conjunction with an EETI Product, including but not limited to integrated circuit and/or controller. Any reproduction, copies, modification, translation, compilation, application, or representation of Programs except as specified above is prohibited without the express written permission by EETI.
Disclaimer: EETI MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO PROGRAMS, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. EETI reserves the right to make changes without further notice to the Programs described herein. Licensee agrees that EETI does not assume any liability, damages or costs, including but not limited to attorney fees, arising out from Programs themselves or those arising out from the application or combination Programs into other products or circuit. The use or the inclusion of EETI's Programs implies that the Licensee assumes all risk of such use and in doing so indemnifies EETI against all charges, including but not limited to any claims to infringement of any third party's intellectual property right."
echo ""
if [ ${SilentMode} = "false" ]; then
echo "Do you agree with above patent declaration?"
echo " [Y] Yes, I agree. [N] No, I don't agree."
read ans
if [ ${ans} != "Y" -a ${ans} != "y" ];then
exit 1
fi
fi
}
CheckXexist(){
Xcommand="X -version"
tmpfile="tmp.info"
${Xcommand} 2>${trash} 1>${trash}
if [ $? != 0 ];then
Xexist="false"
drvPkgFldrX="${drvPkgFldr}nonX"
echo "(W) No X server detected."
else
drvPkgFldrX="${drvPkgFldr}withX"
Xexist="true"
echo "(W) X server detected."
fi
}
AskInterface(){
echo ""
echo "(Q) Which interface controller do you use?"
echo -n "(I) [1] RS232 [2] USB [3] PS2 : "
while : ; do
read interface
case $interface in
1) interface="rs232"
break;;
2) interface="usb"
break;;
3) interface="ps2"
break;;
*) echo "(I) Please choose [1] or [2] or [3]"
echo -n "(A) ";;
esac
done
}
AskDevNums(){
echo ""
echo "(Q) How many controllers do you want to plug-in to system? [1-10]"
echo -n "(I) Default [1]:"
read nums
echo "$nums"
if [ -z $nums ];then
echo "(I) Device Nums is set to 1"
elif [ $nums -le 10 -a $nums -gt 1 ];then
sed -i '/DeviceNums/s/1/'${nums}'/' $etcpath/$IniFile
echo "(I) Device Nums is set to ${nums}"
else
echo "(I) Device Nums is set to 1"
fi
if [ ${interface} != "rs232" ]; then
sed -i '/ScanInterface/s/0/1/' $etcpath/$IniFile
fi
if [ -e ${rclocalpathSUSE11} ]; then
sed -i '/EventType/s/0/1/' $etcpath/$IniFile
fi
}
AskTslib(){
echo ""
echo "(Q) Do you need to work with Tslib?"
echo -n "(I) [y/N] :"
read ans
if [ -z $ans ];then
echo "(I) No tslib support"
elif [ ${ans} = "Y" -o ${ans} = "y" ];then
sed -i '/BtnType/s/0/1/' $etcpath/$IniFile #replace BtnType value 0 to 1
#sed -i '/EndOfDevice/i BtnType 1' $etcpath/$IniFile #insert a line BtnType before EndOfDevice
else
echo "(I) No tslib support"
fi
}
AskSuppotRatationMultiMonitor(){
echo ""
echo "(Q) Do you have requirement of monitor rotation or multi monitor?"
echo -n "(I) [y/N] :"
read ans
if [ -z $ans ];then
SupportRotationMultiMonitor="false"
elif [ ${ans} = "Y" -o ${ans} = "y" ];then
SupportRotationMultiMonitor="true"
fi
}
AskSupportBeep(){
echo ""
echo "(Q) Do you need beep sound?"
echo -n "(I) [y/N] :"
read ans
if [ -z $ans ];then
SupportBeep="false"
elif [ ${ans} = "Y" -o ${ans} = "y" ];then
SupportBeep="true"
fi
}
EnablePCSPKR(){
if [ -w ${blacklistpath} ]; then
grep -q "blacklist pcspkr" ${blacklistpath}
if [ $? -eq 0 ]; then
sed -i 's/^.*blacklist pcspkr/#blacklist pcspkr/' ${blacklistpath}
echo "(I) Enable pcspkr from ${blacklistpath}."
fi
fi
}
RemovePCSPKR(){
if [ -w ${blacklistpath} ]; then
grep -q "#blacklist pcspkr" ${blacklistpath}
if [ $? -eq 0 ]; then
sed -i 's/^.*blacklist pcspkr/blacklist pcspkr/' ${blacklistpath}
echo "(I) Restored pcspkr from ${blacklistpath}."
fi
fi
}
InstallUdevRule(){
if [ -e ${udevpath} ];then
cp -f "Rule/${udevfile}" ${udevpath}
chmod a+x ${udevpath}/${udevfile}
echo "(I) Copy ${udevfile} to ${udevpath}."
fi
}
RemoveUdevRule(){
if [ -e ${udevpath}/${udevfile} ];then
rm ${udevpath}/${udevfile}
echo "(I) Removed ${udevpath}/${udevfile}"
fi
}
if [ $# = 0 ]; then
SilentMode="false"
clear
ShowTitle
CheckPermission
CheckCpuType
InitMember
CheckXexist
if [ $Xexist = "true" ];then
GetDistribution
fi
AllotRClocalPath
PatentConfirm
AskInterface
pause
#CheckRClocalExist
CheckUinput
InstallDriverRoutine
InstallUdevRule
AskSuppotRatationMultiMonitor
if [ $SupportRotationMultiMonitor = "true" ];then
echo "(I) Please assign MonitorName in /etc/eGTouchL.ini. ex:\"eDP-1\" ,you can check monitor name by command \"xrandr\"."
echo "(I) Press [Enter] key to continue.........."
read DISCARD
AskSupportBeep
if [ $SupportBeep = "true" ];then
EnablePCSPKR
fi
else
CheckRCExist
fi
if [ $interface = "usb" ];then
CheckUSBType
CheckUSBPIDnKernel
CheckHIDRAW
if [ $Xexist = "true" ];then
CheckXversion
else
RemindKernelPatch
fi
elif [ $interface = "ps2" ];then
SetPS2Config
fi
if [ -e ${systemctlpath} ]; then
echo "(I) Found ${systemctlpath} path for systemd service"
else
ModifyRClocal
fi
AskDevNums
if [ $Xexist = "true" ];then
AttachUdevRule # Append udev rule onto X.org
AddUtilityShortCut # Add/Remove ShortCut
else
AskTslib
fi
if [ -e ${systemdpath}/${daemonService} ]; then
systemctl start eGTouchD.service
systemctl enable eGTouchD.service
elif [ -e ${usrbinpath}/${driverEXE} ]; then
${usrbinpath}/${driverEXE} -f
fi
if [ $SupportRotationMultiMonitor = "true" ];then
sleep 1
sed -i '/DetectRotation/s/0/1/' $etcpath/$IniFile
if [ -e ${systemdpath} ];then
#echo "(I) Put resume service in system"
cp "Rule/${resumeService}" ${systemdpath}
chmod a+x ${systemdpath}/${resumeService}
systemctl enable ${resumeService}
fi
fi
echo ""
echo "(I) Driver installation completed. Setup version $Script_Ver."
echo "(I) Please reboot the system."
elif [ $# -ge 1 ]; then
if [ $1 = "uninstall" ]; then
SilentMode="false"
clear
ShowTitle
CheckPermission
CheckCpuType
InitMember
CheckXexist
if [ $Xexist = "true" ];then
GetDistribution
fi
AllotRClocalPath
echo "(I) Begin to remove ${drivername} driver."
RemoveDriver
RemoveUtilityShortCut # Add/Remove Utility ShortCut
RemoveLightDMSetting
RemoveRCSetting
RemovePCSPKR
RemoveUdevRule
if [ -e ${systemdpath}/${resumeService} ];then
#echo "(I) Remove resume service"
systemctl disable ${resumeService}
rm "${systemdpath}/${resumeService}"
fi
echo ""
echo "(I) The ${drivername} driver has been removed successfully."
echo "(I) Please reboot the system."
elif [ $1 = "-silent" ] || [ $1 = "silent" ]; then
SilentMode="true"
clear
ShowTitle
CheckPermission
CheckCpuType
InitMember
CheckXexist
if [ $Xexist = "true" ];then
GetDistribution
fi
AllotRClocalPath
PatentConfirm
#AskInterface
CheckUinput
InstallDriverRoutine
InstallUdevRule
#AskSuppotRatationMultiMonitor
CheckRCExist
if [ $interface = "usb" ];then
CheckUSBType
CheckUSBPIDnKernel
CheckHIDRAW
if [ $Xexist = "true" ];then
CheckXversion
else
RemindKernelPatch
fi
elif [ $interface = "ps2" ];then
SetPS2Config
fi
if [ -e ${systemctlpath} ]; then
echo "(I) Found ${systemctlpath} path for systemd service"
else
ModifyRClocal
fi
#AskDevNums
if [ $Xexist = "true" ];then
AttachUdevRule # Append udev rule onto X.org
AddUtilityShortCut # Add/Remove ShortCut
else
AskTslib
fi
# Setting Device Nums Here
if [ $# -ge 2 ]; then
if [ $2 = "dev" ]||[ $2 = "-dev" ]; then
nums=$3
sed -i '/DeviceNums/s/1/'${nums}'/' $etcpath/$IniFile
fi
fi
if [ ${interface} != "rs232" ]; then
sed -i '/ScanInterface/s/0/1/' $etcpath/$IniFile
fi
if [ -e ${systemdpath}/${daemonService} ]; then
systemctl start eGTouchD.service
systemctl enable eGTouchD.service
elif [ -e ${usrbinpath}/${driverEXE} ]; then
${usrbinpath}/${driverEXE} -f
fi
echo ""
echo "(I) Driver installation completed. Setup version $Script_Ver."
echo "(I) Please reboot the system."
# Start eGTouchD
#/usr/bin/eGTouchD -f
else
echo "(I) Usage:"
echo "(I) sh $0: install driver package"
echo "(I) sh $0 uninstall: uninstall driver package"
fi
else
echo "(I) Usage:"
echo "(I) sh $0: install driver package"
echo "(I) sh $0 uninstall: uninstall driver package"
fi
echo ""