Initial commit (release 0.3.25)
This commit is contained in:
commit
59c5f9e107
340
COPYING
Normal file
340
COPYING
Normal file
@ -0,0 +1,340 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
115
Changelog
Normal file
115
Changelog
Normal file
@ -0,0 +1,115 @@
|
||||
2012-01-21 0.3.25 Silvan Calarco <silvan.calarco@mambasoft.it>
|
||||
- initscript:
|
||||
- load applesmc module
|
||||
- macbook-lightd:
|
||||
- check for sensor file existence or exit
|
||||
|
||||
2011-09-01 0.3.24 Silvan Calarco <silvan.calarco@mambasoft.it>
|
||||
- initscript:
|
||||
- configure it-macbook in /etc/vconsole.conf when Apple computer is detected;
|
||||
- remove it-macbook KEYMAP configuration for non Apple computers
|
||||
|
||||
2009-08-03 0.3.23 Silvan Calarco <silvan.calarco@mambasoft.it>
|
||||
- macbook-lightd: small fix to algorithm
|
||||
|
||||
2009-07-25 0.3.22 Silvan Calarco <silvan.calarco@mambasoft.it>
|
||||
- modprobe.conf.d/macbook: install as /etc/modprobe.d/macbook.conf
|
||||
|
||||
2009-06-29 0.3.21 Silvan Calarco <silvan.calarco@mambasoft.it>
|
||||
- initscript: redirect macbook-light output to fix multithreaded init lockup
|
||||
|
||||
2009-06-23 0.3.20 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- initscript: disabled LCD backlight setting (managed by HAL/KDE)
|
||||
- macbook-lightd: modified and re-enabled in initscript
|
||||
|
||||
2009-02-24 0.3.19 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- modprobe.conf.d/macbook: st fnmode for hid_apple not for hid (kernel 2.6.28)
|
||||
|
||||
2008-04-14 0.3.18 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- isight-firmware-loaded: removed as it is now provided by external package
|
||||
|
||||
2008-03-09 0.3.17 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- initscript: fix check for SYSTEM_MANUFACTURER against new postplug
|
||||
|
||||
2008-02-01 0.3.16 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- macbook-set-input: don't execute xbindkeys and xmodmap as they are
|
||||
now handled by xbindkeys-start
|
||||
- initscript: use /etc/sysconfig/machine to detect manufacturer
|
||||
|
||||
2008-01-08 0.3.15 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- Makefile: build statically against libpci
|
||||
|
||||
2007-11-10 0.3.14 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- initscript: remove mapping of <SUPER> button to central mouse key
|
||||
|
||||
2007-09-12 0.3.13 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- initscripts: replace loading of module speedstep-centrino (obsolete)
|
||||
with acpi_cpufreqd
|
||||
|
||||
2007-09-10 0.3.12 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- swapped right-Apple and numpad enter association (respectively they
|
||||
are now ISO_Level3_Shift and right mouse key
|
||||
|
||||
2007-08-31 0.3.11 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- initscript: set mause button emulation to apple keys
|
||||
- modprobe: enable pb_fnmode=2 option of hid module
|
||||
- macbook_set_input: xprofile script moved to /usr/bin/macbook_set_input
|
||||
and called by kde autostart desktop file
|
||||
|
||||
2007-08-15 0.3.10 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- initscript: don't install suid root
|
||||
|
||||
2007-08-06 0.3.9 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- initscript: load specific modules here instead of /etc/modules.d/macbook
|
||||
- /etc/modules.d/macbook: remove
|
||||
- initscript: change chkconfig priority from 44 to 42 (before cpufreqd)
|
||||
|
||||
2007-08-03 0.3.8 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- initscript: added support for macmini configuration in lirc
|
||||
- modprobe: removed loading of appletouch (now automatic) and appleir
|
||||
(obsolete)
|
||||
- udev: removed macbook file installation
|
||||
- scripts: added check for Apple chassis so this package can be installed
|
||||
harmlessy also on non macbook computers
|
||||
|
||||
2007-03-08 0.3.7 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- modprobe macbook: fix appleir and appletouch loading before usbhid
|
||||
|
||||
2007-03-06 0.3.6 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- use xprofile.d instead of autostart desktop file
|
||||
|
||||
2006-10-20 0.3.5 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- fix xmodmap file to match new keyboard layout fixes in kernel 2.6.18.3
|
||||
|
||||
2006-10-12 0.3.4 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- fix udev rule to match KERNEL event device
|
||||
- appleir: load before usbhid
|
||||
|
||||
2006-10-10 0.3.3 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- add udev rule for appleir
|
||||
|
||||
2006-10-08 0.3.2 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- add lircd support
|
||||
- load uvcvideo on boot
|
||||
|
||||
2006-10-02 0.3 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- add more complete kbd support (Function keys mapping and commands)
|
||||
- set keyboard configuration on X session startup
|
||||
|
||||
2006-10-02 0.2.2 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- appletouch: load before usbhid (needs usbhid compiled as a module)
|
||||
|
||||
2006-07-24 0.2.1 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- add modprobe.conf.d file for automatic firmware loading
|
||||
|
||||
2006-07-24 0.2 Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- added isight firmware loader tool
|
||||
- applesmc: resync from original macbook-tools 0.1.1
|
||||
- macbook-lightd: added very simple daemon for keyboard backlight control
|
||||
|
||||
2006-07-13 0.1a Silvan Calarco <silvan.calarco@mambasoft.it>:
|
||||
- backlight tool updated
|
||||
- added applesmc tool for keyboard backlight control
|
||||
|
||||
2006-07-09 0.1:
|
||||
- first official release with backlight tool by Nicolas Boichat <nicolas@boichat.ch>
|
48
Makefile
Normal file
48
Makefile
Normal file
@ -0,0 +1,48 @@
|
||||
include VERSION
|
||||
|
||||
BINDIR:=/usr/bin
|
||||
SBIN:=/sbin
|
||||
SBINDIR:=/usr/sbin
|
||||
SYSCONFDIR:=/etc
|
||||
DESTDIR:=
|
||||
DATADIR:=/usr/share
|
||||
INITDIR:=/etc/rc.d/init.d
|
||||
RPMSOURCEDIR:=/usr/src/RPM/SOURCES
|
||||
KDEAUTOSTART:=/opt/kde3/share/autostart/
|
||||
|
||||
all: applesmc backlight
|
||||
|
||||
applesmc: applesmc.c Makefile
|
||||
gcc -DVERSION=\"$(VERSION)\" -Wall applesmc.c -o applesmc
|
||||
backlight: backlight.c Makefile
|
||||
gcc -DVERSION=\"$(VERSION)\" -Wall backlight.c -o backlight -lpci -static
|
||||
|
||||
install: backlight applesmc
|
||||
install -d $(DESTDIR)$(BINDIR) $(DESTDIR)$(INITDIR) \
|
||||
$(DESTDIR)$(SBIN) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(SYSCONFDIR)/modprobe.d \
|
||||
$(DESTDIR)$(SBIN) $(DESTDIR)$(SBINDIR) \
|
||||
$(DESTDIR)$(SYSCONFDIR)/sysconfig $(DESTDIR)$(KDEAUTOSTART)
|
||||
install -s -m 4755 applesmc $(DESTDIR)$(BINDIR)
|
||||
install -s -m 4755 backlight $(DESTDIR)$(BINDIR)
|
||||
install -m 0755 macbook-set-input $(DESTDIR)$(BINDIR)/
|
||||
install -m 0755 macbook-tools-init $(DESTDIR)$(INITDIR)/macbook-tools
|
||||
install -m 644 macbook-tools-sysconfig $(DESTDIR)$(SYSCONFDIR)/sysconfig/macbook-tools
|
||||
install -m 0755 macbook-lightd $(DESTDIR)$(SBINDIR)/
|
||||
install -m 0644 macbook-modprobe $(DESTDIR)$(SYSCONFDIR)/modprobe.d/macbook.conf
|
||||
install -m 0644 macbook_set_input.desktop $(DESTDIR)$(KDEAUTOSTART)/macbook_set_input.desktop
|
||||
|
||||
clean:
|
||||
rm -f backlight
|
||||
rm -f applesmc
|
||||
rm -f *~
|
||||
|
||||
dist: clean
|
||||
rm -rf macbook-tools-$(VERSION)
|
||||
rm -rf macbook-tools-$(VERSION).tar.bz2
|
||||
mkdir macbook-tools-$(VERSION)
|
||||
find . -maxdepth 1 -exec cp {} macbook-tools-$(VERSION) \;
|
||||
tar cvfj macbook-tools-$(VERSION).tar.bz2 macbook-tools-$(VERSION)
|
||||
rm -rf macbook-tools-$(VERSION)
|
||||
|
||||
dist-rpm: dist
|
||||
cp macbook-tools-$(VERSION).tar.bz2 $(RPMSOURCEDIR)
|
286
applesmc.c
Normal file
286
applesmc.c
Normal file
@ -0,0 +1,286 @@
|
||||
/*
|
||||
* Apple Macbook Pro SMC control
|
||||
*
|
||||
* Copyright (C) 2006 Nicolas Boichat <nicolas@boichat.ch>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/io.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#define LIGHT_SENSOR_LEFT_KEY "ALV0" //0x414c5630, r-o length 6
|
||||
#define LIGHT_SENSOR_RIGHT_KEY "ALV1" //0x414c5631, r-o length 6
|
||||
#define BACKLIGHT_KEY "LKSB" //0x4c4b5342, w-o
|
||||
#define CLAMSHELL_KEY "MSLD" //0x4d534c44, r-o length 1 (unused)
|
||||
#define MOTION_SENSOR_X_KEY "MO_X" //0x4d4f5f58, r-o length 2
|
||||
#define MOTION_SENSOR_Y_KEY "MO_Y" //0x4d4f5f58, r-o length 2
|
||||
#define MOTION_SENSOR_Z_KEY "MO_Z" //0x4d4f5f58, r-o length 2
|
||||
#define MOTION_SENSOR_KEY "MOCN" //0x4d4f434e, r/w length 2
|
||||
|
||||
|
||||
static int debug = 0;
|
||||
|
||||
static struct timeval lasttv;
|
||||
static struct timeval newtv;
|
||||
|
||||
void inline ssleep(const int usec) {
|
||||
gettimeofday(&lasttv, NULL);
|
||||
while (1) {
|
||||
gettimeofday(&newtv, NULL);
|
||||
if (((newtv.tv_usec - lasttv.tv_usec) + ((newtv.tv_sec - lasttv.tv_sec)*1000000)) > usec) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unsigned char get_status() {
|
||||
return inb(0x304);
|
||||
}
|
||||
|
||||
int waitfree(char num) {
|
||||
char c, pc = -1;
|
||||
int retry = 100;
|
||||
while (((c = get_status())&0x0F) != num && retry) {
|
||||
ssleep(10);
|
||||
retry--;
|
||||
if (pc != c) {
|
||||
//printf("%x-%d:", c, retry);
|
||||
pc = c;
|
||||
}
|
||||
}
|
||||
if (retry == 0) {
|
||||
printf("Waitfree failed %x != %x.\n", c, num);
|
||||
return 0;
|
||||
}
|
||||
/*else
|
||||
printf("Waitfree ok %x.\n", c);*/
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int writekey(char* key, char len, unsigned char* buffer) {
|
||||
int i;
|
||||
|
||||
outb(0x11, 0x304);
|
||||
if (!waitfree(0x0c)) return 0;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
outb(key[i], 0x300);
|
||||
if (!waitfree(0x04)) return 0;
|
||||
}
|
||||
if (debug) printf(">%s", key);
|
||||
|
||||
outb(len, 0x300);
|
||||
if (debug) printf(">%x", len);
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
if (!waitfree(0x04)) return 0;
|
||||
outb(buffer[i], 0x300);
|
||||
if (debug) printf(">%x", buffer[i]);
|
||||
}
|
||||
if (debug) printf("\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
int readkey(char* key, char len, unsigned char* buffer) {
|
||||
int i; unsigned char c;
|
||||
|
||||
outb(0x10, 0x304);
|
||||
if (!waitfree(0x0c)) return 0;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
outb(key[i], 0x300);
|
||||
if (!waitfree(0x04)) return 0;
|
||||
}
|
||||
if (debug) printf("<%s", key);
|
||||
|
||||
outb(len, 0x300);
|
||||
if (debug) printf(">%x", len);
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
if (!waitfree(0x05)) return 0;
|
||||
c = inb(0x300);
|
||||
buffer[i] = c;
|
||||
if (debug) printf("<%x", c);
|
||||
}
|
||||
if (debug) printf("\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
int read_light_sensor(int left) {
|
||||
unsigned char buffer[6];
|
||||
if (readkey(left ? LIGHT_SENSOR_LEFT_KEY : LIGHT_SENSOR_RIGHT_KEY, 6, buffer))
|
||||
return buffer[2];
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
int set_keyboard_backlight(char value) {
|
||||
unsigned char buffer[2];
|
||||
buffer[0] = value;
|
||||
buffer[1] = 0x00;
|
||||
return writekey(BACKLIGHT_KEY, 2, buffer);
|
||||
}
|
||||
|
||||
int init_motion_sensor() {
|
||||
unsigned char buffer[2];
|
||||
int retry = 50;
|
||||
int ret;
|
||||
|
||||
while (retry) {
|
||||
ret = readkey(MOTION_SENSOR_KEY, 2, buffer);
|
||||
if (ret) {
|
||||
if (buffer[0] || buffer[1]) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
usleep(100000);
|
||||
retry--;
|
||||
continue;
|
||||
}
|
||||
buffer[0] = 0xe0;
|
||||
buffer[1] = 0;
|
||||
writekey(MOTION_SENSOR_KEY, 2, buffer);
|
||||
retry--;
|
||||
usleep(100000);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int read_motion_sensor(int index) {
|
||||
unsigned char buffer[2];
|
||||
int ret;
|
||||
|
||||
switch (index) {
|
||||
case 0:
|
||||
ret = readkey(MOTION_SENSOR_X_KEY, 2, buffer);
|
||||
break;
|
||||
case 1:
|
||||
ret = readkey(MOTION_SENSOR_Y_KEY, 2, buffer);
|
||||
break;
|
||||
case 2:
|
||||
ret = readkey(MOTION_SENSOR_Z_KEY, 2, buffer);
|
||||
break;
|
||||
}
|
||||
//printf("%d %x %x\n", index, buffer[0], buffer[1]);
|
||||
if (ret) {
|
||||
return (short)(buffer[0] << 8 | buffer[1]);
|
||||
}
|
||||
else {
|
||||
return 0x0FFFFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
/* Brute-force device probing... */
|
||||
void probe() {
|
||||
char key[5];
|
||||
char chars[37];
|
||||
unsigned char buffer[2];
|
||||
int i, j, k, l;
|
||||
|
||||
for (i = 0; i < 26; i++) {
|
||||
chars[i] = 'A'+i;
|
||||
}
|
||||
for (i = 0; i < 10; i++) {
|
||||
chars[i+26] = '0'+i;
|
||||
}
|
||||
chars[36] = '_';
|
||||
|
||||
key[4] = 0;
|
||||
for (i = 0; i < 37; i++) {
|
||||
key[0] = chars[i];
|
||||
for (j = 0; j < 37; j++) {
|
||||
key[1] = chars[j];
|
||||
for (k = 0; k < 37; k++) {
|
||||
key[2] = chars[k];
|
||||
for (l = 0; l < 37; l++) {
|
||||
key[3] = chars[l];
|
||||
printf("key=%s\n", key);
|
||||
readkey(key, 2, buffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void usage(char* argv0) {
|
||||
printf("Apple Macbook (pro) SMC control " VERSION);
|
||||
printf("\n");
|
||||
printf("Usage:\n");
|
||||
printf("%s [-d]: read light/motion sensors values\n", argv0);
|
||||
printf("%s [-d] value: write keyboard backlight value [0-255]\n", argv0);
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
int argi = 1;
|
||||
if (argc > 3) {
|
||||
usage(argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (ioperm(0x300, 0x304, 1) < 0) {
|
||||
perror("ioperm failed (you should be root).");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if ((argc > 1) && !strcmp(argv[1], "-d")) {
|
||||
debug = 1;
|
||||
argi = 2;
|
||||
}
|
||||
|
||||
if (argc-argi == 1) {
|
||||
char* endptr;
|
||||
long value = strtol(argv[argi], &endptr, 10);
|
||||
if ((value < 0) || (value > 255) || (endptr[0])) {
|
||||
printf("Invalid value \"%s\" (should be an integer between 0 and 255).\n", argv[1]);
|
||||
usage(argv[0]);
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
set_keyboard_backlight(value);
|
||||
}
|
||||
}
|
||||
else {
|
||||
init_motion_sensor();
|
||||
printf("Light: Left: %d, Right: %d\n", read_light_sensor(1), read_light_sensor(0));
|
||||
printf("Motion: X: %d, Y: %d, Z: %d\n", read_motion_sensor(0), read_motion_sensor(1), read_motion_sensor(2));
|
||||
/*while (1) {
|
||||
printf("Motion: X: %d, Y: %d, Z: %d\n", read_motion_sensor(0), read_motion_sensor(1), read_motion_sensor(2));
|
||||
sleep(1);
|
||||
}
|
||||
int x, y, z, ox, oy, oz;
|
||||
ox = read_motion_sensor(0);
|
||||
oy = read_motion_sensor(1);
|
||||
oz = read_motion_sensor(2);
|
||||
while (1) {
|
||||
x = read_motion_sensor(0);
|
||||
y = read_motion_sensor(1);
|
||||
z = read_motion_sensor(2);
|
||||
if ((x-ox)*(x-ox)+(y-oy)*(y-oy)+(z-oz)*(z-oz) > 50)
|
||||
printf("Accel: X: %d, Y: %d, Z: %d (%d %d)\n", x-ox, y-oy, z-oz, z, oz);
|
||||
usleep(1000000);
|
||||
ox = x; oy = y; oz = z;
|
||||
}*/
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
194
backlight.c
Normal file
194
backlight.c
Normal file
@ -0,0 +1,194 @@
|
||||
/*
|
||||
* Apple Macbook Pro LCD backlight control
|
||||
*
|
||||
* Copyright (C) 2006 Nicolas Boichat <nicolas@boichat.ch>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/io.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <pci/pci.h>
|
||||
|
||||
char* memory;
|
||||
|
||||
static inline unsigned int readl(const volatile void *addr)
|
||||
{
|
||||
return *(volatile unsigned int*) addr;
|
||||
}
|
||||
|
||||
static inline void writel(unsigned int b, volatile void *addr)
|
||||
{
|
||||
*(volatile unsigned int*) addr = b;
|
||||
}
|
||||
|
||||
#define INREG(addr) readl(memory+addr)
|
||||
#define OUTREG(addr,val) writel(val, memory+addr)
|
||||
|
||||
unsigned char read_backlight() {
|
||||
return INREG(0x7af8) >> 8;
|
||||
}
|
||||
|
||||
void write_backlight_value(unsigned char value) {
|
||||
OUTREG(0x7af8, 0x00000001 | ((unsigned int)value << 8));
|
||||
}
|
||||
|
||||
void write_backlight(unsigned char value) {
|
||||
unsigned int current = read_backlight();
|
||||
|
||||
if (current < value) {
|
||||
while (current < value) {
|
||||
current += 5;
|
||||
if (current > value)
|
||||
current = value;
|
||||
write_backlight_value((unsigned char)current);
|
||||
usleep(50000);
|
||||
}
|
||||
}
|
||||
else {
|
||||
while (current > value) {
|
||||
current -= 5;
|
||||
if (current < value)
|
||||
current = value;
|
||||
write_backlight_value((unsigned char)current);
|
||||
usleep(50000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void usage(char* argv0) {
|
||||
printf("Apple Macbook (pro) backlight control " VERSION);
|
||||
printf("\n");
|
||||
printf("Usage:\n");
|
||||
printf("%s: read current value\n", argv0);
|
||||
printf("%s value: write value [0-255]\n", argv0);
|
||||
printf("%s +n: increase value by n\n", argv0);
|
||||
printf("%s -n: decrease value by n\n", argv0);
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
if (argc > 2) {
|
||||
usage(argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
char* endptr;
|
||||
int ret = 0;
|
||||
long address = 0;
|
||||
long length = 0;
|
||||
int fd;
|
||||
int state;
|
||||
|
||||
/* Search for the graphics card. */
|
||||
/* Default values: */
|
||||
/* address = 0x90300000; */
|
||||
/* length = 0x20000; */
|
||||
|
||||
struct pci_access *pacc = pci_alloc();
|
||||
pci_init(pacc);
|
||||
pci_scan_bus(pacc);
|
||||
struct pci_dev *dev;
|
||||
for(dev=pacc->devices; dev; dev=dev->next) { /* Iterate over all devices */
|
||||
pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_BASES);
|
||||
if ((dev->vendor_id == 0x1002) && (dev->device_id == 0x71c5)) { // ATI X1600
|
||||
address = dev->base_addr[2];
|
||||
length = dev->size[2];
|
||||
}
|
||||
}
|
||||
pci_cleanup(pacc);
|
||||
|
||||
if (!address) {
|
||||
printf("Failed to detect ATI X1600, aborting...\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
fd = open("/dev/mem", O_RDWR);
|
||||
|
||||
if (fd < 0) {
|
||||
perror("cannot open /dev/mem");
|
||||
return 1;
|
||||
}
|
||||
|
||||
memory = mmap(NULL, length, PROT_READ|PROT_WRITE, MAP_SHARED, fd, address);
|
||||
|
||||
if (memory == MAP_FAILED) {
|
||||
perror("mmap failed");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Is it really necessary ? */
|
||||
OUTREG(0x4dc, 0x00000005);
|
||||
state = INREG(0x7ae4);
|
||||
OUTREG(0x7ae4, state);
|
||||
|
||||
if (argc == 2) {
|
||||
if (argv[1][0] == '+') {
|
||||
long value = strtol(&argv[1][1], &endptr, 10);
|
||||
if ((value < 0) || (value > 255) || (endptr[0])) {
|
||||
printf("Invalid value \"%s\" (should be an integer between 0 and 255).\n", &argv[1][1]);
|
||||
usage(argv[0]);
|
||||
ret = 1;
|
||||
}
|
||||
else {
|
||||
value = read_backlight()+value;
|
||||
if (value > 255)
|
||||
value = 255;
|
||||
write_backlight(value);
|
||||
}
|
||||
}
|
||||
else if (argv[1][0] == '-') {
|
||||
long value = strtol(&argv[1][1], &endptr, 10);
|
||||
if ((value < 0) || (value > 255) || (endptr[0])) {
|
||||
printf("Invalid value \"%s\" (should be an integer between 0 and 255).\n", &argv[1][1]);
|
||||
usage(argv[0]);
|
||||
ret = 1;
|
||||
}
|
||||
else {
|
||||
value = read_backlight()-value;
|
||||
if (value < 0)
|
||||
value = 0;
|
||||
write_backlight(value);
|
||||
}
|
||||
}
|
||||
else {
|
||||
long value = strtol(argv[1], &endptr, 10);
|
||||
if ((value < 0) || (value > 255) || (endptr[0])) {
|
||||
printf("Invalid value \"%s\" (should be an integer between 0 and 255).\n", argv[1]);
|
||||
usage(argv[0]);
|
||||
ret = 1;
|
||||
}
|
||||
else {
|
||||
write_backlight(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
printf("%d\n", read_backlight());
|
||||
}
|
||||
|
||||
munmap(memory, length);
|
||||
close(fd);
|
||||
|
||||
return ret;
|
||||
}
|
54
keyboard_brigthness
Executable file
54
keyboard_brigthness
Executable file
@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
|
||||
# set the keyboard brigthness on a Apple MacBook computer
|
||||
# Copyright (C) 2006 Ludovic Rousseau <ludovic.rousseau@free.fr>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
#set -v
|
||||
#set -x
|
||||
BRIGHTNESS=/sys/class/leds/smc\:kbd_backlight/brightness
|
||||
value=$(cat $BRIGHTNESS)
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo $value
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$1" = "-h" ]; then
|
||||
echo "Usage: $0 [-h|arg|+arg|-arg]"
|
||||
echo
|
||||
echo "Change the keyboard brigthness to:"
|
||||
echo " arg"
|
||||
echo " or current value + arg"
|
||||
echo " or current value - arg"
|
||||
echo
|
||||
echo "Without argument it return the current value"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ $(expr match "$1" "[+-]") = "1" ]; then
|
||||
value=$((value$1))
|
||||
else
|
||||
value=$1
|
||||
fi
|
||||
|
||||
if [ $value -lt 0 ]; then
|
||||
value=0
|
||||
fi
|
||||
|
||||
echo $value > $BRIGHTNESS
|
||||
cat $BRIGHTNESS
|
||||
|
40
lircd.conf-apple
Normal file
40
lircd.conf-apple
Normal file
@ -0,0 +1,40 @@
|
||||
|
||||
# Please make this file available to others
|
||||
# by sending it to <lirc@bartelmus.de>
|
||||
#
|
||||
# this config file was automatically generated
|
||||
# using lirc-0.8.0(devinput) on Fri Aug 25 23:48:04 2006
|
||||
#
|
||||
# contributed by
|
||||
#
|
||||
# brand: lircd.conf
|
||||
# model no. of remote control:
|
||||
# devices being controlled by this remote:
|
||||
#
|
||||
|
||||
begin remote
|
||||
|
||||
name apple-frontrow
|
||||
bits 8
|
||||
eps 30
|
||||
aeps 100
|
||||
|
||||
one 0 0
|
||||
zero 0 0
|
||||
pre_data_bits 24
|
||||
pre_data 0x800100
|
||||
gap 135862
|
||||
toggle_bit 0
|
||||
|
||||
|
||||
begin codes
|
||||
menu 0x8B
|
||||
plus 0x73
|
||||
minus 0x72
|
||||
back 0xA5
|
||||
forward 0xA3
|
||||
play 0xA4
|
||||
end codes
|
||||
|
||||
end remote
|
||||
|
54
macbook-led.sh
Executable file
54
macbook-led.sh
Executable file
@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
|
||||
VERSION=01
|
||||
|
||||
if [ "$1" == "--help" ]; then
|
||||
echo "
|
||||
MacBook LED indicator (v$VERSION) Jason Parekh <jasonparekh@gmail.com>
|
||||
Put that SPDIF-out to use! http://jasonparekh.com/linux-on-macbook
|
||||
|
||||
Usage: $0 <type> [dev]
|
||||
|
||||
type Choose between 'disk' (default) or 'net' indicator
|
||||
dev Use the 'dev' device (eg: 'sda1' or even just 'sda' for all partitions)
|
||||
|
||||
Examples:
|
||||
$0 Monitors all block devices activity (disk and CD/DVD drives)
|
||||
$0 disk sda Monitors all disk drives activity
|
||||
$0 net eth0 Monitors LAN activity
|
||||
$0 net Monitors all network activity (WARNING: wlan0 will pickup ANY wifi activity)
|
||||
$0 net ath0 Monitors wireless activity
|
||||
"
|
||||
exit
|
||||
fi
|
||||
|
||||
STATS_FILE="/proc/diskstats"
|
||||
|
||||
if [ "$1" == "net" ]; then
|
||||
STATS_FILE="/proc/net/dev"
|
||||
fi
|
||||
|
||||
STATS_CMD="cat $STATS_FILE"
|
||||
if [ "$2" != "" ]; then
|
||||
STATS_CMD="grep $2 $STATS_FILE"
|
||||
fi
|
||||
|
||||
renice 19 -p $$ >/dev/null 2>&1
|
||||
|
||||
while [ 1 ]; do
|
||||
CUR_STATS=`$STATS_CMD`
|
||||
if [ "$CUR_STATS" != "$LAST_STATS" ]; then
|
||||
if [ "$LAST_OP" != "ACTIVE" ]; then
|
||||
amixer set IEC958 on >/dev/null 2>&1
|
||||
fi
|
||||
LAST_OP="ACTIVE"
|
||||
else
|
||||
if [ "$LAST_OP" != "IDLE" ]; then
|
||||
amixer set IEC958 off >/dev/null 2>&1
|
||||
fi
|
||||
LAST_OP="IDLE"
|
||||
fi
|
||||
LAST_STATS="$CUR_STATS"
|
||||
sleep 0.2
|
||||
done
|
||||
|
41
macbook-lightd
Executable file
41
macbook-lightd
Executable file
@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# applesmc keyboard backlight sample test daemon
|
||||
# by Silvan Calarco <silvan.calarco@mambasoft.it>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License v2 as published by the
|
||||
# Free Software Foundation.
|
||||
#
|
||||
SENSIBILITY=25
|
||||
TIMEWAIT=2
|
||||
BLINDOFF=50
|
||||
BLINDON=100
|
||||
SENSOR_FILE=/sys/devices/platform/applesmc.768/light
|
||||
|
||||
[ -e $SENSOR_FILE ] || exit 1
|
||||
|
||||
while [ "1" ]; do
|
||||
eval `cat $SENSOR_FILE|sed "s|(\(.*\),\(.*\))|LIGHTL=\1 LIGHTR=\2|"` >/dev/null
|
||||
if [ "$LIGHTR" ]; then
|
||||
if [ $LIGHTL -gt $LIGHTR ]; then
|
||||
LIGHTM=$LIGHTL
|
||||
else
|
||||
LIGHTM=$LIGHTR
|
||||
fi
|
||||
# LIGHTM=`expr \( $LIGHTL + $LIGHTR \) / 2`
|
||||
BACKLIGHT=`expr 255 - $LIGHTM \* $SENSIBILITY`
|
||||
if [ $BACKLIGHT -lt $BLINDOFF ]; then
|
||||
BACKLIGHT=0
|
||||
elif [ $BACKLIGHT -lt $BLINDON ]; then
|
||||
BACKLIGHT=`expr $BACKLIGHT + 50`
|
||||
else
|
||||
[ $BACKLIGHT -gt 255 ] && BACKLIGHT=255
|
||||
fi
|
||||
echo "LightM=$LIGHTM Backlight=$BACKLIGHT "
|
||||
applesmc $BACKLIGHT
|
||||
# echo $BACKLIGHT > /sys/devices/platform/applesmc.768/keyboard_backlight
|
||||
# CURRBACKLIGHT=$BACKLIGHT
|
||||
sleep $TIMEWAIT
|
||||
fi
|
||||
done
|
1
macbook-modprobe
Normal file
1
macbook-modprobe
Normal file
@ -0,0 +1 @@
|
||||
options hid_apple fnmode=2
|
12
macbook-set-input
Executable file
12
macbook-set-input
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Start commands for keyboard mapping and commands inside an X session
|
||||
# Copyright (c) 2007-2008 by Silvan Calarco <silvan.calarco@mambasoft.it>
|
||||
# Released under the terms of the GNU GPL License version 3
|
||||
#
|
||||
|
||||
# Check for an Apple chassis or exit
|
||||
|
||||
[[ `hal-get-property --udi /org/freedesktop/Hal/devices/computer --key system.chassis.manufacturer 2>/dev/null | grep Apple 2>/dev/null` ]] && {
|
||||
xkbset m
|
||||
}
|
84
macbook-tools-init
Executable file
84
macbook-tools-init
Executable file
@ -0,0 +1,84 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Macbook tools initscript
|
||||
# Copyright (c) 2006-2009 by Silvan Calarco <silvan.calarco@mambasoft.it>
|
||||
# Released under the GPL v.2 license
|
||||
#
|
||||
# /etc/rc.d/init.d/macbook-tools
|
||||
#
|
||||
# chkconfig: 345 42 58
|
||||
# description: set screen backlight level and load iSight firmware on Apple MacBooks
|
||||
# processname: macbook-tools
|
||||
|
||||
# Source function library.
|
||||
. /etc/rc.d/init.d/functions
|
||||
|
||||
[ -e /etc/sysconfig/machine ] && . /etc/sysconfig/machine
|
||||
|
||||
# Check for Apple manufacturer or exit
|
||||
[ "${SYSTEM_MANUFACTURER:0:5}" = "Apple" ] || {
|
||||
sed -i "s|KEYMAP=it-macbook|KEYMAP=it|" /etc/vconsole.conf
|
||||
exit 0
|
||||
}
|
||||
|
||||
[ -f /etc/sysconfig/macbook-tools ] && . /etc/sysconfig/macbook-tools
|
||||
|
||||
sed -i "s|KEYMAP=it$|KEYMAP=it-macbook|" /etc/vconsole.conf
|
||||
|
||||
[ "$BACKLIGHT_LEVEL" ] || BACKLIGHT_LEVEL=190
|
||||
|
||||
RETVAL=0
|
||||
|
||||
#
|
||||
# See how we were called.
|
||||
#
|
||||
|
||||
start() {
|
||||
[ -e /sys/devices/platform/applesmc.768 ] || modprobe applesmc
|
||||
|
||||
if [ "$IR_EVENT_DEVICE" ]; then
|
||||
echo -n "Starting lircd for Apple IR remote: "
|
||||
lircd -H macmini /etc/lirc/apple/lircd.conf.macmini
|
||||
evaluate_retval
|
||||
echo
|
||||
fi
|
||||
|
||||
#echo -n "Setting middle and right click mouse emulation: "
|
||||
#echo 1 > /proc/sys/dev/mac_hid/mouse_button_emulation
|
||||
#echo 125 > /proc/sys/dev/mac_hid/mouse_button2_keycode
|
||||
#echo 96 > /proc/sys/dev/mac_hid/mouse_button3_keycode
|
||||
#evaluate_retval
|
||||
#echo
|
||||
|
||||
echo -n "Loading MacBook light sensor control daemon: "
|
||||
macbook-lightd &>/dev/null &
|
||||
evaluate_retval
|
||||
echo
|
||||
}
|
||||
|
||||
stop() {
|
||||
echo -n "Stopping MacBook light sensor control daemon: "
|
||||
killall -9 macbook-lightd
|
||||
evaluate_retval
|
||||
echo
|
||||
}
|
||||
|
||||
restart() {
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
restart)
|
||||
restart
|
||||
;;
|
||||
*)
|
||||
INITNAME=`basename $0`
|
||||
echo "Usage: $INITNAME {start|restart}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit $RETVAL
|
2
macbook-tools-sysconfig
Normal file
2
macbook-tools-sysconfig
Normal file
@ -0,0 +1,2 @@
|
||||
ISIGHT_FIRMWARE_FILE=/mnt/osx/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport
|
||||
IR_EVENT_DEVICE=/dev/appleir
|
7
macbook_set_input.desktop
Normal file
7
macbook_set_input.desktop
Normal file
@ -0,0 +1,7 @@
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
X-KDE-autostart-phase=1
|
||||
Type=Application
|
||||
Exec=macbook-set-input
|
||||
OnlyShowIn=KDE;
|
||||
Name=Set MacBook input devices
|
Loading…
Reference in New Issue
Block a user