#!/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 ""