https://wiki.archlinux.org/api.php?action=feedcontributions&user=Code+m&feedformat=atomArchWiki - User contributions [en]2024-03-29T11:44:42ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Talk:Installation_guide&diff=283224Talk:Installation guide2013-11-16T16:28:50Z<p>Code m: /* Add quick note for order in mount section */</p>
<hr />
<div>== Read this first before add new suggestion ==<br />
* Point of this page is to ''not'' become another Beginner's guide. It's meant to be a ''concise'' checklist of things to be done. So detailed install instruction should go to [[Beginners' Guide]]. <br />
* If there is something to discuss which should also affect the Beginner's guide, then do it on [[Talk:Beginners' Guide]]. An advanced user will find this page less bloated and easier to read, so let's KISS.<br />
<br />
== Change section "Connect to the internet" ==<br />
<br />
Since the installation guide is now part of the iso image, I'd like to see a few references to the manpages of the necessary tools here, since you cannot open the network related wiki pages. Maybe something like this would be acceptable:<br />
Assuming a wired ethernet connection, running dhclient or dhcpcd is <br />
sufficient to get a lease. Otherwise set up the connection manually<br />
using ip add, wpa_supplicant (WLAN with WPA), pppoe-setup (DSL), etc.<br />
You can also create and use netcfg profiles. Read more in the manpages:<br />
ip(8), wpa_supplicant(8), pppoe(8), netcfg(8), netcfg-profiles(5)<br />
A reminder to install the packages for the internet connection in the pacstrap section would also be nice. -- [[User:progandy|progandy]]<br />
<br />
== Suggestions to update this guide as part of ISO ==<br />
Since this guide is now being included as 'install.txt' in the ISO, it might be beneficial to incorporate the following changes:<br />
* Entirely remove the '''1. Download''' section and move it to the Download area of the archlinux.org page. This document here is about installing, not downloading, checking, burning discs or dd'ing. The majority of users reading this have likely already booted up the install medium.<br />
* Begin or end the document by mentioning the new archlinux(7) man page which explains the location of important system configuration files<br />
# man archlinux<br />
* Slightly expand the '''6. Connect to the internet''' section to include the most basic examples of setting up a private network using a dynamic and static IP address. (Right now it's only a single paragraph/line.) It's a vital installation step and should actually be moved to the top as one of the first actions during system setup. This fact should be emphasized.<br />
<br />
Obtain dynamic IP <br />
# dhcpcd<br />
<br />
Set static IP<br />
# ip link set dev eth0 up<br />
# ip addr add 192.168.1.2/24 dev eth0<br />
# ip route add default via 192.168.1.1<br />
# echo "nameserver 8.8.8.8" >> /etc/resolv.conf<br />
<br />
--[[User:MajorTom|MajorTom]]<br />
<br />
:* I can agree to all your suggestions, I wonder why no one is modifying the wiki. Internet connection setup is the most important part and should be covered more extensively. In addition to your changes, mention the manpages and configuration templates for netcfg and pppoe-setup/connect. The boot medium must at least contain easy accesible information in order to read all pages referenced in the installation guide. There should also be mentioned that elinks is installed and can be used to access the wiki. --[[User:Progandy|Progandy]] ([[User talk:Progandy|talk]]) 21:50, 24 August 2012 (UTC)<br />
<br />
:* The {{ic|dhcpcd}} network daemon is started automatically: [https://www.archlinux.org/news/install-media-20120804-available/], [https://wiki.archlinux.org/index.php/Beginners%27_Guide#Network_setup], so there's no reason to start it manually. --[[User:DSpider|DSpider]] ([[User talk:DSpider|talk]]) 08:17, 25 August 2012 (UTC)<br />
<br />
== add a step: setting the clock ==<br />
<br />
Lots of things care about the clock being more-or-less correct, e.g. pacman-key will not work at all if the clock is too far out. Lots of brand new computers come with the clock set to something in the distant past, which causes weird problems during the install. [[User:Thetrivialstuff|Thetrivialstuff]] ([[User talk:Thetrivialstuff|talk]]) 23:14, 31 July 2012 (UTC)<br />
<br />
I agree, the instructions in "Installation Guide" leaves you without a /etc/adjtime file.<br />
The following should be added (taken from beginners guide, but shortened):<br />
Set the hardware clock and generate a {{ic|/etc/adjtime}} file with {{ic|# hwclock --systohc --utc}} or {{ic|# hwclock --systohc --localtime}}<br />
[[User:Bwid|Bwid]] ([[User talk:Bwid|talk]]) 08:03, 3 March 2013 (UTC)<br />
:There's no need for an adjtime file, but it does make sense to have people use {{ic|timedatectl}} from the live media to set the clock correctly. -- [[User:Thestinger|thestinger]] ([[User talk:Thestinger|talk]]) 03:30, 15 March 2013 (UTC)<br />
<br />
== pacman-key --init / populate? ==<br />
<br />
Isn't this a required step? pacstrap does not seem to do it on its own. [[User:Thetrivialstuff|Thetrivialstuff]] ([[User talk:Thetrivialstuff|talk]]) 23:15, 31 July 2012 (UTC)<br />
:Edit: Ah; I think this was related to the "set the clock" step -- I see that there is a pacman keyring init in the boot sequence of the latest media, but it (silently?) fails if the local clock is wrong.<br />
::https://mailman.archlinux.org/pipermail/arch-releng/2012-July/002708.html --[[User:Bluewind|Bluewind]] ([[User talk:Bluewind|talk]]) 09:10, 1 August 2012 (UTC)<br />
This really need to be included on tutorial before pacstrap. Otherwise it will not work. [[User:Michelboaventura|Michelboaventura]] ([[User talk:Michelboaventura|talk]]) 16:49, 20 September 2013 (UTC)<br />
<br />
==Proposed changes to Beginners' Guide and link to Post-Installation==<br />
Some major changes are under discussion in [[Talk:Beginners'_Guide#Guide_restructuring]]: some of them would require adjustments to this very guide, see for example [https://wiki.archlinux.org/index.php?title=Talk%3ABeginners%27_Guide&diff=224578&oldid=224567 this post].<br />
<br />
Please reply in the linked discussion, '''not''' here.<br />
<br />
-- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 12:15, 22 September 2012 (UTC)<br />
<br />
:I've added the steps in [[Beginners' Guide/Post-Installation]] to this guide, which now directly sends users to [[Beginners' Guide/Extra]].<br />
:If however [[Talk:Beginners' Guide#Guide restructuring]] will be implemented as planned, the [[Beginners' Guide]] will have a slightly different installation procedure than this guide, unless this one is updated too.<br />
:-- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 14:08, 24 September 2012 (UTC)<br />
<br />
::Shouldn't the information be added ''before'' "Unmount leftovers and reboot" ? By the way, the title should mention rebooting, because most likely a kernel update was involved. --[[User:DSpider|DSpider]] ([[User talk:DSpider|talk]]) 14:41, 24 September 2012 (UTC)<br />
<br />
:::The link to Post-Installation was the last step of the guide, so that's the line I've replaced with the instructions from Post-Installation.<br />
:::About rebooting in case of a kernel upgrade, I don't think it's necessary to state that since this guide is aimed at experienced users.<br />
:::In any case, any reordering or modification of the various steps should better be approved by a Developer, and probably the forum or the mailing lists are better places than this talk page to involve them in such discussions.<br />
:::-- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 14:59, 24 September 2012 (UTC)<br />
<br />
::::Yeah, but at this point, you were instructed to reboot. In order to edit {{ic|pacman.conf}}, you need to mount the root partition. And to update your system, you need to chroot into it. It would be better if "Unmount leftovers" was renamed "Unmount leftovers and reboot", and added at the end (before the suggestion to read the instructions from '''Extra'''). --[[User:DSpider|DSpider]] ([[User talk:DSpider|talk]]) 15:07, 24 September 2012 (UTC)<br />
<br />
:::::You are still instructed to reboot, aren't you? The "Unmount leftovers" section currently tells you to ''"reboot and then login into the new system with the root account"''. In the "new system", the correct partition is already mounted at /.<br />
:::::Whether or not configuring pacman, updating the system and adding a user would be better done in the chroot before rebooting, it's something that should be discussed with a Developer. I too think that it would make more sense, requiring one less reboot in case of a kernel upgrade.<br />
:::::-- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 15:18, 24 September 2012 (UTC)<br />
:::::Renaming "Unmount leftovers" to "Unmount leftovers and reboot" is safe anyway, so I've done that. -- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 15:37, 24 September 2012 (UTC)<br />
:::::@DSpider: you're quite active on the forum, why don't you propose your idea there? I think it would be interesting to discuss it. -- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 14:11, 25 September 2012 (UTC)<br />
:::::Ok, after reading [https://wiki.archlinux.org/index.php?title=Talk%3AInstallation_Guide&diff=226203&oldid=225070 this] I realize that maybe I haven't been clear enough, so I'll try to explain everything more thoroughly.<br />
:::::#The current procedure makes you [[Installation_Guide#Configure_the_system|configure the system]] in the '''chroot''' environment from the '''live''' system.<br />
:::::#Then, still in the '''live''' system, it [[Installation_Guide#Unmount and reboot|asks]] you to '''exit''' the chroot, unmount the partitions for the '''new''' system, '''reboot''' and login into the '''new''' system. Now, I refuse to write more explicitly in the guide that you should boot into the '''new''' system, and not again in the '''live''' system, in order to login into the new system.<br />
:::::#Since you are now into the '''new''' system ('''not''' the live system), the root partition is mounted at {{ic|/}}, not at {{ic|/mnt/}}, so you should be able to configure pacman, update the system and add a user wihtout chrooting. Now, if you've tested the procedure and really noticed that for some obscure-to-me reason you still need to chroot to /mnt in order to do those operations, please ask for clarifications in the forum because I wouldn't be able to answer any more.<br />
:::::Last thing, and I think this is the 3rd or 4th time I write it, I '''agree''' with you that configuring pacman etc. could easily be done in the chroot environment at step 1, but you should '''propose''' that change '''in the forum''' first, since it would be a change in the official installation procedure and I won't take responsibility for that.<br />
:::::I think this is the best I can do here, the next step to explain all this could be making a movie or a five-act play, but I hope it's not necessary :)<br />
:::::-- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 05:56, 30 September 2012 (UTC)<br />
<br />
== Mounting the Swap partition. ==<br />
<br />
Just a note to clarify the swap partition is '''NOT''' mounted.<br />
You will get an error message if you try.<br />
<br />
Turning on the partition with ''swapon'' command will have the desired effect of having it activated before you add it to /etc/fstab.<br />
--[[User:CaptainK|CaptainK]] ([[User talk:CaptainK|talk]]) 07:56, 12 June 2013 (UTC)<br />
<br />
== Hardware compatibility List ==<br />
<br />
The Installation Guide should refer to the Hardware compatibility List at https://wiki.archlinux.org/index.php/HCL in case specific kernel parameters are needed for the mainboard. --[[User:Qqqqqqqqq9|Qqqqqqqqq9]] ([[User talk:Qqqqqqqqq9|talk]]) 09:32, 1 August 2013 (UTC)<br />
: -1. The info in HCL is quite out of date so it should not be linked. -- [[User:Fengchao|Fengchao]] ([[User talk:Fengchao|talk]]) 13:13, 3 August 2013 (UTC)<br />
<br />
== base is redundant in pacstrap command ==<br />
<br />
pacstrap /mnt<br />
<br />
works just fine. base is installed by default. KISS, right? I'd do it myself, except it seems regular users don't have permission to edit this page.<br />
<br />
[[User:Ewtoombs|Ewtoombs]] ([[User talk:Ewtoombs|talk]]) 22:54, 10 September 2013 (UTC)<br />
<br />
== <s> simplify umount </s> ==<br />
<br />
# umount /mnt/{boot,home,}<br />
<br />
could be replaced with<br />
<br />
# umount -R /mnt<br />
<br />
which will umount everything under /mnt recursively. This is simpler because the user doesn't have to explicitly specify everything he mounted under /mnt.<br />
[[User:65kid|65kid]] ([[User talk:65kid|talk]]) 11:53, 14 September 2013 (UTC)<br />
: Done. Thanks. -- [[User:Fengchao|Fengchao]] ([[User talk:Fengchao|talk]]) 00:28, 27 October 2013 (UTC)<br />
<br />
== Clarify that vconsole.conf must be created ==<br />
<br />
Example: "Add console keymap and font preferences in /etc/vconsole.conf. This file must be created by you."<br />
<br />
: Please read [[#Read this first before add new suggestion]], first point... [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 20:46, 5 October 2013 (UTC)<br />
<br />
== genfstab, add -U for uuid ==<br />
<br />
see heading<br />
<br />
== Add quick note for order in mount section ==<br />
<br />
Would like to see a quick note stating that / should be mount before the other partitions or un-intentional unmounts will occur. I've installed Arch several times before, but forgetting this tiny tid-bit had me really confused for hours.<br />
<br />
:(Please sign your edits in talk pages, see [[Help:Discussion]])<br />
:Does [https://wiki.archlinux.org/index.php?title=Installation_Guide&diff=283024&oldid=279942] make it clear enough?<br />
:-- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 01:23, 16 November 2013 (UTC)<br />
<br />
::Close. I would like an explicit order word in there. Maybe the first sentence to mount root should use the word "First". Or perhaps instead of "then" say "Followed by". I can understand wanting to cut out wordy-ness here, so it's really your discretion. Thanks for considering this.</div>Code mhttps://wiki.archlinux.org/index.php?title=Talk:Installation_guide&diff=282921Talk:Installation guide2013-11-15T06:47:48Z<p>Code m: /* Add quick note for order in mount section */ new section</p>
<hr />
<div>== Read this first before add new suggestion ==<br />
* Point of this page is to ''not'' become another Beginner's guide. It's meant to be a ''concise'' checklist of things to be done. So detailed install instruction should go to [[Beginners' Guide]]. <br />
* If there is something to discuss which should also affect the Beginner's guide, then do it on [[Talk:Beginners' Guide]]. An advanced user will find this page less bloated and easier to read, so let's KISS.<br />
<br />
== Change section "Connect to the internet" ==<br />
<br />
Since the installation guide is now part of the iso image, I'd like to see a few references to the manpages of the necessary tools here, since you cannot open the network related wiki pages. Maybe something like this would be acceptable:<br />
Assuming a wired ethernet connection, running dhclient or dhcpcd is <br />
sufficient to get a lease. Otherwise set up the connection manually<br />
using ip add, wpa_supplicant (WLAN with WPA), pppoe-setup (DSL), etc.<br />
You can also create and use netcfg profiles. Read more in the manpages:<br />
ip(8), wpa_supplicant(8), pppoe(8), netcfg(8), netcfg-profiles(5)<br />
A reminder to install the packages for the internet connection in the pacstrap section would also be nice. -- [[User:progandy|progandy]]<br />
<br />
== Suggestions to update this guide as part of ISO ==<br />
Since this guide is now being included as 'install.txt' in the ISO, it might be beneficial to incorporate the following changes:<br />
* Entirely remove the '''1. Download''' section and move it to the Download area of the archlinux.org page. This document here is about installing, not downloading, checking, burning discs or dd'ing. The majority of users reading this have likely already booted up the install medium.<br />
* Begin or end the document by mentioning the new archlinux(7) man page which explains the location of important system configuration files<br />
# man archlinux<br />
* Slightly expand the '''6. Connect to the internet''' section to include the most basic examples of setting up a private network using a dynamic and static IP address. (Right now it's only a single paragraph/line.) It's a vital installation step and should actually be moved to the top as one of the first actions during system setup. This fact should be emphasized.<br />
<br />
Obtain dynamic IP <br />
# dhcpcd<br />
<br />
Set static IP<br />
# ip link set dev eth0 up<br />
# ip addr add 192.168.1.2/24 dev eth0<br />
# ip route add default via 192.168.1.1<br />
# echo "nameserver 8.8.8.8" >> /etc/resolv.conf<br />
<br />
--[[User:MajorTom|MajorTom]]<br />
<br />
:* I can agree to all your suggestions, I wonder why no one is modifying the wiki. Internet connection setup is the most important part and should be covered more extensively. In addition to your changes, mention the manpages and configuration templates for netcfg and pppoe-setup/connect. The boot medium must at least contain easy accesible information in order to read all pages referenced in the installation guide. There should also be mentioned that elinks is installed and can be used to access the wiki. --[[User:Progandy|Progandy]] ([[User talk:Progandy|talk]]) 21:50, 24 August 2012 (UTC)<br />
<br />
:* The {{ic|dhcpcd}} network daemon is started automatically: [https://www.archlinux.org/news/install-media-20120804-available/], [https://wiki.archlinux.org/index.php/Beginners%27_Guide#Network_setup], so there's no reason to start it manually. --[[User:DSpider|DSpider]] ([[User talk:DSpider|talk]]) 08:17, 25 August 2012 (UTC)<br />
<br />
== add a step: setting the clock ==<br />
<br />
Lots of things care about the clock being more-or-less correct, e.g. pacman-key will not work at all if the clock is too far out. Lots of brand new computers come with the clock set to something in the distant past, which causes weird problems during the install. [[User:Thetrivialstuff|Thetrivialstuff]] ([[User talk:Thetrivialstuff|talk]]) 23:14, 31 July 2012 (UTC)<br />
<br />
I agree, the instructions in "Installation Guide" leaves you without a /etc/adjtime file.<br />
The following should be added (taken from beginners guide, but shortened):<br />
Set the hardware clock and generate a {{ic|/etc/adjtime}} file with {{ic|# hwclock --systohc --utc}} or {{ic|# hwclock --systohc --localtime}}<br />
[[User:Bwid|Bwid]] ([[User talk:Bwid|talk]]) 08:03, 3 March 2013 (UTC)<br />
:There's no need for an adjtime file, but it does make sense to have people use {{ic|timedatectl}} from the live media to set the clock correctly. -- [[User:Thestinger|thestinger]] ([[User talk:Thestinger|talk]]) 03:30, 15 March 2013 (UTC)<br />
<br />
== pacman-key --init / populate? ==<br />
<br />
Isn't this a required step? pacstrap does not seem to do it on its own. [[User:Thetrivialstuff|Thetrivialstuff]] ([[User talk:Thetrivialstuff|talk]]) 23:15, 31 July 2012 (UTC)<br />
:Edit: Ah; I think this was related to the "set the clock" step -- I see that there is a pacman keyring init in the boot sequence of the latest media, but it (silently?) fails if the local clock is wrong.<br />
::https://mailman.archlinux.org/pipermail/arch-releng/2012-July/002708.html --[[User:Bluewind|Bluewind]] ([[User talk:Bluewind|talk]]) 09:10, 1 August 2012 (UTC)<br />
This really need to be included on tutorial before pacstrap. Otherwise it will not work. [[User:Michelboaventura|Michelboaventura]] ([[User talk:Michelboaventura|talk]]) 16:49, 20 September 2013 (UTC)<br />
<br />
==Proposed changes to Beginners' Guide and link to Post-Installation==<br />
Some major changes are under discussion in [[Talk:Beginners'_Guide#Guide_restructuring]]: some of them would require adjustments to this very guide, see for example [https://wiki.archlinux.org/index.php?title=Talk%3ABeginners%27_Guide&diff=224578&oldid=224567 this post].<br />
<br />
Please reply in the linked discussion, '''not''' here.<br />
<br />
-- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 12:15, 22 September 2012 (UTC)<br />
<br />
:I've added the steps in [[Beginners' Guide/Post-Installation]] to this guide, which now directly sends users to [[Beginners' Guide/Extra]].<br />
:If however [[Talk:Beginners' Guide#Guide restructuring]] will be implemented as planned, the [[Beginners' Guide]] will have a slightly different installation procedure than this guide, unless this one is updated too.<br />
:-- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 14:08, 24 September 2012 (UTC)<br />
<br />
::Shouldn't the information be added ''before'' "Unmount leftovers and reboot" ? By the way, the title should mention rebooting, because most likely a kernel update was involved. --[[User:DSpider|DSpider]] ([[User talk:DSpider|talk]]) 14:41, 24 September 2012 (UTC)<br />
<br />
:::The link to Post-Installation was the last step of the guide, so that's the line I've replaced with the instructions from Post-Installation.<br />
:::About rebooting in case of a kernel upgrade, I don't think it's necessary to state that since this guide is aimed at experienced users.<br />
:::In any case, any reordering or modification of the various steps should better be approved by a Developer, and probably the forum or the mailing lists are better places than this talk page to involve them in such discussions.<br />
:::-- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 14:59, 24 September 2012 (UTC)<br />
<br />
::::Yeah, but at this point, you were instructed to reboot. In order to edit {{ic|pacman.conf}}, you need to mount the root partition. And to update your system, you need to chroot into it. It would be better if "Unmount leftovers" was renamed "Unmount leftovers and reboot", and added at the end (before the suggestion to read the instructions from '''Extra'''). --[[User:DSpider|DSpider]] ([[User talk:DSpider|talk]]) 15:07, 24 September 2012 (UTC)<br />
<br />
:::::You are still instructed to reboot, aren't you? The "Unmount leftovers" section currently tells you to ''"reboot and then login into the new system with the root account"''. In the "new system", the correct partition is already mounted at /.<br />
:::::Whether or not configuring pacman, updating the system and adding a user would be better done in the chroot before rebooting, it's something that should be discussed with a Developer. I too think that it would make more sense, requiring one less reboot in case of a kernel upgrade.<br />
:::::-- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 15:18, 24 September 2012 (UTC)<br />
:::::Renaming "Unmount leftovers" to "Unmount leftovers and reboot" is safe anyway, so I've done that. -- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 15:37, 24 September 2012 (UTC)<br />
:::::@DSpider: you're quite active on the forum, why don't you propose your idea there? I think it would be interesting to discuss it. -- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 14:11, 25 September 2012 (UTC)<br />
:::::Ok, after reading [https://wiki.archlinux.org/index.php?title=Talk%3AInstallation_Guide&diff=226203&oldid=225070 this] I realize that maybe I haven't been clear enough, so I'll try to explain everything more thoroughly.<br />
:::::#The current procedure makes you [[Installation_Guide#Configure_the_system|configure the system]] in the '''chroot''' environment from the '''live''' system.<br />
:::::#Then, still in the '''live''' system, it [[Installation_Guide#Unmount and reboot|asks]] you to '''exit''' the chroot, unmount the partitions for the '''new''' system, '''reboot''' and login into the '''new''' system. Now, I refuse to write more explicitly in the guide that you should boot into the '''new''' system, and not again in the '''live''' system, in order to login into the new system.<br />
:::::#Since you are now into the '''new''' system ('''not''' the live system), the root partition is mounted at {{ic|/}}, not at {{ic|/mnt/}}, so you should be able to configure pacman, update the system and add a user wihtout chrooting. Now, if you've tested the procedure and really noticed that for some obscure-to-me reason you still need to chroot to /mnt in order to do those operations, please ask for clarifications in the forum because I wouldn't be able to answer any more.<br />
:::::Last thing, and I think this is the 3rd or 4th time I write it, I '''agree''' with you that configuring pacman etc. could easily be done in the chroot environment at step 1, but you should '''propose''' that change '''in the forum''' first, since it would be a change in the official installation procedure and I won't take responsibility for that.<br />
:::::I think this is the best I can do here, the next step to explain all this could be making a movie or a five-act play, but I hope it's not necessary :)<br />
:::::-- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 05:56, 30 September 2012 (UTC)<br />
<br />
== Mounting the Swap partition. ==<br />
<br />
Just a note to clarify the swap partition is '''NOT''' mounted.<br />
You will get an error message if you try.<br />
<br />
Turning on the partition with ''swapon'' command will have the desired effect of having it activated before you add it to /etc/fstab.<br />
--[[User:CaptainK|CaptainK]] ([[User talk:CaptainK|talk]]) 07:56, 12 June 2013 (UTC)<br />
<br />
== Hardware compatibility List ==<br />
<br />
The Installation Guide should refer to the Hardware compatibility List at https://wiki.archlinux.org/index.php/HCL in case specific kernel parameters are needed for the mainboard. --[[User:Qqqqqqqqq9|Qqqqqqqqq9]] ([[User talk:Qqqqqqqqq9|talk]]) 09:32, 1 August 2013 (UTC)<br />
: -1. The info in HCL is quite out of date so it should not be linked. -- [[User:Fengchao|Fengchao]] ([[User talk:Fengchao|talk]]) 13:13, 3 August 2013 (UTC)<br />
<br />
== base is redundant in pacstrap command ==<br />
<br />
pacstrap /mnt<br />
<br />
works just fine. base is installed by default. KISS, right? I'd do it myself, except it seems regular users don't have permission to edit this page.<br />
<br />
[[User:Ewtoombs|Ewtoombs]] ([[User talk:Ewtoombs|talk]]) 22:54, 10 September 2013 (UTC)<br />
<br />
== <s> simplify umount </s> ==<br />
<br />
# umount /mnt/{boot,home,}<br />
<br />
could be replaced with<br />
<br />
# umount -R /mnt<br />
<br />
which will umount everything under /mnt recursively. This is simpler because the user doesn't have to explicitly specify everything he mounted under /mnt.<br />
[[User:65kid|65kid]] ([[User talk:65kid|talk]]) 11:53, 14 September 2013 (UTC)<br />
: Done. Thanks. -- [[User:Fengchao|Fengchao]] ([[User talk:Fengchao|talk]]) 00:28, 27 October 2013 (UTC)<br />
<br />
== Clarify that vconsole.conf must be created ==<br />
<br />
Example: "Add console keymap and font preferences in /etc/vconsole.conf. This file must be created by you."<br />
<br />
: Please read [[#Read this first before add new suggestion]], first point... [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 20:46, 5 October 2013 (UTC)<br />
<br />
== genfstab, add -U for uuid ==<br />
<br />
see heading<br />
<br />
== Add quick note for order in mount section ==<br />
<br />
Would like to see a quick note stating that / should be mount before the other partitions or un-intentional unmounts will occur. I've installed Arch several times before, but forgetting this tiny tid-bit had me really confused for hours.</div>Code mhttps://wiki.archlinux.org/index.php?title=Broadcom_wireless&diff=165378Broadcom wireless2011-10-12T23:45:19Z<p>Code m: /* brcmsmac/brcmfmac */</p>
<hr />
<div>{{i18n|Broadcom wireless}}<br />
[[Category:Wireless Networking (English)]]<br />
<br />
== Introduction ==<br />
<br />
Broadcom has been notorious in its support for its Wi-Fi cards on GNU/Linux. Until recently, most Broadcom chips were either entirely unsupported or required the user to tinker with firmware. A limited set of wireless chips were supported by various reverse-engineered drivers ({{Codeline|brcm4xxx}}, {{Codeline|b43}}, etc.). The reverse-engineered [http://wireless.kernel.org/en/users/Drivers/b43 {{Codeline|b43}}] drivers have been in the kernel since 2.6.24.<br />
<br />
In August 2008, Broadcom released the [http://www.broadcom.com/support/802.11/linux_sta.php 802.11 Linux STA driver] officially supporting Broadcom wireless hardware on GNU/Linux. These are restrictively licensed drivers, but Broadcom promised to work towards a more open approach in the future. Further, they do not work with hidden ESSIDs.<br />
<br />
In September 2010, Broadcom [http://thread.gmane.org/gmane.linux.kernel.wireless.general/55418 finally released] fully open source drivers for its hardware. This driver, [http://wireless.kernel.org/en/users/Drivers/brcm80211 {{Codeline|brcm80211}}], has been included into the kernel since 2.6.37. With the release of 2.6.39, these drivers have been renamed to {{Codeline|brcmsmac}} and {{Codeline|brcmfmac}}.<br />
<br />
At the time of writing, there are three choices for users with Broadcom Wi-Fi chipsets:<br />
<br />
* {{Codeline|brcmsmac}}/{{Codeline|brcmfmac}}<br />
* {{Codeline|b43}}<br />
* {{Codeline|broadcom-wl}}<br />
<br />
== Determine which driver you need/can use ==<br />
<br />
First, determine your card's [http://en.wikipedia.org/wiki/PCI_configuration_space PCI-ID]. Type the following (case-sensitive) command into a console:<br />
$ lspci -vnn | grep 14e4<br />
<br />
If your card is in the following list, you can use the [[#brcmsmac.2Fbrcmfmac|{{Codeline|brcmsmac}} driver]]:<br />
{| border="1"<br />
! PCI-ID !! Name<br />
|-<br />
| {{Codeline|[14e4:4727]}} || BCM4313<br />
|-<br />
| {{Codeline|[14e4:4353]}} || BCM43224 <br />
|-<br />
| {{Codeline|[14e4:4357]}} || BCM43225<br />
|}<br />
If your card is in the following list, you can use the [[#brcmsmac.2Fbrcmfmac|{{Codeline|brcmfmac}} SDIO driver]]:<br />
{| border="1"<br />
! Name<br />
|-<br />
| BCM4329<br />
|}<br />
A more up-to-date list may be found [http://linuxwireless.org/en/users/Drivers/brcm80211 here].<br />
<br />
<br />
If your card is not in the above lists, you need to use the older {{Codeline|b43}} or {{Codeline|b43legacy}} driver, wich supports following devices.<br />
{| border="1"<br />
! PCI-ID !! Name !! Notes<br />
|-<br />
| {{Codeline|[14e4:4301]}} || BCM4301 || legacy-only<br />
|-<br />
| {{Codeline|[14e4:4306]}} || BCM4306 || ?legacy<br />
|-<br />
| {{Codeline|[14e4:4307]}} || BCM4306 ||<br />
|-<br />
| {{Codeline|[14e4:4311]}} || BCM4311 ||<br />
|-<br />
| {{Codeline|[14e4:4312]}} || BCM4311 ||<br />
|-<br />
| {{Codeline|[14e4:4313]}} || BCM4311 ||<br />
|-<br />
| {{Codeline|[14e4:4315]}} || BCM4312 || Not in kernel26-lts<br />
|-<br />
| {{Codeline|[14e4:4318]}} || BCM4318 ||<br />
|-<br />
| {{Codeline|[14e4:4319]}} || BCM4318 ||<br />
|-<br />
| {{Codeline|[14e4:4320]}} || BCM4306 || ?legacy<br />
|-<br />
| {{Codeline|[14e4:4321]}} || BCM4321 || Not in kernel26-lts<br />
|-<br />
| {{Codeline|[14e4:4324]}} || BCM4306 || legacy-only<br />
|-<br />
| {{Codeline|[14e4:4325]}} || BCM4306 || legacy-only<br />
|-<br />
| {{Codeline|[14e4:4328]}} || BCM4321 || Not in kernel26-lts<br />
|-<br />
| {{Codeline|[14e4:4329]}} || BCM4321 || Not in kernel26-lts<br />
|-<br />
| {{Codeline|[14e4:432a]}} || BCM4321 ||<br />
|-<br />
| {{Codeline|[14e4:432b]}} || BCM4322 || Not in kernel26-lts<br />
|-<br />
| {{Codeline|[14e4:432c]}} || BCM4322 ||<br />
|-<br />
| {{Codeline|[14e4:432d]}} || BCM4322 ||<br />
|-<br />
| {{Codeline|[14e4:4358]}} || BCM43227 ||<br />
|-<br />
| {{Codeline|[14e4:4359]}} || BCM43228 ||<br />
|}<br />
?legacy means that there are devices with same PCI-IDs, but with differend hardware awaiable.<br />
Some of these work with the {{Codeline|b43}} driver, but some might need {{Codeline|b43legacy}} driver.<br />
legacy-only means that you need to use the {{Codeline|b43legacy}} driver.<br />
<br />
A more up-to-date list may be found [http://linuxwireless.org/en/users/Drivers/b43 here].<br />
<br />
<br />
If your card is in the following list, you can use the [[#broadcom-wl|{{Codeline|broadcom-wl}} driver]]:<br />
{| border="1"<br />
! PCI-ID !! Name<br />
|-<br />
| {{Codeline|[14e4:4311]}} || BCM4311<br />
|-<br />
| {{Codeline|[14e4:4312]}} || BCM4311<br />
|-<br />
| {{Codeline|[14e4:4313]}} || BCM4311<br />
|-<br />
| {{Codeline|[14e4:4315]}} || BCM4312<br />
|-<br />
| {{Codeline|[14e4:4727]}} || BCM4313<br />
|-<br />
| {{Codeline|[14e4:4328]}} || BCM4321<br />
|-<br />
| {{Codeline|[14e4:4329]}} || BCM4321<br />
|-<br />
| {{Codeline|[14e4:432a]}} || BCM4321<br />
|-<br />
| {{Codeline|[14e4:432b]}} || BCM4322<br />
|-<br />
| {{Codeline|[14e4:432c]}} || BCM4322<br />
|-<br />
| {{Codeline|[14e4:432d]}} || BCM4322<br />
|-<br />
| {{Codeline|[14e4:4353]}} || BCM43224<br />
|-<br />
| {{Codeline|[14e4:4357]}} || BCM43225<br />
|-<br />
| {{Codeline|[14e4:4358]}} || BCM43227<br />
|-<br />
| {{Codeline|[14e4:4359]}} || BCM43228<br />
|}<br />
A more up-to-date list may be found [http://www.broadcom.com/docs/linux_sta/README.txt here].<br />
<br />
<br />
== Getting the driver ==<br />
=== brcmsmac/brcmfmac ===<br />
The {{Codeline|brcm80211}} drivers have been included in the kernel since 2.6.37. Since the release of 2.6.39, they have been renamed to {{Codeline|brcmsmac}} (for PCI cards) and {{Codeline|brcmfmac}} (for SDIO).<br />
<br />
These drivers should be automatically loaded during startup and no further action should be required of the user.<br />
<br />
{{Note|The {{Codeline|bcma}} module can prevent some cards from showing up and may need to be [[#Wi-Fi_card_does_not_work.2Fshow_up_since_kernel_upgrade_.28brcmsmac.29|blacklisted]].}}<br />
<br />
{{Note|[http://wireless.kernel.org/en/users/Drivers/brcm80211 Wireless.Kernel.org] states that brcm80211 does not support older PCI/PCIe chips with ssb backplane}}<br />
<br />
=== b43/b43legacy ===<br />
The drivers are included in the kernel since 2.6.24.<br />
<br />
==== Loading the {{Codeline|b43}}/{{Codeline|b43legacy}} kernel module ====<br />
Verify which module you need by looking up your device [http://wireless.kernel.org/en/users/Drivers/b43#Known_PCI_devices here]. You can also check by computer model [http://linuxwireless.org/en/users/Drivers/b43/devices here]. Blacklist the other module (either {{Codeline|b43}} or {{Codeline|b43legacy}}) to prevent possible problems/confusion. For instructions, see [[Kernel_modules#Blacklisting]].<br />
<br />
Install the appropriate {{Package AUR|b43-firmware}} or {{Package AUR|b43-firmware-legacy}} package from the [[AUR]].<br />
<br />
You can now configure your device.<br />
<br />
=== broadcom-wl ===<br />
{{Warning|This driver is more likely to cause problems than to resolve them. Most of the problems reported by users on Broadcom chips are caused by this driver. Using this is HIGHLY NOT recommended. Before you even think of trying out this one, make sure to try the other drivers first.}}<br />
For users of the {{Codeline|broadcom-wl}} driver, there is a PKGBUILD available in the AUR ({{Package AUR|broadcom-wl}}). You can also download this driver directly from [http://www.broadcom.com/support/802.11/linux_sta.php Broadcom]. However, the PKGBUILD method is strongly encouraged, as that way will have [[pacman]] track all of the files.<br />
<br />
==== Loading the {{Codeline|wl}} kernel module ====<br />
The {{Codeline|wl}} module may need to be manually loaded if there are other usable modules present. Before loading the {{Codeline|wl}} module, remove the {{Codeline|b43}} or other module that may have been automatically loaded instead:<br />
# rmmod b43<br />
<br />
Also unload {{Codeline|ssb}}, if loaded:<br />
# rmmod ssb<br />
<br />
{{Note|Failure to unload {{Codeline|ssb}} may result in the wireless interface not being created.}}<br />
<br />
Load the {{Codeline|wl}} module<br />
# modprobe wl<br />
<br />
The {{Codeline|wl}} module should automatically load {{Codeline|lib80211}} or {{Codeline|lib80211_crypt_tkip}}. Check with {{Codeline|lsmod}} to see if this is the case. If not, you may need to add one of those two modules as well.<br />
# modprobe lib80211<br />
<br />
or<br />
# modprobe lib80211_crypt_tkip<br />
<br />
If you installed the driver directly from Broadcom, you may also need to update the dependencies:<br />
# depmod -a<br />
<br />
To make the module load at boot, add {{Codeline|wl}} (and {{Codeline|lib80211}}/{{Codeline|lib80211_crypt_tkip}}, if needed) to your MODULES array in {{Filename|/etc/rc.conf}}.<br />
MODULES=(... wl...)<br />
<br />
You can also blacklist other modules (to prevent them from interfering) in {{Filename|/etc/modprobe.d/modprobe.conf}}. To blacklist a module just append a new line with the syntax {{Codeline|blacklist <module name>}}:<br />
blacklist b43<br />
blacklist ssb<br />
<br />
{{Warning|Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] does not work with blacklisting {{Codeline|b43}} and {{Codeline|ssb}}.}}<br />
<br />
== Troubleshooting ==<br />
=== Wi-Fi card does not work/show up since kernel upgrade ({{Codeline|brcmsmac}}) ===<br />
{{Note|This affects Linux kernel 3.0.}}<br />
This is caused by the kernel using the {{Codeline|bcma}} module instead of the {{Codeline|brcmsmac}} module. The solution is to blacklist the {{Codeline|bcma}} module. For instructions, see [[Kernel_modules#Blacklisting]].<br />
<br />
=== Wi-Fi card does not work when resuming from suspend ({{Codeline|brcm80211}}) ===<br />
{{Note|This issue only affects Linux kernels 2.6.38 and earlier.}}<br />
The {{Codeline|brcm80211}} module needs to be unloaded before suspend and reloaded upon resume, otherwise Wi-Fi will not come back up. This is printed by {{Codeline|dmesg}}:<br />
wlc_coreinit: ucode did not self-suspend!<br />
wlc_suspend_mac_and_wait: waited 83000 uS and MI_MACSSPNDD is still not on.<br />
psmdebug 0x000f8773, phydebug 0x00000000, psm_brc 0x0000<br />
<br />
The [[pm-utils]] page explains how to do this. If the file does not already exist, create a file called {{Filename|modules}} or {{Filename|config}} in {{Filename|/etc/pm/config.d/}} and add/modify the following line:<br />
SUSPEND_MODULES="brcm80211"<br />
<br />
Now, the card should resume working correctly.<br />
<br />
An alternative procedure:<br />
<br />
1. Create the new file {{Filename|/etc/pm/sleep.d/brcm.sh}}<br />
<br />
2. Insert this code and save:<br />
#!/bin/bash<br />
# Simple Bash script to fix resume from suspend issues...<br />
# Place this script in /etc/pm/sleep.d/<br />
# then chmod +x /etc/pm/sleep.d/brcm.sh<br />
case $1 in<br />
hibernate)<br />
/sbin/modprobe -r brcm80211<br />
;;<br />
suspend)<br />
/sbin/modprobe -r brcm80211<br />
;;<br />
resume)<br />
/sbin/modprobe brcm80211<br />
;;<br />
thaw)<br />
/sbin/modprobe brcm80211<br />
;;<br />
esac<br />
<br />
3. Make it executable:<br />
chmod +x /etc/pm/sleep.d/brcm.sh<br />
<br />
<br />
=== Wi-Fi card does not work/show up ({{Codeline|broadcom-wl}}) ===<br />
Check if you are loading the correct modules. You may need to blacklist the {{Codeline|brcm80211}}, {{Codeline|b43}}, and {{Codeline|ssb}} kernel modules to prevent them from loading automatically. For instructions, see [[Kernel_modules#Blacklisting]].<br />
<br />
{{Note|You may not have to blacklist the {{Codeline|brcm80211}} driver; although as of 2011-06-20, it will still default to loading the {{Codeline|brcm80211}} module before the {{Codeline|wl}} driver, which prevents {{Codeline|wl}} from being used.}}<br />
<br />
Check if you updated your module dependencies:<br />
# depmod -a<br />
<br />
* Verify that your wireless interface(s) appear using {{Codeline|ip addr}}.<br />
* You may need to restart your machine to see the device appear in {{Codeline|iwconfig}} or {{Codeline|ip addr}}.<br />
* If you have recently upgraded your kernel, you need to rebuild the {{Codeline|broadcom-wl}} package with the new kernel installed to update the module.<br />
<br />
=== Interfaces swapped ({{Codeline|broadcom-wl}}) ===<br />
Users of the {{Codeline|broadcom-wl}} driver may find their Ethernet and Wi-Fi interfaces have been swapped. The [http://wiki.archlinux.org/index.php/Udev#Mixed_Up_Devices.2C_Sound.2FNetwork_Cards_Changing_Order_Each_Boot udev] page explains how to resolve this. Create a file named {{Filename|/etc/udev/rules.d/10-network.rules}} and bind the MAC address of each of your cards to a certain interface name:<br />
SUBSYSTEM=="net", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="eth0"<br />
SUBSYSTEM=="net", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="eth1"<br />
<br />
Ensure that the interface name appears correctly in {{Filename|/etc/rc.conf}} and other configuration files that refer to it.<br />
<br />
=== Miscellaneous User notes ===<br />
* In my Dell Inspiron Laptop, I have a Broadcom BCM4401 Ethernet card and a Broadcom BCM4328 wireless card. If I just remove {{Codeline|b43}}, I can load the {{Codeline|wl}} driver, but no wireless card shows up. However, if I first remove the {{Codeline|b44}} (and {{Codeline|ssb}}) driver for my Ethernet card, and ''then'' load the {{Codeline|wl}} driver, I get a wireless device using the name ''eth0''. Afterwards, I can load {{Codeline|b44}} again, to have an Ethernet ''eth1'' device.<br />
<br />
* I could not get the BCM4313 chip on a Lenovo B560 to work before following these steps:<br />
*# "Load defaults" in the BIOS. After that, the wireless was working under MS Windows. There are not many options in there, so I do not know what the reset may have changed, but it did the trick.<br />
*# Blacklist the {{Codeline|acer_wmi}} module. For testing, you can add the following to the kernel line in GRUB: {{Codeline|acer_wmi.disable<nowiki>=</nowiki>1}}<br />
<br />
* I have found that to get the {{Codeline|wl}} drivers working for the Broadcom 4313 chip, you need to blacklist {{Codeline|brcm80211}} along with {{Codeline|b43}} and {{Codeline|ssb}}.<br />
<br />
* If you notice slow wireless speeds when your laptop/netbook is not connected to AC power, you may need to disable Wi-Fi power management by adding the following line (assuming ''wlan0'' is your wireless device) {{Codeline|iwconfig wlan0 power off}} to {{Filename|/etc/rc.local}} and create an empty file {{Filename|/etc/pm/power.d/wireless}}. In case you also experience interface swapping (discussed above), you might want to add another line for the second interface name as well. The command will have no effect on the wired interface.</div>Code mhttps://wiki.archlinux.org/index.php?title=Shutdown_Pressing_Power_Button&diff=133570Shutdown Pressing Power Button2011-03-13T03:00:38Z<p>Code m: Added Xfce4.8 edit</p>
<hr />
<div>[[Category:Power management (English)]]<br />
[[Category:HOWTOs (English)]]<br />
{{i18n|Shutdown Pressing Power Button}}<br />
First of all, make sure that "button" module is loaded (check the output of lsmod). If it's not, load it manually<br />
# modprobe button<br />
or add it to your [[Rc.conf#Hardware|/etc/rc.conf MODULES array]] so that it's automatically loaded at boot time.<br />
<br />
<br />
== First solution ==<br />
<br />
If you want to shutdown your system by simply pressing the power button, do the following:<br />
<br />
#Install the [[acpid]] package.<br />
#If there is no ''hal'' in the DAEMONS array in [[rc.conf]], add ''acpid'' to the DAEMONS array.<br />
#Create a file in ''/etc/acpi/events/'' named ''power'' with following content:<br />
# /etc/acpi/events/power<br />
# This is called when the user presses the power button<br />
<br />
event=button/power (PWR.||PBTN)<br />
action=/sbin/poweroff<br />
To be able to test it, make sure the acpid daemon is started<br />
<br />
If you do not have hal, start the acpid daemon yourself:<br />
# /etc/rc.d/acpid start<br />
<br />
Otherwise restart hal, it will take care of acpid:<br />
# /etc/rc.d/hal restart<br />
<br />
From now on, pressing the power button (lightly, not for a few seconds) should properly shutdown the system.<br />
Note that if you have '''hibernate''' configured and working you may want to change the last line with:<br />
action=/usr/sbin/hibernate<br />
<br />
{{warning|Do not add the acpid daemon to the DAEMON array in "/etc/rc.conf" if hal is already there. You'll get an error message at boot when the computer tries to reload the already running acpi daemon.}}<br />
<br />
If you're using a more sophisticated WM, you should use its own shutdown call, so it'd save its session etc.<br />
<br />
=== KDE 3 ===<br />
<br />
Change the action (in <tt>/etc/acpi/events/power</tt>) to: <br />
action=/opt/kde/bin/dcop --all-users --all-sessions ksmserver ksmserver logout 0 2 0<br />
<br />
=== KDE 4 ===<br />
<br />
As of KDE 4.4, you can still use dcop as shown above.<br />
<br />
Alternatively, you can use <tt>PowerDevil</tt>:<br />
# Delete (or comment out) <tt>/etc/acpi/events/power</tt>.<br />
# Open System Settings.<br />
# Go to Advanced>>Power Management.<br />
# Select "Edit Profiles" and choose the current profile. (In KDE 4.4, the default profile is "Powersave.")<br />
# Select "Shutdown" as the action for "When power button is pressed."<br />
# Press Apply.<br />
<br />
{{Note|1) With dcop and PowerDevil, the power button works ''only'' when KDE is running. Also, KDE needs to start from KDM (it probably also works when started from GDM). It does ''not'' work if you start KDE with a "startx" command.}}<br />
<br />
{{Note|2) The PowerDevil configuration is ''per user''. To configure the power button for other users, repeat these steps for each user's account.}}<br />
<br />
'''Todo:''' Add simple multi-user configuration steps.<br />
<br />
=== XFCE ===<br />
<br />
For '''XFCE4.4''' change the action line to: <br />
''action=echo POWEROFF | /usr/lib/xfce4/xfsm-shutdown-helper''<br />
<br />
For '''XFCE4.8''' change the action line to: <br />
''action=echo POWEROFF | /usr/lib/xfce4/session/xfsm-shutdown-helper''<br />
<br />
<br />
'''''Note:''' For a more robust solution (If you are facing frequent WM crashes or working on a sacrificial PC for developing or testing your software...), you should take a look at "/usr/src/linux/Documentation/sysrq.txt", which is a kernel facility for yielding you (the user...) the CPU so that it could be used for any '''rescue''' work.''<br />
<br />
== Second solution ==<br />
(First solution not working for me) <br />
<br />
1.Install acpid<br />
2.Add acion for event - change file /etc/acpi/handler.sh:<br />
<br />
...<br />
case "$1" in<br />
button/power)<br />
#echo "PowerButton pressed!">/dev/tty5<br />
case "$2" in<br />
PWRF) logger "PowerButton pressed: $2" <br />
/sbin/poweroff;;<br />
*) logger "ACPI action undefined: $2" ;;<br />
esac<br />
;;<br />
...<br />
<br />
3.Restart hal or acpid if you don't use hal:<br />
# /etc/rc.d/hal restart<br />
or<br />
# /etc/rc.d/acpid restart<br />
<br />
== TODO ==<br />
<br />
Add a technique that works regardless of VM (Gnome/KDE/xcfe/openbox/etc). Copy the <tt>/etc/acpi/events/power</tt> script from Ubuntu</div>Code mhttps://wiki.archlinux.org/index.php?title=Pacman/Tips_and_tricks&diff=107324Pacman/Tips and tricks2010-05-26T14:40:49Z<p>Code m: /* Manage Explicitly installed packages that should be Dependancies */</p>
<hr />
<div>[[Category:Package management (English)]] [[Category:General (English)]] {{DISPLAYTITLE:pacman Tips}}<br />
{{Article summary start|Summary}}<br />
{{Article summary text|This is a collection of common tips for new pacman users.}}<br />
{{Article summary heading|Languages}}<br />
{{i18n_entry|English|pacman Tips}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|pacman}}<br />
{{Article summary wiki|Mirrors}}<br />
{{Article summary wiki|powerpill}}<br />
{{Article summary end}}<br />
==General==<br />
''Basic pacman modifications and improvements''<br />
<br />
===Color output===<br />
The most effective method of colorizing pacman is installing {{Package AUR|pacman-color}} from the [[AUR]].<br />
<br />
Besides that, there are numerous scripts and hacks devised by members of the Arch Linux community:<br />
<br />
====Simple Bash script====<br />
Colorized pacman search output:<br />
alias pacs="pacsearch"<br />
pacsearch () {<br />
echo -e "$(pacman -Ss $@ | sed \<br />
-e 's#core/.*#\\033[1;31m&\\033[0;37m#g' \<br />
-e 's#extra/.*#\\033[0;32m&\\033[0;37m#g' \<br />
-e 's#community/.*#\\033[1;35m&\\033[0;37m#g' \<br />
-e 's#^.*/.* [0-9].*#\\033[0;36m&\\033[0;37m#g' )"<br />
}<br />
<br />
For a system-wide script, do:<br />
# touch /usr/bin/pacs && chmod 755 /usr/bin/pacs<br />
<br />
Then paste this into {{Filename|/usr/bin/pacs}}:<br />
#!/bin/bash<br />
echo -e "$(pacman -Ss $@ | sed \<br />
-e 's#core/.*#\\033[1;31m&\\033[0;37m#g' \<br />
-e 's#extra/.*#\\033[0;32m&\\033[0;37m#g' \<br />
-e 's#community/.*#\\033[1;35m&\\033[0;37m#g' \<br />
-e 's#^.*/.* [0-9].*#\\033[0;36m&\\033[0;37m#g' )"<br />
<br />
To use it simply type {{Codeline|pacs}} instead of {{Codeline|pacman -S}}.<br />
<br />
====Python script====<br />
[[RepoSearch|This one]] also searches the [[AUR]].<br />
<br />
====Using acoc====<br />
There is another, more general possibility of colorizing arbitrary command output. Download the small [http://www.ruby-lang.org/en/ Ruby] tool [http://raa.ruby-lang.org/project/acoc/ acoc], and its requirements, [http://raa.ruby-lang.org/project/ansicolor/ term-ansicolor] and [http://raa.ruby-lang.org/cache/ruby-tpty/ tpty]. Some applications like {{Codeline|ls}} will not run without tpty because they need to be started from a terminal (or pseudo terminal, in this case), or else they behave differently.<br />
<br />
Installation is relatively straightforward:<br />
$ tar xvzf tpty-0.0.1.tar.gz<br />
$ cd tpty-0.0.1<br />
$ ruby extconf.rb<br />
$ make<br />
$ ruby ./test.rb<br />
# make install<br />
<br />
$ tar xvzf term-ansicolor-1.0.1.tar.gz<br />
$ cd term-ansicolor-1.0.1<br />
# ruby install.rb<br />
<br />
And now acoc itself:<br />
$ tar xvzf acoc-0.7.1.tar.gz<br />
$ cd acoc-0.7.1<br />
# make install<br />
<br />
Now, just read the section ''Advanced Installation'' in acoc's {{Filename|INSTALL}} file, and configure acoc as prefered. Create a link for pacman as well, since that is primarily what this is being done for.<br />
<br />
Once acoc runs, optionally add these lines to {{filename|acoc.conf}}:<br />
[pacman -Si]<br />
/^Name\s+:\s([\w.-]+)/ bold<br />
[pacman -Qi]<br />
/^Name\s+:\s([\w.-]+)/ bold<br />
[pacman -Qi$]<br />
/^([\w.-]+)\s([\w.-]+)/ bold,clear<br />
[pacman -Ss]<br />
/^([\w.-]+)\/([\w.-]+)\s+([\w.-]+)/ clear,bold,clear<br />
[pacman -Qs]<br />
/^([\w.-]+)\/([\w.-]+)\s+([\w.-]+)/ clear,bold,clear<br />
[pacman -Sl]<br />
/^([\w.-]+)\s([\w.-]+)\s([\w.-]+)/ clear,bold,clear<br />
[pacman -Qo]<br />
/^([\w.-\/]+)\sis\sowned\sby\s([\w.-]+)\s([\w.-]+)/ clear,bold,clear<br />
[pacman -Qe$]<br />
/^([\w.-]+)\s([\w.-]+)/ bold,clear<br />
[pacman -Qg$]<br />
/^([\w.-]+)\s([\w.-]+)/ clear,bold<br />
<br />
The above lines make pacman print all package names in bold, which is particularly helpful when doing, e.g. {{Codeline|pacman -Ss xfce}}. If desiring a more colorful output, modify the lines to suit. Read the acoc documentation contained in the source package for more information.<br />
<br />
===Aliases===<br />
The following instructions allow users to run some of the more common pacman commands without the need to type them fully.<br />
<br />
====Configure the shell====<br />
Add the following examples, which work in both [[Bash]] and [[Zsh]]:<br />
# Pacman alias examples<br />
alias pacupg='sudo pacman -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system.<br />
alias pacin='sudo pacman -S' # Install specific package(s) from the repositories<br />
alias pacins='sudo pacman -Up' # Install specific package not from the repositories as a file <br />
alias pacre='sudo pacman -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies<br />
alias pacrem='sudo pacman -Rns' # Remove the specified package(s), its configuration(s) and unneeded dependencies<br />
alias pacrep='pacman -Si' # Display information about a given package in the repositories<br />
alias pacreps='pacman -Ss' # Search for package(s) in the repositories<br />
alias pacloc='pacman -Qi' # Display information about a given package in the local database<br />
alias paclocs='pacman -Qs' # Search for package(s) in the local database<br />
<br />
# Additional pacman alias examples<br />
alias pacupd='sudo pacman -Sy && sudo abs' # Update and refresh the local package and ABS databases against repositories<br />
alias pacinsd='sudo pacman -S --asdeps' # Install given package(s) as dependencies of another package<br />
alias pacmir='sudo pacman -Syy' # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist<br />
<br />
====Usage====<br />
Perform the respective commands by simply typing the alias name. For example, to synchronize with repositories before upgrading packages that are out of date on the local system:<br />
$ pacupg<br />
Install packages from repositories:<br />
$ pacin <package1> <package2> <package3><br />
Install a custom built package:<br />
$ pacins /path/to/<package><br />
Completely remove a locally installed package:<br />
$ pacrem <package><br />
Search for available packages in the repositories:<br />
$ pacreps <keywords><br />
Display information about a package (e.g. size, dependencies) in the repositories:<br />
$ pacrep <keywords><br />
<br />
====Notes====<br />
The aliases used above are merely examples. By following the syntax samples above, rename the aliases as convenient. For example:<br />
alias pacrem='sudo pacman -Rns'<br />
alias pacout='sudo pacman -Rns'<br />
<br />
In the case above, the commands {{Codeline|pacrem}} and {{Codeline|pacout}} both call Bash to execute the same command.<br />
<br />
===Operations and Bash syntax===<br />
In addition to pacman's standard set of features, there are ways to extend it's usability through rudimentary [[Bash]] commands/syntax.<br />
<br />
* To install a number of packages sharing similar patterns in their names -- not the entire group nor all matching packages; eg. {{package Official|kdemod}}:<br />
pacman -S kdemod-{applets,theme,tools}<br />
* Of course, that is not limited and can be expanded to however many levels needed:<br />
pacman -S kdemod-{ui-{kde,kdemod},kdeartwork}<br />
* pacman has the {{Codeline|-q}} operand to hide the version column, so it is possible to query and reinstall packages with "compiz" as part of their name:<br />
pacman -S `pacman -Qq | grep compiz`<br />
* The above can be achieved without {{Codeline|-q}} by issuing an {{Codeline|awk}} operation:<br />
pacman -S `pacman -Q | awk '/compiz/ { print $1 }'`<br />
<br />
==Installation and recovery==<br />
''Alternative ways of getting and restoring packages''<br />
<br />
===Installing packages from a CD/DVD/iso===<br />
<!-- could easily be adapted to work with usb sticks --><br />
*First mount the CD (replace ''cdrom'' with ''dvd'' if needed):<br />
# mount /mnt/cdrom<br />
<br />
:If working with an .iso file instead, first create a directory under /mnt:<br />
# mkdir /mnt/iso<br />
:Then mount the image:<br />
# mount -t iso9660 -o ro,loop /path/to/iso /mnt/iso<br />
<br />
*Configure pacman:<br />
# nano -w /etc/pacman.conf<br />
<br />
*Add the following ''before'' other repositories (e.g. extra, core, etc.). This ensures the files from the CD/DVD/iso take precedence over those in the standard repositories:<br />
# Settings for using a cd-rom as a repository.<br />
[custom]<br />
Server = file:///mnt/cdrom/arch/pkg<br />
:Again, replace ''cdrom'' as appropiate.<br />
<br />
Once {{Filename|pacman.conf}} has been edited, sync pacman in order to be able to use the new repository.<br />
<br />
===Custom local repository===<br />
pacman 3 introduced a new script named {{Codeline|repo-add}} which makes generating a database for a personal repository much easier. Use {{Codeline|repo-add --help}} for more details on its usage.<br />
<br />
Simply store all of the built packages to be included in the repository in one directory, and execute the following command (where ''repo'' is the name of the custom repository):<br />
repo-add /path/to/repo.db.tar.gz /path/to/*.pkg.tar.gz<br />
<br />
The last argument will add all {{Filename|pkg.tar.gz}} files to the repository, so be careful. If having multiple versions of a package in the directory, it is unclear which one will take precedence and end up in the repository.<br />
<br />
Note that when using {{Codeline|repo-add}}, the database and the packages do not need to be in the same directory. But when using pacman with that database, they should be together.<br />
<br />
To add a new package (and remove the old if it exists), simply run<br />
repo-add /path/to/repo.db.tar.gz /path/to/packagetoadd-1.0-1-i686.pkg.tar.gz<br />
<br />
{{Note|If there is a package that needs to be removed from the repository, read up on {{Codeline|repo-remove}}.}}<br />
<br />
Once the local repository has been made, add the repository to {{Filename|pacman.conf}}. The name of the {{Filename|db.tar.gz}} file is the repository name. Reference it directly using a ''file://'' url, or access it via FTP using ftp://localhost/path/to/directory.<br />
<br />
If willing, add the custom repository to the [[Unofficial user repositories|list of unofficial user repositories]], so that the community can benefit from it.<br />
<br />
===Network shared pacman cache===<br />
{{Note|As of version 3.1, {{Codeline|''pacman -Sc''}} changed behavior. By default it does no longer remove all outdated package files but all package files which are not installed on the machine the command was issued on. Because pacman cannot predict what packages are installed on all machines that share the cache, pacman will end up deleting files that shouldn't be. To clean up the cache so that only the newest packages are kept, put {{Codeline|<nowiki>CleanMethod = KeepCurrent</nowiki>}} in the {{Codeline|[Options]}} section of {{Filename|/etc/pacman.conf}}.}}<br />
<br />
In order to share packages between multiple computers, simply share {{Filename|/var/cache/pacman/}} using any network-based mount protocol. This section shows how to use shfs or sshfs to share a package cache plus the related library-directories between multiple computers on the same local network. Keep in mind that a network shared cache can be slow depending on the file-system choice, among other factors.<br />
<br />
First, install any network-supporting filesystem; for example [[sshfs]], [[shfs]], [[ftpfs]], [[smbfs]] or [[nfs]]<br />
{{Tip|To use sshfs or shfs, consider reading [[Using SSH Keys]].}}<br />
<br />
Then, to share the actual packages, mount {{Filename|/var/cache/pacman/pkg}} from the server to {{Filename|/var/cache/pacman/pkg}} on every client machine.<br />
<br />
To have shared package databases, mount {{Filename|<nowiki>/var/lib/pacman/sync/{core,extra,testing,community}</nowiki>}} in the same way. Proceed to place the appropriate lines in {{Filename|/etc/fstab}}.<br />
<br />
===Backing up and retrieving a list of installed packages===<br />
It is good practice to keep periodic backups of all pacman-installed packages. In the event of a system crash which is unrecoverable by other means, pacman can then easily reinstall the very same packages onto a new installation.<br />
<br />
*First, backup the current list of packages (which are available in a repository):<br />
$ comm -13 <(pacman -Qmq | sort) <(pacman -Qqe | sort) > pkglist<br />
<br />
*Store the pkglist on a USB key or other convenient medium.<br />
<br />
*Copy the pkglist file to the new installation, and navigate to the directory containing it.<br />
<br />
*Issue the following command to install from the backup list:<br />
# pacman -S $(cat pkglist)<br />
<br />
===Redownloading all installed packages (minus AUR)===<br />
Listing currently installed packages will output everything, including packages that are foreign and/or might not be available for installation any longer. So simply running:<br />
# pacman -S `pacman -Qq`<br />
will output errors because some (or many) of the packages were not found in the repositories. There needs to be a way to list only packages that can be installed from the repositories present in {{Codeline|pacman}}'s database. In order to do so, combining a command to list all packages, and another to hide the list of foreign packages is required.<br />
<br />
This can be done by using {{codeline|grep}} to filter out foreign packages:<br />
# pacman -S $(pacman -Qq | grep -v "$(pacman -Qmq)")<br />
<br />
A less contrieved way of achieving the above is achieved by using {{Codeline|comm}}:<br />
# pacman -S $(comm -3 <(pacman -Qq) <(pacman -Qqm))<br />
<br />
{{Tip|When [[powerpill]] installed, replace ''pacman'' with ''powerpill'' in the commands above to increase download speed and alleviate the bandwidth load per server.}}<br />
<br />
===Restore pacman's local database===<br />
Signs that pacman needs a local database restoration:<br />
*{{Codeline|pacman -Q}} gives absolutely no output, and {{Codeline|pacman -Syu}} erroneously reports that the system is up to date.<br />
*When trying to install a package using {{Codeline|pacman -S package}} it outputs a list of already satisfied dependencies.<br />
<br />
Most likely, pacman's database of installed software, {{Filename|/var/lib/pacman/local}}, has been corrupted or deleted. While this is a serious problem, it can be restored by following the instructions below.<br />
<br />
====Instructions====<br />
*Firstly, make sure pacman's log file is present:<br />
$ ls /var/log/pacman.log<br />
<br />
If it does not exist, it is ''not'' possible to continue with this method. You may be able to use [http://bbs.archlinux.org/viewtopic.php?pid=670876 Xyne's package detection script] to recreate the database. If not, then your only option is to re-install the entire system.<br />
<br />
*Create the {{Filename|pkglist.sh}} file with the following content <sup>[http://bbs.archlinux.org/viewtopic.php?id=38531]</sup>:<br />
awk '<br />
$3 == "installed" || $3 == "upgraded" { pkg[$4] = 1 } <br />
$3 == "removed" { pkg[$4] = 0 } <br />
END { for (i in pkg) if ( pkg[i] == 1 ) print i; }<br />
' /var/log/pacman.log<br />
<br />
Make the script executable:<br />
$ chmod +x pkglist.sh<br />
<br />
*Now, run {{Filename|pkglist.sh}} and pipe the output to {{Filename|pkglist-orig}}.<br />
$ ./pkglist.sh > pkglist-orig<br />
<br />
*{{Filename|pkglist}} now contains a list of all the software installed or upgraded. Edit {{Filename|pkglist}} and remove anything that shouldn't be re-installed (optional). This might be the situation with custom packages made with [[ABS]], for example. Here is a way to automatically restrict the list to packages available in a repository:<br />
$ (cat pkglist-orig ; pacman -Slq | sort | uniq) | sort | uniq -d > pkglist<br />
<br />
Check if some important base package are missing, and add them to the list:<br />
$ pacman -Sgq base | grep -v "$(cat pkglist)"<br />
<br />
*Once the contents of {{Filename|pkglist}} are satisfactory, use it to re-install the programs, and restore {{Filename|/var/lib/pacman/local}}.<br />
<br />
There is no need to check for dependencies, and the install needs to be "forced" because the programs already exist:<br />
# pacman -Sdf --needed $(cat pkglist)<br />
<br />
pacman will now present a long list of software to be installed. Say ''Yes'' and wait for pacman to finish.<br />
<br />
* Finally, find all the configuration files that have changed. Do this by first updating the {{Codeline|locate}} database:<br />
# updatedb<br />
<br />
* Then search for all the configuration files that have changed:<br />
# locate pacorig<br />
<br />
This will give a list of all the configuration files that have been replaced. The original file will have {{Filename|.pacorig}} appended to it. Delete the new files, and rename the {{Filename|.pacorig}} files to restore the original configuration for each software package that may be affected. Some directory permissions may also have been changed. Check this if something refuses to start.<br />
<br />
===Removing everything but base group===<br />
If it is ever necessary to remove all packages except the base group on a ''severely'' broken system, try this one liner:<br />
<pre># pacman -R $(pacman -Qq | grep -v "$(pacman -Qqg base)")</pre><br />
From the archlinux.org mailing list:<sup>[http://mailman.archlinux.org/pipermail/arch-general/2010-February/011527.html]</sup><br />
<br />
===Recovering a USB key from existing install===<br />
If you have Arch installed on a USB key and manage to mess it up (e.g. removing it while it's still being written to), then it's possible to re-install all the packages and hopefully get it back up and working again (assuming USB key is mounted to /newarch)<br />
<br />
# pacman -r /newarch -b /newarch/var/lib/pacman/ -S `pacman -Qq -b /newarch/var/lib/pacman/`<br />
<br />
==Maintenance==<br />
''House keeping, in the interest of keeping a clean system and following [[The Arch Way]]''<br />
<br />
===Miscellaneous procedures===<br />
For ''recursively'' removing orphans (''be careful''):<br />
# pacman -Rs $(pacman -Qtdq)<br />
<br />
To get a sorted list of local packages and their size:<br />
$ LANG=C pacman -Qi | sed -n '/^Name[^:]*: \(.*\)/{s//\1 /;x};/^Installed[^:]*: \(.*\)/{s//\1/;H;x;s/\n//;p}' | sort -nk2<br />
<br />
====Getting a list of files not owned by any package====<br />
Periodic checks for files outside of pacman database are recommended. These files are often some 3rd party applications installed using the usual procedure (e.g. '''./configure; make; make install'''). Search the file-system for these files (or symlinks) using this simple script:<br />
<pre><br />
#!/bin/bash<br />
time /usr/bin/pacman -Ql | cut -d ' ' -f 2- | sort -u > db.txt<br />
time find /arch /bin /boot /etc /lib /opt /sbin /usr 2>/dev/null | while read i; do<br />
if [ ! -d "$i" ]; then<br />
echo "$i"<br />
fi;<br />
done | sort -u > fs.txt<br />
time comm -23 fs.txt db.txt > non-db.txt<br />
<br />
#test it:<br />
#cat non-db.txt | while read i; do pacman -Qo "$i" 2>&1; done | tee test.txt<br />
</pre><br />
<br />
Note that one ''should not'' delete all files listed in non-db.txt without confirming each entry. There could be various configuration files, logs, etc., so use this list responsibly and only proceed after extensively searching for cross-references using {{Codeline|grep}}.<br />
<br />
====Manage Explicitly installed packages that should be Dependancies====<br />
Once a system has a full package list, there often packages that were Explicitly installed (at initial install) but should have been installed as a dependancy. Packages like common libraries are often installed explicitly but is required by many other packages after you add X11, a desktop enviroment, etc.<br />
<br />
Here's a little script that will have pacman prompt you for install before re-installing the package as a dependancy:<br />
<br />
#!/bin/bash<br />
<br />
T=/tmp/unrequired;<br />
E=/tmp/explicit;<br />
<br />
pacman -Qt > $T;<br />
pacman -Qe > $E;<br />
<br />
if [ $# -ne 1 ]; then {<br />
CMD="pacman -S --asdeps ";<br />
} else {<br />
CMD="echo ";<br />
}; fi; <br />
<br />
for pkg in `diff -y $T $E | grep ">" | gawk '{ print $2 }'`; do {<br />
$CMD $pkg;<br />
}; done;<br />
<br />
The if statement will see if you passed any arguements at all, if you did, then it simply echo back the list packages it will prompt for.<br />
<br />
The only reason to do this is that if you want to clone your install by copying your explicit packages, then you want only those that also are in the unrequired list. That being said, certain packages should never be installed as a dependancy for another package, such as kernel26.<br />
<br />
===Selective cache purge===<br />
[[CacheClean|Here]] is a Python script to clean the {{Filename|/var/cache/pacman/pkg}} directory while allowing to specify how many package versions should be retained. <sup>[http://bbs.archlinux.org/viewtopic.php?id=9104]</sup></div>Code mhttps://wiki.archlinux.org/index.php?title=Pacman/Tips_and_tricks&diff=104601Pacman/Tips and tricks2010-04-24T18:57:57Z<p>Code m: Added dependancy script</p>
<hr />
<div>[[Category:Package management (English)]] [[Category:General (English)]] {{DISPLAYTITLE:pacman Tips}}<br />
{{Article summary start|Summary}}<br />
{{Article summary text|This is a collection of common tips for new pacman users.}}<br />
{{Article summary heading|Languages}}<br />
{{i18n_entry|English|pacman Tips}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|pacman}}<br />
{{Article summary wiki|Mirrors}}<br />
{{Article summary wiki|powerpill}}<br />
{{Article summary end}}<br />
==General==<br />
''Basic pacman modifications and improvements''<br />
<br />
===Color output===<br />
The most effective method of colorizing pacman is installing {{Package AUR|pacman-color}}. To install with [[yaourt]]:<br />
$ yaourt -S pacman-color<br />
<br />
Besides that, there are numerous scripts and hacks devised by members of the Arch Linux community:<br />
<br />
====Simple Bash script====<br />
Colorized pacman search output:<br />
alias pacs="pacsearch"<br />
pacsearch () {<br />
echo -e "$(pacman -Ss $@ | sed \<br />
-e 's#core/.*#\\033[1;31m&\\033[0;37m#g' \<br />
-e 's#extra/.*#\\033[0;32m&\\033[0;37m#g' \<br />
-e 's#community/.*#\\033[1;35m&\\033[0;37m#g' \<br />
-e 's#^.*/.* [0-9].*#\\033[0;36m&\\033[0;37m#g' )"<br />
}<br />
<br />
For a system-wide script, do:<br />
# touch /usr/bin/pacs && chmod 755 /usr/bin/pacs<br />
<br />
Then paste this into {{Filename|/usr/bin/pacs}}:<br />
#!/bin/bash<br />
echo -e "$(pacman -Ss $@ | sed \<br />
-e 's#core/.*#\\033[1;31m&\\033[0;37m#g' \<br />
-e 's#extra/.*#\\033[0;32m&\\033[0;37m#g' \<br />
-e 's#community/.*#\\033[1;35m&\\033[0;37m#g' \<br />
-e 's#^.*/.* [0-9].*#\\033[0;36m&\\033[0;37m#g' )"<br />
<br />
To use it simply type {{Codeline|pacs}} instead of {{Codeline|pacman -S}}.<br />
<br />
====Python script====<br />
[[RepoSearch|This one]] also searches the [[AUR]].<br />
<br />
====Using acoc====<br />
There is another, more general possibility of colorizing arbitrary command output. Download the small [http://www.ruby-lang.org/en/ Ruby] tool [http://raa.ruby-lang.org/project/acoc/ acoc], and its requirements, [http://raa.ruby-lang.org/project/ansicolor/ term-ansicolor] and [http://raa.ruby-lang.org/cache/ruby-tpty/ tpty]. Some applications like {{Codeline|ls}} will not run without tpty because they need to be started from a terminal (or pseudo terminal, in this case), or else they behave differently.<br />
<br />
Installation is relatively straightforward:<br />
$ tar xvzf tpty-0.0.1.tar.gz<br />
$ cd tpty-0.0.1<br />
$ ruby extconf.rb<br />
$ make<br />
$ ruby ./test.rb<br />
# make install<br />
<br />
$ tar xvzf term-ansicolor-1.0.1.tar.gz<br />
$ cd term-ansicolor-1.0.1<br />
# ruby install.rb<br />
<br />
And now acoc itself:<br />
$ tar xvzf acoc-0.7.1.tar.gz<br />
$ cd acoc-0.7.1<br />
# make install<br />
<br />
Now, just read the section ''Advanced Installation'' in acoc's {{Filename|INSTALL}} file, and configure acoc as prefered. Create a link for pacman as well, since that is primarily what this is being done for.<br />
<br />
Once acoc runs, optionally add these lines to {{filename|acoc.conf}}:<br />
[pacman -Si]<br />
/^Name\s+:\s([\w.-]+)/ bold<br />
[pacman -Qi]<br />
/^Name\s+:\s([\w.-]+)/ bold<br />
[pacman -Qi$]<br />
/^([\w.-]+)\s([\w.-]+)/ bold,clear<br />
[pacman -Ss]<br />
/^([\w.-]+)\/([\w.-]+)\s+([\w.-]+)/ clear,bold,clear<br />
[pacman -Qs]<br />
/^([\w.-]+)\/([\w.-]+)\s+([\w.-]+)/ clear,bold,clear<br />
[pacman -Sl]<br />
/^([\w.-]+)\s([\w.-]+)\s([\w.-]+)/ clear,bold,clear<br />
[pacman -Qo]<br />
/^([\w.-\/]+)\sis\sowned\sby\s([\w.-]+)\s([\w.-]+)/ clear,bold,clear<br />
[pacman -Qe$]<br />
/^([\w.-]+)\s([\w.-]+)/ bold,clear<br />
[pacman -Qg$]<br />
/^([\w.-]+)\s([\w.-]+)/ clear,bold<br />
<br />
The above lines make pacman print all package names in bold, which is particularly helpful when doing, e.g. {{Codeline|pacman -Ss xfce}}. If desiring a more colorful output, modify the lines to suit. Read the acoc documentation contained in the source package for more information.<br />
<br />
===Aliases===<br />
The following instructions allow users to run some of the more common pacman commands without the need to type them fully.<br />
<br />
====Configure the shell====<br />
Add the following examples, which work in both [[Bash]] and [[Zsh]]:<br />
# Pacman alias examples<br />
alias pacupg='sudo pacman -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system.<br />
alias pacin='sudo pacman -S' # Install specific package(s) from the repositories<br />
alias pacins='sudo pacman -Up' # Install specific package not from the repositories as a file <br />
alias pacre='sudo pacman -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies<br />
alias pacrem='sudo pacman -Rns' # Remove the specified package(s), its configuration(s) and unneeded dependencies<br />
alias pacrep='pacman -Si' # Display information about a given package in the repositories<br />
alias pacreps='pacman -Ss' # Search for package(s) in the repositories<br />
alias pacloc='pacman -Qi' # Display information about a given package in the local database<br />
alias paclocs='pacman -Qs' # Search for package(s) in the local database<br />
<br />
# Additional pacman alias examples<br />
alias pacupd='sudo pacman -Sy && sudo abs' # Update and refresh the local package and ABS databases against repositories<br />
alias pacinsd='sudo pacman -S --asdeps' # Install given package(s) as dependencies of another package<br />
alias pacmir='sudo pacman -Syy' # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist<br />
<br />
====Usage====<br />
Perform the respective commands by simply typing the alias name. For example, to synchronize with repositories before upgrading packages that are out of date on the local system:<br />
$ pacupg<br />
Install packages from repositories:<br />
$ pacin <package1> <package2> <package3><br />
Install a custom built package:<br />
$ pacins /path/to/<package><br />
Completely remove a locally installed package:<br />
$ pacrem <package><br />
Search for available packages in the repositories:<br />
$ pacreps <keywords><br />
Display information about a package (e.g. size, dependencies) in the repositories:<br />
$ pacrep <keywords><br />
<br />
====Notes====<br />
The aliases used above are merely examples. By following the syntax samples above, rename the aliases as convenient. For example:<br />
alias pacrem='sudo pacman -Rns'<br />
alias pacout='sudo pacman -Rns'<br />
<br />
In the case above, the commands {{Codeline|pacrem}} and {{Codeline|pacout}} both call Bash to execute the same command.<br />
<br />
===Operations and Bash syntax===<br />
In addition to pacman's standard set of features, there are ways to extend it's usability through rudimentary [[Bash]] commands/syntax.<br />
<br />
* To install a number of packages sharing similar patterns in their names -- not the entire group nor all matching packages; eg. {{package Official|kdemod}}:<br />
pacman -S kdemod-{applets,theme,tools}<br />
* Of course, that is not limited and can be expanded to however many levels needed:<br />
pacman -S kdemod-{ui-{kde,kdemod},kdeartwork}<br />
* pacman has the {{Codeline|-q}} operand to hide the version column, so it is possible to query and reinstall packages with "compiz" as part of their name:<br />
pacman -S `pacman -Qq | grep compiz`<br />
* The above can be achieved without {{Codeline|-q}} by issuing an {{Codeline|awk}} operation:<br />
pacman -S `pacman -Q | awk '/compiz/ { print $1 }'`<br />
<br />
==Installation and recovery==<br />
''Alternative ways of getting and restoring packages''<br />
<br />
===Installing packages from a CD/DVD/iso===<br />
<!-- could easily be adapted to work with usb sticks --><br />
*First mount the CD (replace ''cdrom'' with ''dvd'' if needed):<br />
# mount /mnt/cdrom<br />
<br />
:If working with an .iso file instead, first create a directory under /mnt:<br />
# mkdir /mnt/iso<br />
:Then mount the image:<br />
# mount -t iso9660 -o ro,loop /path/to/iso /mnt/iso<br />
<br />
*Configure pacman:<br />
# nano -w /etc/pacman.conf<br />
<br />
*Add the following ''before'' other repositories (e.g. extra, core, etc.). This ensures the files from the CD/DVD/iso take precedence over those in the standard repositories:<br />
# Settings for using a cd-rom as a repository.<br />
[custom]<br />
Server = file:///mnt/cdrom/arch/pkg<br />
:Again, replace ''cdrom'' as appropiate.<br />
<br />
Once {{Filename|pacman.conf}} has been edited, sync pacman in order to be able to use the new repository.<br />
<br />
===Custom local repository===<br />
pacman 3 introduced a new script named {{Codeline|repo-add}} which makes generating a database for a personal repository much easier. Use {{Codeline|repo-add --help}} for more details on its usage.<br />
<br />
Simply store all of the built packages to be included in the repository in one directory, and execute the following command (where ''repo'' is the name of the custom repository):<br />
repo-add /path/to/repo.db.tar.gz /path/to/*.pkg.tar.gz<br />
<br />
The last argument will add all {{Filename|pkg.tar.gz}} files to the repository, so be careful. If having multiple versions of a package in the directory, it is unclear which one will take precedence and end up in the repository.<br />
<br />
Note that when using {{Codeline|repo-add}}, the database and the packages do not need to be in the same directory. But when using pacman with that database, they should be together.<br />
<br />
To add a new package (and remove the old if it exists), simply run<br />
repo-add /path/to/repo.db.tar.gz /path/to/packagetoadd-1.0-1-i686.pkg.tar.gz<br />
<br />
{{Note|If there is a package that needs to be removed from the repository, read up on {{Codeline|repo-remove}}.}}<br />
<br />
Once the local repository has been made, add the repository to {{Filename|pacman.conf}}. The name of the {{Filename|db.tar.gz}} file is the repository name. Reference it directly using a ''file://'' url, or access it via FTP using ftp://localhost/path/to/directory.<br />
<br />
If willing, add the custom repository to the [[Unofficial user repositories|list of unofficial user repositories]], so that the community can benefit from it.<br />
<br />
===Network shared pacman cache===<br />
{{Note|As of version 3.1, {{Codeline|''pacman -Sc''}} changed behavior. By default it does no longer remove all outdated package files but all package files which are not installed on the machine the command was issued on. Because pacman cannot predict what packages are installed on all machines that share the cache, pacman will end up deleting files that shouldn't be. To clean up the cache so that only the newest packages are kept, put {{Codeline|<nowiki>CleanMethod = KeepCurrent</nowiki>}} in the {{Codeline|[Options]}} section of {{Filename|/etc/pacman.conf}}.}}<br />
<br />
In order to share packages between multiple computers, simply share {{Filename|/var/cache/pacman/}} using any network-based mount protocol. This section shows how to use shfs or sshfs to share a package cache plus the related library-directories between multiple computers on the same local network. Keep in mind that a network shared cache can be slow depending on the file-system choice, among other factors.<br />
<br />
First, install any network-supporting filesystem; for example [[sshfs]], [[shfs]], [[ftpfs]], [[smbfs]] or [[nfs]]<br />
{{Tip|To use sshfs or shfs, consider reading [[Using SSH Keys]].}}<br />
<br />
Then, to share the actual packages, mount {{Filename|/var/cache/pacman/pkg}} from the server to {{Filename|/var/cache/pacman/pkg}} on every client machine.<br />
<br />
To have shared package databases, mount {{Filename|<nowiki>/var/lib/pacman/sync/{core,extra,testing,community}</nowiki>}} in the same way. Proceed to place the appropriate lines in {{Filename|/etc/fstab}}.<br />
<br />
===Backing up and retrieving a list of installed packages===<br />
It is good practice to keep periodic backups of all pacman-installed packages. In the event of a system crash which is unrecoverable by other means, pacman can then easily reinstall the very same packages onto a new installation.<br />
<br />
*First, backup the current list of packages (which are available in a repository):<br />
$ comm -13 <(pacman -Qmq | sort) <(pacman -Qqe | sort) > pkglist<br />
<br />
*Store the pkglist on a USB key or other convenient medium.<br />
<br />
*Copy the pkglist file to the new installation, and navigate to the directory containing it.<br />
<br />
*Issue the following command to install from the backup list:<br />
# pacman -S $(cat pkglist)<br />
<br />
===Redownloading all installed packages (minus AUR)===<br />
Listing currently installed packages will output everything, including packages that are foreign and/or might not be available for installation any longer. So simply running:<br />
# pacman -S `pacman -Qq`<br />
will output errors because some (or many) of the packages were not found in the repositories. There needs to be a way to list only packages that can be installed from the repositories present in {{Codeline|pacman}}'s database. In order to do so, combining a command to list all packages, and another to hide the list of foreign packages is required.<br />
<br />
This can be done by using {{codeline|grep}} to filter out foreign packages:<br />
# pacman -S $(pacman -Qq | grep -v "$(pacman -Qmq)")<br />
<br />
A less contrieved way of achieving the above is achieved by using {{Codeline|comm}}:<br />
# pacman -S $(comm -3 <(pacman -Qq) <(pacman -Qqm))<br />
<br />
{{Tip|When [[powerpill]] installed, replace ''pacman'' with ''powerpill'' in the commands above to increase download speed and alleviate the bandwidth load per server.}}<br />
<br />
===Restore pacman's local database===<br />
Signs that pacman needs a local database restoration:<br />
*{{Codeline|pacman -Q}} gives absolutely no output, and {{Codeline|pacman -Syu}} erroneously reports that the system is up to date.<br />
*When trying to install a package using {{Codeline|pacman -S package}} it outputs a list of already satisfied dependencies.<br />
<br />
Most likely, pacman's database of installed software, {{Filename|/var/lib/pacman/local}}, has been corrupted or deleted. While this is a serious problem, it can be restored by following the instructions below.<br />
<br />
====Instructions====<br />
*Firstly, make sure pacman's log file is present:<br />
$ ls /var/log/pacman.log<br />
<br />
If it does not exist, it is ''not'' possible to continue with this method. The only option is to re-install the system from scratch.<br />
<br />
*Create the {{Filename|pkglist.sh}} file with the following content <sup>[http://bbs.archlinux.org/viewtopic.php?id=38531]</sup>:<br />
awk '<br />
$3 == "installed" || $3 == "upgraded" { pkg[$4] = 1 } <br />
$3 == "removed" { pkg[$4] = 0 } <br />
END { for (i in pkg) if ( pkg[i] == 1 ) print i; }<br />
' /var/log/pacman.log<br />
<br />
Make the script executable:<br />
$ chmod +x pkglist.sh<br />
<br />
*Now, run {{Filename|pkglist.sh}} and pipe the output to {{Filename|pkglist-orig}}.<br />
$ ./pkglist.sh > pkglist-orig<br />
<br />
*{{Filename|pkglist}} now contains a list of all the software installed or upgraded. Edit {{Filename|pkglist}} and remove anything that shouldn't be re-installed (optional). This might be the situation with custom packages made with [[ABS]], for example. Here is a way to automatically restrict the list to packages available in a repository:<br />
$ (cat pkglist-orig ; pacman -Slq | sort | uniq) | sort | uniq -d > pkglist<br />
<br />
Check if some important base package are missing, and add them to the list:<br />
$ pacman -Sgq base | grep -v "$(cat pkglist)"<br />
<br />
*Once the contents of {{Filename|pkglist}} are satisfactory, use it to re-install the programs, and restore {{Filename|/var/lib/pacman/local}}.<br />
<br />
There is no need to check for dependencies, and the install needs to be "forced" because the programs already exist:<br />
# pacman -Sdf --needed $(cat pkglist)<br />
<br />
pacman will now present a long list of software to be installed. Say ''Yes'' and wait for pacman to finish.<br />
<br />
* Finally, find all the configuration files that have changed. Do this by first updating the {{Codeline|locate}} database:<br />
# updatedb<br />
<br />
* Then search for all the configuration files that have changed:<br />
# locate pacorig<br />
<br />
This will give a list of all the configuration files that have been replaced. The original file will have {{Filename|.pacorig}} appended to it. Delete the new files, and rename the {{Filename|.pacorig}} files to restore the original configuration for each software package that may be affected. Some directory permissions may also have been changed. Check this if something refuses to start.<br />
<br />
===Removing everything but base group===<br />
If it is ever necessary to remove all packages except the base group on a ''severely'' broken system, try this one liner:<br />
<pre># pacman -R $(pacman -Qq | grep -v "$(pacman -Qqg base)")</pre><br />
From the archlinux.org mailing list:<sup>[http://mailman.archlinux.org/pipermail/arch-general/2010-February/011527.html]</sup><br />
<br />
===Recovering a USB key from existing install===<br />
If you have Arch installed on a USB key and manage to mess it up (e.g. removing it while it's still being written to), then it's possible to re-install all the packages and hopefully get it back up and working again (assuming USB key is mounted to /newarch)<br />
<br />
# pacman -r /newarch -b /newarch/var/lib/pacman/ -S `pacman -Qq -b /newarch/var/lib/pacman/`<br />
<br />
==Maintenance==<br />
''House keeping, in the interest of keeping a clean system and following [[The Arch Way]]''<br />
<br />
===Miscellaneous procedures===<br />
For ''recursively'' removing orphans (''be careful''):<br />
# pacman -Rs $(pacman -Qtdq)<br />
<br />
To get a sorted list of local packages and their size:<br />
$ LANG=C pacman -Qi | sed -n '/^Name[^:]*: \(.*\)/{s//\1 /;x};/^Installed[^:]*: \(.*\)/{s//\1/;H;x;s/\n//;p}' | sort -nk2<br />
<br />
====Getting a list of files not owned by any package====<br />
Periodic checks for files outside of pacman database are recommended. These files are often some 3rd party applications installed using the usual procedure (e.g. '''./configure; make; make install'''). Search the file-system for these files (or symlinks) using this simple script:<br />
<pre><br />
#!/bin/bash<br />
time /usr/bin/pacman -Ql | cut -d ' ' -f 2- | sort -u > db.txt<br />
time find /arch /bin /boot /etc /lib /opt /sbin /usr 2>/dev/null | while read i; do<br />
if [ ! -d "$i" ]; then<br />
echo "$i"<br />
fi;<br />
done | sort -u > fs.txt<br />
time comm -23 fs.txt db.txt > non-db.txt<br />
<br />
#test it:<br />
#cat non-db.txt | while read i; do pacman -Qo "$i" 2>&1; done | tee test.txt<br />
</pre><br />
<br />
Note that one ''should not'' delete all files listed in non-db.txt without confirming each entry. There could be various configuration files, logs, etc., so use this list responsibly and only proceed after extensively searching for cross-references using {{Codeline|grep}}.<br />
<br />
====Manage Explicitly installed packages that should be Dependancies====<br />
Once a system has a full package list, there often packages that were Explicitly installed (at initial install) but should have been installed as a dependancy. Packages like common libraries are often installed explicitly but is required by many other packages after you add X11, a desktop enviroment, etc.<br />
<br />
Here's a little script that will have pacman prompt you for install before re-installing the package as a dependancy:<br />
<br />
#!/bin/bash<br />
<br />
T=/tmp/unrequired;<br />
E=/tmp/explicit;<br />
<br />
pacman -Qt > $T;<br />
pacman -Qe > $E;<br />
<br />
for pkg in `diff -y $T $E | grep ">" | gawk '{ print $2 }'`; do {<br />
if [ $# -ne 1 ]; then {<br />
pacman -S --asdeps $pkg;<br />
} else {<br />
echo $pkg;<br />
}; fi;<br />
}; done;<br />
<br />
The if statement will see if you passed any arguements at all, if you did, then it simply echo back the list packages it will prompt for.<br />
<br />
The only reason to do this is that if you want to clone your install by copying your explicit packages, then you want only those that also are in the unrequired list. That being said, certain packages should never be installed as a dependancy for another package, such as kernel26.<br />
<br />
===Selective cache purge===<br />
[[CacheClean|Here]] is a Python script to clean the {{Filename|/var/cache/pacman/pkg}} directory while allowing to specify how many package versions should be retained. <sup>[http://bbs.archlinux.org/viewtopic.php?id=9104]</sup></div>Code mhttps://wiki.archlinux.org/index.php?title=Official_Arch_Linux_Install_Guide_Appendix&diff=93792Official Arch Linux Install Guide Appendix2010-01-27T11:36:50Z<p>Code m: /* How should I load modules during boot now? */</p>
<hr />
<div>[[Category: General (English)]]<br />
{{Article summary start}}<br />
{{Article summary text|Appendix of the Official Arch Linux Install Guide}}<br />
{{Article summary heading|Available Languages}}<br />
{{i18n_entry|English|Official Arch Linux Install Guide Appendix}}<br />
{{i18n_entry|Italiano|Official Arch Linux Install Guide Appendix (Italiano)}}<br />
{{i18n_entry|简体中文|Arch 官方安装指南附录 (简体中文)}}<br />
{{Article summary heading|Related articles}}<br />
{{Article summary wiki|Beginners Guide}} (If you are new to Arch)<br />
{{Article summary wiki|Official Arch Linux Install Guide}}<br />
{{Article summary end}}<br />
<br />
<br />
==Adding a Window Manager/Desktop Environment==<br />
*[[KDE]] <br />
*[[KDEmod]]<br />
*[[GNOME]]<br />
*[[Xfce]]<br />
*[[Openbox]]<br />
*[[Wmii]]<br />
*[[Awesome3]]<br />
*[[Fluxbox]]<br />
*[[LXDE]]<br />
*[[E17]]<br />
*[[Xmonad]]<br />
See also [[.xinitrc]]<br />
<br />
==Boot Scripts==<br />
<br />
Arch Linux uses a fairly simple bootup sequence quite similar to *BSDs. The first boot script to run is /etc/rc.sysinit. When it's done, /etc/rc.multi will be called (in a normal bootup). The last script to run will be /etc/rc.local. When started in runlevel 1, the single user mode, the script /etc/rc.single is run instead of /etc/rc.multi. You will not find an endless symlink collection in the /etc/rc?.d/ directories to define the bootup sequence for all possible runlevels. In fact, due to this approach Arch only really has three runlevels, if you take starting up X in runlevel 5 into account. The boot scripts are using the variables and definitions found in the /etc/rc.conf file and also a set of general functions defined in the<br />
/etc/rc.d/functions script. If you plan to write your own daemon<br />
files, you should consider having a look at this file and existing<br />
daemon scripts.<br />
<br />
Boot Script Overview<br />
<br />
#/etc/rc.sysinit<br />
#/etc/rc.single<br />
#/etc/rc.multi<br />
#/etc/rc.local<br />
#/etc/rc.shutdown<br />
#/etc/rc.local.shutdown<br />
#/etc/rc.d/*<br />
<br />
<br />
'''/etc/rc.sysinit'''<br />
<br />
The main system boot script. It does boot-critical things like<br />
mounting filesystems, running udev, activating swap, loading modules,<br />
setting localization parameters, etc. You will most likely never need<br />
to edit this file!<br />
<br />
<br />
'''/etc/rc.single'''<br />
<br />
Single-user startup. Not used in a normal boot-up. If the system is<br />
started in single-user mode, for example with the kernel parameter 1<br />
before booting or during normal multi-user operation with the command<br />
init 1, this script makes sure no daemons are running except for the<br />
bare minimum; syslog-ng and udev. The single-user mode is useful if<br />
you need to make any changes to the system while making sure that no<br />
remote user can do anything that might cause data loss or damage.<br />
<br />
For desktop users, this mode usually is useless as crud. You should<br />
have no need to edit this script, either.<br />
<br />
<br />
'''/etc/rc.multi'''<br />
<br />
Multi-user startup script. It starts all daemons you configured in the<br />
DAEMONS array (set in /etc/rc.conf) after which it calls<br />
/etc/rc.local. You shouldn't feel a pressing need to edit this file.<br />
<br />
<br />
'''/etc/rc.local'''<br />
<br />
Local multi-user startup script. It is a good place to put any<br />
last-minute commands you want the system to run at the very end of the<br />
bootup process. This is finally the one and only script you should<br />
modify if needed, and you have total freedom on what to add to this<br />
script.<br />
<br />
Most common system configuration tasks, like loading modules, changing<br />
the console font or setting up devices, usually have a dedicated place<br />
where they belong. To avoid confusion, you should make sure that<br />
whatever you intend to add to your rc.local isn't feeling just as home<br />
in /etc/profile.d/ or any other already existant config location<br />
instead.<br />
<br />
<br />
'''/etc/rc.shutdown'''<br />
<br />
System shutdown script. It stops daemons, unmounts filesystems,<br />
deactivates the swap, etc. Just don't touch.<br />
<br />
<br />
'''/etc/rc.local.shutdown'''<br />
<br />
Analogous to the /etc/rc.local file, this file may contain any<br />
commands you want to run right before the common rc.shutdown is<br />
executed. Please note that this file does not exist by default, and<br />
for it to work properly, it must be set as executable.<br />
<br />
<br />
'''/etc/rc.d/*'''<br />
<br />
This directory contains the daemon scripts referred to from the<br />
rc.conf's DAEMONS array. In addition to being called on bootup, you<br />
can use these scripts when the system is running to manage the<br />
services of your system. For example the command<br />
/etc/rc.d/postfix stop<br />
<br />
will stop the postfix daemon. Of course a script only exists when the<br />
appropriate package has been installed (in this case postfix). With a<br />
basic system install, you don't have many scripts in here, but rest<br />
assured that all relevant daemon scripts end up here. This directory<br />
is pretty much the equivalent to the /etc/rc3.d/ or /etc/init.d/<br />
directories of other distributions, without all the symlink hassle.<br />
<br />
==User & Group Management==<br />
<br />
Users and groups can be added and deleted with the standard commands<br />
provided in the util-linux package: useradd, userdel, groupadd,<br />
groupdel, passwd, and gpasswd. The typical way of adding a user is<br />
similar to this procedure:<br />
useradd -m -s /bin/bash johndoe<br />
passwd johndoe<br />
<br />
The first command will add the user named johndoe to the system,<br />
create a home directory for him at /home/johndoe, and place some<br />
default login files in his home directory. It will also set his login<br />
shell to be /bin/bash. The second command will ask you for a password<br />
for the johndoe user. A password is required to activate the account.<br />
<br />
As an alternative to the useradd command, the adduser script is also<br />
available to interactively create new users on your system simply by<br />
answering questions.<br />
<br />
See the manpages for more information on the remaining commands. It is<br />
a good idea to create one or multiple normal users for your day-to-day<br />
work to fully use the available security features and minimize<br />
potential damage that may be the result of using the root user for<br />
anything but system administration tasks.<br />
<br />
Additional information about adding users and groups can be found on the [[User Management]] wiki and on the [[Groups]] wiki.<br />
<br />
==Internet Access==<br />
<br />
Due to a lack of developers for dialup issues, connecting Arch to the<br />
Internet with a dialup line is requiring a lot of manual setup. If at<br />
all possible, set up a dedicated router which you can then use as a<br />
default gateway on the Arch box.<br />
<br />
There are quite a few dialup related documents in the Arch Linux Wiki<br />
<br />
===Analog Modem===<br />
<br />
To be able to use a Hayes-compatible, external, analog modem, you need<br />
to at least have the ppp package installed. Modify the file<br />
/etc/ppp/options to suit your needs and according to man pppd. You<br />
will need to define a chat script to supply your username and password<br />
to the ISP after the initial connection has been established. The<br />
manpages for pppd and chat have examples in them that should suffice<br />
to get a connection up and running if you're either experienced or<br />
stubborn enough. With udev, your serial ports usually are /dev/tts/0<br />
and /dev/tts/1.<br />
<br />
Instead of fighting a glorious battle with the plain pppd, you may opt<br />
to install wvdial or a similar tool to ease the setup process<br />
considerably.<br />
<br />
In case you're using a so called WinModem, which is basically a PCI<br />
plugin card working as an internal analog modem, you should indulge in<br />
the vast information found on the LinModem homepage.<br />
<br />
===ISDN===<br />
<br />
Setting up ISDN is done in three steps:<br />
#Install and configure hardware<br />
#Install and configure the ISDN utilities<br />
#Add settings for your ISP<br />
<br />
The current Arch stock kernels include the necessary ISDN modules,<br />
meaning that you won't need to recompile your kernel unless you're<br />
about to use rather odd or old ISDN hardware. After physically<br />
installing your ISDN card in your machine or plugging in your USB<br />
ISDN-Box, you can try loading the modules with modprobe. Nearly all<br />
passive ISDN PCI cards are handled by the hisax module which needs two<br />
parameters; type and protocol. You must set protocol to '1' if your<br />
country uses the 1TR6 standard, '2' if it uses EuroISDN (EDSS1), '3'<br />
if you're hooked to a so called leased-line without D-channel, and '4'<br />
for US NI1.<br />
<br />
Details on all those settings and how to set them is included in the<br />
kernel documentation, more specifically in the isdn subdirectory,<br />
available online. The type parameter depends on your card; A list of<br />
all possible types is to be found in the README.HiSax kernel<br />
documentation. Choose your card and load the module with the<br />
appropriate options like this:<br />
modprobe hisax type=18 protocol=2<br />
<br />
This will load the hisax module for my (Dennis) ELSA Quickstep<br />
1000PCI, being used in Germany with the EDSS1 protocol. You should<br />
find helpful debugging output in your /var/log/everything.log file in<br />
which you should see your card being prepared for action. Please note<br />
that you will probably need to load some usb modules before you can<br />
work with an external USB ISDN Adapter.<br />
<br />
Once you confirmed that your card works with certain settings, you can<br />
add the module options to your /etc/modprobe.conf:<br />
<br />
alias ippp0 hisax<br />
options hisax type=18 protocol=2<br />
<br />
Alternatively you can only add the options line here, and add hisax to<br />
your MODULES array in the rc.conf. Your choice, really, but this<br />
example has the advantage that the module will not be loaded until<br />
it's really needed.<br />
<br />
That being done you should have working, supported hardware. Now you<br />
need the basic utilities to actually use it!<br />
<br />
Install the isdn4k-utils package, and read the manpage to isdnctrl,<br />
it'll get you started. Further down in the manpage you will find<br />
explanations on how to create a configuration file that can be parsed<br />
by isdnctrl, as well as some helpful setup examples.<br />
<br />
Please note that you have to add your SPID to your MSN setting<br />
separated by a colon if you use US NI1.<br />
<br />
After you configured your ISDN card with the isdnctrl utility, you<br />
should be able to dial into the machine you specified with the<br />
PHONE_OUT parameter, but fail the username and password<br />
authentication. To make this work add your username and password to<br />
/etc/ppp/pap-secrets or /etc/ppp/chap-secrets as if you were<br />
configuring a normal analogous PPP link, depending on which protocol<br />
your ISP uses for authentication. If in doubt, put your data into both<br />
files.<br />
<br />
If you set up everything correctly, you should now be able to<br />
establish a dialup connection with isdnctrl dial ippp0 as root. If you<br />
have any problems, remember to check the logfiles!<br />
<br />
===DSL (PPPoE)===<br />
<br />
These instructions are only relevant to you if your PC itself is<br />
supposed to manage the connection to your ISP. You do not need to do<br />
anything but define a correct default gateway if you are using a<br />
separate router of some sort to do the grunt work.<br />
<br />
Before you can use your DSL online connection, you will have to<br />
physically install the network card that is supposed to be connected<br />
to the DSL-Modem into your computer. After adding your newly installed<br />
network card to the modprobe.conf or the MODULES array, you should<br />
install the rp-pppoe package and run the pppoe-setup script to<br />
configure your connection. After you have entered all required data,<br />
you can connect and disconnect your line with<br />
<br />
# /etc/rc.d/adsl start<br />
# /etc/rc.d/adsl stop<br />
<br />
respectively. The setup usually is rather easy and straightforward,<br />
but feel free to read the manpages for hints. If you want to<br />
automatically dial in on bootup, add adsl to your DAEMONS array,<br />
and put a ! before the network entry, since the network is handled<br />
by adsl now.<br />
<br />
==Package Management==<br />
<br />
==Pacman==<br />
<br />
[[pacman|Pacman]] is the package manager which tracks all the software installed<br />
on your system. It has simple dependency support and uses the standard<br />
gzipped tar archive format for all packages. Some common tasks are<br />
explained below with the respective commands in long and short option<br />
form. For an up to date explanation of pacman's options, read man<br />
pacman. This overview is merely scratching the surface of pacman's<br />
current capabilities.<br />
<br />
Typical tasks:<br />
<br />
===Adding/Upgrading a package with a package file===<br />
<br />
pacman --upgrade foo.pkg.tar.gz<br />
pacman -U foo.pkg.tar.gz<br />
<br />
This will install the foo.pkg.tar.gz package on the system. If<br />
dependencies are missing, pacman will exit with an error and report<br />
the missing deps, but not attempt to resolve the dependencies<br />
automatically. Look at the --sync option if you expect this<br />
functionality. Adding multiple package files is possible, and if the<br />
listed files depend on each other, the packages will be automatically<br />
installed in the correct order. This will additionally upgrade an already-installed package at no extra cost.<br />
<br />
===Removing packages===<br />
<br />
pacman --remove foo<br />
pacman -R foo<br />
<br />
This will remove all files belonging to the package named foo, except<br />
for configuration files that have been edited. Only supply the name of<br />
the package to this command, without the pkg.tar.gz suffix.<br />
<br />
To remove any and all trace of a package, add the --nosave option to<br />
the above command.<br />
<br />
===Refreshing the package list===<br />
<br />
pacman --sync --refresh<br />
pacman -Sy<br />
<br />
This will retrieve a fresh master package list from the repositories<br />
defined in the /etc/pacman.conf file and uncompress it into the<br />
database area. You should use this before using --sysupgrade to make<br />
sure you get the newest packages. Depending on your pacman.conf<br />
settings, this command may require a working internet connection to<br />
access FTP/HTTP-based repositories. This option is quite similar to<br />
Debian's apt-get update command.<br />
<br />
===Upgrading the system===<br />
<br />
pacman --sync --sysupgrade<br />
pacman -Su<br />
<br />
This command will upgrade all packages that are out-of-date on your<br />
system by comparing the local package version to the versions in the<br />
master package list that get downloaded with the --refresh command.<br />
It's a good idea to run this regularly to keep your system up to date.<br />
Note that this command does NOT implicitly refresh the master package<br />
list, so it's usually wiser to combine both commands into one like<br />
this:<br />
pacman --sync --refresh --sysupgrade<br />
pacman -Syu<br />
<br />
With these options pacman will automatically retrieve the current<br />
master package list and do a full system upgrade to the latest<br />
packages with all dependencies being automagically resolved. You will<br />
want to run this quite often.<br />
<br />
===Adding/Upgrading a package from the repositories===<br />
<br />
pacman --sync foo<br />
pacman -S foo<br />
<br />
Retrieve and install package foo, complete with all dependencies it<br />
requires. Before using any sync option, make sure you refreshed the<br />
package list, or add --refresh or -y to the options to do it before<br />
the installation attempt. Unlike --add, the --sync option does not<br />
differ between installing and upgrading packages. Depending on your<br />
pacman.conf settings this function requires working internet access.<br />
<br />
Receiving strange errors when downloading packages from the server,<br />
ie. broken downloads or files that aren't found, usually are either<br />
caused by not refreshing the package list with --sync, or if you're<br />
unlucky enough to try downloading from a mirror while it's syncing<br />
its contents, and is thus in an inconsistent state.<br />
<br />
===Searching for packages===<br />
<br />
pacman -Ss foo<br />
<br />
Search for package foo.<br />
<br />
===List installed packages===<br />
<br />
pacman --query<br />
pacman -Q<br />
<br />
Displays a list of all installed packages in the system.<br />
<br />
===Check if a specific package is installed===<br />
<br />
pacman --query foo<br />
pacman -Q foo<br />
<br />
Instead of grepping the full list for a name, you can append the name<br />
of the package you are looking for to the query command. This command<br />
will display the name and version of the foo package if it is<br />
installed, nothing otherwise.<br />
<br />
===Display specific package info===<br />
<br />
pacman --query --info foo<br />
pacman -Qi foo<br />
<br />
Displays information on the installed package foo (size, install date,<br />
build date, dependencies, conflicts, etc.). To display this<br />
information for a package file that is not yet installed, add the<br />
--file or -p option, respectively:<br />
pacman --query --info --file foo.pkg.tar.gz<br />
pacman -Qip foo.pkg.tar.gz<br />
<br />
===Display list of files contained in a package===<br />
<br />
pacman --query --list foo<br />
pacman -Ql foo<br />
<br />
Lists all files belonging to package foo.<br />
<br />
===Find out which package a specific file belongs to===<br />
<br />
pacman --query --owns /path/to/file<br />
pacman -Qo /path/to/file<br />
<br />
This query displays the name and version of the package which contains<br />
the file referenced by its full path as a parameter. Just using the<br />
file name without the path will not yield results.<br />
<br />
==Accessing Repositories==<br />
<br />
A package repository is a collection of packages and a package<br />
meta-info file that can reside in a local directory or on a remote<br />
FTP/HTTP server. The default repository for an Arch system is the<br />
core repository. This is kept up to date by developers with the<br />
latest version of most software and stays fairly bleeding-edge.<br />
<br />
Many users also choose to activate the extra package repository which<br />
contains more packages that are not part of Arch's core package set.<br />
You can activate this repo by uncommenting the appropriate lines in<br />
your /etc/pacman.conf. This repository is activated by default.<br />
<br />
You can also build, maintain and use your own package repositories.<br />
See the pacman manpage for instructions.<br />
<br />
If you install from CD-ROM and end up having problems accessing the<br />
Internet, you may need to install additional packages from the CD.<br />
Refer to the FAQs, specifically FAQ #3 later in this document, to find<br />
out how to define a repository that uses the installation CD-ROM as a<br />
package source.<br />
<br />
==Arch Build System (ABS)==<br />
<br />
==Binary vs. Source==<br />
<br />
Where pacman is responsible for the binary side of the package world,<br />
ABS is responsible for the source side: It helps you to build your own<br />
custom packages from source code, also letting you rebuild Arch Linux<br />
packages with your own customizations. <br />
<br />
The procedure usually goes as follows:<br />
# Install the '''abs''' package via pacman<br />
# Synchronize your ABS tree with the server by running '''abs''' as root.<br />
# Create a build directory, named after the package you are going to create.<br />
# Copy the PKGBUILD.proto prototype from /var/abs/ into your newly created directory, remove the .proto suffix, and edit it to fit the new package.<br />
# Run makepkg in the working directory with the PKGBUILD file.<br />
# Install the newly built package with pacman.<br />
# Send the package to your friends for bragging rights (or give it to an Archer so s/he can stick it in the master ABS tree).<br />
<br />
==Synchronizing Your ABS Tree==<br />
<br />
You can synchronize all the required package building files in<br />
/var/abs by running the abs script as root. A<br />
working internet connection is also required, of course. Using SVN as<br />
the transfer medium allows you to follow different version trees<br />
within ABS - this can be configured in /etc/abs/supfile.arch. For<br />
example, the default supfile is set to track the core package tree,<br />
which is bleeding-edge and the recommended source to follow. You can<br />
also follow specific versions. See the comments in the supfiles for<br />
more info.<br />
<br />
ABS supports multiple repositories, which can be enabled or disabled<br />
in /etc/abs/abs.conf. By default, abs will follow the core and<br />
extra repositories, but not anything else.<br />
<br />
You will also see an /etc/abs/supfile.extra file. This will give you<br />
access to all the unofficial build scripts that were not included in<br />
the main ABS repository. If you do not want to use this repository,<br />
you can delete the file, but usually it makes more sense to edit<br />
abs.conf accordingly instead, and disable the repositories you don't<br />
need.<br />
<br />
==How to Build Packages==<br />
<br />
The build process is thoroughly explained in the makepkg manpage. Read<br />
it for instructions on building your own packages. If that's not<br />
helping you, keep your eyes peeled for tutorials in the Wiki, or ask<br />
for help in the forums or IRC.<br />
<br />
==Package Guidelines==<br />
<br />
When building a package for Arch Linux, you should adhere to the package<br />
guidelines below, especially if you would like to contribute your new<br />
package to Arch Linux.<br />
<br />
Package Naming<br />
<br />
* Package names should consist of alphanumeric characters only; all letters should be lowercase.<br />
* Package versions should be the same as the version released by the author. Versions can include letters if need be (eg, nmap'sversion was 2.54beta32 a good while ago). Version tags may not include hyphens! Letters, numbers, and periods only.<br />
* Package releases are specific to Arch Linux packages. These allow users to differentiate between newer and older package builds. When a new package version is first released, the release countstarts at 1. Then as fixes and optimizations are made, the package will be re-released to the AL public and the release number will increment. When a new version comes out, the release count resets to 1. Package release tags follow the same naming restrictions as version tags.<br />
<br />
<br />
'''Directories'''<br />
<br />
Configuration files should be placed in the /etc directory. If there's<br />
more than one configuration file, it's customary to use a subdirectory<br />
in order to keep the /etc area as clean as possible. Use<br />
/etc/{pkgname}/ where {pkgname} is the name of your package (or a<br />
suitable alternative, eg, apache uses /etc/httpd/).<br />
<br />
Package files should follow these general directory guidelines:<br />
<br />
/etc System-essential configuration files<br />
/usr/bin Application binaries<br />
/usr/sbin System binaries<br />
/usr/lib Libraries<br />
/usr/include Header files<br />
/usr/lib/{pkg} Modules, plugins, etc.<br />
/usr/share/man Manpages<br />
/usr/share/{pkg} Application data<br />
/etc/{pkg} Configuration files for {pkg}<br />
/opt Packages that do not fit cleanly into the GNU filesystem layout can be<br />
placed here. If a package's files can be cleanly placed into the above<br />
directories, then do so. If there are other high-level directories<br />
that do not fit, then you should use /opt.<br />
<br />
For example, the acrobat package has Browser, Reader, and Resource<br />
directories sitting at the same level as the bin directory. This<br />
doesn't fit into a normal GNU filesystem layout, so we place all the<br />
files in a subdirectory of /opt.<br />
<br />
Clear as mud? Good.<br />
<br />
<br />
'''makepkg Duties'''<br />
<br />
When you use makepkg to build a package for you, it does the following<br />
automatically:<br />
# Checks if package dependencies are installed<br />
# Downloads source files from servers<br />
# Unpacks source files<br />
# Performs any necessary patching, if specified in the PKGBUILD script<br />
# Builds the software and installs it in a fake root<br />
# Removes /usr/doc, /usr/info, /usr/share/doc, and /usr/share/info from the package<br />
# Strips symbols from binaries<br />
# Strips debugging symbols from libraries<br />
# Generates the package meta file which is included with each package<br />
# Compresses the fake root into the package file<br />
# Stores the package file in the configured destination directory (cwd by default)<br />
<br />
<br />
'''Other'''<br />
<br />
Do not introduce new variables into your PKGBUILD build scripts,<br />
unless the package cannot be built without doing so, as these could<br />
possibly conflict with variables used in makepkg itself. If a new<br />
variable is absolutely required, prefix the variable name with an<br />
underscore.<br />
<br />
Avoid using /usr/libexec/ for anything. Use /usr/lib/{pkgname}<br />
instead.<br />
<br />
The "Packager" field from the package meta file can be customized by<br />
the package builder by modifying the appropriate option in the<br />
/etc/makepkg.conf file, or alternatively by exporting the PACKAGER<br />
environment variable before building packages with makepkg:<br />
export PACKAGER="John Doe <your.email>"<br />
<br />
<br />
'''Submitting Packages'''<br />
<br />
If you'd like to submit packages, please take a look at the Arch User<br />
Repository and their guidelines. New packages should be submitted to<br />
the AUR.<br />
<br />
If you're submitting a package, please do the following:<br />
*Please add a comment line to the top of your PKGBUILD file that follows this format:<br />
Contributor: Your Name <your.email><br />
*Verify the package dependencies (eg, run ldd on dynamic executables, check tools required by scripts, etc.). It's also a good idea to use the namcap utility, written by Jason Chu jason@archlinux.org, to analyze the sanity if your package. namcap will tell you about bad permissions, missing dependencies, un-needed dependencies, and other common mistakes. You can install the namcap package with pacman as usual.<br />
* All packages should come as a compressed tar file containing a directory with the newly built package, the PKGBUILD, filelist, and additional files (patches, install, ...) in it. The archive name should at least contain the name of the package. <br />
* Read the appropriate documents regarding the AUR, and the newest version of the packaging guildelines on the AUR Homepage.<br />
<br />
==Frequently Asked Questions==<br />
<br />
The FAQs listed here are only covering any problems that may keep you<br />
from booting or installing an initial Arch Linux system. If you have<br />
questions regarding further usage of the system utilities, X11 setup,<br />
etc. or how to configure your hardware, please head over to the Wiki.<br />
If you think an issue is not covered here that should be, please<br />
notify the author of this document, whose address is to be found at<br />
the very top of this file.<br />
<br />
==During the initial package installation, pacman fails to resolve dependencies for package A because package B is not in the package set==<br />
<br />
Unless something is very broken and thus very likely to be reported by<br />
multiple people soon, you probably just forgot to mount your target<br />
partitions properly. This causes pacman to decompress the package<br />
database into the initial ramdisk, which fills up quite nicely and<br />
ultimatively leads to this error.<br />
<br />
Make sure that you use the DONE and not the CANCEL option offered by<br />
the Filesystem Mountpoints menu to apply your choices. This error<br />
should not happen if you use the Auto-Prepare feature; If it does<br />
nevertheless, please report this as a bug.<br />
<br />
==How can I install packages from the install CD with pacman --sync (so it resolves dependencies for me)?==<br />
<br />
If you would rather have packages install from the CD instead of<br />
downloading them, then mount the install CD somewhere (eg. /mnt/cd)<br />
and add this line right below the [core] line in /etc/pacman.conf:<br />
Server = file:///mnt/cd<br />
<br />
Replace /mnt/cd with the mountpoint you chose. Then use pacman --sync<br />
as you normally would - It will now check the /mnt/cd directory first<br />
for packages.<br />
<br />
==How can I create multiple swap partitions during the install?==<br />
<br />
Naturally you won't be able to use the Auto-Prepare feature if you<br />
want to create and use multiple swap partitions. Create the partitions<br />
manually instead, and create as many swap partitions as your little<br />
heart desires. Go through the rest of the disk preparation steps,<br />
don't mind that you're only asked for one swap partition during the<br />
mount-point setting. Once you're through with the install and are<br />
about to edit your system configuration files, you can edit the fstab<br />
file and include a line for every swap device you created earlier.<br />
Simply copy the automatically generated swap line, and modify the<br />
referenced device according to your setup. The additional swaps will<br />
be activated after the bootup when swapon -a is being run by the<br />
initscripts. Make sure you ran mkswap on all of your swap partitions<br />
manually, or else your system will complain on bootup!<br />
<br />
If, for any odd reason, you can not wait until after the installation<br />
with activating multiple swap partitions or files, you will have to<br />
open a shell on one of the virtual terminals and issue the swapon<br />
<device> for every swap drive or file you partitioned/readied before<br />
with mkswap. Then continue as explained above with the install.<br />
<br />
In case you are honestly contemplating setting up multiple swap files<br />
or drives, you should keep in mind that a kernel that needs to swap is<br />
actually crying bitterly for more RAM, not more swap space. Please<br />
keep your penguin well fed. Thank you.<br />
<br />
==How do I reconfigure LILO from the rescue system?==<br />
<br />
As a first step you simply boot from the Arch Install CD or disks. If<br />
your partitions are intact and don't need checking, you can try<br />
choosing one of the recovery boot options according to your partition<br />
layout, or fiddle with the GRUB boot manager settings on your own to<br />
get your existing system to boot properly. That will boot directly<br />
into your system, and you can skip all but the last step of actually<br />
reconfiguring and running LILO.<br />
<br />
If you cannot boot your old root directly, boot from the CD as if you<br />
were going to start an installation. Once you're in a shell, you mount<br />
the root partition of your harddisk into the /mnt directory, for<br />
example like this:<br />
mount /dev/hda3 /mnt<br />
<br />
Then you mount any other partitions to their respective mount points<br />
within that root of yours, for example a /boot partition:<br />
mount /dev/hda1 /mnt/boot<br />
<br />
Now you need to mount a /dev tree in the /mnt area, where LILO will be<br />
able to find it:<br />
/mnt/bin/mount --bind /dev /mnt/dev<br />
<br />
Once everything is mounted, make this /mnt directory your new root<br />
with the chroot /mnt command. This will start a new shell and drop you<br />
into the /mnt directory, which will be considered your / from then on.<br />
<br />
Now you can edit /etc/lilo.conf to your liking and run lilo to fix<br />
anything that needs fixing. Simply type exit when you want to break<br />
out of this root again, back into the original file tree. You can now<br />
reboot and test your changes.<br />
<br />
==I can't ssh into my machine!==<br />
<br />
The default configuration will reject all incoming connections, not only ssh connections. Edit your /etc/hosts.allow file and add the line: <code>sshd:all</code> to allow all incoming ssh connections.<br />
<br />
==How should I load modules during boot now?==<br />
<br />
If you want to load a module unconditionally without a specific device<br />
binding, add the name of the module to the MODULES array of your<br />
/etc/rc.conf. For on demand loading on device access, add it as usual<br />
with the alias and optioncommands to your /etc/modprobe.conf, in the<br />
rare cases that the automatisms employed by udev don't cut<br />
it. To pass any options to a module you want to load through the<br />
MODULES array, only add the appropriate options line to your<br />
/etc/modprobe.d/modprobe.conf.<br />
<br />
==Kernel refuses to boot because of "lost interrupt"==<br />
<br />
Kernel refuses to boot. It locks at:<br />
IRQ probe failed for hda<br />
hda lost interrupt<br />
<br />
This or a similar error occurs for some HD controllers on kernel<br />
2.6.x. A workaround is to pass the acpi=off option to the kernel at<br />
boot time.<br />
<br />
==I get "access denied" errors trying to play music or read DVDs==<br />
<br />
Add your user to the optical and audio groups.<br />
gpasswd -a johndoe optical<br />
gpasswd -a johndoe audio<br />
<br />
Logout, then login again as that user (eg. johndoe) so the group<br />
changes can take effect, and the device permissions shouldn't be a<br />
problem anymore.<br />
<br />
If you have a DVD drive, you may want to create a /dev/dvd symlink to<br />
your real DVD device. Usually udev does this for you already, but this<br />
will serve well as an example for setting up similar symlinks.<br />
<br />
For example, if your DVD drive is accessible through /dev/sdc, you can<br />
do the following as root:<br />
cat >>/etc/udev/rules.d/00.rules <<EOF<br />
> KERNEL="sdc", NAME="sdc", SYMLINK="dvd"<br />
> EOF<br />
/etc/start_udev<br />
mount /dev/pts<br />
mount /dev/shm</div>Code mhttps://wiki.archlinux.org/index.php?title=Xbindkeys&diff=91995Xbindkeys2010-01-13T05:41:11Z<p>Code m: /* Xbindkeysrc */</p>
<hr />
<div>[[Category:Input devices (English)]] [[Category:X Server (English)]]<br />
<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Xbindkeys}}<br />
{{i18n_entry|Türkçe|Xbindkeys (Türkçe)}}<br />
{{i18n_links_end}}<br />
<br />
== Xbindkeys == <br />
<br />
Xbindkeys is a program that enables us to assign specific functions, to a certain key on the keyboard. Xbindkeys work with multimedia keys and is window manager / DE independent, so if you switch much xbindkeys is very handy. <br />
<br />
== Installation ==<br />
<br />
You can install xbindkeys from the standard repo's<br />
# pacman -S xbindkeys<br />
<br />
And you can also install the gui for xbindkeys [http://aur.archlinux.org/packages.php?ID=4200] which is in [[AUR]]<br />
<br />
== Configuration ==<br />
<br />
Create a file .xbindkeysrc in your home dir<br />
touch ~/.xbindkeysrc<br />
<br />
Now you can either use the .xbindkeysrc to set keybindings or you can do that with the GUI<br />
<br />
== Xbindkeysrc ==<br />
<br />
<br />
If you want to assign a shortcut key to a key run;<br />
xbindkeys -k<br />
<br />
Give the command, you get the blank window that you want to assign a shortcut key when the selected key. For example i want to assign Alt + o<br />
I just run xbindkeys -k and press the key combination, this gives the following output:<br />
# "(Scheme function)"<br />
m: alt + o: 120<br />
NoSymbol<br />
<br />
( Use ''xbindkeys -mk'' to keep the key promt open, ^Q exits )<br />
<br />
Now you can copy these three lines to .xbindkeysrc and fill an command in "(Scheme function)" , then you will get something like this:<br />
# "amixer sset Master toggle"<br />
m:0x0 + c:160<br />
NoSymbol <br />
<br />
The first line represents the command , the second the key , the third the symbol ( but there isn't any).<br />
<br />
== GUI method ==<br />
<br />
If you installed the xbindkeys_config package, just run :<br />
xbindkeys_config <br />
<br />
== Usage ==<br />
<br />
Once your done configuring your keys edit your ~/.xinitrc and place <br />
xbindkeys &<br />
Before your windows manager / DE starts</div>Code mhttps://wiki.archlinux.org/index.php?title=Xbindkeys&diff=90734Xbindkeys2010-01-02T19:20:58Z<p>Code m: /* Xbindkeysrc */</p>
<hr />
<div>[[Category:Input devices (English)]] [[Category:X Server (English)]]<br />
<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Xbindkeys}}<br />
{{i18n_entry|Türkçe|Xbindkeys (Türkçe)}}<br />
{{i18n_links_end}}<br />
<br />
== Xbindkeys == <br />
<br />
Xbindkeys is a program that enables us to assign specific functions, to a certain key on the keyboard. Xbindkeys work with multimedia keys and is window manager / DE independent, so if you switch much xbindkeys is very handy. <br />
<br />
== Installation ==<br />
<br />
You can install xbindkeys from the standard repo's<br />
# pacman -S xbindkeys<br />
<br />
And you can also install the gui for xbindkeys [http://aur.archlinux.org/packages.php?ID=4200] which is in [[AUR]]<br />
<br />
== Configuration ==<br />
<br />
Create a file .xbindkeysrc in your home dir<br />
touch ~/.xbindkeysrc<br />
<br />
Now you can either use the .xbindkeysrc to set keybindings or you can do that with the GUI<br />
<br />
== Xbindkeysrc ==<br />
<br />
<br />
If you want to assign a shortcut key to a key run;<br />
xbindkeys -k<br />
<br />
Give the command, you get the blank window that you want to assign a shortcut key when the selected key. For example i want to assign Alt + o<br />
I just run xbindkeys -k and press the key combination, this gives the following output:<br />
# "(Scheme function)"<br />
m: alt + o: 120<br />
NoSymbol<br />
<br />
( Use ''xbindkey -mk'' to keep the key promt open, ^Q exits )<br />
<br />
Now you can copy this three lines to .xbindkeysrc and fill an command in "(Scheme function)" , then you will get something like this:<br />
# "amixer sset Master toggle"<br />
m:0x0 + c:160<br />
NoSymbol <br />
<br />
The first line represents the command , the second the key , the third the symbol ( but there isn't any).<br />
<br />
== GUI method ==<br />
<br />
If you installed the xbindkeys_config package, just run :<br />
xbindkeys_config <br />
<br />
== Usage ==<br />
<br />
Once your done configuring your keys edit your ~/.xinitrc and place <br />
xbindkeys &<br />
Before your windows manager / DE starts</div>Code mhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=90733Touchpad Synaptics2010-01-02T19:17:28Z<p>Code m: /* Software Toggle */</p>
<hr />
<div>[[Category:Input devices (English)]][[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Touchpad Synaptics}}<br />
{{i18n_entry|German|Touchpad Synaptics (Deutsch)}}<br />
{{i18n_entry|Русский|Тачпад Synaptics}}<br />
{{i18n_entry|简体中文|触摸板 (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
==Installation==<br />
<br />
The Synaptics driver is now bundled as ''xf86-input-synaptics'', and is available in the [[Official_Repositories|[extra] repository]]:<br />
<br />
# pacman -S xf86-input-synaptics<br />
<br />
==Configuration==<br />
<br />
Configuration for the touchpad should done by tweaking options in the XML format *.fdi policy file with latest Xserver installed using [[Xorg input hotplugging|hotplugging]]. Alternatively, configuration can be done using xorg.conf. Please note, however, that this method of configuring is deprecated and might stop working in the future. Configuration by HAL policy is therefore encouraged.<br />
<br />
===Configuration via HAL policy (hotplugging enabled, recommended) ===<br />
<br />
With [[Xorg input hotplugging|hotplugging]] (enabled by default) and HAL installed and running, your Synaptics should works "out-of-the-box".<br />
<br />
If it doesn't or you want to tweak the configuration, you will need to edit the appropriate HAL policy file (XML format).<br />
Note that in this case.<br />
<br />
Copy '''/usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi''' into '''/etc/hal/fdi/policy/'''<br />
cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/<br />
<br />
Now you can modify the new file appending new options.<br />
<br />
Here's a simple template to begin with, covering the more common features:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<!-- <match key="info.product" contains="AlpsPS/2 ALPS GlidePoint"> #ALPS users may need to use this instead of the above --><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.AlwaysCore" type="string">true</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.protocol" type="string">event</merge><br />
<merge key="input.x11_options.touchpadoff" type="string">0</merge><br />
<merge key="input.x11_options.shmconfig" type="string">on</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The syntax is similar to xorg.conf, for instance, <br />
Option "RightEdge" "5300"<br />
equates to this .fdi file line:<br />
<merge key="input.x11_options.RightEdge" type="string">5300</merge><br />
{{Box Note| In the .fdi file, every type must be "string" instead of "float" or "int" as per xorg.conf.}}<br />
{{Box Note| You might need to run '''/etc/rc.d/hal restart''' in order for the changes to take place.}}<br />
<br />
====Advanced policy configuration====<br />
<br />
The Synaptics driver allows for a vast amount of options to be tweaked. Luckily, all of them are consistently named and well documented in Synaptic's manpage.<br />
man synaptics<br />
<br />
The following shall serve as an advanced configuration example for '''11-x11-synaptics.fdi''':<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
<merge key="input.x11_options.MinSpeed" type="string">0.1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">0.4</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.002</merge><br />
<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.VerteScrollDelta" type="string">2</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.CircularScrolling" type="string">true</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">8</merge><br />
<merge key="input.x11_options.CircScrollDelta" type="string">0.1</merge><br />
<br />
<!-- Values here might differ! Use synclient -m 20 to find desired values --><br />
<merge key="input.x11_options.LeftEdge" type="string">2000</merge><br />
<merge key="input.x11_options.TopEdge" type="string">2000</merge><br />
<br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
====Other products====<br />
<br />
* ALPS users may try the following if the above does not work:<br />
<br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with MacBook (1,1 2,1 etc...)<br />
<br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with latest MacBook (5,1)<br />
<br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
{{Box Note| You can find the exact information for your touchpad in /proc/bus/input/devices.}}<br />
<br />
Or, if you find HAL is not loading your settings, try this template (the "append" child is necessary for some setups):<br />
<br />
<pre><br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="SynPS/2 Synaptics TouchPad"><br />
<append key="info.capabilities" type="strlist">input.touchpad</append><br />
</match><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
[...]<br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
<br />
===Configuration via xorg.conf (hotplugging disabled, deprecated) ===<br />
<br />
Edit ''/etc/X11/xorg.conf'' as root and add '''InputDevice "Touchpad" "SendCoreEvents"''' to the ''ServerLayout'':<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
'''''InputDevice "SynapticsTouchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Add '''Load "synaptics"''' to the ''Module'' section:<br />
Section "Module"<br />
...<br />
Load "glx"<br />
Load "freetype"<br />
'''''Load "synaptics"'''''<br />
...<br />
EndSection<br />
<br />
Lastly, add a new ''InputDevice'' section for the touchpad itself:<br />
Section "InputDevice"<br />
Identifier "SynapticsTouchpad"<br />
Driver "synaptics"<br />
Option "AlwaysCore" "true" # send events to CorePointer<br />
#Option "Device" "/dev/input/mice"<br />
Option "Device" "/dev/psaux"<br />
Option "Protocol" "auto-dev"<br />
Option "SHMConfig" "false" # configurable at runtime? security risk<br />
Option "LeftEdge" "1700" # x coord left<br />
Option "RightEdge" "5300" # x coord right<br />
Option "TopEdge" "1700" # y coord top<br />
Option "BottomEdge" "4200" # y coord bottom<br />
Option "FingerLow" "25" # pressure below this level triggers release<br />
Option "FingerHigh" "30" # pressure above this level triggers touch<br />
Option "MaxTapTime" "180" # max time in ms for detecting tap<br />
'''Option "VertEdgeScroll" "true" # enable vertical scroll zone'''<br />
'''Option "HorizEdgeScroll" "true" # enable horizontal scroll zone'''<br />
Option "CornerCoasting" "true" # enable continuous scroll with finger in corner<br />
Option "CoastingSpeed" "0.30" # corner coasting speed<br />
Option "VertScrollDelta" "100" # edge-to-edge scroll distance of the vertical scroll<br />
Option "HorizScrollDelta" "100" # edge-to-edge scroll distance of the horizontal scroll<br />
Option "MinSpeed" "0.10" # speed factor for low pointer movement<br />
Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement<br />
Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection<br />
<br />
The '''bold''' lines are important because users must now explicitly enable the side and bottom scroll zones of the touchpad. If you already had an InputDevice section configured for the old touchpad driver, you'll still need to add these two lines if you wish to use the scroll zones.<br />
<br />
Save, exit and restart X. The touchpad should now have working scroll zones. You can further tweak the ''InputDevice'' settings if desired. See [[#Advanced_Configuration | Advanced Configuration]] for more information.<br />
<br />
Note that Xorg will automatically load the '''evdev''' and '''psmouse''' kernel modules required by Synaptics, however you may also add them explicitly to the MODULES array in the /etc/rc.conf file if desired.<br />
<br />
====ALPS Touchpads====<br />
<br />
For ALPS Touchpads, if the above configuration does not provide the desired results, try the following configuration instead:<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
InputDevice "Touchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "Device" "/dev/input/mouse0"<br />
Option "Protocol" "auto-dev"<br />
Option "LeftEdge" "130"<br />
Option "RightEdge" "840"<br />
Option "TopEdge" "130"<br />
Option "BottomEdge" "640"<br />
Option "FingerLow" "7"<br />
Option "FingerHigh" "8"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "110"<br />
Option "EmulateMidButtonTime" "75"<br />
Option "VertScrollDelta" "20"<br />
Option "HorizScrollDelta" "20"<br />
Option "MinSpeed" "0.25"<br />
Option "MaxSpeed" "0.50"<br />
Option "AccelFactor" "0.010"<br />
Option "EdgeMotionMinSpeed" "200"<br />
Option "EdgeMotionMaxSpeed" "200"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "1"<br />
Option "CircScrollDelta" "0.1"<br />
Option "CircScrollTrigger" "2"<br />
Option "SHMConfig" "on"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
<br />
==Advanced Configuration==<br />
<br />
===Input device options===<br />
<br />
There are a number of arbitrary parameters that can be tweaked for Synaptics touchpads. The following is a brief list of some of these options--see '''man synaptics''' for full details:<br />
<br />
{| class="wikitable" <br />
|-align="left"<br />
!+Option+<br />
!width=400|+Description+<br />
!width=200|+Type+<br />
|-<br />
|'''Device'''<br />
|Input device location. See [[#Troubleshooting | Troubleshooting]] to find your device handler if it isn't /dev/input/mouse0<br />
|String<br />
|-<br />
|'''MinSpeed'''<br />
|Minimum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''MaxSpeed'''<br />
|Maximum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''AccelFactor'''<br />
|Cursor Acceleration Factor<br />
|Decimal(float)<br />
|-<br />
|'''HorizScrollDelta'''<br />
|Horizontal [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''VertScrollDelta'''<br />
|Vertical [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''SHMConfig'''<br />
|height=100|Activation of shared memory(must be enabled for real-time configuration or [Disable touchpad upon external mouse detection| udev-based disabling]<br />
|Boolean<br />
|}<br />
<br />
===Gsynaptics===<br />
<br />
Once the touchpad is configured, users can also install the '''gsynaptics''' package from [community] to provide a GUI-based configuration solution for the device (note that it depends on libgnomeui):<br />
# pacman -S gsynaptics<br />
<br />
'''''Note:''' The '''gsynaptics''' web page [http://gsynaptics.sourceforge.jp/] indicates that it is becoming obsolete and users should consider '''GPointingDeviceSettings''' [http://live.gnome.org/GPointingDeviceSettings], currently available in AUR and as source code.''<br />
<br />
With hotplugging enabled(default), append this the match section of your 99-x11-synaptics.fdi or 11-x11-synaptics.fdi:<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
===Fine-tuning with synclient===<br />
<br />
The synclient monitor can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. In order for synclient to work properly, the '''SHMConfig''' option must be set to '''on''' or '''true'''.<br />
<br />
You can start the Synaptics monitor with the following command:<br />
$ synclient -m 100<br />
Where -m activates the monitor and the following number specifies the update interval in milliseconds.<br />
<br />
This monitor provides information about the current state of your touchpad. For example, if you move the mouse with the touchpad, the x and y values in the monitor will change. Therewith you can easy figure out your touchpad's dimension which is defined in the LeftEdge-, RightEdge-, BottomEdge- and TopEdge-Options.<br />
<br />
The abbreviations for the parameters are as follow:<br />
<br />
{| class="wikitable"<br />
|- align="left"<br />
!width="200"|+Abbreviation+<br />
!width="400|+Description+<br />
|-<br />
|'''time'''<br />
|Time in seconds since the logging was started.<br />
|-<br />
|'''x, y'''<br />
|The x/y coordinates of the finger on the touchpad. The origin is in the upper left corner.<br />
|-<br />
|'''z'''<br />
|The pressure value. It represents the pressure you are using to navigate on your touchpad.<br />
|-<br />
|'''f'''<br />
|Number of fingers currently touching the touchpad.<br />
|-<br />
|'''w'''<br />
|Value that represents the finger width.<br />
|-<br />
|'''l,r,u,d,m,multi'''<br />
|Those values represent the state of the left, right, up, down, middle and multi buttons pressed where zero means not pressed and one means pressed.<br />
|-<br />
|'''gl,gm,gr'''<br />
|For touchpads which have a guest device, this are the associated button states for guest left, guest middle and guest right pressed (1) and not pressed (0).<br />
|-<br />
|'''gdx, gdy'''<br />
|x/y coordinates of the guest device.<br />
|}<br />
If a value constantly is zero, it implies that this option is not supported by your device.<br />
<br />
===Edge scrolling===<br />
<br />
To enable the scroll zones found along the edges of the touchpad, add one or both of the following options to the touchpad device section in /etc/X11/xorg.conf:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "VertEdgeScroll" "true" #vertical scrolling when dragging along the right edge.<br />
Option "HorizEdgeScroll" "true" #horizontal scrolling when dragging along the bottom edge.<br />
...<br />
EndSection<br />
<br />
In ''/etc/hal/fdi/policy/11-x11-synaptics.fdi''(or if that doesn't work, ''/etc/hal/fdi/policy/99-x11-synaptics.fdi) for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
...<br />
</match><br />
<br />
===Two-Finger scrolling===<br />
<br />
Recent Synaptics touchpads support two-finger scrolling. This allows you to use two fingers together anywhere on the touchpad, similar to the behaviour of Macbooks.<br />
<br />
If your hardware supports this feature, you can enable it by inserting the following lines into the touchpad device section of /etc/X11/xorg.conf:<br />
Section "InputDevice"<br />
...<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "EmulateTwoFingerMinZ" "120" # this may vary between different machines<br />
...<br />
EndSection<br />
<br />
''EmulateTwoFingerMinZ'' is only necessary for the ALPS Touchpad, which several Dell machines have. ([http://ubuntuforums.org/showthread.php?t=516798&page=2#19 from Ubuntu forums]) <br />
<br />
'''Firefox users:''' You might find the default behaviour of Firefox pretty annoying relating to the horizontal scrolling. Just see ''Firefox and special touchpad events'' below to find out how to disable it.<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi'''(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
...<br />
</match><br />
<br />
Some users might need to modify the ''EmulateTwoFingerMinW'' parameter, as their touch pads sense two fingers as one wide finger. You can check which parameters you need to modify by running '''synclient -m 150''' -- when you touch two fingers to the touch pad, observe which parameters (z, w, or f) change. Those will determine the minimum threshold values you must set (if f changes, don't bother with ''EmulateTwoFingerMin[W,Z]'' since you do not need to emulate two fingers, your touch pad can simply sense two different fingers).<br />
<br />
===Circular scrolling===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of '''/etc/X11/xorg.conf''':<br />
Section "InputDevice"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi';'(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.CircularScrolling" type="string">on</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">0</merge><br />
...<br />
</match><br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
===Software Toggle===<br />
<br />
You may find it useful to have a software toggle that will turn on or off your touchpad, esplicially if it's extremely sensitive and your doing a lot of typing. Please also see [[#Disable touchpad upon external mouse detection]] and [[#Stopping the mouse from clicking while typing]] as those may be better solutions, again a matter of choice. The advantage here is you have the control, while the other solutions have daemons determine when to turn off the trackpad.<br />
<br />
You will want to grab [[xbindkeys]] if you don't already have key binding software.<br />
<br />
Then save this script to something such as /sbin/trackpad-toggle.sh:<br />
<br />
#!/bin/bash<br />
<br />
if [ `synclient -l | grep TouchpadOff | gawk -F '= ' '{ print $2 }'` -eq 0 ]; then<br />
synclient TouchpadOff=1<br />
else<br />
synclient TouchpadOff=0<br />
fi<br />
<br />
Then finally add a key binding to use the script. It is best to call with xbindkeys like so (file ''~/.xbindkeysrc''):<br />
<br />
"/sbin/trackpad-toggle.sh"<br />
m:0x5 + c:65<br />
Control+Shift + space<br />
<br />
Now just (re)start xbindkeys and ctrl+Shift+Space will now toggle your trackpad !<br />
<br />
Of course you could easily use any other keybinding software, such as the ones provided by Xfce4 and Gnome.<br />
<br />
==Troubleshooting==<br />
<br />
===No scrolling/tapping with Gnome 2.28===<br />
<br />
Gnome 2.28 introduces a few additional features for managing touchpads. This change takes preference over previously configured options in the HAL policy file and thus may surprise some unsuspecting people. To change the Gnome 2.28 touchpad settings, go to ''System->Preferences->Mouse->Touchpad''.<br />
<br />
===Synaptics Special Ability===<br />
<br />
By default, Synaptics touchpads are able to detect the number of fingers on the touchpad; ALPS touchpads are not. If the touchpad is tapped with two fingers, it will emulate a middle click. If the touchpad is typed with three fingers, a right click will be emulated.<br />
<br />
===Disable touchpad upon external mouse detection===<br />
<br />
In assistance to [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, add the following udev rule to '''/etc/udev/rules.d/01-touchpad.rules''':<br />
ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=1"<br />
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=0"<br />
<br />
SHMConfig must be enabled (see the '''Configuration''' section for details)<br />
<br />
===Cursor Jump===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
===Multitouch===<br />
<br />
Multitouch gesture like in Mac OS X will be in future version of the driver.<br />
<br />
===Touchpad device isn't located at /dev/input/mouse0===<br />
<br />
If that's the case, you can use this command to display information about your input devices:<br />
cat /proc/bus/input/devices<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
<br />
In this case, the Handlers are mouse0 and event1, so /dev/input/mouse0 would be used.<br />
<br />
===Stopping the mouse from clicking while typing===<br />
<br />
To have the touchpad disabled automatically when you begin typing, add the following line to your .xinitrc before you run your window manager:<br />
syndaemon -i 2 &<br />
<br />
The '''-i 2''' switch sets the idle time to 2 seconds. The idle time specifies how many seconds to wait after the last key-press before enabling the touchpad again.<br />
<br />
Additionally you can add the '''-t''' switch that tells the daemon not to disable mouse movement when typing and only disable tapping and scrolling:<br />
syndaemon -t -i 2 &<br />
<br />
As usual you may find further information in the manpage:<br />
$ man syndaemon<br />
<br />
Note: Don't forget to enable SHMConfig in your xorg-setup, either in /etc/xorg.conf (hotplugging disabled) or in /etc/hal/fdi/policy/11-x11-synaptics.fdi (hotplugging enabled). Some users may need to specify touchpad preferences in /etc/hal/fdi/policy/99-x11-synaptics.fdi, instead.<br />
<br />
Note: If you're using GDM as your login manager and Gnome, GDM will ignore commands added to .xinitrc, other than the command to start Gnome. To start syndaemon you need to use Gnome's Startup Applications Preferences program. Login to Gnome and go to System > Preferences > Startup Applications. In the Startup Programs tab click the Add button. Name the Startup Program whatever you like and input any comments you like (or leave this field blank). In the command field add:<br />
syndaemon -i 2 -d<br />
<br />
The "-d" option is necessary to start syndaemon as a background process, instead of the "&" which does this in .xinitrc. You can add other options as well, the same way you would in .xinitrc. When you're done click the Add button in the Add Startup Program dialogue. Make sure the check box next to the startup program you've created is checked, in the list of additional startup programs. Close the Startup Applications Preferences window and you're done.<br />
<br />
===Firefox and special touchpad events===<br />
<br />
By default, Firefox is set up to do special events upon tapping or scrolling certain parts of your touchpad.<br />
You can edit the settings of those actions by typing '''about:config''' in your Firefox address bar.<br />
To alter these options, double-click on the line in question, changing "true" to "false" and vise versa.<br />
<br />
To prevent Firefox from scrolling (backward/forward) through browser history and instead scroll through pages, edit these settings as shown:<br />
mousewheel.horizscroll.withnokey.action = 1<br />
mousewheel.horizscroll.withnokey.sysnumlines = true<br />
<br />
To prevent Firefox from redirecting you to URLs formed from your clipboard content upon tapping the upper-right corner of your touchpad (or middle mouse button), set the following option to "false":<br />
middlemouse.contentLoadURL = false<br />
<br />
===Opera: horizontal scrolling issues===<br />
<br />
Same as above.<br />
To fix it, go to Tools -> Preferences -> Advanced -> Shortcuts. There you edit the mouse preferences: Delete the entries with "Button 5" and "Button 6".<br />
<br />
===Scrolling and multiple actions with Synaptics on LG Laptops===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in xorg.conf:<br />
Option "UpDownScrolling" "0"<br />
<br />
NOTE that this will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git] .<br />
<br />
There is also a package build file in the AUR to automate this: [http://aur.archlinux.org/packages.php?ID=15983].<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
cd synaptics-git<br />
makepkg<br />
<br />
If you want it to be automatically installed after being built, just add '-i' after makepkg.<br />
<br />
===Other external mouse issues===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
Option "Device" "/dev/input/mice"<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this doesn't solve your problem, make your '''touchpad''' the CorePointer in the "Server Layout" section:<br />
<br />
InputDevice "Touchpad" "CorePointer"<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
InputDevice "USB Mouse" "SendCoreEvents"<br />
<br />
finally add this to your external device's section:<br />
<br />
Option "SendCoreEvents" "true"<br />
<br />
If all of the above doesn't work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
===Touchpad synchronization issues===<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in /var/log/messages.log<br />
<br />
psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
*If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
*Avoid using an ACPI battery monitor.<br />
*Attempt to load psmouse with "proto=imps" option. To do that, add this line to your /etc/modprobe.conf:<br />
<br />
options psmouse proto=imps<br />
<br />
*Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Tapping issues===<br />
<br />
If you are not using [[Xorg input hotplugging]], you should know that Xorg v7.4 does not enable tapping by default. To enable it, add the following line to the touchpad's InputDevice section in <tt>/etc/X11/xorg.conf</tt>:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "TapButton1" "''integer''"<br />
Option "TapButton2" "''integer''"<br />
Option "TapButton3" "''integer''"<br />
...<br />
EndSection<br />
The ''integer'' of option "TapButton1" means which mouse button is reported on a non-corner one-finger tap. Usually it is 1.<br />
The ''integer'' of option "TapButton2" means which mouse button is reported on a non-corner two-finger tap. Usually it is 2.<br />
The ''integer'' of option "TapButton3" means which mouse button is reported on a non-corner three-finger tap. Usually it is 3.<br />
<br />
===Delay between a button tap and the actual click===<br />
<br />
If you experience a delay between the tap on the touchpad and the actual click that is registered you need to enable FastTaps:<br />
<br />
If you're using input hotplugging(default behavior), change your 11-x11-synaptics.fdi(or 99-x11-synaptics.fdi, in some cases) so that it contains:<br />
<br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
If you're using xorg-server with disabled input hotplugging change xorg.conf so that you have:<br />
<br />
Section "InputDevice"<br />
Identifier "Synaptics Touchpad"<br />
Driver "synaptics"<br />
...<br />
Option "FastTaps" "1"<br />
...<br />
EndSection<br />
<br />
===SynPS/2 Synaptics TouchPad can't grab event device, errno=16===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from /var/log/Xorg.0.log, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes /dev/input/mice as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in xorg.conf:<br />
<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
==External Resources==<br />
<br />
Synaptics TouchPad driver: [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/]<br />
<!-- vim: set ft=Wikipedia: --></div>Code mhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=90701Touchpad Synaptics2010-01-02T15:07:01Z<p>Code m: /* Software Toggle */</p>
<hr />
<div>[[Category:Input devices (English)]][[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Touchpad Synaptics}}<br />
{{i18n_entry|German|Touchpad Synaptics (Deutsch)}}<br />
{{i18n_entry|Русский|Тачпад Synaptics}}<br />
{{i18n_entry|简体中文|触摸板 (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
==Installation==<br />
<br />
The Synaptics driver is now bundled as ''xf86-input-synaptics'', and is available in the [[Official_Repositories|[extra] repository]]:<br />
<br />
# pacman -S xf86-input-synaptics<br />
<br />
==Configuration==<br />
<br />
Configuration for the touchpad should done by tweaking options in the XML format *.fdi policy file with latest Xserver installed using [[Xorg input hotplugging|hotplugging]]. Alternatively, configuration can be done using xorg.conf. Please note, however, that this method of configuring is deprecated and might stop working in the future. Configuration by HAL policy is therefore encouraged.<br />
<br />
===Configuration via HAL policy (hotplugging enabled, recommended) ===<br />
<br />
With [[Xorg input hotplugging|hotplugging]] (enabled by default) and HAL installed and running, your Synaptics should works "out-of-the-box".<br />
<br />
If it doesn't or you want to tweak the configuration, you will need to edit the appropriate HAL policy file (XML format).<br />
Note that in this case.<br />
<br />
Copy '''/usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi''' into '''/etc/hal/fdi/policy/'''<br />
cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/<br />
<br />
Now you can modify the new file appending new options.<br />
<br />
Here's a simple template to begin with, covering the more common features:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<!-- <match key="info.product" contains="AlpsPS/2 ALPS GlidePoint"> #ALPS users may need to use this instead of the above --><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.AlwaysCore" type="string">true</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.protocol" type="string">event</merge><br />
<merge key="input.x11_options.touchpadoff" type="string">0</merge><br />
<merge key="input.x11_options.shmconfig" type="string">on</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The syntax is similar to xorg.conf, for instance, <br />
Option "RightEdge" "5300"<br />
equates to this .fdi file line:<br />
<merge key="input.x11_options.RightEdge" type="string">5300</merge><br />
{{Box Note| In the .fdi file, every type must be "string" instead of "float" or "int" as per xorg.conf.}}<br />
{{Box Note| You might need to run '''/etc/rc.d/hal restart''' in order for the changes to take place.}}<br />
<br />
====Advanced policy configuration====<br />
<br />
The Synaptics driver allows for a vast amount of options to be tweaked. Luckily, all of them are consistently named and well documented in Synaptic's manpage.<br />
man synaptics<br />
<br />
The following shall serve as an advanced configuration example for '''11-x11-synaptics.fdi''':<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
<merge key="input.x11_options.MinSpeed" type="string">0.1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">0.4</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.002</merge><br />
<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.VerteScrollDelta" type="string">2</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.CircularScrolling" type="string">true</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">8</merge><br />
<merge key="input.x11_options.CircScrollDelta" type="string">0.1</merge><br />
<br />
<!-- Values here might differ! Use synclient -m 20 to find desired values --><br />
<merge key="input.x11_options.LeftEdge" type="string">2000</merge><br />
<merge key="input.x11_options.TopEdge" type="string">2000</merge><br />
<br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
====Other products====<br />
<br />
* ALPS users may try the following if the above does not work:<br />
<br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with MacBook (1,1 2,1 etc...)<br />
<br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with latest MacBook (5,1)<br />
<br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
{{Box Note| You can find the exact information for your touchpad in /proc/bus/input/devices.}}<br />
<br />
Or, if you find HAL is not loading your settings, try this template (the "append" child is necessary for some setups):<br />
<br />
<pre><br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="SynPS/2 Synaptics TouchPad"><br />
<append key="info.capabilities" type="strlist">input.touchpad</append><br />
</match><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
[...]<br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
<br />
===Configuration via xorg.conf (hotplugging disabled, deprecated) ===<br />
<br />
Edit ''/etc/X11/xorg.conf'' as root and add '''InputDevice "Touchpad" "SendCoreEvents"''' to the ''ServerLayout'':<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
'''''InputDevice "SynapticsTouchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Add '''Load "synaptics"''' to the ''Module'' section:<br />
Section "Module"<br />
...<br />
Load "glx"<br />
Load "freetype"<br />
'''''Load "synaptics"'''''<br />
...<br />
EndSection<br />
<br />
Lastly, add a new ''InputDevice'' section for the touchpad itself:<br />
Section "InputDevice"<br />
Identifier "SynapticsTouchpad"<br />
Driver "synaptics"<br />
Option "AlwaysCore" "true" # send events to CorePointer<br />
#Option "Device" "/dev/input/mice"<br />
Option "Device" "/dev/psaux"<br />
Option "Protocol" "auto-dev"<br />
Option "SHMConfig" "false" # configurable at runtime? security risk<br />
Option "LeftEdge" "1700" # x coord left<br />
Option "RightEdge" "5300" # x coord right<br />
Option "TopEdge" "1700" # y coord top<br />
Option "BottomEdge" "4200" # y coord bottom<br />
Option "FingerLow" "25" # pressure below this level triggers release<br />
Option "FingerHigh" "30" # pressure above this level triggers touch<br />
Option "MaxTapTime" "180" # max time in ms for detecting tap<br />
'''Option "VertEdgeScroll" "true" # enable vertical scroll zone'''<br />
'''Option "HorizEdgeScroll" "true" # enable horizontal scroll zone'''<br />
Option "CornerCoasting" "true" # enable continuous scroll with finger in corner<br />
Option "CoastingSpeed" "0.30" # corner coasting speed<br />
Option "VertScrollDelta" "100" # edge-to-edge scroll distance of the vertical scroll<br />
Option "HorizScrollDelta" "100" # edge-to-edge scroll distance of the horizontal scroll<br />
Option "MinSpeed" "0.10" # speed factor for low pointer movement<br />
Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement<br />
Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection<br />
<br />
The '''bold''' lines are important because users must now explicitly enable the side and bottom scroll zones of the touchpad. If you already had an InputDevice section configured for the old touchpad driver, you'll still need to add these two lines if you wish to use the scroll zones.<br />
<br />
Save, exit and restart X. The touchpad should now have working scroll zones. You can further tweak the ''InputDevice'' settings if desired. See [[#Advanced_Configuration | Advanced Configuration]] for more information.<br />
<br />
Note that Xorg will automatically load the '''evdev''' and '''psmouse''' kernel modules required by Synaptics, however you may also add them explicitly to the MODULES array in the /etc/rc.conf file if desired.<br />
<br />
====ALPS Touchpads====<br />
<br />
For ALPS Touchpads, if the above configuration does not provide the desired results, try the following configuration instead:<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
InputDevice "Touchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "Device" "/dev/input/mouse0"<br />
Option "Protocol" "auto-dev"<br />
Option "LeftEdge" "130"<br />
Option "RightEdge" "840"<br />
Option "TopEdge" "130"<br />
Option "BottomEdge" "640"<br />
Option "FingerLow" "7"<br />
Option "FingerHigh" "8"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "110"<br />
Option "EmulateMidButtonTime" "75"<br />
Option "VertScrollDelta" "20"<br />
Option "HorizScrollDelta" "20"<br />
Option "MinSpeed" "0.25"<br />
Option "MaxSpeed" "0.50"<br />
Option "AccelFactor" "0.010"<br />
Option "EdgeMotionMinSpeed" "200"<br />
Option "EdgeMotionMaxSpeed" "200"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "1"<br />
Option "CircScrollDelta" "0.1"<br />
Option "CircScrollTrigger" "2"<br />
Option "SHMConfig" "on"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
<br />
==Advanced Configuration==<br />
<br />
===Input device options===<br />
<br />
There are a number of arbitrary parameters that can be tweaked for Synaptics touchpads. The following is a brief list of some of these options--see '''man synaptics''' for full details:<br />
<br />
{| class="wikitable" <br />
|-align="left"<br />
!+Option+<br />
!width=400|+Description+<br />
!width=200|+Type+<br />
|-<br />
|'''Device'''<br />
|Input device location. See [[#Troubleshooting | Troubleshooting]] to find your device handler if it isn't /dev/input/mouse0<br />
|String<br />
|-<br />
|'''MinSpeed'''<br />
|Minimum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''MaxSpeed'''<br />
|Maximum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''AccelFactor'''<br />
|Cursor Acceleration Factor<br />
|Decimal(float)<br />
|-<br />
|'''HorizScrollDelta'''<br />
|Horizontal [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''VertScrollDelta'''<br />
|Vertical [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''SHMConfig'''<br />
|height=100|Activation of shared memory(must be enabled for real-time configuration or [Disable touchpad upon external mouse detection| udev-based disabling]<br />
|Boolean<br />
|}<br />
<br />
===Gsynaptics===<br />
<br />
Once the touchpad is configured, users can also install the '''gsynaptics''' package from [community] to provide a GUI-based configuration solution for the device (note that it depends on libgnomeui):<br />
# pacman -S gsynaptics<br />
<br />
'''''Note:''' The '''gsynaptics''' web page [http://gsynaptics.sourceforge.jp/] indicates that it is becoming obsolete and users should consider '''GPointingDeviceSettings''' [http://live.gnome.org/GPointingDeviceSettings], currently available in AUR and as source code.''<br />
<br />
With hotplugging enabled(default), append this the match section of your 99-x11-synaptics.fdi or 11-x11-synaptics.fdi:<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
===Fine-tuning with synclient===<br />
<br />
The synclient monitor can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. In order for synclient to work properly, the '''SHMConfig''' option must be set to '''on''' or '''true'''.<br />
<br />
You can start the Synaptics monitor with the following command:<br />
$ synclient -m 100<br />
Where -m activates the monitor and the following number specifies the update interval in milliseconds.<br />
<br />
This monitor provides information about the current state of your touchpad. For example, if you move the mouse with the touchpad, the x and y values in the monitor will change. Therewith you can easy figure out your touchpad's dimension which is defined in the LeftEdge-, RightEdge-, BottomEdge- and TopEdge-Options.<br />
<br />
The abbreviations for the parameters are as follow:<br />
<br />
{| class="wikitable"<br />
|- align="left"<br />
!width="200"|+Abbreviation+<br />
!width="400|+Description+<br />
|-<br />
|'''time'''<br />
|Time in seconds since the logging was started.<br />
|-<br />
|'''x, y'''<br />
|The x/y coordinates of the finger on the touchpad. The origin is in the upper left corner.<br />
|-<br />
|'''z'''<br />
|The pressure value. It represents the pressure you are using to navigate on your touchpad.<br />
|-<br />
|'''f'''<br />
|Number of fingers currently touching the touchpad.<br />
|-<br />
|'''w'''<br />
|Value that represents the finger width.<br />
|-<br />
|'''l,r,u,d,m,multi'''<br />
|Those values represent the state of the left, right, up, down, middle and multi buttons pressed where zero means not pressed and one means pressed.<br />
|-<br />
|'''gl,gm,gr'''<br />
|For touchpads which have a guest device, this are the associated button states for guest left, guest middle and guest right pressed (1) and not pressed (0).<br />
|-<br />
|'''gdx, gdy'''<br />
|x/y coordinates of the guest device.<br />
|}<br />
If a value constantly is zero, it implies that this option is not supported by your device.<br />
<br />
===Edge scrolling===<br />
<br />
To enable the scroll zones found along the edges of the touchpad, add one or both of the following options to the touchpad device section in /etc/X11/xorg.conf:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "VertEdgeScroll" "true" #vertical scrolling when dragging along the right edge.<br />
Option "HorizEdgeScroll" "true" #horizontal scrolling when dragging along the bottom edge.<br />
...<br />
EndSection<br />
<br />
In ''/etc/hal/fdi/policy/11-x11-synaptics.fdi''(or if that doesn't work, ''/etc/hal/fdi/policy/99-x11-synaptics.fdi) for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
...<br />
</match><br />
<br />
===Two-Finger scrolling===<br />
<br />
Recent Synaptics touchpads support two-finger scrolling. This allows you to use two fingers together anywhere on the touchpad, similar to the behaviour of Macbooks.<br />
<br />
If your hardware supports this feature, you can enable it by inserting the following lines into the touchpad device section of /etc/X11/xorg.conf:<br />
Section "InputDevice"<br />
...<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "EmulateTwoFingerMinZ" "120" # this may vary between different machines<br />
...<br />
EndSection<br />
<br />
''EmulateTwoFingerMinZ'' is only necessary for the ALPS Touchpad, which several Dell machines have. ([http://ubuntuforums.org/showthread.php?t=516798&page=2#19 from Ubuntu forums]) <br />
<br />
'''Firefox users:''' You might find the default behaviour of Firefox pretty annoying relating to the horizontal scrolling. Just see ''Firefox and special touchpad events'' below to find out how to disable it.<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi'''(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
...<br />
</match><br />
<br />
Some users might need to modify the ''EmulateTwoFingerMinW'' parameter, as their touch pads sense two fingers as one wide finger. You can check which parameters you need to modify by running '''synclient -m 150''' -- when you touch two fingers to the touch pad, observe which parameters (z, w, or f) change. Those will determine the minimum threshold values you must set (if f changes, don't bother with ''EmulateTwoFingerMin[W,Z]'' since you do not need to emulate two fingers, your touch pad can simply sense two different fingers).<br />
<br />
===Circular scrolling===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of '''/etc/X11/xorg.conf''':<br />
Section "InputDevice"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi';'(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.CircularScrolling" type="string">on</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">0</merge><br />
...<br />
</match><br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
===Software Toggle===<br />
<br />
You may find it useful to have a software toggle that will turn on or off your touchpad, esplicially if it's extremely sensitive and your doing a lot of typing. Please also see [[#Disable touchpad upon external mouse detection]] and [[#Stopping the mouse from clicking while typing]] as those may be better solutions, again a matter of choice. The advantage here is you have the control, while the other solutions have daemons determine when to turn off the trackpad.<br />
<br />
You will want to grab [[xbindkeys]] if you don't already have key binding software.<br />
<br />
Then save this script to something such as /sbin/trackpad-toggle.sh:<br />
<br />
#!/bin/bash<br />
<br />
if [ `synclient -l | grep TouchpadOff | gawk -F '= ' '{ print $2 }'` -eq 0 ]; then<br />
synclient TouchpadOff=1<br />
else<br />
synclient TouchpadOff=0<br />
fi<br />
<br />
Then finally add a key binding to use the script. It is best to call with xbindkeys like so (file ''~/.xbindkeysrc''):<br />
<br />
"/sbin/trackpad-toggle.sh"<br />
m:0x5 + c:65<br />
Control+Shift + space<br />
<br />
now just (re)start xbindkeys and ctrl+Shift+Space will now toggle your trackpad !<br />
<br />
==Troubleshooting==<br />
<br />
===No scrolling/tapping with Gnome 2.28===<br />
<br />
Gnome 2.28 introduces a few additional features for managing touchpads. This change takes preference over previously configured options in the HAL policy file and thus may surprise some unsuspecting people. To change the Gnome 2.28 touchpad settings, go to ''System->Preferences->Mouse->Touchpad''.<br />
<br />
===Synaptics Special Ability===<br />
<br />
By default, Synaptics touchpads are able to detect the number of fingers on the touchpad; ALPS touchpads are not. If the touchpad is tapped with two fingers, it will emulate a middle click. If the touchpad is typed with three fingers, a right click will be emulated.<br />
<br />
===Disable touchpad upon external mouse detection===<br />
<br />
In assistance to [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, add the following udev rule to '''/etc/udev/rules.d/01-touchpad.rules''':<br />
ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=1"<br />
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=0"<br />
<br />
SHMConfig must be enabled (see the '''Configuration''' section for details)<br />
<br />
===Cursor Jump===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
===Multitouch===<br />
<br />
Multitouch gesture like in Mac OS X will be in future version of the driver.<br />
<br />
===Touchpad device isn't located at /dev/input/mouse0===<br />
<br />
If that's the case, you can use this command to display information about your input devices:<br />
cat /proc/bus/input/devices<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
<br />
In this case, the Handlers are mouse0 and event1, so /dev/input/mouse0 would be used.<br />
<br />
===Stopping the mouse from clicking while typing===<br />
<br />
To have the touchpad disabled automatically when you begin typing, add the following line to your .xinitrc before you run your window manager:<br />
syndaemon -i 2 &<br />
<br />
The '''-i 2''' switch sets the idle time to 2 seconds. The idle time specifies how many seconds to wait after the last key-press before enabling the touchpad again.<br />
<br />
Additionally you can add the '''-t''' switch that tells the daemon not to disable mouse movement when typing and only disable tapping and scrolling:<br />
syndaemon -t -i 2 &<br />
<br />
As usual you may find further information in the manpage:<br />
$ man syndaemon<br />
<br />
Note: Don't forget to enable SHMConfig in your xorg-setup, either in /etc/xorg.conf (hotplugging disabled) or in /etc/hal/fdi/policy/11-x11-synaptics.fdi (hotplugging enabled). Some users may need to specify touchpad preferences in /etc/hal/fdi/policy/99-x11-synaptics.fdi, instead.<br />
<br />
Note: If you're using GDM as your login manager and Gnome, GDM will ignore commands added to .xinitrc, other than the command to start Gnome. To start syndaemon you need to use Gnome's Startup Applications Preferences program. Login to Gnome and go to System > Preferences > Startup Applications. In the Startup Programs tab click the Add button. Name the Startup Program whatever you like and input any comments you like (or leave this field blank). In the command field add:<br />
syndaemon -i 2 -d<br />
<br />
The "-d" option is necessary to start syndaemon as a background process, instead of the "&" which does this in .xinitrc. You can add other options as well, the same way you would in .xinitrc. When you're done click the Add button in the Add Startup Program dialogue. Make sure the check box next to the startup program you've created is checked, in the list of additional startup programs. Close the Startup Applications Preferences window and you're done.<br />
<br />
===Firefox and special touchpad events===<br />
<br />
By default, Firefox is set up to do special events upon tapping or scrolling certain parts of your touchpad.<br />
You can edit the settings of those actions by typing '''about:config''' in your Firefox address bar.<br />
To alter these options, double-click on the line in question, changing "true" to "false" and vise versa.<br />
<br />
To prevent Firefox from scrolling (backward/forward) through browser history and instead scroll through pages, edit these settings as shown:<br />
mousewheel.horizscroll.withnokey.action = 1<br />
mousewheel.horizscroll.withnokey.sysnumlines = true<br />
<br />
To prevent Firefox from redirecting you to URLs formed from your clipboard content upon tapping the upper-right corner of your touchpad (or middle mouse button), set the following option to "false":<br />
middlemouse.contentLoadURL = false<br />
<br />
===Opera: horizontal scrolling issues===<br />
<br />
Same as above.<br />
To fix it, go to Tools -> Preferences -> Advanced -> Shortcuts. There you edit the mouse preferences: Delete the entries with "Button 5" and "Button 6".<br />
<br />
===Scrolling and multiple actions with Synaptics on LG Laptops===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in xorg.conf:<br />
Option "UpDownScrolling" "0"<br />
<br />
NOTE that this will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git] .<br />
<br />
There is also a package build file in the AUR to automate this: [http://aur.archlinux.org/packages.php?ID=15983].<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
cd synaptics-git<br />
makepkg<br />
<br />
If you want it to be automatically installed after being built, just add '-i' after makepkg.<br />
<br />
===Other external mouse issues===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
Option "Device" "/dev/input/mice"<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this doesn't solve your problem, make your '''touchpad''' the CorePointer in the "Server Layout" section:<br />
<br />
InputDevice "Touchpad" "CorePointer"<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
InputDevice "USB Mouse" "SendCoreEvents"<br />
<br />
finally add this to your external device's section:<br />
<br />
Option "SendCoreEvents" "true"<br />
<br />
If all of the above doesn't work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
===Touchpad synchronization issues===<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in /var/log/messages.log<br />
<br />
psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
*If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
*Avoid using an ACPI battery monitor.<br />
*Attempt to load psmouse with "proto=imps" option. To do that, add this line to your /etc/modprobe.conf:<br />
<br />
options psmouse proto=imps<br />
<br />
*Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Tapping issues===<br />
<br />
If you are not using [[Xorg input hotplugging]], you should know that Xorg v7.4 does not enable tapping by default. To enable it, add the following line to the touchpad's InputDevice section in <tt>/etc/X11/xorg.conf</tt>:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "TapButton1" "''integer''"<br />
Option "TapButton2" "''integer''"<br />
Option "TapButton3" "''integer''"<br />
...<br />
EndSection<br />
The ''integer'' of option "TapButton1" means which mouse button is reported on a non-corner one-finger tap. Usually it is 1.<br />
The ''integer'' of option "TapButton2" means which mouse button is reported on a non-corner two-finger tap. Usually it is 2.<br />
The ''integer'' of option "TapButton3" means which mouse button is reported on a non-corner three-finger tap. Usually it is 3.<br />
<br />
===Delay between a button tap and the actual click===<br />
<br />
If you experience a delay between the tap on the touchpad and the actual click that is registered you need to enable FastTaps:<br />
<br />
If you're using input hotplugging(default behavior), change your 11-x11-synaptics.fdi(or 99-x11-synaptics.fdi, in some cases) so that it contains:<br />
<br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
If you're using xorg-server with disabled input hotplugging change xorg.conf so that you have:<br />
<br />
Section "InputDevice"<br />
Identifier "Synaptics Touchpad"<br />
Driver "synaptics"<br />
...<br />
Option "FastTaps" "1"<br />
...<br />
EndSection<br />
<br />
===SynPS/2 Synaptics TouchPad can't grab event device, errno=16===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from /var/log/Xorg.0.log, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes /dev/input/mice as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in xorg.conf:<br />
<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
==External Resources==<br />
<br />
Synaptics TouchPad driver: [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/]<br />
<!-- vim: set ft=Wikipedia: --></div>Code mhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=90700Touchpad Synaptics2010-01-02T15:06:31Z<p>Code m: /* Software Toggle */</p>
<hr />
<div>[[Category:Input devices (English)]][[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Touchpad Synaptics}}<br />
{{i18n_entry|German|Touchpad Synaptics (Deutsch)}}<br />
{{i18n_entry|Русский|Тачпад Synaptics}}<br />
{{i18n_entry|简体中文|触摸板 (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
==Installation==<br />
<br />
The Synaptics driver is now bundled as ''xf86-input-synaptics'', and is available in the [[Official_Repositories|[extra] repository]]:<br />
<br />
# pacman -S xf86-input-synaptics<br />
<br />
==Configuration==<br />
<br />
Configuration for the touchpad should done by tweaking options in the XML format *.fdi policy file with latest Xserver installed using [[Xorg input hotplugging|hotplugging]]. Alternatively, configuration can be done using xorg.conf. Please note, however, that this method of configuring is deprecated and might stop working in the future. Configuration by HAL policy is therefore encouraged.<br />
<br />
===Configuration via HAL policy (hotplugging enabled, recommended) ===<br />
<br />
With [[Xorg input hotplugging|hotplugging]] (enabled by default) and HAL installed and running, your Synaptics should works "out-of-the-box".<br />
<br />
If it doesn't or you want to tweak the configuration, you will need to edit the appropriate HAL policy file (XML format).<br />
Note that in this case.<br />
<br />
Copy '''/usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi''' into '''/etc/hal/fdi/policy/'''<br />
cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/<br />
<br />
Now you can modify the new file appending new options.<br />
<br />
Here's a simple template to begin with, covering the more common features:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<!-- <match key="info.product" contains="AlpsPS/2 ALPS GlidePoint"> #ALPS users may need to use this instead of the above --><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.AlwaysCore" type="string">true</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.protocol" type="string">event</merge><br />
<merge key="input.x11_options.touchpadoff" type="string">0</merge><br />
<merge key="input.x11_options.shmconfig" type="string">on</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The syntax is similar to xorg.conf, for instance, <br />
Option "RightEdge" "5300"<br />
equates to this .fdi file line:<br />
<merge key="input.x11_options.RightEdge" type="string">5300</merge><br />
{{Box Note| In the .fdi file, every type must be "string" instead of "float" or "int" as per xorg.conf.}}<br />
{{Box Note| You might need to run '''/etc/rc.d/hal restart''' in order for the changes to take place.}}<br />
<br />
====Advanced policy configuration====<br />
<br />
The Synaptics driver allows for a vast amount of options to be tweaked. Luckily, all of them are consistently named and well documented in Synaptic's manpage.<br />
man synaptics<br />
<br />
The following shall serve as an advanced configuration example for '''11-x11-synaptics.fdi''':<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
<merge key="input.x11_options.MinSpeed" type="string">0.1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">0.4</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.002</merge><br />
<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.VerteScrollDelta" type="string">2</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.CircularScrolling" type="string">true</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">8</merge><br />
<merge key="input.x11_options.CircScrollDelta" type="string">0.1</merge><br />
<br />
<!-- Values here might differ! Use synclient -m 20 to find desired values --><br />
<merge key="input.x11_options.LeftEdge" type="string">2000</merge><br />
<merge key="input.x11_options.TopEdge" type="string">2000</merge><br />
<br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
====Other products====<br />
<br />
* ALPS users may try the following if the above does not work:<br />
<br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with MacBook (1,1 2,1 etc...)<br />
<br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with latest MacBook (5,1)<br />
<br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
{{Box Note| You can find the exact information for your touchpad in /proc/bus/input/devices.}}<br />
<br />
Or, if you find HAL is not loading your settings, try this template (the "append" child is necessary for some setups):<br />
<br />
<pre><br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="SynPS/2 Synaptics TouchPad"><br />
<append key="info.capabilities" type="strlist">input.touchpad</append><br />
</match><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
[...]<br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
<br />
===Configuration via xorg.conf (hotplugging disabled, deprecated) ===<br />
<br />
Edit ''/etc/X11/xorg.conf'' as root and add '''InputDevice "Touchpad" "SendCoreEvents"''' to the ''ServerLayout'':<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
'''''InputDevice "SynapticsTouchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Add '''Load "synaptics"''' to the ''Module'' section:<br />
Section "Module"<br />
...<br />
Load "glx"<br />
Load "freetype"<br />
'''''Load "synaptics"'''''<br />
...<br />
EndSection<br />
<br />
Lastly, add a new ''InputDevice'' section for the touchpad itself:<br />
Section "InputDevice"<br />
Identifier "SynapticsTouchpad"<br />
Driver "synaptics"<br />
Option "AlwaysCore" "true" # send events to CorePointer<br />
#Option "Device" "/dev/input/mice"<br />
Option "Device" "/dev/psaux"<br />
Option "Protocol" "auto-dev"<br />
Option "SHMConfig" "false" # configurable at runtime? security risk<br />
Option "LeftEdge" "1700" # x coord left<br />
Option "RightEdge" "5300" # x coord right<br />
Option "TopEdge" "1700" # y coord top<br />
Option "BottomEdge" "4200" # y coord bottom<br />
Option "FingerLow" "25" # pressure below this level triggers release<br />
Option "FingerHigh" "30" # pressure above this level triggers touch<br />
Option "MaxTapTime" "180" # max time in ms for detecting tap<br />
'''Option "VertEdgeScroll" "true" # enable vertical scroll zone'''<br />
'''Option "HorizEdgeScroll" "true" # enable horizontal scroll zone'''<br />
Option "CornerCoasting" "true" # enable continuous scroll with finger in corner<br />
Option "CoastingSpeed" "0.30" # corner coasting speed<br />
Option "VertScrollDelta" "100" # edge-to-edge scroll distance of the vertical scroll<br />
Option "HorizScrollDelta" "100" # edge-to-edge scroll distance of the horizontal scroll<br />
Option "MinSpeed" "0.10" # speed factor for low pointer movement<br />
Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement<br />
Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection<br />
<br />
The '''bold''' lines are important because users must now explicitly enable the side and bottom scroll zones of the touchpad. If you already had an InputDevice section configured for the old touchpad driver, you'll still need to add these two lines if you wish to use the scroll zones.<br />
<br />
Save, exit and restart X. The touchpad should now have working scroll zones. You can further tweak the ''InputDevice'' settings if desired. See [[#Advanced_Configuration | Advanced Configuration]] for more information.<br />
<br />
Note that Xorg will automatically load the '''evdev''' and '''psmouse''' kernel modules required by Synaptics, however you may also add them explicitly to the MODULES array in the /etc/rc.conf file if desired.<br />
<br />
====ALPS Touchpads====<br />
<br />
For ALPS Touchpads, if the above configuration does not provide the desired results, try the following configuration instead:<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
InputDevice "Touchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "Device" "/dev/input/mouse0"<br />
Option "Protocol" "auto-dev"<br />
Option "LeftEdge" "130"<br />
Option "RightEdge" "840"<br />
Option "TopEdge" "130"<br />
Option "BottomEdge" "640"<br />
Option "FingerLow" "7"<br />
Option "FingerHigh" "8"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "110"<br />
Option "EmulateMidButtonTime" "75"<br />
Option "VertScrollDelta" "20"<br />
Option "HorizScrollDelta" "20"<br />
Option "MinSpeed" "0.25"<br />
Option "MaxSpeed" "0.50"<br />
Option "AccelFactor" "0.010"<br />
Option "EdgeMotionMinSpeed" "200"<br />
Option "EdgeMotionMaxSpeed" "200"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "1"<br />
Option "CircScrollDelta" "0.1"<br />
Option "CircScrollTrigger" "2"<br />
Option "SHMConfig" "on"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
<br />
==Advanced Configuration==<br />
<br />
===Input device options===<br />
<br />
There are a number of arbitrary parameters that can be tweaked for Synaptics touchpads. The following is a brief list of some of these options--see '''man synaptics''' for full details:<br />
<br />
{| class="wikitable" <br />
|-align="left"<br />
!+Option+<br />
!width=400|+Description+<br />
!width=200|+Type+<br />
|-<br />
|'''Device'''<br />
|Input device location. See [[#Troubleshooting | Troubleshooting]] to find your device handler if it isn't /dev/input/mouse0<br />
|String<br />
|-<br />
|'''MinSpeed'''<br />
|Minimum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''MaxSpeed'''<br />
|Maximum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''AccelFactor'''<br />
|Cursor Acceleration Factor<br />
|Decimal(float)<br />
|-<br />
|'''HorizScrollDelta'''<br />
|Horizontal [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''VertScrollDelta'''<br />
|Vertical [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''SHMConfig'''<br />
|height=100|Activation of shared memory(must be enabled for real-time configuration or [Disable touchpad upon external mouse detection| udev-based disabling]<br />
|Boolean<br />
|}<br />
<br />
===Gsynaptics===<br />
<br />
Once the touchpad is configured, users can also install the '''gsynaptics''' package from [community] to provide a GUI-based configuration solution for the device (note that it depends on libgnomeui):<br />
# pacman -S gsynaptics<br />
<br />
'''''Note:''' The '''gsynaptics''' web page [http://gsynaptics.sourceforge.jp/] indicates that it is becoming obsolete and users should consider '''GPointingDeviceSettings''' [http://live.gnome.org/GPointingDeviceSettings], currently available in AUR and as source code.''<br />
<br />
With hotplugging enabled(default), append this the match section of your 99-x11-synaptics.fdi or 11-x11-synaptics.fdi:<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
===Fine-tuning with synclient===<br />
<br />
The synclient monitor can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. In order for synclient to work properly, the '''SHMConfig''' option must be set to '''on''' or '''true'''.<br />
<br />
You can start the Synaptics monitor with the following command:<br />
$ synclient -m 100<br />
Where -m activates the monitor and the following number specifies the update interval in milliseconds.<br />
<br />
This monitor provides information about the current state of your touchpad. For example, if you move the mouse with the touchpad, the x and y values in the monitor will change. Therewith you can easy figure out your touchpad's dimension which is defined in the LeftEdge-, RightEdge-, BottomEdge- and TopEdge-Options.<br />
<br />
The abbreviations for the parameters are as follow:<br />
<br />
{| class="wikitable"<br />
|- align="left"<br />
!width="200"|+Abbreviation+<br />
!width="400|+Description+<br />
|-<br />
|'''time'''<br />
|Time in seconds since the logging was started.<br />
|-<br />
|'''x, y'''<br />
|The x/y coordinates of the finger on the touchpad. The origin is in the upper left corner.<br />
|-<br />
|'''z'''<br />
|The pressure value. It represents the pressure you are using to navigate on your touchpad.<br />
|-<br />
|'''f'''<br />
|Number of fingers currently touching the touchpad.<br />
|-<br />
|'''w'''<br />
|Value that represents the finger width.<br />
|-<br />
|'''l,r,u,d,m,multi'''<br />
|Those values represent the state of the left, right, up, down, middle and multi buttons pressed where zero means not pressed and one means pressed.<br />
|-<br />
|'''gl,gm,gr'''<br />
|For touchpads which have a guest device, this are the associated button states for guest left, guest middle and guest right pressed (1) and not pressed (0).<br />
|-<br />
|'''gdx, gdy'''<br />
|x/y coordinates of the guest device.<br />
|}<br />
If a value constantly is zero, it implies that this option is not supported by your device.<br />
<br />
===Edge scrolling===<br />
<br />
To enable the scroll zones found along the edges of the touchpad, add one or both of the following options to the touchpad device section in /etc/X11/xorg.conf:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "VertEdgeScroll" "true" #vertical scrolling when dragging along the right edge.<br />
Option "HorizEdgeScroll" "true" #horizontal scrolling when dragging along the bottom edge.<br />
...<br />
EndSection<br />
<br />
In ''/etc/hal/fdi/policy/11-x11-synaptics.fdi''(or if that doesn't work, ''/etc/hal/fdi/policy/99-x11-synaptics.fdi) for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
...<br />
</match><br />
<br />
===Two-Finger scrolling===<br />
<br />
Recent Synaptics touchpads support two-finger scrolling. This allows you to use two fingers together anywhere on the touchpad, similar to the behaviour of Macbooks.<br />
<br />
If your hardware supports this feature, you can enable it by inserting the following lines into the touchpad device section of /etc/X11/xorg.conf:<br />
Section "InputDevice"<br />
...<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "EmulateTwoFingerMinZ" "120" # this may vary between different machines<br />
...<br />
EndSection<br />
<br />
''EmulateTwoFingerMinZ'' is only necessary for the ALPS Touchpad, which several Dell machines have. ([http://ubuntuforums.org/showthread.php?t=516798&page=2#19 from Ubuntu forums]) <br />
<br />
'''Firefox users:''' You might find the default behaviour of Firefox pretty annoying relating to the horizontal scrolling. Just see ''Firefox and special touchpad events'' below to find out how to disable it.<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi'''(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
...<br />
</match><br />
<br />
Some users might need to modify the ''EmulateTwoFingerMinW'' parameter, as their touch pads sense two fingers as one wide finger. You can check which parameters you need to modify by running '''synclient -m 150''' -- when you touch two fingers to the touch pad, observe which parameters (z, w, or f) change. Those will determine the minimum threshold values you must set (if f changes, don't bother with ''EmulateTwoFingerMin[W,Z]'' since you do not need to emulate two fingers, your touch pad can simply sense two different fingers).<br />
<br />
===Circular scrolling===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of '''/etc/X11/xorg.conf''':<br />
Section "InputDevice"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi';'(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.CircularScrolling" type="string">on</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">0</merge><br />
...<br />
</match><br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
===Software Toggle===<br />
<br />
You may find it useful to have a software toggle that will turn on or off your touchpad, esplicially if it's extremely sensitive and your doing a lot of typing. Please also see [[#Disable touchpad upon external mouse detection]] and [[#Stopping the mouse from clicking while typing]] as those may be better solutions, again a matter of choice. The advantage here is you have the control, while the other solutions have daemons determine when to turn off the trackpad.<br />
<br />
You will want to grab [[xbindkeys]] if you don't already have key binding software.<br />
<br />
Then save this script to something such as /sbin/trackpad-toggle.sh:<br />
<br />
#!/bin/bash<br />
<br />
if [ `synclient -l | grep TouchpadOff | gawk -F '= ' '{ print $2 }'` -eq 0 ]; then<br />
synclient TouchpadOff=1<br />
else<br />
synclient TouchpadOff=0<br />
fi<br />
<br />
Then finally add a key binding to use the script. It is best to call with xbindkeys like so (file ''~/.xbindkeysrc''):<br />
<br />
"/sbin/trackpad-toggle.sh"<br />
m:0x5 + c:65<br />
Control+Shift + space<br />
<br />
now just (re)start xbindkeys and ctrl+Shift+Space will now toggle your trackpad !<br />
<br />
==Troubleshooting==<br />
<br />
===No scrolling/tapping with Gnome 2.28===<br />
<br />
Gnome 2.28 introduces a few additional features for managing touchpads. This change takes preference over previously configured options in the HAL policy file and thus may surprise some unsuspecting people. To change the Gnome 2.28 touchpad settings, go to ''System->Preferences->Mouse->Touchpad''.<br />
<br />
===Synaptics Special Ability===<br />
<br />
By default, Synaptics touchpads are able to detect the number of fingers on the touchpad; ALPS touchpads are not. If the touchpad is tapped with two fingers, it will emulate a middle click. If the touchpad is typed with three fingers, a right click will be emulated.<br />
<br />
===Disable touchpad upon external mouse detection===<br />
<br />
In assistance to [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, add the following udev rule to '''/etc/udev/rules.d/01-touchpad.rules''':<br />
ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=1"<br />
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=0"<br />
<br />
SHMConfig must be enabled (see the '''Configuration''' section for details)<br />
<br />
===Cursor Jump===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
===Multitouch===<br />
<br />
Multitouch gesture like in Mac OS X will be in future version of the driver.<br />
<br />
===Touchpad device isn't located at /dev/input/mouse0===<br />
<br />
If that's the case, you can use this command to display information about your input devices:<br />
cat /proc/bus/input/devices<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
<br />
In this case, the Handlers are mouse0 and event1, so /dev/input/mouse0 would be used.<br />
<br />
===Stopping the mouse from clicking while typing===<br />
<br />
To have the touchpad disabled automatically when you begin typing, add the following line to your .xinitrc before you run your window manager:<br />
syndaemon -i 2 &<br />
<br />
The '''-i 2''' switch sets the idle time to 2 seconds. The idle time specifies how many seconds to wait after the last key-press before enabling the touchpad again.<br />
<br />
Additionally you can add the '''-t''' switch that tells the daemon not to disable mouse movement when typing and only disable tapping and scrolling:<br />
syndaemon -t -i 2 &<br />
<br />
As usual you may find further information in the manpage:<br />
$ man syndaemon<br />
<br />
Note: Don't forget to enable SHMConfig in your xorg-setup, either in /etc/xorg.conf (hotplugging disabled) or in /etc/hal/fdi/policy/11-x11-synaptics.fdi (hotplugging enabled). Some users may need to specify touchpad preferences in /etc/hal/fdi/policy/99-x11-synaptics.fdi, instead.<br />
<br />
Note: If you're using GDM as your login manager and Gnome, GDM will ignore commands added to .xinitrc, other than the command to start Gnome. To start syndaemon you need to use Gnome's Startup Applications Preferences program. Login to Gnome and go to System > Preferences > Startup Applications. In the Startup Programs tab click the Add button. Name the Startup Program whatever you like and input any comments you like (or leave this field blank). In the command field add:<br />
syndaemon -i 2 -d<br />
<br />
The "-d" option is necessary to start syndaemon as a background process, instead of the "&" which does this in .xinitrc. You can add other options as well, the same way you would in .xinitrc. When you're done click the Add button in the Add Startup Program dialogue. Make sure the check box next to the startup program you've created is checked, in the list of additional startup programs. Close the Startup Applications Preferences window and you're done.<br />
<br />
===Firefox and special touchpad events===<br />
<br />
By default, Firefox is set up to do special events upon tapping or scrolling certain parts of your touchpad.<br />
You can edit the settings of those actions by typing '''about:config''' in your Firefox address bar.<br />
To alter these options, double-click on the line in question, changing "true" to "false" and vise versa.<br />
<br />
To prevent Firefox from scrolling (backward/forward) through browser history and instead scroll through pages, edit these settings as shown:<br />
mousewheel.horizscroll.withnokey.action = 1<br />
mousewheel.horizscroll.withnokey.sysnumlines = true<br />
<br />
To prevent Firefox from redirecting you to URLs formed from your clipboard content upon tapping the upper-right corner of your touchpad (or middle mouse button), set the following option to "false":<br />
middlemouse.contentLoadURL = false<br />
<br />
===Opera: horizontal scrolling issues===<br />
<br />
Same as above.<br />
To fix it, go to Tools -> Preferences -> Advanced -> Shortcuts. There you edit the mouse preferences: Delete the entries with "Button 5" and "Button 6".<br />
<br />
===Scrolling and multiple actions with Synaptics on LG Laptops===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in xorg.conf:<br />
Option "UpDownScrolling" "0"<br />
<br />
NOTE that this will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git] .<br />
<br />
There is also a package build file in the AUR to automate this: [http://aur.archlinux.org/packages.php?ID=15983].<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
cd synaptics-git<br />
makepkg<br />
<br />
If you want it to be automatically installed after being built, just add '-i' after makepkg.<br />
<br />
===Other external mouse issues===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
Option "Device" "/dev/input/mice"<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this doesn't solve your problem, make your '''touchpad''' the CorePointer in the "Server Layout" section:<br />
<br />
InputDevice "Touchpad" "CorePointer"<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
InputDevice "USB Mouse" "SendCoreEvents"<br />
<br />
finally add this to your external device's section:<br />
<br />
Option "SendCoreEvents" "true"<br />
<br />
If all of the above doesn't work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
===Touchpad synchronization issues===<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in /var/log/messages.log<br />
<br />
psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
*If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
*Avoid using an ACPI battery monitor.<br />
*Attempt to load psmouse with "proto=imps" option. To do that, add this line to your /etc/modprobe.conf:<br />
<br />
options psmouse proto=imps<br />
<br />
*Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Tapping issues===<br />
<br />
If you are not using [[Xorg input hotplugging]], you should know that Xorg v7.4 does not enable tapping by default. To enable it, add the following line to the touchpad's InputDevice section in <tt>/etc/X11/xorg.conf</tt>:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "TapButton1" "''integer''"<br />
Option "TapButton2" "''integer''"<br />
Option "TapButton3" "''integer''"<br />
...<br />
EndSection<br />
The ''integer'' of option "TapButton1" means which mouse button is reported on a non-corner one-finger tap. Usually it is 1.<br />
The ''integer'' of option "TapButton2" means which mouse button is reported on a non-corner two-finger tap. Usually it is 2.<br />
The ''integer'' of option "TapButton3" means which mouse button is reported on a non-corner three-finger tap. Usually it is 3.<br />
<br />
===Delay between a button tap and the actual click===<br />
<br />
If you experience a delay between the tap on the touchpad and the actual click that is registered you need to enable FastTaps:<br />
<br />
If you're using input hotplugging(default behavior), change your 11-x11-synaptics.fdi(or 99-x11-synaptics.fdi, in some cases) so that it contains:<br />
<br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
If you're using xorg-server with disabled input hotplugging change xorg.conf so that you have:<br />
<br />
Section "InputDevice"<br />
Identifier "Synaptics Touchpad"<br />
Driver "synaptics"<br />
...<br />
Option "FastTaps" "1"<br />
...<br />
EndSection<br />
<br />
===SynPS/2 Synaptics TouchPad can't grab event device, errno=16===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from /var/log/Xorg.0.log, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes /dev/input/mice as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in xorg.conf:<br />
<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
==External Resources==<br />
<br />
Synaptics TouchPad driver: [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/]<br />
<!-- vim: set ft=Wikipedia: --></div>Code mhttps://wiki.archlinux.org/index.php?title=Mirrors&diff=87518Mirrors2009-12-12T19:53:03Z<p>Code m: /* Sort your mirrors by their speed */</p>
<hr />
<div>[[Category: About Arch (English)]]<br />
[[Category:Package management (English)]]<br />
[[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|:Mirrors}}<br />
{{i18n_entry|简体中文|:Arch镜像 (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
== Enabling your favorite mirror ==<br />
<br />
The default pacman configuration ({{Filename|/etc/pacman.conf}}) for ''core'' looks like this:<br />
<br />
[core]<br />
Include = /etc/pacman.d/mirrorlist<br />
<br />
If you want to use the HostEurope mirror as your default mirror, just add it before the <tt>Include</tt> line:<br />
<br />
[core]<br />
Server = <nowiki>ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org/core/os/i686</nowiki><br />
Include = /etc/pacman.d/mirrorlist<br />
<br />
{{Note| The release of pacman 3.1 introduced the {{Filename|/etc/pacman.d/mirrorlist}} with the variable $repo, no need to maintain separate list for each repository.}}<br />
<br />
Pacman will now try to connect to this mirror first. You can do the same for ''testing'', ''extra'', and ''community'''.<br />
<br />
{{Warning| Use the same mirror for all repositories. Otherwise packages may get installed that are incompatible to each other (like kernel26 from ''core'' and another (older) kernel module from ''extra'').}}<br />
<br />
== Mirror list ==<br />
<br />
This is a list of all known Arch Linux mirrors, that's more up to date than the [http://www.archlinux.org/download/ official download page] or the [http://repos.archlinux.org/viewvc.cgi/pacman-mirrorlist/trunk/ files in {{Filename|/etc/pacman.d/}}. If you know of a mirror that is not listed, please add it. Mirrors which are no longer updated or have been unavailable for a long time can be deleted.<br />
<br />
==Mirror status==<br />
<br />
You can check the status of the Arch mirrors and how up to date they are, by visiting: http://users.archlinux.de/~gerbra/mirrorcheck.html and/or http://www.archlinux.de/?page=MirrorStatus<br />
<br />
Or<br />
<br />
Check just how up-to-date your chosen mirror is by:<br />
# pick a server and browse to "extra/os/"<br />
# load http://www.archlinux.org/ in another tab or window<br />
# compare the last-modified date of the "i686" directory on the mirror to the "Extra" date on the homepage, in the "Package Repositories" box to the right.<br />
<br />
{{Note| Many sites also provide http service, but keep in mind that pacman relies on ftp to determine if a repository got updated. With http it fetches the repository database each time you run 'pacman -Sy', even if it didn't change since the last run.}}<br />
<br />
== Sort your mirrors by their speed ==<br />
Don't forget to take full advantage of using the fastest mirror for ''you'' which you can determine via the included python script /usr/bin/rankmirrors. First, use pacman to install python if you haven't already done so:<br />
# pacman -S python <br />
'''cd''' to the /etc/pacman.d/ directory:<br />
# cd /etc/pacman.d<br />
Backup your existing {{Filename|/etc/pacman.d/mirrorlist}}:<br />
# cp mirrorlist mirrorlist.backup<br />
Edit mirrorlist.backup and uncomment mirrors you want to test with rankmirrors.<br />
<br />
If your lazy and just want to uncomment everything, run the following in python:<br />
<br />
import sys, os<br />
<br />
file = "/home/user/locationOfFile"<br />
with open(file, "r") as fin:<br />
with open(file + ".tmp", "w") as fout:<br />
for line in fin:<br />
if line.startswith("#S"):<br />
fout.write(line[1:])<br />
elif line.startswith("S"):<br />
fout.write("#" + line)<br />
else:<br />
fout.write(line)<br />
os.remove(fin.name)<br />
os.rename(fout.name, fin.name)<br />
<br />
Run the script against the mirrorlist.backup with the -n switch and redirect output to a new {{Filename|/etc/pacman.d/mirrorlist}} file:<br />
# rankmirrors -n 6 mirrorlist.backup > mirrorlist<br />
'''-n 6''': rank the 6 fastest mirrors<br />
<br />
'''Force pacman to refresh the package lists'''<br />
<br />
After creating/editing your {{Filename|/etc/pacman.d/mirrorlist}}, (manually or by using /usr/bin/rankmirrors) issue the following command:<br />
# pacman -Syy<br />
{{Tip| Passing two --refresh or -y flags forces pacman to refresh all package lists even if they are considered to be up to date. Issuing pacman -Syy ''whenever a mirror is changed'', is good practice and will avoid possible headaches.}}<br />
<br />
===Combining Sort your mirrors by their speed with Mirror status===<br />
It is not a good idea to just use the fastest mirror(s), since the fastest mirror(s) might be out of date. The preferred way would be, to use [[Mirrors#Sort your mirrors by their speed]]. Then sorting those 6 fastest mirrors, by their [[Mirror#Mirror status]]. <br />
<br />
Simply visit either one or both [[Mirrors#Mirror status]] links and sort them by the ones that are more up to date. Move the more up to date mirror(s) to the top of {{Filename|/etc/pacman.d/mirrorlist}} and if the mirror(s) are way out of date simply don't use those; repeat the process leaving out the outdated mirror(s). So you end up with a total of 6 mirrors that are sorted by speed and status, leaving out outdated mirrors. <br />
<br />
When having mirror issues the above should be repeated. Or repeat once in a while even if you don't have mirror issues, too keep {{Filename|/etc/pacman.d/mirrorlist}} up to date.<br />
<br />
== Official mirrors ==<br />
'''Attention: Do not add new mirrors to the list below. If you want your mirror to be added to official list - file a feature request. In the meantime add it to the "Unofficial mirrors" list at the end of this page.'''<br />
<br />
=== Australia ===<br />
*ftp://mirror.pacific.net.au/linux/archlinux/ <sub>[http://mirror.pacific.net.au/linux/archlinux/ http]</sub> <sub>[rsync://mirror.pacific.net.au/linux/archlinux/]</sub><br />
*ftp://mirror.aarnet.edu.au/pub/archlinux/ <sub>[http://mirror.aarnet.edu.au/pub/archlinux/ http]</sub> <sub>[rsync://mirror.aarnet.au/pub/archlinux/]</sub><br />
*ftp://ftp.iinet.net.au/pub/archlinux/ <sub>[http://ftp.iinet.net.au/pub/archlinux/ http]</sub> <sub>[rsync://ftp.iinet.net.au/archlinux/]</sub><br />
*http://mirror.internode.on.net/pub/archlinux/ <sub>[rsync://mirror.internode.on.net/pub/archlinux/]</sub><br />
<br />
=== Austria ===<br />
*ftp://gd.tuwien.ac.at/opsys/linux/archlinux/ <sub>[http://gd.tuwien.ac.at/opsys/linux/archlinux/ http]</sub><br />
<br />
=== Belgium ===<br />
*ftp://ftp.belnet.be/mirror/archlinux.org/ <sub>[http://ftp.belnet.be/mirror/archlinux.org/ http]</sub><br />
*ftp://archlinux.mirror.kangaroot.net/pub/archlinux/ <sub>[http://archlinux.mirror.kangaroot.net/ http]</sub> <sub>[rsync://archlinux.mirror.kangaroot.net::archlinux]</sub><br />
=== Brazil ===<br />
*ftp://archlinux.c3sl.ufpr.br/archlinux/ <sub>[http://archlinux.c3sl.ufpr.br/ http]</sub> <sub>[rsync://archlinux.c3sl.ufpr.br/archlinux rsync]</sub><br />
*ftp://ftp.las.ic.unicamp.br/pub/archlinux <sub>[http://www.las.ic.unicamp.br/pub/archlinux http]</sub> <sub>[rsync://rsync.las.ic.unicamp.br/pub/archlinux rsync]</sub><br />
*http://pet.inf.ufsc.br/mirrors/archlinux/<br />
<br />
=== Canada ===<br />
*http://mirror.twilightlair.net/arch/ <sub>[rsync://mirror.twilightlair.net/arch/ rsync]</sub><br />
*ftp://mirror.csclub.uwaterloo.ca/archlinux/ <sub>[http://mirror.csclub.uwaterloo.ca/archlinux/ http]</sub> <sub>[rsync://mirror.csclub.uwaterloo.ca/archlinux/ rsync]</sub><br />
*ftp://mirrors.portafixe.com/archlinux/ <sub>[http://mirrors.portafixe.com/archlinux/ http]</sub><br />
<br />
=== Czech Republic ===<br />
*ftp://ftp.sh.cvut.cz/MIRRORS/arch/ <sub>[http://ftp.sh.cvut.cz/MIRRORS/arch/ http]</sub><br />
<br />
=== Denmark ===<br />
*ftp://ftp.klid.dk/archlinux/<br />
<br />
=== Estonia ===<br />
*ftp://ftp.estpak.ee/pub/archlinux/ <sub>[http://ftp.estpak.ee/pub/archlinux/ http]</sub><br />
<br />
=== France ===<br />
*ftp://mir1.archlinuxfr.org/archlinux <sub>[http://mir1.archlinuxfr.org/archlinux http]</sub> <sub>[rsync://mir1.archlinuxfr.org/archlinux rsync]</sub><br />
*ftp://mir2.archlinuxfr.org/archlinux <sub>[http://mir2.archlinuxfr.org/archlinux http]</sub> <sub>[rsync://mir2.archlinuxfr.org/archlinux rsync]</sub><br />
*ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/archlinux/ <sub>[http://distrib-coffee.ipsl.jussieu.fr/pub/linux/archlinux/ http]</sub> <sub>[rsync://distrib-coffee.ipsl.jussieu.fr/pub/linux/archlinux/ rsync]</sub><br />
*http://mir.archlinux.fr/<br />
*ftp://ftp.free.fr/mirrors/ftp.archlinux.org/<br />
*ftp://ftp.rez-gif.supelec.fr/Linux/archlinux/<br />
<br />
=== Germany ===<br />
*ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org/ <sub>[http://ftp.hosteurope.de/mirror/ftp.archlinux.org/ http]</sub><br />
*ftp://ftp5.gwdg.de/pub/linux/archlinux/ <sub>[http://ftp5.gwdg.de/pub/linux/archlinux/ http]</sub> <sub>[rsync://ftp5.gwdg.de/pub/linux/archlinux/ rsync]</sub><br />
*ftp://ftp.uni-bayreuth.de/pub/linux/archlinux <sub>[http://ftp.uni-bayreuth.de/linux/archlinux http]</sub> <sub>[rsync://rsync.uni-bayreuth.de/archlinux/ rsync]</sub><br />
*ftp://ftp.archlinuxppc.org/i686/<br />
*ftp://ftp.tu-chemnitz.de/pub/linux/archlinux/ <sub>[http://ftp.tu-chemnitz.de/pub/linux/archlinux/ http]</sub><br />
*ftp://ftp.uni-kl.de/pub/linux/archlinux/ <sub>[http://ftp.uni-kl.de/pub/linux/archlinux/ http]</sub> <sub>[rsync: ftp.uni-kl.de::pub/linux/archlinux/ rsync]</sub><br />
*http://mirrors.igprolin-online.org/pub/archlinux<br />
*ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/archlinux/ <sub>[http://ftp-stud.hs-esslingen.de/pub/Mirrors/archlinux/ http]</sub> <sub>[rsync://ftp-stud.hs-esslingen.de/archlinux/ rsync]</sub><br />
<br />
*ftp://ftp.spline.inf.fu-berlin.de/mirrors/archlinux/<br />
*http://ftp.spline.inf.fu-berlin.de/mirrors/archlinux/<br />
<br />
=== Great Britain ===<br />
*http://www.mirrorservice.org/sites/ftp.archlinux.org/<br />
*ftp://mirrors.uk2.net/pub/archlinux/ <sub>[http://archlinux.mirrors.uk2.net/ http]</sub><br />
*http://mirror.lividpenguin.com/pub/archlinux/ <sub>[ftp://mirror.lividpenguin.com/pub/archlinux/ ftp]</sub><br />
<br />
=== Greece ===<br />
*ftp://ftp.ntua.gr/pub/linux/archlinux/ <sub>[http://ftp.ntua.gr/pub/linux/archlinux/ http]</sub><br />
<br />
=== Hungary ===<br />
*ftp://ftp.mfa.kfki.hu/pub/mirrors/ftp.archlinux.org/<br />
<br />
=== Ireland ===<br />
*ftp://ftp.heanet.ie/mirrors/ftp.archlinux.org/ <sub>[http://ftp.heanet.ie/mirrors/ftp.archlinux.org/ http]</sub><br />
<br />
=== Indonesia ===<br />
*ftp://archlinux.cbn.net.id/pub/archlinux/ <sub>[http://archlinux.cbn.net.id/ http]</sub><br />
<br />
=== Israel ===<br />
*http://mirror.isoc.org.il/pub/archlinux/<br />
<br />
=== Italy ===<br />
*ftp://mi.mirror.garr.it/mirrors/archlinux/ <sub>[http://mi.mirror.garr.it/mirrors/archlinux/ http]</sub><br />
<br />
=== Japan ===<br />
*http://ftp.yz.yamagata-u.ac.jp/pub/linux/archlinux/ <sub>[ftp://ftp.yz.yamagata-u.ac.jp/pub/linux/archlinux/ ftp]</sub><br />
<br />
=== Latvia ===<br />
* http://archlinux.goodsoft.lv/<br />
<br />
=== Lithuania ===<br />
*ftp://atviras.lt/archmirror/ <sub>[http://atviras.lt/archmirror/ http]</sub><br />
<br />
=== Netherlands ===<br />
*ftp://ftp.nluug.nl/pub/metalab/distributions/archlinux/ <sub>[http://ftp.nluug.nl/pub/metalab/distributions/archlinux/ http]</sub><br />
*ftp://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/ <sub>[http://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/ http]</sub><br />
<br />
=== Norway ===<br />
*http://mirror.archlinux.no/ <sub>[ftp://mirror.archlinux.no/ ftp]</sub>(rsync available)<br />
<br />
=== Poland ===<br />
*ftp://mirror.icis.pcz.pl/archlinux/<br />
*ftp://ftp.piotrkosoft.net/pub/mirrors/ftp.archlinux.org/ [http://piotrkosoft.net/pub/mirrors/ftp.archlinux.org/ http]<br />
*http://unix.net.pl/archlinux.org/<br />
<br />
=== Portugal ===<br />
*ftp://cesium.di.uminho.pt/pub/archlinux/ <sub>[http://cesium.di.uminho.pt/pub/archlinux/ http]</sub><br />
*ftp://darkstar.ist.utl.pt/pub/archlinux/ <sub>[http://darkstar.ist.utl.pt/archlinux/ http]</sub><br />
*ftp://ftp.nux.ipb.pt/pub/dists/archlinux/ <sub>[http://ftp.nux.ipb.pt/pub/dists/archlinux/ http]</sub><br />
<br />
=== Romania ===<br />
*ftp://ftp.iasi.roedu.net/mirrors/archlinux.org/ <sub>[http://ftp.iasi.roedu.net/mirrors/archlinux.org/ http]</sub><br />
*http://mirror.archlinux.ro/archlinux <sub>[http://mirror.archlinux.ro/archlinux http] </sub><br />
<br />
=== Russia ===<br />
*ftp://mirror.yandex.ru/archlinux/ <sub>[http://mirror.yandex.ru/archlinux/ http]</sub> (rsync available)<br />
*http://archlinux.freeside.ru/ - outdated (last updated at 26 March 2009)<br />
<br />
=== Sweden ===<br />
*ftp://ftp.ds.hj.se/pub/os/linux/archlinux/ <sub>[http://ftp.ds.hj.se/pub/os/linux/archlinux/ http]</sub><br />
*ftp://ftp.gigabit.nu/ <sub>[http://ftp.gigabit.nu/ http]</sub><br />
<br />
=== Switzerland ===<br />
*ftp://archlinux.puzzle.ch/ <sub>[http://archlinux.puzzle.ch/ http]</sub><br />
<br />
=== Taiwan ===<br />
* ftp://cle.linux.org.tw/pub/ArchLinux/ (no ''testing'', no new isos)<br />
<br />
=== Turkey ===<br />
*ftp://ftp.linux.org.tr/archlinux/ <sub>[http://ftp.linux.org.tr/archlinux/ http]</sub><br />
*http://server.elsistech.com/archlinux/<br />
<br />
=== Ukraine ===<br />
*ftp://archlinux.hell.org.ua/archlinux/ <sub>[http://archlinux.hell.org.ua/archlinux http]</sub>(rsync available)<br />
*ftp://ftp.linux.kiev.ua/pub/Linux/ArchLinux/ <sub>[http://ftp.linux.kiev.ua/pub/Linux/ArchLinux/ http]</sub><br />
<br />
=== United States ===<br />
*ftp://ftp.archlinux.org/<br />
*ftp://locke.suu.edu/linux/dist/archlinux/<br />
*http://archlinux.unixheads.org/<br />
*ftp://ftp.gtlib.gatech.edu/pub/linux/distributions/archlinux/ [http://www.gtlib.gatech.edu/pub/linux/distributions/archlinux/ http]<br />
*ftp://mirror.cs.vt.edu/pub/ArchLinux/ <sub>[http://mirror.cs.vt.edu/pub/ArchLinux/ http]</sub> (rsync available)<br />
*ftp://mirrors.easynews.com/linux/archlinux/ <sub>[http://mirrors.easynews.com/linux/archlinux/ http]</sub><br />
*ftp://ibiblio.org/pub/linux/distributions/archlinux/ <sub>[http://distro.ibiblio.org/pub/linux/distributions/archlinux/ http]</sub><br />
*http://archlinux.umflint.edu/<br />
*http://mirror.neotuli.net/<br />
*ftp://mirror.rit.edu/archlinux/ <sub>[http://mirror.rit.edu/archlinux/ http]</sub> <sub>[rsync://mirror.rit.edu/archlinux/ rsync]</sub><br />
* http://schlunix.org/archlinux/<br />
* http://mirror.umoss.org/archlinux/ <sub>[rsync://mirror.umoss.org/archlinux/ rsync]</sub><br />
* http://mirror.archlinux.com.ve/<br />
* http://mirrors.gigenet.com/archlinux/<br />
<br />
=== Venezuela ===<br />
* http://mirror2.archlinux.com.ve/<br />
<br />
=== Vietnam ===<br />
*ftp://ftp.indochinalinux.com/archlinux/ (frequent DNS problems, IP is 202.78.230.5)<br />
<br />
== Unofficial mirrors ==<br />
'''These mirrors are not listed in {{Filename|/etc/pacman.d/mirrorlist}}.'''<br />
<br />
=== Global ===<br />
* http://prdownloads.sourceforge.net/archlinux/ ( Doesn't have recent ISO releases. Use it only if for some reason you want to use an older ISO. )<br />
<br />
=== Australia ===<br />
*http://mirror.optus.com.au/pub/archlinux/ <sub>[http://mirror.optus.com.au/pub/archlinux/ http]</sub> <sub>[rsync://mirror.optus.com.au/pub/archlinux/]</sub><br />
<br />
=== Bulgaria ===<br />
* http://archlinux.igor.onlinedirect.bg/ <sub>[http://archlinux.igor.onlinedirect.bg http]</sub><br />
* ftp://archlinux.igor.onlinedirect.bg/linux/archlinux/ <sub>[http://archlinux.igor.onlinedirect.bg http]</sub><br />
<br />
=== China ===<br />
* http://mirrors.lcuc.org.cn/archlinux/<br />
* http://mirror.lupaworld.com/archlinux/<br />
* http://public.gooth.cn/archlinux/ (only include i686)<br />
* http://mirrors.163.com/archlinux/<br />
* http://mirror.bjtu.edu.cn/archlinux/<br />
* http://mirrors.sohu.com/archlinux/<br />
<br />
=== Germany ===<br />
* http://arch.uplinkzero.com/<br />
* ftp://ftp.uni-erlangen.de/mirrors/archlinux/ <sub>[http://ftp.uni-erlangen.de/mirrors/archlinux/ http]</sub><br />
<br />
=== Great Britain ===<br />
* ftp://mirror.lividpenguin.com/pub/archlinux/ <sub>[http://mirror.lividpenguin.com/pub/archlinux/ http]</sub><br />
<br />
=== Lithuania ===<br />
* ftp://atviras.lt/archmirror/ <sub>[http://atviras.lt/archmirror/ http]</sub><br />
<br />
=== Malaysia ===<br />
* http://oss.mmu.edu.my/pub/distro/arch (ISOs only)<br />
* http://mirror.oscc.org.my/archlinux/<br />
<br />
=== New Caledonia ===<br />
* ftp://archlinux.nautile.nc/archlinux/ <sub>[http://archlinux.nautile.nc/archlinux/ http]</sub> <sub>[rsync://archlinux.nautile.nc/archlinux/ rsync]</sub> (no ISO image)<br />
<br />
=== New Zealand ===<br />
* http://mirror.ihug.co.nz/archlinux/<br />
<br />
=== Norway ===<br />
* http://power.klette.us/mirror/<br />
<br />
=== Poland ===<br />
* ftp://ftp.icm.edu.pl/pub/Linux/sunsite/distributions/archlinux/ [http://ftp.icm.edu.pl/pub/Linux/sunsite/distributions/archlinux/ http] - up-to-date, but no Core repository<br />
<br />
=== South Africa ===<br />
<br />
* http://archlinux.mirror.ac.za/ TENET Mirror<br />
* ftp://archlinux.mirror.ac.za/<br />
* http://ftp.sun.ac.za/ftp/pub/mirrors/archlinux/ Stellenbosch University<br />
* ftp://ftp.sun.ac.za/pub/mirrors/archlinux/<br />
* http://ftp.leg.uct.ac.za/pub/linux/arch/ University of Cape Town<br />
* ftp://ftp.leg.uct.ac.za/pub/linux/arch/<br />
<br />
=== Spain ===<br />
*ftp://ftp.udc.es/mirror/archlinux/ <sub>[http://ftp.udc.es/mirror/archlinux/ http]</sub> <sub>[rsync://ftp.udc.es/mirror/archlinux/ rsync]</sub><br />
<br />
=== United States ===<br />
* http://archlinux.linuxfreedom.com Contains all the ISO images<br />
* ftp://mirrors.acm.jhu.edu/arch/ <sub>[http://mirrors.acm.jhu.edu/arch http]</sub> <sub>[rsync://mirrors.acm.jhu.edu/arch rsync]</sub><br />
* ftp://ftp.osuosl.org/pub/archlinux/ <sub>[http://ftp.osuosl.org/pub/archlinux/ http]</sub> (i686 only - ''current'' and ''extra'') - outdated<br />
<br />
== IPv6-ready mirrors ==<br />
*http://power.klette.us/mirror/ (Norway)<br />
*http://arch.iskrembilen.com/ (Norway, rsync available)<br />
*niue.belnet.be (Belgium)<br />
*ftp.estpak.ee (Estonia)<br />
*patroklos.noc.ntua.gr (Greece)<br />
*ftp.heanet.ie (Ireland)<br />
*ftp.nluug.nl (Netherlands)<br />
*ftp.surfnet.nl (Netherlands)<br />
*ftp.sixnix.net/ftp6.sixnix.net (Finland) - dead</div>Code mhttps://wiki.archlinux.org/index.php?title=Nano&diff=86942Nano2009-12-09T02:22:32Z<p>Code m: /* Package Installation */</p>
<hr />
<div>[[Category:Utilities (English)]]<br />
= Introduction =<br />
Nano (or nano) is a text editor which aims to introduce a simple interface and intuitive command options to console based text editing. nano is the default console editor in distributions such as [http://www.ubuntu.com/ Ubuntu] and supports features including colorized syntax highlighting, DOS/Mac file type conversions, spellchecking and [http://en.wikipedia.org/wiki/UTF-8 UTF-8] encoding. nano opened with an empty buffer typically occupies under 1.5 MB of resident memory. [http://i275.photobucket.com/albums/jj281/adamchrista/Arch%20Linux/Wiki%20Examples/nano-man.png nano Screenshot].<br />
<br />
= Package Installation =<br />
nano is part of the [[Official Repositories|official Arch Linux (core) repositories]].<br />
<br />
$ pacman -Si nano<br />
<br />
<pre>Repository : core<br />
Name : nano<br />
Version : 2.2.0-1<br />
URL : http://www.nano-editor.org<br />
Licenses : GPL <br />
Groups : base <br />
Provides : None<br />
Depends On : glibc ncurses texinfo <br />
Optional Deps : None<br />
Conflicts With : None<br />
Replaces : None<br />
Download Size : 391.35 K<br />
Installed Size : 1144.00 K<br />
Packager : Andreas Radke <andyrtr@archlinux.org><br />
Architecture : i686<br />
Build Date : Mon 22 Sep 2008 10:20:00 AM PDT<br />
MD5 Sum : fa5017796de45d0e7baed3ba019dc6dd<br />
Description : Pico editor clone with enhancements</pre><br />
<br />
Install the latest version of nano:<br />
# pacman -Sy nano<br />
<br />
= Configuration =<br />
== Creating ~/.nanorc ==<br />
The look, feel and function of nano is typically controlled by way of either command-line arguments, or configuration commands within the file <tt>~/.nanorc</tt>.<br><br />
A sample configuration file is installed upon program installation and is located at <tt>/etc/nanorc</tt>.The file <tt>~/.nanorc</tt> must be first created by the user:<br />
<br />
$ cd ~<br />
$ touch .nanorc<br />
or<br />
$ cp /etc/nanorc ~/.nanorc<br />
<br />
Proceed to establish the nano console environment by setting and/or unsetting commands within <tt>.nanorc</tt> file.<br />
{{Tip|[http://www.nano-editor.org/dist/v2.1/nanorc.5.html NANORC] details the complete list configuration commands available for nano.|}}<br />
{{Note|Command-line arguments override and take precedence over the configuration commands established in .nanorc|}}<br />
<br />
===Nano syntax highlight for PKGBUILD===<br />
This is an updated version of the nanorc found [http://bbs.archlinux.org/viewtopic.php?pid=565476 here]. <br />
<br />
## Arch PKGBUILD files<br />
##<br />
syntax "pkgbuild" "^.*PKGBUILD$"<br />
color green start="^" end="$"<br />
color cyan "^.*(pkgbase|pkgname|pkgver|pkgrel|pkgdesc|arch|url|license).*=.*$"<br />
color brightcyan "\<(pkgbase|pkgname|pkgver|pkgrel|pkgdesc|arch|url|license)\>"<br />
color brightcyan "(\$|\$\{|\$\()(pkgbase|pkgname|pkgver|pkgrel|pkgdesc|arch|url|license)(|\}|\))"<br />
color cyan "^.*(depends|makedepends|optdepends|conflicts|provides|replaces).*=.*$"<br />
color brightcyan "\<(depends|makedepends|optdepends|conflicts|provides|replaces)\>"<br />
color brightcyan "(\$|\$\{|\$\()(depends|makedepends|optdepends|conflicts|provides|replaces)(|\}|\))"<br />
color cyan "^.*(groups|backup|noextract|options).*=.*$"<br />
color brightcyan "\<(groups|backup|noextract|options)\>"<br />
color brightcyan "(\$|\$\{|\$\()(groups|backup|noextract|options)(|\}|\))"<br />
color cyan "^.*(install|source|md5sums|sha1sums|sha256sums|sha384sums|sha512sums).*=.*$"<br />
color brightcyan "\<(install|source|md5sums|sha1sums|sha256sums|sha384sums|sha512sums)\>"<br />
color brightcyan "(\$|\$\{|\$\()(install|source|md5sums|sha1sums|sha256sums|sha384sums|sha512sums)(|\}|\))"<br />
color brightcyan "\<(startdir|srcdir|pkgdir)\>"<br />
color cyan "\.install"<br />
color brightwhite "=" "'" "\(" "\)" "\"" "#.*$" "\," "\{" "\}"<br />
color brightred "build\(\)"<br />
color brightred "package_.*.*$"<br />
color brightred "\<(configure|make|cmake|scons)\>"<br />
color red "\<(DESTDIR|PREFIX|prefix|sysconfdir|datadir|libdir|includedir|mandir|infodir)\>"<br />
<br />
To use, save as /usr/share/nano/pkgbuild.nanorc and add:<br />
include "/usr/share/nano/pkgbuild.nanorc"<br />
to your ~/.nanorc<br />
<br />
== Suggested Configuration ==<br />
=== Suspension ===<br />
Unlike most interactive programs, suspension is not enabled by default. To change this, uncomment the 'set suspend' line in '/etc/nanorc'. This will allow you to use the keys ctrl+z to send nano to the background.<br />
<br />
= nano Usage =<br />
== Special Functions ==<br />
* <tt>Ctrl</tt> key modified shortcuts <tt>(^)</tt> respresenting commonly used functions are listed along the bottom two lines of the nano screen.<br />
* Additional functions can be interactively toggled by way of <tt>Meta</tt> (typically <tt>Alt</tt>) and/or <tt>Esc</tt> key modified sequences. <br />
<br />
=== Shortcut Lists Overview ===<br />
* <tt>^G Get Help</tt> (<tt>F1</tt>)<br />
: Displays the online help files within the session window. A suggested read for nano users of all levels<br />
* <tt>^O WriteOut</tt> (<tt>F3</tt>)<br />
: Save the contents of the current file buffer to a file on the disk<br />
* <tt>^R Read File</tt> (<tt>F5</tt>)<br />
: Inserts another file into the current one at the cursor location<br />
* <tt>^Y Prev Page</tt> (<tt>F7</tt>)<br />
: Display the previous buffered screen<br />
* <tt>^K Cut Text</tt> (<tt>F9</tt>)<br />
: Cut and store the current line from the beginning of the line to the end of the line <br />
* <tt>^C Cur Pos</tt> (<tt>F11</tt>)<br />
: Display line, column and character position information at the current location of the cursor <br />
* <tt>^X Exit</tt> (<tt>F2</tt>)<br />
: Close and exit nano <br />
* <tt>^J Justify</tt> (<tt>F4</tt>)<br />
: Aligns text according to the geometry of the console window<br />
* <tt>^W Where</tt> (<tt>F6</tt>)<br />
: Perform a case-insensitive string, or regular expression search<br />
* <tt>^V Next Page</tt> (<tt>F8</tt>)<br />
: Display the next buffered screen<br />
* <tt>^U UnCut Text</tt> (<tt>F10</tt>)<br />
: Paste the contents of the cut buffer to the current cursor location<br />
* <tt>^T To Spell</tt> (<tt>F12</tt>)<br />
: Spellcheck the contents of the buffer with the built-in <tt>spell</tt>, if available<br />
<br />
{{Tip|See the nano online help files via <code>Ctrl+g</code> within nano and the [http://www.nano-editor.org/dist/v2.1/nano.html nano Command Manual] for complete descriptions and additional support.|}}<br />
<br />
=== Selected Toggle Functions ===<br />
* <tt>Meta+c</tt> (or <tt>Esc+c</tt>)<br />
: Toggles support for line, column and character position information.<br />
<br />
* <tt>Meta+i</tt> (or <tt>Esc+i</tt>)<br />
: Toggles support for the auto indentation of lines<br />
<br />
* <tt>Meta+k</tt> (or <tt>Esc+k</tt>)<br />
: Toggles support for cutting text from the current cursor position to the end of the line<br />
<br />
* <tt>Meta+m</tt> (or <tt>Esc+m</tt>)<br />
: Toggles mouse support for cursor placement, marking and shortcut execution<br />
<br />
* <tt>Meta+x</tt> (or <tt>Esc+x</tt>)<br />
: Toggles the display of the shortcut list at the bottom of the nano screen for additional screen space <br />
<br />
{{Tip|[http://www.nano-editor.org/dist/v2.1/nano.html#Feature-Toggles Feature Toggles] lists the global toggles available for nano.|}}<br />
<br />
= Tips & Tricks =<br />
<br />
== Replacing <tt>vi</tt> with <tt>nano</tt> ==<br />
<br />
Casual users may prefer the use of <tt>nano</tt> over <tt>vi</tt> for its simplicity and ease of use and may opt to replace vi with nano as the default text editor for commands such as <code>visudo</code>.<br />
<br />
=== Method One ===<br />
{{Warning|From <tt>man 8 visudo</tt>: ''Note that this can be a security hole since it allows the user to execute any program they wish simply by setting VISUAL or EDITOR.''}}<br />
<br />
[[Sudo|sudo]] from the core repository is compiled with <code>--with-env-editor</code> by default and honors the use of the <tt>VISUAL</tt> and <tt>EDITOR</tt> variables. To establish nano as the <code>visudo</code> editor for the duration of the current shell session, set and export the <tt>EDITOR</tt> variable before calling <code>visudo</code> <br />
<br />
export EDITOR=nano <br />
<br />
==== Example Usage ====<br />
<br />
export EDITOR=nano && sudo visudo<br />
<br />
=== Method Two ===<br />
{{Warning|From <tt>man 8 visudo</tt>: ''Note that this can be a security hole since it allows the user to execute any program they wish simply by setting VISUAL or EDITOR.''}}<br />
<br />
The EDITOR variable can also be set within the following files for persistent use:<br />
<br />
* ~/[http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files .bash_profile] (login shell)<br />
* ~/.bashrc (interactive, non-login shell)<br />
* [http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files /etc/profile] (global settings for all system users except <tt>root</tt>)<br />
<br />
==== Example .bash_profile ====<br />
<br />
<pre>. $HOME/.bashrc<br />
<br />
export EDITOR=nano<br />
export GREP_COLOR="1;33"<br />
<br />
if [[ -z "$DISPLAY" ]] && [[ $(tty) = /dev/vc/1 ]]; then<br />
startx<br />
logout<br />
fi</pre><br />
<br />
=== Method Three ===<br />
{{Note|This method can be considered draconian and may not be suitable for all users. Nonetheless, the following procedure exists as a viable example solution.}}<br />
<br />
==== Symbolic Linking ====<br />
As root, or with <code>su -</code> <br />
<br />
mv /usr/bin/vi /usr/bin/vi.old<br />
ln -s /usr/bin/nano /usr/bin/vi<br />
<br />
Assuming sudo is installed and properly configured <br />
<br />
sudo mv /usr/bin/vi /usr/bin/vi.old<br />
sudo ln -s /usr/bin/nano /usr/bin/vi<br />
<br />
==== Overview of Commands ====<br />
mv /usr/bin/vi /usr/bin/vi.old<br />
* Rename the <tt>vi</tt> executable to <tt>vi.old</tt> for ease of restoration<br />
ln -s /usr/bin/nano /usr/bin/vi<br />
* Create a symbolic link from <tt>/usr/bin/nano</tt> to <tt>/usr/bin/vi</tt><br />
<br />
==== Restoration of <tt>vi</tt> ====<br />
unlink /usr/bin/vi<br />
* Remove the <tt>/usr/bin/vi</tt> symbolic link<br />
mv /usr/bin/vi.old /usr/bin/vi<br />
* Rename the <tt>vi.old</tt> executable back to <tt>vi</tt><br />
<br />
=== Method Four ===<br />
{{Note|This method can be considered draconian and may not be suitable for all users. Nonetheless, the following procedure exists as a viable example solution.}}<br />
<br />
==== Removal & Symbolic Linking ====<br />
pacman -Rns vi<br />
ln -s /usr/bin/nano /usr/bin/vi<br />
<br />
==== Overview of Commands ====<br />
pacman -Rns vi<br />
* Use [[Pacman|pacman]] to remove the <tt>vi</tt> package, its configuration, and all unneeded dependencies<br />
ln -s /usr/bin/nano /usr/bin/vi<br />
* Create a symbolic link from <tt>/usr/bin/nano</tt> to <tt>/usr/bin/vi</tt><br />
<br />
==== Restoration of <tt>vi</tt> ====<br />
unlink /usr/bin/vi<br />
* Remove the <tt>/usr/bin/vi</tt> symbolic link<br />
pacman -S vi <br />
* Use pacman to install the previously deinstallled <tt>vi</tt> package<br />
<br />
{{Box Note|Do not clean <tt>-c</tt> or refresh <tt>-y</tt> the package database if you wish to retain the previously installed version of the <tt>vi</tt> package.<br>If this case, subsequent updates will also require the judicious use of the <tt>--ignore vi</tt> switch (and optionally <tt>--ignore glibc ncurses coreutils</tt>).|}}<br />
<br />
= Additional Resources = <br />
<br />
* [http://en.wikipedia.org/wiki/Nano_(text_editor) nano (text editor)] - Wikipedia Entry<br />
* [http://www.nano-editor.org/ GNU nano Homepage] - Official Site<br />
* [https://savannah.gnu.org/bugs/?group=nano GNU nano Bugs] Bug Reporting</div>Code mhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=86423Touchpad Synaptics2009-12-05T18:11:19Z<p>Code m: /* Software Toggle */</p>
<hr />
<div>[[Category:Input devices (English)]][[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Touchpad Synaptics}}<br />
{{i18n_entry|German|Touchpad Synaptics (Deutsch)}}<br />
{{i18n_entry|Русский|Тачпад Synaptics}}<br />
{{i18n_entry|简体中文|触摸板 (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
==Installation==<br />
<br />
The Synaptics driver is now bundled as ''xf86-input-synaptics'', and is available in the [[Official_Repositories|[extra] repository]]:<br />
<br />
# pacman -S xf86-input-synaptics<br />
<br />
==Configuration==<br />
<br />
Configuration for the touchpad should done by tweaking options in the XML format *.fdi policy file with latest Xserver installed using [[Xorg input hotplugging|hotplugging]]. Alternatively, configuration can be done using xorg.conf. Please note, however, that this method of configuring is deprecated and might stop working in the future. Configuration by HAL policy is therefore encouraged.<br />
<br />
===Configuration via HAL policy (hotplugging enabled, recommended) ===<br />
<br />
With [[Xorg input hotplugging|hotplugging]] (enabled by default) and HAL installed and running, your Synaptics should works "out-of-the-box".<br />
<br />
If it doesn't or you want to tweak the configuration, you will need to edit the appropriate HAL policy file (XML format).<br />
Note that in this case.<br />
<br />
Copy '''/usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi''' into '''/etc/hal/fdi/policy/'''<br />
cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/<br />
<br />
Now you can modify the new file appending new options.<br />
<br />
Here's a simple template to begin with, covering the more common features:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<!-- <match key="info.product" contains="AlpsPS/2 ALPS GlidePoint"> #ALPS users may need to use this instead of the above --><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.AlwaysCore" type="string">true</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.protocol" type="string">event</merge><br />
<merge key="input.x11_options.touchpadoff" type="string">0</merge><br />
<merge key="input.x11_options.shmconfig" type="string">on</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The syntax is similar to xorg.conf, for instance, <br />
Option "RightEdge" "5300"<br />
equates to this .fdi file line:<br />
<merge key="input.x11_options.RightEdge" type="string">5300</merge><br />
{{Box Note| In the .fdi file, every type must be "string" instead of "float" or "int" as per xorg.conf.}}<br />
{{Box Note| You might need to run '''/etc/rc.d/hal restart''' in order for the changes to take place.}}<br />
<br />
====Advanced policy configuration====<br />
<br />
The Synaptics driver allows for a vast amount of options to be tweaked. Luckily, all of them are consistently named and well documented in Synaptic's manpage.<br />
man synaptics<br />
<br />
The following shall serve as an advanced configuration example for '''11-x11-synaptics.fdi''':<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
<merge key="input.x11_options.MinSpeed" type="string">0.1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">0.4</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.002</merge><br />
<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.VerteScrollDelta" type="string">2</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.CircularScrolling" type="string">true</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">8</merge><br />
<merge key="input.x11_options.CircScrollDelta" type="string">0.1</merge><br />
<br />
<!-- Values here might differ! Use synclient -m 20 to find desired values --><br />
<merge key="input.x11_options.LeftEdge" type="string">2000</merge><br />
<merge key="input.x11_options.TopEdge" type="string">2000</merge><br />
<br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
====Other products====<br />
<br />
* ALPS users may try the following if the above does not work:<br />
<br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with MacBook (1,1 2,1 etc...)<br />
<br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with latest MacBook (5,1)<br />
<br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
{{Box Note| You can find the exact information for your touchpad in /proc/bus/input/devices.}}<br />
<br />
Or, if you find HAL is not loading your settings, try this template (the "append" child is necessary for some setups):<br />
<br />
<pre><br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="SynPS/2 Synaptics TouchPad"><br />
<append key="info.capabilities" type="strlist">input.touchpad</append><br />
</match><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
[...]<br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
<br />
===Configuration via xorg.conf (hotplugging disabled, deprecated) ===<br />
<br />
Edit ''/etc/X11/xorg.conf'' as root and add '''InputDevice "Touchpad" "SendCoreEvents"''' to the ''ServerLayout'':<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
'''''InputDevice "SynapticsTouchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Add '''Load "synaptics"''' to the ''Module'' section:<br />
Section "Module"<br />
...<br />
Load "glx"<br />
Load "freetype"<br />
'''''Load "synaptics"'''''<br />
...<br />
EndSection<br />
<br />
Lastly, add a new ''InputDevice'' section for the touchpad itself:<br />
Section "InputDevice"<br />
Identifier "SynapticsTouchpad"<br />
Driver "synaptics"<br />
Option "AlwaysCore" "true" # send events to CorePointer<br />
#Option "Device" "/dev/input/mice"<br />
Option "Device" "/dev/psaux"<br />
Option "Protocol" "auto-dev"<br />
Option "SHMConfig" "false" # configurable at runtime? security risk<br />
Option "LeftEdge" "1700" # x coord left<br />
Option "RightEdge" "5300" # x coord right<br />
Option "TopEdge" "1700" # y coord top<br />
Option "BottomEdge" "4200" # y coord bottom<br />
Option "FingerLow" "25" # pressure below this level triggers release<br />
Option "FingerHigh" "30" # pressure above this level triggers touch<br />
Option "MaxTapTime" "180" # max time in ms for detecting tap<br />
'''Option "VertEdgeScroll" "true" # enable vertical scroll zone'''<br />
'''Option "HorizEdgeScroll" "true" # enable horizontal scroll zone'''<br />
Option "CornerCoasting" "true" # enable continuous scroll with finger in corner<br />
Option "CoastingSpeed" "0.30" # corner coasting speed<br />
Option "VertScrollDelta" "100" # edge-to-edge scroll distance of the vertical scroll<br />
Option "HorizScrollDelta" "100" # edge-to-edge scroll distance of the horizontal scroll<br />
Option "MinSpeed" "0.10" # speed factor for low pointer movement<br />
Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement<br />
Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection<br />
<br />
The '''bold''' lines are important because users must now explicitly enable the side and bottom scroll zones of the touchpad. If you already had an InputDevice section configured for the old touchpad driver, you'll still need to add these two lines if you wish to use the scroll zones.<br />
<br />
Save, exit and restart X. The touchpad should now have working scroll zones. You can further tweak the ''InputDevice'' settings if desired. See [[#Advanced_Configuration | Advanced Configuration]] for more information.<br />
<br />
Note that Xorg will automatically load the '''evdev''' and '''psmouse''' kernel modules required by Synaptics, however you may also add them explicitly to the MODULES array in the /etc/rc.conf file if desired.<br />
<br />
====ALPS Touchpads====<br />
<br />
For ALPS Touchpads, if the above configuration does not provide the desired results, try the following configuration instead:<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
InputDevice "Touchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "Device" "/dev/input/mouse0"<br />
Option "Protocol" "auto-dev"<br />
Option "LeftEdge" "130"<br />
Option "RightEdge" "840"<br />
Option "TopEdge" "130"<br />
Option "BottomEdge" "640"<br />
Option "FingerLow" "7"<br />
Option "FingerHigh" "8"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "110"<br />
Option "EmulateMidButtonTime" "75"<br />
Option "VertScrollDelta" "20"<br />
Option "HorizScrollDelta" "20"<br />
Option "MinSpeed" "0.25"<br />
Option "MaxSpeed" "0.50"<br />
Option "AccelFactor" "0.010"<br />
Option "EdgeMotionMinSpeed" "200"<br />
Option "EdgeMotionMaxSpeed" "200"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "1"<br />
Option "CircScrollDelta" "0.1"<br />
Option "CircScrollTrigger" "2"<br />
Option "SHMConfig" "on"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
<br />
==Advanced Configuration==<br />
<br />
===Input device options===<br />
<br />
There are a number of arbitrary parameters that can be tweaked for Synaptics touchpads. The following is a brief list of some of these options--see '''man synaptics''' for full details:<br />
<br />
{| class="wikitable" <br />
|-align="left"<br />
!+Option+<br />
!width=400|+Description+<br />
!width=200|+Type+<br />
|-<br />
|'''Device'''<br />
|Input device location. See [[#Troubleshooting | Troubleshooting]] to find your device handler if it isn't /dev/input/mouse0<br />
|String<br />
|-<br />
|'''MinSpeed'''<br />
|Minimum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''MaxSpeed'''<br />
|Maximum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''AccelFactor'''<br />
|Cursor Acceleration Factor<br />
|Decimal(float)<br />
|-<br />
|'''HorizScrollDelta'''<br />
|Horizontal [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''VertScrollDelta'''<br />
|Vertical [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''SHMConfig'''<br />
|height=100|Activation of shared memory(must be enabled for real-time configuration or [Disable touchpad upon external mouse detection| udev-based disabling]<br />
|Boolean<br />
|}<br />
<br />
===Gsynaptics===<br />
<br />
Once the touchpad is configured, users can also install the '''gsynaptics''' package from [community] to provide a GUI-based configuration solution for the device (note that it depends on libgnomeui):<br />
# pacman -S gsynaptics<br />
<br />
'''''Note:''' The '''gsynaptics''' web page [http://gsynaptics.sourceforge.jp/] indicates that it is becoming obsolete and users should consider '''GPointingDeviceSettings''' [http://live.gnome.org/GPointingDeviceSettings], currently available in AUR and as source code.''<br />
<br />
With hotplugging enabled(default), append this the match section of your 99-x11-synaptics.fdi or 11-x11-synaptics.fdi:<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
===Fine-tuning with synclient===<br />
<br />
The synclient monitor can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. In order for synclient to work properly, the '''SHMConfig''' option must be set to '''on''' or '''true'''.<br />
<br />
You can start the Synaptics monitor with the following command:<br />
$ synclient -m 100<br />
Where -m activates the monitor and the following number specifies the update interval in milliseconds.<br />
<br />
This monitor provides information about the current state of your touchpad. For example, if you move the mouse with the touchpad, the x and y values in the monitor will change. Therewith you can easy figure out your touchpad's dimension which is defined in the LeftEdge-, RightEdge-, BottomEdge- and TopEdge-Options.<br />
<br />
The abbreviations for the parameters are as follow:<br />
<br />
{| class="wikitable"<br />
|- align="left"<br />
!width="200"|+Abbreviation+<br />
!width="400|+Description+<br />
|-<br />
|'''time'''<br />
|Time in seconds since the logging was started.<br />
|-<br />
|'''x, y'''<br />
|The x/y coordinates of the finger on the touchpad. The origin is in the upper left corner.<br />
|-<br />
|'''z'''<br />
|The pressure value. It represents the pressure you are using to navigate on your touchpad.<br />
|-<br />
|'''f'''<br />
|Number of fingers currently touching the touchpad.<br />
|-<br />
|'''w'''<br />
|Value that represents the finger width.<br />
|-<br />
|'''l,r,u,d,m,multi'''<br />
|Those values represent the state of the left, right, up, down, middle and multi buttons pressed where zero means not pressed and one means pressed.<br />
|-<br />
|'''gl,gm,gr'''<br />
|For touchpads which have a guest device, this are the associated button states for guest left, guest middle and guest right pressed (1) and not pressed (0).<br />
|-<br />
|'''gdx, gdy'''<br />
|x/y coordinates of the guest device.<br />
|}<br />
If a value constantly is zero, it implies that this option is not supported by your device.<br />
<br />
===Edge scrolling===<br />
<br />
To enable the scroll zones found along the edges of the touchpad, add one or both of the following options to the touchpad device section in /etc/X11/xorg.conf:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "VertEdgeScroll" "true" #vertical scrolling when dragging along the right edge.<br />
Option "HorizEdgeScroll" "true" #horizontal scrolling when dragging along the bottom edge.<br />
...<br />
EndSection<br />
<br />
In ''/etc/hal/fdi/policy/11-x11-synaptics.fdi''(or if that doesn't work, ''/etc/hal/fdi/policy/99-x11-synaptics.fdi) for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
...<br />
</match><br />
<br />
===Two-Finger scrolling===<br />
<br />
Recent Synaptics touchpads support two-finger scrolling. This allows you to use two fingers together anywhere on the touchpad, similar to the behaviour of Macbooks.<br />
<br />
If your hardware supports this feature, you can enable it by inserting the following lines into the touchpad device section of /etc/X11/xorg.conf:<br />
Section "InputDevice"<br />
...<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "EmulateTwoFingerMinZ" "120" # this may vary between different machines<br />
...<br />
EndSection<br />
<br />
''EmulateTwoFingerMinZ'' is only necessary for the ALPS Touchpad, which several Dell machines have. ([http://ubuntuforums.org/showthread.php?t=516798&page=2#19 from Ubuntu forums]) <br />
<br />
'''Firefox users:''' You might find the default behaviour of Firefox pretty annoying relating to the horizontal scrolling. Just see ''Firefox and special touchpad events'' below to find out how to disable it.<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi'''(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
...<br />
</match><br />
<br />
Some users might need to modify the ''EmulateTwoFingerMinW'' parameter, as their touch pads sense two fingers as one wide finger. You can check which parameters you need to modify by running '''synclient -m 150''' -- when you touch two fingers to the touch pad, observe which parameters (z, w, or f) change. Those will determine the minimum threshold values you must set (if f changes, don't bother with ''EmulateTwoFingerMin[W,Z]'' since you do not need to emulate two fingers, your touch pad can simply sense two different fingers).<br />
<br />
===Circular scrolling===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of '''/etc/X11/xorg.conf''':<br />
Section "InputDevice"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi';'(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.CircularScrolling" type="string">on</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">0</merge><br />
...<br />
</match><br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
===Software Toggle===<br />
<br />
You may find it useful to have a software toggle that will turn on or off your touchpad, esplicially if it's extremely sensitive and your doing a lot of typing. Please also see [[#Disable touchpad upon external mouse detection]] and [[#Stopping the mouse from clicking while typing]] as those may be better solutions, again a matter of choice. The advantage here is you have the control, while the other solutions have daemons determine when to turn off the trackpad.<br />
<br />
You will want to grab [[xbindkeys]] if you don't already have key binding software.<br />
<br />
Then save this script to something such as /sbin/trackpad-toggle.sh:<br />
<br />
#!/bin/bash<br />
<br />
if [ -n "`lsmod | grep psmouse`" ]; then<br />
rmmod psmouse<br />
else<br />
modprobe psmouse<br />
fi<br />
<br />
If you use sudo, you'll likely want to add an entry to your sudoers file:<br />
<br />
visudo<br />
<br />
Then finally add a key binding to use the script, but remember that it must be run as root, so using a graphical editor here likely won't work. It is best to add the script to sudoers with ''NOPASSWD'' and call with xbindkeys like so (file ''~/.xbindkeysrc''):<br />
<br />
"sudo /sbin/trackpad-toggle.sh"<br />
m:0x5 + c:65<br />
Control+Shift + space<br />
<br />
now just (re)start xbindkeys and ctrl+Shift+Space will now toggle your trackpad !<br />
<br />
==Troubleshooting==<br />
<br />
===No scrolling/tapping with Gnome 2.28===<br />
<br />
Gnome 2.28 introduces a few additional features for managing touchpads. This change takes preference over previously configured options in the HAL policy file and thus may surprise some unsuspecting people. To change the Gnome 2.28 touchpad settings, go to ''System->Preferences->Mouse->Touchpad''.<br />
<br />
===Synaptics Special Ability===<br />
<br />
By default, Synaptics touchpads are able to detect the number of fingers on the touchpad; ALPS touchpads are not. If the touchpad is tapped with two fingers, it will emulate a middle click. If the touchpad is typed with three fingers, a right click will be emulated.<br />
<br />
===Disable touchpad upon external mouse detection===<br />
<br />
In assistance to [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, add the following udev rule to '''/etc/udev/rules.d/01-touchpad.rules''':<br />
ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=1"<br />
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=0"<br />
<br />
SHMConfig must be enabled (see the '''Configuration''' section for details)<br />
<br />
===Cursor Jump===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
===Multitouch===<br />
<br />
Multitouch gesture like in Mac OS X will be in future version of the driver.<br />
<br />
===Touchpad device isn't located at /dev/input/mouse0===<br />
<br />
If that's the case, you can use this command to display information about your input devices:<br />
cat /proc/bus/input/devices<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
<br />
In this case, the Handlers are mouse0 and event1, so /dev/input/mouse0 would be used.<br />
<br />
===Stopping the mouse from clicking while typing===<br />
<br />
To have the touchpad disabled automatically when you begin typing, add the following line to your .xinitrc before you run your window manager:<br />
syndaemon -i 2 &<br />
<br />
The '''-i 2''' switch sets the idle time to 2 seconds. The idle time specifies how many seconds to wait after the last key-press before enabling the touchpad again.<br />
<br />
Additionally you can add the '''-t''' switch that tells the daemon not to disable mouse movement when typing and only disable tapping and scrolling:<br />
syndaemon -t -i 2 &<br />
<br />
As usual you may find further information in the manpage:<br />
$ man syndaemon<br />
<br />
Note: Don't forget to enable SHMConfig in your xorg-setup, either in /etc/xorg.conf (hotplugging disabled) or in /etc/hal/fdi/policy/11-x11-synaptics.fdi (hotplugging enabled). Some users may need to specify touchpad preferences in /etc/hal/fdi/policy/99-x11-synaptics.fdi, instead.<br />
<br />
Note: If you're using GDM as your login manager and Gnome, GDM will ignore commands added to .xinitrc, other than the command to start Gnome. To start syndaemon you need to use Gnome's Startup Applications Preferences program. Login to Gnome and go to System > Preferences > Startup Applications. In the Startup Programs tab click the Add button. Name the Startup Program whatever you like and input any comments you like (or leave this field blank). In the command field add:<br />
syndaemon -i 2 -d<br />
<br />
The "-d" option is necessary to start syndaemon as a background process, instead of the "&" which does this in .xinitrc. You can add other options as well, the same way you would in .xinitrc. When you're done click the Add button in the Add Startup Program dialogue. Make sure the check box next to the startup program you've created is checked, in the list of additional startup programs. Close the Startup Applications Preferences window and you're done.<br />
<br />
===Firefox and special touchpad events===<br />
<br />
By default, Firefox is set up to do special events upon tapping or scrolling certain parts of your touchpad.<br />
You can edit the settings of those actions by typing '''about:config''' in your Firefox address bar.<br />
To alter these options, double-click on the line in question, changing "true" to "false" and vise versa.<br />
<br />
To prevent Firefox from scrolling (backward/forward) through browser history and instead scroll through pages, edit these settings as shown:<br />
mousewheel.horizscroll.withnokey.action = 1<br />
mousewheel.horizscroll.withnokey.sysnumlines = true<br />
<br />
To prevent Firefox from redirecting you to URLs formed from your clipboard content upon tapping the upper-right corner of your touchpad (or middle mouse button), set the following option to "false":<br />
middlemouse.contentLoadURL = false<br />
<br />
===Opera: horizontal scrolling issues===<br />
<br />
Same as above.<br />
To fix it, go to Tools -> Preferences -> Advanced -> Shortcuts. There you edit the mouse preferences: Delete the entries with "Button 5" and "Button 6".<br />
<br />
===Scrolling and multiple actions with Synaptics on LG Laptops===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in xorg.conf:<br />
Option "UpDownScrolling" "0"<br />
<br />
NOTE that this will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git] .<br />
<br />
There is also a package build file in the AUR to automate this: [http://aur.archlinux.org/packages.php?ID=15983].<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
cd synaptics-git<br />
makepkg<br />
<br />
If you want it to be automatically installed after being built, just add '-i' after makepkg.<br />
<br />
===Other external mouse issues===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
Option "Device" "/dev/input/mice"<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this doesn't solve your problem, make your '''touchpad''' the CorePointer in the "Server Layout" section:<br />
<br />
InputDevice "Touchpad" "CorePointer"<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
InputDevice "USB Mouse" "SendCoreEvents"<br />
<br />
finally add this to your external device's section:<br />
<br />
Option "SendCoreEvents" "true"<br />
<br />
If all of the above doesn't work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
===Touchpad synchronization issues===<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in /var/log/messages.log<br />
<br />
psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
*If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
*Avoid using an ACPI battery monitor.<br />
*Attempt to load psmouse with "proto=imps" option. To do that, add this line to your /etc/modprobe.conf:<br />
<br />
options psmouse proto=imps<br />
<br />
*Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Tapping issues===<br />
<br />
If you are not using [[Xorg input hotplugging]], you should know that Xorg v7.4 does not enable tapping by default. To enable it, add the following line to the touchpad's InputDevice section in <tt>/etc/X11/xorg.conf</tt>:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "TapButton1" "''integer''"<br />
Option "TapButton2" "''integer''"<br />
Option "TapButton3" "''integer''"<br />
...<br />
EndSection<br />
The ''integer'' of option "TapButton1" means which mouse button is reported on a non-corner one-finger tap. Usually it is 1.<br />
The ''integer'' of option "TapButton2" means which mouse button is reported on a non-corner two-finger tap. Usually it is 2.<br />
The ''integer'' of option "TapButton3" means which mouse button is reported on a non-corner three-finger tap. Usually it is 3.<br />
<br />
===Delay between a button tap and the actual click===<br />
<br />
If you experience a delay between the tap on the touchpad and the actual click that is registered you need to enable FastTaps:<br />
<br />
If you're using input hotplugging(default behavior), change your 11-x11-synaptics.fdi(or 99-x11-synaptics.fdi, in some cases) so that it contains:<br />
<br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
If you're using xorg-server with disabled input hotplugging change xorg.conf so that you have:<br />
<br />
Section "InputDevice"<br />
Identifier "Synaptics Touchpad"<br />
Driver "synaptics"<br />
...<br />
Option "FastTaps" "1"<br />
...<br />
EndSection<br />
<br />
===SynPS/2 Synaptics TouchPad can't grab event device, errno=16===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from /var/log/Xorg.0.log, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes /dev/input/mice as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in xorg.conf:<br />
<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
==External Resources==<br />
<br />
Synaptics TouchPad driver: [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/]<br />
<!-- vim: set ft=Wikipedia: --></div>Code mhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=86275Touchpad Synaptics2009-12-04T03:50:42Z<p>Code m: /* Software Toggle */</p>
<hr />
<div>[[Category:Input devices (English)]][[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Touchpad Synaptics}}<br />
{{i18n_entry|German|Touchpad Synaptics (Deutsch)}}<br />
{{i18n_entry|Русский|Тачпад Synaptics}}<br />
{{i18n_entry|简体中文|触摸板 (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
==Installation==<br />
<br />
The Synaptics driver is now bundled as ''xf86-input-synaptics'', and is available in the [[Official_Repositories|[extra] repository]]:<br />
<br />
# pacman -S xf86-input-synaptics<br />
<br />
==Configuration==<br />
<br />
Configuration for the touchpad should done by tweaking options in the XML format *.fdi policy file with latest Xserver installed using [[Xorg input hotplugging|hotplugging]]. Alternatively, configuration can be done using xorg.conf. Please note, however, that this method of configuring is deprecated and might stop working in the future. Configuration by HAL policy is therefore encouraged.<br />
<br />
===Configuration via HAL policy (hotplugging enabled, recommended) ===<br />
<br />
With [[Xorg input hotplugging|hotplugging]] (enabled by default) and HAL installed and running, your Synaptics should works "out-of-the-box".<br />
<br />
If it doesn't or you want to tweak the configuration, you will need to edit the appropriate HAL policy file (XML format).<br />
Note that in this case.<br />
<br />
Copy '''/usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi''' into '''/etc/hal/fdi/policy/'''<br />
cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/<br />
<br />
Now you can modify the new file appending new options.<br />
<br />
Here's a simple template to begin with, covering the more common features:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<!-- <match key="info.product" contains="AlpsPS/2 ALPS GlidePoint"> #ALPS users may need to use this instead of the above --><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.AlwaysCore" type="string">true</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.protocol" type="string">event</merge><br />
<merge key="input.x11_options.touchpadoff" type="string">0</merge><br />
<merge key="input.x11_options.shmconfig" type="string">on</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The syntax is similar to xorg.conf, for instance, <br />
Option "RightEdge" "5300"<br />
equates to this .fdi file line:<br />
<merge key="input.x11_options.RightEdge" type="string">5300</merge><br />
{{Box Note| In the .fdi file, every type must be "string" instead of "float" or "int" as per xorg.conf.}}<br />
{{Box Note| You might need to run '''/etc/rc.d/hal restart''' in order for the changes to take place.}}<br />
<br />
====Advanced policy configuration====<br />
<br />
The Synaptics driver allows for a vast amount of options to be tweaked. Luckily, all of them are consistently named and well documented in Synaptic's manpage.<br />
man synaptics<br />
<br />
The following shall serve as an advanced configuration example for '''11-x11-synaptics.fdi''':<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
<merge key="input.x11_options.MinSpeed" type="string">0.1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">0.4</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.002</merge><br />
<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.VerteScrollDelta" type="string">2</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.CircularScrolling" type="string">true</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">8</merge><br />
<merge key="input.x11_options.CircScrollDelta" type="string">0.1</merge><br />
<br />
<!-- Values here might differ! Use synclient -m 20 to find desired values --><br />
<merge key="input.x11_options.LeftEdge" type="string">2000</merge><br />
<merge key="input.x11_options.TopEdge" type="string">2000</merge><br />
<br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
====Other products====<br />
<br />
* ALPS users may try the following if the above does not work:<br />
<br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with MacBook (1,1 2,1 etc...)<br />
<br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with latest MacBook (5,1)<br />
<br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
{{Box Note| You can find the exact information for your touchpad in /proc/bus/input/devices.}}<br />
<br />
Or, if you find HAL is not loading your settings, try this template (the "append" child is necessary for some setups):<br />
<br />
<pre><br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="SynPS/2 Synaptics TouchPad"><br />
<append key="info.capabilities" type="strlist">input.touchpad</append><br />
</match><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
[...]<br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
<br />
===Configuration via xorg.conf (hotplugging disabled, deprecated) ===<br />
<br />
Edit ''/etc/X11/xorg.conf'' as root and add '''InputDevice "Touchpad" "SendCoreEvents"''' to the ''ServerLayout'':<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
'''''InputDevice "SynapticsTouchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Add '''Load "synaptics"''' to the ''Module'' section:<br />
Section "Module"<br />
...<br />
Load "glx"<br />
Load "freetype"<br />
'''''Load "synaptics"'''''<br />
...<br />
EndSection<br />
<br />
Lastly, add a new ''InputDevice'' section for the touchpad itself:<br />
Section "InputDevice"<br />
Identifier "SynapticsTouchpad"<br />
Driver "synaptics"<br />
Option "AlwaysCore" "true" # send events to CorePointer<br />
#Option "Device" "/dev/input/mice"<br />
Option "Device" "/dev/psaux"<br />
Option "Protocol" "auto-dev"<br />
Option "SHMConfig" "false" # configurable at runtime? security risk<br />
Option "LeftEdge" "1700" # x coord left<br />
Option "RightEdge" "5300" # x coord right<br />
Option "TopEdge" "1700" # y coord top<br />
Option "BottomEdge" "4200" # y coord bottom<br />
Option "FingerLow" "25" # pressure below this level triggers release<br />
Option "FingerHigh" "30" # pressure above this level triggers touch<br />
Option "MaxTapTime" "180" # max time in ms for detecting tap<br />
'''Option "VertEdgeScroll" "true" # enable vertical scroll zone'''<br />
'''Option "HorizEdgeScroll" "true" # enable horizontal scroll zone'''<br />
Option "CornerCoasting" "true" # enable continuous scroll with finger in corner<br />
Option "CoastingSpeed" "0.30" # corner coasting speed<br />
Option "VertScrollDelta" "100" # edge-to-edge scroll distance of the vertical scroll<br />
Option "HorizScrollDelta" "100" # edge-to-edge scroll distance of the horizontal scroll<br />
Option "MinSpeed" "0.10" # speed factor for low pointer movement<br />
Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement<br />
Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection<br />
<br />
The '''bold''' lines are important because users must now explicitly enable the side and bottom scroll zones of the touchpad. If you already had an InputDevice section configured for the old touchpad driver, you'll still need to add these two lines if you wish to use the scroll zones.<br />
<br />
Save, exit and restart X. The touchpad should now have working scroll zones. You can further tweak the ''InputDevice'' settings if desired. See [[#Advanced_Configuration | Advanced Configuration]] for more information.<br />
<br />
Note that Xorg will automatically load the '''evdev''' and '''psmouse''' kernel modules required by Synaptics, however you may also add them explicitly to the MODULES array in the /etc/rc.conf file if desired.<br />
<br />
====ALPS Touchpads====<br />
<br />
For ALPS Touchpads, if the above configuration does not provide the desired results, try the following configuration instead:<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
InputDevice "Touchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "Device" "/dev/input/mouse0"<br />
Option "Protocol" "auto-dev"<br />
Option "LeftEdge" "130"<br />
Option "RightEdge" "840"<br />
Option "TopEdge" "130"<br />
Option "BottomEdge" "640"<br />
Option "FingerLow" "7"<br />
Option "FingerHigh" "8"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "110"<br />
Option "EmulateMidButtonTime" "75"<br />
Option "VertScrollDelta" "20"<br />
Option "HorizScrollDelta" "20"<br />
Option "MinSpeed" "0.25"<br />
Option "MaxSpeed" "0.50"<br />
Option "AccelFactor" "0.010"<br />
Option "EdgeMotionMinSpeed" "200"<br />
Option "EdgeMotionMaxSpeed" "200"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "1"<br />
Option "CircScrollDelta" "0.1"<br />
Option "CircScrollTrigger" "2"<br />
Option "SHMConfig" "on"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
<br />
==Advanced Configuration==<br />
<br />
===Input device options===<br />
<br />
There are a number of arbitrary parameters that can be tweaked for Synaptics touchpads. The following is a brief list of some of these options--see '''man synaptics''' for full details:<br />
<br />
{| class="wikitable" <br />
|-align="left"<br />
!+Option+<br />
!width=400|+Description+<br />
!width=200|+Type+<br />
|-<br />
|'''Device'''<br />
|Input device location. See [[#Troubleshooting | Troubleshooting]] to find your device handler if it isn't /dev/input/mouse0<br />
|String<br />
|-<br />
|'''MinSpeed'''<br />
|Minimum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''MaxSpeed'''<br />
|Maximum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''AccelFactor'''<br />
|Cursor Acceleration Factor<br />
|Decimal(float)<br />
|-<br />
|'''HorizScrollDelta'''<br />
|Horizontal [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''VertScrollDelta'''<br />
|Vertical [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''SHMConfig'''<br />
|height=100|Activation of shared memory(must be enabled for real-time configuration or [Disable touchpad upon external mouse detection| udev-based disabling]<br />
|Boolean<br />
|}<br />
<br />
===Gsynaptics===<br />
<br />
Once the touchpad is configured, users can also install the '''gsynaptics''' package from [community] to provide a GUI-based configuration solution for the device (note that it depends on libgnomeui):<br />
# pacman -S gsynaptics<br />
<br />
'''''Note:''' The '''gsynaptics''' web page [http://gsynaptics.sourceforge.jp/] indicates that it is becoming obsolete and users should consider '''GPointingDeviceSettings''' [http://live.gnome.org/GPointingDeviceSettings], currently available in AUR and as source code.''<br />
<br />
With hotplugging enabled(default), append this the match section of your 99-x11-synaptics.fdi or 11-x11-synaptics.fdi:<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
===Fine-tuning with synclient===<br />
<br />
The synclient monitor can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. In order for synclient to work properly, the '''SHMConfig''' option must be set to '''on''' or '''true'''.<br />
<br />
You can start the Synaptics monitor with the following command:<br />
$ synclient -m 100<br />
Where -m activates the monitor and the following number specifies the update interval in milliseconds.<br />
<br />
This monitor provides information about the current state of your touchpad. For example, if you move the mouse with the touchpad, the x and y values in the monitor will change. Therewith you can easy figure out your touchpad's dimension which is defined in the LeftEdge-, RightEdge-, BottomEdge- and TopEdge-Options.<br />
<br />
The abbreviations for the parameters are as follow:<br />
<br />
{| class="wikitable"<br />
|- align="left"<br />
!width="200"|+Abbreviation+<br />
!width="400|+Description+<br />
|-<br />
|'''time'''<br />
|Time in seconds since the logging was started.<br />
|-<br />
|'''x, y'''<br />
|The x/y coordinates of the finger on the touchpad. The origin is in the upper left corner.<br />
|-<br />
|'''z'''<br />
|The pressure value. It represents the pressure you are using to navigate on your touchpad.<br />
|-<br />
|'''f'''<br />
|Number of fingers currently touching the touchpad.<br />
|-<br />
|'''w'''<br />
|Value that represents the finger width.<br />
|-<br />
|'''l,r,u,d,m,multi'''<br />
|Those values represent the state of the left, right, up, down, middle and multi buttons pressed where zero means not pressed and one means pressed.<br />
|-<br />
|'''gl,gm,gr'''<br />
|For touchpads which have a guest device, this are the associated button states for guest left, guest middle and guest right pressed (1) and not pressed (0).<br />
|-<br />
|'''gdx, gdy'''<br />
|x/y coordinates of the guest device.<br />
|}<br />
If a value constantly is zero, it implies that this option is not supported by your device.<br />
<br />
===Edge scrolling===<br />
<br />
To enable the scroll zones found along the edges of the touchpad, add one or both of the following options to the touchpad device section in /etc/X11/xorg.conf:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "VertEdgeScroll" "true" #vertical scrolling when dragging along the right edge.<br />
Option "HorizEdgeScroll" "true" #horizontal scrolling when dragging along the bottom edge.<br />
...<br />
EndSection<br />
<br />
In ''/etc/hal/fdi/policy/11-x11-synaptics.fdi''(or if that doesn't work, ''/etc/hal/fdi/policy/99-x11-synaptics.fdi) for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
...<br />
</match><br />
<br />
===Two-Finger scrolling===<br />
<br />
Recent Synaptics touchpads support two-finger scrolling. This allows you to use two fingers together anywhere on the touchpad, similar to the behaviour of Macbooks.<br />
<br />
If your hardware supports this feature, you can enable it by inserting the following lines into the touchpad device section of /etc/X11/xorg.conf:<br />
Section "InputDevice"<br />
...<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "EmulateTwoFingerMinZ" "120" # this may vary between different machines<br />
...<br />
EndSection<br />
<br />
''EmulateTwoFingerMinZ'' is only necessary for the ALPS Touchpad, which several Dell machines have. ([http://ubuntuforums.org/showthread.php?t=516798&page=2#19 from Ubuntu forums]) <br />
<br />
'''Firefox users:''' You might find the default behaviour of Firefox pretty annoying relating to the horizontal scrolling. Just see ''Firefox and special touchpad events'' below to find out how to disable it.<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi'''(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
...<br />
</match><br />
<br />
Some users might need to modify the ''EmulateTwoFingerMinW'' parameter, as their touch pads sense two fingers as one wide finger. You can check which parameters you need to modify by running '''synclient -m 150''' -- when you touch two fingers to the touch pad, observe which parameters (z, w, or f) change. Those will determine the minimum threshold values you must set (if f changes, don't bother with ''EmulateTwoFingerMin[W,Z]'' since you do not need to emulate two fingers, your touch pad can simply sense two different fingers).<br />
<br />
===Circular scrolling===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of '''/etc/X11/xorg.conf''':<br />
Section "InputDevice"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi';'(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.CircularScrolling" type="string">on</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">0</merge><br />
...<br />
</match><br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
===Software Toggle===<br />
<br />
You may find it useful to have a software toggle that will turn on or off your touchpad, esplicially if it's extremely sensitive and your doing a lot of typing. Please also see [[#Disable touchpad upon external mouse detection | Disable on external mouse detection]] and [[#Stopping the mouse from clicking while typing | Stopping the mouse while typing]] as those may be better solutions, again a matter of choice. The advantage here is you have the control, while the other solutions have daemons determine when to turn off the trackpad.<br />
<br />
You will want to grab [[xbindkeys]] if you don't already have key binding software.<br />
<br />
Then save this script to something such as /sbin/trackpad-toggle.sh:<br />
<br />
#!/bin/bash<br />
<br />
if [ -n "`lsmod | grep psmouse`" ]; then<br />
rmmod psmouse<br />
else<br />
modprobe psmouse<br />
fi<br />
<br />
If you use sudo, you'll likely want to add an entry to your sudoers file:<br />
<br />
visudo<br />
<br />
Then finally add a key binding to use the script, but remember that it must be run as root, so using a graphical editor here likely won't work. It is best to add the script to sudoers with ''NOPASSWD'' and call with xbindkeys like so:<br />
<br />
"sudo /sbin/trackpad-toggle.sh"<br />
m:0x5 + c:65<br />
Control+Shift + space<br />
<br />
now just (re)start xbindkeys and ctrl+Shift+Space will now toggle your trackpad !<br />
<br />
==Troubleshooting==<br />
<br />
===No scrolling/tapping with Gnome 2.28===<br />
<br />
Gnome 2.28 introduces a few additional features for managing touchpads. This change takes preference over previously configured options in the HAL policy file and thus may surprise some unsuspecting people. To change the Gnome 2.28 touchpad settings, go to ''System->Preferences->Mouse->Touchpad''.<br />
<br />
===Synaptics Special Ability===<br />
<br />
By default, Synaptics touchpads are able to detect the number of fingers on the touchpad; ALPS touchpads are not. If the touchpad is tapped with two fingers, it will emulate a middle click. If the touchpad is typed with three fingers, a right click will be emulated.<br />
<br />
===Disable touchpad upon external mouse detection===<br />
<br />
In assistance to [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, add the following udev rule to '''/etc/udev/rules.d/01-touchpad.rules''':<br />
ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=1"<br />
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=0"<br />
<br />
SHMConfig must be enabled (see the '''Configuration''' section for details)<br />
<br />
===Cursor Jump===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
===Multitouch===<br />
<br />
Multitouch gesture like in Mac OS X will be in future version of the driver.<br />
<br />
===Touchpad device isn't located at /dev/input/mouse0===<br />
<br />
If that's the case, you can use this command to display information about your input devices:<br />
cat /proc/bus/input/devices<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
<br />
In this case, the Handlers are mouse0 and event1, so /dev/input/mouse0 would be used.<br />
<br />
===Stopping the mouse from clicking while typing===<br />
<br />
To have the touchpad disabled automatically when you begin typing, add the following line to your .xinitrc before you run your window manager:<br />
syndaemon -i 2 &<br />
<br />
The '''-i 2''' switch sets the idle time to 2 seconds. The idle time specifies how many seconds to wait after the last key-press before enabling the touchpad again.<br />
<br />
Additionally you can add the '''-t''' switch that tells the daemon not to disable mouse movement when typing and only disable tapping and scrolling:<br />
syndaemon -t -i 2 &<br />
<br />
As usual you may find further information in the manpage:<br />
$ man syndaemon<br />
<br />
Note: Don't forget to enable SHMConfig in your xorg-setup, either in /etc/xorg.conf (hotplugging disabled) or in /etc/hal/fdi/policy/11-x11-synaptics.fdi (hotplugging enabled). Some users may need to specify touchpad preferences in /etc/hal/fdi/policy/99-x11-synaptics.fdi, instead.<br />
<br />
Note: If you're using GDM as your login manager and Gnome, GDM will ignore commands added to .xinitrc, other than the command to start Gnome. To start syndaemon you need to use Gnome's Startup Applications Preferences program. Login to Gnome and go to System > Preferences > Startup Applications. In the Startup Programs tab click the Add button. Name the Startup Program whatever you like and input any comments you like (or leave this field blank). In the command field add:<br />
syndaemon -i 2 -d<br />
<br />
The "-d" option is necessary to start syndaemon as a background process, instead of the "&" which does this in .xinitrc. You can add other options as well, the same way you would in .xinitrc. When you're done click the Add button in the Add Startup Program dialogue. Make sure the check box next to the startup program you've created is checked, in the list of additional startup programs. Close the Startup Applications Preferences window and you're done.<br />
<br />
===Firefox and special touchpad events===<br />
<br />
By default, Firefox is set up to do special events upon tapping or scrolling certain parts of your touchpad.<br />
You can edit the settings of those actions by typing '''about:config''' in your Firefox address bar.<br />
To alter these options, double-click on the line in question, changing "true" to "false" and vise versa.<br />
<br />
To prevent Firefox from scrolling (backward/forward) through browser history and instead scroll through pages, edit these settings as shown:<br />
mousewheel.horizscroll.withnokey.action = 1<br />
mousewheel.horizscroll.withnokey.sysnumlines = true<br />
<br />
To prevent Firefox from redirecting you to URLs formed from your clipboard content upon tapping the upper-right corner of your touchpad (or middle mouse button), set the following option to "false":<br />
middlemouse.contentLoadURL = false<br />
<br />
===Opera: horizontal scrolling issues===<br />
<br />
Same as above.<br />
To fix it, go to Tools -> Preferences -> Advanced -> Shortcuts. There you edit the mouse preferences: Delete the entries with "Button 5" and "Button 6".<br />
<br />
===Scrolling and multiple actions with Synaptics on LG Laptops===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in xorg.conf:<br />
Option "UpDownScrolling" "0"<br />
<br />
NOTE that this will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git] .<br />
<br />
There is also a package build file in the AUR to automate this: [http://aur.archlinux.org/packages.php?ID=15983].<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
cd synaptics-git<br />
makepkg<br />
<br />
If you want it to be automatically installed after being built, just add '-i' after makepkg.<br />
<br />
===Other external mouse issues===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
Option "Device" "/dev/input/mice"<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this doesn't solve your problem, make your '''touchpad''' the CorePointer in the "Server Layout" section:<br />
<br />
InputDevice "Touchpad" "CorePointer"<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
InputDevice "USB Mouse" "SendCoreEvents"<br />
<br />
finally add this to your external device's section:<br />
<br />
Option "SendCoreEvents" "true"<br />
<br />
If all of the above doesn't work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
===Touchpad synchronization issues===<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in /var/log/messages.log<br />
<br />
psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
*If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
*Avoid using an ACPI battery monitor.<br />
*Attempt to load psmouse with "proto=imps" option. To do that, add this line to your /etc/modprobe.conf:<br />
<br />
options psmouse proto=imps<br />
<br />
*Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Tapping issues===<br />
<br />
If you are not using [[Xorg input hotplugging]], you should know that Xorg v7.4 does not enable tapping by default. To enable it, add the following line to the touchpad's InputDevice section in <tt>/etc/X11/xorg.conf</tt>:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "TapButton1" "''integer''"<br />
Option "TapButton2" "''integer''"<br />
Option "TapButton3" "''integer''"<br />
...<br />
EndSection<br />
The ''integer'' of option "TapButton1" means which mouse button is reported on a non-corner one-finger tap. Usually it is 1.<br />
The ''integer'' of option "TapButton2" means which mouse button is reported on a non-corner two-finger tap. Usually it is 2.<br />
The ''integer'' of option "TapButton3" means which mouse button is reported on a non-corner three-finger tap. Usually it is 3.<br />
<br />
===Delay between a button tap and the actual click===<br />
<br />
If you experience a delay between the tap on the touchpad and the actual click that is registered you need to enable FastTaps:<br />
<br />
If you're using input hotplugging(default behavior), change your 11-x11-synaptics.fdi(or 99-x11-synaptics.fdi, in some cases) so that it contains:<br />
<br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
If you're using xorg-server with disabled input hotplugging change xorg.conf so that you have:<br />
<br />
Section "InputDevice"<br />
Identifier "Synaptics Touchpad"<br />
Driver "synaptics"<br />
...<br />
Option "FastTaps" "1"<br />
...<br />
EndSection<br />
<br />
===SynPS/2 Synaptics TouchPad can't grab event device, errno=16===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from /var/log/Xorg.0.log, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes /dev/input/mice as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in xorg.conf:<br />
<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
==External Resources==<br />
<br />
Synaptics TouchPad driver: [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/]<br />
<!-- vim: set ft=Wikipedia: --></div>Code mhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=86273Touchpad Synaptics2009-12-04T03:45:41Z<p>Code m: /* Software Toggle */</p>
<hr />
<div>[[Category:Input devices (English)]][[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Touchpad Synaptics}}<br />
{{i18n_entry|German|Touchpad Synaptics (Deutsch)}}<br />
{{i18n_entry|Русский|Тачпад Synaptics}}<br />
{{i18n_entry|简体中文|触摸板 (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
==Installation==<br />
<br />
The Synaptics driver is now bundled as ''xf86-input-synaptics'', and is available in the [[Official_Repositories|[extra] repository]]:<br />
<br />
# pacman -S xf86-input-synaptics<br />
<br />
==Configuration==<br />
<br />
Configuration for the touchpad should done by tweaking options in the XML format *.fdi policy file with latest Xserver installed using [[Xorg input hotplugging|hotplugging]]. Alternatively, configuration can be done using xorg.conf. Please note, however, that this method of configuring is deprecated and might stop working in the future. Configuration by HAL policy is therefore encouraged.<br />
<br />
===Configuration via HAL policy (hotplugging enabled, recommended) ===<br />
<br />
With [[Xorg input hotplugging|hotplugging]] (enabled by default) and HAL installed and running, your Synaptics should works "out-of-the-box".<br />
<br />
If it doesn't or you want to tweak the configuration, you will need to edit the appropriate HAL policy file (XML format).<br />
Note that in this case.<br />
<br />
Copy '''/usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi''' into '''/etc/hal/fdi/policy/'''<br />
cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/<br />
<br />
Now you can modify the new file appending new options.<br />
<br />
Here's a simple template to begin with, covering the more common features:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<!-- <match key="info.product" contains="AlpsPS/2 ALPS GlidePoint"> #ALPS users may need to use this instead of the above --><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.AlwaysCore" type="string">true</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.protocol" type="string">event</merge><br />
<merge key="input.x11_options.touchpadoff" type="string">0</merge><br />
<merge key="input.x11_options.shmconfig" type="string">on</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The syntax is similar to xorg.conf, for instance, <br />
Option "RightEdge" "5300"<br />
equates to this .fdi file line:<br />
<merge key="input.x11_options.RightEdge" type="string">5300</merge><br />
{{Box Note| In the .fdi file, every type must be "string" instead of "float" or "int" as per xorg.conf.}}<br />
{{Box Note| You might need to run '''/etc/rc.d/hal restart''' in order for the changes to take place.}}<br />
<br />
====Advanced policy configuration====<br />
<br />
The Synaptics driver allows for a vast amount of options to be tweaked. Luckily, all of them are consistently named and well documented in Synaptic's manpage.<br />
man synaptics<br />
<br />
The following shall serve as an advanced configuration example for '''11-x11-synaptics.fdi''':<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
<merge key="input.x11_options.MinSpeed" type="string">0.1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">0.4</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.002</merge><br />
<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.VerteScrollDelta" type="string">2</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.CircularScrolling" type="string">true</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">8</merge><br />
<merge key="input.x11_options.CircScrollDelta" type="string">0.1</merge><br />
<br />
<!-- Values here might differ! Use synclient -m 20 to find desired values --><br />
<merge key="input.x11_options.LeftEdge" type="string">2000</merge><br />
<merge key="input.x11_options.TopEdge" type="string">2000</merge><br />
<br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
====Other products====<br />
<br />
* ALPS users may try the following if the above does not work:<br />
<br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with MacBook (1,1 2,1 etc...)<br />
<br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with latest MacBook (5,1)<br />
<br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
{{Box Note| You can find the exact information for your touchpad in /proc/bus/input/devices.}}<br />
<br />
Or, if you find HAL is not loading your settings, try this template (the "append" child is necessary for some setups):<br />
<br />
<pre><br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="SynPS/2 Synaptics TouchPad"><br />
<append key="info.capabilities" type="strlist">input.touchpad</append><br />
</match><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
[...]<br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
<br />
===Configuration via xorg.conf (hotplugging disabled, deprecated) ===<br />
<br />
Edit ''/etc/X11/xorg.conf'' as root and add '''InputDevice "Touchpad" "SendCoreEvents"''' to the ''ServerLayout'':<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
'''''InputDevice "SynapticsTouchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Add '''Load "synaptics"''' to the ''Module'' section:<br />
Section "Module"<br />
...<br />
Load "glx"<br />
Load "freetype"<br />
'''''Load "synaptics"'''''<br />
...<br />
EndSection<br />
<br />
Lastly, add a new ''InputDevice'' section for the touchpad itself:<br />
Section "InputDevice"<br />
Identifier "SynapticsTouchpad"<br />
Driver "synaptics"<br />
Option "AlwaysCore" "true" # send events to CorePointer<br />
#Option "Device" "/dev/input/mice"<br />
Option "Device" "/dev/psaux"<br />
Option "Protocol" "auto-dev"<br />
Option "SHMConfig" "false" # configurable at runtime? security risk<br />
Option "LeftEdge" "1700" # x coord left<br />
Option "RightEdge" "5300" # x coord right<br />
Option "TopEdge" "1700" # y coord top<br />
Option "BottomEdge" "4200" # y coord bottom<br />
Option "FingerLow" "25" # pressure below this level triggers release<br />
Option "FingerHigh" "30" # pressure above this level triggers touch<br />
Option "MaxTapTime" "180" # max time in ms for detecting tap<br />
'''Option "VertEdgeScroll" "true" # enable vertical scroll zone'''<br />
'''Option "HorizEdgeScroll" "true" # enable horizontal scroll zone'''<br />
Option "CornerCoasting" "true" # enable continuous scroll with finger in corner<br />
Option "CoastingSpeed" "0.30" # corner coasting speed<br />
Option "VertScrollDelta" "100" # edge-to-edge scroll distance of the vertical scroll<br />
Option "HorizScrollDelta" "100" # edge-to-edge scroll distance of the horizontal scroll<br />
Option "MinSpeed" "0.10" # speed factor for low pointer movement<br />
Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement<br />
Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection<br />
<br />
The '''bold''' lines are important because users must now explicitly enable the side and bottom scroll zones of the touchpad. If you already had an InputDevice section configured for the old touchpad driver, you'll still need to add these two lines if you wish to use the scroll zones.<br />
<br />
Save, exit and restart X. The touchpad should now have working scroll zones. You can further tweak the ''InputDevice'' settings if desired. See [[#Advanced_Configuration | Advanced Configuration]] for more information.<br />
<br />
Note that Xorg will automatically load the '''evdev''' and '''psmouse''' kernel modules required by Synaptics, however you may also add them explicitly to the MODULES array in the /etc/rc.conf file if desired.<br />
<br />
====ALPS Touchpads====<br />
<br />
For ALPS Touchpads, if the above configuration does not provide the desired results, try the following configuration instead:<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
InputDevice "Touchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "Device" "/dev/input/mouse0"<br />
Option "Protocol" "auto-dev"<br />
Option "LeftEdge" "130"<br />
Option "RightEdge" "840"<br />
Option "TopEdge" "130"<br />
Option "BottomEdge" "640"<br />
Option "FingerLow" "7"<br />
Option "FingerHigh" "8"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "110"<br />
Option "EmulateMidButtonTime" "75"<br />
Option "VertScrollDelta" "20"<br />
Option "HorizScrollDelta" "20"<br />
Option "MinSpeed" "0.25"<br />
Option "MaxSpeed" "0.50"<br />
Option "AccelFactor" "0.010"<br />
Option "EdgeMotionMinSpeed" "200"<br />
Option "EdgeMotionMaxSpeed" "200"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "1"<br />
Option "CircScrollDelta" "0.1"<br />
Option "CircScrollTrigger" "2"<br />
Option "SHMConfig" "on"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
<br />
==Advanced Configuration==<br />
<br />
===Input device options===<br />
<br />
There are a number of arbitrary parameters that can be tweaked for Synaptics touchpads. The following is a brief list of some of these options--see '''man synaptics''' for full details:<br />
<br />
{| class="wikitable" <br />
|-align="left"<br />
!+Option+<br />
!width=400|+Description+<br />
!width=200|+Type+<br />
|-<br />
|'''Device'''<br />
|Input device location. See [[#Troubleshooting | Troubleshooting]] to find your device handler if it isn't /dev/input/mouse0<br />
|String<br />
|-<br />
|'''MinSpeed'''<br />
|Minimum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''MaxSpeed'''<br />
|Maximum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''AccelFactor'''<br />
|Cursor Acceleration Factor<br />
|Decimal(float)<br />
|-<br />
|'''HorizScrollDelta'''<br />
|Horizontal [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''VertScrollDelta'''<br />
|Vertical [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''SHMConfig'''<br />
|height=100|Activation of shared memory(must be enabled for real-time configuration or [Disable touchpad upon external mouse detection| udev-based disabling]<br />
|Boolean<br />
|}<br />
<br />
===Gsynaptics===<br />
<br />
Once the touchpad is configured, users can also install the '''gsynaptics''' package from [community] to provide a GUI-based configuration solution for the device (note that it depends on libgnomeui):<br />
# pacman -S gsynaptics<br />
<br />
'''''Note:''' The '''gsynaptics''' web page [http://gsynaptics.sourceforge.jp/] indicates that it is becoming obsolete and users should consider '''GPointingDeviceSettings''' [http://live.gnome.org/GPointingDeviceSettings], currently available in AUR and as source code.''<br />
<br />
With hotplugging enabled(default), append this the match section of your 99-x11-synaptics.fdi or 11-x11-synaptics.fdi:<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
===Fine-tuning with synclient===<br />
<br />
The synclient monitor can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. In order for synclient to work properly, the '''SHMConfig''' option must be set to '''on''' or '''true'''.<br />
<br />
You can start the Synaptics monitor with the following command:<br />
$ synclient -m 100<br />
Where -m activates the monitor and the following number specifies the update interval in milliseconds.<br />
<br />
This monitor provides information about the current state of your touchpad. For example, if you move the mouse with the touchpad, the x and y values in the monitor will change. Therewith you can easy figure out your touchpad's dimension which is defined in the LeftEdge-, RightEdge-, BottomEdge- and TopEdge-Options.<br />
<br />
The abbreviations for the parameters are as follow:<br />
<br />
{| class="wikitable"<br />
|- align="left"<br />
!width="200"|+Abbreviation+<br />
!width="400|+Description+<br />
|-<br />
|'''time'''<br />
|Time in seconds since the logging was started.<br />
|-<br />
|'''x, y'''<br />
|The x/y coordinates of the finger on the touchpad. The origin is in the upper left corner.<br />
|-<br />
|'''z'''<br />
|The pressure value. It represents the pressure you are using to navigate on your touchpad.<br />
|-<br />
|'''f'''<br />
|Number of fingers currently touching the touchpad.<br />
|-<br />
|'''w'''<br />
|Value that represents the finger width.<br />
|-<br />
|'''l,r,u,d,m,multi'''<br />
|Those values represent the state of the left, right, up, down, middle and multi buttons pressed where zero means not pressed and one means pressed.<br />
|-<br />
|'''gl,gm,gr'''<br />
|For touchpads which have a guest device, this are the associated button states for guest left, guest middle and guest right pressed (1) and not pressed (0).<br />
|-<br />
|'''gdx, gdy'''<br />
|x/y coordinates of the guest device.<br />
|}<br />
If a value constantly is zero, it implies that this option is not supported by your device.<br />
<br />
===Edge scrolling===<br />
<br />
To enable the scroll zones found along the edges of the touchpad, add one or both of the following options to the touchpad device section in /etc/X11/xorg.conf:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "VertEdgeScroll" "true" #vertical scrolling when dragging along the right edge.<br />
Option "HorizEdgeScroll" "true" #horizontal scrolling when dragging along the bottom edge.<br />
...<br />
EndSection<br />
<br />
In ''/etc/hal/fdi/policy/11-x11-synaptics.fdi''(or if that doesn't work, ''/etc/hal/fdi/policy/99-x11-synaptics.fdi) for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
...<br />
</match><br />
<br />
===Two-Finger scrolling===<br />
<br />
Recent Synaptics touchpads support two-finger scrolling. This allows you to use two fingers together anywhere on the touchpad, similar to the behaviour of Macbooks.<br />
<br />
If your hardware supports this feature, you can enable it by inserting the following lines into the touchpad device section of /etc/X11/xorg.conf:<br />
Section "InputDevice"<br />
...<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "EmulateTwoFingerMinZ" "120" # this may vary between different machines<br />
...<br />
EndSection<br />
<br />
''EmulateTwoFingerMinZ'' is only necessary for the ALPS Touchpad, which several Dell machines have. ([http://ubuntuforums.org/showthread.php?t=516798&page=2#19 from Ubuntu forums]) <br />
<br />
'''Firefox users:''' You might find the default behaviour of Firefox pretty annoying relating to the horizontal scrolling. Just see ''Firefox and special touchpad events'' below to find out how to disable it.<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi'''(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
...<br />
</match><br />
<br />
Some users might need to modify the ''EmulateTwoFingerMinW'' parameter, as their touch pads sense two fingers as one wide finger. You can check which parameters you need to modify by running '''synclient -m 150''' -- when you touch two fingers to the touch pad, observe which parameters (z, w, or f) change. Those will determine the minimum threshold values you must set (if f changes, don't bother with ''EmulateTwoFingerMin[W,Z]'' since you do not need to emulate two fingers, your touch pad can simply sense two different fingers).<br />
<br />
===Circular scrolling===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of '''/etc/X11/xorg.conf''':<br />
Section "InputDevice"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi';'(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.CircularScrolling" type="string">on</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">0</merge><br />
...<br />
</match><br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
===Software Toggle===<br />
<br />
You may find it useful to have a software toggle that will turn on or off your touchpad, esplicially if it's extremely sensitive and your doing a lot of typing. Please also see [[#Disable touchpad upon external mouse detection]] and [[#Stopping the mouse from clicking while typing]] as those may be better solutions, again a matter of choice. The advantage here is you have the control, while the other solutions have daemons determine when to turn off the trackpad.<br />
<br />
You will want to grab [[xbindkeys]] if you don't already have key binding software.<br />
<br />
Then save this script to something such as /sbin/trackpad-toggle.sh:<br />
<br />
#!/bin/bash<br />
<br />
if [ -n "`lsmod | grep psmouse`" ]; then<br />
rmmod psmouse<br />
else<br />
modprobe psmouse<br />
fi<br />
<br />
If you use sudo, you'll likely want to add an entry to your sudoers file:<br />
<br />
visudo<br />
<br />
Then finally add a key binding to use the script, but remember that it must be run as root, so using a graphical editor here likely won't work. It is best to add the script to sudoers with ''NOPASSWD'' and call with xbindkeys like so:<br />
<br />
"sudo /sbin/trackpad-toggle.sh"<br />
m:0x5 + c:65<br />
Control+Shift + space<br />
<br />
now just (re)start xbindkeys and ctrl+Shift+Space will now toggle your trackpad !<br />
<br />
==Troubleshooting==<br />
<br />
===No scrolling/tapping with Gnome 2.28===<br />
<br />
Gnome 2.28 introduces a few additional features for managing touchpads. This change takes preference over previously configured options in the HAL policy file and thus may surprise some unsuspecting people. To change the Gnome 2.28 touchpad settings, go to ''System->Preferences->Mouse->Touchpad''.<br />
<br />
===Synaptics Special Ability===<br />
<br />
By default, Synaptics touchpads are able to detect the number of fingers on the touchpad; ALPS touchpads are not. If the touchpad is tapped with two fingers, it will emulate a middle click. If the touchpad is typed with three fingers, a right click will be emulated.<br />
<br />
===Disable touchpad upon external mouse detection===<br />
<br />
In assistance to [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, add the following udev rule to '''/etc/udev/rules.d/01-touchpad.rules''':<br />
ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=1"<br />
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=0"<br />
<br />
SHMConfig must be enabled (see the '''Configuration''' section for details)<br />
<br />
===Cursor Jump===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
===Multitouch===<br />
<br />
Multitouch gesture like in Mac OS X will be in future version of the driver.<br />
<br />
===Touchpad device isn't located at /dev/input/mouse0===<br />
<br />
If that's the case, you can use this command to display information about your input devices:<br />
cat /proc/bus/input/devices<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
<br />
In this case, the Handlers are mouse0 and event1, so /dev/input/mouse0 would be used.<br />
<br />
===Stopping the mouse from clicking while typing===<br />
<br />
To have the touchpad disabled automatically when you begin typing, add the following line to your .xinitrc before you run your window manager:<br />
syndaemon -i 2 &<br />
<br />
The '''-i 2''' switch sets the idle time to 2 seconds. The idle time specifies how many seconds to wait after the last key-press before enabling the touchpad again.<br />
<br />
Additionally you can add the '''-t''' switch that tells the daemon not to disable mouse movement when typing and only disable tapping and scrolling:<br />
syndaemon -t -i 2 &<br />
<br />
As usual you may find further information in the manpage:<br />
$ man syndaemon<br />
<br />
Note: Don't forget to enable SHMConfig in your xorg-setup, either in /etc/xorg.conf (hotplugging disabled) or in /etc/hal/fdi/policy/11-x11-synaptics.fdi (hotplugging enabled). Some users may need to specify touchpad preferences in /etc/hal/fdi/policy/99-x11-synaptics.fdi, instead.<br />
<br />
Note: If you're using GDM as your login manager and Gnome, GDM will ignore commands added to .xinitrc, other than the command to start Gnome. To start syndaemon you need to use Gnome's Startup Applications Preferences program. Login to Gnome and go to System > Preferences > Startup Applications. In the Startup Programs tab click the Add button. Name the Startup Program whatever you like and input any comments you like (or leave this field blank). In the command field add:<br />
syndaemon -i 2 -d<br />
<br />
The "-d" option is necessary to start syndaemon as a background process, instead of the "&" which does this in .xinitrc. You can add other options as well, the same way you would in .xinitrc. When you're done click the Add button in the Add Startup Program dialogue. Make sure the check box next to the startup program you've created is checked, in the list of additional startup programs. Close the Startup Applications Preferences window and you're done.<br />
<br />
===Firefox and special touchpad events===<br />
<br />
By default, Firefox is set up to do special events upon tapping or scrolling certain parts of your touchpad.<br />
You can edit the settings of those actions by typing '''about:config''' in your Firefox address bar.<br />
To alter these options, double-click on the line in question, changing "true" to "false" and vise versa.<br />
<br />
To prevent Firefox from scrolling (backward/forward) through browser history and instead scroll through pages, edit these settings as shown:<br />
mousewheel.horizscroll.withnokey.action = 1<br />
mousewheel.horizscroll.withnokey.sysnumlines = true<br />
<br />
To prevent Firefox from redirecting you to URLs formed from your clipboard content upon tapping the upper-right corner of your touchpad (or middle mouse button), set the following option to "false":<br />
middlemouse.contentLoadURL = false<br />
<br />
===Opera: horizontal scrolling issues===<br />
<br />
Same as above.<br />
To fix it, go to Tools -> Preferences -> Advanced -> Shortcuts. There you edit the mouse preferences: Delete the entries with "Button 5" and "Button 6".<br />
<br />
===Scrolling and multiple actions with Synaptics on LG Laptops===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in xorg.conf:<br />
Option "UpDownScrolling" "0"<br />
<br />
NOTE that this will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git] .<br />
<br />
There is also a package build file in the AUR to automate this: [http://aur.archlinux.org/packages.php?ID=15983].<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
cd synaptics-git<br />
makepkg<br />
<br />
If you want it to be automatically installed after being built, just add '-i' after makepkg.<br />
<br />
===Other external mouse issues===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
Option "Device" "/dev/input/mice"<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this doesn't solve your problem, make your '''touchpad''' the CorePointer in the "Server Layout" section:<br />
<br />
InputDevice "Touchpad" "CorePointer"<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
InputDevice "USB Mouse" "SendCoreEvents"<br />
<br />
finally add this to your external device's section:<br />
<br />
Option "SendCoreEvents" "true"<br />
<br />
If all of the above doesn't work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
===Touchpad synchronization issues===<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in /var/log/messages.log<br />
<br />
psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
*If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
*Avoid using an ACPI battery monitor.<br />
*Attempt to load psmouse with "proto=imps" option. To do that, add this line to your /etc/modprobe.conf:<br />
<br />
options psmouse proto=imps<br />
<br />
*Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Tapping issues===<br />
<br />
If you are not using [[Xorg input hotplugging]], you should know that Xorg v7.4 does not enable tapping by default. To enable it, add the following line to the touchpad's InputDevice section in <tt>/etc/X11/xorg.conf</tt>:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "TapButton1" "''integer''"<br />
Option "TapButton2" "''integer''"<br />
Option "TapButton3" "''integer''"<br />
...<br />
EndSection<br />
The ''integer'' of option "TapButton1" means which mouse button is reported on a non-corner one-finger tap. Usually it is 1.<br />
The ''integer'' of option "TapButton2" means which mouse button is reported on a non-corner two-finger tap. Usually it is 2.<br />
The ''integer'' of option "TapButton3" means which mouse button is reported on a non-corner three-finger tap. Usually it is 3.<br />
<br />
===Delay between a button tap and the actual click===<br />
<br />
If you experience a delay between the tap on the touchpad and the actual click that is registered you need to enable FastTaps:<br />
<br />
If you're using input hotplugging(default behavior), change your 11-x11-synaptics.fdi(or 99-x11-synaptics.fdi, in some cases) so that it contains:<br />
<br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
If you're using xorg-server with disabled input hotplugging change xorg.conf so that you have:<br />
<br />
Section "InputDevice"<br />
Identifier "Synaptics Touchpad"<br />
Driver "synaptics"<br />
...<br />
Option "FastTaps" "1"<br />
...<br />
EndSection<br />
<br />
===SynPS/2 Synaptics TouchPad can't grab event device, errno=16===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from /var/log/Xorg.0.log, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes /dev/input/mice as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in xorg.conf:<br />
<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
==External Resources==<br />
<br />
Synaptics TouchPad driver: [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/]<br />
<!-- vim: set ft=Wikipedia: --></div>Code mhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=86271Touchpad Synaptics2009-12-04T03:17:53Z<p>Code m: /* Software Toggle */</p>
<hr />
<div>[[Category:Input devices (English)]][[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Touchpad Synaptics}}<br />
{{i18n_entry|German|Touchpad Synaptics (Deutsch)}}<br />
{{i18n_entry|Русский|Тачпад Synaptics}}<br />
{{i18n_entry|简体中文|触摸板 (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
==Installation==<br />
<br />
The Synaptics driver is now bundled as ''xf86-input-synaptics'', and is available in the [[Official_Repositories|[extra] repository]]:<br />
<br />
# pacman -S xf86-input-synaptics<br />
<br />
==Configuration==<br />
<br />
Configuration for the touchpad should done by tweaking options in the XML format *.fdi policy file with latest Xserver installed using [[Xorg input hotplugging|hotplugging]]. Alternatively, configuration can be done using xorg.conf. Please note, however, that this method of configuring is deprecated and might stop working in the future. Configuration by HAL policy is therefore encouraged.<br />
<br />
===Configuration via HAL policy (hotplugging enabled, recommended) ===<br />
<br />
With [[Xorg input hotplugging|hotplugging]] (enabled by default) and HAL installed and running, your Synaptics should works "out-of-the-box".<br />
<br />
If it doesn't or you want to tweak the configuration, you will need to edit the appropriate HAL policy file (XML format).<br />
Note that in this case.<br />
<br />
Copy '''/usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi''' into '''/etc/hal/fdi/policy/'''<br />
cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/<br />
<br />
Now you can modify the new file appending new options.<br />
<br />
Here's a simple template to begin with, covering the more common features:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<!-- <match key="info.product" contains="AlpsPS/2 ALPS GlidePoint"> #ALPS users may need to use this instead of the above --><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.AlwaysCore" type="string">true</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.protocol" type="string">event</merge><br />
<merge key="input.x11_options.touchpadoff" type="string">0</merge><br />
<merge key="input.x11_options.shmconfig" type="string">on</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The syntax is similar to xorg.conf, for instance, <br />
Option "RightEdge" "5300"<br />
equates to this .fdi file line:<br />
<merge key="input.x11_options.RightEdge" type="string">5300</merge><br />
{{Box Note| In the .fdi file, every type must be "string" instead of "float" or "int" as per xorg.conf.}}<br />
{{Box Note| You might need to run '''/etc/rc.d/hal restart''' in order for the changes to take place.}}<br />
<br />
====Advanced policy configuration====<br />
<br />
The Synaptics driver allows for a vast amount of options to be tweaked. Luckily, all of them are consistently named and well documented in Synaptic's manpage.<br />
man synaptics<br />
<br />
The following shall serve as an advanced configuration example for '''11-x11-synaptics.fdi''':<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
<merge key="input.x11_options.MinSpeed" type="string">0.1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">0.4</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.002</merge><br />
<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.VerteScrollDelta" type="string">2</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.CircularScrolling" type="string">true</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">8</merge><br />
<merge key="input.x11_options.CircScrollDelta" type="string">0.1</merge><br />
<br />
<!-- Values here might differ! Use synclient -m 20 to find desired values --><br />
<merge key="input.x11_options.LeftEdge" type="string">2000</merge><br />
<merge key="input.x11_options.TopEdge" type="string">2000</merge><br />
<br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
====Other products====<br />
<br />
* ALPS users may try the following if the above does not work:<br />
<br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with MacBook (1,1 2,1 etc...)<br />
<br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with latest MacBook (5,1)<br />
<br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
{{Box Note| You can find the exact information for your touchpad in /proc/bus/input/devices.}}<br />
<br />
Or, if you find HAL is not loading your settings, try this template (the "append" child is necessary for some setups):<br />
<br />
<pre><br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="SynPS/2 Synaptics TouchPad"><br />
<append key="info.capabilities" type="strlist">input.touchpad</append><br />
</match><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
[...]<br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
<br />
===Configuration via xorg.conf (hotplugging disabled, deprecated) ===<br />
<br />
Edit ''/etc/X11/xorg.conf'' as root and add '''InputDevice "Touchpad" "SendCoreEvents"''' to the ''ServerLayout'':<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
'''''InputDevice "SynapticsTouchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Add '''Load "synaptics"''' to the ''Module'' section:<br />
Section "Module"<br />
...<br />
Load "glx"<br />
Load "freetype"<br />
'''''Load "synaptics"'''''<br />
...<br />
EndSection<br />
<br />
Lastly, add a new ''InputDevice'' section for the touchpad itself:<br />
Section "InputDevice"<br />
Identifier "SynapticsTouchpad"<br />
Driver "synaptics"<br />
Option "AlwaysCore" "true" # send events to CorePointer<br />
#Option "Device" "/dev/input/mice"<br />
Option "Device" "/dev/psaux"<br />
Option "Protocol" "auto-dev"<br />
Option "SHMConfig" "false" # configurable at runtime? security risk<br />
Option "LeftEdge" "1700" # x coord left<br />
Option "RightEdge" "5300" # x coord right<br />
Option "TopEdge" "1700" # y coord top<br />
Option "BottomEdge" "4200" # y coord bottom<br />
Option "FingerLow" "25" # pressure below this level triggers release<br />
Option "FingerHigh" "30" # pressure above this level triggers touch<br />
Option "MaxTapTime" "180" # max time in ms for detecting tap<br />
'''Option "VertEdgeScroll" "true" # enable vertical scroll zone'''<br />
'''Option "HorizEdgeScroll" "true" # enable horizontal scroll zone'''<br />
Option "CornerCoasting" "true" # enable continuous scroll with finger in corner<br />
Option "CoastingSpeed" "0.30" # corner coasting speed<br />
Option "VertScrollDelta" "100" # edge-to-edge scroll distance of the vertical scroll<br />
Option "HorizScrollDelta" "100" # edge-to-edge scroll distance of the horizontal scroll<br />
Option "MinSpeed" "0.10" # speed factor for low pointer movement<br />
Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement<br />
Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection<br />
<br />
The '''bold''' lines are important because users must now explicitly enable the side and bottom scroll zones of the touchpad. If you already had an InputDevice section configured for the old touchpad driver, you'll still need to add these two lines if you wish to use the scroll zones.<br />
<br />
Save, exit and restart X. The touchpad should now have working scroll zones. You can further tweak the ''InputDevice'' settings if desired. See [[#Advanced_Configuration | Advanced Configuration]] for more information.<br />
<br />
Note that Xorg will automatically load the '''evdev''' and '''psmouse''' kernel modules required by Synaptics, however you may also add them explicitly to the MODULES array in the /etc/rc.conf file if desired.<br />
<br />
====ALPS Touchpads====<br />
<br />
For ALPS Touchpads, if the above configuration does not provide the desired results, try the following configuration instead:<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
InputDevice "Touchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "Device" "/dev/input/mouse0"<br />
Option "Protocol" "auto-dev"<br />
Option "LeftEdge" "130"<br />
Option "RightEdge" "840"<br />
Option "TopEdge" "130"<br />
Option "BottomEdge" "640"<br />
Option "FingerLow" "7"<br />
Option "FingerHigh" "8"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "110"<br />
Option "EmulateMidButtonTime" "75"<br />
Option "VertScrollDelta" "20"<br />
Option "HorizScrollDelta" "20"<br />
Option "MinSpeed" "0.25"<br />
Option "MaxSpeed" "0.50"<br />
Option "AccelFactor" "0.010"<br />
Option "EdgeMotionMinSpeed" "200"<br />
Option "EdgeMotionMaxSpeed" "200"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "1"<br />
Option "CircScrollDelta" "0.1"<br />
Option "CircScrollTrigger" "2"<br />
Option "SHMConfig" "on"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
<br />
==Advanced Configuration==<br />
<br />
===Input device options===<br />
<br />
There are a number of arbitrary parameters that can be tweaked for Synaptics touchpads. The following is a brief list of some of these options--see '''man synaptics''' for full details:<br />
<br />
{| class="wikitable" <br />
|-align="left"<br />
!+Option+<br />
!width=400|+Description+<br />
!width=200|+Type+<br />
|-<br />
|'''Device'''<br />
|Input device location. See [[#Troubleshooting | Troubleshooting]] to find your device handler if it isn't /dev/input/mouse0<br />
|String<br />
|-<br />
|'''MinSpeed'''<br />
|Minimum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''MaxSpeed'''<br />
|Maximum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''AccelFactor'''<br />
|Cursor Acceleration Factor<br />
|Decimal(float)<br />
|-<br />
|'''HorizScrollDelta'''<br />
|Horizontal [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''VertScrollDelta'''<br />
|Vertical [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''SHMConfig'''<br />
|height=100|Activation of shared memory(must be enabled for real-time configuration or [Disable touchpad upon external mouse detection| udev-based disabling]<br />
|Boolean<br />
|}<br />
<br />
===Gsynaptics===<br />
<br />
Once the touchpad is configured, users can also install the '''gsynaptics''' package from [community] to provide a GUI-based configuration solution for the device (note that it depends on libgnomeui):<br />
# pacman -S gsynaptics<br />
<br />
'''''Note:''' The '''gsynaptics''' web page [http://gsynaptics.sourceforge.jp/] indicates that it is becoming obsolete and users should consider '''GPointingDeviceSettings''' [http://live.gnome.org/GPointingDeviceSettings], currently available in AUR and as source code.''<br />
<br />
With hotplugging enabled(default), append this the match section of your 99-x11-synaptics.fdi or 11-x11-synaptics.fdi:<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
===Fine-tuning with synclient===<br />
<br />
The synclient monitor can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. In order for synclient to work properly, the '''SHMConfig''' option must be set to '''on''' or '''true'''.<br />
<br />
You can start the Synaptics monitor with the following command:<br />
$ synclient -m 100<br />
Where -m activates the monitor and the following number specifies the update interval in milliseconds.<br />
<br />
This monitor provides information about the current state of your touchpad. For example, if you move the mouse with the touchpad, the x and y values in the monitor will change. Therewith you can easy figure out your touchpad's dimension which is defined in the LeftEdge-, RightEdge-, BottomEdge- and TopEdge-Options.<br />
<br />
The abbreviations for the parameters are as follow:<br />
<br />
{| class="wikitable"<br />
|- align="left"<br />
!width="200"|+Abbreviation+<br />
!width="400|+Description+<br />
|-<br />
|'''time'''<br />
|Time in seconds since the logging was started.<br />
|-<br />
|'''x, y'''<br />
|The x/y coordinates of the finger on the touchpad. The origin is in the upper left corner.<br />
|-<br />
|'''z'''<br />
|The pressure value. It represents the pressure you are using to navigate on your touchpad.<br />
|-<br />
|'''f'''<br />
|Number of fingers currently touching the touchpad.<br />
|-<br />
|'''w'''<br />
|Value that represents the finger width.<br />
|-<br />
|'''l,r,u,d,m,multi'''<br />
|Those values represent the state of the left, right, up, down, middle and multi buttons pressed where zero means not pressed and one means pressed.<br />
|-<br />
|'''gl,gm,gr'''<br />
|For touchpads which have a guest device, this are the associated button states for guest left, guest middle and guest right pressed (1) and not pressed (0).<br />
|-<br />
|'''gdx, gdy'''<br />
|x/y coordinates of the guest device.<br />
|}<br />
If a value constantly is zero, it implies that this option is not supported by your device.<br />
<br />
===Edge scrolling===<br />
<br />
To enable the scroll zones found along the edges of the touchpad, add one or both of the following options to the touchpad device section in /etc/X11/xorg.conf:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "VertEdgeScroll" "true" #vertical scrolling when dragging along the right edge.<br />
Option "HorizEdgeScroll" "true" #horizontal scrolling when dragging along the bottom edge.<br />
...<br />
EndSection<br />
<br />
In ''/etc/hal/fdi/policy/11-x11-synaptics.fdi''(or if that doesn't work, ''/etc/hal/fdi/policy/99-x11-synaptics.fdi) for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
...<br />
</match><br />
<br />
===Two-Finger scrolling===<br />
<br />
Recent Synaptics touchpads support two-finger scrolling. This allows you to use two fingers together anywhere on the touchpad, similar to the behaviour of Macbooks.<br />
<br />
If your hardware supports this feature, you can enable it by inserting the following lines into the touchpad device section of /etc/X11/xorg.conf:<br />
Section "InputDevice"<br />
...<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "EmulateTwoFingerMinZ" "120" # this may vary between different machines<br />
...<br />
EndSection<br />
<br />
''EmulateTwoFingerMinZ'' is only necessary for the ALPS Touchpad, which several Dell machines have. ([http://ubuntuforums.org/showthread.php?t=516798&page=2#19 from Ubuntu forums]) <br />
<br />
'''Firefox users:''' You might find the default behaviour of Firefox pretty annoying relating to the horizontal scrolling. Just see ''Firefox and special touchpad events'' below to find out how to disable it.<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi'''(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
...<br />
</match><br />
<br />
Some users might need to modify the ''EmulateTwoFingerMinW'' parameter, as their touch pads sense two fingers as one wide finger. You can check which parameters you need to modify by running '''synclient -m 150''' -- when you touch two fingers to the touch pad, observe which parameters (z, w, or f) change. Those will determine the minimum threshold values you must set (if f changes, don't bother with ''EmulateTwoFingerMin[W,Z]'' since you do not need to emulate two fingers, your touch pad can simply sense two different fingers).<br />
<br />
===Circular scrolling===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of '''/etc/X11/xorg.conf''':<br />
Section "InputDevice"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi';'(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.CircularScrolling" type="string">on</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">0</merge><br />
...<br />
</match><br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
===Software Toggle===<br />
<br />
You may find it useful to have a software toggle that will turn on or off your touchpad, esplicially if it's extremely sensitive and your doing a lot of typing. Please also see [[#Disable touchpad upon external mouse detection]] and [[#Stopping the mouse from clicking while typing]] as those may be better solutions, again a matter of choice. The advantage here is you have the control, while the other solutions have daemons determine when to turn off the trackpad.<br />
<br />
You will want to grab [[xbindkeys]] if you don't already have key binding software.<br />
<br />
Then save this script to something such as /sbin/trackpad-toggle.sh:<br />
<br />
#!/bin/bash<br />
<br />
if [ -n "`lsmod | grep psmouse`" ]; then<br />
rmmod psmouse<br />
else<br />
modprobe psmouse<br />
fi<br />
<br />
If you use sudo, you'll liky want to add an entry to your sudoers file:<br />
<br />
visudo<br />
<br />
Then finally add a key binding to use the script, but remember that it must be run as root, so using a graphical editor here likely won't work. It is best to add the script to sudoers with ''NOPASSWD'' and call with xbindkeys like so:<br />
<br />
"sudo /sbin/trackpad-toggle.sh"<br />
m:0x5 + c:65<br />
Control+Shift + space<br />
<br />
now just (re)start xbindkeys and ctrl+Shift+Space will now toggle your trackpad !<br />
<br />
==Troubleshooting==<br />
<br />
===No scrolling/tapping with Gnome 2.28===<br />
<br />
Gnome 2.28 introduces a few additional features for managing touchpads. This change takes preference over previously configured options in the HAL policy file and thus may surprise some unsuspecting people. To change the Gnome 2.28 touchpad settings, go to ''System->Preferences->Mouse->Touchpad''.<br />
<br />
===Synaptics Special Ability===<br />
<br />
By default, Synaptics touchpads are able to detect the number of fingers on the touchpad; ALPS touchpads are not. If the touchpad is tapped with two fingers, it will emulate a middle click. If the touchpad is typed with three fingers, a right click will be emulated.<br />
<br />
===Disable touchpad upon external mouse detection===<br />
<br />
In assistance to [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, add the following udev rule to '''/etc/udev/rules.d/01-touchpad.rules''':<br />
ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=1"<br />
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=0"<br />
<br />
SHMConfig must be enabled (see the '''Configuration''' section for details)<br />
<br />
===Cursor Jump===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
===Multitouch===<br />
<br />
Multitouch gesture like in Mac OS X will be in future version of the driver.<br />
<br />
===Touchpad device isn't located at /dev/input/mouse0===<br />
<br />
If that's the case, you can use this command to display information about your input devices:<br />
cat /proc/bus/input/devices<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
<br />
In this case, the Handlers are mouse0 and event1, so /dev/input/mouse0 would be used.<br />
<br />
===Stopping the mouse from clicking while typing===<br />
<br />
To have the touchpad disabled automatically when you begin typing, add the following line to your .xinitrc before you run your window manager:<br />
syndaemon -i 2 &<br />
<br />
The '''-i 2''' switch sets the idle time to 2 seconds. The idle time specifies how many seconds to wait after the last key-press before enabling the touchpad again.<br />
<br />
Additionally you can add the '''-t''' switch that tells the daemon not to disable mouse movement when typing and only disable tapping and scrolling:<br />
syndaemon -t -i 2 &<br />
<br />
As usual you may find further information in the manpage:<br />
$ man syndaemon<br />
<br />
Note: Don't forget to enable SHMConfig in your xorg-setup, either in /etc/xorg.conf (hotplugging disabled) or in /etc/hal/fdi/policy/11-x11-synaptics.fdi (hotplugging enabled). Some users may need to specify touchpad preferences in /etc/hal/fdi/policy/99-x11-synaptics.fdi, instead.<br />
<br />
Note: If you're using GDM as your login manager and Gnome, GDM will ignore commands added to .xinitrc, other than the command to start Gnome. To start syndaemon you need to use Gnome's Startup Applications Preferences program. Login to Gnome and go to System > Preferences > Startup Applications. In the Startup Programs tab click the Add button. Name the Startup Program whatever you like and input any comments you like (or leave this field blank). In the command field add:<br />
syndaemon -i 2 -d<br />
<br />
The "-d" option is necessary to start syndaemon as a background process, instead of the "&" which does this in .xinitrc. You can add other options as well, the same way you would in .xinitrc. When you're done click the Add button in the Add Startup Program dialogue. Make sure the check box next to the startup program you've created is checked, in the list of additional startup programs. Close the Startup Applications Preferences window and you're done.<br />
<br />
===Firefox and special touchpad events===<br />
<br />
By default, Firefox is set up to do special events upon tapping or scrolling certain parts of your touchpad.<br />
You can edit the settings of those actions by typing '''about:config''' in your Firefox address bar.<br />
To alter these options, double-click on the line in question, changing "true" to "false" and vise versa.<br />
<br />
To prevent Firefox from scrolling (backward/forward) through browser history and instead scroll through pages, edit these settings as shown:<br />
mousewheel.horizscroll.withnokey.action = 1<br />
mousewheel.horizscroll.withnokey.sysnumlines = true<br />
<br />
To prevent Firefox from redirecting you to URLs formed from your clipboard content upon tapping the upper-right corner of your touchpad (or middle mouse button), set the following option to "false":<br />
middlemouse.contentLoadURL = false<br />
<br />
===Opera: horizontal scrolling issues===<br />
<br />
Same as above.<br />
To fix it, go to Tools -> Preferences -> Advanced -> Shortcuts. There you edit the mouse preferences: Delete the entries with "Button 5" and "Button 6".<br />
<br />
===Scrolling and multiple actions with Synaptics on LG Laptops===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in xorg.conf:<br />
Option "UpDownScrolling" "0"<br />
<br />
NOTE that this will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git] .<br />
<br />
There is also a package build file in the AUR to automate this: [http://aur.archlinux.org/packages.php?ID=15983].<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
cd synaptics-git<br />
makepkg<br />
<br />
If you want it to be automatically installed after being built, just add '-i' after makepkg.<br />
<br />
===Other external mouse issues===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
Option "Device" "/dev/input/mice"<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this doesn't solve your problem, make your '''touchpad''' the CorePointer in the "Server Layout" section:<br />
<br />
InputDevice "Touchpad" "CorePointer"<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
InputDevice "USB Mouse" "SendCoreEvents"<br />
<br />
finally add this to your external device's section:<br />
<br />
Option "SendCoreEvents" "true"<br />
<br />
If all of the above doesn't work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
===Touchpad synchronization issues===<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in /var/log/messages.log<br />
<br />
psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
*If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
*Avoid using an ACPI battery monitor.<br />
*Attempt to load psmouse with "proto=imps" option. To do that, add this line to your /etc/modprobe.conf:<br />
<br />
options psmouse proto=imps<br />
<br />
*Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Tapping issues===<br />
<br />
If you are not using [[Xorg input hotplugging]], you should know that Xorg v7.4 does not enable tapping by default. To enable it, add the following line to the touchpad's InputDevice section in <tt>/etc/X11/xorg.conf</tt>:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "TapButton1" "''integer''"<br />
Option "TapButton2" "''integer''"<br />
Option "TapButton3" "''integer''"<br />
...<br />
EndSection<br />
The ''integer'' of option "TapButton1" means which mouse button is reported on a non-corner one-finger tap. Usually it is 1.<br />
The ''integer'' of option "TapButton2" means which mouse button is reported on a non-corner two-finger tap. Usually it is 2.<br />
The ''integer'' of option "TapButton3" means which mouse button is reported on a non-corner three-finger tap. Usually it is 3.<br />
<br />
===Delay between a button tap and the actual click===<br />
<br />
If you experience a delay between the tap on the touchpad and the actual click that is registered you need to enable FastTaps:<br />
<br />
If you're using input hotplugging(default behavior), change your 11-x11-synaptics.fdi(or 99-x11-synaptics.fdi, in some cases) so that it contains:<br />
<br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
If you're using xorg-server with disabled input hotplugging change xorg.conf so that you have:<br />
<br />
Section "InputDevice"<br />
Identifier "Synaptics Touchpad"<br />
Driver "synaptics"<br />
...<br />
Option "FastTaps" "1"<br />
...<br />
EndSection<br />
<br />
===SynPS/2 Synaptics TouchPad can't grab event device, errno=16===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from /var/log/Xorg.0.log, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes /dev/input/mice as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in xorg.conf:<br />
<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
==External Resources==<br />
<br />
Synaptics TouchPad driver: [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/]<br />
<!-- vim: set ft=Wikipedia: --></div>Code mhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=86270Touchpad Synaptics2009-12-04T03:16:19Z<p>Code m: /* Software Toggle */</p>
<hr />
<div>[[Category:Input devices (English)]][[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Touchpad Synaptics}}<br />
{{i18n_entry|German|Touchpad Synaptics (Deutsch)}}<br />
{{i18n_entry|Русский|Тачпад Synaptics}}<br />
{{i18n_entry|简体中文|触摸板 (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
==Installation==<br />
<br />
The Synaptics driver is now bundled as ''xf86-input-synaptics'', and is available in the [[Official_Repositories|[extra] repository]]:<br />
<br />
# pacman -S xf86-input-synaptics<br />
<br />
==Configuration==<br />
<br />
Configuration for the touchpad should done by tweaking options in the XML format *.fdi policy file with latest Xserver installed using [[Xorg input hotplugging|hotplugging]]. Alternatively, configuration can be done using xorg.conf. Please note, however, that this method of configuring is deprecated and might stop working in the future. Configuration by HAL policy is therefore encouraged.<br />
<br />
===Configuration via HAL policy (hotplugging enabled, recommended) ===<br />
<br />
With [[Xorg input hotplugging|hotplugging]] (enabled by default) and HAL installed and running, your Synaptics should works "out-of-the-box".<br />
<br />
If it doesn't or you want to tweak the configuration, you will need to edit the appropriate HAL policy file (XML format).<br />
Note that in this case.<br />
<br />
Copy '''/usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi''' into '''/etc/hal/fdi/policy/'''<br />
cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/<br />
<br />
Now you can modify the new file appending new options.<br />
<br />
Here's a simple template to begin with, covering the more common features:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<!-- <match key="info.product" contains="AlpsPS/2 ALPS GlidePoint"> #ALPS users may need to use this instead of the above --><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.AlwaysCore" type="string">true</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.protocol" type="string">event</merge><br />
<merge key="input.x11_options.touchpadoff" type="string">0</merge><br />
<merge key="input.x11_options.shmconfig" type="string">on</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The syntax is similar to xorg.conf, for instance, <br />
Option "RightEdge" "5300"<br />
equates to this .fdi file line:<br />
<merge key="input.x11_options.RightEdge" type="string">5300</merge><br />
{{Box Note| In the .fdi file, every type must be "string" instead of "float" or "int" as per xorg.conf.}}<br />
{{Box Note| You might need to run '''/etc/rc.d/hal restart''' in order for the changes to take place.}}<br />
<br />
====Advanced policy configuration====<br />
<br />
The Synaptics driver allows for a vast amount of options to be tweaked. Luckily, all of them are consistently named and well documented in Synaptic's manpage.<br />
man synaptics<br />
<br />
The following shall serve as an advanced configuration example for '''11-x11-synaptics.fdi''':<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
<merge key="input.x11_options.MinSpeed" type="string">0.1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">0.4</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.002</merge><br />
<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.VerteScrollDelta" type="string">2</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.CircularScrolling" type="string">true</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">8</merge><br />
<merge key="input.x11_options.CircScrollDelta" type="string">0.1</merge><br />
<br />
<!-- Values here might differ! Use synclient -m 20 to find desired values --><br />
<merge key="input.x11_options.LeftEdge" type="string">2000</merge><br />
<merge key="input.x11_options.TopEdge" type="string">2000</merge><br />
<br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
====Other products====<br />
<br />
* ALPS users may try the following if the above does not work:<br />
<br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with MacBook (1,1 2,1 etc...)<br />
<br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with latest MacBook (5,1)<br />
<br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
{{Box Note| You can find the exact information for your touchpad in /proc/bus/input/devices.}}<br />
<br />
Or, if you find HAL is not loading your settings, try this template (the "append" child is necessary for some setups):<br />
<br />
<pre><br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="SynPS/2 Synaptics TouchPad"><br />
<append key="info.capabilities" type="strlist">input.touchpad</append><br />
</match><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
[...]<br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
<br />
===Configuration via xorg.conf (hotplugging disabled, deprecated) ===<br />
<br />
Edit ''/etc/X11/xorg.conf'' as root and add '''InputDevice "Touchpad" "SendCoreEvents"''' to the ''ServerLayout'':<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
'''''InputDevice "SynapticsTouchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Add '''Load "synaptics"''' to the ''Module'' section:<br />
Section "Module"<br />
...<br />
Load "glx"<br />
Load "freetype"<br />
'''''Load "synaptics"'''''<br />
...<br />
EndSection<br />
<br />
Lastly, add a new ''InputDevice'' section for the touchpad itself:<br />
Section "InputDevice"<br />
Identifier "SynapticsTouchpad"<br />
Driver "synaptics"<br />
Option "AlwaysCore" "true" # send events to CorePointer<br />
#Option "Device" "/dev/input/mice"<br />
Option "Device" "/dev/psaux"<br />
Option "Protocol" "auto-dev"<br />
Option "SHMConfig" "false" # configurable at runtime? security risk<br />
Option "LeftEdge" "1700" # x coord left<br />
Option "RightEdge" "5300" # x coord right<br />
Option "TopEdge" "1700" # y coord top<br />
Option "BottomEdge" "4200" # y coord bottom<br />
Option "FingerLow" "25" # pressure below this level triggers release<br />
Option "FingerHigh" "30" # pressure above this level triggers touch<br />
Option "MaxTapTime" "180" # max time in ms for detecting tap<br />
'''Option "VertEdgeScroll" "true" # enable vertical scroll zone'''<br />
'''Option "HorizEdgeScroll" "true" # enable horizontal scroll zone'''<br />
Option "CornerCoasting" "true" # enable continuous scroll with finger in corner<br />
Option "CoastingSpeed" "0.30" # corner coasting speed<br />
Option "VertScrollDelta" "100" # edge-to-edge scroll distance of the vertical scroll<br />
Option "HorizScrollDelta" "100" # edge-to-edge scroll distance of the horizontal scroll<br />
Option "MinSpeed" "0.10" # speed factor for low pointer movement<br />
Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement<br />
Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection<br />
<br />
The '''bold''' lines are important because users must now explicitly enable the side and bottom scroll zones of the touchpad. If you already had an InputDevice section configured for the old touchpad driver, you'll still need to add these two lines if you wish to use the scroll zones.<br />
<br />
Save, exit and restart X. The touchpad should now have working scroll zones. You can further tweak the ''InputDevice'' settings if desired. See [[#Advanced_Configuration | Advanced Configuration]] for more information.<br />
<br />
Note that Xorg will automatically load the '''evdev''' and '''psmouse''' kernel modules required by Synaptics, however you may also add them explicitly to the MODULES array in the /etc/rc.conf file if desired.<br />
<br />
====ALPS Touchpads====<br />
<br />
For ALPS Touchpads, if the above configuration does not provide the desired results, try the following configuration instead:<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
InputDevice "Touchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "Device" "/dev/input/mouse0"<br />
Option "Protocol" "auto-dev"<br />
Option "LeftEdge" "130"<br />
Option "RightEdge" "840"<br />
Option "TopEdge" "130"<br />
Option "BottomEdge" "640"<br />
Option "FingerLow" "7"<br />
Option "FingerHigh" "8"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "110"<br />
Option "EmulateMidButtonTime" "75"<br />
Option "VertScrollDelta" "20"<br />
Option "HorizScrollDelta" "20"<br />
Option "MinSpeed" "0.25"<br />
Option "MaxSpeed" "0.50"<br />
Option "AccelFactor" "0.010"<br />
Option "EdgeMotionMinSpeed" "200"<br />
Option "EdgeMotionMaxSpeed" "200"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "1"<br />
Option "CircScrollDelta" "0.1"<br />
Option "CircScrollTrigger" "2"<br />
Option "SHMConfig" "on"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
<br />
==Advanced Configuration==<br />
<br />
===Input device options===<br />
<br />
There are a number of arbitrary parameters that can be tweaked for Synaptics touchpads. The following is a brief list of some of these options--see '''man synaptics''' for full details:<br />
<br />
{| class="wikitable" <br />
|-align="left"<br />
!+Option+<br />
!width=400|+Description+<br />
!width=200|+Type+<br />
|-<br />
|'''Device'''<br />
|Input device location. See [[#Troubleshooting | Troubleshooting]] to find your device handler if it isn't /dev/input/mouse0<br />
|String<br />
|-<br />
|'''MinSpeed'''<br />
|Minimum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''MaxSpeed'''<br />
|Maximum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''AccelFactor'''<br />
|Cursor Acceleration Factor<br />
|Decimal(float)<br />
|-<br />
|'''HorizScrollDelta'''<br />
|Horizontal [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''VertScrollDelta'''<br />
|Vertical [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''SHMConfig'''<br />
|height=100|Activation of shared memory(must be enabled for real-time configuration or [Disable touchpad upon external mouse detection| udev-based disabling]<br />
|Boolean<br />
|}<br />
<br />
===Gsynaptics===<br />
<br />
Once the touchpad is configured, users can also install the '''gsynaptics''' package from [community] to provide a GUI-based configuration solution for the device (note that it depends on libgnomeui):<br />
# pacman -S gsynaptics<br />
<br />
'''''Note:''' The '''gsynaptics''' web page [http://gsynaptics.sourceforge.jp/] indicates that it is becoming obsolete and users should consider '''GPointingDeviceSettings''' [http://live.gnome.org/GPointingDeviceSettings], currently available in AUR and as source code.''<br />
<br />
With hotplugging enabled(default), append this the match section of your 99-x11-synaptics.fdi or 11-x11-synaptics.fdi:<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
===Fine-tuning with synclient===<br />
<br />
The synclient monitor can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. In order for synclient to work properly, the '''SHMConfig''' option must be set to '''on''' or '''true'''.<br />
<br />
You can start the Synaptics monitor with the following command:<br />
$ synclient -m 100<br />
Where -m activates the monitor and the following number specifies the update interval in milliseconds.<br />
<br />
This monitor provides information about the current state of your touchpad. For example, if you move the mouse with the touchpad, the x and y values in the monitor will change. Therewith you can easy figure out your touchpad's dimension which is defined in the LeftEdge-, RightEdge-, BottomEdge- and TopEdge-Options.<br />
<br />
The abbreviations for the parameters are as follow:<br />
<br />
{| class="wikitable"<br />
|- align="left"<br />
!width="200"|+Abbreviation+<br />
!width="400|+Description+<br />
|-<br />
|'''time'''<br />
|Time in seconds since the logging was started.<br />
|-<br />
|'''x, y'''<br />
|The x/y coordinates of the finger on the touchpad. The origin is in the upper left corner.<br />
|-<br />
|'''z'''<br />
|The pressure value. It represents the pressure you are using to navigate on your touchpad.<br />
|-<br />
|'''f'''<br />
|Number of fingers currently touching the touchpad.<br />
|-<br />
|'''w'''<br />
|Value that represents the finger width.<br />
|-<br />
|'''l,r,u,d,m,multi'''<br />
|Those values represent the state of the left, right, up, down, middle and multi buttons pressed where zero means not pressed and one means pressed.<br />
|-<br />
|'''gl,gm,gr'''<br />
|For touchpads which have a guest device, this are the associated button states for guest left, guest middle and guest right pressed (1) and not pressed (0).<br />
|-<br />
|'''gdx, gdy'''<br />
|x/y coordinates of the guest device.<br />
|}<br />
If a value constantly is zero, it implies that this option is not supported by your device.<br />
<br />
===Edge scrolling===<br />
<br />
To enable the scroll zones found along the edges of the touchpad, add one or both of the following options to the touchpad device section in /etc/X11/xorg.conf:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "VertEdgeScroll" "true" #vertical scrolling when dragging along the right edge.<br />
Option "HorizEdgeScroll" "true" #horizontal scrolling when dragging along the bottom edge.<br />
...<br />
EndSection<br />
<br />
In ''/etc/hal/fdi/policy/11-x11-synaptics.fdi''(or if that doesn't work, ''/etc/hal/fdi/policy/99-x11-synaptics.fdi) for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
...<br />
</match><br />
<br />
===Two-Finger scrolling===<br />
<br />
Recent Synaptics touchpads support two-finger scrolling. This allows you to use two fingers together anywhere on the touchpad, similar to the behaviour of Macbooks.<br />
<br />
If your hardware supports this feature, you can enable it by inserting the following lines into the touchpad device section of /etc/X11/xorg.conf:<br />
Section "InputDevice"<br />
...<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "EmulateTwoFingerMinZ" "120" # this may vary between different machines<br />
...<br />
EndSection<br />
<br />
''EmulateTwoFingerMinZ'' is only necessary for the ALPS Touchpad, which several Dell machines have. ([http://ubuntuforums.org/showthread.php?t=516798&page=2#19 from Ubuntu forums]) <br />
<br />
'''Firefox users:''' You might find the default behaviour of Firefox pretty annoying relating to the horizontal scrolling. Just see ''Firefox and special touchpad events'' below to find out how to disable it.<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi'''(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
...<br />
</match><br />
<br />
Some users might need to modify the ''EmulateTwoFingerMinW'' parameter, as their touch pads sense two fingers as one wide finger. You can check which parameters you need to modify by running '''synclient -m 150''' -- when you touch two fingers to the touch pad, observe which parameters (z, w, or f) change. Those will determine the minimum threshold values you must set (if f changes, don't bother with ''EmulateTwoFingerMin[W,Z]'' since you do not need to emulate two fingers, your touch pad can simply sense two different fingers).<br />
<br />
===Circular scrolling===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of '''/etc/X11/xorg.conf''':<br />
Section "InputDevice"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi';'(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.CircularScrolling" type="string">on</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">0</merge><br />
...<br />
</match><br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
===Software Toggle===<br />
<br />
You may find it useful to have a software toggle that will turn on or off your touchpad, esplicially if it's extremely sensitive and your doing a lot of typing. Please also see [[#Disable touchpad upon external mouse detection]] and [[#Stopping the mouse from clicking while typing]] as those may be better solutions, again a matter of choice.<br />
<br />
You will want to grab [[xbindkeys]] if you don't already have key binding software.<br />
<br />
Then save this script to something such as /sbin/trackpad-toggle.sh:<br />
<br />
#!/bin/bash<br />
<br />
if [ -n "`lsmod | grep psmouse`" ]; then<br />
rmmod psmouse<br />
else<br />
modprobe psmouse<br />
fi<br />
<br />
If you use sudo, you'll liky want to add an entry to your sudoers file:<br />
<br />
visudo<br />
<br />
Then finally add a key binding to use the script, but remember that it must be run as root, so using a graphical editor here likely won't work. It is best to add the script to sudoers with ''NOPASSWD'' and call with xbindkeys like so:<br />
<br />
"sudo /sbin/trackpad-toggle.sh"<br />
m:0x5 + c:65<br />
Control+Shift + space<br />
<br />
now just (re)start xbindkeys and ctrl+Shift+Space will now toggle your trackpad !<br />
<br />
==Troubleshooting==<br />
<br />
===No scrolling/tapping with Gnome 2.28===<br />
<br />
Gnome 2.28 introduces a few additional features for managing touchpads. This change takes preference over previously configured options in the HAL policy file and thus may surprise some unsuspecting people. To change the Gnome 2.28 touchpad settings, go to ''System->Preferences->Mouse->Touchpad''.<br />
<br />
===Synaptics Special Ability===<br />
<br />
By default, Synaptics touchpads are able to detect the number of fingers on the touchpad; ALPS touchpads are not. If the touchpad is tapped with two fingers, it will emulate a middle click. If the touchpad is typed with three fingers, a right click will be emulated.<br />
<br />
===Disable touchpad upon external mouse detection===<br />
<br />
In assistance to [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, add the following udev rule to '''/etc/udev/rules.d/01-touchpad.rules''':<br />
ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=1"<br />
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=0"<br />
<br />
SHMConfig must be enabled (see the '''Configuration''' section for details)<br />
<br />
===Cursor Jump===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
===Multitouch===<br />
<br />
Multitouch gesture like in Mac OS X will be in future version of the driver.<br />
<br />
===Touchpad device isn't located at /dev/input/mouse0===<br />
<br />
If that's the case, you can use this command to display information about your input devices:<br />
cat /proc/bus/input/devices<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
<br />
In this case, the Handlers are mouse0 and event1, so /dev/input/mouse0 would be used.<br />
<br />
===Stopping the mouse from clicking while typing===<br />
<br />
To have the touchpad disabled automatically when you begin typing, add the following line to your .xinitrc before you run your window manager:<br />
syndaemon -i 2 &<br />
<br />
The '''-i 2''' switch sets the idle time to 2 seconds. The idle time specifies how many seconds to wait after the last key-press before enabling the touchpad again.<br />
<br />
Additionally you can add the '''-t''' switch that tells the daemon not to disable mouse movement when typing and only disable tapping and scrolling:<br />
syndaemon -t -i 2 &<br />
<br />
As usual you may find further information in the manpage:<br />
$ man syndaemon<br />
<br />
Note: Don't forget to enable SHMConfig in your xorg-setup, either in /etc/xorg.conf (hotplugging disabled) or in /etc/hal/fdi/policy/11-x11-synaptics.fdi (hotplugging enabled). Some users may need to specify touchpad preferences in /etc/hal/fdi/policy/99-x11-synaptics.fdi, instead.<br />
<br />
Note: If you're using GDM as your login manager and Gnome, GDM will ignore commands added to .xinitrc, other than the command to start Gnome. To start syndaemon you need to use Gnome's Startup Applications Preferences program. Login to Gnome and go to System > Preferences > Startup Applications. In the Startup Programs tab click the Add button. Name the Startup Program whatever you like and input any comments you like (or leave this field blank). In the command field add:<br />
syndaemon -i 2 -d<br />
<br />
The "-d" option is necessary to start syndaemon as a background process, instead of the "&" which does this in .xinitrc. You can add other options as well, the same way you would in .xinitrc. When you're done click the Add button in the Add Startup Program dialogue. Make sure the check box next to the startup program you've created is checked, in the list of additional startup programs. Close the Startup Applications Preferences window and you're done.<br />
<br />
===Firefox and special touchpad events===<br />
<br />
By default, Firefox is set up to do special events upon tapping or scrolling certain parts of your touchpad.<br />
You can edit the settings of those actions by typing '''about:config''' in your Firefox address bar.<br />
To alter these options, double-click on the line in question, changing "true" to "false" and vise versa.<br />
<br />
To prevent Firefox from scrolling (backward/forward) through browser history and instead scroll through pages, edit these settings as shown:<br />
mousewheel.horizscroll.withnokey.action = 1<br />
mousewheel.horizscroll.withnokey.sysnumlines = true<br />
<br />
To prevent Firefox from redirecting you to URLs formed from your clipboard content upon tapping the upper-right corner of your touchpad (or middle mouse button), set the following option to "false":<br />
middlemouse.contentLoadURL = false<br />
<br />
===Opera: horizontal scrolling issues===<br />
<br />
Same as above.<br />
To fix it, go to Tools -> Preferences -> Advanced -> Shortcuts. There you edit the mouse preferences: Delete the entries with "Button 5" and "Button 6".<br />
<br />
===Scrolling and multiple actions with Synaptics on LG Laptops===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in xorg.conf:<br />
Option "UpDownScrolling" "0"<br />
<br />
NOTE that this will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git] .<br />
<br />
There is also a package build file in the AUR to automate this: [http://aur.archlinux.org/packages.php?ID=15983].<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
cd synaptics-git<br />
makepkg<br />
<br />
If you want it to be automatically installed after being built, just add '-i' after makepkg.<br />
<br />
===Other external mouse issues===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
Option "Device" "/dev/input/mice"<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this doesn't solve your problem, make your '''touchpad''' the CorePointer in the "Server Layout" section:<br />
<br />
InputDevice "Touchpad" "CorePointer"<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
InputDevice "USB Mouse" "SendCoreEvents"<br />
<br />
finally add this to your external device's section:<br />
<br />
Option "SendCoreEvents" "true"<br />
<br />
If all of the above doesn't work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
===Touchpad synchronization issues===<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in /var/log/messages.log<br />
<br />
psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
*If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
*Avoid using an ACPI battery monitor.<br />
*Attempt to load psmouse with "proto=imps" option. To do that, add this line to your /etc/modprobe.conf:<br />
<br />
options psmouse proto=imps<br />
<br />
*Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Tapping issues===<br />
<br />
If you are not using [[Xorg input hotplugging]], you should know that Xorg v7.4 does not enable tapping by default. To enable it, add the following line to the touchpad's InputDevice section in <tt>/etc/X11/xorg.conf</tt>:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "TapButton1" "''integer''"<br />
Option "TapButton2" "''integer''"<br />
Option "TapButton3" "''integer''"<br />
...<br />
EndSection<br />
The ''integer'' of option "TapButton1" means which mouse button is reported on a non-corner one-finger tap. Usually it is 1.<br />
The ''integer'' of option "TapButton2" means which mouse button is reported on a non-corner two-finger tap. Usually it is 2.<br />
The ''integer'' of option "TapButton3" means which mouse button is reported on a non-corner three-finger tap. Usually it is 3.<br />
<br />
===Delay between a button tap and the actual click===<br />
<br />
If you experience a delay between the tap on the touchpad and the actual click that is registered you need to enable FastTaps:<br />
<br />
If you're using input hotplugging(default behavior), change your 11-x11-synaptics.fdi(or 99-x11-synaptics.fdi, in some cases) so that it contains:<br />
<br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
If you're using xorg-server with disabled input hotplugging change xorg.conf so that you have:<br />
<br />
Section "InputDevice"<br />
Identifier "Synaptics Touchpad"<br />
Driver "synaptics"<br />
...<br />
Option "FastTaps" "1"<br />
...<br />
EndSection<br />
<br />
===SynPS/2 Synaptics TouchPad can't grab event device, errno=16===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from /var/log/Xorg.0.log, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes /dev/input/mice as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in xorg.conf:<br />
<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
==External Resources==<br />
<br />
Synaptics TouchPad driver: [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/]<br />
<!-- vim: set ft=Wikipedia: --></div>Code mhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=86269Touchpad Synaptics2009-12-04T03:16:08Z<p>Code m: /* Software Toggle */</p>
<hr />
<div>[[Category:Input devices (English)]][[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Touchpad Synaptics}}<br />
{{i18n_entry|German|Touchpad Synaptics (Deutsch)}}<br />
{{i18n_entry|Русский|Тачпад Synaptics}}<br />
{{i18n_entry|简体中文|触摸板 (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
==Installation==<br />
<br />
The Synaptics driver is now bundled as ''xf86-input-synaptics'', and is available in the [[Official_Repositories|[extra] repository]]:<br />
<br />
# pacman -S xf86-input-synaptics<br />
<br />
==Configuration==<br />
<br />
Configuration for the touchpad should done by tweaking options in the XML format *.fdi policy file with latest Xserver installed using [[Xorg input hotplugging|hotplugging]]. Alternatively, configuration can be done using xorg.conf. Please note, however, that this method of configuring is deprecated and might stop working in the future. Configuration by HAL policy is therefore encouraged.<br />
<br />
===Configuration via HAL policy (hotplugging enabled, recommended) ===<br />
<br />
With [[Xorg input hotplugging|hotplugging]] (enabled by default) and HAL installed and running, your Synaptics should works "out-of-the-box".<br />
<br />
If it doesn't or you want to tweak the configuration, you will need to edit the appropriate HAL policy file (XML format).<br />
Note that in this case.<br />
<br />
Copy '''/usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi''' into '''/etc/hal/fdi/policy/'''<br />
cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/<br />
<br />
Now you can modify the new file appending new options.<br />
<br />
Here's a simple template to begin with, covering the more common features:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<!-- <match key="info.product" contains="AlpsPS/2 ALPS GlidePoint"> #ALPS users may need to use this instead of the above --><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.AlwaysCore" type="string">true</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.protocol" type="string">event</merge><br />
<merge key="input.x11_options.touchpadoff" type="string">0</merge><br />
<merge key="input.x11_options.shmconfig" type="string">on</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The syntax is similar to xorg.conf, for instance, <br />
Option "RightEdge" "5300"<br />
equates to this .fdi file line:<br />
<merge key="input.x11_options.RightEdge" type="string">5300</merge><br />
{{Box Note| In the .fdi file, every type must be "string" instead of "float" or "int" as per xorg.conf.}}<br />
{{Box Note| You might need to run '''/etc/rc.d/hal restart''' in order for the changes to take place.}}<br />
<br />
====Advanced policy configuration====<br />
<br />
The Synaptics driver allows for a vast amount of options to be tweaked. Luckily, all of them are consistently named and well documented in Synaptic's manpage.<br />
man synaptics<br />
<br />
The following shall serve as an advanced configuration example for '''11-x11-synaptics.fdi''':<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
<merge key="input.x11_options.MinSpeed" type="string">0.1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">0.4</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.002</merge><br />
<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.VerteScrollDelta" type="string">2</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.CircularScrolling" type="string">true</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">8</merge><br />
<merge key="input.x11_options.CircScrollDelta" type="string">0.1</merge><br />
<br />
<!-- Values here might differ! Use synclient -m 20 to find desired values --><br />
<merge key="input.x11_options.LeftEdge" type="string">2000</merge><br />
<merge key="input.x11_options.TopEdge" type="string">2000</merge><br />
<br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
====Other products====<br />
<br />
* ALPS users may try the following if the above does not work:<br />
<br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with MacBook (1,1 2,1 etc...)<br />
<br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with latest MacBook (5,1)<br />
<br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
{{Box Note| You can find the exact information for your touchpad in /proc/bus/input/devices.}}<br />
<br />
Or, if you find HAL is not loading your settings, try this template (the "append" child is necessary for some setups):<br />
<br />
<pre><br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="SynPS/2 Synaptics TouchPad"><br />
<append key="info.capabilities" type="strlist">input.touchpad</append><br />
</match><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
[...]<br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
<br />
===Configuration via xorg.conf (hotplugging disabled, deprecated) ===<br />
<br />
Edit ''/etc/X11/xorg.conf'' as root and add '''InputDevice "Touchpad" "SendCoreEvents"''' to the ''ServerLayout'':<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
'''''InputDevice "SynapticsTouchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Add '''Load "synaptics"''' to the ''Module'' section:<br />
Section "Module"<br />
...<br />
Load "glx"<br />
Load "freetype"<br />
'''''Load "synaptics"'''''<br />
...<br />
EndSection<br />
<br />
Lastly, add a new ''InputDevice'' section for the touchpad itself:<br />
Section "InputDevice"<br />
Identifier "SynapticsTouchpad"<br />
Driver "synaptics"<br />
Option "AlwaysCore" "true" # send events to CorePointer<br />
#Option "Device" "/dev/input/mice"<br />
Option "Device" "/dev/psaux"<br />
Option "Protocol" "auto-dev"<br />
Option "SHMConfig" "false" # configurable at runtime? security risk<br />
Option "LeftEdge" "1700" # x coord left<br />
Option "RightEdge" "5300" # x coord right<br />
Option "TopEdge" "1700" # y coord top<br />
Option "BottomEdge" "4200" # y coord bottom<br />
Option "FingerLow" "25" # pressure below this level triggers release<br />
Option "FingerHigh" "30" # pressure above this level triggers touch<br />
Option "MaxTapTime" "180" # max time in ms for detecting tap<br />
'''Option "VertEdgeScroll" "true" # enable vertical scroll zone'''<br />
'''Option "HorizEdgeScroll" "true" # enable horizontal scroll zone'''<br />
Option "CornerCoasting" "true" # enable continuous scroll with finger in corner<br />
Option "CoastingSpeed" "0.30" # corner coasting speed<br />
Option "VertScrollDelta" "100" # edge-to-edge scroll distance of the vertical scroll<br />
Option "HorizScrollDelta" "100" # edge-to-edge scroll distance of the horizontal scroll<br />
Option "MinSpeed" "0.10" # speed factor for low pointer movement<br />
Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement<br />
Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection<br />
<br />
The '''bold''' lines are important because users must now explicitly enable the side and bottom scroll zones of the touchpad. If you already had an InputDevice section configured for the old touchpad driver, you'll still need to add these two lines if you wish to use the scroll zones.<br />
<br />
Save, exit and restart X. The touchpad should now have working scroll zones. You can further tweak the ''InputDevice'' settings if desired. See [[#Advanced_Configuration | Advanced Configuration]] for more information.<br />
<br />
Note that Xorg will automatically load the '''evdev''' and '''psmouse''' kernel modules required by Synaptics, however you may also add them explicitly to the MODULES array in the /etc/rc.conf file if desired.<br />
<br />
====ALPS Touchpads====<br />
<br />
For ALPS Touchpads, if the above configuration does not provide the desired results, try the following configuration instead:<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
InputDevice "Touchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "Device" "/dev/input/mouse0"<br />
Option "Protocol" "auto-dev"<br />
Option "LeftEdge" "130"<br />
Option "RightEdge" "840"<br />
Option "TopEdge" "130"<br />
Option "BottomEdge" "640"<br />
Option "FingerLow" "7"<br />
Option "FingerHigh" "8"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "110"<br />
Option "EmulateMidButtonTime" "75"<br />
Option "VertScrollDelta" "20"<br />
Option "HorizScrollDelta" "20"<br />
Option "MinSpeed" "0.25"<br />
Option "MaxSpeed" "0.50"<br />
Option "AccelFactor" "0.010"<br />
Option "EdgeMotionMinSpeed" "200"<br />
Option "EdgeMotionMaxSpeed" "200"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "1"<br />
Option "CircScrollDelta" "0.1"<br />
Option "CircScrollTrigger" "2"<br />
Option "SHMConfig" "on"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
<br />
==Advanced Configuration==<br />
<br />
===Input device options===<br />
<br />
There are a number of arbitrary parameters that can be tweaked for Synaptics touchpads. The following is a brief list of some of these options--see '''man synaptics''' for full details:<br />
<br />
{| class="wikitable" <br />
|-align="left"<br />
!+Option+<br />
!width=400|+Description+<br />
!width=200|+Type+<br />
|-<br />
|'''Device'''<br />
|Input device location. See [[#Troubleshooting | Troubleshooting]] to find your device handler if it isn't /dev/input/mouse0<br />
|String<br />
|-<br />
|'''MinSpeed'''<br />
|Minimum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''MaxSpeed'''<br />
|Maximum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''AccelFactor'''<br />
|Cursor Acceleration Factor<br />
|Decimal(float)<br />
|-<br />
|'''HorizScrollDelta'''<br />
|Horizontal [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''VertScrollDelta'''<br />
|Vertical [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''SHMConfig'''<br />
|height=100|Activation of shared memory(must be enabled for real-time configuration or [Disable touchpad upon external mouse detection| udev-based disabling]<br />
|Boolean<br />
|}<br />
<br />
===Gsynaptics===<br />
<br />
Once the touchpad is configured, users can also install the '''gsynaptics''' package from [community] to provide a GUI-based configuration solution for the device (note that it depends on libgnomeui):<br />
# pacman -S gsynaptics<br />
<br />
'''''Note:''' The '''gsynaptics''' web page [http://gsynaptics.sourceforge.jp/] indicates that it is becoming obsolete and users should consider '''GPointingDeviceSettings''' [http://live.gnome.org/GPointingDeviceSettings], currently available in AUR and as source code.''<br />
<br />
With hotplugging enabled(default), append this the match section of your 99-x11-synaptics.fdi or 11-x11-synaptics.fdi:<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
===Fine-tuning with synclient===<br />
<br />
The synclient monitor can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. In order for synclient to work properly, the '''SHMConfig''' option must be set to '''on''' or '''true'''.<br />
<br />
You can start the Synaptics monitor with the following command:<br />
$ synclient -m 100<br />
Where -m activates the monitor and the following number specifies the update interval in milliseconds.<br />
<br />
This monitor provides information about the current state of your touchpad. For example, if you move the mouse with the touchpad, the x and y values in the monitor will change. Therewith you can easy figure out your touchpad's dimension which is defined in the LeftEdge-, RightEdge-, BottomEdge- and TopEdge-Options.<br />
<br />
The abbreviations for the parameters are as follow:<br />
<br />
{| class="wikitable"<br />
|- align="left"<br />
!width="200"|+Abbreviation+<br />
!width="400|+Description+<br />
|-<br />
|'''time'''<br />
|Time in seconds since the logging was started.<br />
|-<br />
|'''x, y'''<br />
|The x/y coordinates of the finger on the touchpad. The origin is in the upper left corner.<br />
|-<br />
|'''z'''<br />
|The pressure value. It represents the pressure you are using to navigate on your touchpad.<br />
|-<br />
|'''f'''<br />
|Number of fingers currently touching the touchpad.<br />
|-<br />
|'''w'''<br />
|Value that represents the finger width.<br />
|-<br />
|'''l,r,u,d,m,multi'''<br />
|Those values represent the state of the left, right, up, down, middle and multi buttons pressed where zero means not pressed and one means pressed.<br />
|-<br />
|'''gl,gm,gr'''<br />
|For touchpads which have a guest device, this are the associated button states for guest left, guest middle and guest right pressed (1) and not pressed (0).<br />
|-<br />
|'''gdx, gdy'''<br />
|x/y coordinates of the guest device.<br />
|}<br />
If a value constantly is zero, it implies that this option is not supported by your device.<br />
<br />
===Edge scrolling===<br />
<br />
To enable the scroll zones found along the edges of the touchpad, add one or both of the following options to the touchpad device section in /etc/X11/xorg.conf:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "VertEdgeScroll" "true" #vertical scrolling when dragging along the right edge.<br />
Option "HorizEdgeScroll" "true" #horizontal scrolling when dragging along the bottom edge.<br />
...<br />
EndSection<br />
<br />
In ''/etc/hal/fdi/policy/11-x11-synaptics.fdi''(or if that doesn't work, ''/etc/hal/fdi/policy/99-x11-synaptics.fdi) for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
...<br />
</match><br />
<br />
===Two-Finger scrolling===<br />
<br />
Recent Synaptics touchpads support two-finger scrolling. This allows you to use two fingers together anywhere on the touchpad, similar to the behaviour of Macbooks.<br />
<br />
If your hardware supports this feature, you can enable it by inserting the following lines into the touchpad device section of /etc/X11/xorg.conf:<br />
Section "InputDevice"<br />
...<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "EmulateTwoFingerMinZ" "120" # this may vary between different machines<br />
...<br />
EndSection<br />
<br />
''EmulateTwoFingerMinZ'' is only necessary for the ALPS Touchpad, which several Dell machines have. ([http://ubuntuforums.org/showthread.php?t=516798&page=2#19 from Ubuntu forums]) <br />
<br />
'''Firefox users:''' You might find the default behaviour of Firefox pretty annoying relating to the horizontal scrolling. Just see ''Firefox and special touchpad events'' below to find out how to disable it.<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi'''(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
...<br />
</match><br />
<br />
Some users might need to modify the ''EmulateTwoFingerMinW'' parameter, as their touch pads sense two fingers as one wide finger. You can check which parameters you need to modify by running '''synclient -m 150''' -- when you touch two fingers to the touch pad, observe which parameters (z, w, or f) change. Those will determine the minimum threshold values you must set (if f changes, don't bother with ''EmulateTwoFingerMin[W,Z]'' since you do not need to emulate two fingers, your touch pad can simply sense two different fingers).<br />
<br />
===Circular scrolling===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of '''/etc/X11/xorg.conf''':<br />
Section "InputDevice"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi';'(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.CircularScrolling" type="string">on</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">0</merge><br />
...<br />
</match><br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
===Software Toggle===<br />
<br />
You may find it useful to have a software toggle that will turn on or off your touchpad, esplicially if it's extremely sensitive and your doing a lot of typing. Please also see [[#Disable touchpad upon external mouse detection]] and [[#Stopping the mouse from clicking while typing]] as those may be better solutions, again a matter of choice.<br />
<br />
You will want to grab [[xbindkeys]] if you don't already have key binding software.<br />
<br />
Then save this script to something such as /sbin/trackpad-toggle.sh:<br />
<br />
#!/bin/bash<br />
<br />
if [ -n "`lsmod | grep psmouse`" ]; then<br />
rmmod psmouse<br />
else<br />
modprobe psmouse<br />
fi<br />
<br />
If you use sudo, you'll liky want to add an entry to your sudoers file:<br />
<br />
visudo<br />
<br />
Then finally add a key binding to use the script, but remember that it must be run as root, so using a graphical editor here likely won't work. It is best to add the script to sudoers with ''NOPASSWD'' and call with xbindkeys like so:<br />
<br />
"sudo /sbin/trackpad-toggle.sh"<br />
m:0x5 + c:65<br />
Control+Shift + space<br />
<br />
now just (re)start xbindkeys and ctrl+Shift+Space will now toggle your trackpad !<br />
<br />
==Troubleshooting==<br />
<br />
===No scrolling/tapping with Gnome 2.28===<br />
<br />
Gnome 2.28 introduces a few additional features for managing touchpads. This change takes preference over previously configured options in the HAL policy file and thus may surprise some unsuspecting people. To change the Gnome 2.28 touchpad settings, go to ''System->Preferences->Mouse->Touchpad''.<br />
<br />
===Synaptics Special Ability===<br />
<br />
By default, Synaptics touchpads are able to detect the number of fingers on the touchpad; ALPS touchpads are not. If the touchpad is tapped with two fingers, it will emulate a middle click. If the touchpad is typed with three fingers, a right click will be emulated.<br />
<br />
===Disable touchpad upon external mouse detection===<br />
<br />
In assistance to [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, add the following udev rule to '''/etc/udev/rules.d/01-touchpad.rules''':<br />
ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=1"<br />
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=0"<br />
<br />
SHMConfig must be enabled (see the '''Configuration''' section for details)<br />
<br />
===Cursor Jump===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
===Multitouch===<br />
<br />
Multitouch gesture like in Mac OS X will be in future version of the driver.<br />
<br />
===Touchpad device isn't located at /dev/input/mouse0===<br />
<br />
If that's the case, you can use this command to display information about your input devices:<br />
cat /proc/bus/input/devices<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
<br />
In this case, the Handlers are mouse0 and event1, so /dev/input/mouse0 would be used.<br />
<br />
===Stopping the mouse from clicking while typing===<br />
<br />
To have the touchpad disabled automatically when you begin typing, add the following line to your .xinitrc before you run your window manager:<br />
syndaemon -i 2 &<br />
<br />
The '''-i 2''' switch sets the idle time to 2 seconds. The idle time specifies how many seconds to wait after the last key-press before enabling the touchpad again.<br />
<br />
Additionally you can add the '''-t''' switch that tells the daemon not to disable mouse movement when typing and only disable tapping and scrolling:<br />
syndaemon -t -i 2 &<br />
<br />
As usual you may find further information in the manpage:<br />
$ man syndaemon<br />
<br />
Note: Don't forget to enable SHMConfig in your xorg-setup, either in /etc/xorg.conf (hotplugging disabled) or in /etc/hal/fdi/policy/11-x11-synaptics.fdi (hotplugging enabled). Some users may need to specify touchpad preferences in /etc/hal/fdi/policy/99-x11-synaptics.fdi, instead.<br />
<br />
Note: If you're using GDM as your login manager and Gnome, GDM will ignore commands added to .xinitrc, other than the command to start Gnome. To start syndaemon you need to use Gnome's Startup Applications Preferences program. Login to Gnome and go to System > Preferences > Startup Applications. In the Startup Programs tab click the Add button. Name the Startup Program whatever you like and input any comments you like (or leave this field blank). In the command field add:<br />
syndaemon -i 2 -d<br />
<br />
The "-d" option is necessary to start syndaemon as a background process, instead of the "&" which does this in .xinitrc. You can add other options as well, the same way you would in .xinitrc. When you're done click the Add button in the Add Startup Program dialogue. Make sure the check box next to the startup program you've created is checked, in the list of additional startup programs. Close the Startup Applications Preferences window and you're done.<br />
<br />
===Firefox and special touchpad events===<br />
<br />
By default, Firefox is set up to do special events upon tapping or scrolling certain parts of your touchpad.<br />
You can edit the settings of those actions by typing '''about:config''' in your Firefox address bar.<br />
To alter these options, double-click on the line in question, changing "true" to "false" and vise versa.<br />
<br />
To prevent Firefox from scrolling (backward/forward) through browser history and instead scroll through pages, edit these settings as shown:<br />
mousewheel.horizscroll.withnokey.action = 1<br />
mousewheel.horizscroll.withnokey.sysnumlines = true<br />
<br />
To prevent Firefox from redirecting you to URLs formed from your clipboard content upon tapping the upper-right corner of your touchpad (or middle mouse button), set the following option to "false":<br />
middlemouse.contentLoadURL = false<br />
<br />
===Opera: horizontal scrolling issues===<br />
<br />
Same as above.<br />
To fix it, go to Tools -> Preferences -> Advanced -> Shortcuts. There you edit the mouse preferences: Delete the entries with "Button 5" and "Button 6".<br />
<br />
===Scrolling and multiple actions with Synaptics on LG Laptops===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in xorg.conf:<br />
Option "UpDownScrolling" "0"<br />
<br />
NOTE that this will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git] .<br />
<br />
There is also a package build file in the AUR to automate this: [http://aur.archlinux.org/packages.php?ID=15983].<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
cd synaptics-git<br />
makepkg<br />
<br />
If you want it to be automatically installed after being built, just add '-i' after makepkg.<br />
<br />
===Other external mouse issues===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
Option "Device" "/dev/input/mice"<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this doesn't solve your problem, make your '''touchpad''' the CorePointer in the "Server Layout" section:<br />
<br />
InputDevice "Touchpad" "CorePointer"<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
InputDevice "USB Mouse" "SendCoreEvents"<br />
<br />
finally add this to your external device's section:<br />
<br />
Option "SendCoreEvents" "true"<br />
<br />
If all of the above doesn't work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
===Touchpad synchronization issues===<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in /var/log/messages.log<br />
<br />
psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
*If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
*Avoid using an ACPI battery monitor.<br />
*Attempt to load psmouse with "proto=imps" option. To do that, add this line to your /etc/modprobe.conf:<br />
<br />
options psmouse proto=imps<br />
<br />
*Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Tapping issues===<br />
<br />
If you are not using [[Xorg input hotplugging]], you should know that Xorg v7.4 does not enable tapping by default. To enable it, add the following line to the touchpad's InputDevice section in <tt>/etc/X11/xorg.conf</tt>:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "TapButton1" "''integer''"<br />
Option "TapButton2" "''integer''"<br />
Option "TapButton3" "''integer''"<br />
...<br />
EndSection<br />
The ''integer'' of option "TapButton1" means which mouse button is reported on a non-corner one-finger tap. Usually it is 1.<br />
The ''integer'' of option "TapButton2" means which mouse button is reported on a non-corner two-finger tap. Usually it is 2.<br />
The ''integer'' of option "TapButton3" means which mouse button is reported on a non-corner three-finger tap. Usually it is 3.<br />
<br />
===Delay between a button tap and the actual click===<br />
<br />
If you experience a delay between the tap on the touchpad and the actual click that is registered you need to enable FastTaps:<br />
<br />
If you're using input hotplugging(default behavior), change your 11-x11-synaptics.fdi(or 99-x11-synaptics.fdi, in some cases) so that it contains:<br />
<br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
If you're using xorg-server with disabled input hotplugging change xorg.conf so that you have:<br />
<br />
Section "InputDevice"<br />
Identifier "Synaptics Touchpad"<br />
Driver "synaptics"<br />
...<br />
Option "FastTaps" "1"<br />
...<br />
EndSection<br />
<br />
===SynPS/2 Synaptics TouchPad can't grab event device, errno=16===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from /var/log/Xorg.0.log, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes /dev/input/mice as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in xorg.conf:<br />
<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
==External Resources==<br />
<br />
Synaptics TouchPad driver: [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/]<br />
<!-- vim: set ft=Wikipedia: --></div>Code mhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=86268Touchpad Synaptics2009-12-04T03:14:40Z<p>Code m: /* Software Toggle */</p>
<hr />
<div>[[Category:Input devices (English)]][[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Touchpad Synaptics}}<br />
{{i18n_entry|German|Touchpad Synaptics (Deutsch)}}<br />
{{i18n_entry|Русский|Тачпад Synaptics}}<br />
{{i18n_entry|简体中文|触摸板 (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
==Installation==<br />
<br />
The Synaptics driver is now bundled as ''xf86-input-synaptics'', and is available in the [[Official_Repositories|[extra] repository]]:<br />
<br />
# pacman -S xf86-input-synaptics<br />
<br />
==Configuration==<br />
<br />
Configuration for the touchpad should done by tweaking options in the XML format *.fdi policy file with latest Xserver installed using [[Xorg input hotplugging|hotplugging]]. Alternatively, configuration can be done using xorg.conf. Please note, however, that this method of configuring is deprecated and might stop working in the future. Configuration by HAL policy is therefore encouraged.<br />
<br />
===Configuration via HAL policy (hotplugging enabled, recommended) ===<br />
<br />
With [[Xorg input hotplugging|hotplugging]] (enabled by default) and HAL installed and running, your Synaptics should works "out-of-the-box".<br />
<br />
If it doesn't or you want to tweak the configuration, you will need to edit the appropriate HAL policy file (XML format).<br />
Note that in this case.<br />
<br />
Copy '''/usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi''' into '''/etc/hal/fdi/policy/'''<br />
cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/<br />
<br />
Now you can modify the new file appending new options.<br />
<br />
Here's a simple template to begin with, covering the more common features:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<!-- <match key="info.product" contains="AlpsPS/2 ALPS GlidePoint"> #ALPS users may need to use this instead of the above --><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.AlwaysCore" type="string">true</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.protocol" type="string">event</merge><br />
<merge key="input.x11_options.touchpadoff" type="string">0</merge><br />
<merge key="input.x11_options.shmconfig" type="string">on</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The syntax is similar to xorg.conf, for instance, <br />
Option "RightEdge" "5300"<br />
equates to this .fdi file line:<br />
<merge key="input.x11_options.RightEdge" type="string">5300</merge><br />
{{Box Note| In the .fdi file, every type must be "string" instead of "float" or "int" as per xorg.conf.}}<br />
{{Box Note| You might need to run '''/etc/rc.d/hal restart''' in order for the changes to take place.}}<br />
<br />
====Advanced policy configuration====<br />
<br />
The Synaptics driver allows for a vast amount of options to be tweaked. Luckily, all of them are consistently named and well documented in Synaptic's manpage.<br />
man synaptics<br />
<br />
The following shall serve as an advanced configuration example for '''11-x11-synaptics.fdi''':<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
<merge key="input.x11_options.MinSpeed" type="string">0.1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">0.4</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.002</merge><br />
<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.VerteScrollDelta" type="string">2</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.CircularScrolling" type="string">true</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">8</merge><br />
<merge key="input.x11_options.CircScrollDelta" type="string">0.1</merge><br />
<br />
<!-- Values here might differ! Use synclient -m 20 to find desired values --><br />
<merge key="input.x11_options.LeftEdge" type="string">2000</merge><br />
<merge key="input.x11_options.TopEdge" type="string">2000</merge><br />
<br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
====Other products====<br />
<br />
* ALPS users may try the following if the above does not work:<br />
<br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with MacBook (1,1 2,1 etc...)<br />
<br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with latest MacBook (5,1)<br />
<br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
{{Box Note| You can find the exact information for your touchpad in /proc/bus/input/devices.}}<br />
<br />
Or, if you find HAL is not loading your settings, try this template (the "append" child is necessary for some setups):<br />
<br />
<pre><br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="SynPS/2 Synaptics TouchPad"><br />
<append key="info.capabilities" type="strlist">input.touchpad</append><br />
</match><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
[...]<br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
<br />
===Configuration via xorg.conf (hotplugging disabled, deprecated) ===<br />
<br />
Edit ''/etc/X11/xorg.conf'' as root and add '''InputDevice "Touchpad" "SendCoreEvents"''' to the ''ServerLayout'':<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
'''''InputDevice "SynapticsTouchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Add '''Load "synaptics"''' to the ''Module'' section:<br />
Section "Module"<br />
...<br />
Load "glx"<br />
Load "freetype"<br />
'''''Load "synaptics"'''''<br />
...<br />
EndSection<br />
<br />
Lastly, add a new ''InputDevice'' section for the touchpad itself:<br />
Section "InputDevice"<br />
Identifier "SynapticsTouchpad"<br />
Driver "synaptics"<br />
Option "AlwaysCore" "true" # send events to CorePointer<br />
#Option "Device" "/dev/input/mice"<br />
Option "Device" "/dev/psaux"<br />
Option "Protocol" "auto-dev"<br />
Option "SHMConfig" "false" # configurable at runtime? security risk<br />
Option "LeftEdge" "1700" # x coord left<br />
Option "RightEdge" "5300" # x coord right<br />
Option "TopEdge" "1700" # y coord top<br />
Option "BottomEdge" "4200" # y coord bottom<br />
Option "FingerLow" "25" # pressure below this level triggers release<br />
Option "FingerHigh" "30" # pressure above this level triggers touch<br />
Option "MaxTapTime" "180" # max time in ms for detecting tap<br />
'''Option "VertEdgeScroll" "true" # enable vertical scroll zone'''<br />
'''Option "HorizEdgeScroll" "true" # enable horizontal scroll zone'''<br />
Option "CornerCoasting" "true" # enable continuous scroll with finger in corner<br />
Option "CoastingSpeed" "0.30" # corner coasting speed<br />
Option "VertScrollDelta" "100" # edge-to-edge scroll distance of the vertical scroll<br />
Option "HorizScrollDelta" "100" # edge-to-edge scroll distance of the horizontal scroll<br />
Option "MinSpeed" "0.10" # speed factor for low pointer movement<br />
Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement<br />
Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection<br />
<br />
The '''bold''' lines are important because users must now explicitly enable the side and bottom scroll zones of the touchpad. If you already had an InputDevice section configured for the old touchpad driver, you'll still need to add these two lines if you wish to use the scroll zones.<br />
<br />
Save, exit and restart X. The touchpad should now have working scroll zones. You can further tweak the ''InputDevice'' settings if desired. See [[#Advanced_Configuration | Advanced Configuration]] for more information.<br />
<br />
Note that Xorg will automatically load the '''evdev''' and '''psmouse''' kernel modules required by Synaptics, however you may also add them explicitly to the MODULES array in the /etc/rc.conf file if desired.<br />
<br />
====ALPS Touchpads====<br />
<br />
For ALPS Touchpads, if the above configuration does not provide the desired results, try the following configuration instead:<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
InputDevice "Touchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "Device" "/dev/input/mouse0"<br />
Option "Protocol" "auto-dev"<br />
Option "LeftEdge" "130"<br />
Option "RightEdge" "840"<br />
Option "TopEdge" "130"<br />
Option "BottomEdge" "640"<br />
Option "FingerLow" "7"<br />
Option "FingerHigh" "8"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "110"<br />
Option "EmulateMidButtonTime" "75"<br />
Option "VertScrollDelta" "20"<br />
Option "HorizScrollDelta" "20"<br />
Option "MinSpeed" "0.25"<br />
Option "MaxSpeed" "0.50"<br />
Option "AccelFactor" "0.010"<br />
Option "EdgeMotionMinSpeed" "200"<br />
Option "EdgeMotionMaxSpeed" "200"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "1"<br />
Option "CircScrollDelta" "0.1"<br />
Option "CircScrollTrigger" "2"<br />
Option "SHMConfig" "on"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
<br />
==Advanced Configuration==<br />
<br />
===Input device options===<br />
<br />
There are a number of arbitrary parameters that can be tweaked for Synaptics touchpads. The following is a brief list of some of these options--see '''man synaptics''' for full details:<br />
<br />
{| class="wikitable" <br />
|-align="left"<br />
!+Option+<br />
!width=400|+Description+<br />
!width=200|+Type+<br />
|-<br />
|'''Device'''<br />
|Input device location. See [[#Troubleshooting | Troubleshooting]] to find your device handler if it isn't /dev/input/mouse0<br />
|String<br />
|-<br />
|'''MinSpeed'''<br />
|Minimum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''MaxSpeed'''<br />
|Maximum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''AccelFactor'''<br />
|Cursor Acceleration Factor<br />
|Decimal(float)<br />
|-<br />
|'''HorizScrollDelta'''<br />
|Horizontal [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''VertScrollDelta'''<br />
|Vertical [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''SHMConfig'''<br />
|height=100|Activation of shared memory(must be enabled for real-time configuration or [Disable touchpad upon external mouse detection| udev-based disabling]<br />
|Boolean<br />
|}<br />
<br />
===Gsynaptics===<br />
<br />
Once the touchpad is configured, users can also install the '''gsynaptics''' package from [community] to provide a GUI-based configuration solution for the device (note that it depends on libgnomeui):<br />
# pacman -S gsynaptics<br />
<br />
'''''Note:''' The '''gsynaptics''' web page [http://gsynaptics.sourceforge.jp/] indicates that it is becoming obsolete and users should consider '''GPointingDeviceSettings''' [http://live.gnome.org/GPointingDeviceSettings], currently available in AUR and as source code.''<br />
<br />
With hotplugging enabled(default), append this the match section of your 99-x11-synaptics.fdi or 11-x11-synaptics.fdi:<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
===Fine-tuning with synclient===<br />
<br />
The synclient monitor can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. In order for synclient to work properly, the '''SHMConfig''' option must be set to '''on''' or '''true'''.<br />
<br />
You can start the Synaptics monitor with the following command:<br />
$ synclient -m 100<br />
Where -m activates the monitor and the following number specifies the update interval in milliseconds.<br />
<br />
This monitor provides information about the current state of your touchpad. For example, if you move the mouse with the touchpad, the x and y values in the monitor will change. Therewith you can easy figure out your touchpad's dimension which is defined in the LeftEdge-, RightEdge-, BottomEdge- and TopEdge-Options.<br />
<br />
The abbreviations for the parameters are as follow:<br />
<br />
{| class="wikitable"<br />
|- align="left"<br />
!width="200"|+Abbreviation+<br />
!width="400|+Description+<br />
|-<br />
|'''time'''<br />
|Time in seconds since the logging was started.<br />
|-<br />
|'''x, y'''<br />
|The x/y coordinates of the finger on the touchpad. The origin is in the upper left corner.<br />
|-<br />
|'''z'''<br />
|The pressure value. It represents the pressure you are using to navigate on your touchpad.<br />
|-<br />
|'''f'''<br />
|Number of fingers currently touching the touchpad.<br />
|-<br />
|'''w'''<br />
|Value that represents the finger width.<br />
|-<br />
|'''l,r,u,d,m,multi'''<br />
|Those values represent the state of the left, right, up, down, middle and multi buttons pressed where zero means not pressed and one means pressed.<br />
|-<br />
|'''gl,gm,gr'''<br />
|For touchpads which have a guest device, this are the associated button states for guest left, guest middle and guest right pressed (1) and not pressed (0).<br />
|-<br />
|'''gdx, gdy'''<br />
|x/y coordinates of the guest device.<br />
|}<br />
If a value constantly is zero, it implies that this option is not supported by your device.<br />
<br />
===Edge scrolling===<br />
<br />
To enable the scroll zones found along the edges of the touchpad, add one or both of the following options to the touchpad device section in /etc/X11/xorg.conf:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "VertEdgeScroll" "true" #vertical scrolling when dragging along the right edge.<br />
Option "HorizEdgeScroll" "true" #horizontal scrolling when dragging along the bottom edge.<br />
...<br />
EndSection<br />
<br />
In ''/etc/hal/fdi/policy/11-x11-synaptics.fdi''(or if that doesn't work, ''/etc/hal/fdi/policy/99-x11-synaptics.fdi) for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
...<br />
</match><br />
<br />
===Two-Finger scrolling===<br />
<br />
Recent Synaptics touchpads support two-finger scrolling. This allows you to use two fingers together anywhere on the touchpad, similar to the behaviour of Macbooks.<br />
<br />
If your hardware supports this feature, you can enable it by inserting the following lines into the touchpad device section of /etc/X11/xorg.conf:<br />
Section "InputDevice"<br />
...<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "EmulateTwoFingerMinZ" "120" # this may vary between different machines<br />
...<br />
EndSection<br />
<br />
''EmulateTwoFingerMinZ'' is only necessary for the ALPS Touchpad, which several Dell machines have. ([http://ubuntuforums.org/showthread.php?t=516798&page=2#19 from Ubuntu forums]) <br />
<br />
'''Firefox users:''' You might find the default behaviour of Firefox pretty annoying relating to the horizontal scrolling. Just see ''Firefox and special touchpad events'' below to find out how to disable it.<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi'''(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
...<br />
</match><br />
<br />
Some users might need to modify the ''EmulateTwoFingerMinW'' parameter, as their touch pads sense two fingers as one wide finger. You can check which parameters you need to modify by running '''synclient -m 150''' -- when you touch two fingers to the touch pad, observe which parameters (z, w, or f) change. Those will determine the minimum threshold values you must set (if f changes, don't bother with ''EmulateTwoFingerMin[W,Z]'' since you do not need to emulate two fingers, your touch pad can simply sense two different fingers).<br />
<br />
===Circular scrolling===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of '''/etc/X11/xorg.conf''':<br />
Section "InputDevice"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi';'(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.CircularScrolling" type="string">on</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">0</merge><br />
...<br />
</match><br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
===Software Toggle===<br />
<br />
You may find it useful to have a software toggle that will turn on or off your touchpad, esplicially if it's extremely sensitive and your doing a lot of typing. Please also see [[#Disable touchpad upon external mouse detection]] and [[#Stopping the mouse from clicking while typing]] as those may be better solutions, again a matter of choice.<br />
<br />
You will want to grab [[xbindkeys]] if you don't already have key binding software.<br />
<br />
Then save this script to something such as /sbin/trackpad-toggle.sh:<br />
<br />
#!/bin/bash<br />
<br />
if [ -n "`lsmod | grep psmouse`" ]; then<br />
rmmod psmouse<br />
else<br />
modprobe psmouse<br />
fi<br />
<br />
If you use sudo, you'll liky want to add an entry to your sudoers file:<br />
<br />
visudo<br />
<br />
Then finally add a key binding to use the script, but remember that it must be run as root, so using a graphical editor here likely won't work. It is best to add the script to sudoers with ''NOPASSWD'' and call with xbindkeys like so:<br />
<br />
"sudo /sbin/trackpad-toggle.sh"<br />
m:0x5 + c:65<br />
Control+Shift + space<br />
<br />
now just (re)start xbindkeys and ctrl+Shift+Space will now toggle your trackpad !<br />
<br />
==Troubleshooting==<br />
<br />
===No scrolling/tapping with Gnome 2.28===<br />
<br />
Gnome 2.28 introduces a few additional features for managing touchpads. This change takes preference over previously configured options in the HAL policy file and thus may surprise some unsuspecting people. To change the Gnome 2.28 touchpad settings, go to ''System->Preferences->Mouse->Touchpad''.<br />
<br />
===Synaptics Special Ability===<br />
<br />
By default, Synaptics touchpads are able to detect the number of fingers on the touchpad; ALPS touchpads are not. If the touchpad is tapped with two fingers, it will emulate a middle click. If the touchpad is typed with three fingers, a right click will be emulated.<br />
<br />
===Disable touchpad upon external mouse detection===<br />
<br />
In assistance to [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, add the following udev rule to '''/etc/udev/rules.d/01-touchpad.rules''':<br />
ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=1"<br />
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=0"<br />
<br />
SHMConfig must be enabled (see the '''Configuration''' section for details)<br />
<br />
===Cursor Jump===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
===Multitouch===<br />
<br />
Multitouch gesture like in Mac OS X will be in future version of the driver.<br />
<br />
===Touchpad device isn't located at /dev/input/mouse0===<br />
<br />
If that's the case, you can use this command to display information about your input devices:<br />
cat /proc/bus/input/devices<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
<br />
In this case, the Handlers are mouse0 and event1, so /dev/input/mouse0 would be used.<br />
<br />
===Stopping the mouse from clicking while typing===<br />
<br />
To have the touchpad disabled automatically when you begin typing, add the following line to your .xinitrc before you run your window manager:<br />
syndaemon -i 2 &<br />
<br />
The '''-i 2''' switch sets the idle time to 2 seconds. The idle time specifies how many seconds to wait after the last key-press before enabling the touchpad again.<br />
<br />
Additionally you can add the '''-t''' switch that tells the daemon not to disable mouse movement when typing and only disable tapping and scrolling:<br />
syndaemon -t -i 2 &<br />
<br />
As usual you may find further information in the manpage:<br />
$ man syndaemon<br />
<br />
Note: Don't forget to enable SHMConfig in your xorg-setup, either in /etc/xorg.conf (hotplugging disabled) or in /etc/hal/fdi/policy/11-x11-synaptics.fdi (hotplugging enabled). Some users may need to specify touchpad preferences in /etc/hal/fdi/policy/99-x11-synaptics.fdi, instead.<br />
<br />
Note: If you're using GDM as your login manager and Gnome, GDM will ignore commands added to .xinitrc, other than the command to start Gnome. To start syndaemon you need to use Gnome's Startup Applications Preferences program. Login to Gnome and go to System > Preferences > Startup Applications. In the Startup Programs tab click the Add button. Name the Startup Program whatever you like and input any comments you like (or leave this field blank). In the command field add:<br />
syndaemon -i 2 -d<br />
<br />
The "-d" option is necessary to start syndaemon as a background process, instead of the "&" which does this in .xinitrc. You can add other options as well, the same way you would in .xinitrc. When you're done click the Add button in the Add Startup Program dialogue. Make sure the check box next to the startup program you've created is checked, in the list of additional startup programs. Close the Startup Applications Preferences window and you're done.<br />
<br />
===Firefox and special touchpad events===<br />
<br />
By default, Firefox is set up to do special events upon tapping or scrolling certain parts of your touchpad.<br />
You can edit the settings of those actions by typing '''about:config''' in your Firefox address bar.<br />
To alter these options, double-click on the line in question, changing "true" to "false" and vise versa.<br />
<br />
To prevent Firefox from scrolling (backward/forward) through browser history and instead scroll through pages, edit these settings as shown:<br />
mousewheel.horizscroll.withnokey.action = 1<br />
mousewheel.horizscroll.withnokey.sysnumlines = true<br />
<br />
To prevent Firefox from redirecting you to URLs formed from your clipboard content upon tapping the upper-right corner of your touchpad (or middle mouse button), set the following option to "false":<br />
middlemouse.contentLoadURL = false<br />
<br />
===Opera: horizontal scrolling issues===<br />
<br />
Same as above.<br />
To fix it, go to Tools -> Preferences -> Advanced -> Shortcuts. There you edit the mouse preferences: Delete the entries with "Button 5" and "Button 6".<br />
<br />
===Scrolling and multiple actions with Synaptics on LG Laptops===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in xorg.conf:<br />
Option "UpDownScrolling" "0"<br />
<br />
NOTE that this will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git] .<br />
<br />
There is also a package build file in the AUR to automate this: [http://aur.archlinux.org/packages.php?ID=15983].<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
cd synaptics-git<br />
makepkg<br />
<br />
If you want it to be automatically installed after being built, just add '-i' after makepkg.<br />
<br />
===Other external mouse issues===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
Option "Device" "/dev/input/mice"<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this doesn't solve your problem, make your '''touchpad''' the CorePointer in the "Server Layout" section:<br />
<br />
InputDevice "Touchpad" "CorePointer"<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
InputDevice "USB Mouse" "SendCoreEvents"<br />
<br />
finally add this to your external device's section:<br />
<br />
Option "SendCoreEvents" "true"<br />
<br />
If all of the above doesn't work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
===Touchpad synchronization issues===<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in /var/log/messages.log<br />
<br />
psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
*If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
*Avoid using an ACPI battery monitor.<br />
*Attempt to load psmouse with "proto=imps" option. To do that, add this line to your /etc/modprobe.conf:<br />
<br />
options psmouse proto=imps<br />
<br />
*Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Tapping issues===<br />
<br />
If you are not using [[Xorg input hotplugging]], you should know that Xorg v7.4 does not enable tapping by default. To enable it, add the following line to the touchpad's InputDevice section in <tt>/etc/X11/xorg.conf</tt>:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "TapButton1" "''integer''"<br />
Option "TapButton2" "''integer''"<br />
Option "TapButton3" "''integer''"<br />
...<br />
EndSection<br />
The ''integer'' of option "TapButton1" means which mouse button is reported on a non-corner one-finger tap. Usually it is 1.<br />
The ''integer'' of option "TapButton2" means which mouse button is reported on a non-corner two-finger tap. Usually it is 2.<br />
The ''integer'' of option "TapButton3" means which mouse button is reported on a non-corner three-finger tap. Usually it is 3.<br />
<br />
===Delay between a button tap and the actual click===<br />
<br />
If you experience a delay between the tap on the touchpad and the actual click that is registered you need to enable FastTaps:<br />
<br />
If you're using input hotplugging(default behavior), change your 11-x11-synaptics.fdi(or 99-x11-synaptics.fdi, in some cases) so that it contains:<br />
<br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
If you're using xorg-server with disabled input hotplugging change xorg.conf so that you have:<br />
<br />
Section "InputDevice"<br />
Identifier "Synaptics Touchpad"<br />
Driver "synaptics"<br />
...<br />
Option "FastTaps" "1"<br />
...<br />
EndSection<br />
<br />
===SynPS/2 Synaptics TouchPad can't grab event device, errno=16===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from /var/log/Xorg.0.log, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes /dev/input/mice as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in xorg.conf:<br />
<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
==External Resources==<br />
<br />
Synaptics TouchPad driver: [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/]<br />
<!-- vim: set ft=Wikipedia: --></div>Code mhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=86267Touchpad Synaptics2009-12-04T03:14:18Z<p>Code m: /* Software Toggle */</p>
<hr />
<div>[[Category:Input devices (English)]][[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Touchpad Synaptics}}<br />
{{i18n_entry|German|Touchpad Synaptics (Deutsch)}}<br />
{{i18n_entry|Русский|Тачпад Synaptics}}<br />
{{i18n_entry|简体中文|触摸板 (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
==Installation==<br />
<br />
The Synaptics driver is now bundled as ''xf86-input-synaptics'', and is available in the [[Official_Repositories|[extra] repository]]:<br />
<br />
# pacman -S xf86-input-synaptics<br />
<br />
==Configuration==<br />
<br />
Configuration for the touchpad should done by tweaking options in the XML format *.fdi policy file with latest Xserver installed using [[Xorg input hotplugging|hotplugging]]. Alternatively, configuration can be done using xorg.conf. Please note, however, that this method of configuring is deprecated and might stop working in the future. Configuration by HAL policy is therefore encouraged.<br />
<br />
===Configuration via HAL policy (hotplugging enabled, recommended) ===<br />
<br />
With [[Xorg input hotplugging|hotplugging]] (enabled by default) and HAL installed and running, your Synaptics should works "out-of-the-box".<br />
<br />
If it doesn't or you want to tweak the configuration, you will need to edit the appropriate HAL policy file (XML format).<br />
Note that in this case.<br />
<br />
Copy '''/usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi''' into '''/etc/hal/fdi/policy/'''<br />
cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/<br />
<br />
Now you can modify the new file appending new options.<br />
<br />
Here's a simple template to begin with, covering the more common features:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<!-- <match key="info.product" contains="AlpsPS/2 ALPS GlidePoint"> #ALPS users may need to use this instead of the above --><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.AlwaysCore" type="string">true</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.protocol" type="string">event</merge><br />
<merge key="input.x11_options.touchpadoff" type="string">0</merge><br />
<merge key="input.x11_options.shmconfig" type="string">on</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The syntax is similar to xorg.conf, for instance, <br />
Option "RightEdge" "5300"<br />
equates to this .fdi file line:<br />
<merge key="input.x11_options.RightEdge" type="string">5300</merge><br />
{{Box Note| In the .fdi file, every type must be "string" instead of "float" or "int" as per xorg.conf.}}<br />
{{Box Note| You might need to run '''/etc/rc.d/hal restart''' in order for the changes to take place.}}<br />
<br />
====Advanced policy configuration====<br />
<br />
The Synaptics driver allows for a vast amount of options to be tweaked. Luckily, all of them are consistently named and well documented in Synaptic's manpage.<br />
man synaptics<br />
<br />
The following shall serve as an advanced configuration example for '''11-x11-synaptics.fdi''':<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
<merge key="input.x11_options.MinSpeed" type="string">0.1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">0.4</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.002</merge><br />
<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.VerteScrollDelta" type="string">2</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.CircularScrolling" type="string">true</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">8</merge><br />
<merge key="input.x11_options.CircScrollDelta" type="string">0.1</merge><br />
<br />
<!-- Values here might differ! Use synclient -m 20 to find desired values --><br />
<merge key="input.x11_options.LeftEdge" type="string">2000</merge><br />
<merge key="input.x11_options.TopEdge" type="string">2000</merge><br />
<br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
====Other products====<br />
<br />
* ALPS users may try the following if the above does not work:<br />
<br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with MacBook (1,1 2,1 etc...)<br />
<br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with latest MacBook (5,1)<br />
<br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
{{Box Note| You can find the exact information for your touchpad in /proc/bus/input/devices.}}<br />
<br />
Or, if you find HAL is not loading your settings, try this template (the "append" child is necessary for some setups):<br />
<br />
<pre><br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="SynPS/2 Synaptics TouchPad"><br />
<append key="info.capabilities" type="strlist">input.touchpad</append><br />
</match><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
[...]<br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
<br />
===Configuration via xorg.conf (hotplugging disabled, deprecated) ===<br />
<br />
Edit ''/etc/X11/xorg.conf'' as root and add '''InputDevice "Touchpad" "SendCoreEvents"''' to the ''ServerLayout'':<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
'''''InputDevice "SynapticsTouchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Add '''Load "synaptics"''' to the ''Module'' section:<br />
Section "Module"<br />
...<br />
Load "glx"<br />
Load "freetype"<br />
'''''Load "synaptics"'''''<br />
...<br />
EndSection<br />
<br />
Lastly, add a new ''InputDevice'' section for the touchpad itself:<br />
Section "InputDevice"<br />
Identifier "SynapticsTouchpad"<br />
Driver "synaptics"<br />
Option "AlwaysCore" "true" # send events to CorePointer<br />
#Option "Device" "/dev/input/mice"<br />
Option "Device" "/dev/psaux"<br />
Option "Protocol" "auto-dev"<br />
Option "SHMConfig" "false" # configurable at runtime? security risk<br />
Option "LeftEdge" "1700" # x coord left<br />
Option "RightEdge" "5300" # x coord right<br />
Option "TopEdge" "1700" # y coord top<br />
Option "BottomEdge" "4200" # y coord bottom<br />
Option "FingerLow" "25" # pressure below this level triggers release<br />
Option "FingerHigh" "30" # pressure above this level triggers touch<br />
Option "MaxTapTime" "180" # max time in ms for detecting tap<br />
'''Option "VertEdgeScroll" "true" # enable vertical scroll zone'''<br />
'''Option "HorizEdgeScroll" "true" # enable horizontal scroll zone'''<br />
Option "CornerCoasting" "true" # enable continuous scroll with finger in corner<br />
Option "CoastingSpeed" "0.30" # corner coasting speed<br />
Option "VertScrollDelta" "100" # edge-to-edge scroll distance of the vertical scroll<br />
Option "HorizScrollDelta" "100" # edge-to-edge scroll distance of the horizontal scroll<br />
Option "MinSpeed" "0.10" # speed factor for low pointer movement<br />
Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement<br />
Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection<br />
<br />
The '''bold''' lines are important because users must now explicitly enable the side and bottom scroll zones of the touchpad. If you already had an InputDevice section configured for the old touchpad driver, you'll still need to add these two lines if you wish to use the scroll zones.<br />
<br />
Save, exit and restart X. The touchpad should now have working scroll zones. You can further tweak the ''InputDevice'' settings if desired. See [[#Advanced_Configuration | Advanced Configuration]] for more information.<br />
<br />
Note that Xorg will automatically load the '''evdev''' and '''psmouse''' kernel modules required by Synaptics, however you may also add them explicitly to the MODULES array in the /etc/rc.conf file if desired.<br />
<br />
====ALPS Touchpads====<br />
<br />
For ALPS Touchpads, if the above configuration does not provide the desired results, try the following configuration instead:<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
InputDevice "Touchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "Device" "/dev/input/mouse0"<br />
Option "Protocol" "auto-dev"<br />
Option "LeftEdge" "130"<br />
Option "RightEdge" "840"<br />
Option "TopEdge" "130"<br />
Option "BottomEdge" "640"<br />
Option "FingerLow" "7"<br />
Option "FingerHigh" "8"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "110"<br />
Option "EmulateMidButtonTime" "75"<br />
Option "VertScrollDelta" "20"<br />
Option "HorizScrollDelta" "20"<br />
Option "MinSpeed" "0.25"<br />
Option "MaxSpeed" "0.50"<br />
Option "AccelFactor" "0.010"<br />
Option "EdgeMotionMinSpeed" "200"<br />
Option "EdgeMotionMaxSpeed" "200"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "1"<br />
Option "CircScrollDelta" "0.1"<br />
Option "CircScrollTrigger" "2"<br />
Option "SHMConfig" "on"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
<br />
==Advanced Configuration==<br />
<br />
===Input device options===<br />
<br />
There are a number of arbitrary parameters that can be tweaked for Synaptics touchpads. The following is a brief list of some of these options--see '''man synaptics''' for full details:<br />
<br />
{| class="wikitable" <br />
|-align="left"<br />
!+Option+<br />
!width=400|+Description+<br />
!width=200|+Type+<br />
|-<br />
|'''Device'''<br />
|Input device location. See [[#Troubleshooting | Troubleshooting]] to find your device handler if it isn't /dev/input/mouse0<br />
|String<br />
|-<br />
|'''MinSpeed'''<br />
|Minimum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''MaxSpeed'''<br />
|Maximum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''AccelFactor'''<br />
|Cursor Acceleration Factor<br />
|Decimal(float)<br />
|-<br />
|'''HorizScrollDelta'''<br />
|Horizontal [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''VertScrollDelta'''<br />
|Vertical [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''SHMConfig'''<br />
|height=100|Activation of shared memory(must be enabled for real-time configuration or [Disable touchpad upon external mouse detection| udev-based disabling]<br />
|Boolean<br />
|}<br />
<br />
===Gsynaptics===<br />
<br />
Once the touchpad is configured, users can also install the '''gsynaptics''' package from [community] to provide a GUI-based configuration solution for the device (note that it depends on libgnomeui):<br />
# pacman -S gsynaptics<br />
<br />
'''''Note:''' The '''gsynaptics''' web page [http://gsynaptics.sourceforge.jp/] indicates that it is becoming obsolete and users should consider '''GPointingDeviceSettings''' [http://live.gnome.org/GPointingDeviceSettings], currently available in AUR and as source code.''<br />
<br />
With hotplugging enabled(default), append this the match section of your 99-x11-synaptics.fdi or 11-x11-synaptics.fdi:<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
===Fine-tuning with synclient===<br />
<br />
The synclient monitor can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. In order for synclient to work properly, the '''SHMConfig''' option must be set to '''on''' or '''true'''.<br />
<br />
You can start the Synaptics monitor with the following command:<br />
$ synclient -m 100<br />
Where -m activates the monitor and the following number specifies the update interval in milliseconds.<br />
<br />
This monitor provides information about the current state of your touchpad. For example, if you move the mouse with the touchpad, the x and y values in the monitor will change. Therewith you can easy figure out your touchpad's dimension which is defined in the LeftEdge-, RightEdge-, BottomEdge- and TopEdge-Options.<br />
<br />
The abbreviations for the parameters are as follow:<br />
<br />
{| class="wikitable"<br />
|- align="left"<br />
!width="200"|+Abbreviation+<br />
!width="400|+Description+<br />
|-<br />
|'''time'''<br />
|Time in seconds since the logging was started.<br />
|-<br />
|'''x, y'''<br />
|The x/y coordinates of the finger on the touchpad. The origin is in the upper left corner.<br />
|-<br />
|'''z'''<br />
|The pressure value. It represents the pressure you are using to navigate on your touchpad.<br />
|-<br />
|'''f'''<br />
|Number of fingers currently touching the touchpad.<br />
|-<br />
|'''w'''<br />
|Value that represents the finger width.<br />
|-<br />
|'''l,r,u,d,m,multi'''<br />
|Those values represent the state of the left, right, up, down, middle and multi buttons pressed where zero means not pressed and one means pressed.<br />
|-<br />
|'''gl,gm,gr'''<br />
|For touchpads which have a guest device, this are the associated button states for guest left, guest middle and guest right pressed (1) and not pressed (0).<br />
|-<br />
|'''gdx, gdy'''<br />
|x/y coordinates of the guest device.<br />
|}<br />
If a value constantly is zero, it implies that this option is not supported by your device.<br />
<br />
===Edge scrolling===<br />
<br />
To enable the scroll zones found along the edges of the touchpad, add one or both of the following options to the touchpad device section in /etc/X11/xorg.conf:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "VertEdgeScroll" "true" #vertical scrolling when dragging along the right edge.<br />
Option "HorizEdgeScroll" "true" #horizontal scrolling when dragging along the bottom edge.<br />
...<br />
EndSection<br />
<br />
In ''/etc/hal/fdi/policy/11-x11-synaptics.fdi''(or if that doesn't work, ''/etc/hal/fdi/policy/99-x11-synaptics.fdi) for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
...<br />
</match><br />
<br />
===Two-Finger scrolling===<br />
<br />
Recent Synaptics touchpads support two-finger scrolling. This allows you to use two fingers together anywhere on the touchpad, similar to the behaviour of Macbooks.<br />
<br />
If your hardware supports this feature, you can enable it by inserting the following lines into the touchpad device section of /etc/X11/xorg.conf:<br />
Section "InputDevice"<br />
...<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "EmulateTwoFingerMinZ" "120" # this may vary between different machines<br />
...<br />
EndSection<br />
<br />
''EmulateTwoFingerMinZ'' is only necessary for the ALPS Touchpad, which several Dell machines have. ([http://ubuntuforums.org/showthread.php?t=516798&page=2#19 from Ubuntu forums]) <br />
<br />
'''Firefox users:''' You might find the default behaviour of Firefox pretty annoying relating to the horizontal scrolling. Just see ''Firefox and special touchpad events'' below to find out how to disable it.<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi'''(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
...<br />
</match><br />
<br />
Some users might need to modify the ''EmulateTwoFingerMinW'' parameter, as their touch pads sense two fingers as one wide finger. You can check which parameters you need to modify by running '''synclient -m 150''' -- when you touch two fingers to the touch pad, observe which parameters (z, w, or f) change. Those will determine the minimum threshold values you must set (if f changes, don't bother with ''EmulateTwoFingerMin[W,Z]'' since you do not need to emulate two fingers, your touch pad can simply sense two different fingers).<br />
<br />
===Circular scrolling===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of '''/etc/X11/xorg.conf''':<br />
Section "InputDevice"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi';'(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.CircularScrolling" type="string">on</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">0</merge><br />
...<br />
</match><br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
===Software Toggle===<br />
<br />
You may find it useful to have a software toggle that will turn on or off your touchpad, esplicially if it's extremely sensitive and your doing a lot of typing. Please also see [[Disable touchpad upon external mouse detection]] and [[Stopping the mouse from clicking while typing]] as those may be better solutions, again a matter of choice.<br />
<br />
You will want to grab [[xbindkeys]] if you don't already have key binding software.<br />
<br />
Then save this script to something such as /sbin/trackpad-toggle.sh:<br />
<br />
#!/bin/bash<br />
<br />
if [ -n "`lsmod | grep psmouse`" ]; then<br />
rmmod psmouse<br />
else<br />
modprobe psmouse<br />
fi<br />
<br />
If you use sudo, you'll liky want to add an entry to your sudoers file:<br />
<br />
visudo<br />
<br />
Then finally add a key binding to use the script, but remember that it must be run as root, so using a graphical editor here likely won't work. It is best to add the script to sudoers with ''NOPASSWD'' and call with xbindkeys like so:<br />
<br />
"sudo /sbin/trackpad-toggle.sh"<br />
m:0x5 + c:65<br />
Control+Shift + space<br />
<br />
now just (re)start xbindkeys and ctrl+Shift+Space will now toggle your trackpad !<br />
<br />
==Troubleshooting==<br />
<br />
===No scrolling/tapping with Gnome 2.28===<br />
<br />
Gnome 2.28 introduces a few additional features for managing touchpads. This change takes preference over previously configured options in the HAL policy file and thus may surprise some unsuspecting people. To change the Gnome 2.28 touchpad settings, go to ''System->Preferences->Mouse->Touchpad''.<br />
<br />
===Synaptics Special Ability===<br />
<br />
By default, Synaptics touchpads are able to detect the number of fingers on the touchpad; ALPS touchpads are not. If the touchpad is tapped with two fingers, it will emulate a middle click. If the touchpad is typed with three fingers, a right click will be emulated.<br />
<br />
===Disable touchpad upon external mouse detection===<br />
<br />
In assistance to [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, add the following udev rule to '''/etc/udev/rules.d/01-touchpad.rules''':<br />
ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=1"<br />
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=0"<br />
<br />
SHMConfig must be enabled (see the '''Configuration''' section for details)<br />
<br />
===Cursor Jump===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
===Multitouch===<br />
<br />
Multitouch gesture like in Mac OS X will be in future version of the driver.<br />
<br />
===Touchpad device isn't located at /dev/input/mouse0===<br />
<br />
If that's the case, you can use this command to display information about your input devices:<br />
cat /proc/bus/input/devices<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
<br />
In this case, the Handlers are mouse0 and event1, so /dev/input/mouse0 would be used.<br />
<br />
===Stopping the mouse from clicking while typing===<br />
<br />
To have the touchpad disabled automatically when you begin typing, add the following line to your .xinitrc before you run your window manager:<br />
syndaemon -i 2 &<br />
<br />
The '''-i 2''' switch sets the idle time to 2 seconds. The idle time specifies how many seconds to wait after the last key-press before enabling the touchpad again.<br />
<br />
Additionally you can add the '''-t''' switch that tells the daemon not to disable mouse movement when typing and only disable tapping and scrolling:<br />
syndaemon -t -i 2 &<br />
<br />
As usual you may find further information in the manpage:<br />
$ man syndaemon<br />
<br />
Note: Don't forget to enable SHMConfig in your xorg-setup, either in /etc/xorg.conf (hotplugging disabled) or in /etc/hal/fdi/policy/11-x11-synaptics.fdi (hotplugging enabled). Some users may need to specify touchpad preferences in /etc/hal/fdi/policy/99-x11-synaptics.fdi, instead.<br />
<br />
Note: If you're using GDM as your login manager and Gnome, GDM will ignore commands added to .xinitrc, other than the command to start Gnome. To start syndaemon you need to use Gnome's Startup Applications Preferences program. Login to Gnome and go to System > Preferences > Startup Applications. In the Startup Programs tab click the Add button. Name the Startup Program whatever you like and input any comments you like (or leave this field blank). In the command field add:<br />
syndaemon -i 2 -d<br />
<br />
The "-d" option is necessary to start syndaemon as a background process, instead of the "&" which does this in .xinitrc. You can add other options as well, the same way you would in .xinitrc. When you're done click the Add button in the Add Startup Program dialogue. Make sure the check box next to the startup program you've created is checked, in the list of additional startup programs. Close the Startup Applications Preferences window and you're done.<br />
<br />
===Firefox and special touchpad events===<br />
<br />
By default, Firefox is set up to do special events upon tapping or scrolling certain parts of your touchpad.<br />
You can edit the settings of those actions by typing '''about:config''' in your Firefox address bar.<br />
To alter these options, double-click on the line in question, changing "true" to "false" and vise versa.<br />
<br />
To prevent Firefox from scrolling (backward/forward) through browser history and instead scroll through pages, edit these settings as shown:<br />
mousewheel.horizscroll.withnokey.action = 1<br />
mousewheel.horizscroll.withnokey.sysnumlines = true<br />
<br />
To prevent Firefox from redirecting you to URLs formed from your clipboard content upon tapping the upper-right corner of your touchpad (or middle mouse button), set the following option to "false":<br />
middlemouse.contentLoadURL = false<br />
<br />
===Opera: horizontal scrolling issues===<br />
<br />
Same as above.<br />
To fix it, go to Tools -> Preferences -> Advanced -> Shortcuts. There you edit the mouse preferences: Delete the entries with "Button 5" and "Button 6".<br />
<br />
===Scrolling and multiple actions with Synaptics on LG Laptops===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in xorg.conf:<br />
Option "UpDownScrolling" "0"<br />
<br />
NOTE that this will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git] .<br />
<br />
There is also a package build file in the AUR to automate this: [http://aur.archlinux.org/packages.php?ID=15983].<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
cd synaptics-git<br />
makepkg<br />
<br />
If you want it to be automatically installed after being built, just add '-i' after makepkg.<br />
<br />
===Other external mouse issues===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
Option "Device" "/dev/input/mice"<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this doesn't solve your problem, make your '''touchpad''' the CorePointer in the "Server Layout" section:<br />
<br />
InputDevice "Touchpad" "CorePointer"<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
InputDevice "USB Mouse" "SendCoreEvents"<br />
<br />
finally add this to your external device's section:<br />
<br />
Option "SendCoreEvents" "true"<br />
<br />
If all of the above doesn't work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
===Touchpad synchronization issues===<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in /var/log/messages.log<br />
<br />
psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
*If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
*Avoid using an ACPI battery monitor.<br />
*Attempt to load psmouse with "proto=imps" option. To do that, add this line to your /etc/modprobe.conf:<br />
<br />
options psmouse proto=imps<br />
<br />
*Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Tapping issues===<br />
<br />
If you are not using [[Xorg input hotplugging]], you should know that Xorg v7.4 does not enable tapping by default. To enable it, add the following line to the touchpad's InputDevice section in <tt>/etc/X11/xorg.conf</tt>:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "TapButton1" "''integer''"<br />
Option "TapButton2" "''integer''"<br />
Option "TapButton3" "''integer''"<br />
...<br />
EndSection<br />
The ''integer'' of option "TapButton1" means which mouse button is reported on a non-corner one-finger tap. Usually it is 1.<br />
The ''integer'' of option "TapButton2" means which mouse button is reported on a non-corner two-finger tap. Usually it is 2.<br />
The ''integer'' of option "TapButton3" means which mouse button is reported on a non-corner three-finger tap. Usually it is 3.<br />
<br />
===Delay between a button tap and the actual click===<br />
<br />
If you experience a delay between the tap on the touchpad and the actual click that is registered you need to enable FastTaps:<br />
<br />
If you're using input hotplugging(default behavior), change your 11-x11-synaptics.fdi(or 99-x11-synaptics.fdi, in some cases) so that it contains:<br />
<br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
If you're using xorg-server with disabled input hotplugging change xorg.conf so that you have:<br />
<br />
Section "InputDevice"<br />
Identifier "Synaptics Touchpad"<br />
Driver "synaptics"<br />
...<br />
Option "FastTaps" "1"<br />
...<br />
EndSection<br />
<br />
===SynPS/2 Synaptics TouchPad can't grab event device, errno=16===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from /var/log/Xorg.0.log, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes /dev/input/mice as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in xorg.conf:<br />
<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
==External Resources==<br />
<br />
Synaptics TouchPad driver: [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/]<br />
<!-- vim: set ft=Wikipedia: --></div>Code mhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=86266Touchpad Synaptics2009-12-04T03:13:50Z<p>Code m: /* Software Toggle */</p>
<hr />
<div>[[Category:Input devices (English)]][[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Touchpad Synaptics}}<br />
{{i18n_entry|German|Touchpad Synaptics (Deutsch)}}<br />
{{i18n_entry|Русский|Тачпад Synaptics}}<br />
{{i18n_entry|简体中文|触摸板 (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
==Installation==<br />
<br />
The Synaptics driver is now bundled as ''xf86-input-synaptics'', and is available in the [[Official_Repositories|[extra] repository]]:<br />
<br />
# pacman -S xf86-input-synaptics<br />
<br />
==Configuration==<br />
<br />
Configuration for the touchpad should done by tweaking options in the XML format *.fdi policy file with latest Xserver installed using [[Xorg input hotplugging|hotplugging]]. Alternatively, configuration can be done using xorg.conf. Please note, however, that this method of configuring is deprecated and might stop working in the future. Configuration by HAL policy is therefore encouraged.<br />
<br />
===Configuration via HAL policy (hotplugging enabled, recommended) ===<br />
<br />
With [[Xorg input hotplugging|hotplugging]] (enabled by default) and HAL installed and running, your Synaptics should works "out-of-the-box".<br />
<br />
If it doesn't or you want to tweak the configuration, you will need to edit the appropriate HAL policy file (XML format).<br />
Note that in this case.<br />
<br />
Copy '''/usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi''' into '''/etc/hal/fdi/policy/'''<br />
cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/<br />
<br />
Now you can modify the new file appending new options.<br />
<br />
Here's a simple template to begin with, covering the more common features:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<!-- <match key="info.product" contains="AlpsPS/2 ALPS GlidePoint"> #ALPS users may need to use this instead of the above --><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.AlwaysCore" type="string">true</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.protocol" type="string">event</merge><br />
<merge key="input.x11_options.touchpadoff" type="string">0</merge><br />
<merge key="input.x11_options.shmconfig" type="string">on</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The syntax is similar to xorg.conf, for instance, <br />
Option "RightEdge" "5300"<br />
equates to this .fdi file line:<br />
<merge key="input.x11_options.RightEdge" type="string">5300</merge><br />
{{Box Note| In the .fdi file, every type must be "string" instead of "float" or "int" as per xorg.conf.}}<br />
{{Box Note| You might need to run '''/etc/rc.d/hal restart''' in order for the changes to take place.}}<br />
<br />
====Advanced policy configuration====<br />
<br />
The Synaptics driver allows for a vast amount of options to be tweaked. Luckily, all of them are consistently named and well documented in Synaptic's manpage.<br />
man synaptics<br />
<br />
The following shall serve as an advanced configuration example for '''11-x11-synaptics.fdi''':<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
<merge key="input.x11_options.MinSpeed" type="string">0.1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">0.4</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.002</merge><br />
<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.VerteScrollDelta" type="string">2</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.CircularScrolling" type="string">true</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">8</merge><br />
<merge key="input.x11_options.CircScrollDelta" type="string">0.1</merge><br />
<br />
<!-- Values here might differ! Use synclient -m 20 to find desired values --><br />
<merge key="input.x11_options.LeftEdge" type="string">2000</merge><br />
<merge key="input.x11_options.TopEdge" type="string">2000</merge><br />
<br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
====Other products====<br />
<br />
* ALPS users may try the following if the above does not work:<br />
<br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with MacBook (1,1 2,1 etc...)<br />
<br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with latest MacBook (5,1)<br />
<br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
{{Box Note| You can find the exact information for your touchpad in /proc/bus/input/devices.}}<br />
<br />
Or, if you find HAL is not loading your settings, try this template (the "append" child is necessary for some setups):<br />
<br />
<pre><br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="SynPS/2 Synaptics TouchPad"><br />
<append key="info.capabilities" type="strlist">input.touchpad</append><br />
</match><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
[...]<br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
<br />
===Configuration via xorg.conf (hotplugging disabled, deprecated) ===<br />
<br />
Edit ''/etc/X11/xorg.conf'' as root and add '''InputDevice "Touchpad" "SendCoreEvents"''' to the ''ServerLayout'':<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
'''''InputDevice "SynapticsTouchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Add '''Load "synaptics"''' to the ''Module'' section:<br />
Section "Module"<br />
...<br />
Load "glx"<br />
Load "freetype"<br />
'''''Load "synaptics"'''''<br />
...<br />
EndSection<br />
<br />
Lastly, add a new ''InputDevice'' section for the touchpad itself:<br />
Section "InputDevice"<br />
Identifier "SynapticsTouchpad"<br />
Driver "synaptics"<br />
Option "AlwaysCore" "true" # send events to CorePointer<br />
#Option "Device" "/dev/input/mice"<br />
Option "Device" "/dev/psaux"<br />
Option "Protocol" "auto-dev"<br />
Option "SHMConfig" "false" # configurable at runtime? security risk<br />
Option "LeftEdge" "1700" # x coord left<br />
Option "RightEdge" "5300" # x coord right<br />
Option "TopEdge" "1700" # y coord top<br />
Option "BottomEdge" "4200" # y coord bottom<br />
Option "FingerLow" "25" # pressure below this level triggers release<br />
Option "FingerHigh" "30" # pressure above this level triggers touch<br />
Option "MaxTapTime" "180" # max time in ms for detecting tap<br />
'''Option "VertEdgeScroll" "true" # enable vertical scroll zone'''<br />
'''Option "HorizEdgeScroll" "true" # enable horizontal scroll zone'''<br />
Option "CornerCoasting" "true" # enable continuous scroll with finger in corner<br />
Option "CoastingSpeed" "0.30" # corner coasting speed<br />
Option "VertScrollDelta" "100" # edge-to-edge scroll distance of the vertical scroll<br />
Option "HorizScrollDelta" "100" # edge-to-edge scroll distance of the horizontal scroll<br />
Option "MinSpeed" "0.10" # speed factor for low pointer movement<br />
Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement<br />
Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection<br />
<br />
The '''bold''' lines are important because users must now explicitly enable the side and bottom scroll zones of the touchpad. If you already had an InputDevice section configured for the old touchpad driver, you'll still need to add these two lines if you wish to use the scroll zones.<br />
<br />
Save, exit and restart X. The touchpad should now have working scroll zones. You can further tweak the ''InputDevice'' settings if desired. See [[#Advanced_Configuration | Advanced Configuration]] for more information.<br />
<br />
Note that Xorg will automatically load the '''evdev''' and '''psmouse''' kernel modules required by Synaptics, however you may also add them explicitly to the MODULES array in the /etc/rc.conf file if desired.<br />
<br />
====ALPS Touchpads====<br />
<br />
For ALPS Touchpads, if the above configuration does not provide the desired results, try the following configuration instead:<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
InputDevice "Touchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "Device" "/dev/input/mouse0"<br />
Option "Protocol" "auto-dev"<br />
Option "LeftEdge" "130"<br />
Option "RightEdge" "840"<br />
Option "TopEdge" "130"<br />
Option "BottomEdge" "640"<br />
Option "FingerLow" "7"<br />
Option "FingerHigh" "8"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "110"<br />
Option "EmulateMidButtonTime" "75"<br />
Option "VertScrollDelta" "20"<br />
Option "HorizScrollDelta" "20"<br />
Option "MinSpeed" "0.25"<br />
Option "MaxSpeed" "0.50"<br />
Option "AccelFactor" "0.010"<br />
Option "EdgeMotionMinSpeed" "200"<br />
Option "EdgeMotionMaxSpeed" "200"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "1"<br />
Option "CircScrollDelta" "0.1"<br />
Option "CircScrollTrigger" "2"<br />
Option "SHMConfig" "on"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
<br />
==Advanced Configuration==<br />
<br />
===Input device options===<br />
<br />
There are a number of arbitrary parameters that can be tweaked for Synaptics touchpads. The following is a brief list of some of these options--see '''man synaptics''' for full details:<br />
<br />
{| class="wikitable" <br />
|-align="left"<br />
!+Option+<br />
!width=400|+Description+<br />
!width=200|+Type+<br />
|-<br />
|'''Device'''<br />
|Input device location. See [[#Troubleshooting | Troubleshooting]] to find your device handler if it isn't /dev/input/mouse0<br />
|String<br />
|-<br />
|'''MinSpeed'''<br />
|Minimum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''MaxSpeed'''<br />
|Maximum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''AccelFactor'''<br />
|Cursor Acceleration Factor<br />
|Decimal(float)<br />
|-<br />
|'''HorizScrollDelta'''<br />
|Horizontal [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''VertScrollDelta'''<br />
|Vertical [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''SHMConfig'''<br />
|height=100|Activation of shared memory(must be enabled for real-time configuration or [Disable touchpad upon external mouse detection| udev-based disabling]<br />
|Boolean<br />
|}<br />
<br />
===Gsynaptics===<br />
<br />
Once the touchpad is configured, users can also install the '''gsynaptics''' package from [community] to provide a GUI-based configuration solution for the device (note that it depends on libgnomeui):<br />
# pacman -S gsynaptics<br />
<br />
'''''Note:''' The '''gsynaptics''' web page [http://gsynaptics.sourceforge.jp/] indicates that it is becoming obsolete and users should consider '''GPointingDeviceSettings''' [http://live.gnome.org/GPointingDeviceSettings], currently available in AUR and as source code.''<br />
<br />
With hotplugging enabled(default), append this the match section of your 99-x11-synaptics.fdi or 11-x11-synaptics.fdi:<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
===Fine-tuning with synclient===<br />
<br />
The synclient monitor can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. In order for synclient to work properly, the '''SHMConfig''' option must be set to '''on''' or '''true'''.<br />
<br />
You can start the Synaptics monitor with the following command:<br />
$ synclient -m 100<br />
Where -m activates the monitor and the following number specifies the update interval in milliseconds.<br />
<br />
This monitor provides information about the current state of your touchpad. For example, if you move the mouse with the touchpad, the x and y values in the monitor will change. Therewith you can easy figure out your touchpad's dimension which is defined in the LeftEdge-, RightEdge-, BottomEdge- and TopEdge-Options.<br />
<br />
The abbreviations for the parameters are as follow:<br />
<br />
{| class="wikitable"<br />
|- align="left"<br />
!width="200"|+Abbreviation+<br />
!width="400|+Description+<br />
|-<br />
|'''time'''<br />
|Time in seconds since the logging was started.<br />
|-<br />
|'''x, y'''<br />
|The x/y coordinates of the finger on the touchpad. The origin is in the upper left corner.<br />
|-<br />
|'''z'''<br />
|The pressure value. It represents the pressure you are using to navigate on your touchpad.<br />
|-<br />
|'''f'''<br />
|Number of fingers currently touching the touchpad.<br />
|-<br />
|'''w'''<br />
|Value that represents the finger width.<br />
|-<br />
|'''l,r,u,d,m,multi'''<br />
|Those values represent the state of the left, right, up, down, middle and multi buttons pressed where zero means not pressed and one means pressed.<br />
|-<br />
|'''gl,gm,gr'''<br />
|For touchpads which have a guest device, this are the associated button states for guest left, guest middle and guest right pressed (1) and not pressed (0).<br />
|-<br />
|'''gdx, gdy'''<br />
|x/y coordinates of the guest device.<br />
|}<br />
If a value constantly is zero, it implies that this option is not supported by your device.<br />
<br />
===Edge scrolling===<br />
<br />
To enable the scroll zones found along the edges of the touchpad, add one or both of the following options to the touchpad device section in /etc/X11/xorg.conf:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "VertEdgeScroll" "true" #vertical scrolling when dragging along the right edge.<br />
Option "HorizEdgeScroll" "true" #horizontal scrolling when dragging along the bottom edge.<br />
...<br />
EndSection<br />
<br />
In ''/etc/hal/fdi/policy/11-x11-synaptics.fdi''(or if that doesn't work, ''/etc/hal/fdi/policy/99-x11-synaptics.fdi) for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
...<br />
</match><br />
<br />
===Two-Finger scrolling===<br />
<br />
Recent Synaptics touchpads support two-finger scrolling. This allows you to use two fingers together anywhere on the touchpad, similar to the behaviour of Macbooks.<br />
<br />
If your hardware supports this feature, you can enable it by inserting the following lines into the touchpad device section of /etc/X11/xorg.conf:<br />
Section "InputDevice"<br />
...<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "EmulateTwoFingerMinZ" "120" # this may vary between different machines<br />
...<br />
EndSection<br />
<br />
''EmulateTwoFingerMinZ'' is only necessary for the ALPS Touchpad, which several Dell machines have. ([http://ubuntuforums.org/showthread.php?t=516798&page=2#19 from Ubuntu forums]) <br />
<br />
'''Firefox users:''' You might find the default behaviour of Firefox pretty annoying relating to the horizontal scrolling. Just see ''Firefox and special touchpad events'' below to find out how to disable it.<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi'''(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
...<br />
</match><br />
<br />
Some users might need to modify the ''EmulateTwoFingerMinW'' parameter, as their touch pads sense two fingers as one wide finger. You can check which parameters you need to modify by running '''synclient -m 150''' -- when you touch two fingers to the touch pad, observe which parameters (z, w, or f) change. Those will determine the minimum threshold values you must set (if f changes, don't bother with ''EmulateTwoFingerMin[W,Z]'' since you do not need to emulate two fingers, your touch pad can simply sense two different fingers).<br />
<br />
===Circular scrolling===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of '''/etc/X11/xorg.conf''':<br />
Section "InputDevice"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi';'(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.CircularScrolling" type="string">on</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">0</merge><br />
...<br />
</match><br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
===Software Toggle===<br />
<br />
You may find it useful to have a software toggle that will turn on or off your touchpad, esplicially if it's extremely sensitive and your doing a lot of typing. Please also see [[#Disable touchpad upon external mouse detection]] and [[#Stopping the mouse from clicking while typing]] as those may be better solutions, again a matter of choice.<br />
<br />
You will want to grab [[xbindkeys]] if you don't already have key binding software.<br />
<br />
Then save this script to something such as /sbin/trackpad-toggle.sh:<br />
<br />
#!/bin/bash<br />
<br />
if [ -n "`lsmod | grep psmouse`" ]; then<br />
rmmod psmouse<br />
else<br />
modprobe psmouse<br />
fi<br />
<br />
If you use sudo, you'll liky want to add an entry to your sudoers file:<br />
<br />
visudo<br />
<br />
Then finally add a key binding to use the script, but remember that it must be run as root, so using a graphical editor here likely won't work. It is best to add the script to sudoers with ''NOPASSWD'' and call with xbindkeys like so:<br />
<br />
"sudo /sbin/trackpad-toggle.sh"<br />
m:0x5 + c:65<br />
Control+Shift + space<br />
<br />
now just (re)start xbindkeys and ctrl+Shift+Space will now toggle your trackpad !<br />
<br />
==Troubleshooting==<br />
<br />
===No scrolling/tapping with Gnome 2.28===<br />
<br />
Gnome 2.28 introduces a few additional features for managing touchpads. This change takes preference over previously configured options in the HAL policy file and thus may surprise some unsuspecting people. To change the Gnome 2.28 touchpad settings, go to ''System->Preferences->Mouse->Touchpad''.<br />
<br />
===Synaptics Special Ability===<br />
<br />
By default, Synaptics touchpads are able to detect the number of fingers on the touchpad; ALPS touchpads are not. If the touchpad is tapped with two fingers, it will emulate a middle click. If the touchpad is typed with three fingers, a right click will be emulated.<br />
<br />
===Disable touchpad upon external mouse detection===<br />
<br />
In assistance to [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, add the following udev rule to '''/etc/udev/rules.d/01-touchpad.rules''':<br />
ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=1"<br />
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=0"<br />
<br />
SHMConfig must be enabled (see the '''Configuration''' section for details)<br />
<br />
===Cursor Jump===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
===Multitouch===<br />
<br />
Multitouch gesture like in Mac OS X will be in future version of the driver.<br />
<br />
===Touchpad device isn't located at /dev/input/mouse0===<br />
<br />
If that's the case, you can use this command to display information about your input devices:<br />
cat /proc/bus/input/devices<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
<br />
In this case, the Handlers are mouse0 and event1, so /dev/input/mouse0 would be used.<br />
<br />
===Stopping the mouse from clicking while typing===<br />
<br />
To have the touchpad disabled automatically when you begin typing, add the following line to your .xinitrc before you run your window manager:<br />
syndaemon -i 2 &<br />
<br />
The '''-i 2''' switch sets the idle time to 2 seconds. The idle time specifies how many seconds to wait after the last key-press before enabling the touchpad again.<br />
<br />
Additionally you can add the '''-t''' switch that tells the daemon not to disable mouse movement when typing and only disable tapping and scrolling:<br />
syndaemon -t -i 2 &<br />
<br />
As usual you may find further information in the manpage:<br />
$ man syndaemon<br />
<br />
Note: Don't forget to enable SHMConfig in your xorg-setup, either in /etc/xorg.conf (hotplugging disabled) or in /etc/hal/fdi/policy/11-x11-synaptics.fdi (hotplugging enabled). Some users may need to specify touchpad preferences in /etc/hal/fdi/policy/99-x11-synaptics.fdi, instead.<br />
<br />
Note: If you're using GDM as your login manager and Gnome, GDM will ignore commands added to .xinitrc, other than the command to start Gnome. To start syndaemon you need to use Gnome's Startup Applications Preferences program. Login to Gnome and go to System > Preferences > Startup Applications. In the Startup Programs tab click the Add button. Name the Startup Program whatever you like and input any comments you like (or leave this field blank). In the command field add:<br />
syndaemon -i 2 -d<br />
<br />
The "-d" option is necessary to start syndaemon as a background process, instead of the "&" which does this in .xinitrc. You can add other options as well, the same way you would in .xinitrc. When you're done click the Add button in the Add Startup Program dialogue. Make sure the check box next to the startup program you've created is checked, in the list of additional startup programs. Close the Startup Applications Preferences window and you're done.<br />
<br />
===Firefox and special touchpad events===<br />
<br />
By default, Firefox is set up to do special events upon tapping or scrolling certain parts of your touchpad.<br />
You can edit the settings of those actions by typing '''about:config''' in your Firefox address bar.<br />
To alter these options, double-click on the line in question, changing "true" to "false" and vise versa.<br />
<br />
To prevent Firefox from scrolling (backward/forward) through browser history and instead scroll through pages, edit these settings as shown:<br />
mousewheel.horizscroll.withnokey.action = 1<br />
mousewheel.horizscroll.withnokey.sysnumlines = true<br />
<br />
To prevent Firefox from redirecting you to URLs formed from your clipboard content upon tapping the upper-right corner of your touchpad (or middle mouse button), set the following option to "false":<br />
middlemouse.contentLoadURL = false<br />
<br />
===Opera: horizontal scrolling issues===<br />
<br />
Same as above.<br />
To fix it, go to Tools -> Preferences -> Advanced -> Shortcuts. There you edit the mouse preferences: Delete the entries with "Button 5" and "Button 6".<br />
<br />
===Scrolling and multiple actions with Synaptics on LG Laptops===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in xorg.conf:<br />
Option "UpDownScrolling" "0"<br />
<br />
NOTE that this will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git] .<br />
<br />
There is also a package build file in the AUR to automate this: [http://aur.archlinux.org/packages.php?ID=15983].<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
cd synaptics-git<br />
makepkg<br />
<br />
If you want it to be automatically installed after being built, just add '-i' after makepkg.<br />
<br />
===Other external mouse issues===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
Option "Device" "/dev/input/mice"<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this doesn't solve your problem, make your '''touchpad''' the CorePointer in the "Server Layout" section:<br />
<br />
InputDevice "Touchpad" "CorePointer"<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
InputDevice "USB Mouse" "SendCoreEvents"<br />
<br />
finally add this to your external device's section:<br />
<br />
Option "SendCoreEvents" "true"<br />
<br />
If all of the above doesn't work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
===Touchpad synchronization issues===<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in /var/log/messages.log<br />
<br />
psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
*If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
*Avoid using an ACPI battery monitor.<br />
*Attempt to load psmouse with "proto=imps" option. To do that, add this line to your /etc/modprobe.conf:<br />
<br />
options psmouse proto=imps<br />
<br />
*Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Tapping issues===<br />
<br />
If you are not using [[Xorg input hotplugging]], you should know that Xorg v7.4 does not enable tapping by default. To enable it, add the following line to the touchpad's InputDevice section in <tt>/etc/X11/xorg.conf</tt>:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "TapButton1" "''integer''"<br />
Option "TapButton2" "''integer''"<br />
Option "TapButton3" "''integer''"<br />
...<br />
EndSection<br />
The ''integer'' of option "TapButton1" means which mouse button is reported on a non-corner one-finger tap. Usually it is 1.<br />
The ''integer'' of option "TapButton2" means which mouse button is reported on a non-corner two-finger tap. Usually it is 2.<br />
The ''integer'' of option "TapButton3" means which mouse button is reported on a non-corner three-finger tap. Usually it is 3.<br />
<br />
===Delay between a button tap and the actual click===<br />
<br />
If you experience a delay between the tap on the touchpad and the actual click that is registered you need to enable FastTaps:<br />
<br />
If you're using input hotplugging(default behavior), change your 11-x11-synaptics.fdi(or 99-x11-synaptics.fdi, in some cases) so that it contains:<br />
<br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
If you're using xorg-server with disabled input hotplugging change xorg.conf so that you have:<br />
<br />
Section "InputDevice"<br />
Identifier "Synaptics Touchpad"<br />
Driver "synaptics"<br />
...<br />
Option "FastTaps" "1"<br />
...<br />
EndSection<br />
<br />
===SynPS/2 Synaptics TouchPad can't grab event device, errno=16===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from /var/log/Xorg.0.log, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes /dev/input/mice as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in xorg.conf:<br />
<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
==External Resources==<br />
<br />
Synaptics TouchPad driver: [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/]<br />
<!-- vim: set ft=Wikipedia: --></div>Code mhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=86232Touchpad Synaptics2009-12-03T23:15:07Z<p>Code m: /* Advanced Configuration */</p>
<hr />
<div>[[Category:Input devices (English)]][[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Touchpad Synaptics}}<br />
{{i18n_entry|German|Touchpad Synaptics (Deutsch)}}<br />
{{i18n_entry|Русский|Тачпад Synaptics}}<br />
{{i18n_entry|简体中文|触摸板 (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
==Installation==<br />
<br />
The Synaptics driver is now bundled as ''xf86-input-synaptics'', and is available in the [[Official_Repositories|[extra] repository]]:<br />
<br />
# pacman -S xf86-input-synaptics<br />
<br />
==Configuration==<br />
<br />
Configuration for the touchpad should done by tweaking options in the XML format *.fdi policy file with latest Xserver installed using [[Xorg input hotplugging|hotplugging]]. Alternatively, configuration can be done using xorg.conf. Please note, however, that this method of configuring is deprecated and might stop working in the future. Configuration by HAL policy is therefore encouraged.<br />
<br />
===Configuration via HAL policy (hotplugging enabled, recommended) ===<br />
<br />
With [[Xorg input hotplugging|hotplugging]] (enabled by default) and HAL installed and running, your Synaptics should works "out-of-the-box".<br />
<br />
If it doesn't or you want to tweak the configuration, you will need to edit the appropriate HAL policy file (XML format).<br />
Note that in this case.<br />
<br />
Copy '''/usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi''' into '''/etc/hal/fdi/policy/'''<br />
cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/<br />
<br />
Now you can modify the new file appending new options.<br />
<br />
Here's a simple template to begin with, covering the more common features:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<!-- <match key="info.product" contains="AlpsPS/2 ALPS GlidePoint"> #ALPS users may need to use this instead of the above --><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.AlwaysCore" type="string">true</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.protocol" type="string">event</merge><br />
<merge key="input.x11_options.touchpadoff" type="string">0</merge><br />
<merge key="input.x11_options.shmconfig" type="string">on</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The syntax is similar to xorg.conf, for instance, <br />
Option "RightEdge" "5300"<br />
equates to this .fdi file line:<br />
<merge key="input.x11_options.RightEdge" type="string">5300</merge><br />
{{Box Note| In the .fdi file, every type must be "string" instead of "float" or "int" as per xorg.conf.}}<br />
{{Box Note| You might need to run '''/etc/rc.d/hal restart''' in order for the changes to take place.}}<br />
<br />
====Advanced policy configuration====<br />
<br />
The Synaptics driver allows for a vast amount of options to be tweaked. Luckily, all of them are consistently named and well documented in Synaptic's manpage.<br />
man synaptics<br />
<br />
The following shall serve as an advanced configuration example for '''11-x11-synaptics.fdi''':<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Synaptics TouchPad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
<merge key="input.x11_options.MinSpeed" type="string">0.1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">0.4</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.002</merge><br />
<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.VerteScrollDelta" type="string">2</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge><br />
<br />
<merge key="input.x11_options.CircularScrolling" type="string">true</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">8</merge><br />
<merge key="input.x11_options.CircScrollDelta" type="string">0.1</merge><br />
<br />
<!-- Values here might differ! Use synclient -m 20 to find desired values --><br />
<merge key="input.x11_options.LeftEdge" type="string">2000</merge><br />
<merge key="input.x11_options.TopEdge" type="string">2000</merge><br />
<br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
====Other products====<br />
<br />
* ALPS users may try the following if the above does not work:<br />
<br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with MacBook (1,1 2,1 etc...)<br />
<br />
<match key="info.product" contains="appletouch"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
* Apple users with latest MacBook (5,1)<br />
<br />
<match key="info.product" contains="bcm5974"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
</match><br />
<br />
{{Box Note| You can find the exact information for your touchpad in /proc/bus/input/devices.}}<br />
<br />
Or, if you find HAL is not loading your settings, try this template (the "append" child is necessary for some setups):<br />
<br />
<pre><br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" contains="SynPS/2 Synaptics TouchPad"><br />
<append key="info.capabilities" type="strlist">input.touchpad</append><br />
</match><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
[...]<br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
<br />
===Configuration via xorg.conf (hotplugging disabled, deprecated) ===<br />
<br />
Edit ''/etc/X11/xorg.conf'' as root and add '''InputDevice "Touchpad" "SendCoreEvents"''' to the ''ServerLayout'':<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
'''''InputDevice "SynapticsTouchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Add '''Load "synaptics"''' to the ''Module'' section:<br />
Section "Module"<br />
...<br />
Load "glx"<br />
Load "freetype"<br />
'''''Load "synaptics"'''''<br />
...<br />
EndSection<br />
<br />
Lastly, add a new ''InputDevice'' section for the touchpad itself:<br />
Section "InputDevice"<br />
Identifier "SynapticsTouchpad"<br />
Driver "synaptics"<br />
Option "AlwaysCore" "true" # send events to CorePointer<br />
#Option "Device" "/dev/input/mice"<br />
Option "Device" "/dev/psaux"<br />
Option "Protocol" "auto-dev"<br />
Option "SHMConfig" "false" # configurable at runtime? security risk<br />
Option "LeftEdge" "1700" # x coord left<br />
Option "RightEdge" "5300" # x coord right<br />
Option "TopEdge" "1700" # y coord top<br />
Option "BottomEdge" "4200" # y coord bottom<br />
Option "FingerLow" "25" # pressure below this level triggers release<br />
Option "FingerHigh" "30" # pressure above this level triggers touch<br />
Option "MaxTapTime" "180" # max time in ms for detecting tap<br />
'''Option "VertEdgeScroll" "true" # enable vertical scroll zone'''<br />
'''Option "HorizEdgeScroll" "true" # enable horizontal scroll zone'''<br />
Option "CornerCoasting" "true" # enable continuous scroll with finger in corner<br />
Option "CoastingSpeed" "0.30" # corner coasting speed<br />
Option "VertScrollDelta" "100" # edge-to-edge scroll distance of the vertical scroll<br />
Option "HorizScrollDelta" "100" # edge-to-edge scroll distance of the horizontal scroll<br />
Option "MinSpeed" "0.10" # speed factor for low pointer movement<br />
Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement<br />
Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection<br />
<br />
The '''bold''' lines are important because users must now explicitly enable the side and bottom scroll zones of the touchpad. If you already had an InputDevice section configured for the old touchpad driver, you'll still need to add these two lines if you wish to use the scroll zones.<br />
<br />
Save, exit and restart X. The touchpad should now have working scroll zones. You can further tweak the ''InputDevice'' settings if desired. See [[#Advanced_Configuration | Advanced Configuration]] for more information.<br />
<br />
Note that Xorg will automatically load the '''evdev''' and '''psmouse''' kernel modules required by Synaptics, however you may also add them explicitly to the MODULES array in the /etc/rc.conf file if desired.<br />
<br />
====ALPS Touchpads====<br />
<br />
For ALPS Touchpads, if the above configuration does not provide the desired results, try the following configuration instead:<br />
<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
InputDevice "Touchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "Device" "/dev/input/mouse0"<br />
Option "Protocol" "auto-dev"<br />
Option "LeftEdge" "130"<br />
Option "RightEdge" "840"<br />
Option "TopEdge" "130"<br />
Option "BottomEdge" "640"<br />
Option "FingerLow" "7"<br />
Option "FingerHigh" "8"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "110"<br />
Option "EmulateMidButtonTime" "75"<br />
Option "VertScrollDelta" "20"<br />
Option "HorizScrollDelta" "20"<br />
Option "MinSpeed" "0.25"<br />
Option "MaxSpeed" "0.50"<br />
Option "AccelFactor" "0.010"<br />
Option "EdgeMotionMinSpeed" "200"<br />
Option "EdgeMotionMaxSpeed" "200"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "1"<br />
Option "CircScrollDelta" "0.1"<br />
Option "CircScrollTrigger" "2"<br />
Option "SHMConfig" "on"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
<br />
==Advanced Configuration==<br />
<br />
===Input device options===<br />
<br />
There are a number of arbitrary parameters that can be tweaked for Synaptics touchpads. The following is a brief list of some of these options--see '''man synaptics''' for full details:<br />
<br />
{| class="wikitable" <br />
|-align="left"<br />
!+Option+<br />
!width=400|+Description+<br />
!width=200|+Type+<br />
|-<br />
|'''Device'''<br />
|Input device location. See [[#Troubleshooting | Troubleshooting]] to find your device handler if it isn't /dev/input/mouse0<br />
|String<br />
|-<br />
|'''MinSpeed'''<br />
|Minimum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''MaxSpeed'''<br />
|Maximum cursor speed<br />
|Decimal(float)<br />
|-<br />
|'''AccelFactor'''<br />
|Cursor Acceleration Factor<br />
|Decimal(float)<br />
|-<br />
|'''HorizScrollDelta'''<br />
|Horizontal [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''VertScrollDelta'''<br />
|Vertical [edge] scrolling speed(lower means faster)<br />
|Integer<br />
|-<br />
|'''SHMConfig'''<br />
|height=100|Activation of shared memory(must be enabled for real-time configuration or [Disable touchpad upon external mouse detection| udev-based disabling]<br />
|Boolean<br />
|}<br />
<br />
===Gsynaptics===<br />
<br />
Once the touchpad is configured, users can also install the '''gsynaptics''' package from [community] to provide a GUI-based configuration solution for the device (note that it depends on libgnomeui):<br />
# pacman -S gsynaptics<br />
<br />
'''''Note:''' The '''gsynaptics''' web page [http://gsynaptics.sourceforge.jp/] indicates that it is becoming obsolete and users should consider '''GPointingDeviceSettings''' [http://live.gnome.org/GPointingDeviceSettings], currently available in AUR and as source code.''<br />
<br />
With hotplugging enabled(default), append this the match section of your 99-x11-synaptics.fdi or 11-x11-synaptics.fdi:<br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<br />
===Fine-tuning with synclient===<br />
<br />
The synclient monitor can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. In order for synclient to work properly, the '''SHMConfig''' option must be set to '''on''' or '''true'''.<br />
<br />
You can start the Synaptics monitor with the following command:<br />
$ synclient -m 100<br />
Where -m activates the monitor and the following number specifies the update interval in milliseconds.<br />
<br />
This monitor provides information about the current state of your touchpad. For example, if you move the mouse with the touchpad, the x and y values in the monitor will change. Therewith you can easy figure out your touchpad's dimension which is defined in the LeftEdge-, RightEdge-, BottomEdge- and TopEdge-Options.<br />
<br />
The abbreviations for the parameters are as follow:<br />
<br />
{| class="wikitable"<br />
|- align="left"<br />
!width="200"|+Abbreviation+<br />
!width="400|+Description+<br />
|-<br />
|'''time'''<br />
|Time in seconds since the logging was started.<br />
|-<br />
|'''x, y'''<br />
|The x/y coordinates of the finger on the touchpad. The origin is in the upper left corner.<br />
|-<br />
|'''z'''<br />
|The pressure value. It represents the pressure you are using to navigate on your touchpad.<br />
|-<br />
|'''f'''<br />
|Number of fingers currently touching the touchpad.<br />
|-<br />
|'''w'''<br />
|Value that represents the finger width.<br />
|-<br />
|'''l,r,u,d,m,multi'''<br />
|Those values represent the state of the left, right, up, down, middle and multi buttons pressed where zero means not pressed and one means pressed.<br />
|-<br />
|'''gl,gm,gr'''<br />
|For touchpads which have a guest device, this are the associated button states for guest left, guest middle and guest right pressed (1) and not pressed (0).<br />
|-<br />
|'''gdx, gdy'''<br />
|x/y coordinates of the guest device.<br />
|}<br />
If a value constantly is zero, it implies that this option is not supported by your device.<br />
<br />
===Edge scrolling===<br />
<br />
To enable the scroll zones found along the edges of the touchpad, add one or both of the following options to the touchpad device section in /etc/X11/xorg.conf:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "VertEdgeScroll" "true" #vertical scrolling when dragging along the right edge.<br />
Option "HorizEdgeScroll" "true" #horizontal scrolling when dragging along the bottom edge.<br />
...<br />
EndSection<br />
<br />
In ''/etc/hal/fdi/policy/11-x11-synaptics.fdi''(or if that doesn't work, ''/etc/hal/fdi/policy/99-x11-synaptics.fdi) for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
...<br />
</match><br />
<br />
===Two-Finger scrolling===<br />
<br />
Recent Synaptics touchpads support two-finger scrolling. This allows you to use two fingers together anywhere on the touchpad, similar to the behaviour of Macbooks.<br />
<br />
If your hardware supports this feature, you can enable it by inserting the following lines into the touchpad device section of /etc/X11/xorg.conf:<br />
Section "InputDevice"<br />
...<br />
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers<br />
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers<br />
Option "EmulateTwoFingerMinZ" "120" # this may vary between different machines<br />
...<br />
EndSection<br />
<br />
''EmulateTwoFingerMinZ'' is only necessary for the ALPS Touchpad, which several Dell machines have. ([http://ubuntuforums.org/showthread.php?t=516798&page=2#19 from Ubuntu forums]) <br />
<br />
'''Firefox users:''' You might find the default behaviour of Firefox pretty annoying relating to the horizontal scrolling. Just see ''Firefox and special touchpad events'' below to find out how to disable it.<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi'''(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
...<br />
</match><br />
<br />
Some users might need to modify the ''EmulateTwoFingerMinW'' parameter, as their touch pads sense two fingers as one wide finger. You can check which parameters you need to modify by running '''synclient -m 150''' -- when you touch two fingers to the touch pad, observe which parameters (z, w, or f) change. Those will determine the minimum threshold values you must set (if f changes, don't bother with ''EmulateTwoFingerMin[W,Z]'' since you do not need to emulate two fingers, your touch pad can simply sense two different fingers).<br />
<br />
===Circular scrolling===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of '''/etc/X11/xorg.conf''':<br />
Section "InputDevice"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
<br />
In '''/etc/hal/fdi/policy/11-x11-synaptics.fdi';'(or '''/etc/hal/fdi/policy/99-x11-synaptics.fdi''') for [[#Configuration_via_HAL_policies_.28hotplugging_enabled.29 | Hotplugging]]:<br />
<match key="info.product" contains="Synaptics TouchPad"><br />
...<br />
<merge key="input.x11_options.CircularScrolling" type="string">on</merge><br />
<merge key="input.x11_options.CircScrollTrigger" type="string">0</merge><br />
...<br />
</match><br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
===Software Toggle===<br />
<br />
You may find it useful to have a software toggle that will turn on or off your touchpad, esplicially if it's extremely sensitive and your doing a lot of typing.<br />
<br />
You will want to grab [[xbindkeys]] if you don't already have key binding software.<br />
<br />
Then save this script to something such as /sbin/trackpad-toggle.sh:<br />
<br />
#!/bin/bash<br />
<br />
if [ -n "`lsmod | grep psmouse`" ]; then<br />
rmmod psmouse<br />
else<br />
modprobe psmouse<br />
fi<br />
<br />
If you use sudo, you'll liky want to add an entry to your sudoers file:<br />
<br />
visudo<br />
<br />
Then finally add a key binding to use the script, but remember that it must be run as root, so using a graphical editor here likely won't work. It is best to add the script to sudoers with ''NOPASSWD'' and call with xbindkeys like so:<br />
<br />
"sudo /sbin/trackpad-toggle.sh"<br />
m:0x5 + c:65<br />
Control+Shift + space<br />
<br />
now just (re)start xbindkeys and ctrl+Shift+Space will now toggle your trackpad !<br />
<br />
==Troubleshooting==<br />
<br />
===No scrolling/tapping with Gnome 2.28===<br />
<br />
Gnome 2.28 introduces a few additional features for managing touchpads. This change takes preference over previously configured options in the HAL policy file and thus may surprise some unsuspecting people. To change the Gnome 2.28 touchpad settings, go to ''System->Preferences->Mouse->Touchpad''.<br />
<br />
===Synaptics Special Ability===<br />
<br />
By default, Synaptics touchpads are able to detect the number of fingers on the touchpad; ALPS touchpads are not. If the touchpad is tapped with two fingers, it will emulate a middle click. If the touchpad is typed with three fingers, a right click will be emulated.<br />
<br />
===Disable touchpad upon external mouse detection===<br />
<br />
In assistance to [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, add the following udev rule to '''/etc/udev/rules.d/01-touchpad.rules''':<br />
ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=1"<br />
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient -s TouchpadOff=0"<br />
<br />
SHMConfig must be enabled (see the '''Configuration''' section for details)<br />
<br />
===Cursor Jump===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
===Multitouch===<br />
<br />
Multitouch gesture like in Mac OS X will be in future version of the driver.<br />
<br />
===Touchpad device isn't located at /dev/input/mouse0===<br />
<br />
If that's the case, you can use this command to display information about your input devices:<br />
cat /proc/bus/input/devices<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
<br />
In this case, the Handlers are mouse0 and event1, so /dev/input/mouse0 would be used.<br />
<br />
===Stopping the mouse from clicking while typing===<br />
<br />
To have the touchpad disabled automatically when you begin typing, add the following line to your .xinitrc before you run your window manager:<br />
syndaemon -i 2 &<br />
<br />
The '''-i 2''' switch sets the idle time to 2 seconds. The idle time specifies how many seconds to wait after the last key-press before enabling the touchpad again.<br />
<br />
Additionally you can add the '''-t''' switch that tells the daemon not to disable mouse movement when typing and only disable tapping and scrolling:<br />
syndaemon -t -i 2 &<br />
<br />
As usual you may find further information in the manpage:<br />
$ man syndaemon<br />
<br />
Note: Don't forget to enable SHMConfig in your xorg-setup, either in /etc/xorg.conf (hotplugging disabled) or in /etc/hal/fdi/policy/11-x11-synaptics.fdi (hotplugging enabled). Some users may need to specify touchpad preferences in /etc/hal/fdi/policy/99-x11-synaptics.fdi, instead.<br />
<br />
Note: If you're using GDM as your login manager and Gnome, GDM will ignore commands added to .xinitrc, other than the command to start Gnome. To start syndaemon you need to use Gnome's Startup Applications Preferences program. Login to Gnome and go to System > Preferences > Startup Applications. In the Startup Programs tab click the Add button. Name the Startup Program whatever you like and input any comments you like (or leave this field blank). In the command field add:<br />
syndaemon -i 2 -d<br />
<br />
The "-d" option is necessary to start syndaemon as a background process, instead of the "&" which does this in .xinitrc. You can add other options as well, the same way you would in .xinitrc. When you're done click the Add button in the Add Startup Program dialogue. Make sure the check box next to the startup program you've created is checked, in the list of additional startup programs. Close the Startup Applications Preferences window and you're done.<br />
<br />
===Firefox and special touchpad events===<br />
<br />
By default, Firefox is set up to do special events upon tapping or scrolling certain parts of your touchpad.<br />
You can edit the settings of those actions by typing '''about:config''' in your Firefox address bar.<br />
To alter these options, double-click on the line in question, changing "true" to "false" and vise versa.<br />
<br />
To prevent Firefox from scrolling (backward/forward) through browser history and instead scroll through pages, edit these settings as shown:<br />
mousewheel.horizscroll.withnokey.action = 1<br />
mousewheel.horizscroll.withnokey.sysnumlines = true<br />
<br />
To prevent Firefox from redirecting you to URLs formed from your clipboard content upon tapping the upper-right corner of your touchpad (or middle mouse button), set the following option to "false":<br />
middlemouse.contentLoadURL = false<br />
<br />
===Opera: horizontal scrolling issues===<br />
<br />
Same as above.<br />
To fix it, go to Tools -> Preferences -> Advanced -> Shortcuts. There you edit the mouse preferences: Delete the entries with "Button 5" and "Button 6".<br />
<br />
===Scrolling and multiple actions with Synaptics on LG Laptops===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in xorg.conf:<br />
Option "UpDownScrolling" "0"<br />
<br />
NOTE that this will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git] .<br />
<br />
There is also a package build file in the AUR to automate this: [http://aur.archlinux.org/packages.php?ID=15983].<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
cd synaptics-git<br />
makepkg<br />
<br />
If you want it to be automatically installed after being built, just add '-i' after makepkg.<br />
<br />
===Other external mouse issues===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
Option "Device" "/dev/input/mice"<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this doesn't solve your problem, make your '''touchpad''' the CorePointer in the "Server Layout" section:<br />
<br />
InputDevice "Touchpad" "CorePointer"<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
InputDevice "USB Mouse" "SendCoreEvents"<br />
<br />
finally add this to your external device's section:<br />
<br />
Option "SendCoreEvents" "true"<br />
<br />
If all of the above doesn't work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
===Touchpad synchronization issues===<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in /var/log/messages.log<br />
<br />
psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
*If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
*Avoid using an ACPI battery monitor.<br />
*Attempt to load psmouse with "proto=imps" option. To do that, add this line to your /etc/modprobe.conf:<br />
<br />
options psmouse proto=imps<br />
<br />
*Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Tapping issues===<br />
<br />
If you are not using [[Xorg input hotplugging]], you should know that Xorg v7.4 does not enable tapping by default. To enable it, add the following line to the touchpad's InputDevice section in <tt>/etc/X11/xorg.conf</tt>:<br />
<br />
Section "InputDevice"<br />
...<br />
Option "TapButton1" "''integer''"<br />
Option "TapButton2" "''integer''"<br />
Option "TapButton3" "''integer''"<br />
...<br />
EndSection<br />
The ''integer'' of option "TapButton1" means which mouse button is reported on a non-corner one-finger tap. Usually it is 1.<br />
The ''integer'' of option "TapButton2" means which mouse button is reported on a non-corner two-finger tap. Usually it is 2.<br />
The ''integer'' of option "TapButton3" means which mouse button is reported on a non-corner three-finger tap. Usually it is 3.<br />
<br />
===Delay between a button tap and the actual click===<br />
<br />
If you experience a delay between the tap on the touchpad and the actual click that is registered you need to enable FastTaps:<br />
<br />
If you're using input hotplugging(default behavior), change your 11-x11-synaptics.fdi(or 99-x11-synaptics.fdi, in some cases) so that it contains:<br />
<br />
<merge key="input.x11_options.FastTaps" type="string">1</merge><br />
<br />
If you're using xorg-server with disabled input hotplugging change xorg.conf so that you have:<br />
<br />
Section "InputDevice"<br />
Identifier "Synaptics Touchpad"<br />
Driver "synaptics"<br />
...<br />
Option "FastTaps" "1"<br />
...<br />
EndSection<br />
<br />
===SynPS/2 Synaptics TouchPad can't grab event device, errno=16===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from /var/log/Xorg.0.log, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes /dev/input/mice as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in xorg.conf:<br />
<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
==External Resources==<br />
<br />
Synaptics TouchPad driver: [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/]<br />
<!-- vim: set ft=Wikipedia: --></div>Code mhttps://wiki.archlinux.org/index.php?title=Dell_Inspiron_1525&diff=82474Dell Inspiron 15252009-11-07T23:55:15Z<p>Code m: /* References */</p>
<hr />
<div>[[Category:Laptops (English)]]<br />
[[Category:HOWTOs (English)]]<br />
<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Dell_Inspiron_1525}}<br />
{{i18n_entry|Русский|Dell_Inspiron_1525_(Русский)}}<br />
{{i18n_links_end}}<br />
<br />
= Summary =<br />
<br />
This is a post-install configuration guide for the Dell Inspiron 1525 laptop.<br />
<br />
= Hardware Detection =<br />
<br />
Hwd provides a list of your hardware and what modules/drivers are needed to get it working.<br />
Install from AUR or download [http://user-contributions.org/projects/hwd/hwd.html here]<br />
<br />
From AUR:<br />
<br />
# yaourt -S hwd<br />
<br />
Now run hwd, so we get a nice list.<br />
<br />
# hwd -s<br />
<br />
Testing: kernel (2.6.28-ARCH) supports uevents<br />
HARDWARE DETECT ver 5.4.2 (simple mode)<br />
Kernel : 2.6.28-ARCH<br />
CPU & Cache: Processor 0: Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz 1662MHz, 2048 KB Cache<br />
Processor 1: Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz 1662MHz, 2048 KB Cache<br />
<br />
Sound(a) : 82801H ICH8 Family HD Audio Controller module: snd-hda-intel<br />
Video : Mobile GM965/GL960 Integrated Graphics Controller server: Xorg (intel)<br />
Driver : xf86-video-intel module: -<br />
Monitor : Generic Monitor H: 28.0-96.0kHz V: 50.0-75.0Hz<br />
Mouse : PS/2 Mouse xtype: PS2 device: /dev/psaux<br />
HDD : 82801HBM/HEM ICH8M/ICH8ME IDE Controller module: PIIX_IDE<br />
USB : 82801H ICH8 Family USB UHCI Controller #3 module: uhci_hcd<br />
USB2 : 82801H ICH8 Family USB2 EHCI Controller #1 module: ehci_hcd<br />
SD Slot : R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter module: sdhci-pci<br />
<br />
Ethernet : 88E8040 PCIE Fast Ethernet Controller module: sky2<br />
Network : PRO/Wireless 3945ABG [Golan] Network Connection module: iwl3945<br />
Firewire : R5C832 IEEE 1394 Controller module: ohci1394<br />
<br />
This is only 1 variant of this notebook. There are different many variants of this notebook. You'll notice differences in CPU and Wireless. Some models also have a webcam.<br />
<br />
A hwd -s of a system used in this wiki differs on these aspects:<br />
<br />
#Processor: Intel Pentium Dual T2370<br />
#Wireless card: [[Broadcom_BCM4312 | Broadcom BCM4312 802.11b/g]]<br />
<br />
HARDWARE DETECT ver 5.4.2 (simple mode)<br />
Kernel : 2.6.28-ARCH<br />
'''CPU & Cache: Processor 0: Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz 800MHz, 1024 KB Cache'''<br />
''' Processor 1: Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz 800MHz, 1024 KB Cache'''<br />
<br />
Sound(a) : 82801H ICH8 Family HD Audio Controller module: snd-oss_hdaudio <br />
Video : Mobile GM965/GL960 Integrated Graphics Controller server: Xorg (intel) <br />
Driver : xf86-video-intel module: - <br />
Monitor : Generic Monitor H: 28.0-96.0kHz V: 50.0-75.0Hz<br />
Mouse : PS/2 Mouse xtype: PS2 device: /dev/psaux<br />
HDD : 82801HBM/HEM ICH8M/ICH8ME IDE Controller module: ata_piix <br />
USB : 82801H ICH8 Family USB UHCI Controller #3 module: uhci_hcd <br />
USB2 : 82801H ICH8 Family USB2 EHCI Controller #1 module: ehci_hcd <br />
SD Slot : R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter module: sdhci-pci <br />
<br />
Ethernet : 88E8040 PCIE Fast Ethernet Controller module: sky2 <br />
'''Network : BCM4312 802.11b/g module: wl''' <br />
Firewire : R5C832 IEEE 1394 Controller module: ohci1394<br />
<br />
= Audio =<br />
There are two options to get audio working: [[ALSA]] and [[OSS]]<br />
<br />
== ALSA ==<br />
Sound works well on kernel 2.6.28-2.6.29. Only one headphone jack works. Use following commands to get it working without reading [[ALSA]]:<br />
<br />
# pacman -Sy alsa-lib alsa-utils<br />
# touch /etc/asound.state<br />
# gpasswd -a yourusername audio<br />
# alsaconf<br />
<br />
Follow the steps of alsaconf and run the deamon with:<br />
<br />
# /etc/rc.d/alsa start<br />
<br />
Don't forget to put alsa in your deamon list in [[Rc.conf]]<br />
<br />
=== modprobe.conf ===<br />
<br />
Adding the following line to /etc/modprobe.conf can make both headphone jacks work:<br />
<br />
options snd-hda-intel model=dell-bios<br />
<br />
Doesn't work on every machine. It can lead to issues explained below. Leaving the line out again can fix that, but leaves you again with only one headphone jack.<br />
<br />
In recent versions of the kernel (>2.6.25), the card could fade itself to zero volume when a headphone is inserted, irrelevant of all alsa controls. This doesn't apply on every system.<br />
To allow normal control of this card, enter the following line into modprobe.conf:<br />
<br />
options snd-hda-intel model=3stack<br />
<br />
== OSS ==<br />
Just follow the [[OSS]] wiki, it's really simple:<br />
<br />
# pacman -Sy oss libflashsupport-oss<br />
# gpasswd -a yourusername audio (I don't know if that is needed)<br />
# /etc/rc.d/oss start<br />
<br />
Don't forget to put oss in your deamon list in [[Rc.conf]]<br />
<br />
You'll generally get better quality and louder sound than ALSA, but I couldn't find a way to get dual headphone jack working (The case with ALSA is the same, though...)<br />
<br />
= Video =<br />
The notebook comes with Intel GMA 965 (x3100) <br />
<br />
The [[Wikipedia:WXGA|WXGA]] monitor is not detected by ''hwd -s''.<br />
Here you can find more information about [http://www.dell.com/content/learnmore/learnmore.aspx?c=us&cs=04&l=en&s=bsd&~id=screen&~line=notebooks&~mode=popup&~model=d800&~series=latit&ref=CFG Dell laptop displays with 1280×800 as WXGA].<br />
The 24 bit depth is important for Xorg. (2^24 = 16.7 million)<br />
<br />
The GM965 chipset is available for Xorg as ''xf86-video-intel'' from [extra]. <br />
Using following commands to get it working without reading [[Xorg]]:<br />
<br />
# pacman -S xorg<br />
# pacman -S xf86-video-intel<br />
<br />
If you use framebuffer programs, you'll need ''xf86-video-fbdev'' too.<br />
<br />
# pacman -S xf86-video-fbdev<br />
<br />
[http://wiki.archlinux.org/index.php/Intel_Graphics#KMS_.28Kernel_Mode_Setting.29 Intel Kernel Mode Setting] (KMS) works very well, try this if you have problems with your graphics<br />
<br />
For keyboard and synaptics, I used [[Xorg_input_hotplugging]];<br />
so a working ''xorg.conf'' only needs video/screen configuration:<br />
<br />
Section "ServerLayout"<br />
Identifier "Xorg Configured"<br />
Screen "LVDS"<br />
EndSection<br />
<br />
Section "Module"<br />
Load "dri"<br />
Load "glx"<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Intel GM965"<br />
Driver "intel"<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "LVDS"<br />
Device "Intel GM965"<br />
DefaultColorDepth 24<br />
SubSection "Display"<br />
Depth 24<br />
Modes "1280x800"<br />
Virtual 2048 2048 <br />
EndSubSection<br />
EndSection<br />
<br />
Section "DRI"<br />
Mode 0666<br />
EndSection<br />
<br />
For other video output, I use ''xrandr''.<br />
<br />
== Grub: Framebuffer_Resolution ==<br />
<br />
Add ''vga=865'' to the kernel options<br />
<br />
kernel /boot/vmlinuz26 root=/dev/sda3 ro '''vga=865'''<br />
<br />
Check for more information [[Grub#Framebuffer_Resolution]]<br />
<br />
= Keyboard =<br />
<br />
Keyboard worked out of the box with [[Xorg_input_hotplugging]].<br />
For azerty or other layouts, use a [[Xorg_input_hotplugging#When_I_press_a_key.2C_X_thinks_I_pressed_it_multiple_times|HAL policy]].<br />
<br />
This is ''/etc/hal/fdi/policy/10-keymap.fdi'' for Belgian azerty:<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- --><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.keymap"><br />
<append key="info.callouts.add" type="strlist">hal-setup-keymap</append><br />
</match><br />
<br />
<match key="info.capabilities" contains="input.keys"><br />
<merge key="input.xkb.rules" type="string">base</merge><br />
<br />
<!-- If we're using Linux, we use evdev by default (falling back to<br />
keyboard otherwise). --><br />
<merge key="input.xkb.model" type="string">keyboard</merge><br />
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"<br />
string="Linux"><br />
<merge key="input.xkb.model" type="string">evdev</merge><br />
</match><br />
<br />
<merge key="input.xkb.layout" type="string">be</merge><br />
<merge key="input.xkb.variant" type="string" /><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
= Synaptics =<br />
<br />
Synaptics worked out of the box with [[Xorg_input_hotplugging]].<br />
To enable scroll and more, go to [[Touchpad_Synaptics]] for more info.<br />
<br />
A nice working ''/etc/hal/fdi/policy/11-x11-synaptics.fdi'' with tapping and two finger scroll enabled:<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.SHMConfig" type="string">true</merge><br />
<merge key="input.x11_options.LeftEdge" type="string">50</merge><br />
<merge key="input.x11_options.RightEdge" type="string">900</merge><br />
<merge key="input.x11_options.TopEdge" type="string">140</merge><br />
<merge key="input.x11_options.BottomEdge" type="string">680</merge><br />
<merge key="input.x11_options.ClickFinger1" type="string">1</merge><br />
<merge key="input.x11_options.ClickFinger2" type="string">3</merge><br />
<merge key="input.x11_options.ClickFinger3" type="string">2</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">20</merge><br />
<merge key="input.x11_options.VertScrollDelta" type="string">20</merge><br />
<merge key="input.x11_options.PressureMotionMinZ" type="string">30</merge><br />
<merge key="input.x11_options.PressureMotionMaxZ" type="string">160</merge><br />
<merge key="input.x11_options.PressureMotionMinFactor" type="string">1</merge><br />
<merge key="input.x11_options.PressureMotionMaxFactor" type="string">1</merge><br />
<merge key="input.x11_options.FingerLow" type="string">18</merge><br />
<merge key="input.x11_options.FingerHigh" type="string">23</merge><br />
<merge key="input.x11_options.FingerPress" type="string">256</merge><br />
<merge key="input.x11_options.PalmDetect" type="string">1</merge><br />
<merge key="input.x11_options.PalmMinWidth" type="string">10</merge><br />
<merge key="input.x11_options.PalmMinZ" type="string">200</merge><br />
<merge key="input.x11_options.MinSpeed" type="string">1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">1.5</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.10</merge><br />
<merge key="input.x11_options.MaxTapMove" type="string">110</merge><br />
<merge key="input.x11_options.MaxTapTime" type="string">366</merge><br />
<merge key="input.x11_options.MaxDoubleTapTime" type="string">180</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.RTCornerButton" type="string">2</merge><br />
<merge key="input.x11_options.RBCornerButton" type="string">3</merge><br />
<merge key="input.x11_options.LTCornerButton" type="string">0</merge><br />
<merge key="input.x11_options.LBCornerButton" type="string">0</merge><br />
</match><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
= Wireless =<br />
We have variations...<br />
<br />
== Intel PRO wireless ==<br />
If your hwd -s shows this:<br />
<br />
Network : PRO/Wireless 3945ABG [Golan] Network Connection module: iwl3945<br />
<br />
You are required to get ''iwlwifi-3945-ucode'' out of [core].<br />
<br />
# pacman -S iwlwifi-3945-ucode<br />
<br />
This package is also available [core-devel] on the 2008.06 installer CD.<br />
<br />
Then add ''iwl3945'' to your MODULES array in [[Rc.conf|/etc/rc.conf]]<br />
<br />
MODULES=( ... iwl3945 ... )<br />
<br />
== Broadcom BCM4312 ==<br />
If your hwd -s shows this: (as is my case)<br />
Network : BCM4312 802.11b/g module: wl <br />
<br />
You need to install broadcom-wl from AUR. (Be sure to blacklist the ssb module) Refer to [[Broadcom_BCM4312]] wiki entry.<br />
<br />
= Modem =<br />
You need [http://aur.archlinux.org/packages.php?ID=7724 hsfmodem] package from AUR in order to get modem working. After you install that package you need to:<br />
<br />
#Run <code>hsfconfig</code> as root to build the module and initialize the modem. A reboot is required before the modem can be initialized. Run <code>hsfconfig</code> again after reboot.<br />
#The modules are automatically loaded and a <code>/dev/modem</code> symlink is setup for use with the modem. Now use wvdial or other dialer programs to connect to the internet.<br />
<br />
I didn't test dialing, however I could see the modem device in /dev.<br />
<br />
= Webcam =<br />
For your webcam you need the uvcvideo module<br />
<br />
# modprobe uvcvideo<br />
<br />
Add it to your <code>/etc/rc.conf</code> modules line. More information can be found in [[Webcam_Setup]] wiki entry.<br />
<br />
With recent kernels (> 2.6.30), you may well find that your webcam does not function when using applications such as Skype or Guvcview, although the webcam is properly recognized by hardinfo and lsusb as an 'OmniVision OV2640' with identifier 05a9:2640 (this may differ on your precise model of course). The solution is to ensure that the uvcvideo module is loaded with an option as follows:<br />
<br />
# modprobe uvcvideo '''trace=15'''<br />
<br />
The easiest way to enforce this at startup is to create the file /etc/modprobe.d/uvcvideo_trace15.conf containing the line:<br />
<br />
install uvcvideo /sbin/modprobe --ignore-install uvcvideo trace=15 $CMDLINE_OPTS<br />
<br />
Guvcview, UCView and Skype should all then be able to use the camera normally.<br />
<br />
= USB, SD card slot, Ethernet, Firewire, VGA, S-video =<br />
<br />
All work out of the box.<br />
<br />
= HDMI, PCMCIA =<br />
<br />
Not tested. (HDMI should work, intel's driver introduced a lot of fixes for that recently...)<br />
<br />
<br />
<br />
= Mediakeys =<br />
<br />
Get xbindkeys from [extra]:<br />
<br />
# pacman -S xbindkeys<br />
<br />
Add 'xbindkeys &' in $HOME/.xinitrc right before your window manager is executed.<br />
<br />
Create $HOME/.xbindkeysrc file with:<br />
<br />
"amixer set Master 5+ unmute"<br />
XF86AudioRaiseVolume<br />
<br />
"amixer set Master 5- unmute"<br />
XF86AudioLowerVolume<br />
<br />
"amixer set 'Master' toggle"<br />
XF86AudioMute<br />
<br />
#"audioplayer -next"<br />
# XF86AudioNext<br />
<br />
#"audioplayer -pause"<br />
# XF86AudioPlay<br />
<br />
#"audioplayer -stop"<br />
# XF86AudioStop<br />
<br />
#"audioplayer -previous"<br />
# XF86AudioPrev<br />
<br />
<br />
= References =<br />
<br />
Audio:<br />
* [[ALSA]]<br />
* [[OSS]]<br />
* [http://forums.opensuse.org/archives/sls-archives/archives-suse-linux/archives-hardware-support/archives-notebooks/382722-dell-vostro1400-hda-intel-no-sound.html#post1798954 for "model=stack3" in /etc/modprobe.conf - OpenSuse Forum]<br />
* [http://en.gentoo-wiki.com/wiki/Dell_Inspiron_1525 for "model=dell-bios" in /etc/modprobe.conf - Gentoo Wiki]<br />
<br />
Video:<br />
* [[Xorg]]<br />
* [[Xorg input hotplugging]]<br />
* [[Intel_Graphics]]<br />
* [http://www.dell.com/content/learnmore/learnmore.aspx?c=us&cs=04&l=en&s=bsd&~id=screen&~line=notebooks&~mode=popup&~model=d800&~series=latit&ref=CFG Dell laptop displays with 1280×800 as WXGA]<br />
* [http://www.oddments.org/notes/debian_dell_1525.html for Xorg.conf without autodetect]<br />
* [[Grub#Framebuffer_Resolution|GRUB: Framebuffer Resolution]]<br />
<br />
Keyboard & Synaptics:<br />
* [[Touchpad Synaptics]]<br />
* [http://linux.dell.com/wiki/index.php/Ubuntu_7.04/Issues/Changing_mousepad_settings Dell Mousepad Settings]<br />
* [http://ubuntuforums.org/showthread.php?p=6531988#6 HAL policy file]<br />
* [[Xorg_input_hotplugging#Modifying_hal_configuration|Changing keyboard layout]]<br />
<br />
Wireless:<br />
* [[Wireless#iwl3945.2C_iwl4965_and_iwl5000-series|Intel PRO wireless 3945abg]]<br />
* [[Broadcom BCM4312]]<br />
<br />
Webcam:<br />
* [[Webcam_Setup|Webcam Setup]]<br />
* [http://lists.berlios.de/pipermail/linux-uvc-devel/2007-February/001408.html for uvcvideo trace=15 option]<br />
* [http://linux.die.net/man/5/modprobe.conf for creating /etc/modprobe.d/uvcvideo_trace15.conf]</div>Code mhttps://wiki.archlinux.org/index.php?title=Dell_Inspiron_1525&diff=82473Dell Inspiron 15252009-11-07T23:53:55Z<p>Code m: /* Broadcom BCM4312 */</p>
<hr />
<div>[[Category:Laptops (English)]]<br />
[[Category:HOWTOs (English)]]<br />
<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Dell_Inspiron_1525}}<br />
{{i18n_entry|Русский|Dell_Inspiron_1525_(Русский)}}<br />
{{i18n_links_end}}<br />
<br />
= Summary =<br />
<br />
This is a post-install configuration guide for the Dell Inspiron 1525 laptop.<br />
<br />
= Hardware Detection =<br />
<br />
Hwd provides a list of your hardware and what modules/drivers are needed to get it working.<br />
Install from AUR or download [http://user-contributions.org/projects/hwd/hwd.html here]<br />
<br />
From AUR:<br />
<br />
# yaourt -S hwd<br />
<br />
Now run hwd, so we get a nice list.<br />
<br />
# hwd -s<br />
<br />
Testing: kernel (2.6.28-ARCH) supports uevents<br />
HARDWARE DETECT ver 5.4.2 (simple mode)<br />
Kernel : 2.6.28-ARCH<br />
CPU & Cache: Processor 0: Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz 1662MHz, 2048 KB Cache<br />
Processor 1: Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz 1662MHz, 2048 KB Cache<br />
<br />
Sound(a) : 82801H ICH8 Family HD Audio Controller module: snd-hda-intel<br />
Video : Mobile GM965/GL960 Integrated Graphics Controller server: Xorg (intel)<br />
Driver : xf86-video-intel module: -<br />
Monitor : Generic Monitor H: 28.0-96.0kHz V: 50.0-75.0Hz<br />
Mouse : PS/2 Mouse xtype: PS2 device: /dev/psaux<br />
HDD : 82801HBM/HEM ICH8M/ICH8ME IDE Controller module: PIIX_IDE<br />
USB : 82801H ICH8 Family USB UHCI Controller #3 module: uhci_hcd<br />
USB2 : 82801H ICH8 Family USB2 EHCI Controller #1 module: ehci_hcd<br />
SD Slot : R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter module: sdhci-pci<br />
<br />
Ethernet : 88E8040 PCIE Fast Ethernet Controller module: sky2<br />
Network : PRO/Wireless 3945ABG [Golan] Network Connection module: iwl3945<br />
Firewire : R5C832 IEEE 1394 Controller module: ohci1394<br />
<br />
This is only 1 variant of this notebook. There are different many variants of this notebook. You'll notice differences in CPU and Wireless. Some models also have a webcam.<br />
<br />
A hwd -s of a system used in this wiki differs on these aspects:<br />
<br />
#Processor: Intel Pentium Dual T2370<br />
#Wireless card: [[Broadcom_BCM4312 | Broadcom BCM4312 802.11b/g]]<br />
<br />
HARDWARE DETECT ver 5.4.2 (simple mode)<br />
Kernel : 2.6.28-ARCH<br />
'''CPU & Cache: Processor 0: Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz 800MHz, 1024 KB Cache'''<br />
''' Processor 1: Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz 800MHz, 1024 KB Cache'''<br />
<br />
Sound(a) : 82801H ICH8 Family HD Audio Controller module: snd-oss_hdaudio <br />
Video : Mobile GM965/GL960 Integrated Graphics Controller server: Xorg (intel) <br />
Driver : xf86-video-intel module: - <br />
Monitor : Generic Monitor H: 28.0-96.0kHz V: 50.0-75.0Hz<br />
Mouse : PS/2 Mouse xtype: PS2 device: /dev/psaux<br />
HDD : 82801HBM/HEM ICH8M/ICH8ME IDE Controller module: ata_piix <br />
USB : 82801H ICH8 Family USB UHCI Controller #3 module: uhci_hcd <br />
USB2 : 82801H ICH8 Family USB2 EHCI Controller #1 module: ehci_hcd <br />
SD Slot : R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter module: sdhci-pci <br />
<br />
Ethernet : 88E8040 PCIE Fast Ethernet Controller module: sky2 <br />
'''Network : BCM4312 802.11b/g module: wl''' <br />
Firewire : R5C832 IEEE 1394 Controller module: ohci1394<br />
<br />
= Audio =<br />
There are two options to get audio working: [[ALSA]] and [[OSS]]<br />
<br />
== ALSA ==<br />
Sound works well on kernel 2.6.28-2.6.29. Only one headphone jack works. Use following commands to get it working without reading [[ALSA]]:<br />
<br />
# pacman -Sy alsa-lib alsa-utils<br />
# touch /etc/asound.state<br />
# gpasswd -a yourusername audio<br />
# alsaconf<br />
<br />
Follow the steps of alsaconf and run the deamon with:<br />
<br />
# /etc/rc.d/alsa start<br />
<br />
Don't forget to put alsa in your deamon list in [[Rc.conf]]<br />
<br />
=== modprobe.conf ===<br />
<br />
Adding the following line to /etc/modprobe.conf can make both headphone jacks work:<br />
<br />
options snd-hda-intel model=dell-bios<br />
<br />
Doesn't work on every machine. It can lead to issues explained below. Leaving the line out again can fix that, but leaves you again with only one headphone jack.<br />
<br />
In recent versions of the kernel (>2.6.25), the card could fade itself to zero volume when a headphone is inserted, irrelevant of all alsa controls. This doesn't apply on every system.<br />
To allow normal control of this card, enter the following line into modprobe.conf:<br />
<br />
options snd-hda-intel model=3stack<br />
<br />
== OSS ==<br />
Just follow the [[OSS]] wiki, it's really simple:<br />
<br />
# pacman -Sy oss libflashsupport-oss<br />
# gpasswd -a yourusername audio (I don't know if that is needed)<br />
# /etc/rc.d/oss start<br />
<br />
Don't forget to put oss in your deamon list in [[Rc.conf]]<br />
<br />
You'll generally get better quality and louder sound than ALSA, but I couldn't find a way to get dual headphone jack working (The case with ALSA is the same, though...)<br />
<br />
= Video =<br />
The notebook comes with Intel GMA 965 (x3100) <br />
<br />
The [[Wikipedia:WXGA|WXGA]] monitor is not detected by ''hwd -s''.<br />
Here you can find more information about [http://www.dell.com/content/learnmore/learnmore.aspx?c=us&cs=04&l=en&s=bsd&~id=screen&~line=notebooks&~mode=popup&~model=d800&~series=latit&ref=CFG Dell laptop displays with 1280×800 as WXGA].<br />
The 24 bit depth is important for Xorg. (2^24 = 16.7 million)<br />
<br />
The GM965 chipset is available for Xorg as ''xf86-video-intel'' from [extra]. <br />
Using following commands to get it working without reading [[Xorg]]:<br />
<br />
# pacman -S xorg<br />
# pacman -S xf86-video-intel<br />
<br />
If you use framebuffer programs, you'll need ''xf86-video-fbdev'' too.<br />
<br />
# pacman -S xf86-video-fbdev<br />
<br />
[http://wiki.archlinux.org/index.php/Intel_Graphics#KMS_.28Kernel_Mode_Setting.29 Intel Kernel Mode Setting] (KMS) works very well, try this if you have problems with your graphics<br />
<br />
For keyboard and synaptics, I used [[Xorg_input_hotplugging]];<br />
so a working ''xorg.conf'' only needs video/screen configuration:<br />
<br />
Section "ServerLayout"<br />
Identifier "Xorg Configured"<br />
Screen "LVDS"<br />
EndSection<br />
<br />
Section "Module"<br />
Load "dri"<br />
Load "glx"<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Intel GM965"<br />
Driver "intel"<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "LVDS"<br />
Device "Intel GM965"<br />
DefaultColorDepth 24<br />
SubSection "Display"<br />
Depth 24<br />
Modes "1280x800"<br />
Virtual 2048 2048 <br />
EndSubSection<br />
EndSection<br />
<br />
Section "DRI"<br />
Mode 0666<br />
EndSection<br />
<br />
For other video output, I use ''xrandr''.<br />
<br />
== Grub: Framebuffer_Resolution ==<br />
<br />
Add ''vga=865'' to the kernel options<br />
<br />
kernel /boot/vmlinuz26 root=/dev/sda3 ro '''vga=865'''<br />
<br />
Check for more information [[Grub#Framebuffer_Resolution]]<br />
<br />
= Keyboard =<br />
<br />
Keyboard worked out of the box with [[Xorg_input_hotplugging]].<br />
For azerty or other layouts, use a [[Xorg_input_hotplugging#When_I_press_a_key.2C_X_thinks_I_pressed_it_multiple_times|HAL policy]].<br />
<br />
This is ''/etc/hal/fdi/policy/10-keymap.fdi'' for Belgian azerty:<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- --><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.keymap"><br />
<append key="info.callouts.add" type="strlist">hal-setup-keymap</append><br />
</match><br />
<br />
<match key="info.capabilities" contains="input.keys"><br />
<merge key="input.xkb.rules" type="string">base</merge><br />
<br />
<!-- If we're using Linux, we use evdev by default (falling back to<br />
keyboard otherwise). --><br />
<merge key="input.xkb.model" type="string">keyboard</merge><br />
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"<br />
string="Linux"><br />
<merge key="input.xkb.model" type="string">evdev</merge><br />
</match><br />
<br />
<merge key="input.xkb.layout" type="string">be</merge><br />
<merge key="input.xkb.variant" type="string" /><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
= Synaptics =<br />
<br />
Synaptics worked out of the box with [[Xorg_input_hotplugging]].<br />
To enable scroll and more, go to [[Touchpad_Synaptics]] for more info.<br />
<br />
A nice working ''/etc/hal/fdi/policy/11-x11-synaptics.fdi'' with tapping and two finger scroll enabled:<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.SHMConfig" type="string">true</merge><br />
<merge key="input.x11_options.LeftEdge" type="string">50</merge><br />
<merge key="input.x11_options.RightEdge" type="string">900</merge><br />
<merge key="input.x11_options.TopEdge" type="string">140</merge><br />
<merge key="input.x11_options.BottomEdge" type="string">680</merge><br />
<merge key="input.x11_options.ClickFinger1" type="string">1</merge><br />
<merge key="input.x11_options.ClickFinger2" type="string">3</merge><br />
<merge key="input.x11_options.ClickFinger3" type="string">2</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">20</merge><br />
<merge key="input.x11_options.VertScrollDelta" type="string">20</merge><br />
<merge key="input.x11_options.PressureMotionMinZ" type="string">30</merge><br />
<merge key="input.x11_options.PressureMotionMaxZ" type="string">160</merge><br />
<merge key="input.x11_options.PressureMotionMinFactor" type="string">1</merge><br />
<merge key="input.x11_options.PressureMotionMaxFactor" type="string">1</merge><br />
<merge key="input.x11_options.FingerLow" type="string">18</merge><br />
<merge key="input.x11_options.FingerHigh" type="string">23</merge><br />
<merge key="input.x11_options.FingerPress" type="string">256</merge><br />
<merge key="input.x11_options.PalmDetect" type="string">1</merge><br />
<merge key="input.x11_options.PalmMinWidth" type="string">10</merge><br />
<merge key="input.x11_options.PalmMinZ" type="string">200</merge><br />
<merge key="input.x11_options.MinSpeed" type="string">1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">1.5</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.10</merge><br />
<merge key="input.x11_options.MaxTapMove" type="string">110</merge><br />
<merge key="input.x11_options.MaxTapTime" type="string">366</merge><br />
<merge key="input.x11_options.MaxDoubleTapTime" type="string">180</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.RTCornerButton" type="string">2</merge><br />
<merge key="input.x11_options.RBCornerButton" type="string">3</merge><br />
<merge key="input.x11_options.LTCornerButton" type="string">0</merge><br />
<merge key="input.x11_options.LBCornerButton" type="string">0</merge><br />
</match><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
= Wireless =<br />
We have variations...<br />
<br />
== Intel PRO wireless ==<br />
If your hwd -s shows this:<br />
<br />
Network : PRO/Wireless 3945ABG [Golan] Network Connection module: iwl3945<br />
<br />
You are required to get ''iwlwifi-3945-ucode'' out of [core].<br />
<br />
# pacman -S iwlwifi-3945-ucode<br />
<br />
This package is also available [core-devel] on the 2008.06 installer CD.<br />
<br />
Then add ''iwl3945'' to your MODULES array in [[Rc.conf|/etc/rc.conf]]<br />
<br />
MODULES=( ... iwl3945 ... )<br />
<br />
== Broadcom BCM4312 ==<br />
If your hwd -s shows this: (as is my case)<br />
Network : BCM4312 802.11b/g module: wl <br />
<br />
You need to install broadcom-wl from AUR. (Be sure to blacklist the ssb module) Refer to [[Broadcom_BCM4312]] wiki entry.<br />
<br />
= Modem =<br />
You need [http://aur.archlinux.org/packages.php?ID=7724 hsfmodem] package from AUR in order to get modem working. After you install that package you need to:<br />
<br />
#Run <code>hsfconfig</code> as root to build the module and initialize the modem. A reboot is required before the modem can be initialized. Run <code>hsfconfig</code> again after reboot.<br />
#The modules are automatically loaded and a <code>/dev/modem</code> symlink is setup for use with the modem. Now use wvdial or other dialer programs to connect to the internet.<br />
<br />
I didn't test dialing, however I could see the modem device in /dev.<br />
<br />
= Webcam =<br />
For your webcam you need the uvcvideo module<br />
<br />
# modprobe uvcvideo<br />
<br />
Add it to your <code>/etc/rc.conf</code> modules line. More information can be found in [[Webcam_Setup]] wiki entry.<br />
<br />
With recent kernels (> 2.6.30), you may well find that your webcam does not function when using applications such as Skype or Guvcview, although the webcam is properly recognized by hardinfo and lsusb as an 'OmniVision OV2640' with identifier 05a9:2640 (this may differ on your precise model of course). The solution is to ensure that the uvcvideo module is loaded with an option as follows:<br />
<br />
# modprobe uvcvideo '''trace=15'''<br />
<br />
The easiest way to enforce this at startup is to create the file /etc/modprobe.d/uvcvideo_trace15.conf containing the line:<br />
<br />
install uvcvideo /sbin/modprobe --ignore-install uvcvideo trace=15 $CMDLINE_OPTS<br />
<br />
Guvcview, UCView and Skype should all then be able to use the camera normally.<br />
<br />
= USB, SD card slot, Ethernet, Firewire, VGA, S-video =<br />
<br />
All work out of the box.<br />
<br />
= HDMI, PCMCIA =<br />
<br />
Not tested. (HDMI should work, intel's driver introduced a lot of fixes for that recently...)<br />
<br />
<br />
<br />
= Mediakeys =<br />
<br />
Get xbindkeys from [extra]:<br />
<br />
# pacman -S xbindkeys<br />
<br />
Add 'xbindkeys &' in $HOME/.xinitrc right before your window manager is executed.<br />
<br />
Create $HOME/.xbindkeysrc file with:<br />
<br />
"amixer set Master 5+ unmute"<br />
XF86AudioRaiseVolume<br />
<br />
"amixer set Master 5- unmute"<br />
XF86AudioLowerVolume<br />
<br />
"amixer set 'Master' toggle"<br />
XF86AudioMute<br />
<br />
#"audioplayer -next"<br />
# XF86AudioNext<br />
<br />
#"audioplayer -pause"<br />
# XF86AudioPlay<br />
<br />
#"audioplayer -stop"<br />
# XF86AudioStop<br />
<br />
#"audioplayer -previous"<br />
# XF86AudioPrev<br />
<br />
<br />
= References =<br />
<br />
Audio:<br />
* [[ALSA]]<br />
* [[OSS]]<br />
* [http://forums.opensuse.org/archives/sls-archives/archives-suse-linux/archives-hardware-support/archives-notebooks/382722-dell-vostro1400-hda-intel-no-sound.html#post1798954 for "model=stack3" in /etc/modprobe.conf - OpenSuse Forum]<br />
* [http://en.gentoo-wiki.com/wiki/Dell_Inspiron_1525 for "model=dell-bios" in /etc/modprobe.conf - Gentoo Wiki]<br />
<br />
Video:<br />
* [[Xorg]]<br />
* [[Xorg input hotplugging]]<br />
* [http://www.dell.com/content/learnmore/learnmore.aspx?c=us&cs=04&l=en&s=bsd&~id=screen&~line=notebooks&~mode=popup&~model=d800&~series=latit&ref=CFG Dell laptop displays with 1280×800 as WXGA]<br />
* [http://www.oddments.org/notes/debian_dell_1525.html for Xorg.conf without autodetect]<br />
* [[Grub#Framebuffer_Resolution|GRUB: Framebuffer Resolution]]<br />
<br />
Keyboard & Synaptics:<br />
* [[Touchpad Synaptics]]<br />
* [http://linux.dell.com/wiki/index.php/Ubuntu_7.04/Issues/Changing_mousepad_settings Dell Mousepad Settings]<br />
* [http://ubuntuforums.org/showthread.php?p=6531988#6 HAL policy file]<br />
* [[Xorg_input_hotplugging#Modifying_hal_configuration|Changing keyboard layout]]<br />
<br />
Wireless:<br />
* [[Wireless#iwl3945.2C_iwl4965_and_iwl5000-series|Intel PRO wireless 3945abg]]<br />
* [[Broadcom BCM4312]]<br />
<br />
Webcam:<br />
* [[Webcam_Setup|Webcam Setup]]<br />
* [http://lists.berlios.de/pipermail/linux-uvc-devel/2007-February/001408.html for uvcvideo trace=15 option]<br />
* [http://linux.die.net/man/5/modprobe.conf for creating /etc/modprobe.d/uvcvideo_trace15.conf]</div>Code mhttps://wiki.archlinux.org/index.php?title=Dell_Inspiron_1525&diff=82468Dell Inspiron 15252009-11-07T23:51:57Z<p>Code m: /* Video */</p>
<hr />
<div>[[Category:Laptops (English)]]<br />
[[Category:HOWTOs (English)]]<br />
<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Dell_Inspiron_1525}}<br />
{{i18n_entry|Русский|Dell_Inspiron_1525_(Русский)}}<br />
{{i18n_links_end}}<br />
<br />
= Summary =<br />
<br />
This is a post-install configuration guide for the Dell Inspiron 1525 laptop.<br />
<br />
= Hardware Detection =<br />
<br />
Hwd provides a list of your hardware and what modules/drivers are needed to get it working.<br />
Install from AUR or download [http://user-contributions.org/projects/hwd/hwd.html here]<br />
<br />
From AUR:<br />
<br />
# yaourt -S hwd<br />
<br />
Now run hwd, so we get a nice list.<br />
<br />
# hwd -s<br />
<br />
Testing: kernel (2.6.28-ARCH) supports uevents<br />
HARDWARE DETECT ver 5.4.2 (simple mode)<br />
Kernel : 2.6.28-ARCH<br />
CPU & Cache: Processor 0: Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz 1662MHz, 2048 KB Cache<br />
Processor 1: Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz 1662MHz, 2048 KB Cache<br />
<br />
Sound(a) : 82801H ICH8 Family HD Audio Controller module: snd-hda-intel<br />
Video : Mobile GM965/GL960 Integrated Graphics Controller server: Xorg (intel)<br />
Driver : xf86-video-intel module: -<br />
Monitor : Generic Monitor H: 28.0-96.0kHz V: 50.0-75.0Hz<br />
Mouse : PS/2 Mouse xtype: PS2 device: /dev/psaux<br />
HDD : 82801HBM/HEM ICH8M/ICH8ME IDE Controller module: PIIX_IDE<br />
USB : 82801H ICH8 Family USB UHCI Controller #3 module: uhci_hcd<br />
USB2 : 82801H ICH8 Family USB2 EHCI Controller #1 module: ehci_hcd<br />
SD Slot : R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter module: sdhci-pci<br />
<br />
Ethernet : 88E8040 PCIE Fast Ethernet Controller module: sky2<br />
Network : PRO/Wireless 3945ABG [Golan] Network Connection module: iwl3945<br />
Firewire : R5C832 IEEE 1394 Controller module: ohci1394<br />
<br />
This is only 1 variant of this notebook. There are different many variants of this notebook. You'll notice differences in CPU and Wireless. Some models also have a webcam.<br />
<br />
A hwd -s of a system used in this wiki differs on these aspects:<br />
<br />
#Processor: Intel Pentium Dual T2370<br />
#Wireless card: [[Broadcom_BCM4312 | Broadcom BCM4312 802.11b/g]]<br />
<br />
HARDWARE DETECT ver 5.4.2 (simple mode)<br />
Kernel : 2.6.28-ARCH<br />
'''CPU & Cache: Processor 0: Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz 800MHz, 1024 KB Cache'''<br />
''' Processor 1: Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz 800MHz, 1024 KB Cache'''<br />
<br />
Sound(a) : 82801H ICH8 Family HD Audio Controller module: snd-oss_hdaudio <br />
Video : Mobile GM965/GL960 Integrated Graphics Controller server: Xorg (intel) <br />
Driver : xf86-video-intel module: - <br />
Monitor : Generic Monitor H: 28.0-96.0kHz V: 50.0-75.0Hz<br />
Mouse : PS/2 Mouse xtype: PS2 device: /dev/psaux<br />
HDD : 82801HBM/HEM ICH8M/ICH8ME IDE Controller module: ata_piix <br />
USB : 82801H ICH8 Family USB UHCI Controller #3 module: uhci_hcd <br />
USB2 : 82801H ICH8 Family USB2 EHCI Controller #1 module: ehci_hcd <br />
SD Slot : R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter module: sdhci-pci <br />
<br />
Ethernet : 88E8040 PCIE Fast Ethernet Controller module: sky2 <br />
'''Network : BCM4312 802.11b/g module: wl''' <br />
Firewire : R5C832 IEEE 1394 Controller module: ohci1394<br />
<br />
= Audio =<br />
There are two options to get audio working: [[ALSA]] and [[OSS]]<br />
<br />
== ALSA ==<br />
Sound works well on kernel 2.6.28-2.6.29. Only one headphone jack works. Use following commands to get it working without reading [[ALSA]]:<br />
<br />
# pacman -Sy alsa-lib alsa-utils<br />
# touch /etc/asound.state<br />
# gpasswd -a yourusername audio<br />
# alsaconf<br />
<br />
Follow the steps of alsaconf and run the deamon with:<br />
<br />
# /etc/rc.d/alsa start<br />
<br />
Don't forget to put alsa in your deamon list in [[Rc.conf]]<br />
<br />
=== modprobe.conf ===<br />
<br />
Adding the following line to /etc/modprobe.conf can make both headphone jacks work:<br />
<br />
options snd-hda-intel model=dell-bios<br />
<br />
Doesn't work on every machine. It can lead to issues explained below. Leaving the line out again can fix that, but leaves you again with only one headphone jack.<br />
<br />
In recent versions of the kernel (>2.6.25), the card could fade itself to zero volume when a headphone is inserted, irrelevant of all alsa controls. This doesn't apply on every system.<br />
To allow normal control of this card, enter the following line into modprobe.conf:<br />
<br />
options snd-hda-intel model=3stack<br />
<br />
== OSS ==<br />
Just follow the [[OSS]] wiki, it's really simple:<br />
<br />
# pacman -Sy oss libflashsupport-oss<br />
# gpasswd -a yourusername audio (I don't know if that is needed)<br />
# /etc/rc.d/oss start<br />
<br />
Don't forget to put oss in your deamon list in [[Rc.conf]]<br />
<br />
You'll generally get better quality and louder sound than ALSA, but I couldn't find a way to get dual headphone jack working (The case with ALSA is the same, though...)<br />
<br />
= Video =<br />
The notebook comes with Intel GMA 965 (x3100) <br />
<br />
The [[Wikipedia:WXGA|WXGA]] monitor is not detected by ''hwd -s''.<br />
Here you can find more information about [http://www.dell.com/content/learnmore/learnmore.aspx?c=us&cs=04&l=en&s=bsd&~id=screen&~line=notebooks&~mode=popup&~model=d800&~series=latit&ref=CFG Dell laptop displays with 1280×800 as WXGA].<br />
The 24 bit depth is important for Xorg. (2^24 = 16.7 million)<br />
<br />
The GM965 chipset is available for Xorg as ''xf86-video-intel'' from [extra]. <br />
Using following commands to get it working without reading [[Xorg]]:<br />
<br />
# pacman -S xorg<br />
# pacman -S xf86-video-intel<br />
<br />
If you use framebuffer programs, you'll need ''xf86-video-fbdev'' too.<br />
<br />
# pacman -S xf86-video-fbdev<br />
<br />
[http://wiki.archlinux.org/index.php/Intel_Graphics#KMS_.28Kernel_Mode_Setting.29 Intel Kernel Mode Setting] (KMS) works very well, try this if you have problems with your graphics<br />
<br />
For keyboard and synaptics, I used [[Xorg_input_hotplugging]];<br />
so a working ''xorg.conf'' only needs video/screen configuration:<br />
<br />
Section "ServerLayout"<br />
Identifier "Xorg Configured"<br />
Screen "LVDS"<br />
EndSection<br />
<br />
Section "Module"<br />
Load "dri"<br />
Load "glx"<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Intel GM965"<br />
Driver "intel"<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "LVDS"<br />
Device "Intel GM965"<br />
DefaultColorDepth 24<br />
SubSection "Display"<br />
Depth 24<br />
Modes "1280x800"<br />
Virtual 2048 2048 <br />
EndSubSection<br />
EndSection<br />
<br />
Section "DRI"<br />
Mode 0666<br />
EndSection<br />
<br />
For other video output, I use ''xrandr''.<br />
<br />
== Grub: Framebuffer_Resolution ==<br />
<br />
Add ''vga=865'' to the kernel options<br />
<br />
kernel /boot/vmlinuz26 root=/dev/sda3 ro '''vga=865'''<br />
<br />
Check for more information [[Grub#Framebuffer_Resolution]]<br />
<br />
= Keyboard =<br />
<br />
Keyboard worked out of the box with [[Xorg_input_hotplugging]].<br />
For azerty or other layouts, use a [[Xorg_input_hotplugging#When_I_press_a_key.2C_X_thinks_I_pressed_it_multiple_times|HAL policy]].<br />
<br />
This is ''/etc/hal/fdi/policy/10-keymap.fdi'' for Belgian azerty:<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- --><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.keymap"><br />
<append key="info.callouts.add" type="strlist">hal-setup-keymap</append><br />
</match><br />
<br />
<match key="info.capabilities" contains="input.keys"><br />
<merge key="input.xkb.rules" type="string">base</merge><br />
<br />
<!-- If we're using Linux, we use evdev by default (falling back to<br />
keyboard otherwise). --><br />
<merge key="input.xkb.model" type="string">keyboard</merge><br />
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"<br />
string="Linux"><br />
<merge key="input.xkb.model" type="string">evdev</merge><br />
</match><br />
<br />
<merge key="input.xkb.layout" type="string">be</merge><br />
<merge key="input.xkb.variant" type="string" /><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
= Synaptics =<br />
<br />
Synaptics worked out of the box with [[Xorg_input_hotplugging]].<br />
To enable scroll and more, go to [[Touchpad_Synaptics]] for more info.<br />
<br />
A nice working ''/etc/hal/fdi/policy/11-x11-synaptics.fdi'' with tapping and two finger scroll enabled:<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.SHMConfig" type="string">true</merge><br />
<merge key="input.x11_options.LeftEdge" type="string">50</merge><br />
<merge key="input.x11_options.RightEdge" type="string">900</merge><br />
<merge key="input.x11_options.TopEdge" type="string">140</merge><br />
<merge key="input.x11_options.BottomEdge" type="string">680</merge><br />
<merge key="input.x11_options.ClickFinger1" type="string">1</merge><br />
<merge key="input.x11_options.ClickFinger2" type="string">3</merge><br />
<merge key="input.x11_options.ClickFinger3" type="string">2</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">20</merge><br />
<merge key="input.x11_options.VertScrollDelta" type="string">20</merge><br />
<merge key="input.x11_options.PressureMotionMinZ" type="string">30</merge><br />
<merge key="input.x11_options.PressureMotionMaxZ" type="string">160</merge><br />
<merge key="input.x11_options.PressureMotionMinFactor" type="string">1</merge><br />
<merge key="input.x11_options.PressureMotionMaxFactor" type="string">1</merge><br />
<merge key="input.x11_options.FingerLow" type="string">18</merge><br />
<merge key="input.x11_options.FingerHigh" type="string">23</merge><br />
<merge key="input.x11_options.FingerPress" type="string">256</merge><br />
<merge key="input.x11_options.PalmDetect" type="string">1</merge><br />
<merge key="input.x11_options.PalmMinWidth" type="string">10</merge><br />
<merge key="input.x11_options.PalmMinZ" type="string">200</merge><br />
<merge key="input.x11_options.MinSpeed" type="string">1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">1.5</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.10</merge><br />
<merge key="input.x11_options.MaxTapMove" type="string">110</merge><br />
<merge key="input.x11_options.MaxTapTime" type="string">366</merge><br />
<merge key="input.x11_options.MaxDoubleTapTime" type="string">180</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.RTCornerButton" type="string">2</merge><br />
<merge key="input.x11_options.RBCornerButton" type="string">3</merge><br />
<merge key="input.x11_options.LTCornerButton" type="string">0</merge><br />
<merge key="input.x11_options.LBCornerButton" type="string">0</merge><br />
</match><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
= Wireless =<br />
We have variations...<br />
<br />
== Intel PRO wireless ==<br />
If your hwd -s shows this:<br />
<br />
Network : PRO/Wireless 3945ABG [Golan] Network Connection module: iwl3945<br />
<br />
You are required to get ''iwlwifi-3945-ucode'' out of [core].<br />
<br />
# pacman -S iwlwifi-3945-ucode<br />
<br />
This package is also available [core-devel] on the 2008.06 installer CD.<br />
<br />
Then add ''iwl3945'' to your MODULES array in [[Rc.conf|/etc/rc.conf]]<br />
<br />
MODULES=( ... iwl3945 ... )<br />
<br />
== Broadcom BCM4312 ==<br />
If your hwd -s shows this: (as is my case)<br />
Network : BCM4312 802.11b/g module: wl <br />
<br />
You need to install broadcom-wl from AUR. Refer to [[Broadcom_BCM4312]] wiki entry.<br />
<br />
= Modem =<br />
You need [http://aur.archlinux.org/packages.php?ID=7724 hsfmodem] package from AUR in order to get modem working. After you install that package you need to:<br />
<br />
#Run <code>hsfconfig</code> as root to build the module and initialize the modem. A reboot is required before the modem can be initialized. Run <code>hsfconfig</code> again after reboot.<br />
#The modules are automatically loaded and a <code>/dev/modem</code> symlink is setup for use with the modem. Now use wvdial or other dialer programs to connect to the internet.<br />
<br />
I didn't test dialing, however I could see the modem device in /dev.<br />
<br />
= Webcam =<br />
For your webcam you need the uvcvideo module<br />
<br />
# modprobe uvcvideo<br />
<br />
Add it to your <code>/etc/rc.conf</code> modules line. More information can be found in [[Webcam_Setup]] wiki entry.<br />
<br />
With recent kernels (> 2.6.30), you may well find that your webcam does not function when using applications such as Skype or Guvcview, although the webcam is properly recognized by hardinfo and lsusb as an 'OmniVision OV2640' with identifier 05a9:2640 (this may differ on your precise model of course). The solution is to ensure that the uvcvideo module is loaded with an option as follows:<br />
<br />
# modprobe uvcvideo '''trace=15'''<br />
<br />
The easiest way to enforce this at startup is to create the file /etc/modprobe.d/uvcvideo_trace15.conf containing the line:<br />
<br />
install uvcvideo /sbin/modprobe --ignore-install uvcvideo trace=15 $CMDLINE_OPTS<br />
<br />
Guvcview, UCView and Skype should all then be able to use the camera normally.<br />
<br />
= USB, SD card slot, Ethernet, Firewire, VGA, S-video =<br />
<br />
All work out of the box.<br />
<br />
= HDMI, PCMCIA =<br />
<br />
Not tested. (HDMI should work, intel's driver introduced a lot of fixes for that recently...)<br />
<br />
<br />
<br />
= Mediakeys =<br />
<br />
Get xbindkeys from [extra]:<br />
<br />
# pacman -S xbindkeys<br />
<br />
Add 'xbindkeys &' in $HOME/.xinitrc right before your window manager is executed.<br />
<br />
Create $HOME/.xbindkeysrc file with:<br />
<br />
"amixer set Master 5+ unmute"<br />
XF86AudioRaiseVolume<br />
<br />
"amixer set Master 5- unmute"<br />
XF86AudioLowerVolume<br />
<br />
"amixer set 'Master' toggle"<br />
XF86AudioMute<br />
<br />
#"audioplayer -next"<br />
# XF86AudioNext<br />
<br />
#"audioplayer -pause"<br />
# XF86AudioPlay<br />
<br />
#"audioplayer -stop"<br />
# XF86AudioStop<br />
<br />
#"audioplayer -previous"<br />
# XF86AudioPrev<br />
<br />
<br />
= References =<br />
<br />
Audio:<br />
* [[ALSA]]<br />
* [[OSS]]<br />
* [http://forums.opensuse.org/archives/sls-archives/archives-suse-linux/archives-hardware-support/archives-notebooks/382722-dell-vostro1400-hda-intel-no-sound.html#post1798954 for "model=stack3" in /etc/modprobe.conf - OpenSuse Forum]<br />
* [http://en.gentoo-wiki.com/wiki/Dell_Inspiron_1525 for "model=dell-bios" in /etc/modprobe.conf - Gentoo Wiki]<br />
<br />
Video:<br />
* [[Xorg]]<br />
* [[Xorg input hotplugging]]<br />
* [http://www.dell.com/content/learnmore/learnmore.aspx?c=us&cs=04&l=en&s=bsd&~id=screen&~line=notebooks&~mode=popup&~model=d800&~series=latit&ref=CFG Dell laptop displays with 1280×800 as WXGA]<br />
* [http://www.oddments.org/notes/debian_dell_1525.html for Xorg.conf without autodetect]<br />
* [[Grub#Framebuffer_Resolution|GRUB: Framebuffer Resolution]]<br />
<br />
Keyboard & Synaptics:<br />
* [[Touchpad Synaptics]]<br />
* [http://linux.dell.com/wiki/index.php/Ubuntu_7.04/Issues/Changing_mousepad_settings Dell Mousepad Settings]<br />
* [http://ubuntuforums.org/showthread.php?p=6531988#6 HAL policy file]<br />
* [[Xorg_input_hotplugging#Modifying_hal_configuration|Changing keyboard layout]]<br />
<br />
Wireless:<br />
* [[Wireless#iwl3945.2C_iwl4965_and_iwl5000-series|Intel PRO wireless 3945abg]]<br />
* [[Broadcom BCM4312]]<br />
<br />
Webcam:<br />
* [[Webcam_Setup|Webcam Setup]]<br />
* [http://lists.berlios.de/pipermail/linux-uvc-devel/2007-February/001408.html for uvcvideo trace=15 option]<br />
* [http://linux.die.net/man/5/modprobe.conf for creating /etc/modprobe.d/uvcvideo_trace15.conf]</div>Code mhttps://wiki.archlinux.org/index.php?title=Dell_Inspiron_1525&diff=82467Dell Inspiron 15252009-11-07T23:51:23Z<p>Code m: /* Video */</p>
<hr />
<div>[[Category:Laptops (English)]]<br />
[[Category:HOWTOs (English)]]<br />
<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Dell_Inspiron_1525}}<br />
{{i18n_entry|Русский|Dell_Inspiron_1525_(Русский)}}<br />
{{i18n_links_end}}<br />
<br />
= Summary =<br />
<br />
This is a post-install configuration guide for the Dell Inspiron 1525 laptop.<br />
<br />
= Hardware Detection =<br />
<br />
Hwd provides a list of your hardware and what modules/drivers are needed to get it working.<br />
Install from AUR or download [http://user-contributions.org/projects/hwd/hwd.html here]<br />
<br />
From AUR:<br />
<br />
# yaourt -S hwd<br />
<br />
Now run hwd, so we get a nice list.<br />
<br />
# hwd -s<br />
<br />
Testing: kernel (2.6.28-ARCH) supports uevents<br />
HARDWARE DETECT ver 5.4.2 (simple mode)<br />
Kernel : 2.6.28-ARCH<br />
CPU & Cache: Processor 0: Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz 1662MHz, 2048 KB Cache<br />
Processor 1: Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz 1662MHz, 2048 KB Cache<br />
<br />
Sound(a) : 82801H ICH8 Family HD Audio Controller module: snd-hda-intel<br />
Video : Mobile GM965/GL960 Integrated Graphics Controller server: Xorg (intel)<br />
Driver : xf86-video-intel module: -<br />
Monitor : Generic Monitor H: 28.0-96.0kHz V: 50.0-75.0Hz<br />
Mouse : PS/2 Mouse xtype: PS2 device: /dev/psaux<br />
HDD : 82801HBM/HEM ICH8M/ICH8ME IDE Controller module: PIIX_IDE<br />
USB : 82801H ICH8 Family USB UHCI Controller #3 module: uhci_hcd<br />
USB2 : 82801H ICH8 Family USB2 EHCI Controller #1 module: ehci_hcd<br />
SD Slot : R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter module: sdhci-pci<br />
<br />
Ethernet : 88E8040 PCIE Fast Ethernet Controller module: sky2<br />
Network : PRO/Wireless 3945ABG [Golan] Network Connection module: iwl3945<br />
Firewire : R5C832 IEEE 1394 Controller module: ohci1394<br />
<br />
This is only 1 variant of this notebook. There are different many variants of this notebook. You'll notice differences in CPU and Wireless. Some models also have a webcam.<br />
<br />
A hwd -s of a system used in this wiki differs on these aspects:<br />
<br />
#Processor: Intel Pentium Dual T2370<br />
#Wireless card: [[Broadcom_BCM4312 | Broadcom BCM4312 802.11b/g]]<br />
<br />
HARDWARE DETECT ver 5.4.2 (simple mode)<br />
Kernel : 2.6.28-ARCH<br />
'''CPU & Cache: Processor 0: Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz 800MHz, 1024 KB Cache'''<br />
''' Processor 1: Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz 800MHz, 1024 KB Cache'''<br />
<br />
Sound(a) : 82801H ICH8 Family HD Audio Controller module: snd-oss_hdaudio <br />
Video : Mobile GM965/GL960 Integrated Graphics Controller server: Xorg (intel) <br />
Driver : xf86-video-intel module: - <br />
Monitor : Generic Monitor H: 28.0-96.0kHz V: 50.0-75.0Hz<br />
Mouse : PS/2 Mouse xtype: PS2 device: /dev/psaux<br />
HDD : 82801HBM/HEM ICH8M/ICH8ME IDE Controller module: ata_piix <br />
USB : 82801H ICH8 Family USB UHCI Controller #3 module: uhci_hcd <br />
USB2 : 82801H ICH8 Family USB2 EHCI Controller #1 module: ehci_hcd <br />
SD Slot : R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter module: sdhci-pci <br />
<br />
Ethernet : 88E8040 PCIE Fast Ethernet Controller module: sky2 <br />
'''Network : BCM4312 802.11b/g module: wl''' <br />
Firewire : R5C832 IEEE 1394 Controller module: ohci1394<br />
<br />
= Audio =<br />
There are two options to get audio working: [[ALSA]] and [[OSS]]<br />
<br />
== ALSA ==<br />
Sound works well on kernel 2.6.28-2.6.29. Only one headphone jack works. Use following commands to get it working without reading [[ALSA]]:<br />
<br />
# pacman -Sy alsa-lib alsa-utils<br />
# touch /etc/asound.state<br />
# gpasswd -a yourusername audio<br />
# alsaconf<br />
<br />
Follow the steps of alsaconf and run the deamon with:<br />
<br />
# /etc/rc.d/alsa start<br />
<br />
Don't forget to put alsa in your deamon list in [[Rc.conf]]<br />
<br />
=== modprobe.conf ===<br />
<br />
Adding the following line to /etc/modprobe.conf can make both headphone jacks work:<br />
<br />
options snd-hda-intel model=dell-bios<br />
<br />
Doesn't work on every machine. It can lead to issues explained below. Leaving the line out again can fix that, but leaves you again with only one headphone jack.<br />
<br />
In recent versions of the kernel (>2.6.25), the card could fade itself to zero volume when a headphone is inserted, irrelevant of all alsa controls. This doesn't apply on every system.<br />
To allow normal control of this card, enter the following line into modprobe.conf:<br />
<br />
options snd-hda-intel model=3stack<br />
<br />
== OSS ==<br />
Just follow the [[OSS]] wiki, it's really simple:<br />
<br />
# pacman -Sy oss libflashsupport-oss<br />
# gpasswd -a yourusername audio (I don't know if that is needed)<br />
# /etc/rc.d/oss start<br />
<br />
Don't forget to put oss in your deamon list in [[Rc.conf]]<br />
<br />
You'll generally get better quality and louder sound than ALSA, but I couldn't find a way to get dual headphone jack working (The case with ALSA is the same, though...)<br />
<br />
= Video =<br />
The notebook comes with Intel GMA 965 (x3100) <br />
<br />
The [[Wikipedia:WXGA|WXGA]] monitor is not detected by ''hwd -s''.<br />
Here you can find more information about [http://www.dell.com/content/learnmore/learnmore.aspx?c=us&cs=04&l=en&s=bsd&~id=screen&~line=notebooks&~mode=popup&~model=d800&~series=latit&ref=CFG Dell laptop displays with 1280×800 as WXGA].<br />
The 24 bit depth is important for Xorg. (2^24 = 16.7 million)<br />
<br />
The GM965 chipset is available for Xorg as ''xf86-video-intel'' from [extra]. <br />
Using following commands to get it working without reading [[Xorg]]:<br />
<br />
# pacman -S xorg<br />
# pacman -S xf86-video-intel<br />
<br />
If you use framebuffer programs, you'll need ''xf86-video-fbdev'' too.<br />
<br />
# pacman -S xf86-video-fbdev<br />
<br />
[[Intel_Graphics#KMS_.28Kernel_Mode_Setting.29 Intel Kernel Mode Setting]] (KMS) works very well, try this if you have problems with your graphics<br />
<br />
For keyboard and synaptics, I used [[Xorg_input_hotplugging]];<br />
so a working ''xorg.conf'' only needs video/screen configuration:<br />
<br />
Section "ServerLayout"<br />
Identifier "Xorg Configured"<br />
Screen "LVDS"<br />
EndSection<br />
<br />
Section "Module"<br />
Load "dri"<br />
Load "glx"<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Intel GM965"<br />
Driver "intel"<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "LVDS"<br />
Device "Intel GM965"<br />
DefaultColorDepth 24<br />
SubSection "Display"<br />
Depth 24<br />
Modes "1280x800"<br />
Virtual 2048 2048 <br />
EndSubSection<br />
EndSection<br />
<br />
Section "DRI"<br />
Mode 0666<br />
EndSection<br />
<br />
For other video output, I use ''xrandr''.<br />
<br />
== Grub: Framebuffer_Resolution ==<br />
<br />
Add ''vga=865'' to the kernel options<br />
<br />
kernel /boot/vmlinuz26 root=/dev/sda3 ro '''vga=865'''<br />
<br />
Check for more information [[Grub#Framebuffer_Resolution]]<br />
<br />
= Keyboard =<br />
<br />
Keyboard worked out of the box with [[Xorg_input_hotplugging]].<br />
For azerty or other layouts, use a [[Xorg_input_hotplugging#When_I_press_a_key.2C_X_thinks_I_pressed_it_multiple_times|HAL policy]].<br />
<br />
This is ''/etc/hal/fdi/policy/10-keymap.fdi'' for Belgian azerty:<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- --><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.keymap"><br />
<append key="info.callouts.add" type="strlist">hal-setup-keymap</append><br />
</match><br />
<br />
<match key="info.capabilities" contains="input.keys"><br />
<merge key="input.xkb.rules" type="string">base</merge><br />
<br />
<!-- If we're using Linux, we use evdev by default (falling back to<br />
keyboard otherwise). --><br />
<merge key="input.xkb.model" type="string">keyboard</merge><br />
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"<br />
string="Linux"><br />
<merge key="input.xkb.model" type="string">evdev</merge><br />
</match><br />
<br />
<merge key="input.xkb.layout" type="string">be</merge><br />
<merge key="input.xkb.variant" type="string" /><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
= Synaptics =<br />
<br />
Synaptics worked out of the box with [[Xorg_input_hotplugging]].<br />
To enable scroll and more, go to [[Touchpad_Synaptics]] for more info.<br />
<br />
A nice working ''/etc/hal/fdi/policy/11-x11-synaptics.fdi'' with tapping and two finger scroll enabled:<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.SHMConfig" type="string">true</merge><br />
<merge key="input.x11_options.LeftEdge" type="string">50</merge><br />
<merge key="input.x11_options.RightEdge" type="string">900</merge><br />
<merge key="input.x11_options.TopEdge" type="string">140</merge><br />
<merge key="input.x11_options.BottomEdge" type="string">680</merge><br />
<merge key="input.x11_options.ClickFinger1" type="string">1</merge><br />
<merge key="input.x11_options.ClickFinger2" type="string">3</merge><br />
<merge key="input.x11_options.ClickFinger3" type="string">2</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">20</merge><br />
<merge key="input.x11_options.VertScrollDelta" type="string">20</merge><br />
<merge key="input.x11_options.PressureMotionMinZ" type="string">30</merge><br />
<merge key="input.x11_options.PressureMotionMaxZ" type="string">160</merge><br />
<merge key="input.x11_options.PressureMotionMinFactor" type="string">1</merge><br />
<merge key="input.x11_options.PressureMotionMaxFactor" type="string">1</merge><br />
<merge key="input.x11_options.FingerLow" type="string">18</merge><br />
<merge key="input.x11_options.FingerHigh" type="string">23</merge><br />
<merge key="input.x11_options.FingerPress" type="string">256</merge><br />
<merge key="input.x11_options.PalmDetect" type="string">1</merge><br />
<merge key="input.x11_options.PalmMinWidth" type="string">10</merge><br />
<merge key="input.x11_options.PalmMinZ" type="string">200</merge><br />
<merge key="input.x11_options.MinSpeed" type="string">1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">1.5</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.10</merge><br />
<merge key="input.x11_options.MaxTapMove" type="string">110</merge><br />
<merge key="input.x11_options.MaxTapTime" type="string">366</merge><br />
<merge key="input.x11_options.MaxDoubleTapTime" type="string">180</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.RTCornerButton" type="string">2</merge><br />
<merge key="input.x11_options.RBCornerButton" type="string">3</merge><br />
<merge key="input.x11_options.LTCornerButton" type="string">0</merge><br />
<merge key="input.x11_options.LBCornerButton" type="string">0</merge><br />
</match><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
= Wireless =<br />
We have variations...<br />
<br />
== Intel PRO wireless ==<br />
If your hwd -s shows this:<br />
<br />
Network : PRO/Wireless 3945ABG [Golan] Network Connection module: iwl3945<br />
<br />
You are required to get ''iwlwifi-3945-ucode'' out of [core].<br />
<br />
# pacman -S iwlwifi-3945-ucode<br />
<br />
This package is also available [core-devel] on the 2008.06 installer CD.<br />
<br />
Then add ''iwl3945'' to your MODULES array in [[Rc.conf|/etc/rc.conf]]<br />
<br />
MODULES=( ... iwl3945 ... )<br />
<br />
== Broadcom BCM4312 ==<br />
If your hwd -s shows this: (as is my case)<br />
Network : BCM4312 802.11b/g module: wl <br />
<br />
You need to install broadcom-wl from AUR. Refer to [[Broadcom_BCM4312]] wiki entry.<br />
<br />
= Modem =<br />
You need [http://aur.archlinux.org/packages.php?ID=7724 hsfmodem] package from AUR in order to get modem working. After you install that package you need to:<br />
<br />
#Run <code>hsfconfig</code> as root to build the module and initialize the modem. A reboot is required before the modem can be initialized. Run <code>hsfconfig</code> again after reboot.<br />
#The modules are automatically loaded and a <code>/dev/modem</code> symlink is setup for use with the modem. Now use wvdial or other dialer programs to connect to the internet.<br />
<br />
I didn't test dialing, however I could see the modem device in /dev.<br />
<br />
= Webcam =<br />
For your webcam you need the uvcvideo module<br />
<br />
# modprobe uvcvideo<br />
<br />
Add it to your <code>/etc/rc.conf</code> modules line. More information can be found in [[Webcam_Setup]] wiki entry.<br />
<br />
With recent kernels (> 2.6.30), you may well find that your webcam does not function when using applications such as Skype or Guvcview, although the webcam is properly recognized by hardinfo and lsusb as an 'OmniVision OV2640' with identifier 05a9:2640 (this may differ on your precise model of course). The solution is to ensure that the uvcvideo module is loaded with an option as follows:<br />
<br />
# modprobe uvcvideo '''trace=15'''<br />
<br />
The easiest way to enforce this at startup is to create the file /etc/modprobe.d/uvcvideo_trace15.conf containing the line:<br />
<br />
install uvcvideo /sbin/modprobe --ignore-install uvcvideo trace=15 $CMDLINE_OPTS<br />
<br />
Guvcview, UCView and Skype should all then be able to use the camera normally.<br />
<br />
= USB, SD card slot, Ethernet, Firewire, VGA, S-video =<br />
<br />
All work out of the box.<br />
<br />
= HDMI, PCMCIA =<br />
<br />
Not tested. (HDMI should work, intel's driver introduced a lot of fixes for that recently...)<br />
<br />
<br />
<br />
= Mediakeys =<br />
<br />
Get xbindkeys from [extra]:<br />
<br />
# pacman -S xbindkeys<br />
<br />
Add 'xbindkeys &' in $HOME/.xinitrc right before your window manager is executed.<br />
<br />
Create $HOME/.xbindkeysrc file with:<br />
<br />
"amixer set Master 5+ unmute"<br />
XF86AudioRaiseVolume<br />
<br />
"amixer set Master 5- unmute"<br />
XF86AudioLowerVolume<br />
<br />
"amixer set 'Master' toggle"<br />
XF86AudioMute<br />
<br />
#"audioplayer -next"<br />
# XF86AudioNext<br />
<br />
#"audioplayer -pause"<br />
# XF86AudioPlay<br />
<br />
#"audioplayer -stop"<br />
# XF86AudioStop<br />
<br />
#"audioplayer -previous"<br />
# XF86AudioPrev<br />
<br />
<br />
= References =<br />
<br />
Audio:<br />
* [[ALSA]]<br />
* [[OSS]]<br />
* [http://forums.opensuse.org/archives/sls-archives/archives-suse-linux/archives-hardware-support/archives-notebooks/382722-dell-vostro1400-hda-intel-no-sound.html#post1798954 for "model=stack3" in /etc/modprobe.conf - OpenSuse Forum]<br />
* [http://en.gentoo-wiki.com/wiki/Dell_Inspiron_1525 for "model=dell-bios" in /etc/modprobe.conf - Gentoo Wiki]<br />
<br />
Video:<br />
* [[Xorg]]<br />
* [[Xorg input hotplugging]]<br />
* [http://www.dell.com/content/learnmore/learnmore.aspx?c=us&cs=04&l=en&s=bsd&~id=screen&~line=notebooks&~mode=popup&~model=d800&~series=latit&ref=CFG Dell laptop displays with 1280×800 as WXGA]<br />
* [http://www.oddments.org/notes/debian_dell_1525.html for Xorg.conf without autodetect]<br />
* [[Grub#Framebuffer_Resolution|GRUB: Framebuffer Resolution]]<br />
<br />
Keyboard & Synaptics:<br />
* [[Touchpad Synaptics]]<br />
* [http://linux.dell.com/wiki/index.php/Ubuntu_7.04/Issues/Changing_mousepad_settings Dell Mousepad Settings]<br />
* [http://ubuntuforums.org/showthread.php?p=6531988#6 HAL policy file]<br />
* [[Xorg_input_hotplugging#Modifying_hal_configuration|Changing keyboard layout]]<br />
<br />
Wireless:<br />
* [[Wireless#iwl3945.2C_iwl4965_and_iwl5000-series|Intel PRO wireless 3945abg]]<br />
* [[Broadcom BCM4312]]<br />
<br />
Webcam:<br />
* [[Webcam_Setup|Webcam Setup]]<br />
* [http://lists.berlios.de/pipermail/linux-uvc-devel/2007-February/001408.html for uvcvideo trace=15 option]<br />
* [http://linux.die.net/man/5/modprobe.conf for creating /etc/modprobe.d/uvcvideo_trace15.conf]</div>Code mhttps://wiki.archlinux.org/index.php?title=Dell_Inspiron_1525&diff=82465Dell Inspiron 15252009-11-07T23:50:33Z<p>Code m: /* Video */</p>
<hr />
<div>[[Category:Laptops (English)]]<br />
[[Category:HOWTOs (English)]]<br />
<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Dell_Inspiron_1525}}<br />
{{i18n_entry|Русский|Dell_Inspiron_1525_(Русский)}}<br />
{{i18n_links_end}}<br />
<br />
= Summary =<br />
<br />
This is a post-install configuration guide for the Dell Inspiron 1525 laptop.<br />
<br />
= Hardware Detection =<br />
<br />
Hwd provides a list of your hardware and what modules/drivers are needed to get it working.<br />
Install from AUR or download [http://user-contributions.org/projects/hwd/hwd.html here]<br />
<br />
From AUR:<br />
<br />
# yaourt -S hwd<br />
<br />
Now run hwd, so we get a nice list.<br />
<br />
# hwd -s<br />
<br />
Testing: kernel (2.6.28-ARCH) supports uevents<br />
HARDWARE DETECT ver 5.4.2 (simple mode)<br />
Kernel : 2.6.28-ARCH<br />
CPU & Cache: Processor 0: Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz 1662MHz, 2048 KB Cache<br />
Processor 1: Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz 1662MHz, 2048 KB Cache<br />
<br />
Sound(a) : 82801H ICH8 Family HD Audio Controller module: snd-hda-intel<br />
Video : Mobile GM965/GL960 Integrated Graphics Controller server: Xorg (intel)<br />
Driver : xf86-video-intel module: -<br />
Monitor : Generic Monitor H: 28.0-96.0kHz V: 50.0-75.0Hz<br />
Mouse : PS/2 Mouse xtype: PS2 device: /dev/psaux<br />
HDD : 82801HBM/HEM ICH8M/ICH8ME IDE Controller module: PIIX_IDE<br />
USB : 82801H ICH8 Family USB UHCI Controller #3 module: uhci_hcd<br />
USB2 : 82801H ICH8 Family USB2 EHCI Controller #1 module: ehci_hcd<br />
SD Slot : R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter module: sdhci-pci<br />
<br />
Ethernet : 88E8040 PCIE Fast Ethernet Controller module: sky2<br />
Network : PRO/Wireless 3945ABG [Golan] Network Connection module: iwl3945<br />
Firewire : R5C832 IEEE 1394 Controller module: ohci1394<br />
<br />
This is only 1 variant of this notebook. There are different many variants of this notebook. You'll notice differences in CPU and Wireless. Some models also have a webcam.<br />
<br />
A hwd -s of a system used in this wiki differs on these aspects:<br />
<br />
#Processor: Intel Pentium Dual T2370<br />
#Wireless card: [[Broadcom_BCM4312 | Broadcom BCM4312 802.11b/g]]<br />
<br />
HARDWARE DETECT ver 5.4.2 (simple mode)<br />
Kernel : 2.6.28-ARCH<br />
'''CPU & Cache: Processor 0: Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz 800MHz, 1024 KB Cache'''<br />
''' Processor 1: Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz 800MHz, 1024 KB Cache'''<br />
<br />
Sound(a) : 82801H ICH8 Family HD Audio Controller module: snd-oss_hdaudio <br />
Video : Mobile GM965/GL960 Integrated Graphics Controller server: Xorg (intel) <br />
Driver : xf86-video-intel module: - <br />
Monitor : Generic Monitor H: 28.0-96.0kHz V: 50.0-75.0Hz<br />
Mouse : PS/2 Mouse xtype: PS2 device: /dev/psaux<br />
HDD : 82801HBM/HEM ICH8M/ICH8ME IDE Controller module: ata_piix <br />
USB : 82801H ICH8 Family USB UHCI Controller #3 module: uhci_hcd <br />
USB2 : 82801H ICH8 Family USB2 EHCI Controller #1 module: ehci_hcd <br />
SD Slot : R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter module: sdhci-pci <br />
<br />
Ethernet : 88E8040 PCIE Fast Ethernet Controller module: sky2 <br />
'''Network : BCM4312 802.11b/g module: wl''' <br />
Firewire : R5C832 IEEE 1394 Controller module: ohci1394<br />
<br />
= Audio =<br />
There are two options to get audio working: [[ALSA]] and [[OSS]]<br />
<br />
== ALSA ==<br />
Sound works well on kernel 2.6.28-2.6.29. Only one headphone jack works. Use following commands to get it working without reading [[ALSA]]:<br />
<br />
# pacman -Sy alsa-lib alsa-utils<br />
# touch /etc/asound.state<br />
# gpasswd -a yourusername audio<br />
# alsaconf<br />
<br />
Follow the steps of alsaconf and run the deamon with:<br />
<br />
# /etc/rc.d/alsa start<br />
<br />
Don't forget to put alsa in your deamon list in [[Rc.conf]]<br />
<br />
=== modprobe.conf ===<br />
<br />
Adding the following line to /etc/modprobe.conf can make both headphone jacks work:<br />
<br />
options snd-hda-intel model=dell-bios<br />
<br />
Doesn't work on every machine. It can lead to issues explained below. Leaving the line out again can fix that, but leaves you again with only one headphone jack.<br />
<br />
In recent versions of the kernel (>2.6.25), the card could fade itself to zero volume when a headphone is inserted, irrelevant of all alsa controls. This doesn't apply on every system.<br />
To allow normal control of this card, enter the following line into modprobe.conf:<br />
<br />
options snd-hda-intel model=3stack<br />
<br />
== OSS ==<br />
Just follow the [[OSS]] wiki, it's really simple:<br />
<br />
# pacman -Sy oss libflashsupport-oss<br />
# gpasswd -a yourusername audio (I don't know if that is needed)<br />
# /etc/rc.d/oss start<br />
<br />
Don't forget to put oss in your deamon list in [[Rc.conf]]<br />
<br />
You'll generally get better quality and louder sound than ALSA, but I couldn't find a way to get dual headphone jack working (The case with ALSA is the same, though...)<br />
<br />
= Video =<br />
The notebook comes with Intel GMA 965 (x3100) <br />
<br />
The [[Wikipedia:WXGA|WXGA]] monitor is not detected by ''hwd -s''.<br />
Here you can find more information about [http://www.dell.com/content/learnmore/learnmore.aspx?c=us&cs=04&l=en&s=bsd&~id=screen&~line=notebooks&~mode=popup&~model=d800&~series=latit&ref=CFG Dell laptop displays with 1280×800 as WXGA].<br />
The 24 bit depth is important for Xorg. (2^24 = 16.7 million)<br />
<br />
The GM965 chipset is available for Xorg as ''xf86-video-intel'' from [extra]. <br />
Using following commands to get it working without reading [[Xorg]]:<br />
<br />
# pacman -S xorg<br />
# pacman -S xf86-video-intel<br />
<br />
If you use framebuffer programs, you'll need ''xf86-video-fbdev'' too.<br />
<br />
# pacman -S xf86-video-fbdev<br />
<br />
[http://wiki.archlinux.org/index.php/Intel_Graphics#KMS_.28Kernel_Mode_Setting.29 Intel Kernel Mode Setting] (KMS) works very well, try this if you have problems with your graphics<br />
<br />
For keyboard and synaptics, I used [[Xorg_input_hotplugging]];<br />
so a working ''xorg.conf'' only needs video/screen configuration:<br />
<br />
Section "ServerLayout"<br />
Identifier "Xorg Configured"<br />
Screen "LVDS"<br />
EndSection<br />
<br />
Section "Module"<br />
Load "dri"<br />
Load "glx"<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Intel GM965"<br />
Driver "intel"<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "LVDS"<br />
Device "Intel GM965"<br />
DefaultColorDepth 24<br />
SubSection "Display"<br />
Depth 24<br />
Modes "1280x800"<br />
Virtual 2048 2048 <br />
EndSubSection<br />
EndSection<br />
<br />
Section "DRI"<br />
Mode 0666<br />
EndSection<br />
<br />
For other video output, I use ''xrandr''.<br />
<br />
== Grub: Framebuffer_Resolution ==<br />
<br />
Add ''vga=865'' to the kernel options<br />
<br />
kernel /boot/vmlinuz26 root=/dev/sda3 ro '''vga=865'''<br />
<br />
Check for more information [[Grub#Framebuffer_Resolution]]<br />
<br />
= Keyboard =<br />
<br />
Keyboard worked out of the box with [[Xorg_input_hotplugging]].<br />
For azerty or other layouts, use a [[Xorg_input_hotplugging#When_I_press_a_key.2C_X_thinks_I_pressed_it_multiple_times|HAL policy]].<br />
<br />
This is ''/etc/hal/fdi/policy/10-keymap.fdi'' for Belgian azerty:<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- --><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.keymap"><br />
<append key="info.callouts.add" type="strlist">hal-setup-keymap</append><br />
</match><br />
<br />
<match key="info.capabilities" contains="input.keys"><br />
<merge key="input.xkb.rules" type="string">base</merge><br />
<br />
<!-- If we're using Linux, we use evdev by default (falling back to<br />
keyboard otherwise). --><br />
<merge key="input.xkb.model" type="string">keyboard</merge><br />
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"<br />
string="Linux"><br />
<merge key="input.xkb.model" type="string">evdev</merge><br />
</match><br />
<br />
<merge key="input.xkb.layout" type="string">be</merge><br />
<merge key="input.xkb.variant" type="string" /><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
= Synaptics =<br />
<br />
Synaptics worked out of the box with [[Xorg_input_hotplugging]].<br />
To enable scroll and more, go to [[Touchpad_Synaptics]] for more info.<br />
<br />
A nice working ''/etc/hal/fdi/policy/11-x11-synaptics.fdi'' with tapping and two finger scroll enabled:<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.SHMConfig" type="string">true</merge><br />
<merge key="input.x11_options.LeftEdge" type="string">50</merge><br />
<merge key="input.x11_options.RightEdge" type="string">900</merge><br />
<merge key="input.x11_options.TopEdge" type="string">140</merge><br />
<merge key="input.x11_options.BottomEdge" type="string">680</merge><br />
<merge key="input.x11_options.ClickFinger1" type="string">1</merge><br />
<merge key="input.x11_options.ClickFinger2" type="string">3</merge><br />
<merge key="input.x11_options.ClickFinger3" type="string">2</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">20</merge><br />
<merge key="input.x11_options.VertScrollDelta" type="string">20</merge><br />
<merge key="input.x11_options.PressureMotionMinZ" type="string">30</merge><br />
<merge key="input.x11_options.PressureMotionMaxZ" type="string">160</merge><br />
<merge key="input.x11_options.PressureMotionMinFactor" type="string">1</merge><br />
<merge key="input.x11_options.PressureMotionMaxFactor" type="string">1</merge><br />
<merge key="input.x11_options.FingerLow" type="string">18</merge><br />
<merge key="input.x11_options.FingerHigh" type="string">23</merge><br />
<merge key="input.x11_options.FingerPress" type="string">256</merge><br />
<merge key="input.x11_options.PalmDetect" type="string">1</merge><br />
<merge key="input.x11_options.PalmMinWidth" type="string">10</merge><br />
<merge key="input.x11_options.PalmMinZ" type="string">200</merge><br />
<merge key="input.x11_options.MinSpeed" type="string">1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">1.5</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.10</merge><br />
<merge key="input.x11_options.MaxTapMove" type="string">110</merge><br />
<merge key="input.x11_options.MaxTapTime" type="string">366</merge><br />
<merge key="input.x11_options.MaxDoubleTapTime" type="string">180</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.RTCornerButton" type="string">2</merge><br />
<merge key="input.x11_options.RBCornerButton" type="string">3</merge><br />
<merge key="input.x11_options.LTCornerButton" type="string">0</merge><br />
<merge key="input.x11_options.LBCornerButton" type="string">0</merge><br />
</match><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
= Wireless =<br />
We have variations...<br />
<br />
== Intel PRO wireless ==<br />
If your hwd -s shows this:<br />
<br />
Network : PRO/Wireless 3945ABG [Golan] Network Connection module: iwl3945<br />
<br />
You are required to get ''iwlwifi-3945-ucode'' out of [core].<br />
<br />
# pacman -S iwlwifi-3945-ucode<br />
<br />
This package is also available [core-devel] on the 2008.06 installer CD.<br />
<br />
Then add ''iwl3945'' to your MODULES array in [[Rc.conf|/etc/rc.conf]]<br />
<br />
MODULES=( ... iwl3945 ... )<br />
<br />
== Broadcom BCM4312 ==<br />
If your hwd -s shows this: (as is my case)<br />
Network : BCM4312 802.11b/g module: wl <br />
<br />
You need to install broadcom-wl from AUR. Refer to [[Broadcom_BCM4312]] wiki entry.<br />
<br />
= Modem =<br />
You need [http://aur.archlinux.org/packages.php?ID=7724 hsfmodem] package from AUR in order to get modem working. After you install that package you need to:<br />
<br />
#Run <code>hsfconfig</code> as root to build the module and initialize the modem. A reboot is required before the modem can be initialized. Run <code>hsfconfig</code> again after reboot.<br />
#The modules are automatically loaded and a <code>/dev/modem</code> symlink is setup for use with the modem. Now use wvdial or other dialer programs to connect to the internet.<br />
<br />
I didn't test dialing, however I could see the modem device in /dev.<br />
<br />
= Webcam =<br />
For your webcam you need the uvcvideo module<br />
<br />
# modprobe uvcvideo<br />
<br />
Add it to your <code>/etc/rc.conf</code> modules line. More information can be found in [[Webcam_Setup]] wiki entry.<br />
<br />
With recent kernels (> 2.6.30), you may well find that your webcam does not function when using applications such as Skype or Guvcview, although the webcam is properly recognized by hardinfo and lsusb as an 'OmniVision OV2640' with identifier 05a9:2640 (this may differ on your precise model of course). The solution is to ensure that the uvcvideo module is loaded with an option as follows:<br />
<br />
# modprobe uvcvideo '''trace=15'''<br />
<br />
The easiest way to enforce this at startup is to create the file /etc/modprobe.d/uvcvideo_trace15.conf containing the line:<br />
<br />
install uvcvideo /sbin/modprobe --ignore-install uvcvideo trace=15 $CMDLINE_OPTS<br />
<br />
Guvcview, UCView and Skype should all then be able to use the camera normally.<br />
<br />
= USB, SD card slot, Ethernet, Firewire, VGA, S-video =<br />
<br />
All work out of the box.<br />
<br />
= HDMI, PCMCIA =<br />
<br />
Not tested. (HDMI should work, intel's driver introduced a lot of fixes for that recently...)<br />
<br />
<br />
<br />
= Mediakeys =<br />
<br />
Get xbindkeys from [extra]:<br />
<br />
# pacman -S xbindkeys<br />
<br />
Add 'xbindkeys &' in $HOME/.xinitrc right before your window manager is executed.<br />
<br />
Create $HOME/.xbindkeysrc file with:<br />
<br />
"amixer set Master 5+ unmute"<br />
XF86AudioRaiseVolume<br />
<br />
"amixer set Master 5- unmute"<br />
XF86AudioLowerVolume<br />
<br />
"amixer set 'Master' toggle"<br />
XF86AudioMute<br />
<br />
#"audioplayer -next"<br />
# XF86AudioNext<br />
<br />
#"audioplayer -pause"<br />
# XF86AudioPlay<br />
<br />
#"audioplayer -stop"<br />
# XF86AudioStop<br />
<br />
#"audioplayer -previous"<br />
# XF86AudioPrev<br />
<br />
<br />
= References =<br />
<br />
Audio:<br />
* [[ALSA]]<br />
* [[OSS]]<br />
* [http://forums.opensuse.org/archives/sls-archives/archives-suse-linux/archives-hardware-support/archives-notebooks/382722-dell-vostro1400-hda-intel-no-sound.html#post1798954 for "model=stack3" in /etc/modprobe.conf - OpenSuse Forum]<br />
* [http://en.gentoo-wiki.com/wiki/Dell_Inspiron_1525 for "model=dell-bios" in /etc/modprobe.conf - Gentoo Wiki]<br />
<br />
Video:<br />
* [[Xorg]]<br />
* [[Xorg input hotplugging]]<br />
* [http://www.dell.com/content/learnmore/learnmore.aspx?c=us&cs=04&l=en&s=bsd&~id=screen&~line=notebooks&~mode=popup&~model=d800&~series=latit&ref=CFG Dell laptop displays with 1280×800 as WXGA]<br />
* [http://www.oddments.org/notes/debian_dell_1525.html for Xorg.conf without autodetect]<br />
* [[Grub#Framebuffer_Resolution|GRUB: Framebuffer Resolution]]<br />
<br />
Keyboard & Synaptics:<br />
* [[Touchpad Synaptics]]<br />
* [http://linux.dell.com/wiki/index.php/Ubuntu_7.04/Issues/Changing_mousepad_settings Dell Mousepad Settings]<br />
* [http://ubuntuforums.org/showthread.php?p=6531988#6 HAL policy file]<br />
* [[Xorg_input_hotplugging#Modifying_hal_configuration|Changing keyboard layout]]<br />
<br />
Wireless:<br />
* [[Wireless#iwl3945.2C_iwl4965_and_iwl5000-series|Intel PRO wireless 3945abg]]<br />
* [[Broadcom BCM4312]]<br />
<br />
Webcam:<br />
* [[Webcam_Setup|Webcam Setup]]<br />
* [http://lists.berlios.de/pipermail/linux-uvc-devel/2007-February/001408.html for uvcvideo trace=15 option]<br />
* [http://linux.die.net/man/5/modprobe.conf for creating /etc/modprobe.d/uvcvideo_trace15.conf]</div>Code mhttps://wiki.archlinux.org/index.php?title=Dell_Inspiron_1525&diff=82463Dell Inspiron 15252009-11-07T23:48:58Z<p>Code m: /* Video */</p>
<hr />
<div>[[Category:Laptops (English)]]<br />
[[Category:HOWTOs (English)]]<br />
<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Dell_Inspiron_1525}}<br />
{{i18n_entry|Русский|Dell_Inspiron_1525_(Русский)}}<br />
{{i18n_links_end}}<br />
<br />
= Summary =<br />
<br />
This is a post-install configuration guide for the Dell Inspiron 1525 laptop.<br />
<br />
= Hardware Detection =<br />
<br />
Hwd provides a list of your hardware and what modules/drivers are needed to get it working.<br />
Install from AUR or download [http://user-contributions.org/projects/hwd/hwd.html here]<br />
<br />
From AUR:<br />
<br />
# yaourt -S hwd<br />
<br />
Now run hwd, so we get a nice list.<br />
<br />
# hwd -s<br />
<br />
Testing: kernel (2.6.28-ARCH) supports uevents<br />
HARDWARE DETECT ver 5.4.2 (simple mode)<br />
Kernel : 2.6.28-ARCH<br />
CPU & Cache: Processor 0: Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz 1662MHz, 2048 KB Cache<br />
Processor 1: Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz 1662MHz, 2048 KB Cache<br />
<br />
Sound(a) : 82801H ICH8 Family HD Audio Controller module: snd-hda-intel<br />
Video : Mobile GM965/GL960 Integrated Graphics Controller server: Xorg (intel)<br />
Driver : xf86-video-intel module: -<br />
Monitor : Generic Monitor H: 28.0-96.0kHz V: 50.0-75.0Hz<br />
Mouse : PS/2 Mouse xtype: PS2 device: /dev/psaux<br />
HDD : 82801HBM/HEM ICH8M/ICH8ME IDE Controller module: PIIX_IDE<br />
USB : 82801H ICH8 Family USB UHCI Controller #3 module: uhci_hcd<br />
USB2 : 82801H ICH8 Family USB2 EHCI Controller #1 module: ehci_hcd<br />
SD Slot : R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter module: sdhci-pci<br />
<br />
Ethernet : 88E8040 PCIE Fast Ethernet Controller module: sky2<br />
Network : PRO/Wireless 3945ABG [Golan] Network Connection module: iwl3945<br />
Firewire : R5C832 IEEE 1394 Controller module: ohci1394<br />
<br />
This is only 1 variant of this notebook. There are different many variants of this notebook. You'll notice differences in CPU and Wireless. Some models also have a webcam.<br />
<br />
A hwd -s of a system used in this wiki differs on these aspects:<br />
<br />
#Processor: Intel Pentium Dual T2370<br />
#Wireless card: [[Broadcom_BCM4312 | Broadcom BCM4312 802.11b/g]]<br />
<br />
HARDWARE DETECT ver 5.4.2 (simple mode)<br />
Kernel : 2.6.28-ARCH<br />
'''CPU & Cache: Processor 0: Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz 800MHz, 1024 KB Cache'''<br />
''' Processor 1: Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz 800MHz, 1024 KB Cache'''<br />
<br />
Sound(a) : 82801H ICH8 Family HD Audio Controller module: snd-oss_hdaudio <br />
Video : Mobile GM965/GL960 Integrated Graphics Controller server: Xorg (intel) <br />
Driver : xf86-video-intel module: - <br />
Monitor : Generic Monitor H: 28.0-96.0kHz V: 50.0-75.0Hz<br />
Mouse : PS/2 Mouse xtype: PS2 device: /dev/psaux<br />
HDD : 82801HBM/HEM ICH8M/ICH8ME IDE Controller module: ata_piix <br />
USB : 82801H ICH8 Family USB UHCI Controller #3 module: uhci_hcd <br />
USB2 : 82801H ICH8 Family USB2 EHCI Controller #1 module: ehci_hcd <br />
SD Slot : R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter module: sdhci-pci <br />
<br />
Ethernet : 88E8040 PCIE Fast Ethernet Controller module: sky2 <br />
'''Network : BCM4312 802.11b/g module: wl''' <br />
Firewire : R5C832 IEEE 1394 Controller module: ohci1394<br />
<br />
= Audio =<br />
There are two options to get audio working: [[ALSA]] and [[OSS]]<br />
<br />
== ALSA ==<br />
Sound works well on kernel 2.6.28-2.6.29. Only one headphone jack works. Use following commands to get it working without reading [[ALSA]]:<br />
<br />
# pacman -Sy alsa-lib alsa-utils<br />
# touch /etc/asound.state<br />
# gpasswd -a yourusername audio<br />
# alsaconf<br />
<br />
Follow the steps of alsaconf and run the deamon with:<br />
<br />
# /etc/rc.d/alsa start<br />
<br />
Don't forget to put alsa in your deamon list in [[Rc.conf]]<br />
<br />
=== modprobe.conf ===<br />
<br />
Adding the following line to /etc/modprobe.conf can make both headphone jacks work:<br />
<br />
options snd-hda-intel model=dell-bios<br />
<br />
Doesn't work on every machine. It can lead to issues explained below. Leaving the line out again can fix that, but leaves you again with only one headphone jack.<br />
<br />
In recent versions of the kernel (>2.6.25), the card could fade itself to zero volume when a headphone is inserted, irrelevant of all alsa controls. This doesn't apply on every system.<br />
To allow normal control of this card, enter the following line into modprobe.conf:<br />
<br />
options snd-hda-intel model=3stack<br />
<br />
== OSS ==<br />
Just follow the [[OSS]] wiki, it's really simple:<br />
<br />
# pacman -Sy oss libflashsupport-oss<br />
# gpasswd -a yourusername audio (I don't know if that is needed)<br />
# /etc/rc.d/oss start<br />
<br />
Don't forget to put oss in your deamon list in [[Rc.conf]]<br />
<br />
You'll generally get better quality and louder sound than ALSA, but I couldn't find a way to get dual headphone jack working (The case with ALSA is the same, though...)<br />
<br />
= Video =<br />
The notebook comes with Intel GMA 965 (x3100) <br />
<br />
The [[Wikipedia:WXGA|WXGA]] monitor is not detected by ''hwd -s''.<br />
Here you can find more information about [http://www.dell.com/content/learnmore/learnmore.aspx?c=us&cs=04&l=en&s=bsd&~id=screen&~line=notebooks&~mode=popup&~model=d800&~series=latit&ref=CFG Dell laptop displays with 1280×800 as WXGA].<br />
The 24 bit depth is important for Xorg. (2^24 = 16.7 million)<br />
<br />
The GM965 chipset is available for Xorg as ''xf86-video-intel'' from [extra]. <br />
Using following commands to get it working without reading [[Xorg]]:<br />
<br />
# pacman -S xorg<br />
# pacman -S xf86-video-intel<br />
<br />
If you use framebuffer programs, you'll need ''xf86-video-fbdev'' too.<br />
<br />
# pacman -S xf86-video-fbdev<br />
<br />
[[Intel Kernel Mode Setting|Intel Graphics]] (KMS) works very well, try this if you have problems with your graphics<br />
<br />
For keyboard and synaptics, I used [[Xorg_input_hotplugging]];<br />
so a working ''xorg.conf'' only needs video/screen configuration:<br />
<br />
Section "ServerLayout"<br />
Identifier "Xorg Configured"<br />
Screen "LVDS"<br />
EndSection<br />
<br />
Section "Module"<br />
Load "dri"<br />
Load "glx"<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Intel GM965"<br />
Driver "intel"<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "LVDS"<br />
Device "Intel GM965"<br />
DefaultColorDepth 24<br />
SubSection "Display"<br />
Depth 24<br />
Modes "1280x800"<br />
Virtual 2048 2048 <br />
EndSubSection<br />
EndSection<br />
<br />
Section "DRI"<br />
Mode 0666<br />
EndSection<br />
<br />
For other video output, I use ''xrandr''.<br />
<br />
== Grub: Framebuffer_Resolution ==<br />
<br />
Add ''vga=865'' to the kernel options<br />
<br />
kernel /boot/vmlinuz26 root=/dev/sda3 ro '''vga=865'''<br />
<br />
Check for more information [[Grub#Framebuffer_Resolution]]<br />
<br />
= Keyboard =<br />
<br />
Keyboard worked out of the box with [[Xorg_input_hotplugging]].<br />
For azerty or other layouts, use a [[Xorg_input_hotplugging#When_I_press_a_key.2C_X_thinks_I_pressed_it_multiple_times|HAL policy]].<br />
<br />
This is ''/etc/hal/fdi/policy/10-keymap.fdi'' for Belgian azerty:<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- --><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.keymap"><br />
<append key="info.callouts.add" type="strlist">hal-setup-keymap</append><br />
</match><br />
<br />
<match key="info.capabilities" contains="input.keys"><br />
<merge key="input.xkb.rules" type="string">base</merge><br />
<br />
<!-- If we're using Linux, we use evdev by default (falling back to<br />
keyboard otherwise). --><br />
<merge key="input.xkb.model" type="string">keyboard</merge><br />
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"<br />
string="Linux"><br />
<merge key="input.xkb.model" type="string">evdev</merge><br />
</match><br />
<br />
<merge key="input.xkb.layout" type="string">be</merge><br />
<merge key="input.xkb.variant" type="string" /><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
= Synaptics =<br />
<br />
Synaptics worked out of the box with [[Xorg_input_hotplugging]].<br />
To enable scroll and more, go to [[Touchpad_Synaptics]] for more info.<br />
<br />
A nice working ''/etc/hal/fdi/policy/11-x11-synaptics.fdi'' with tapping and two finger scroll enabled:<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="AlpsPS/2 ALPS"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.SHMConfig" type="string">true</merge><br />
<merge key="input.x11_options.LeftEdge" type="string">50</merge><br />
<merge key="input.x11_options.RightEdge" type="string">900</merge><br />
<merge key="input.x11_options.TopEdge" type="string">140</merge><br />
<merge key="input.x11_options.BottomEdge" type="string">680</merge><br />
<merge key="input.x11_options.ClickFinger1" type="string">1</merge><br />
<merge key="input.x11_options.ClickFinger2" type="string">3</merge><br />
<merge key="input.x11_options.ClickFinger3" type="string">2</merge><br />
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">120</merge><br />
<merge key="input.x11_options.HorizScrollDelta" type="string">20</merge><br />
<merge key="input.x11_options.VertScrollDelta" type="string">20</merge><br />
<merge key="input.x11_options.PressureMotionMinZ" type="string">30</merge><br />
<merge key="input.x11_options.PressureMotionMaxZ" type="string">160</merge><br />
<merge key="input.x11_options.PressureMotionMinFactor" type="string">1</merge><br />
<merge key="input.x11_options.PressureMotionMaxFactor" type="string">1</merge><br />
<merge key="input.x11_options.FingerLow" type="string">18</merge><br />
<merge key="input.x11_options.FingerHigh" type="string">23</merge><br />
<merge key="input.x11_options.FingerPress" type="string">256</merge><br />
<merge key="input.x11_options.PalmDetect" type="string">1</merge><br />
<merge key="input.x11_options.PalmMinWidth" type="string">10</merge><br />
<merge key="input.x11_options.PalmMinZ" type="string">200</merge><br />
<merge key="input.x11_options.MinSpeed" type="string">1</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">1.5</merge><br />
<merge key="input.x11_options.AccelFactor" type="string">0.10</merge><br />
<merge key="input.x11_options.MaxTapMove" type="string">110</merge><br />
<merge key="input.x11_options.MaxTapTime" type="string">366</merge><br />
<merge key="input.x11_options.MaxDoubleTapTime" type="string">180</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.RTCornerButton" type="string">2</merge><br />
<merge key="input.x11_options.RBCornerButton" type="string">3</merge><br />
<merge key="input.x11_options.LTCornerButton" type="string">0</merge><br />
<merge key="input.x11_options.LBCornerButton" type="string">0</merge><br />
</match><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
= Wireless =<br />
We have variations...<br />
<br />
== Intel PRO wireless ==<br />
If your hwd -s shows this:<br />
<br />
Network : PRO/Wireless 3945ABG [Golan] Network Connection module: iwl3945<br />
<br />
You are required to get ''iwlwifi-3945-ucode'' out of [core].<br />
<br />
# pacman -S iwlwifi-3945-ucode<br />
<br />
This package is also available [core-devel] on the 2008.06 installer CD.<br />
<br />
Then add ''iwl3945'' to your MODULES array in [[Rc.conf|/etc/rc.conf]]<br />
<br />
MODULES=( ... iwl3945 ... )<br />
<br />
== Broadcom BCM4312 ==<br />
If your hwd -s shows this: (as is my case)<br />
Network : BCM4312 802.11b/g module: wl <br />
<br />
You need to install broadcom-wl from AUR. Refer to [[Broadcom_BCM4312]] wiki entry.<br />
<br />
= Modem =<br />
You need [http://aur.archlinux.org/packages.php?ID=7724 hsfmodem] package from AUR in order to get modem working. After you install that package you need to:<br />
<br />
#Run <code>hsfconfig</code> as root to build the module and initialize the modem. A reboot is required before the modem can be initialized. Run <code>hsfconfig</code> again after reboot.<br />
#The modules are automatically loaded and a <code>/dev/modem</code> symlink is setup for use with the modem. Now use wvdial or other dialer programs to connect to the internet.<br />
<br />
I didn't test dialing, however I could see the modem device in /dev.<br />
<br />
= Webcam =<br />
For your webcam you need the uvcvideo module<br />
<br />
# modprobe uvcvideo<br />
<br />
Add it to your <code>/etc/rc.conf</code> modules line. More information can be found in [[Webcam_Setup]] wiki entry.<br />
<br />
With recent kernels (> 2.6.30), you may well find that your webcam does not function when using applications such as Skype or Guvcview, although the webcam is properly recognized by hardinfo and lsusb as an 'OmniVision OV2640' with identifier 05a9:2640 (this may differ on your precise model of course). The solution is to ensure that the uvcvideo module is loaded with an option as follows:<br />
<br />
# modprobe uvcvideo '''trace=15'''<br />
<br />
The easiest way to enforce this at startup is to create the file /etc/modprobe.d/uvcvideo_trace15.conf containing the line:<br />
<br />
install uvcvideo /sbin/modprobe --ignore-install uvcvideo trace=15 $CMDLINE_OPTS<br />
<br />
Guvcview, UCView and Skype should all then be able to use the camera normally.<br />
<br />
= USB, SD card slot, Ethernet, Firewire, VGA, S-video =<br />
<br />
All work out of the box.<br />
<br />
= HDMI, PCMCIA =<br />
<br />
Not tested. (HDMI should work, intel's driver introduced a lot of fixes for that recently...)<br />
<br />
<br />
<br />
= Mediakeys =<br />
<br />
Get xbindkeys from [extra]:<br />
<br />
# pacman -S xbindkeys<br />
<br />
Add 'xbindkeys &' in $HOME/.xinitrc right before your window manager is executed.<br />
<br />
Create $HOME/.xbindkeysrc file with:<br />
<br />
"amixer set Master 5+ unmute"<br />
XF86AudioRaiseVolume<br />
<br />
"amixer set Master 5- unmute"<br />
XF86AudioLowerVolume<br />
<br />
"amixer set 'Master' toggle"<br />
XF86AudioMute<br />
<br />
#"audioplayer -next"<br />
# XF86AudioNext<br />
<br />
#"audioplayer -pause"<br />
# XF86AudioPlay<br />
<br />
#"audioplayer -stop"<br />
# XF86AudioStop<br />
<br />
#"audioplayer -previous"<br />
# XF86AudioPrev<br />
<br />
<br />
= References =<br />
<br />
Audio:<br />
* [[ALSA]]<br />
* [[OSS]]<br />
* [http://forums.opensuse.org/archives/sls-archives/archives-suse-linux/archives-hardware-support/archives-notebooks/382722-dell-vostro1400-hda-intel-no-sound.html#post1798954 for "model=stack3" in /etc/modprobe.conf - OpenSuse Forum]<br />
* [http://en.gentoo-wiki.com/wiki/Dell_Inspiron_1525 for "model=dell-bios" in /etc/modprobe.conf - Gentoo Wiki]<br />
<br />
Video:<br />
* [[Xorg]]<br />
* [[Xorg input hotplugging]]<br />
* [http://www.dell.com/content/learnmore/learnmore.aspx?c=us&cs=04&l=en&s=bsd&~id=screen&~line=notebooks&~mode=popup&~model=d800&~series=latit&ref=CFG Dell laptop displays with 1280×800 as WXGA]<br />
* [http://www.oddments.org/notes/debian_dell_1525.html for Xorg.conf without autodetect]<br />
* [[Grub#Framebuffer_Resolution|GRUB: Framebuffer Resolution]]<br />
<br />
Keyboard & Synaptics:<br />
* [[Touchpad Synaptics]]<br />
* [http://linux.dell.com/wiki/index.php/Ubuntu_7.04/Issues/Changing_mousepad_settings Dell Mousepad Settings]<br />
* [http://ubuntuforums.org/showthread.php?p=6531988#6 HAL policy file]<br />
* [[Xorg_input_hotplugging#Modifying_hal_configuration|Changing keyboard layout]]<br />
<br />
Wireless:<br />
* [[Wireless#iwl3945.2C_iwl4965_and_iwl5000-series|Intel PRO wireless 3945abg]]<br />
* [[Broadcom BCM4312]]<br />
<br />
Webcam:<br />
* [[Webcam_Setup|Webcam Setup]]<br />
* [http://lists.berlios.de/pipermail/linux-uvc-devel/2007-February/001408.html for uvcvideo trace=15 option]<br />
* [http://linux.die.net/man/5/modprobe.conf for creating /etc/modprobe.d/uvcvideo_trace15.conf]</div>Code mhttps://wiki.archlinux.org/index.php?title=Laptop/Dell&diff=82461Laptop/Dell2009-11-07T23:42:15Z<p>Code m: /* Model Version */</p>
<hr />
<div>{| style="background-color: #f3f9ff; margin: 1em 2.5% 0 2.5%; padding: 3px 3px; border: 1px solid #aaa;"<br />
|-<br />
|align="center"|'''[[HCL|Hardware Compatibility List]] - [[HCL/Laptops|Laptops main page]]''' <br> [[HCL/Laptops/Acer|Acer]] - [[HCL/Laptops/Apple|Apple]] - [[HCL/Laptops/Asus|Asus]] - [[HCL/Laptops/Compaq|Compaq]] - [[HCL/Laptops/Dell|Dell]] - [[HCL/Laptops/Digital|Digital]] - [[HCL/Laptops/ECS|ECS]] - [[HCL/Laptops/Siemens-Fujitsu|Siemens-Fujitsu]] - [[HCL/Laptops/Gateway|Gateway]] - [[HCL/Laptops/Hitachi|Hitachi]] - [[HCL/Laptops/Higrade|Higrade]] - [[HCL/Laptops/HP|HP]] - [[HCL/Laptops/IBM|IBM/Lenovo]] - [[HCL/Laptops/Medion|Medion]] - [[HCL/Laptops/Micron|Micron]] - [[HCL/Laptops/Mitac|Mitac]] - [[HCL/Laptops/Mitsubishi|Mitsubishi]] - [[HCL/Laptops/NEC|NEC]] - [[HCL/Laptops/Panasonic|Panasonic]] - [[HCL/Laptops/Samsung|Samsung]] - [[HCL/Laptops/Sony|Sony]] - [[HCL/Laptops/Toshiba|Toshiba]] - [[HCL/Laptops/Zenith|Zenith]] - [[HCL/Laptops/Other|Other]]<br />
|}<br />
<br />
<br />
[[Category:Hardware Compatibility List]]<br />
<br />
<br />
<br />
{| align="right" width="300px" style="background-color: #f3f9ff; margin: 1em 2.5% 0 2.5%; padding: 3px; border: 1px solid #aaa;"<br />
| style="background-color:white" | <small>'''[[HCL|Hardware Compatibility List (HCL)]]'''</small><br />
|-<br />
|<small> ''Full Systems'' </small><br />
|-<br />
|<small>[[HCL/Laptops|Laptops]] - [[HCL/Desktops|Desktops]] - [[HCL/Servers|Servers]] - [[HCL/Virtual Machines|Virtual Machines]]</small><br />
|-<br />
|<small>''Components''</small><br />
HCL/Web Cameras|Web Cameras]] - [[HCL/UPS|UPS]] - [[HCL/Floppy Drives|Floppy Drives]] - [[HCL/CD and DVD Writer/Readers|CD and DVD Writer/Readers]] - [[HCL/SCSI Adapters|SCSI Adapters]] - [[HCL/Gadgets|Gadgets]] - [[HCL/SATA IDE Cards|SATA IDE Cards]] - [[HCL/Keyboards|Keyboards]] - [[HCL/Main Boards|Main Boards]] - [[HCL/RAID Controllers|RAID Controllers]]</small><br />
|}<br />
[[Category:Hardware Compatibility List]]<br />
<br />
<br />
= Model Version =<br />
<br />
<br><br><br><br><br><br><br><br><br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
! rowspan=2 | Model Version:<br />
! rowspan=2 | Arch Linux<br>Install CD Version:<br> <br />
! colspan=8 | Hardware Support:<br />
! rowspan=2 | Remark:<br />
|- <br />
! Video: || Sound: || Ethernet: || Wireless: || Bluetooth: || Power<br>Management:<br> || Modem: || Other:<br />
|-<br />
|-<br />
| e1405 || Any || 3D with x86-video-intel-2.0, native resolution with xorg-server-1.3 (1440x900)|| Intel HD audio with alsa || Yes || Yes, ipw3945 || Yes || Suspend-to-ram shaky, hibernate is flawless || Untested || SD Card reader works out of the box || Everything else works without a hitch ||<br />
|-<br />
| d420 || Duke || 3D with xf86-video-i810 and 915resolution, native resolution with xorg-server-1.2 (1280x800) || Intel HD audio with alsa || Yes (with tg3) || Yes (with ipw3945) || N/A || Both hibernate and suspend-to-ram and works with powersaved || Untested || Have not tested SD Card reader || External D-Bay dvd/cdrw works, docking station mostly works (can undock, but locks up on redocking) ||<br />
|-<br />
| d620 || Duke || 3D with nvidia, native resolution with xorg-server-1.2 (1440x900)<br> 3D with Intel 945GM, native resolution 1440x900 || Intel HD audio with alsa || Yes || Yes, bcm4311 PCIE with bcm43xx (with kernel >= 2.6.21). Yes for some models with iwl3945. || N/A|| Suspend-to-ram perfect, hibernate works fine. || Untested || not tested Smart Card Reader || Everything else works without a hitch ||<br />
|-<br />
| d820 || Duke || 3D with nvidia drivers || Intel HD audio with alsa || Yes || Yes, IPW3945 || YES|| Suspending with KDE works || Untested || Everything works, even fingerprint reader with bioapi and pam_bioapi || Everything else works without a hitch ||<br />
|-<br />
| Inspiron1501 || Duke || 3D with proprietary ATI fglrx || Intel HD audio with alsa || Yes || Yes, bcm4311 PCIE with bcm43xx (with kernel >= 2.6.21) || N/A|| Untested || Untested || Smart Card Reader works out of the box || Everything else works without a hitch ||<br />
|-<br />
| XPS M1210 || Duke || 3D with nvidia open source drivers || sigmatel audio with alsa || b44 module, out of the box || IPW 3945, command-line wireless_tools || not tested || not tested || not tested || rico card reader worked out of the box, hotkeys using keytouch, webcam works unstable. in mplayer use driver=v4l2:device=/dev/video0 || Everything else works without a hitch ||<br />
|-<br />
| Inspiron 1520 || Core Dump || 3D with nvidia|| sigmatel audio with alsa|| b44 module, out of the box || b43, need firmware || Yes ||Both hibernate and suspend-to-ram and works with pm-utils || untested ||hotkeys works out of the box using hal ||Everything else works without a hitch ||<br />
|-<br />
| [[Dell_Inspiron_1525|Inspiron 1525]] || Archlinux 2008.06 - "Overlord" FTP Install || 3D with x86-video-intel-2.4.3, native resolution with xorg-server-1.5.3 (1280x800)|| Intel HD audio (SigmaTel STAC9228 codec) with ALSA || Marvell Yukon Gb Ethernet: Yes (sky2 module) || PRO/Wireless 3945ABG with iwlwifi-3945-ucode-15.28.2.8 || Untested (doesn't have) || Untested || Untested || SD Card Reader works out of the box || Fn+Up/Down (lcd bright control) works independently of the OS. Everything else work out of the box||<br />
|- <br />
| Inspiron 1525 || Core Dump (2008.03 iso) || 3D with x86-video-intel-2.2, native resolution with xorg-server-1.4 (1280x800)|| Intel HD audio (SigmaTel STAC9228 codec) with ALSA || Marvell Yukon Gb Ethernet: Yes (sky2 module) || Broadcom BCM4310: Yes, ndiswrapper (AUR broadcom-wl work, must blacklist ssb module)|| Untested (doesn't have) || Untested || Untested || SD Card Reader (Ricoh) works out of the box || Fn+Up/Down (lcd bright control) works independently of the OS , Media keys configured with KeyTouch . DVDRW drive and everything else work out of the box||<br />
|- <br />
| Inspiron 1300 || Don't Panic (Core Dump version) || 3D with xf86-video-intel || intel || b44 module, out of the box || BCM4318 based card, works with ndiswrapper || N/A || Untested || Untested || || Everything works out of the box except wireless and sometimes screen resolution ||<br />
|- <br />
| [[Dell XPS M1330]] || Don't Panic (2007.08-2) || For dedicated graphics (NVIDIA 8400m) works with nvidia package || Works with Intel HD Audio and Alsa, but need to configure mic || Yes || Works with iwl4965 || Can set BT but haven't tested with any devices|| Suspend works fine with pm-utils (acpi-cpufreq problem: http://bbs.archlinux.org/viewtopic.php?id=44500) || Untested || 2.0MP webcam works with uvcvideo, media keys work with keytouch or esekeyd, IR remote works, SD card works || Everything basically worked out of the box except the microphone ||<br />
|- <br />
| [[Dell Latitude D830]] || Don't Panic (2007.08-2) || NVIDIA Quadro NVS 140M with proprietary NVIDIA drivers || Alsa with the snd_hda_intel module || yes, with tg3 module || yes, with iwl3965 module || yes || yes, with pm-utils || untested || || ||<br />
|- <br />
| Dell Studio XPS M1640 || (2009.08) || ATI HD4670 Mobile works with xf86-video-ati (see the forums for 3d support), Catalyst Untested || Works with Intel HD Audio and Alsa. || Yes || Works with iwlagn || BT Works || Untested || N/A || Webcam works, media keys work with the dell_laptop kernel module, IR works, Card reader works || Everything basically worked out of the box||<br />
|}</div>Code m