From pbrochard at common-lisp.net Sat Mar 1 12:37:11 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sat, 1 Mar 2008 07:37:11 -0500 (EST) Subject: [clfswm-cvs] r1 - CVS Message-ID: <20080301123711.4BDD428274@common-lisp.net> Author: pbrochard Date: Sat Mar 1 07:36:13 2008 New Revision: 1 Added: AUTHORS COPYING CVS/ CVS/Entries CVS/Repository CVS/Root CVS/Template ChangeLog README TAGS asdf.lisp bindings-pager.lisp bindings-second-mode.fas bindings-second-mode.fasl (contents, props changed) bindings-second-mode.lib bindings-second-mode.lisp bindings-second-mode.lisp.bak bindings.fas bindings.fasl (contents, props changed) bindings.lib bindings.lisp check-diff.sh (contents, props changed) clfswm-info.fas clfswm-info.fasl (contents, props changed) clfswm-info.lib clfswm-info.lisp clfswm-internal.fas clfswm-internal.fasl (contents, props changed) clfswm-internal.lib clfswm-internal.lisp clfswm-internal.lisp.bak clfswm-keys.fas clfswm-keys.fasl (contents, props changed) clfswm-keys.lib clfswm-keys.lisp clfswm-layout.fas clfswm-layout.fasl (contents, props changed) clfswm-layout.lib clfswm-layout.lisp clfswm-pack.lisp clfswm-second-mode.fas clfswm-second-mode.fasl (contents, props changed) clfswm-second-mode.lib clfswm-second-mode.lisp clfswm-util.fas clfswm-util.fasl (contents, props changed) clfswm-util.lib clfswm-util.lisp clfswm.asd clfswm.fas clfswm.fasl (contents, props changed) clfswm.lib clfswm.lisp clisp-load.lisp config.fas config.fasl (contents, props changed) config.lib config.lisp dot-clfswmrc keys.html keys.txt keysyms.fas keysyms.fasl (contents, props changed) keysyms.lib keysyms.lisp load.lisp my-html.fas my-html.fasl (contents, props changed) my-html.lib my-html.lisp netwm-util.fas netwm-util.fasl (contents, props changed) netwm-util.lib netwm-util.lisp package.fas package.fasl (contents, props changed) package.lib package.lisp program sbcl-load.lisp tools.fas tools.fasl (contents, props changed) tools.lib tools.lisp xlib-util.fas xlib-util.fasl (contents, props changed) xlib-util.lib xlib-util.lisp Log: First release Added: AUTHORS ============================================================================== --- (empty file) +++ AUTHORS Sat Mar 1 07:36:13 2008 @@ -0,0 +1,14 @@ +CLFSWM - A(nother) Common Lisp FullScreen Window Manager +--------------------------------------------------------- + +Philippe Brochard hocwp at free dot fr + + +----------------------------------- + +Some of the CLFSWM code is based on + +tinywm: http://incise.org/index.cgi/TinyWM + +And on the excellent Shawn Betts (sabetts at vcn bc ca) +Stumpwm: http://www.nongnu.org/stumpwm/ Added: COPYING ============================================================================== --- (empty file) +++ COPYING Sat Mar 1 07:36:13 2008 @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + 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 +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program 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, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU 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 Lesser General +Public License instead of this License. But first, please read +. Added: CVS/Entries ============================================================================== --- (empty file) +++ CVS/Entries Sat Mar 1 07:36:13 2008 @@ -0,0 +1,29 @@ +/AUTHORS/1.1/Tue May 15 19:49:49 2007// +/asdf.lisp/1.1/Tue May 15 19:49:49 2007// +/COPYING/1.2/Fri Dec 21 21:57:41 2007// +/my-html.lisp/1.3/Fri Dec 21 22:00:35 2007// +/README/1.3/Thu Jan 3 20:29:05 2008// +/keys.html/1.4/Sat Jan 5 00:14:15 2008// +/keys.txt/1.4/Sat Jan 5 00:14:15 2008// +/dot-clfswmrc/1.8/Sat Jan 5 16:21:36 2008// +/bindings-pager.lisp/1.9/Sun Feb 24 20:47:34 2008// +/bindings.lisp/1.7/Sun Feb 24 20:47:34 2008// +/clfswm-info.lisp/1.5/Sun Feb 24 20:47:34 2008// +/clfswm-keys.lisp/1.6/Sun Feb 24 20:47:34 2008// +/clfswm-pack.lisp/1.5/Sun Feb 24 20:47:34 2008// +/clfswm-second-mode.lisp/1.11/Sun Feb 24 20:47:34 2008// +/clfswm.asd/1.7/Sun Feb 24 20:47:34 2008// +/keysyms.lisp/1.2/Sun Feb 24 20:47:34 2008// +/netwm-util.lisp/1.4/Sun Feb 24 20:47:34 2008// +/package.lisp/1.11/Mon Feb 25 20:33:22 2008// +/tools.lisp/1.7/Tue Feb 26 20:53:55 2008// +/load.lisp/1.8/Tue Feb 26 22:00:22 2008// +/ChangeLog/1.17/Wed Feb 27 22:32:23 2008// +/clfswm-layout.lisp/1.2/Wed Feb 27 21:19:57 2008// +/config.lisp/1.9/Wed Feb 27 21:15:01 2008// +/bindings-second-mode.lisp/1.16/Thu Feb 28 20:38:00 2008// +/clfswm-internal.lisp/1.18/Fri Feb 29 23:03:14 2008// +/clfswm-util.lisp/1.15/Fri Feb 29 23:03:08 2008// +/clfswm.lisp/1.16/Fri Feb 29 23:03:00 2008// +/xlib-util.lisp/1.7/Thu Feb 28 20:55:00 2008// +D Added: CVS/Repository ============================================================================== --- (empty file) +++ CVS/Repository Sat Mar 1 07:36:13 2008 @@ -0,0 +1 @@ +clfswm Added: CVS/Root ============================================================================== --- (empty file) +++ CVS/Root Sat Mar 1 07:36:13 2008 @@ -0,0 +1 @@ +:ext:pbrochard at common-lisp.net:/project/clfswm/cvsroot Added: CVS/Template ============================================================================== Added: ChangeLog ============================================================================== --- (empty file) +++ ChangeLog Sat Mar 1 07:36:13 2008 @@ -0,0 +1,427 @@ +2008-02-27 Philippe Brochard + + * clfswm-layout.lisp (*-layout): Add an optional raise-p + parameter in each layout. + +2008-02-26 Philippe Brochard + + * clfswm-util.lisp (copy/cut-current-child): Does not affect the + root group. + (copy/move-current-child-by-name/number): new functions + (focus-group-by-name/number): new functions + (delete-group-by-name/number): new functions + +2008-02-24 Philippe Brochard + + * *: Major update - No more reference to workspaces. The main + structure is a tree of groups or application windows. + +2008-02-07 Philippe Brochard + + * clfswm.lisp (read-conf-file): Read configuration in + $HOME/.clfswmrc or in /etc/clfswmrc or in + $XDG_CONFIG_HOME/clfswm/clfswmrc. + (xdg-config-home): Return the content of $XDG-CONFIG-HOME (default + to $HOME/.config/). + +2008-01-18 Philippe Brochard + + * clfswm-internal.lisp (show-all-group): Use *root* and *root-gc* + by default. + +2008-01-03 Philippe Brochard + + * clfswm-internal.lisp (find-window-group): New function. + + * clfswm*: Change to make clfswm run with clisp/new-clx. + +2008-01-01 Philippe Brochard + + * clfswm-util.lisp (query-show-paren): Add show parent matching in + query string. + (query-string): Bind control+k to delete end of line. + + * clfswm-second-mode.lisp (draw-second-mode-window): Display + the action on mouse motion in second mode. + + * clfswm.lisp (handle-exposure): Redisplay groups on exposure + event but do not clear the root window. + (handle-configure-request): Adjust unmanaged window from there + request. + + * clfswm-internal.lisp (process-new-window): Adjust new window + with the specified hints (max/min/base width/height). + +2007-12-31 Philippe Brochard + + * clfswm.lisp (handle-configure-request): Send an Configuration + Notify event. This solve a bug with xterm and rxvt who takes some + times to be mapped. Now there is no delay. + + * bindings-second-mode.lisp (define-shell): Run programs after + living the second mode. + +2007-12-30 Philippe Brochard + + * clfswm-internal.lisp (process-new-window): Do not crop transient + window to group size. + (adapt-window-to-group): Do not crop transient window to group + size. + + * clfswm.lisp (handle-configure-request): Adapt just the window to + its group and don't take care of the configure request. Remove the + bug with the Gimp outside the group and speed up the window + manipulation. + (handle-exposure): Remove show-all-group on exposure event + -> Speed up. + +2007-12-29 Philippe Brochard + + * clfswm-util.lisp (circulate-group-up-copy-window) + (circulate-group-down-copy-window) + (circulate-workspace-up-copy-group) + (circulate-workspace-down-copy-group): Prevent the copy of the + same window in the same workspace. + + * bindings-second-mode.lisp (release-copy-selected-window) + (release-copy-selected-group): Prevent the copy of the same window + in the same workspace. + + * clfswm-pager.lisp (generic-pager-move-window-on-previous-line) + (generic-pager-move-window-on-next-line): Remove the copy + property. + (generic-pager-move-group-on-next-workspace) + (generic-pager-move-group-on-previous-workspace): Prevent the copy + of the same window in the same workspace. + + * bindings-pager.lisp (mouse-pager-copy-selected-window-release) + (mouse-pager-copy-selected-group-release): Prevent the copy of the + same window in the same workspace. + + * tools.lisp (setf/=): new macro to set a variable only when + necessary. + + * clfswm-internal.lisp (adapt-window-to-group): use set/= to set + x, y... only when necessary. + +2007-12-28 Philippe Brochard + + * clfswm.lisp (handle-configure-notify, *configure-notify-hook*): + new function and hook: force windows to stay in its group (solve a + bug with the Gimp). + +2007-12-25 Philippe Brochard + + * bindings-second-mode.lisp (mouse-motion): use hide-group to have + less flickering when moving/resizing groups. + + * clfswm-internal.lisp (hide-group): new function. + (show-all-group): clear-all: new parameter. + +2007-12-22 Philippe Brochard + + * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new + macro. + * clfswm*: Color change for the pager. Typo or better description + in bindings definitions. Define bindings for a qwerty keyboard by + default. dot-clfswmrc show examples to switch to an azerty + keyboard. + License change to GPL v3. + * config.lisp: new file - group all globals variables in this + file. + +2007-08-26 Philippe Brochard + + * xlib-util.lisp (hide-window): Remove structure-notivy events + when hidding a window. + +2007-05-16 Philippe Brochard + + * package.lisp (*sm-property-notify-hook*): Readded + property-notify-hook in second mode. + +2007-05-15 Philippe Brochard + + * clfswm-keys.lisp (produce-doc-html): Better clean up for strings. + +2007-05-13 Philippe Brochard + + * clfswm-pack.lisp (tile-current-workspace-to/right/left/top/bottom): + Tile the current workspace with the current window on one side and + others on the other (this emulate the larswm, dwm, wmii way). See + the default configuration file to enable this mode by default. + + * clfswm-pager.lisp (pager-tile-current-workspace-to): idem for + the pager. + +2007-05-12 Philippe Brochard + + * clfswm-pager.lisp (pager-draw-window-in-group): Add + ensure-printable to print windows name even with non-ascii + characters. + +2007-05-11 Philippe Brochard + + * clfswm-pager.lisp (pager-explode-current-group): Create a new + group for each window in group. + (pager-implode-current-group): Move all windows in workspace to + one group and remove other groups. + + * clfswm-pack.lisp (explode-group): Create a new group for each + window in group. + (implode-group): Move all windows in workspace to one group and + remove other groups. + + * clfswm-util.lisp (identify-key): Remove local configuration + variables and made them available for configuration from + package.lisp. + (query-string): idem. + +2007-04-29 Philippe Brochard + + * netwm-util.lisp: Start of NetWM compliance. + Add a Netwm client list gestion. + +2007-04-28 Philippe Brochard + + * clfswm-internal.lisp (create-group-on-request): open a new group + only when the current group is not empty. + + * bindings-second-mode.lisp (define-second-key-#\o-control): Fix a + bug with null workspace. + + * clfswm-pager.lisp (pager-handle-event): Add a hook + system. This hooks can be changed in the user configuration file. + + * package.lisp: All colors and font variables are set in + package.lisp and can be configured in the user configuration + file. + Note: If you have configured some less ugly colors (esp. for the + pager) don't hesitate to let me know :) + + * clfswm-second-mode.lisp (sm-handle-event): Add a hook + system. This hooks can be changed in the user configuration file. + + * clfswm.lisp (handle-event): Add a hook system. This hooks can be + changed in the user configuration file (~/.clfswmrc) + +2007-04-25 Philippe Brochard + + * clfswm-util.lisp (stop-all-pending-actions): new function: reset + arrow action, open next window in new workspace/group. + + * bindings.lisp (stop-all-pending-actions): new binding. + (open-next-window-in-new-group-once): Open the next windows in a + new group (only once) or open all new windows in a new group (like + others windows managers). + +2007-04-22 Philippe Brochard + + * clfswm.lisp (read-conf-file): New function to read a lisp + configuration file at startup. + (focus-group-under-mouse): Check if group isn't the current group + ( prevent a bug with unclutter ). + +2007-03-02 Philippe Brochard + + * bindings.lisp (run-program-from-query-string): A program can be + launch from a input query window. + +2007-03-01 Philippe Brochard + + * clfswm-info.lisp: Fix a bug with banish pointer in info mode. + +2007-02-28 Philippe Brochard + + * clfswm.lisp (process-new-window): One can now open the next + window in a workspace called by its number. + + * clfswm-util.lisp (query-font-string): Minimal editing + capabilities. + (eval-from-string): And an REPL in the window manager... :) + +2007-02-26 Philippe Brochard + + * clfswm.lisp (process-new-window): One can now open the next + window in a new workspace or a new group. + + * clfswm-pager.lisp (pager-mode): Display the next arrow action + with the hidden windows. + + * clfswm.lisp (second-key-mode): Display the current workspace + number and the next arrow action in the state window. + + * clfswm-pager.lisp (pager-mode): Hide all windows before leaving + the pager mode and then redisplay only the current workspace. + +2007-02-25 Philippe Brochard + + * clfswm.lisp (add-workspace): Workspaces are now numbered. So + they can be focused with a keypress, sorted or renumbered. + +2007-02-24 Philippe Brochard + + * clfswm-pager.lisp (pager-mode): Remove multiple silly + pager-draw-display. This prevent a lot of flickering in the + pager. + + * clfswm.lisp: Remove all display-force-output and replace them + with only one display-finish-output in the event loop. + +2006-11-06 Philippe Brochard + + * clfswm-pager.lisp (pager-center-group): New function - center a + group at the middle of the screen. + + * clfswm-pack.lisp (center-group): New function - center a group + at the middle of the screen. + + * clfswm.lisp (show-group): Add a cross line under the group. + (show-group): Group are showned even if fullscreened. + (init-display): Add an exposure event on the root window. + +2006-11-05 Philippe Brochard + + * package.lisp (*default-group*): Default group is the same size + of a fullscreened group. + + * bindings*: Use shift to move, control+shift to copy. + + * *.lisp: Add comments for configuration or alternatives. So grep + for CONFIG to see where you can configure clfswm. And grep for + Alternative to use some commented code. + + * clfswm.lisp (second-key-mode): Use a single window to show the + second mode. See for alternatives at the end of this file. + +2006-11-03 Philippe Brochard + + * clfswm-keys.lisp (define-define-key/mouse): Factorisation in a + macro of key and mouse definitions. + (define-define-key/mouse): Use state instead of modifiers list + this fix a bug when the modifiers list is not in the rigth order. + + * clfswm.lisp (second-key-mode): Add a colored border in second mode. + +2006-11-02 Philippe Brochard + + * clfswm-info.lisp (info-mode): Add an info mode. + +2006-11-01 Philippe Brochard + + * clfswm.lisp (process-new-window): Change border size for + transient windows. + (show-all-windows-in-workspace): Unhide all windows even when the + current group is in fullscreen mode. + +2006-10-26 Philippe Brochard + + * clfswm-util.lisp (identify-key): Add an exposure handle-event to + redisplay the identify window after a terminal switch. + + * clfswm-pager.lisp (pager-mode): Add an exposure handle-event to + redisplay the pager after a terminal switch. + +2006-10-24 Philippe Brochard + + * clfswm-util.lisp (identify-key): Add a window to display + the keys to identify on screen. + + * bindings.lisp, bindings-pager.lisp: Define same keys to + move/copy groups/windows in second mode and in pager. + + * clfswm.lisp (handle-event*): Same version in all clfswm (fix some + drawing lags). + (show-all-windows-in-workspace): unhide window before adapting it + to group. + +2006-10-23 Philippe Brochard + + * clfswm.lisp (handle-event): Revert to an older version. + +2006-10-18 Philippe Brochard + + * clfswm-util.lisp (force-window-in-group) + (force-window-center-in-group): New functions for transient windows. + + * clfswm-pager.lisp (pager-remove-current-workspace/group): + bugfix: hide all windows before removing group or workspace. + +2006-10-17 Philippe Brochard + + * bindings-pager.lisp (mouse-pager-move-selected-group) + (mouse-pager-copy-selected-group) + (mouse-pager-move-selected-window) + (mouse-pager-copy-selected-window, mouse-pager-rotate-window-up) + (mouse-pager-rotate-window-down): New functions to have mouse in + pager mode. + + * clfswm-pager.lisp (pager-swap-window) + (pager-copy-group-on-next/previous-workspace) + (pager-copy-window-on-next/previous-line): New functions + +2006-10-15 Philippe Brochard + + * clfswm-pager.lisp (pager-move-window-on-next/previous-line, + (pager-move-group-on-next/previous-workspace): new functions. + + * clfswm-pack.lisp (resize-half-x-x-current-group): resize group + to its half size (new functions). + +2006-10-11 Philippe Brochard + + * clfswm-pager.lisp: workspaces, groups and windows can now be + selectionned with the keyboard or the mouse. + +2006-10-09 Philippe Brochard + + * clfswm-pager.lisp (pager-select-workspace-right/left): + workspaces can now be selectionned with the keyboard. + +2006-10-08 Philippe Brochard + + * clfswm-keys.lisp (undefine-main-key, undefine-second-key, undefine-mouse-action): + new function to remove a previous defined key or mouse combination. + +2006-10-07 Philippe Brochard + + * clfswm.lisp (main): Check for access error in init-display. + + * clfswm-keys.lisp (define-ungrab/grab): check for keysym and + keycode before grabbing. + + * bindings.lisp: Remove nlambda and use defun to keep the function + documentation with clisp. + (define-shell): new macro to define shell command for the second + mode. + +2006-10-06 Philippe Brochard + + * clfswm-keys.lisp (define-ungrab/grab): use a cond instead of a + boggus typecase. + +2006-10-05 Philippe Brochard + + * bindings.lisp (accept-motion): Move group bugfix in upper mouse + workspace circulation. + + * clfswm-util.lisp (absorb-orphan-window): new function. + + * clfswm-keys.lisp: Keysyms support. + +2006-10-02 Philippe Brochard + + * clfswm.lisp (show-group): Use one gc for all groups and not one + per group. + +2006-10-01 Philippe Brochard + + * bindings.lisp (define-second-key (#\l :mod-1)): fix a typo. + + * clfswm.lisp (adapt-window-to-group): Adapt only windows with + width and height outside group. + +2006-09-28 Philippe Brochard + + * clfswm.lisp: First public release. + Added: README ============================================================================== --- (empty file) +++ README Sat Mar 1 07:36:13 2008 @@ -0,0 +1,83 @@ + CLFSWM - A(nother) Common Lisp FullScreen Window Manager + + CLFSWM is a 100% Common Lisp X11 window manager (based on [1]Tinywm + and [2]Stumpwm. Many thanks to them). + It can be driven only with the keyboard or with the mouse. + + A display is divided in workspaces, groups and windows. Windows are + packed together in groups. + By default a group is fullscreen maximized (no decorations, no buttons, + no menus: nothing, just the application fullscreen!). + When not maximized, a group of windows can be moved, resized, tiled, + packed or filled to others groups edges. + + For its binding, CLFSWM has two modes. + A main mode with minimal keys and no mouse grabbing to avoid conflict + with others applications. + And a second mode with more keys and mouse actions. + For details of its usage, have a look at the files keys.txt or + keys.html + + +* Installation + +Boot up a common lisp implementation. I develop it with sbcl, I've +tested it with cmucl and I use it with clisp (you need the clx/xlib +package). + +To use CLFSWM, load the load.lisp file. It loads the ASDF package, +build the system and start the main loop. + +Another way is to do something like this: +$ cd /in/the/directory/of/clfswm/ +$ clisp/cmucl/sbcl/... # start a lisp + > (load "asdf.lisp") ; asdf for clisp or cmucl +or> (require :asdf) ; asdf for sbcl + > (require :clx) ; clx for cmucl + > (asdf:oos 'asdf:load-op :clfswm) ; compile and load the system + > (in-package :clfswm) ; go in the clfswm package + > (clfswm:main) ; start the main loop + + +* Tweaking + +To change the default keybinding, have a look at the bindings*.lisp +files and at the config.lisp file for global variables. + +All variables can be overwritten in a user configuration file +(/etc/clfswmrc or $HOME/.clfswmrc). It's a standard lisp file loaded at +startup. There is an example in the clfswm source (see dot-clfswmrc). + +If you want to add workspaces or groups at startup, tell this to +clfswm in the init-display function in clfswm.lisp (there is already a +default workspace and a default group created). + +In all cases, you can grep the source with 'CONFIG' and 'Alternative' +keywords to find where you can simply customize clfswm. + + + +* Lisp implementation note + +If you are using clisp/new-clx, be sure to use the last version (at +least 2.43). Older versions are a little bit bogus. +If you are using clisp/mit-clx or an other clx than clisp/new-clx, you +may find a speed up with the compress notify event. See the variable +*have-to-compress-notify* in the configuration file. + + + +* License + + CLFSWM is under the GNU General Public License - GPL license. + You can find more information in the files COPYING. or on the + [3]Free Software Foundation site. + + +Philippe Brochard . + +R?f?rences + + 1. http://incise.org/index.cgi/TinyWM + 2. http://www.nongnu.org/stumpwm/ + 3. http://www.gnu.org/ Added: TAGS ============================================================================== --- (empty file) +++ TAGS Sat Mar 1 07:36:13 2008 @@ -0,0 +1,848 @@ + +asdf.lisp,4979 +(defpackage #:asdf40,2112 +(defvar *asdf-revision* 111,4017 +(defvar *compile-file-warnings-behaviour* 120,4323 +(defvar *compile-file-failure-behaviour* 121,4372 +(defvar *verbose-out* 123,4442 +(defmacro aif 128,4518 +(defun pathname-sans-name+type 131,4603 +(define-modify-macro appendf 136,4811 +(define-condition system-definition-error 142,4944 +(define-condition formatted-system-definition-error 151,5486 +(define-condition circular-dependency 157,5801 +(define-condition missing-component 160,5944 +(define-condition missing-dependency 165,6224 +(define-condition operation-error 168,6351 +(define-condition compile-error 174,6643 +(define-condition compile-failed 175,6697 +(define-condition compile-warned 176,6750 +(defclass component 178,6804 +(defmethod print-object 202,7929 +(defun sysdef-error 206,8075 +(defmethod print-object 211,8244 +(defgeneric component-system 220,8533 +(defmethod component-system 223,8646 +(defmethod print-object 228,8783 +(defclass module 233,8951 +(defgeneric component-pathname 243,9472 +(defun component-parent-pathname 246,9599 +(defgeneric component-relative-pathname 251,9749 +(defmethod component-relative-pathname 254,9897 +(defmethod component-pathname 260,10156 +(defgeneric component-property 264,10352 +(defmethod component-property 266,10406 +(defgeneric (setf 269,10529 +(defmethod (setf 271,10600 +(defclass system 278,10879 +(defun split 289,11304 +(defgeneric version-satisfies 302,11724 +(defmethod version-satisfies 304,11776 +(defvar *defined-systems* 323,12371 +(defun coerce-name 324,12429 +(defvar *system-definition-search-functions*334,12783 +(defun system-definition-pathname 337,12866 +(defvar *central-registry*341,12991 +(defun sysdef-central-registry-search 346,13144 +(defun find-system 359,13513 +(defun register-system 381,14344 +(defun system-registered-p 386,14552 +(defgeneric find-component 392,14694 +(defmethod find-component 397,14905 +(defmethod find-component 405,15209 +(defclass source-file 411,15393 +(defclass cl-source-file 413,15432 +(defclass c-source-file 414,15475 +(defclass java-source-file 415,15517 +(defclass static-file 416,15562 +(defclass doc-file 417,15602 +(defclass html-file 418,15639 +(defgeneric source-file-type 420,15675 +(defmethod source-file-type 421,15724 +(defmethod source-file-type 422,15792 +(defmethod source-file-type 423,15856 +(defmethod source-file-type 424,15926 +(defmethod source-file-type 425,15989 +(defmethod component-relative-pathname 427,16052 +(defclass operation 445,16593 +(defmethod print-object 453,17005 +(defmethod shared-initialize 458,17186 +(defgeneric perform 465,17403 +(defgeneric operation-done-p 466,17446 +(defgeneric explain 467,17498 +(defgeneric output-files 468,17541 +(defgeneric input-files 469,17589 +(defun node-for 471,17637 +(defgeneric operation-ancestor 474,17698 +(defmethod operation-ancestor 477,17852 +(defun make-sub-operation 483,17994 +(defgeneric visit-component 503,18619 +(defmethod visit-component 505,18676 +(defgeneric component-visited-p 510,18867 +(defmethod component-visited-p 512,18923 +(defgeneric (setf 517,19077 +(defmethod (setf 519,19149 +(defmethod (setf 523,19324 +(defgeneric component-visiting-p 531,19641 +(defmethod component-visiting-p 533,19698 +(defgeneric component-depends-on 538,19876 +(defmethod component-depends-on 540,19933 +(defgeneric component-self-dependencies 544,20074 +(defmethod component-self-dependencies 546,20138 +(defmethod input-files 552,20367 +(defmethod input-files 565,20819 +(defmethod operation-done-p 567,20883 +(defgeneric traverse 595,21929 +(defmethod traverse 596,21973 +(defmethod perform 675,25028 +(defmethod perform 681,25232 +(defmethod explain 684,25294 +(defclass compile-op 689,25441 +(defmethod perform 696,25805 +(defmethod perform 699,25941 +(defmethod perform 705,26233 +(defmethod output-files 730,27139 +(defmethod perform 734,27341 +(defmethod output-files 737,27409 +(defclass load-op 742,27495 +(defmethod perform 744,27530 +(defmethod perform 747,27620 +(defmethod operation-done-p 749,27684 +(defmethod output-files 752,27756 +(defmethod component-depends-on 755,27818 +(defclass load-source-op 761,27982 +(defmethod perform 763,28024 +(defmethod perform 769,28250 +(defmethod output-files 772,28322 +(defmethod component-depends-on 776,28472 +(defmethod operation-done-p 785,28847 +(defclass test-op 791,29090 +(defmethod perform 793,29125 +(defun operate 799,29246 +(defun oos 831,30166 +(defun remove-keyword 838,30292 +(defmacro defsystem 847,30565 +(defun class-for-type 876,31579 +(defun maybe-add-tree 888,31961 +(defun union-of-dependencies 903,32467 +(defun remove-keys 914,32734 +(defvar *serial-depends-on*)920,32928 +(defun parse-component-form 922,32958 +(defun check-component-input 987,35311 +(defun sysdef-error-component 999,35864 +(defun resolve-symlinks 1004,36031 +(defun run-shell-command 1015,36350 +(defgeneric hyperdocumentation 1060,37730 +(defmethod hyperdocumentation 1061,37786 +(defun hyperdoc 1064,37911 + +bindings-pager.lisp,3518 +(define-pager-key ("F1" 37,1320 +(define-pager-key (#\g 39,1369 +(define-pager-key ("Return")46,1589 +(define-pager-key ("Escape")47,1637 +(define-pager-key (#\b)49,1686 +(define-pager-key ("Home")51,1728 +(define-pager-key ("End")52,1786 +(define-pager-key ("Tab" 55,1844 +(define-pager-key ("Tab" 56,1902 +(define-pager-key ("Escape" 58,1970 +(define-pager-key ("Escape" 59,2045 +(define-pager-key ("Escape" 60,2128 +(define-pager-key ("Escape" 61,2196 +(define-pager-key (#\g)63,2277 +(define-pager-key (#\g 64,2334 +(define-pager-key (#\w)66,2395 +(define-pager-key (#\w 67,2456 +(define-pager-key (#\x)69,2521 +(define-pager-key (#\x 70,2568 +(define-pager-key (#\x 71,2620 +(define-pager-key (#\t)73,2672 +(define-pager-key (#\t 74,2730 +(define-pager-key (#\y)76,2798 +(define-pager-key (#\y 77,2856 +(define-pager-key (#\y 78,2919 +(define-pager-key (#\p)84,3039 +(define-pager-key (#\m 90,3220 +(define-pager-key (#\r)96,3408 +(define-pager-key (#\r 102,3633 +(defun pager-fill-group-in-all-directions 109,3828 +(define-pager-key (#\f)117,4012 +(define-pager-key (#\f 126,4344 +(define-pager-key (#\f 128,4413 +(define-pager-key (#\f 134,4573 +(define-pager-key (#\l)141,4742 +(define-pager-key (#\l 142,4795 +(define-pager-key ("Up")147,4856 +(define-pager-key ("Down")160,5291 +(define-pager-key ("Right")173,5732 +(define-pager-key ("Left")186,6184 +(define-pager-key (#\m)199,6631 +(define-pager-key ("Up" 202,6678 +(define-pager-key ("Down" 207,6796 +(define-pager-key ("Right" 212,6920 +(define-pager-key ("Left" 217,7047 +(define-pager-key ("Up" 223,7172 +(define-pager-key ("Down" 228,7305 +(define-pager-key ("Right" 233,7444 +(define-pager-key ("Left" 238,7586 +(define-pager-key ("Left" 244,7726 +(define-pager-key ("Right" 245,7801 +(define-pager-key ("Down" 246,7873 +(define-pager-key ("Up" 247,7940 +(define-pager-key ("Left" 249,8010 +(define-pager-key ("Right" 250,8094 +(defmacro define-pager-focus-workspace-by-number 253,8177 +(define-pager-focus-workspace-by-number (#\1 261,8500 +(define-pager-focus-workspace-by-number (#\2 262,8556 +(define-pager-focus-workspace-by-number (#\3 263,8612 +(define-pager-focus-workspace-by-number (#\4 264,8668 +(define-pager-focus-workspace-by-number (#\5 265,8724 +(define-pager-focus-workspace-by-number (#\6 266,8780 +(define-pager-focus-workspace-by-number (#\7 267,8836 +(define-pager-focus-workspace-by-number (#\8 268,8892 +(define-pager-focus-workspace-by-number (#\9 269,8948 +(define-pager-focus-workspace-by-number (#\0 270,9004 +(define-pager-key (#\1 272,9062 +(define-pager-key (#\2 273,9130 +(defparameter *pager-motion-object* 280,9236 +(defun mouse-pager-move-selected-group 282,9278 +(defun mouse-pager-move-selected-group-release 289,9523 +(defun mouse-pager-copy-selected-group 302,9977 +(defun mouse-pager-copy-selected-group-release 306,10108 +(defun mouse-pager-move-selected-window 323,10692 +(defun mouse-pager-move-selected-window-release 330,10944 +(defun mouse-pager-copy-selected-window 345,11469 +(defun mouse-pager-copy-selected-window-release 349,11605 +(defun mouse-pager-rotate-window-up 364,12158 +(defun mouse-pager-rotate-window-down 369,12316 +(defun pager-mouse-motion 376,12482 +(define-pager-mouse-action (1)393,12991 +(define-pager-mouse-action (1 395,13099 +(define-pager-mouse-action (2)398,13217 +(define-pager-mouse-action (3)400,13278 +(define-pager-mouse-action (3 402,13388 +(define-pager-mouse-action (4)405,13508 +(define-pager-mouse-action (5)406,13574 +(define-pager-mouse-action ('Motion)408,13643 + +bindings-second-mode.lisp,1728 +(defun group-adding-menu 43,1464 +(defun group-layout-menu 48,1591 +(defun group-pack-menu 58,1776 +(defun group-movement-menu 64,1899 +(defun group-pack-up 71,2058 +(defun group-pack-down 76,2145 +(defun action-by-name-menu 87,2244 +(defun action-by-number-menu 95,2491 +(defun group-menu 104,2753 +(defun selection-menu 112,2901 +(defun utility-menu 122,3156 +(defun main-menu 128,3318 +(define-second-key ("F1" 142,3551 +(define-second-key ("m")144,3607 +(define-second-key ("g")145,3644 +(define-second-key ("n")146,3682 +(define-second-key ("u")147,3729 +(define-second-key (#\i)152,3844 +(define-second-key (#\:)153,3884 +(define-second-key (#\!)155,3935 +(define-second-key (#\t)158,3994 +(define-second-key ("Return")159,4039 +(define-second-key ("Escape")160,4089 +(define-second-key (#\< 163,4141 +(define-second-key ("Home" 168,4199 +(define-second-key ("Right" 170,4265 +(define-second-key ("Left" 171,4323 +(define-second-key ("Down" 173,4385 +(define-second-key ("Up" 174,4440 +(define-second-key ("Tab" 176,4498 +(define-second-key ("Tab" 177,4552 +(define-second-key ("Return" 179,4618 +(define-second-key ("Return" 180,4669 +(define-second-key ("Home" 182,4728 +(define-second-key ("Home" 183,4786 +(define-second-key ("Menu")185,4860 +(define-second-key (#\b 187,4914 +(define-second-key ("Escape" 191,4977 +(define-second-key ("Escape" 192,5045 +(define-second-key ("Escape" 193,5121 +(define-second-key ("Escape" 194,5182 +(define-second-key ("x" 198,5273 +(define-second-key ("x" 199,5327 +(define-second-key ("c" 200,5386 +(define-second-key ("v" 201,5441 +(define-second-key ("v" 202,5493 +(define-second-key ("Delete")203,5561 +(defun sm-handle-click-to-focus 209,5619 +(define-mouse-action (1)214,5796 + +bindings.lisp,709 +(define-main-key ("F1" 37,1377 +(defun quit-clfswm 39,1426 +(define-main-key ("Home" 43,1496 +(define-main-key ("Right" 45,1560 +(define-main-key ("Left" 46,1616 +(define-main-key ("Down" 48,1676 +(define-main-key ("Up" 49,1729 +(define-main-key ("Tab" 51,1785 +(define-main-key ("Tab" 52,1837 +(define-main-key ("Return" 54,1901 +(define-main-key ("Return" 55,1950 +(define-main-key ("Home" 57,2007 +(define-main-key ("Home" 58,2063 +(define-main-key ("Menu")60,2135 +(define-main-key (#\b 62,2187 +(define-main-key ("Escape" 66,2248 +(define-main-key ("Escape" 67,2314 +(define-main-key ("Escape" 68,2388 +(define-main-key ("Escape" 69,2447 +(define-main-key (#\t 72,2522 +(define-main-key ("less" 73,2570 + +clfswm-info.lisp,1761 +(defstruct info 30,1288 +(defun leave-info-mode 33,1339 +(defun mouse-leave-info-mode 38,1451 +(defun draw-info-window 45,1599 +(defun draw-info-window-partial 56,2017 +(define-info-key (#\q)85,3333 +(define-info-key ("Return")86,3374 +(define-info-key ("Escape")87,3420 +(define-info-key (#\Space)88,3466 +(define-info-key ("twosuperior")90,3512 +(define-info-key ("Down")96,3704 +(define-info-key ("Up")102,3866 +(define-info-key ("Left")108,4028 +(define-info-key ("Right")114,4194 +(define-info-key ("Home")121,4359 +(define-info-key ("End")128,4529 +(define-info-key ("Page_Down")136,4786 +(define-info-key ("Page_Up")142,4966 +(defparameter *info-start-grab-x* 151,5149 +(defparameter *info-start-grab-y* 152,5188 +(defun info-begin-grab 155,5229 +(defun info-end-grab 161,5421 +(defun info-mouse-next-line 169,5654 +(defun info-mouse-previous-line 175,5828 +(defun info-mouse-motion 182,6005 +(define-info-mouse-action (1)193,6266 +(define-info-mouse-action (2)194,6329 +(define-info-mouse-action (4)195,6383 +(define-info-mouse-action (5)196,6440 +(define-info-mouse-action ('Motion)197,6493 +(defun info-mode 204,6591 +(defun info-mode-menu 294,10393 +(defun append-space 323,11239 +(defun show-key-binding 332,11457 +(defun show-global-key-binding 340,11695 +(defun show-main-mode-key-binding 345,11856 +(defun show-second-mode-key-binding 349,11959 +(defun show-date 365,12570 +(defun info-on-shell 374,12667 +(defun show-cpu-proc 381,12836 +(defun show-mem-proc 385,13013 +(defun show-xmms-status 389,13192 +(defun show-xmms-playlist 393,13295 +(defun xmms-info-menu 398,13401 +(defun show-cd-info 405,13529 +(defun show-cd-playlist 409,13610 +(defun info-on-cd-menu 413,13699 +(defun help-on-clfswm 420,13825 +(defun help-on-second-mode 431,14107 + +clfswm-internal.lisp,2401 +(defun call-hook 32,1261 +(defun group-data-slot 41,1513 +(defun set-group-data-slot 46,1666 +(defsetf group-data-slot 54,1907 +(defgeneric group-p 58,1956 +(defmethod group-p 59,1985 +(defmethod group-p 62,2052 +(defgeneric child-name 68,2116 +(defmethod child-name 70,2149 +(defmethod child-name 73,2218 +(defmethod child-name 76,2279 +(defmacro with-all-childs 83,2472 +(defmacro with-all-groups 95,2802 +(defmacro with-all-windows 107,3111 +(defmacro with-all-windows-groups 121,3493 +(defun group-find-free-number 134,3814 +(defun create-group 142,4003 +(defun add-group 162,4738 +(defun get-current-child 170,4813 +(defun find-child 180,5129 +(defun find-father-group 188,5307 +(defun find-group-window 196,5542 +(defun find-group-by-name 203,5789 +(defun find-group-by-number 210,6004 +(defun get-all-windows 220,6235 +(defun get-hidden-windows 228,6431 +(defun display-group-info 238,6687 +(defun get-father-layout 277,8099 +(defgeneric adapt-child-to-father 285,8287 +(defmethod adapt-child-to-father 287,8338 +(defmethod adapt-child-to-father 297,8671 +(defgeneric show-child 311,9080 +(defgeneric hide-child 312,9119 +(defmethod show-child 314,9152 +(defmethod hide-child 326,9548 +(defmethod show-child 332,9676 +(defmethod hide-child 341,9955 +(defgeneric select-child 349,10030 +(defmethod select-child 351,10074 +(defmethod select-child 359,10415 +(defun select-current-group 366,10687 +(defun set-focus-to-current-child 371,10772 +(defun show-all-childs 383,11064 +(defun hide-all-childs 399,11561 +(defun select-next/previous-brother 408,11710 +(defun select-next-brother 425,12304 +(defun select-previous-brother 429,12422 +(defun select-next-level 434,12544 +(defun select-previous-level 442,12775 +(defun select-next/previous-child 451,13032 +(defun select-next-child 459,13261 +(defun select-previous-child 463,13367 +(defun enter-group 469,13478 +(defun leave-group 475,13657 +(defun switch-to-root-group 484,13902 +(defun switch-and-select-root-group 490,14056 +(defun toggle-show-root-group 498,14267 +(defun focus-child 505,14442 +(defun focus-child-rec 514,14804 +(defun set-current-child 525,15135 +(defun set-current-root 534,15448 +(defun focus-all-child 540,15617 +(defun remove-child-in-group 549,15912 +(defun remove-child-in-groups 554,16092 +(defun remove-child-in-all-groups 563,16340 +(defun process-new-window 576,16655 +(defun process-existing-windows 625,19041 + +clfswm-keys.lisp,1201 +(defun define-hash-table-key-name 30,1254 +(define-hash-table-key-name *main-keys* 35,1378 +(define-hash-table-key-name *second-keys* 36,1436 +(define-hash-table-key-name *mouse-action* 37,1498 +(define-hash-table-key-name *pager-keys* 38,1581 +(define-hash-table-key-name *pager-mouse-action* 39,1641 +(define-hash-table-key-name *info-keys* 40,1729 +(define-hash-table-key-name *info-mouse-action* 41,1787 +(defmacro define-define-key 44,1875 +(defmacro define-define-mouse 66,2790 +(define-define-key "main" 83,3631 +(define-define-key "second" 84,3670 +(define-define-key "pager" 85,3713 +(define-define-key "info" 86,3754 +(defun undefine-info-key-fun 95,3892 +(define-define-mouse "mouse-action" 98,3957 +(define-define-mouse "pager-mouse-action" 99,4009 +(define-define-mouse "info-mouse-action" 100,4073 +(defmacro define-ungrab/grab 106,4140 +(define-ungrab/grab grab-main-keys 127,4854 +(define-ungrab/grab ungrab-main-keys 128,4916 +(defun funcall-key-from-code 143,4996 +(defun funcall-button-from-code 166,5670 +(defun produce-doc-html 186,6289 +(defun produce-doc-html-in-file 231,7882 +(defun produce-doc 240,8198 +(defun produce-doc-in-file 264,9055 +(defun produce-all-docs 272,9357 + +clfswm-layout.lisp,929 +(defun set-layout 45,1711 +(defun get-managed-child 52,1914 +(defun register-layout 59,2156 +(defgeneric no-layout 65,2266 +(defmethod no-layout 68,2386 +(defmethod no-layout 72,2526 +(defun set-no-layout 81,2822 +(defgeneric tile-layout 91,2992 +(defmethod tile-layout 94,3078 +(defun set-tile-layout 107,3556 +(defun layout-ask-size 115,3692 +(defgeneric tile-left-layout 124,3931 +(defmethod tile-left-layout 127,4048 +(defun set-tile-left-layout 147,4620 +(defgeneric tile-right-layout 157,4857 +(defmethod tile-right-layout 160,4976 +(defun set-tile-right-layout 180,5540 +(defgeneric tile-top-layout 192,5781 +(defmethod tile-top-layout 195,5896 +(defun set-tile-top-layout 215,6467 +(defgeneric tile-bottom-layout 225,6701 +(defmethod tile-bottom-layout 228,6822 +(defun set-tile-bottom-layout 247,7372 +(defgeneric tile-space-layout 260,7622 +(defmethod tile-space-layout 263,7754 +(defun set-space-tile-layout 279,8393 + +clfswm-pack.lisp,1969 +(defun tile-workspace-vertically 33,1298 +(defun tile-current-workspace-vertically 47,1875 +(defun tile-workspace-horizontally 55,2104 +(defun tile-current-workspace-horizontally 69,2685 +(defun tile-workspace-right 76,2919 +(defun tile-workspace-left 97,3876 +(defun tile-workspace-top 119,4797 +(defun tile-workspace-bottom 140,5715 +(defun tile-current-workspace-to 162,6674 +(defun reconfigure-tile-workspace 168,6916 +(defun group-x2 191,7679 +(defun group-y2 194,7747 +(defun find-edge-up 198,7817 +(defun find-edge-down 208,8212 +(defun find-edge-right 218,8636 +(defun find-edge-left 229,9061 +(defun pack-group-up 247,9497 +(defun pack-group-down 253,9646 +(defun pack-group-right 258,9825 +(defun pack-group-left 264,10007 +(defun pack-current-group-up 272,10164 +(defun pack-current-group-down 278,10336 +(defun pack-current-group-right 283,10513 +(defun pack-current-group-left 289,10694 +(defun center-group 295,10872 +(defun center-current-group 300,11103 +(defun fill-group-up 310,11294 +(defun fill-group-down 317,11529 +(defun fill-group-left 324,11745 +(defun fill-group-right 331,11984 +(defun fill-current-group-up 338,12201 +(defun fill-current-group-down 343,12373 +(defun fill-current-group-left 349,12552 +(defun fill-current-group-right 354,12730 +(defun resize-down-group 365,12955 +(defun resize-minimal-group 375,13304 +(defun resize-down-current-group 386,13707 +(defun resize-minimal-current-group 392,13872 +(defun resize-half-width-left 400,14065 +(defun resize-half-width-right 405,14188 +(defun resize-half-height-up 412,14419 +(defun resize-half-height-down 417,14543 +(defun resize-half-width-left-current-group 426,14779 +(defun resize-half-width-right-current-group 431,14980 +(defun resize-half-height-up-current-group 437,15185 +(defun resize-half-height-down-current-group 442,15383 +(defun explode-group 452,15640 +(defun implode-group 459,15951 +(defun explode-current-group 469,16303 +(defun implode-current-group 475,16506 + +clfswm-second-mode.lisp,725 +(defparameter *sm-window* 30,1250 +(defparameter *sm-font* 31,1281 +(defparameter *sm-gc* 32,1310 +(defparameter *second-mode-program* 34,1338 +(defun draw-second-mode-window 58,2318 +(defun sm-handle-key-press 71,2721 +(defun sm-handle-enter-notify 76,2926 +(defun sm-handle-motion-notify 81,3136 +(defun sm-handle-button-press 86,3373 +(defun sm-handle-button-release 91,3611 +(defun sm-handle-configure-request 96,3851 +(defun sm-handle-configure-notify 101,3986 +(defun sm-handle-destroy-notify 106,4119 +(defun sm-handle-map-request 110,4247 +(defun sm-handle-unmap-notify 114,4369 +(defun sm-handle-exposure 118,4493 +(defun sm-handle-event 146,5405 +(defun second-key-mode 170,6627 +(defun leave-second-mode 215,8098 + +clfswm-util.lisp,1298 +(defun add-default-group 32,1238 +(defun add-placed-group 40,1470 +(defun delete-focus-window 54,1951 +(defun destroy-focus-window 64,2376 +(defun remove-focus-window 73,2759 +(defun unhide-all-windows-in-current-child 83,3122 +(defun find-child-under-mouse 95,3405 +(defun clear-selection 113,4016 +(defun copy-current-child 118,4145 +(defun cut-current-child 124,4305 +(defun remove-current-child 132,4590 +(defun paste-selection-no-clear 140,4872 +(defun paste-selection 150,5279 +(defun identify-key 163,5485 +(defun query-show-paren 220,7921 +(defun query-number 378,14351 +(defun eval-from-query-string 384,14482 +(defun run-program-from-query-string 406,15170 +(defun ask-group-name 420,15593 +(defun focus-group-by 446,16395 +(defun focus-group-by-name 453,16586 +(defun focus-group-by-number 458,16737 +(defun open-group-by 465,16926 +(defun open-group-by-name 471,17064 +(defun open-group-by-number 476,17233 +(defun delete-group-by 483,17451 +(defun delete-group-by-name 492,17749 +(defun delete-group-by-number 497,17904 +(defun move-current-child-by 504,18096 +(defun move-current-child-by-name 510,18332 +(defun move-current-child-by-number 517,18585 +(defun copy-current-child-by 526,18875 +(defun copy-current-child-by-name 531,19051 +(defun copy-current-child-by-number 538,19304 + +clfswm.lisp,611 +(defun handle-key-press 35,1267 +(defun handle-configure-request 42,1442 +(defun handle-configure-notify 73,2743 +(defun handle-map-request 79,2832 +(defun handle-unmap-notify 89,3121 +(defun handle-destroy-notify 98,3460 +(defun handle-enter-notify 108,3788 +(defun handle-exposure 113,3924 +(defun handle-create-notify 119,4115 +(defun handle-click-to-focus 126,4268 +(defun handle-button-press 139,4708 +(defun handle-event 165,5455 +(defun main-loop 187,6522 +(defun open-display 195,6720 +(defun init-display 201,6964 +(defun xdg-config-home 240,8506 +(defun read-conf-file 246,8651 +(defun main 264,9275 + +clisp-load.lisp,34 +(defparameter *base-dir* 29,1232 + +config.lisp,1906 +(defparameter *have-to-compress-notify* 37,1531 +(defun get-fullscreen-size 44,1721 +(defparameter *color-selected* 57,2024 +(defparameter *color-unselected* 58,2062 +(defparameter *color-maybe-selected* 59,2103 +(defparameter *sm-border-color* 62,2192 +(defparameter *sm-background-color* 63,2233 +(defparameter *sm-foreground-color* 64,2278 +(defparameter *sm-font-string* 65,2321 +(defparameter *sm-width* 66,2364 +(defparameter *sm-height* 67,2394 +(defparameter *pager-background* 71,2467 +(defparameter *pager-workspace-border* 72,2509 +(defparameter *pager-workspace-background* 73,2556 +(defparameter *pager-group-border* 74,2608 +(defparameter *pager-group-border-selected* 75,2653 +(defparameter *pager-group-background* 76,2704 +(defparameter *pager-window-selected* 78,2754 +(defparameter *pager-window-deselected* 79,2801 +(defparameter *pager-window-hidden* 80,2851 +(defparameter *pager-window-hidden-1* 81,2896 +(defparameter *pager-window-separator* 83,2942 +(defparameter *pager-workspace-cursor* 85,2990 +(defparameter *pager-line-cursor* 86,3038 +(defparameter *pager-group-cursor* 87,3080 +(defparameter *pager-group-background-cursor* 88,3124 +(defparameter *pager-font-string* 91,3182 +(defparameter *pager-workspace-height* 93,3229 +(defparameter *identify-font-string* 98,3309 +(defparameter *identify-background* 99,3354 +(defparameter *identify-foreground* 100,3399 +(defparameter *identify-border* 101,3444 +(defparameter *query-font-string* 104,3517 +(defparameter *query-background* 105,3559 +(defparameter *query-foreground* 106,3601 +(defparameter *query-border* 107,3643 +(defparameter *info-background* 112,3705 +(defparameter *info-foreground* 113,3746 +(defparameter *info-border* 114,3787 +(defparameter *info-line-cursor* 115,3822 +(defparameter *info-font-string* 116,3864 +(defparameter *tile-workspace-function* 121,3938 +(defparameter *tile-border-size* 122,3999 + +keysyms.lisp,193 +(defvar *keysym-name-translations* 30,1039 +(defvar *name-keysym-translations* 31,1093 +(defun cl-define-keysym 33,1162 +(defun keysym-name->keysym 38,1363 +(defun keysym->keysym-name 45,1577 + +load.lisp,34 +(defparameter *base-dir* 29,1232 + +my-html.lisp,226 +(defpackage :my-html32,1262 +(defun insert-html-doctype 42,1429 +(defun produce-html 48,1586 +(defmacro with-html 64,2109 +(defun produce-html-string 68,2204 +(defun test1 75,2329 +(defun test2 90,2592 +(defun test3 104,2802 + +netwm-util.lisp,244 +(defun netwm-set-client-list 33,1333 +(defun netwm-get-client-list 36,1443 +(defun netwm-add-in-client-list 39,1524 +(defun netwm-remove-in-client-list 44,1699 +(defun netwm-update-desktop-property 50,1862 +(defun netwm-set-properties 70,2542 + +package.lisp,3156 +(defpackage clfswm30,1248 +(defparameter *display* 38,1369 +(defparameter *screen* 39,1398 +(defparameter *root* 40,1426 +(defparameter *no-focus-window* 41,1452 +(defparameter *root-gc* 42,1489 +(defparameter *default-font* 44,1519 +(defparameter *default-font-string* 46,1599 +(defparameter *child-selection* 49,1646 +(defparameter *layout-list* 51,1684 +(defclass group 58,1855 +(defparameter *root-group* 82,3050 +(defparameter *current-root* 84,3123 +(defparameter *current-child* 86,3200 +(defparameter *show-root-group-p* 89,3273 +(defparameter *main-keys* 92,3314 +(defparameter *second-keys* 93,3372 +(defparameter *mouse-action* 94,3432 +(defparameter *pager-keys* 95,3493 +(defparameter *pager-mouse-action* 96,3553 +(defparameter *info-keys* 97,3621 +(defparameter *info-mouse-action* 98,3680 +(defparameter *open-next-window-in-new-workspace* 101,3749 +(defparameter *open-next-window-in-new-group* 105,3908 +(defparameter *arrow-action* 110,4102 +(defparameter *pager-arrow-action* 113,4173 +(defparameter *init-hook* 129,4584 +(defparameter *button-press-hook* 132,4657 +(defparameter *button-motion-notify-hook* 133,4696 +(defparameter *key-press-hook* 134,4743 +(defparameter *configure-request-hook* 135,4779 +(defparameter *configure-notify-hook* 136,4823 +(defparameter *create-notify-hook* 137,4866 +(defparameter *destroy-notify-hook* 138,4906 +(defparameter *enter-notify-hook* 139,4947 +(defparameter *exposure-hook* 140,4986 +(defparameter *map-request-hook* 141,5021 +(defparameter *mapping-notify-hook* 142,5059 +(defparameter *property-notify-hook* 143,5100 +(defparameter *unmap-notify-hook* 144,5142 +(defparameter *sm-button-press-hook* 148,5238 +(defparameter *sm-button-release-hook* 149,5280 +(defparameter *sm-motion-notify-hook* 150,5324 +(defparameter *sm-key-press-hook* 151,5367 +(defparameter *sm-configure-request-hook* 152,5406 +(defparameter *sm-configure-notify-hook* 153,5453 +(defparameter *sm-map-request-hook* 154,5499 +(defparameter *sm-unmap-notify-hook* 155,5540 +(defparameter *sm-destroy-notify-hook* 156,5582 +(defparameter *sm-mapping-notify-hook* 157,5626 +(defparameter *sm-property-notify-hook* 158,5670 +(defparameter *sm-create-notify-hook* 159,5715 +(defparameter *sm-enter-notify-hook* 160,5758 +(defparameter *sm-exposure-hook* 161,5800 +(defparameter *pager-button-press-hook* 165,5888 +(defparameter *pager-button-release-hook* 166,5933 +(defparameter *pager-motion-notify-hook* 167,5980 +(defparameter *pager-key-press-hook* 168,6026 +(defparameter *pager-configure-request-hook* 169,6068 +(defparameter *pager-map-request-hook* 170,6118 +(defparameter *pager-unmap-notify-hook* 171,6162 +(defparameter *pager-destroy-notify-hook* 172,6207 +(defparameter *pager-mapping-notify-hook* 173,6254 +(defparameter *pager-property-notify-hook* 174,6301 +(defparameter *pager-create-notify-hook* 175,6349 +(defparameter *pager-enter-notify-hook* 176,6395 +(defparameter *pager-exposure-hook* 177,6440 +(defparameter *motion-action* 181,6516 +(defparameter *motion-object* 182,6551 +(defparameter *motion-start-group* 183,6586 +(defparameter *motion-dx* 184,6626 +(defparameter *motion-dy* 185,6657 + +tools.lisp,1573 +(defpackage tools31,1253 +(defmacro awhen 87,2199 +(defmacro aif 92,2286 +(defvar *%dbg-name%* 99,2412 +(defvar *%dbg-count%* 100,2440 +(defmacro dbg 103,2467 +(defmacro dbgnl 120,2937 +(defmacro setf/=144,3430 +(defun create-symbol 152,3612 +(defun split-string 157,3748 +(defun expand-newline 166,4037 +(defun ensure-list 173,4217 +(defun ensure-printable 180,4334 +(defun find-assoc-word 187,4485 +(defun print-space 196,4783 +(defun escape-string 202,4920 +(defun first-position 210,5191 +(defun find-free-number 215,5325 +(defun do-execute 234,5773 +(defun do-shell 281,7630 +(defun getenv 290,7740 +(defun (setf 306,8314 +(defun uquit 330,9151 +(defun remove-plist 341,9340 +(defun urun-prog 355,9719 +(defun ushell 389,11184 +(defun ush 392,11281 +(defun set-shell-dispatch 396,11375 +(defun ushell-loop 403,11629 +(defun cldebug 419,12024 +(defun get-command-line-words 426,12120 +(defun string-to-list 433,12260 +(defun near-position 446,12645 +(defun string-to-list-multichar 474,13627 +(defun list-to-string 491,14111 +(defun clean-string 496,14188 +(defun one-in-list 501,14317 +(defun exchange-one-in-list 504,14378 +(defun rotate-list 512,14625 +(defun anti-rotate-list 516,14709 +(defun append-formated-list 521,14797 +(defun shuffle-list 539,15295 +(defun convert-to-number 554,15697 +(defun parse-integer-in-list 558,15812 +(defun next-in-list 564,15952 +(defun prev-in-list 570,16107 +(defun find-string 608,17319 +(defun find-all-strings 636,18289 +(defun subst-strings 653,18911 +(defun my-find-string-test 688,19851 +(defun test-find-string 696,20030 + +xlib-util.lisp,1160 +(defconstant +withdrawn-state+ 32,1264 +(defconstant +normal-state+ 33,1298 +(defconstant +iconic-state+ 34,1329 +(defparameter *window-events* 37,1362 +(defparameter +netwm-supported+48,1596 +(defparameter +netwm-window-types+59,1885 +(defmacro with-xlib-protect 71,2324 +(defun parse-display-string 81,2534 +(defun banish-pointer 91,2855 +(defun window-state 101,3059 +(defun set-window-state 106,3189 +(defsetf window-state 114,3363 +(defun window-hidden-p 118,3406 +(defun unhide-window 123,3489 +(defun hide-window 244,7397 +(defun window-type 254,7693 +(defun send-configuration-notify 277,8641 +(defun send-client-message 293,9231 +(defun raise-window 306,9457 +(defun focus-window 314,9731 +(defun no-focus 327,9991 +(defun stop-button-event 393,11982 +(defun replay-button-event 396,12058 +(defun ungrab-all-buttons 400,12143 +(defun grab-all-buttons 403,12231 +(defun get-color 413,12440 +(defun my-character->keysyms 419,12537 +(defun char->keycode 454,13549 +(defun keycode->char 459,13690 +(defun modifiers->state 462,13809 +(defun state->modifiers 465,13898 +(defun wait-no-key-or-button-press 471,13966 +(defun compress-motion-notify 487,14489 + +sbcl-load.lisp,0 Added: asdf.lisp ============================================================================== --- (empty file) +++ asdf.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,1102 @@ +;;; This is asdf: Another System Definition Facility. $Revision: 1.1 $ +;;; +;;; Feedback, bug reports, and patches are all welcome: please mail to +;;; . But note first that the canonical +;;; source for asdf is presently the cCLan CVS repository at +;;; +;;; +;;; If you obtained this copy from anywhere else, and you experience +;;; trouble using it, or find bugs, you may want to check at the +;;; location above for a more recent version (and for documentation +;;; and test files, if your copy came without them) before reporting +;;; bugs. There are usually two "supported" revisions - the CVS HEAD +;;; is the latest development version, whereas the revision tagged +;;; RELEASE may be slightly older but is considered `stable' + +;;; Copyright (c) 2001-2003 Daniel Barlow and contributors +;;; +;;; Permission is hereby granted, free of charge, to any person obtaining +;;; a copy of this software and associated documentation files (the +;;; "Software"), to deal in the Software without restriction, including +;;; without limitation the rights to use, copy, modify, merge, publish, +;;; distribute, sublicense, and/or sell copies of the Software, and to +;;; permit persons to whom the Software is furnished to do so, subject to +;;; the following conditions: +;;; +;;; The above copyright notice and this permission notice shall be +;;; included in all copies or substantial portions of the Software. +;;; +;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +;;; LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +;;; OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +;;; WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +;;; the problem with writing a defsystem replacement is bootstrapping: +;;; we can't use defsystem to compile it. Hence, all in one file + +(defpackage #:asdf + (:export #:defsystem #:oos #:operate #:find-system #:run-shell-command + #:system-definition-pathname #:find-component ; miscellaneous + #:hyperdocumentation #:hyperdoc + + #:compile-op #:load-op #:load-source-op #:test-system-version + #:test-op + #:operation ; operations + #:feature ; sort-of operation + #:version ; metaphorically sort-of an operation + + #:input-files #:output-files #:perform ; operation methods + #:operation-done-p #:explain + + #:component #:source-file + #:c-source-file #:cl-source-file #:java-source-file + #:static-file + #:doc-file + #:html-file + #:text-file + #:source-file-type + #:module ; components + #:system + #:unix-dso + + #:module-components ; component accessors + #:component-pathname + #:component-relative-pathname + #:component-name + #:component-version + #:component-parent + #:component-property + #:component-system + + #:component-depends-on + + #:system-description + #:system-long-description + #:system-author + #:system-maintainer + #:system-license + + #:operation-on-warnings + #:operation-on-failure + + ;#:*component-parent-pathname* + #:*system-definition-search-functions* + #:*central-registry* ; variables + #:*compile-file-warnings-behaviour* + #:*compile-file-failure-behaviour* + #:*asdf-revision* + + #:operation-error #:compile-failed #:compile-warned #:compile-error + #:error-component #:error-operation + #:system-definition-error + #:missing-component + #:missing-dependency + #:circular-dependency ; errors + + #:retry + #:accept ; restarts + + ) + (:use :cl)) + +#+nil +(error "The author of this file habitually uses #+nil to comment out forms. But don't worry, it was unlikely to work in the New Implementation of Lisp anyway") + + +(in-package #:asdf) + +(defvar *asdf-revision* (let* ((v "$Revision: 1.1 $") + (colon (or (position #\: v) -1)) + (dot (position #\. v))) + (and v colon dot + (list (parse-integer v :start (1+ colon) + :junk-allowed t) + (parse-integer v :start (1+ dot) + :junk-allowed t))))) + +(defvar *compile-file-warnings-behaviour* :warn) +(defvar *compile-file-failure-behaviour* #+sbcl :error #-sbcl :warn) + +(defvar *verbose-out* nil) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; utility stuff + +(defmacro aif (test then &optional else) + `(let ((it ,test)) (if it ,then ,else))) + +(defun pathname-sans-name+type (pathname) + "Returns a new pathname with same HOST, DEVICE, DIRECTORY as PATHNAME, +and NIL NAME and TYPE components" + (make-pathname :name nil :type nil :defaults pathname)) + +(define-modify-macro appendf (&rest args) + append "Append onto list") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; classes, condiitons + +(define-condition system-definition-error (error) () + ;; [this use of :report should be redundant, but unfortunately it's not. + ;; cmucl's lisp::output-instance prefers the kernel:slot-class-print-function + ;; over print-object; this is always conditions::%print-condition for + ;; condition objects, which in turn does inheritance of :report options at + ;; run-time. fortunately, inheritance means we only need this kludge here in + ;; order to fix all conditions that build on it. -- rgr, 28-Jul-02.] + #+cmu (:report print-object)) + +(define-condition formatted-system-definition-error (system-definition-error) + ((format-control :initarg :format-control :reader format-control) + (format-arguments :initarg :format-arguments :reader format-arguments)) + (:report (lambda (c s) + (apply #'format s (format-control c) (format-arguments c))))) + +(define-condition circular-dependency (system-definition-error) + ((components :initarg :components :reader circular-dependency-components))) + +(define-condition missing-component (system-definition-error) + ((requires :initform "(unnamed)" :reader missing-requires :initarg :requires) + (version :initform nil :reader missing-version :initarg :version) + (parent :initform nil :reader missing-parent :initarg :parent))) + +(define-condition missing-dependency (missing-component) + ((required-by :initarg :required-by :reader missing-required-by))) + +(define-condition operation-error (error) + ((component :reader error-component :initarg :component) + (operation :reader error-operation :initarg :operation)) + (:report (lambda (c s) + (format s "~@" + (error-operation c) (error-component c))))) +(define-condition compile-error (operation-error) ()) +(define-condition compile-failed (compile-error) ()) +(define-condition compile-warned (compile-error) ()) + +(defclass component () + ((name :accessor component-name :initarg :name :documentation + "Component name: designator for a string composed of portable pathname characters") + (version :accessor component-version :initarg :version) + (in-order-to :initform nil :initarg :in-order-to) + ;;; XXX crap name + (do-first :initform nil :initarg :do-first) + ;; methods defined using the "inline" style inside a defsystem form: + ;; need to store them somewhere so we can delete them when the system + ;; is re-evaluated + (inline-methods :accessor component-inline-methods :initform nil) + (parent :initarg :parent :initform nil :reader component-parent) + ;; no direct accessor for pathname, we do this as a method to allow + ;; it to default in funky ways if not supplied + (relative-pathname :initarg :pathname) + (operation-times :initform (make-hash-table ) + :accessor component-operation-times) + ;; XXX we should provide some atomic interface for updating the + ;; component properties + (properties :accessor component-properties :initarg :properties + :initform nil))) + +;;;; methods: conditions + +(defmethod print-object ((c missing-dependency) s) + (format s "~@<~A, required by ~A~@:>" + (call-next-method c nil) (missing-required-by c))) + +(defun sysdef-error (format &rest arguments) + (error 'formatted-system-definition-error :format-control format :format-arguments arguments)) + +;;;; methods: components + +(defmethod print-object ((c missing-component) s) + (format s "~@" + (missing-requires c) + (missing-version c) + (when (missing-parent c) + (component-name (missing-parent c))))) + +(defgeneric component-system (component) + (:documentation "Find the top-level system containing COMPONENT")) + +(defmethod component-system ((component component)) + (aif (component-parent component) + (component-system it) + component)) + +(defmethod print-object ((c component) stream) + (print-unreadable-object (c stream :type t :identity t) + (ignore-errors + (prin1 (component-name c) stream)))) + +(defclass module (component) + ((components :initform nil :accessor module-components :initarg :components) + ;; what to do if we can't satisfy a dependency of one of this module's + ;; components. This allows a limited form of conditional processing + (if-component-dep-fails :initform :fail + :accessor module-if-component-dep-fails + :initarg :if-component-dep-fails) + (default-component-class :accessor module-default-component-class + :initform 'cl-source-file :initarg :default-component-class))) + +(defgeneric component-pathname (component) + (:documentation "Extracts the pathname applicable for a particular component.")) + +(defun component-parent-pathname (component) + (aif (component-parent component) + (component-pathname it) + *default-pathname-defaults*)) + +(defgeneric component-relative-pathname (component) + (:documentation "Extracts the relative pathname applicable for a particular component.")) + +(defmethod component-relative-pathname ((component module)) + (or (slot-value component 'relative-pathname) + (make-pathname + :directory `(:relative ,(component-name component)) + :host (pathname-host (component-parent-pathname component))))) + +(defmethod component-pathname ((component component)) + (let ((*default-pathname-defaults* (component-parent-pathname component))) + (merge-pathnames (component-relative-pathname component)))) + +(defgeneric component-property (component property)) + +(defmethod component-property ((c component) property) + (cdr (assoc property (slot-value c 'properties) :test #'equal))) + +(defgeneric (setf component-property) (new-value component property)) + +(defmethod (setf component-property) (new-value (c component) property) + (let ((a (assoc property (slot-value c 'properties) :test #'equal))) + (if a + (setf (cdr a) new-value) + (setf (slot-value c 'properties) + (acons property new-value (slot-value c 'properties)))))) + +(defclass system (module) + ((description :accessor system-description :initarg :description) + (long-description + :accessor system-long-description :initarg :long-description) + (author :accessor system-author :initarg :author) + (maintainer :accessor system-maintainer :initarg :maintainer) + (licence :accessor system-licence :initarg :licence))) + +;;; version-satisfies + +;;; with apologies to christophe rhodes ... +(defun split (string &optional max (ws '(#\Space #\Tab))) + (flet ((is-ws (char) (find char ws))) + (nreverse + (let ((list nil) (start 0) (words 0) end) + (loop + (when (and max (>= words (1- max))) + (return (cons (subseq string start) list))) + (setf end (position-if #'is-ws string :start start)) + (push (subseq string start end) list) + (incf words) + (unless end (return list)) + (setf start (1+ end))))))) + +(defgeneric version-satisfies (component version)) + +(defmethod version-satisfies ((c component) version) + (unless (and version (slot-boundp c 'version)) + (return-from version-satisfies t)) + (let ((x (mapcar #'parse-integer + (split (component-version c) nil '(#\.)))) + (y (mapcar #'parse-integer + (split version nil '(#\.))))) + (labels ((bigger (x y) + (cond ((not y) t) + ((not x) nil) + ((> (car x) (car y)) t) + ((= (car x) (car y)) + (bigger (cdr x) (cdr y)))))) + (and (= (car x) (car y)) + (or (not (cdr y)) (bigger (cdr x) (cdr y))))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; finding systems + +(defvar *defined-systems* (make-hash-table :test 'equal)) +(defun coerce-name (name) + (typecase name + (component (component-name name)) + (symbol (string-downcase (symbol-name name))) + (string name) + (t (sysdef-error "~@" name)))) + +;;; for the sake of keeping things reasonably neat, we adopt a +;;; convention that functions in this list are prefixed SYSDEF- + +(defvar *system-definition-search-functions* + '(sysdef-central-registry-search)) + +(defun system-definition-pathname (system) + (some (lambda (x) (funcall x system)) + *system-definition-search-functions*)) + +(defvar *central-registry* + '(*default-pathname-defaults* + #+nil "/home/dan/src/sourceforge/cclan/asdf/systems/" + #+nil "telent:asdf;systems;")) + +(defun sysdef-central-registry-search (system) + (let ((name (coerce-name system))) + (block nil + (dolist (dir *central-registry*) + (let* ((defaults (eval dir)) + (file (and defaults + (make-pathname + :defaults defaults :version :newest + :name name :type "asd" :case :local)))) + (if (and file (probe-file file)) + (return file))))))) + + +(defun find-system (name &optional (error-p t)) + (let* ((name (coerce-name name)) + (in-memory (gethash name *defined-systems*)) + (on-disk (system-definition-pathname name))) + (when (and on-disk + (or (not in-memory) + (< (car in-memory) (file-write-date on-disk)))) + (let ((*package* (make-package (gensym #.(package-name *package*)) + :use '(:cl :asdf)))) + (format *verbose-out* + "~&~@<; ~@;loading system definition from ~A into ~A~@:>~%" + ;; FIXME: This wants to be (ENOUGH-NAMESTRING + ;; ON-DISK), but CMUCL barfs on that. + on-disk + *package*) + (load on-disk))) + (let ((in-memory (gethash name *defined-systems*))) + (if in-memory + (progn (if on-disk (setf (car in-memory) (file-write-date on-disk))) + (cdr in-memory)) + (if error-p (error 'missing-component :requires name)))))) + +(defun register-system (name system) + (format *verbose-out* "~&~@<; ~@;registering ~A as ~A~@:>~%" system name) + (setf (gethash (coerce-name name) *defined-systems*) + (cons (get-universal-time) system))) + +(defun system-registered-p (name) + (gethash (coerce-name name) *defined-systems*)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; finding components + +(defgeneric find-component (module name &optional version) + (:documentation "Finds the component with name NAME present in the +MODULE module; if MODULE is nil, then the component is assumed to be a +system.")) + +(defmethod find-component ((module module) name &optional version) + (if (slot-boundp module 'components) + (let ((m (find name (module-components module) + :test #'equal :key #'component-name))) + (if (and m (version-satisfies m version)) m)))) + + +;;; a component with no parent is a system +(defmethod find-component ((module (eql nil)) name &optional version) + (let ((m (find-system name nil))) + (if (and m (version-satisfies m version)) m))) + +;;; component subclasses + +(defclass source-file (component) ()) + +(defclass cl-source-file (source-file) ()) +(defclass c-source-file (source-file) ()) +(defclass java-source-file (source-file) ()) +(defclass static-file (source-file) ()) +(defclass doc-file (static-file) ()) +(defclass html-file (doc-file) ()) + +(defgeneric source-file-type (component system)) +(defmethod source-file-type ((c cl-source-file) (s module)) "lisp") +(defmethod source-file-type ((c c-source-file) (s module)) "c") +(defmethod source-file-type ((c java-source-file) (s module)) "java") +(defmethod source-file-type ((c html-file) (s module)) "html") +(defmethod source-file-type ((c static-file) (s module)) nil) + +(defmethod component-relative-pathname ((component source-file)) + (let* ((*default-pathname-defaults* (component-parent-pathname component)) + (name-type + (make-pathname + :name (component-name component) + :type (source-file-type component + (component-system component))))) + (if (slot-value component 'relative-pathname) + (merge-pathnames + (slot-value component 'relative-pathname) + name-type) + name-type))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; operations + +;;; one of these is instantiated whenever (operate ) is called + +(defclass operation () + ((forced :initform nil :initarg :force :accessor operation-forced) + (original-initargs :initform nil :initarg :original-initargs + :accessor operation-original-initargs) + (visited-nodes :initform nil :accessor operation-visited-nodes) + (visiting-nodes :initform nil :accessor operation-visiting-nodes) + (parent :initform nil :initarg :parent :accessor operation-parent))) + +(defmethod print-object ((o operation) stream) + (print-unreadable-object (o stream :type t :identity t) + (ignore-errors + (prin1 (operation-original-initargs o) stream)))) + +(defmethod shared-initialize :after ((operation operation) slot-names + &key force + &allow-other-keys) + (declare (ignore slot-names force)) + ;; empty method to disable initarg validity checking + ) + +(defgeneric perform (operation component)) +(defgeneric operation-done-p (operation component)) +(defgeneric explain (operation component)) +(defgeneric output-files (operation component)) +(defgeneric input-files (operation component)) + +(defun node-for (o c) + (cons (class-name (class-of o)) c)) + +(defgeneric operation-ancestor (operation) + (:documentation "Recursively chase the operation's parent pointer until we get to the head of the tree")) + +(defmethod operation-ancestor ((operation operation)) + (aif (operation-parent operation) + (operation-ancestor it) + operation)) + + +(defun make-sub-operation (c o dep-c dep-o) + (let* ((args (copy-list (operation-original-initargs o))) + (force-p (getf args :force))) + ;; note explicit comparison with T: any other non-NIL force value + ;; (e.g. :recursive) will pass through + (cond ((and (null (component-parent c)) + (null (component-parent dep-c)) + (not (eql c dep-c))) + (when (eql force-p t) + (setf (getf args :force) nil)) + (apply #'make-instance dep-o + :parent o + :original-initargs args args)) + ((subtypep (type-of o) dep-o) + o) + (t + (apply #'make-instance dep-o + :parent o :original-initargs args args))))) + + +(defgeneric visit-component (operation component data)) + +(defmethod visit-component ((o operation) (c component) data) + (unless (component-visited-p o c) + (push (cons (node-for o c) data) + (operation-visited-nodes (operation-ancestor o))))) + +(defgeneric component-visited-p (operation component)) + +(defmethod component-visited-p ((o operation) (c component)) + (assoc (node-for o c) + (operation-visited-nodes (operation-ancestor o)) + :test 'equal)) + +(defgeneric (setf visiting-component) (new-value operation component)) + +(defmethod (setf visiting-component) (new-value operation component) + ;; MCL complains about unused lexical variables + (declare (ignorable new-value operation component))) + +(defmethod (setf visiting-component) (new-value (o operation) (c component)) + (let ((node (node-for o c)) + (a (operation-ancestor o))) + (if new-value + (pushnew node (operation-visiting-nodes a) :test 'equal) + (setf (operation-visiting-nodes a) + (remove node (operation-visiting-nodes a) :test 'equal))))) + +(defgeneric component-visiting-p (operation component)) + +(defmethod component-visiting-p ((o operation) (c component)) + (let ((node (cons o c))) + (member node (operation-visiting-nodes (operation-ancestor o)) + :test 'equal))) + +(defgeneric component-depends-on (operation component)) + +(defmethod component-depends-on ((o operation) (c component)) + (cdr (assoc (class-name (class-of o)) + (slot-value c 'in-order-to)))) + +(defgeneric component-self-dependencies (operation component)) + +(defmethod component-self-dependencies ((o operation) (c component)) + (let ((all-deps (component-depends-on o c))) + (remove-if-not (lambda (x) + (member (component-name c) (cdr x) :test #'string=)) + all-deps))) + +(defmethod input-files ((operation operation) (c component)) + (let ((parent (component-parent c)) + (self-deps (component-self-dependencies operation c))) + (if self-deps + (mapcan (lambda (dep) + (destructuring-bind (op name) dep + (output-files (make-instance op) + (find-component parent name)))) + self-deps) + ;; no previous operations needed? I guess we work with the + ;; original source file, then + (list (component-pathname c))))) + +(defmethod input-files ((operation operation) (c module)) nil) + +(defmethod operation-done-p ((o operation) (c component)) + (let ((out-files (output-files o c)) + (in-files (input-files o c))) + (cond ((and (not in-files) (not out-files)) + ;; arbitrary decision: an operation that uses nothing to + ;; produce nothing probably isn't doing much + t) + ((not out-files) + (let ((op-done + (gethash (type-of o) + (component-operation-times c)))) + (and op-done + (>= op-done + (or (apply #'max + (mapcar #'file-write-date in-files)) 0))))) + ((not in-files) nil) + (t + (and + (every #'probe-file out-files) + (> (apply #'min (mapcar #'file-write-date out-files)) + (apply #'max (mapcar #'file-write-date in-files)) )))))) + +;;; So you look at this code and think "why isn't it a bunch of +;;; methods". And the answer is, because standard method combination +;;; runs :before methods most->least-specific, which is back to front +;;; for our purposes. And CLISP doesn't have non-standard method +;;; combinations, so let's keep it simple and aspire to portability + +(defgeneric traverse (operation component)) +(defmethod traverse ((operation operation) (c component)) + (let ((forced nil)) + (labels ((do-one-dep (required-op required-c required-v) + (let* ((dep-c (or (find-component + (component-parent c) + ;; XXX tacky. really we should build the + ;; in-order-to slot with canonicalized + ;; names instead of coercing this late + (coerce-name required-c) required-v) + (error 'missing-dependency :required-by c + :version required-v + :requires required-c))) + (op (make-sub-operation c operation dep-c required-op))) + (traverse op dep-c))) + (do-dep (op dep) + (cond ((eq op 'feature) + (or (member (car dep) *features*) + (error 'missing-dependency :required-by c + :requires (car dep) :version nil))) + (t + (dolist (d dep) + (cond ((consp d) + (assert (string-equal + (symbol-name (first d)) + "VERSION")) + (appendf forced + (do-one-dep op (second d) (third d)))) + (t + (appendf forced (do-one-dep op d nil))))))))) + (aif (component-visited-p operation c) + (return-from traverse + (if (cdr it) (list (cons 'pruned-op c)) nil))) + ;; dependencies + (if (component-visiting-p operation c) + (error 'circular-dependency :components (list c))) + (setf (visiting-component operation c) t) + (loop for (required-op . deps) in (component-depends-on operation c) + do (do-dep required-op deps)) + ;; constituent bits + (let ((module-ops + (when (typep c 'module) + (let ((at-least-one nil) + (forced nil) + (error nil)) + (loop for kid in (module-components c) + do (handler-case + (appendf forced (traverse operation kid )) + (missing-dependency (condition) + (if (eq (module-if-component-dep-fails c) :fail) + (error condition)) + (setf error condition)) + (:no-error (c) + (declare (ignore c)) + (setf at-least-one t)))) + (when (and (eq (module-if-component-dep-fails c) :try-next) + (not at-least-one)) + (error error)) + forced)))) + ;; now the thing itself + (when (or forced module-ops + (not (operation-done-p operation c)) + (let ((f (operation-forced (operation-ancestor operation)))) + (and f (or (not (consp f)) + (member (component-name + (operation-ancestor operation)) + (mapcar #'coerce-name f) + :test #'string=))))) + (let ((do-first (cdr (assoc (class-name (class-of operation)) + (slot-value c 'do-first))))) + (loop for (required-op . deps) in do-first + do (do-dep required-op deps))) + (setf forced (append (delete 'pruned-op forced :key #'car) + (delete 'pruned-op module-ops :key #'car) + (list (cons operation c)))))) + (setf (visiting-component operation c) nil) + (visit-component operation c (and forced t)) + forced))) + + +(defmethod perform ((operation operation) (c source-file)) + (sysdef-error + "~@" + (class-of operation) (class-of c))) + +(defmethod perform ((operation operation) (c module)) + nil) + +(defmethod explain ((operation operation) (component component)) + (format *verbose-out* "~&;;; ~A on ~A~%" operation component)) + +;;; compile-op + +(defclass compile-op (operation) + ((proclamations :initarg :proclamations :accessor compile-op-proclamations :initform nil) + (on-warnings :initarg :on-warnings :accessor operation-on-warnings + :initform *compile-file-warnings-behaviour*) + (on-failure :initarg :on-failure :accessor operation-on-failure + :initform *compile-file-failure-behaviour*))) + +(defmethod perform :before ((operation compile-op) (c source-file)) + (map nil #'ensure-directories-exist (output-files operation c))) + +(defmethod perform :after ((operation operation) (c component)) + (setf (gethash (type-of operation) (component-operation-times c)) + (get-universal-time))) + +;;; perform is required to check output-files to find out where to put +;;; its answers, in case it has been overridden for site policy +(defmethod perform ((operation compile-op) (c cl-source-file)) + #-:broken-fasl-loader + (let ((source-file (component-pathname c)) + (output-file (car (output-files operation c)))) + (multiple-value-bind (output warnings-p failure-p) + (compile-file source-file + :output-file output-file) + ;(declare (ignore output)) + (when warnings-p + (case (operation-on-warnings operation) + (:warn (warn + "~@" + operation c)) + (:error (error 'compile-warned :component c :operation operation)) + (:ignore nil))) + (when failure-p + (case (operation-on-failure operation) + (:warn (warn + "~@" + operation c)) + (:error (error 'compile-failed :component c :operation operation)) + (:ignore nil))) + (unless output + (error 'compile-error :component c :operation operation))))) + +(defmethod output-files ((operation compile-op) (c cl-source-file)) + #-:broken-fasl-loader (list (compile-file-pathname (component-pathname c))) + #+:broken-fasl-loader (list (component-pathname c))) + +(defmethod perform ((operation compile-op) (c static-file)) + nil) + +(defmethod output-files ((operation compile-op) (c static-file)) + nil) + +;;; load-op + +(defclass load-op (operation) ()) + +(defmethod perform ((o load-op) (c cl-source-file)) + (mapcar #'load (input-files o c))) + +(defmethod perform ((operation load-op) (c static-file)) + nil) +(defmethod operation-done-p ((operation load-op) (c static-file)) + t) + +(defmethod output-files ((o operation) (c component)) + nil) + +(defmethod component-depends-on ((operation load-op) (c component)) + (cons (list 'compile-op (component-name c)) + (call-next-method))) + +;;; load-source-op + +(defclass load-source-op (operation) ()) + +(defmethod perform ((o load-source-op) (c cl-source-file)) + (let ((source (component-pathname c))) + (setf (component-property c 'last-loaded-as-source) + (and (load source) + (get-universal-time))))) + +(defmethod perform ((operation load-source-op) (c static-file)) + nil) + +(defmethod output-files ((operation load-source-op) (c component)) + nil) + +;;; FIXME: we simply copy load-op's dependencies. this is Just Not Right. +(defmethod component-depends-on ((o load-source-op) (c component)) + (let ((what-would-load-op-do (cdr (assoc 'load-op + (slot-value c 'in-order-to))))) + (mapcar (lambda (dep) + (if (eq (car dep) 'load-op) + (cons 'load-source-op (cdr dep)) + dep)) + what-would-load-op-do))) + +(defmethod operation-done-p ((o load-source-op) (c source-file)) + (if (or (not (component-property c 'last-loaded-as-source)) + (> (file-write-date (component-pathname c)) + (component-property c 'last-loaded-as-source))) + nil t)) + +(defclass test-op (operation) ()) + +(defmethod perform ((operation test-op) (c component)) + nil) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; invoking operations + +(defun operate (operation-class system &rest args) + (let* ((op (apply #'make-instance operation-class + :original-initargs args args)) + (*verbose-out* + (if (getf args :verbose t) + *trace-output* + (make-broadcast-stream))) + (system (if (typep system 'component) system (find-system system))) + (steps (traverse op system))) + (with-compilation-unit () + (loop for (op . component) in steps do + (loop + (restart-case + (progn (perform op component) + (return)) + (retry () + :report + (lambda (s) + (format s "~@" + op component))) + (accept () + :report + (lambda (s) + (format s + "~@" + op component)) + (setf (gethash (type-of op) + (component-operation-times component)) + (get-universal-time)) + (return)))))))) + +(defun oos (&rest args) + "Alias of OPERATE function" + (apply #'operate args)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; syntax + +(defun remove-keyword (key arglist) + (labels ((aux (key arglist) + (cond ((null arglist) nil) + ((eq key (car arglist)) (cddr arglist)) + (t (cons (car arglist) (cons (cadr arglist) + (remove-keyword + key (cddr arglist)))))))) + (aux key arglist))) + +(defmacro defsystem (name &body options) + (destructuring-bind (&key pathname (class 'system) &allow-other-keys) options + (let ((component-options (remove-keyword :class options))) + `(progn + ;; system must be registered before we parse the body, otherwise + ;; we recur when trying to find an existing system of the same name + ;; to reuse options (e.g. pathname) from + (let ((s (system-registered-p ',name))) + (cond ((and s (eq (type-of (cdr s)) ',class)) + (setf (car s) (get-universal-time))) + (s + #+clisp + (sysdef-error "Cannot redefine the existing system ~A with a different class" s) + #-clisp + (change-class (cdr s) ',class)) + (t + (register-system (quote ,name) + (make-instance ',class :name ',name))))) + (parse-component-form nil (apply + #'list + :module (coerce-name ',name) + :pathname + (or ,pathname + (pathname-sans-name+type + (resolve-symlinks *load-truename*)) + *default-pathname-defaults*) + ',component-options)))))) + + +(defun class-for-type (parent type) + (let ((class + (find-class + (or (find-symbol (symbol-name type) *package*) + (find-symbol (symbol-name type) #.(package-name *package*))) + nil))) + (or class + (and (eq type :file) + (or (module-default-component-class parent) + (find-class 'cl-source-file))) + (sysdef-error "~@" type)))) + +(defun maybe-add-tree (tree op1 op2 c) + "Add the node C at /OP1/OP2 in TREE, unless it's there already. +Returns the new tree (which probably shares structure with the old one)" + (let ((first-op-tree (assoc op1 tree))) + (if first-op-tree + (progn + (aif (assoc op2 (cdr first-op-tree)) + (if (find c (cdr it)) + nil + (setf (cdr it) (cons c (cdr it)))) + (setf (cdr first-op-tree) + (acons op2 (list c) (cdr first-op-tree)))) + tree) + (acons op1 (list (list op2 c)) tree)))) + +(defun union-of-dependencies (&rest deps) + (let ((new-tree nil)) + (dolist (dep deps) + (dolist (op-tree dep) + (dolist (op (cdr op-tree)) + (dolist (c (cdr op)) + (setf new-tree + (maybe-add-tree new-tree (car op-tree) (car op) c)))))) + new-tree)) + + +(defun remove-keys (key-names args) + (loop for ( name val ) on args by #'cddr + unless (member (symbol-name name) key-names + :key #'symbol-name :test 'equal) + append (list name val))) + +(defvar *serial-depends-on*) + +(defun parse-component-form (parent options) + (destructuring-bind + (type name &rest rest &key + ;; the following list of keywords is reproduced below in the + ;; remove-keys form. important to keep them in sync + components pathname default-component-class + perform explain output-files operation-done-p + depends-on serial in-order-to + ;; list ends + &allow-other-keys) options + (check-component-input type name depends-on components in-order-to) + (let* ((other-args (remove-keys + '(components pathname default-component-class + perform explain output-files operation-done-p + depends-on serial in-order-to) + rest)) + (ret + (or (find-component parent name) + (make-instance (class-for-type parent type))))) + (when (boundp '*serial-depends-on*) + (setf depends-on + (concatenate 'list *serial-depends-on* depends-on))) + (apply #'reinitialize-instance + ret + :name (coerce-name name) + :pathname pathname + :parent parent + other-args) + (when (typep ret 'module) + (setf (module-default-component-class ret) + (or default-component-class + (and (typep parent 'module) + (module-default-component-class parent)))) + (let ((*serial-depends-on* nil)) + (setf (module-components ret) + (loop for c-form in components + for c = (parse-component-form ret c-form) + collect c + if serial + do (push (component-name c) *serial-depends-on*))))) + + (setf (slot-value ret 'in-order-to) + (union-of-dependencies + in-order-to + `((compile-op (compile-op , at depends-on)) + (load-op (load-op , at depends-on)))) + (slot-value ret 'do-first) `((compile-op (load-op , at depends-on)))) + + (loop for (n v) in `((perform ,perform) (explain ,explain) + (output-files ,output-files) + (operation-done-p ,operation-done-p)) + do (map 'nil + ;; this is inefficient as most of the stored + ;; methods will not be for this particular gf n + ;; But this is hardly performance-critical + (lambda (m) (remove-method (symbol-function n) m)) + (component-inline-methods ret)) + when v + do (destructuring-bind (op qual (o c) &body body) v + (pushnew + (eval `(defmethod ,n ,qual ((,o ,op) (,c (eql ,ret))) + , at body)) + (component-inline-methods ret)))) + ret))) + +(defun check-component-input (type name depends-on components in-order-to) + "A partial test of the values of a component." + (unless (listp depends-on) + (sysdef-error-component ":depends-on must be a list." + type name depends-on)) + (unless (listp components) + (sysdef-error-component ":components must be NIL or a list of components." + type name components)) + (unless (and (listp in-order-to) (listp (car in-order-to))) + (sysdef-error-component ":in-order-to must be NIL or a list of components." + type name in-order-to))) + +(defun sysdef-error-component (msg type name value) + (sysdef-error (concatenate 'string msg + "~&The value specified for ~(~A~) ~A is ~W") + type name value)) + +(defun resolve-symlinks (path) + #-allegro (truename path) + #+allegro (excl:pathname-resolve-symbolic-links path) + ) + +;;; optional extras + +;;; run-shell-command functions for other lisp implementations will be +;;; gratefully accepted, if they do the same thing. If the docstring +;;; is ambiguous, send a bug report + +(defun run-shell-command (control-string &rest args) + "Interpolate ARGS into CONTROL-STRING as if by FORMAT, and +synchronously execute the result using a Bourne-compatible shell, with +output to *verbose-out*. Returns the shell's exit code." + (let ((command (apply #'format nil control-string args))) + (format *verbose-out* "; $ ~A~%" command) + #+sbcl + (sb-impl::process-exit-code + (sb-ext:run-program + "/bin/sh" + (list "-c" command) + :input nil :output *verbose-out*)) + + #+(or cmu scl) + (ext:process-exit-code + (ext:run-program + "/bin/sh" + (list "-c" command) + :input nil :output *verbose-out*)) + + #+allegro + (excl:run-shell-command command :input nil :output *verbose-out*) + + #+lispworks + (system:call-system-showing-output + command + :shell-type "/bin/sh" + :output-stream *verbose-out*) + + #+clisp ;XXX not exactly *verbose-out*, I know + (ext:run-shell-command command :output :terminal :wait t) + + #+openmcl + (nth-value 1 + (ccl:external-process-status + (ccl:run-program "/bin/sh" (list "-c" command) + :input nil :output *verbose-out* + :wait t))) + #+ecl ;; courtesy of Juan Jose Garcia Ripoll + (si:system command) + #-(or openmcl clisp lispworks allegro scl cmu sbcl ecl) + (error "RUN-SHELL-PROGRAM not implemented for this Lisp") + )) + + +(defgeneric hyperdocumentation (package name doc-type)) +(defmethod hyperdocumentation ((package symbol) name doc-type) + (hyperdocumentation (find-package package) name doc-type)) + +(defun hyperdoc (name doc-type) + (hyperdocumentation (symbol-package name) name doc-type)) + + +(pushnew :asdf *features*) + +#+sbcl +(eval-when (:compile-toplevel :load-toplevel :execute) + (when (sb-ext:posix-getenv "SBCL_BUILDING_CONTRIB") + (pushnew :sbcl-hooks-require *features*))) + +#+(and sbcl sbcl-hooks-require) +(progn + (defun module-provide-asdf (name) + (handler-bind ((style-warning #'muffle-warning)) + (let* ((*verbose-out* (make-broadcast-stream)) + (system (asdf:find-system name nil))) + (when system + (asdf:operate 'asdf:load-op name) + t)))) + + (pushnew + '(merge-pathnames "systems/" + (truename (sb-ext:posix-getenv "SBCL_HOME"))) + *central-registry*) + + (pushnew + '(merge-pathnames "site-systems/" + (truename (sb-ext:posix-getenv "SBCL_HOME"))) + *central-registry*) + + (pushnew + '(merge-pathnames ".sbcl/systems/" + (user-homedir-pathname)) + *central-registry*) + + (pushnew 'module-provide-asdf sb-ext:*module-provider-functions*)) + +(provide 'asdf) Added: bindings-pager.lisp ============================================================================== --- (empty file) +++ bindings-pager.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,408 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Tue Feb 12 14:02:07 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Bindings keys and mouse for pager mode +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + + +;;;,----- +;;;| CONFIG - Pager bindings +;;;`----- + + +(define-pager-key ("F1" :mod-1) 'help-on-pager) + +(define-pager-key (#\g :control) + (defun b-pager-stop-all-pending-actions () + "Stop all pending actions (actions like open in new workspace/group)" + (stop-all-pending-actions) + (pager-draw-display))) + + +(define-pager-key ("Return") 'leave-pager-mode) +(define-pager-key ("Escape") 'leave-pager-mode) + +(define-pager-key (#\b) 'banish-pointer) + +(define-pager-key ("Home") 'pager-select-first-workspace) +(define-pager-key ("End") 'pager-select-last-workspace) + + +(define-pager-key ("Tab" :mod-1) 'pager-rotate-window-up) +(define-pager-key ("Tab" :mod-1 :shift) 'pager-rotate-window-down) + +(define-pager-key ("Escape" :control :shift) 'pager-delete-current-window) +(define-pager-key ("Escape" :mod-1 :control :shift) 'pager-destroy-current-window) +(define-pager-key ("Escape" :control) 'pager-remove-current-window) +(define-pager-key ("Escape" :shift) 'pager-unhide-all-windows-in-current-group) + +(define-pager-key (#\g) 'pager-create-new-default-group) +(define-pager-key (#\g :mod-1) 'pager-remove-current-group) + +(define-pager-key (#\w) 'pager-create-new-default-workspace) +(define-pager-key (#\w :mod-1) 'pager-remove-current-workspace) + +(define-pager-key (#\x) 'pager-swap-workspace) +(define-pager-key (#\x :control) 'pager-swap-group) +(define-pager-key (#\x :mod-1) 'pager-swap-window) + +(define-pager-key (#\t) 'pager-tile-workspace-vertically) +(define-pager-key (#\t :shift) 'pager-tile-workspace-horizontally) + +(define-pager-key (#\y) 'pager-tile-current-workspace-to) +(define-pager-key (#\y :control) 'pager-explode-current-group) +(define-pager-key (#\y :control :shift) 'pager-implode-current-group) + + +;;;,----- +;;;| Moving/Resizing groups +;;;`----- +(define-pager-key (#\p) + (defun b-pager-pack-group-on-next-arrow () + "Pack group on next arrow action" + (setf *pager-arrow-action* :pack) + (pager-draw-display))) + +(define-pager-key (#\m :shift) + (defun b-pager-move-group-on-next-arrow () + "Move group on next arrow action" + (setf *pager-arrow-action* :move) + (pager-draw-display))) + +(define-pager-key (#\r) + (defun b-pager-resize-half-group-on-next-arrow () + "Resize group to its half width or heigth on next arrow action" + (setf *pager-arrow-action* :resize-half) + (pager-draw-display))) + +(define-pager-key (#\r :shift) + (defun b-pager-resize-group-on-next-arrow () + "Resize group on next arrow action" + (setf *pager-arrow-action* :resize) + (pager-draw-display))) + + +(defun pager-fill-group-in-all-directions () + "Fill group in all directions" + (pager-fill-group-up) + (pager-fill-group-left) + (pager-fill-group-right) + (pager-fill-group-down)) + + +(define-pager-key (#\f) + (defun b-pager-fill-group () + "Fill group on next arrow action (fill in all directions on second f keypress)" + (case *pager-arrow-action* + (:fill (pager-fill-group-in-all-directions) + (setf *pager-arrow-action* nil)) + (t (setf *pager-arrow-action* :fill))) + (pager-draw-display))) + +(define-pager-key (#\f :mod-1) 'pager-fill-group-in-all-directions) + +(define-pager-key (#\f :shift) + (defun b-pager-fill-group-vert () + "Fill group vertically" + (pager-fill-group-up) + (pager-fill-group-down))) + +(define-pager-key (#\f :control) + (defun b-pager-fill-group-horiz () + "Fill group horizontally" + (pager-fill-group-left) + (pager-fill-group-right))) + + +(define-pager-key (#\l) 'pager-resize-minimal-group) +(define-pager-key (#\l :mod-1) 'pager-resize-down-group) + + + + +(define-pager-key ("Up") + (defun b-pager-move-or-pack-up () + "Move cursor, pack, fill or resize group up" + (let ((action *pager-arrow-action*)) + (setf *pager-arrow-action* nil) + (case action + (:pack (pager-pack-group-up)) + (:fill (pager-fill-group-up)) + (:move (pager-move-group 0 -10)) + (:resize (pager-resize-group 0 -10)) + (:resize-half (pager-resize-half-height-up)) + (t (pager-select-previous-line)))))) + +(define-pager-key ("Down") + (defun b-pager-move-or-pack-down () + "Move cursor, pack, fill or resize group down" + (let ((action *pager-arrow-action*)) + (setf *pager-arrow-action* nil) + (case action + (:pack (pager-pack-group-down)) + (:fill (pager-fill-group-down)) + (:move (pager-move-group 0 10)) + (:resize (pager-resize-group 0 10)) + (:resize-half (pager-resize-half-height-down)) + (t (pager-select-next-line)))))) + +(define-pager-key ("Right") + (defun b-pager-move-or-pack-right () + "Move cursor, pack, fill or resize group right" + (let ((action *pager-arrow-action*)) + (setf *pager-arrow-action* nil) + (case action + (:pack (pager-pack-group-right)) + (:fill (pager-fill-group-right)) + (:move (pager-move-group 10 0)) + (:resize (pager-resize-group 10 0)) + (:resize-half (pager-resize-half-width-right)) + (t (pager-select-workspace-right)))))) + +(define-pager-key ("Left") + (defun b-pager-move-or-pack-left () + "Move cursor, pack, fill or resize group left" + (let ((action *pager-arrow-action*)) + (setf *pager-arrow-action* nil) + (case action + (:pack (pager-pack-group-left)) + (:fill (pager-fill-group-left)) + (:move (pager-move-group -10 0)) + (:resize (pager-resize-group -10 0)) + (:resize-half (pager-resize-half-width-left)) + (t (pager-select-workspace-left)))))) + +(define-pager-key (#\m) 'pager-center-group) + + +(define-pager-key ("Up" :mod-1) + (defun b-pager-move-up () + "Move group up" + (pager-move-group 0 -10))) + +(define-pager-key ("Down" :mod-1) + (defun b-pager-move-down () + "Move group down" + (pager-move-group 0 +10))) + +(define-pager-key ("Right" :mod-1) + (defun b-pager-move-right () + "Move group right" + (pager-move-group +10 0))) + +(define-pager-key ("Left" :mod-1) + (defun b-pager-move-left () + "Move group left" + (pager-move-group -10 0))) + + +(define-pager-key ("Up" :mod-1 :control) + (defun b-pager-resize-up () + "Resize group up" + (pager-resize-group 0 -10))) + +(define-pager-key ("Down" :mod-1 :control) + (defun b-pager-resize-down () + "Resize group down" + (pager-resize-group 0 +10))) + +(define-pager-key ("Right" :mod-1 :control) + (defun b-pager-resize-right () + "Resize group right" + (pager-resize-group +10 0))) + +(define-pager-key ("Left" :mod-1 :control) + (defun b-pager-resize-left () + "Resize group left" + (pager-resize-group -10 0))) + + +(define-pager-key ("Left" :shift) 'pager-move-group-on-previous-workspace) +(define-pager-key ("Right" :shift) 'pager-move-group-on-next-workspace) +(define-pager-key ("Down" :shift) 'pager-move-window-on-next-line) +(define-pager-key ("Up" :shift) 'pager-move-window-on-previous-line) + +(define-pager-key ("Left" :shift :control) 'pager-copy-group-on-previous-workspace) +(define-pager-key ("Right" :shift :control) 'pager-copy-group-on-next-workspace) + + +(defmacro define-pager-focus-workspace-by-number (key number) + "Define a pager key to focus a workspace by its number" + `(define-pager-key ,key + (defun ,(create-symbol (format nil "b-pager-focus-workspace-~A" number)) () + ,(format nil "Focus workspace ~A" number) + (pager-select-workspace-by-number ,number)))) + + +(define-pager-focus-workspace-by-number (#\1 :mod-1) 1) +(define-pager-focus-workspace-by-number (#\2 :mod-1) 2) +(define-pager-focus-workspace-by-number (#\3 :mod-1) 3) +(define-pager-focus-workspace-by-number (#\4 :mod-1) 4) +(define-pager-focus-workspace-by-number (#\5 :mod-1) 5) +(define-pager-focus-workspace-by-number (#\6 :mod-1) 6) +(define-pager-focus-workspace-by-number (#\7 :mod-1) 7) +(define-pager-focus-workspace-by-number (#\8 :mod-1) 8) +(define-pager-focus-workspace-by-number (#\9 :mod-1) 9) +(define-pager-focus-workspace-by-number (#\0 :mod-1) 10) + +(define-pager-key (#\1 :control :mod-1) 'pager-renumber-workspaces) +(define-pager-key (#\2 :control :mod-1) 'pager-sort-workspaces) + + + +;;;,----- +;;;| Mouse actions +;;;`----- +(defparameter *pager-motion-object* nil) + +(defun mouse-pager-move-selected-group (root-x root-y) + "Move selected group" + (pager-mouse-motion root-x root-y) + (xgrab-pointer *root* 50 51) + (with-group-cursor (workspace group) + (setf *pager-motion-object* (list workspace group)))) + +(defun mouse-pager-move-selected-group-release (root-x root-y) + "Release button" + (pager-mouse-motion root-x root-y) + (xgrab-pointer *root* 68 69) + (when *pager-motion-object* + (destructuring-bind (workspace group) *pager-motion-object* + (let ((new-workspace (find-cursor-workspace))) + (remove-group-in-workspace group workspace) + (add-group-in-workspace group new-workspace))) + (pager-draw-display)) + (setf *pager-motion-object* nil)) + + +(defun mouse-pager-copy-selected-group (root-x root-y) + "Copy selected group" + (mouse-pager-move-selected-group root-x root-y)) + +(defun mouse-pager-copy-selected-group-release (root-x root-y) + "Release button" + (pager-mouse-motion root-x root-y) + (xgrab-pointer *root* 68 69) + (when *pager-motion-object* + (destructuring-bind (workspace group) *pager-motion-object* + (let ((new-workspace (find-cursor-workspace))) + (unless (group-windows-already-in-workspace group new-workspace) + (remove-group-in-workspace group workspace) + (add-group-in-workspace (copy-group group) workspace) + (add-group-in-workspace group new-workspace)))) + (pager-draw-display)) + (setf *pager-motion-object* nil)) + + + + +(defun mouse-pager-move-selected-window (root-x root-y) + "Move selected window" + (pager-mouse-motion root-x root-y) + (xgrab-pointer *root* 50 51) + (with-window-cursor (workspace group window) + (setf *pager-motion-object* (list group window)))) + +(defun mouse-pager-move-selected-window-release (root-x root-y) + "Release button" + (pager-mouse-motion root-x root-y) + (xgrab-pointer *root* 68 69) + (when *pager-motion-object* + (destructuring-bind (group window) *pager-motion-object* + (with-group-cursor (new-workspace new-group) + (remove-window-in-group window group) + (add-window-in-group window new-group) + (add-null-window-in-empty-group group) + (remove-null-window-in-empty-group new-group))) + (pager-draw-display)) + (setf *pager-motion-object* nil)) + + +(defun mouse-pager-copy-selected-window (root-x root-y) + "Copy selected window" + (mouse-pager-move-selected-window root-x root-y)) + +(defun mouse-pager-copy-selected-window-release (root-x root-y) + "Release button" + (pager-mouse-motion root-x root-y) + (xgrab-pointer *root* 68 69) + (when *pager-motion-object* + (destructuring-bind (group window) *pager-motion-object* + (with-group-cursor (new-workspace new-group) + (unless (window-already-in-workspace window new-workspace) + (add-window-in-group window new-group) + (add-null-window-in-empty-group group) + (remove-null-window-in-empty-group new-group)))) + (pager-draw-display)) + (setf *pager-motion-object* nil)) + + +(defun mouse-pager-rotate-window-up (root-x root-y) + "Rotate up windows in selected group" + (pager-mouse-motion root-x root-y) + (pager-rotate-window-up)) + +(defun mouse-pager-rotate-window-down (root-x root-y) + "Rotate down windows in selected group" + (pager-mouse-motion root-x root-y) + (pager-rotate-window-down)) + + + +(defun pager-mouse-motion (root-x root-y) + "Select workspaces" + (let ((num (mod (truncate (/ root-x *pww*)) (length *workspace-list*))) + (line (max (truncate (/ (+ root-y (- *psl*) *plh* -3) *plh*)) 0))) + (unless (= num (pcursor-workspace *pcursor*)) + (pager-draw-cursor) + (setf (pcursor-workspace *pcursor*) num) + (pager-draw-cursor)) + (unless (= line (pcursor-line *pcursor*)) + (pager-draw-cursor t) + (setf (pcursor-line *pcursor*) line) + (pager-draw-cursor t)))) + + + + + +(define-pager-mouse-action (1) 'mouse-pager-move-selected-group + 'mouse-pager-move-selected-group-release) +(define-pager-mouse-action (1 :control) 'mouse-pager-copy-selected-group + 'mouse-pager-copy-selected-group-release) + +(define-pager-mouse-action (2) 'mouse-leave-pager-mode nil) + +(define-pager-mouse-action (3) 'mouse-pager-move-selected-window + 'mouse-pager-move-selected-window-release) +(define-pager-mouse-action (3 :control) 'mouse-pager-copy-selected-window + 'mouse-pager-copy-selected-window-release) + +(define-pager-mouse-action (4) 'mouse-pager-rotate-window-up nil) +(define-pager-mouse-action (5) 'mouse-pager-rotate-window-down nil) + +(define-pager-mouse-action ('Motion) 'pager-mouse-motion nil) Added: bindings-second-mode.fas ============================================================================== --- (empty file) +++ bindings-second-mode.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,317 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 30 (IN-PACKAGE :CLFSWM)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CLFSWM" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|32 46 (DEFUN GROUP-ADDING-MENU NIL ...)-2| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GROUP-ADDING-MENU| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GROUP-ADDING-MENU| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + (((#\a |CLFSWM|::|ADD-DEFAULT-GROUP|) + (#\p |CLFSWM|::|ADD-PLACED-GROUP|)) + |CLFSWM|::|INFO-MODE-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Adding group menu")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|48 52 (DEFUN GROUP-LAYOUT-MENU NIL ...)-3| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GROUP-LAYOUT-MENU| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GROUP-LAYOUT-MENU| + #51Y(00 00 00 00 00 00 00 00 06 01 6B 00 01 03 C6 F9 1B 13 87 03 02 DC + AE 73 02 35 71 29 AF 7B 02 84 00 83 03 85 01 AF 8D 94 69 AC 31 A6 + 16 03 F8 2F 03 19 01) + (|CLFSWM|::|*LAYOUT-LIST*| 0. 97. |CLFSWM|::|INFO-MODE-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Group layout menu")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|58 61 (DEFUN GROUP-PACK-MENU NIL ...)-4| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GROUP-PACK-MENU| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GROUP-PACK-MENU| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + ((("Up" |CLFSWM|::|GROUP-PACK-UP|) ("Down" |CLFSWM|::|GROUP-PACK-DOWN|)) + |CLFSWM|::|INFO-MODE-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Group pack menu")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|64 68 (DEFUN GROUP-MOVEMENT-MENU NIL ...)-5| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GROUP-MOVEMENT-MENU| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GROUP-MOVEMENT-MENU| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + (((#\p |CLFSWM|::|GROUP-PACK-MENU|) (#\f |CLFSWM|::|GROUP-FILL-MENU|) + (#\r |CLFSWM|::|GROUP-RESIZE-MENU|)) + |CLFSWM|::|INFO-MODE-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Group movement menu")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|71 74 (DEFUN GROUP-PACK-UP NIL ...)-6| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GROUP-PACK-UP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GROUP-PACK-UP| + #19Y(00 00 00 00 00 00 00 00 06 01 DA 38 01 31 84 2E 01 19 01) + (|CLFSWM|::|PACK-UP| |CLFSWM|::|GROUP-MOVEMENT-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Pack group up")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|76 79 (DEFUN GROUP-PACK-DOWN NIL ...)-7| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GROUP-PACK-DOWN| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GROUP-PACK-DOWN| + #19Y(00 00 00 00 00 00 00 00 06 01 DA 38 01 31 84 2E 01 19 01) + (|CLFSWM|::|PACK-DOWN| |CLFSWM|::|GROUP-MOVEMENT-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Pack group down")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|87 93 (DEFUN ACTION-BY-NAME-MENU NIL ...)-8| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|ACTION-BY-NAME-MENU| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|ACTION-BY-NAME-MENU| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + (((#\f |CLFSWM|::|FOCUS-GROUP-BY-NAME|) + (#\o |CLFSWM|::|OPEN-GROUP-BY-NAME|) + (#\d |CLFSWM|::|DELETE-GROUP-BY-NAME|) + (#\m |CLFSWM|::|MOVE-CURRENT-CHILD-BY-NAME|) + (#\c |CLFSWM|::|COPY-CURRENT-CHILD-BY-NAME|)) + |CLFSWM|::|INFO-MODE-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Actions by name menu")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|95 101 (DEFUN ACTION-BY-NUMBER-MENU NIL ...)-9| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|ACTION-BY-NUMBER-MENU| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|ACTION-BY-NUMBER-MENU| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + (((#\f |CLFSWM|::|FOCUS-GROUP-BY-NUMBER|) + (#\o |CLFSWM|::|OPEN-GROUP-BY-NUMBER|) + (#\d |CLFSWM|::|DELETE-GROUP-BY-NUMBER|) + (#\m |CLFSWM|::|MOVE-CURRENT-CHILD-BY-NUMBER|) + (#\c |CLFSWM|::|COPY-CURRENT-CHILD-BY-NUMBER|)) + |CLFSWM|::|INFO-MODE-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Actions by number menu")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|104 108 (DEFUN GROUP-MENU NIL ...)-10| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GROUP-MENU| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GROUP-MENU| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + (((#\a |CLFSWM|::|GROUP-ADDING-MENU|) + (#\l |CLFSWM|::|GROUP-LAYOUT-MENU|) + (#\m |CLFSWM|::|GROUP-MOVEMENT-MENU|)) + |CLFSWM|::|INFO-MODE-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Group menu")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|112 119 (DEFUN SELECTION-MENU NIL ...)-11| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SELECTION-MENU| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SELECTION-MENU| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + (((#\x |CLFSWM|::|CUT-CURRENT-CHILD|) + (#\c |CLFSWM|::|COPY-CURRENT-CHILD|) (#\v |CLFSWM|::|PASTE-SELECTION|) + (#\p |CLFSWM|::|PASTE-SELECTION-NO-CLEAR|) + ("Delete" |CLFSWM|::|REMOVE-CURRENT-CHILD|) + (#\z |CLFSWM|::|CLEAR-SELECTION|)) + |CLFSWM|::|INFO-MODE-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Selection menu")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|122 126 (DEFUN UTILITY-MENU NIL ...)-12| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|UTILITY-MENU| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UTILITY-MENU| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + (((#\i |CLFSWM|::|IDENTIFY-KEY|) + (#\: |CLFSWM|::|EVAL-FROM-QUERY-STRING|) + (#\! |CLFSWM|::|RUN-PROGRAM-FROM-QUERY-STRING|)) + |CLFSWM|::|INFO-MODE-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Utility menu")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|128 135 (DEFUN MAIN-MENU NIL ...)-13| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|MAIN-MENU| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|MAIN-MENU| #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + (((#\g |CLFSWM|::|GROUP-MENU|) (#\s |CLFSWM|::|SELECTION-MENU|) + (#\n |CLFSWM|::|ACTION-BY-NAME-MENU|) + (#\u |CLFSWM|::|ACTION-BY-NUMBER-MENU|) + (#\y |CLFSWM|::|UTILITY-MENU|)) + |CLFSWM|::|INFO-MODE-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Open the main menu")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|142 142 (DEFINE-SECOND-KEY ("F1" :MOD-1) 'HELP-ON-SECOND-MODE)-14| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("F1" 8. |CLFSWM|::|HELP-ON-SECOND-MODE| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|144 144 (DEFINE-SECOND-KEY ("m") 'MAIN-MENU)-15| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("m" 0. |CLFSWM|::|MAIN-MENU| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|145 145 (DEFINE-SECOND-KEY ("g") 'GROUP-MENU)-16| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("g" 0. |CLFSWM|::|GROUP-MENU| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|146 146 (DEFINE-SECOND-KEY ("n") 'ACTION-BY-NAME-MENU)-17| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("n" 0. |CLFSWM|::|ACTION-BY-NAME-MENU| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|147 147 (DEFINE-SECOND-KEY ("u") 'ACTION-BY-NUMBER-MENU)-18| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("u" 0. |CLFSWM|::|ACTION-BY-NUMBER-MENU| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|150 152 (DEFINE-SECOND-KEY (#\\i) 'IDENTIFY-KEY)-19| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + (#\i 0. |CLFSWM|::|IDENTIFY-KEY| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|153 153 (DEFINE-SECOND-KEY (#\\:) 'EVAL-FROM-QUERY-STRING)-20| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + (#\: 0. |CLFSWM|::|EVAL-FROM-QUERY-STRING| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|155 155 (DEFINE-SECOND-KEY (#\\!) 'RUN-PROGRAM-FROM-QUERY-STRING)-21| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + (#\! 0. |CLFSWM|::|RUN-PROGRAM-FROM-QUERY-STRING| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|158 158 (DEFINE-SECOND-KEY (#\\t) 'LEAVE-SECOND-MODE)-22| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + (#\t 0. |CLFSWM|::|LEAVE-SECOND-MODE| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|159 159 (DEFINE-SECOND-KEY ("Return") 'LEAVE-SECOND-MODE)-23| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Return" 0. |CLFSWM|::|LEAVE-SECOND-MODE| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|160 160 (DEFINE-SECOND-KEY ("Escape") 'LEAVE-SECOND-MODE)-24| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Escape" 0. |CLFSWM|::|LEAVE-SECOND-MODE| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|163 163 (DEFINE-SECOND-KEY (#\\< :CONTROL) 'LEAVE-SECOND-MODE)-25| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + (#\< 4. |CLFSWM|::|LEAVE-SECOND-MODE| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|168 168 (DEFINE-SECOND-KEY ("Home" :MOD-1 :CONTROL ...) 'QUIT-CLFSWM)-26| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Home" 13. |CLFSWM|::|QUIT-CLFSWM| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|170 170 (DEFINE-SECOND-KEY ("Right" :MOD-1) 'SELECT-NEXT-BROTHER)-27| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Right" 8. |CLFSWM|::|SELECT-NEXT-BROTHER| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|171 171 (DEFINE-SECOND-KEY ("Left" :MOD-1) 'SELECT-PREVIOUS-BROTHER)-28| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Left" 8. |CLFSWM|::|SELECT-PREVIOUS-BROTHER| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|173 173 (DEFINE-SECOND-KEY ("Down" :MOD-1) 'SELECT-NEXT-LEVEL)-29| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Down" 8. |CLFSWM|::|SELECT-NEXT-LEVEL| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|174 174 (DEFINE-SECOND-KEY ("Up" :MOD-1) 'SELECT-PREVIOUS-LEVEL)-30| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Up" 8. |CLFSWM|::|SELECT-PREVIOUS-LEVEL| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|176 176 (DEFINE-SECOND-KEY ("Tab" :MOD-1) 'SELECT-NEXT-CHILD)-31| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Tab" 8. |CLFSWM|::|SELECT-NEXT-CHILD| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|177 177 (DEFINE-SECOND-KEY ("Tab" :MOD-1 :SHIFT) 'SELECT-PREVIOUS-CHILD)-32| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Tab" 9. |CLFSWM|::|SELECT-PREVIOUS-CHILD| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|179 179 (DEFINE-SECOND-KEY ("Return" :MOD-1) 'ENTER-GROUP)-33| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Return" 8. |CLFSWM|::|ENTER-GROUP| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|180 180 (DEFINE-SECOND-KEY ("Return" :MOD-1 :SHIFT) 'LEAVE-GROUP)-34| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Return" 9. |CLFSWM|::|LEAVE-GROUP| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|182 182 (DEFINE-SECOND-KEY ("Home" :MOD-1) 'SWITCH-TO-ROOT-GROUP)-35| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Home" 8. |CLFSWM|::|SWITCH-TO-ROOT-GROUP| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|183 183 (DEFINE-SECOND-KEY ("Home" :MOD-1 :SHIFT) 'SWITCH-AND-SELECT-ROOT-GROUP)-36| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Home" 9. |CLFSWM|::|SWITCH-AND-SELECT-ROOT-GROUP| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|185 185 (DEFINE-SECOND-KEY ("Menu") 'TOGGLE-SHOW-ROOT-GROUP)-37| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Menu" 0. |CLFSWM|::|TOGGLE-SHOW-ROOT-GROUP| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|187 187 (DEFINE-SECOND-KEY (#\\b :MOD-1) 'BANISH-POINTER)-38| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + (#\b 8. |CLFSWM|::|BANISH-POINTER| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|190 191 (DEFINE-SECOND-KEY ("Escape" :CONTROL :SHIFT) 'DELETE-FOCUS-WINDOW)-39| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Escape" 5. |CLFSWM|::|DELETE-FOCUS-WINDOW| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|192 192 (DEFINE-SECOND-KEY ("Escape" :MOD-1 :CONTROL ...) 'DESTROY-FOCUS-WINDOW)-40| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Escape" 13. |CLFSWM|::|DESTROY-FOCUS-WINDOW| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|193 193 (DEFINE-SECOND-KEY ("Escape" :CONTROL) 'REMOVE-FOCUS-WINDOW)-41| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Escape" 4. |CLFSWM|::|REMOVE-FOCUS-WINDOW| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|194 194 (DEFINE-SECOND-KEY ("Escape" :SHIFT) 'UNHIDE-ALL-WINDOWS-IN-CURRENT-CHILD)-42| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Escape" 1. |CLFSWM|::|UNHIDE-ALL-WINDOWS-IN-CURRENT-CHILD| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|197 198 (DEFINE-SECOND-KEY ("x" :CONTROL) 'CUT-CURRENT-CHILD)-43| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("x" 4. |CLFSWM|::|CUT-CURRENT-CHILD| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|199 199 (DEFINE-SECOND-KEY ("x" :CONTROL :MOD-1) 'CLEAR-SELECTION)-44| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("x" 12. |CLFSWM|::|CLEAR-SELECTION| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|200 200 (DEFINE-SECOND-KEY ("c" :CONTROL) 'COPY-CURRENT-CHILD)-45| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("c" 4. |CLFSWM|::|COPY-CURRENT-CHILD| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|201 201 (DEFINE-SECOND-KEY ("v" :CONTROL) 'PASTE-SELECTION)-46| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("v" 4. |CLFSWM|::|PASTE-SELECTION| |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|202 202 (DEFINE-SECOND-KEY ("v" :CONTROL :SHIFT) 'PASTE-SELECTION-NO-CLEAR)-47| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("v" 5. |CLFSWM|::|PASTE-SELECTION-NO-CLEAR| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|203 203 (DEFINE-SECOND-KEY ("Delete") 'REMOVE-CURRENT-CHILD)-48| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Delete" 0. |CLFSWM|::|REMOVE-CURRENT-CHILD| + |CLFSWM|::|DEFINE-SECOND-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|209 212 (DEFUN SM-HANDLE-CLICK-TO-FOCUS (ROOT-X ROOT-Y) ...)-49| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SM-HANDLE-CLICK-TO-FOCUS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SM-HANDLE-CLICK-TO-FOCUS| + #19Y(00 00 00 00 02 00 00 00 06 03 AE AE 70 00 AC 2F 01 19 04) + (|CLFSWM|::|FIND-CHILD-UNDER-MOUSE| |CLFSWM|::|HANDLE-CLICK-TO-FOCUS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y|) + "Give the focus to the clicked child")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|214 214 (DEFINE-MOUSE-ACTION (1) 'SM-HANDLE-CLICK-TO-FOCUS)-50| + #22Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 01 02 2D 04 03 19 01) + (1. 0. |CLFSWM|::|SM-HANDLE-CLICK-TO-FOCUS| + |CLFSWM|::|DEFINE-MOUSE-ACTION-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: bindings-second-mode.fasl ============================================================================== Binary file. No diff available. Added: bindings-second-mode.lib ============================================================================== --- (empty file) +++ bindings-second-mode.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,30 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CLFSWM")) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-ADDING-MENU| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-LAYOUT-MENU| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-PACK-MENU| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-MOVEMENT-MENU| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-PACK-UP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-PACK-DOWN| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|ACTION-BY-NAME-MENU| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|ACTION-BY-NUMBER-MENU| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-MENU| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SELECTION-MENU| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|UTILITY-MENU| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|MAIN-MENU| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SM-HANDLE-CLICK-TO-FOCUS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y|))) Added: bindings-second-mode.lisp ============================================================================== --- (empty file) +++ bindings-second-mode.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,731 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Thu Feb 28 21:38:00 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Bindings keys and mouse for second mode +;;; +;;; Note: Mod-1 is the Alt or Meta key, Mod-2 is the Numlock key. +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +;;;,----- +;;;| Second keys +;;;| +;;;| CONFIG - Second mode bindings +;;;`----- + + + +;;;;;;;;;;;;;;; +;; Menu entry +;;;;;;;;;;;;;;; +(defun group-adding-menu () + "Adding group menu" + (info-mode-menu '((#\a add-default-group) + (#\p add-placed-group)))) + +(defun group-layout-menu () + "Group layout menu" + (info-mode-menu (loop for l in *layout-list* + for i from 0 + collect (list (code-char (+ (char-code #\a) i)) l)))) + + + + + +(defun group-pack-menu () + "Group pack menu" + (info-mode-menu '(("Up" group-pack-up) + ("Down" group-pack-down)))) + + +(defun group-movement-menu () + "Group movement menu" + (info-mode-menu '((#\p group-pack-menu) + (#\f group-fill-menu) + (#\r group-resize-menu)))) + + +(defun group-pack-up () + "Pack group up" + (print 'pack-up) + (group-movement-menu)) + +(defun group-pack-down () + "Pack group down" + (print 'pack-down) + (group-movement-menu)) + + + + + + + +(defun action-by-name-menu () + "Actions by name menu" + (info-mode-menu '((#\f focus-group-by-name) + (#\o open-group-by-name) + (#\d delete-group-by-name) + (#\m move-current-child-by-name) + (#\c copy-current-child-by-name)))) + +(defun action-by-number-menu () + "Actions by number menu" + (info-mode-menu '((#\f focus-group-by-number) + (#\o open-group-by-number) + (#\d delete-group-by-number) + (#\m move-current-child-by-number) + (#\c copy-current-child-by-number)))) + + +(defun group-menu () + "Group menu" + (info-mode-menu '((#\a group-adding-menu) + (#\l group-layout-menu) + (#\m group-movement-menu)))) + + + +(defun selection-menu () + "Selection menu" + (info-mode-menu '((#\x cut-current-child) + (#\c copy-current-child) + (#\v paste-selection) + (#\p paste-selection-no-clear) + ("Delete" remove-current-child) + (#\z clear-selection)))) + + +(defun utility-menu () + "Utility menu" + (info-mode-menu '((#\i identify-key) + (#\: eval-from-query-string) + (#\! run-program-from-query-string)))) + +(defun main-menu () + "Open the main menu" + (info-mode-menu '((#\g group-menu) + ;;(#\w window-menu) + (#\s selection-menu) + (#\n action-by-name-menu) + (#\u action-by-number-menu) + (#\y utility-menu)))) + + + + + + +(define-second-key ("F1" :mod-1) 'help-on-second-mode) + +(define-second-key ("m") 'main-menu) +(define-second-key ("g") 'group-menu) +(define-second-key ("n") 'action-by-name-menu) +(define-second-key ("u") 'action-by-number-menu) + + +;;(define-second-key (#\g :control) 'stop-all-pending-actions) + +(define-second-key (#\i) 'identify-key) +(define-second-key (#\:) 'eval-from-query-string) + +(define-second-key (#\!) 'run-program-from-query-string) + + +(define-second-key (#\t) 'leave-second-mode) +(define-second-key ("Return") 'leave-second-mode) +(define-second-key ("Escape") 'leave-second-mode) + + +(define-second-key (#\< :control) 'leave-second-mode) + + + + +(define-second-key ("Home" :mod-1 :control :shift) 'quit-clfswm) + +(define-second-key ("Right" :mod-1) 'select-next-brother) +(define-second-key ("Left" :mod-1) 'select-previous-brother) + +(define-second-key ("Down" :mod-1) 'select-next-level) +(define-second-key ("Up" :mod-1) 'select-previous-level) + +(define-second-key ("Tab" :mod-1) 'select-next-child) +(define-second-key ("Tab" :mod-1 :shift) 'select-previous-child) + +(define-second-key ("Return" :mod-1) 'enter-group) +(define-second-key ("Return" :mod-1 :shift) 'leave-group) + +(define-second-key ("Home" :mod-1) 'switch-to-root-group) +(define-second-key ("Home" :mod-1 :shift) 'switch-and-select-root-group) + +(define-second-key ("Menu") 'toggle-show-root-group) + +(define-second-key (#\b :mod-1) 'banish-pointer) + + +;;;; Escape +(define-second-key ("Escape" :control :shift) 'delete-focus-window) +(define-second-key ("Escape" :mod-1 :control :shift) 'destroy-focus-window) +(define-second-key ("Escape" :control) 'remove-focus-window) +(define-second-key ("Escape" :shift) 'unhide-all-windows-in-current-child) + + +;;; Selection +(define-second-key ("x" :control) 'cut-current-child) +(define-second-key ("x" :control :mod-1) 'clear-selection) +(define-second-key ("c" :control) 'copy-current-child) +(define-second-key ("v" :control) 'paste-selection) +(define-second-key ("v" :control :shift) 'paste-selection-no-clear) +(define-second-key ("Delete") 'remove-current-child) + + + + + +(defun sm-handle-click-to-focus (root-x root-y) + "Give the focus to the clicked child" + (let ((win (find-child-under-mouse root-x root-y))) + (handle-click-to-focus win))) + +(define-mouse-action (1) 'sm-handle-click-to-focus) + + + + + + +;;;; Escape +;;(define-second-key ("Escape" :control :shift) 'delete-current-window) +;;(define-second-key ("Escape" :mod-1 :control :shift) 'destroy-current-window) +;;(define-second-key ("Escape" :control) 'remove-current-window) +;;(define-second-key ("Escape" :shift) 'unhide-all-windows-in-current-group) +;; +;; +;;;; Up +;;(define-second-key ("Up" :mod-1) 'circulate-group-up) +;;(define-second-key ("Up" :mod-1 :shift) 'circulate-group-up-move-window) +;;(define-second-key ("Up" :mod-1 :shift :control) 'circulate-group-up-copy-window) +;; +;; +;;;; Down +;;(define-second-key ("Down" :mod-1) 'circulate-group-down) +;;(define-second-key ("Down" :mod-1 :shift) 'circulate-group-down-move-window) +;;(define-second-key ("Down" :mod-1 :shift :control) 'circulate-group-down-copy-window) +;; +;; +;;;; Right +;;(define-second-key ("Right" :mod-1) 'circulate-workspace-up) +;;(define-second-key ("Right" :mod-1 :shift) 'circulate-workspace-up-move-group) +;;(define-second-key ("Right" :mod-1 :shift :control) 'circulate-workspace-up-copy-group) +;; +;; +;;;; Left +;;(define-second-key ("Left" :mod-1) 'circulate-workspace-down) +;;(define-second-key ("Left" :mod-1 :shift) 'circulate-workspace-down-move-group) +;;(define-second-key ("Left" :mod-1 :shift :control) 'circulate-workspace-down-copy-group) +;; +;; +;;(defmacro define-second-focus-workspace-by-number (key number) +;; "Define a second key to focus a workspace by its number" +;; `(define-second-key ,key +;; (defun ,(create-symbol (format nil "b-second-focus-workspace-~A" number)) () +;; ,(format nil "Focus workspace ~A" number) +;; (circulate-workspace-by-number ,number)))) +;; +;;(define-second-focus-workspace-by-number (#\1 :mod-1) 1) +;;(define-second-focus-workspace-by-number (#\2 :mod-1) 2) +;;(define-second-focus-workspace-by-number (#\3 :mod-1) 3) +;;(define-second-focus-workspace-by-number (#\4 :mod-1) 4) +;;(define-second-focus-workspace-by-number (#\5 :mod-1) 5) +;;(define-second-focus-workspace-by-number (#\6 :mod-1) 6) +;;(define-second-focus-workspace-by-number (#\7 :mod-1) 7) +;;(define-second-focus-workspace-by-number (#\8 :mod-1) 8) +;;(define-second-focus-workspace-by-number (#\9 :mod-1) 9) +;;(define-second-focus-workspace-by-number (#\0 :mod-1) 10) +;; +;;(define-second-key (#\1 :control :mod-1) 'renumber-workspaces) +;;(define-second-key (#\2 :control :mod-1) 'sort-workspaces) +;; +;; +;; +;; +;; +;;(define-second-key ("Tab" :mod-1) 'rotate-window-up) +;;(define-second-key ("Tab" :mod-1 :shift) 'rotate-window-down) +;; +;;(define-second-key (#\b) 'banish-pointer) +;; +;;(define-second-key (#\b :mod-1) 'toggle-maximize-current-group) +;; +;;(define-second-key (#\x) 'pager-mode) +;; +;; +;;(define-second-key (#\k :mod-1) 'destroy-current-window) +;;(define-second-key (#\k) 'remove-current-window) +;; +;; +;;(define-second-key (#\g) 'create-new-default-group) +;;(define-second-key (#\g :mod-1) 'remove-current-group) +;; +;;(define-second-key (#\w) 'create-new-default-workspace) +;;(define-second-key (#\w :mod-1) 'remove-current-workspace) +;; +;;(define-second-key (#\o) +;; (defun b-open-next-window-in-new-workspace () +;; "Open the next window in a new workspace" +;; (setf *open-next-window-in-new-workspace* t) +;; (leave-second-mode))) +;; +;;(define-second-key (#\o :control) +;; (defun b-open-next-window-in-workspace-numbered () +;; "Open the next window in a numbered workspace" +;; (let ((number (parse-integer (or (query-string "Open next window in workspace:") "") +;; :junk-allowed t))) +;; (when (numberp number) +;; (setf *open-next-window-in-new-workspace* number))) +;; (leave-second-mode))) +;; +;; +;;(define-second-key (#\o :mod-1) +;; (defun b-open-next-window-in-new-group-once () +;; "Open the next window in a new group and all others in the same group" +;; (setf *open-next-window-in-new-group* :once) +;; (leave-second-mode))) +;; +;;(define-second-key (#\o :mod-1 :control) +;; (defun b-open-next-window-in-new-group () +;; "Open each next window in a new group" +;; (setf *open-next-window-in-new-group* t) +;; (leave-second-mode))) +;; +;; +;; +;;(defmacro define-shell (key name docstring cmd) +;; "Define a second key to start a shell command" +;; `(define-second-key ,key +;; (defun ,name () +;; ,docstring +;; (setf *second-mode-program* ,cmd) +;; (leave-second-mode)))) +;; +;;(define-shell (#\c) b-start-xterm "start an xterm" "exec xterm") +;;(define-shell (#\e) b-start-emacs "start emacs" "exec emacs") +;;(define-shell (#\e :control) b-start-emacsremote +;; "start an emacs for another user" +;; "exec emacsremote-Eterm") +;;(define-shell (#\h) b-start-xclock "start an xclock" "exec xclock -d") +;; +;; +;;(define-second-key (#\a) 'force-window-center-in-group) +;;(define-second-key (#\a :mod-1) 'force-window-in-group) +;; +;; +;;(define-second-key (#\d :mod-1) +;; (defun b-show-debuging-info () +;; "Show debuging info" +;; (dbg *workspace-list*) +;; (dbg *screen*) +;; (dbg (xlib:query-tree *root*)))) +;; +;;(define-second-key (#\t :control) 'tile-current-workspace-vertically) +;;(define-second-key (#\t :shift :control) 'tile-current-workspace-horizontally) +;; +;;(define-second-key (#\y) 'tile-current-workspace-to) +;;(define-second-key (#\y :mod-1) 'reconfigure-tile-workspace) +;;(define-second-key (#\y :control) 'explode-current-group) +;;(define-second-key (#\y :control :shift) 'implode-current-group) +;; +;;;;;,----- +;;;;;| Moving/Resizing groups +;;;;;`----- +;;(define-second-key (#\p) +;; (defun b-pack-group-on-next-arrow () +;; "Pack group on next arrow action" +;; (setf *arrow-action* :pack))) +;; +;; +;;(defun fill-group-in-all-directions () +;; "Fill group in all directions" +;; (fill-current-group-up) +;; (fill-current-group-left) +;; (fill-current-group-right) +;; (fill-current-group-down)) +;; +;; +;;(define-second-key (#\f) +;; (defun b-fill-group () +;; "Fill group on next arrow action (fill in all directions on second f keypress)" +;; (case *arrow-action* +;; (:fill (fill-group-in-all-directions) +;; (setf *arrow-action* nil)) +;; (t (setf *arrow-action* :fill))))) +;; +;;(define-second-key (#\f :mod-1) 'fill-group-in-all-directions) +;; +;;(define-second-key (#\f :shift) +;; (defun b-fill-group-vert () +;; "Fill group vertically" +;; (fill-current-group-up) +;; (fill-current-group-down))) +;; +;;(define-second-key (#\f :control) +;; (defun b-fill-group-horiz () +;; "Fill group horizontally" +;; (fill-current-group-left) +;; (fill-current-group-right))) +;; +;; +;;(define-second-key (#\r) +;; (defun b-resize-half () +;; "Resize group to its half width or heigth on next arraw action" +;; (setf *arrow-action* :resize-half))) +;; +;; +;;(define-second-key (#\l) 'resize-minimal-current-group) +;;(define-second-key (#\l :mod-1) 'resize-down-current-group) +;; +;; +;;(define-second-key (#\m) 'center-current-group) +;; +;; +;;(define-second-key ("Up") +;; (defun b-move-or-pack-up () +;; "Move, pack, fill or resize group up" +;; (case *arrow-action* +;; (:pack (pack-current-group-up)) +;; (:fill (fill-current-group-up)) +;; (:resize-half (resize-half-height-up-current-group)) +;; (t (move-group (current-group) 0 -10))) +;; (setf *arrow-action* nil))) +;; +;;(define-second-key ("Down") +;; (defun b-move-or-pack-down () +;; "Move, pack, fill or resize group down" +;; (case *arrow-action* +;; (:pack (pack-current-group-down)) +;; (:fill (fill-current-group-down)) +;; (:resize-half (resize-half-height-down-current-group)) +;; (t (move-group (current-group) 0 +10))) +;; (setf *arrow-action* nil))) +;; +;;(define-second-key ("Right") +;; (defun b-move-or-pack-right () +;; "Move, pack, fill or resize group right" +;; (case *arrow-action* +;; (:pack (pack-current-group-right)) +;; (:fill (fill-current-group-right)) +;; (:resize-half (resize-half-width-right-current-group)) +;; (t (move-group (current-group) +10 0))) +;; (setf *arrow-action* nil))) +;; +;;(define-second-key ("Left") +;; (defun b-move-or-pack-left () +;; "Move, pack, fill or resize group left" +;; (case *arrow-action* +;; (:pack (pack-current-group-left)) +;; (:fill (fill-current-group-left)) +;; (:resize-half (resize-half-width-left-current-group)) +;; (t (move-group (current-group) -10 0))) +;; (setf *arrow-action* nil))) +;; +;; +;;(define-second-key ("Up" :shift) +;; (defun b-resize-up () +;; "Resize group up" +;; (resize-group (current-group) 0 -10))) +;; +;;(define-second-key ("Down" :shift) +;; (defun b-resize-down () +;; "Resize group down" +;; (resize-group (current-group) 0 +10))) +;; +;;(define-second-key ("Right" :shift) +;; (defun b-resize-right () +;; "Resize group right" +;; (resize-group (current-group) +10 0))) +;; +;;(define-second-key ("Left" :shift) +;; (defun b-resize-left () +;; "Resize group left" +;; (resize-group (current-group) -10 0))) +;; +;; +;;;;;,----- +;;;;;| Mouse second mode functions +;;;;;`----- +;;(defun select-group-under-mouse (root-x root-y) +;; (let ((group (find-group-under-mouse root-x root-y))) +;; (when group +;; (no-focus) +;; (focus-group group (current-workspace)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace) nil)))) +;; +;;(defun mouse-leave-second-mode-maximize (root-x root-y) +;; "Leave second mode and maximize current group" +;; (select-group-under-mouse root-x root-y) +;; (maximize-group (current-group)) +;; (show-all-windows-in-workspace (current-workspace)) +;; (throw 'exit-second-loop nil)) +;; +;;(defun mouse-leave-second-mode (root-x root-y) +;; "Leave second mode" +;; (select-group-under-mouse root-x root-y) +;; (show-all-windows-in-workspace (current-workspace)) +;; (throw 'exit-second-loop nil)) +;; +;; +;; +;; +;;(defun mouse-circulate-window-up (root-x root-y) +;; "Rotate window up" +;; (declare (ignore root-x root-y)) +;; (rotate-window-up)) +;; +;; +;;(defun mouse-circulate-window-down (root-x root-y) +;; "Rotate window down" +;; (declare (ignore root-x root-y)) +;; (rotate-window-down)) +;; +;; +;; +;;(defun mouse-circulate-workspace-up (root-x root-y) +;; "Circulate up in workspaces" +;; (declare (ignore root-x root-y)) +;; (circulate-workspace-up)) +;; +;; +;;(defun mouse-circulate-workspace-down (root-x root-y) +;; "Circulate down in workspaces" +;; (declare (ignore root-x root-y)) +;; (circulate-workspace-down)) +;; +;; +;; +;; +;;(defun init-motion-vars () +;; (setf *motion-action* nil +;; *motion-object* nil +;; *motion-start-group* nil +;; *motion-dx* nil +;; *motion-dy* nil)) +;; +;; +;;(let ((accept-motion t) +;; (selected-group nil)) +;; (defun mouse-motion (root-x root-y) +;; "Move or resize group. Move window from a group to another. +;;Go to top left or rigth corner to change workspaces." +;; (let ((group (find-group-under-mouse root-x root-y))) +;; (unless (equal selected-group group) +;; (select-group-under-mouse root-x root-y) +;; (setf selected-group group))) +;; (if (<= root-y 5) +;; (cond ((and accept-motion (<= root-x 5)) +;; (case *motion-action* +;; (:move-group +;; (remove-group-in-workspace *motion-object* (current-workspace)))) +;; (circulate-workspace-down) +;; (minimize-group (current-group)) +;; (case *motion-action* +;; (:move-group +;; (add-group-in-workspace *motion-object* (current-workspace)))) +;; (warp-pointer *root* (1- (xlib:screen-width *screen*)) 100) +;; (setf accept-motion nil)) +;; ((and accept-motion (>= root-x (- (xlib:screen-width *screen*) 5))) +;; (case *motion-action* +;; (:move-group +;; (remove-group-in-workspace *motion-object* (current-workspace)))) +;; (circulate-workspace-up) +;; (minimize-group (current-group)) +;; (case *motion-action* +;; (:move-group +;; (add-group-in-workspace *motion-object* (current-workspace)))) +;; (warp-pointer *root* 0 100) +;; (setf accept-motion nil)) +;; (t (setf accept-motion t))) +;; (setf accept-motion t)) +;; (case *motion-action* +;; (:move-group +;; (hide-group *root* *motion-object*) +;; (setf (group-x *motion-object*) (+ root-x *motion-dx*) +;; (group-y *motion-object*) (+ root-y *motion-dy*)) +;; (show-group *root* *root-gc* *motion-object*) +;; (adapt-all-window-in-group *motion-object*) +;; (show-all-group (current-workspace) nil)) +;; (:resize-group +;; (hide-group *root* *motion-object*) +;; (setf (group-width *motion-object*) (max (+ (group-width *motion-object*) (- root-x *motion-dx*)) 100) +;; (group-height *motion-object*) (max (+ (group-height *motion-object*) (- root-y *motion-dy*)) 100) +;; *motion-dx* root-x *motion-dy* root-y) +;; (show-group *root* *root-gc* *motion-object*) +;; (adapt-all-window-in-group *motion-object*) +;; (show-all-group (current-workspace) nil))))) +;; +;; +;; +;;(defun move-selected-group (root-x root-y) +;; "Move selected group or create a new group on the root window" +;; (select-group-under-mouse root-x root-y) +;; (setf *motion-object* (find-group-under-mouse root-x root-y)) +;; (if *motion-object* +;; (setf *motion-action* :move-group +;; *motion-dx* (- (group-x *motion-object*) root-x) +;; *motion-dy* (- (group-y *motion-object*) root-y)) +;; (progn +;; (setf *motion-object* (make-group :x root-x :y root-y :width 100 :height 100 :fullscreenp nil)) +;; (warp-pointer *root* (+ root-x 100) (+ root-y 100)) +;; (add-group-in-workspace *motion-object* (current-workspace)) +;; (show-all-group (current-workspace)) +;; (setf *motion-action* :resize-group +;; *motion-dx* (+ root-x 100) +;; *motion-dy* (+ root-y 100))))) +;; +;; +;; +;;(defun copy-selected-group (root-x root-y) +;; "Copy selected group" +;; (xgrab-pointer *root* 50 51) +;; (select-group-under-mouse root-x root-y) +;; (setf *motion-object* (find-group-under-mouse root-x root-y)) +;; (when *motion-object* +;; (setf *motion-action* :copy-group +;; *motion-object* (copy-group *motion-object*) +;; *motion-dx* (- (group-x *motion-object*) root-x) +;; *motion-dy* (- (group-y *motion-object*) root-y)))) +;;;; (add-group-in-workspace *motion-object* (current-workspace)))) +;; +;; +;; +;;(defun release-move-selected-group (root-x root-y) +;; "Release button" +;; (when *motion-object* +;; (case *motion-action* +;; (:move-group +;; (move-group-to *motion-object* (+ root-x *motion-dx*) (+ root-y *motion-dy*))) +;; (:resize-group +;; (resize-group *motion-object* 0 0)))) +;; (init-motion-vars) +;; (select-group-under-mouse root-x root-y)) +;; +;; +;;(defun release-copy-selected-group (root-x root-y) +;; "Release button" +;; (xgrab-pointer *root* 66 67) +;; (when *motion-object* +;; (unless (group-windows-already-in-workspace *motion-object* (current-workspace)) +;; (add-group-in-workspace *motion-object* (current-workspace)) +;; (move-group-to *motion-object* (+ root-x *motion-dx*) (+ root-y *motion-dy*)))) +;; (init-motion-vars) +;; (select-group-under-mouse root-x root-y) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;; +;;(defun resize-selected-group (root-x root-y) +;; "Resize selected group" +;; (select-group-under-mouse root-x root-y) +;; (setf *motion-object* (find-group-under-mouse root-x root-y)) +;; (when *motion-object* +;; (setf *motion-action* :resize-group +;; *motion-dx* root-x +;; *motion-dy* root-y))) +;; +;; +;;(defun release-resize-selected-group (root-x root-y) +;; "Release button" +;; (when *motion-object* +;; (resize-group *motion-object* 0 0)) +;; (init-motion-vars) +;; (select-group-under-mouse root-x root-y)) +;; +;; +;; +;;(defun move-selected-window (root-x root-y) +;; "Move selected window" +;; (xgrab-pointer *root* 50 51) +;; (select-group-under-mouse root-x root-y) +;; (setf *motion-object* (current-window) +;; *motion-action* :move-window) +;; (when *motion-object* +;; (setf *motion-start-group* (current-group)))) +;; +;; +;;(defun release-move-selected-window (root-x root-y) +;; "Release button" +;; (xgrab-pointer *root* 66 67) +;; (select-group-under-mouse root-x root-y) +;; (when *motion-object* +;; (remove-window-in-group *motion-object* *motion-start-group*) +;; (add-window-in-group *motion-object* (current-group))) +;; (init-motion-vars) +;; (select-group-under-mouse root-x root-y) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;; +;;(defun copy-selected-window (root-x root-y) +;; "Copy selected window" +;; (move-selected-window root-x root-y) +;; (setf *motion-action* :copy-window)) +;; +;;(defun release-copy-selected-window (root-x root-y) +;; "Release button" +;; (xgrab-pointer *root* 66 67) +;; (select-group-under-mouse root-x root-y) +;; (when *motion-object* +;; (unless (window-already-in-workspace *motion-object* (current-workspace)) +;; (add-window-in-group *motion-object* (current-group)))) +;; (init-motion-vars) +;; (select-group-under-mouse root-x root-y) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;; +;; +;; +;; +;;(define-mouse-action (1) 'move-selected-group 'release-move-selected-group) +;;(define-mouse-action (1 :mod-1) 'resize-selected-group 'release-resize-selected-group) +;;(define-mouse-action (1 :control) 'copy-selected-group 'release-copy-selected-group) +;; +;;(define-mouse-action (2) nil 'mouse-leave-second-mode-maximize) +;;(define-mouse-action (2 :control) nil 'mouse-leave-second-mode) +;; +;;(define-mouse-action (3) 'move-selected-window 'release-move-selected-window) +;;(define-mouse-action (3 :control) 'copy-selected-window 'release-copy-selected-window) +;; +;; +;;(define-mouse-action (4) 'mouse-circulate-window-up nil) +;;(define-mouse-action (5) 'mouse-circulate-window-down nil) +;; +;;(define-mouse-action (4 :mod-1) 'mouse-circulate-workspace-up nil) +;;(define-mouse-action (5 :mod-1) 'mouse-circulate-workspace-down nil) +;; +;;(define-mouse-action ('Motion) 'mouse-motion nil) + Added: bindings-second-mode.lisp.bak ============================================================================== --- (empty file) +++ bindings-second-mode.lisp.bak Sat Mar 1 07:36:13 2008 @@ -0,0 +1,573 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Sat Dec 22 23:31:58 2007 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Bindings keys and mouse for second mode +;;; +;;; Note: Mod-1 is the Alt or Meta key, Mod-2 is the Numlock key. +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +;;;,----- +;;;| Second keys +;;;| +;;;| CONFIG - Second mode bindings +;;;`----- +(defun leave-second-mode-maximize () + "Leave second mode and maximize current group" + (maximize-group (current-group)) + (banish-pointer) + (show-all-windows-in-workspace (current-workspace)) + (throw 'exit-second-loop nil)) + +(defun leave-second-mode () + "Leave second mode" + (banish-pointer) + (show-all-windows-in-workspace (current-workspace)) + (throw 'exit-second-loop nil)) + + +(define-second-key ("F1" :mod-1) 'help-on-second-mode) + +(define-second-key (#\g :control) 'stop-all-pending-actions) + +(define-second-key (#\i) 'identify-key) + +(define-second-key (#\:) 'eval-from-query-string) + + +(defun run-program-from-query-string () + "Run a program from the query input" + (let ((program (query-string "Run:"))) + (when (and program (not (equal program ""))) + (do-shell program) + (leave-second-mode)))) + +(define-second-key (#\!) 'run-program-from-query-string) + + +(define-second-key (#\t) 'leave-second-mode-maximize) +(define-second-key (#\Return) 'leave-second-mode-maximize) +(define-second-key ("Escape") 'leave-second-mode) + + +(define-second-key (#\< :control) 'leave-second-mode) +(define-second-key (#\Return :control) 'leave-second-mode) + +;; Escape +(define-second-key ("Escape" :control :shift) 'delete-current-window) +(define-second-key ("Escape" :mod-1 :control :shift) 'destroy-current-window) +(define-second-key ("Escape" :control) 'remove-current-window) +(define-second-key ("Escape" :shift) 'unhide-all-windows-in-current-group) + + +;; Up +(define-second-key ("Up" :mod-1) 'circulate-group-up) +(define-second-key ("Up" :mod-1 :shift) 'circulate-group-up-move-window) +(define-second-key ("Up" :mod-1 :shift :control) 'circulate-group-up-copy-window) + + +;; Down +(define-second-key ("Down" :mod-1) 'circulate-group-down) +(define-second-key ("Down" :mod-1 :shift) 'circulate-group-down-move-window) +(define-second-key ("Down" :mod-1 :shift :control) 'circulate-group-down-copy-window) + + +;; Right +(define-second-key ("Right" :mod-1) 'circulate-workspace-up) +(define-second-key ("Right" :mod-1 :shift) 'circulate-workspace-up-move-group) +(define-second-key ("Right" :mod-1 :shift :control) 'circulate-workspace-up-copy-group) + + +;; Left +(define-second-key ("Left" :mod-1) 'circulate-workspace-down) +(define-second-key ("Left" :mod-1 :shift) 'circulate-workspace-down-move-group) +(define-second-key ("Left" :mod-1 :shift :control) 'circulate-workspace-down-copy-group) + + +(defmacro define-second-focus-workspace-by-number (key number) + "Define a second key to focus a workspace by its number" + `(define-second-key ,key + (defun ,(create-symbol (format nil "b-second-focus-workspace-~A" number)) () + ,(format nil "Focus workspace ~A" number) + (circulate-workspace-by-number ,number)))) + +(define-second-focus-workspace-by-number (#\1 :mod-1) 1) +(define-second-focus-workspace-by-number (#\2 :mod-1) 2) +(define-second-focus-workspace-by-number (#\3 :mod-1) 3) +(define-second-focus-workspace-by-number (#\4 :mod-1) 4) +(define-second-focus-workspace-by-number (#\5 :mod-1) 5) +(define-second-focus-workspace-by-number (#\6 :mod-1) 6) +(define-second-focus-workspace-by-number (#\7 :mod-1) 7) +(define-second-focus-workspace-by-number (#\8 :mod-1) 8) +(define-second-focus-workspace-by-number (#\9 :mod-1) 9) +(define-second-focus-workspace-by-number (#\0 :mod-1) 10) + +(define-second-key (#\1 :control :mod-1) 'renumber-workspaces) +(define-second-key (#\2 :control :mod-1) 'sort-workspaces) + + + + + +(define-second-key (#\Tab :mod-1) 'rotate-window-up) +(define-second-key (#\Tab :mod-1 :shift) 'rotate-window-down) + +(define-second-key (#\b) 'banish-pointer) + +(define-second-key (#\b :mod-1) 'toggle-maximize-current-group) + +(define-second-key (#\x) 'pager-mode) + + +(define-second-key (#\k :mod-1) 'destroy-current-window) +(define-second-key (#\k) 'remove-current-window) + + +(define-second-key (#\g) 'create-new-default-group) +(define-second-key (#\g :mod-1) 'remove-current-group) + +(define-second-key (#\w) 'create-new-default-workspace) +(define-second-key (#\w :mod-1) 'remove-current-workspace) + +(define-second-key (#\o) + (defun b-open-next-window-in-new-workspace () + "Open the next window in a new workspace" + (setf *open-next-window-in-new-workspace* t) + (leave-second-mode))) + +(define-second-key (#\o :control) + (defun b-open-next-window-in-workspace-numbered () + "Open the next window in a numbered workspace" + (let ((number (parse-integer (or (query-string "Open next window in workspace:") "") + :junk-allowed t))) + (when (numberp number) + (setf *open-next-window-in-new-workspace* number))) + (leave-second-mode))) + + +(define-second-key (#\o :mod-1) + (defun b-open-next-window-in-new-group-once () + "Open the next window in a new group and all others in the same group" + (setf *open-next-window-in-new-group* :once) + (leave-second-mode))) + +(define-second-key (#\o :mod-1 :control) + (defun b-open-next-window-in-new-group () + "Open each next window in a new group" + (setf *open-next-window-in-new-group* t) + (leave-second-mode))) + + + +(defmacro define-shell (key name docstring cmd) + "Define a second key to start a shell command" + `(define-second-key ,key + (defun ,name () + ,docstring + (do-shell ,cmd) + (leave-second-mode)))) + +(define-shell (#\c) b-start-xterm "start an xterm" "exec xterm") +(define-shell (#\e) b-start-emacs "start emacs" "exec emacs") +(define-shell (#\e :control) b-start-emacsremote + "start an emacs for another user" + "exec emacsremote-Eterm") +(define-shell (#\h) b-start-xclock "start an xclock" "exec xclock -d") + + +(define-second-key (#\a) 'force-window-center-in-group) +(define-second-key (#\a :mod-1) 'force-window-in-group) + + +(define-second-key (#\d :mod-1) + (defun b-show-debuging-info () + "Show debuging info" + (dbg *workspace-list*) + (dbg *screen*) + (dbg (query-tree *root*)))) + +(define-second-key (#\t :control) 'tile-current-workspace-vertically) +(define-second-key (#\t :shift :control) 'tile-current-workspace-horizontally) + +(define-second-key (#\y) 'tile-current-workspace-to) +(define-second-key (#\y :mod-1) 'reconfigure-tile-workspace) +(define-second-key (#\y :control) 'explode-current-group) +(define-second-key (#\y :control :shift) 'implode-current-group) + +;;;,----- +;;;| Moving/Resizing groups +;;;`----- +(define-second-key (#\p) + (defun b-pack-group-on-next-arrow () + "Pack group on next arrow action" + (setf *arrow-action* :pack))) + + +(defun fill-group-in-all-directions () + "Fill group in all directions" + (fill-current-group-up) + (fill-current-group-left) + (fill-current-group-right) + (fill-current-group-down)) + + +(define-second-key (#\f) + (defun b-fill-group () + "Fill group on next arrow action (fill in all directions on second f keypress)" + (case *arrow-action* + (:fill (fill-group-in-all-directions) + (setf *arrow-action* nil)) + (t (setf *arrow-action* :fill))))) + +(define-second-key (#\f :mod-1) 'fill-group-in-all-directions) + +(define-second-key (#\f :shift) + (defun b-fill-group-vert () + "Fill group vertically" + (fill-current-group-up) + (fill-current-group-down))) + +(define-second-key (#\f :control) + (defun b-fill-group-horiz () + "Fill group horizontally" + (fill-current-group-left) + (fill-current-group-right))) + + +(define-second-key (#\r) + (defun b-resize-half () + "Resize group to its half width or heigth on next arraw action" + (setf *arrow-action* :resize-half))) + + +(define-second-key (#\l) 'resize-minimal-current-group) +(define-second-key (#\l :mod-1) 'resize-down-current-group) + + +(define-second-key (#\m) 'center-current-group) + + +(define-second-key ("Up") + (defun b-move-or-pack-up () + "Move, pack, fill or resize group up" + (case *arrow-action* + (:pack (pack-current-group-up)) + (:fill (fill-current-group-up)) + (:resize-half (resize-half-height-up-current-group)) + (t (move-group (current-group) 0 -10))) + (setf *arrow-action* nil))) + +(define-second-key ("Down") + (defun b-move-or-pack-down () + "Move, pack, fill or resize group down" + (case *arrow-action* + (:pack (pack-current-group-down)) + (:fill (fill-current-group-down)) + (:resize-half (resize-half-height-down-current-group)) + (t (move-group (current-group) 0 +10))) + (setf *arrow-action* nil))) + +(define-second-key ("Right") + (defun b-move-or-pack-right () + "Move, pack, fill or resize group right" + (case *arrow-action* + (:pack (pack-current-group-right)) + (:fill (fill-current-group-right)) + (:resize-half (resize-half-width-right-current-group)) + (t (move-group (current-group) +10 0))) + (setf *arrow-action* nil))) + +(define-second-key ("Left") + (defun b-move-or-pack-left () + "Move, pack, fill or resize group left" + (case *arrow-action* + (:pack (pack-current-group-left)) + (:fill (fill-current-group-left)) + (:resize-half (resize-half-width-left-current-group)) + (t (move-group (current-group) -10 0))) + (setf *arrow-action* nil))) + + +(define-second-key ("Up" :shift) + (defun b-resize-up () + "Resize group up" + (resize-group (current-group) 0 -10))) + +(define-second-key ("Down" :shift) + (defun b-resize-down () + "Resize group down" + (resize-group (current-group) 0 +10))) + +(define-second-key ("Right" :shift) + (defun b-resize-right () + "Resize group right" + (resize-group (current-group) +10 0))) + +(define-second-key ("Left" :shift) + (defun b-resize-left () + "Resize group left" + (resize-group (current-group) -10 0))) + + +;;;,----- +;;;| Mouse second mode functions +;;;`----- +(defun select-group-under-mouse (root-x root-y) + (let ((group (find-group-under-mouse root-x root-y))) + (when group + (no-focus) + (focus-group group (current-workspace)) + (focus-window (current-window)) + (show-all-group (current-workspace))))) + +(defun mouse-leave-second-mode-maximize (root-x root-y) + "Leave second mode and maximize current group" + (select-group-under-mouse root-x root-y) + (maximize-group (current-group)) + (show-all-windows-in-workspace (current-workspace)) + (throw 'exit-second-loop nil)) + +(defun mouse-leave-second-mode (root-x root-y) + "Leave second mode" + (select-group-under-mouse root-x root-y) + (show-all-windows-in-workspace (current-workspace)) + (throw 'exit-second-loop nil)) + + + + +(defun mouse-circulate-window-up (root-x root-y) + "Rotate window up" + (declare (ignore root-x root-y)) + (rotate-window-up)) + + +(defun mouse-circulate-window-down (root-x root-y) + "Rotate window down" + (declare (ignore root-x root-y)) + (rotate-window-down)) + + + +(defun mouse-circulate-workspace-up (root-x root-y) + "Circulate up in workspaces" + (declare (ignore root-x root-y)) + (circulate-workspace-up)) + + +(defun mouse-circulate-workspace-down (root-x root-y) + "Circulate down in workspaces" + (declare (ignore root-x root-y)) + (circulate-workspace-down)) + + + +(defparameter *motion-action* nil) +(defparameter *motion-object* nil) +(defparameter *motion-start-group* nil) +(defparameter *motion-dx* nil) +(defparameter *motion-dy* nil) + + + +(let ((accept-motion t) + (selected-group nil)) + (defun mouse-motion (root-x root-y) + "Move or resize group. Move window from a group to another. +Go to top left or rigth corner to change workspaces." + (let ((group (find-group-under-mouse root-x root-y))) + (unless (equal selected-group group) + (select-group-under-mouse root-x root-y) + (setf selected-group group))) + (if (<= root-y 5) + (cond ((and accept-motion (<= root-x 5)) + (case *motion-action* + (:move-group + (remove-group-in-workspace *motion-object* (current-workspace)))) + (circulate-workspace-down) + (minimize-group (current-group)) + (case *motion-action* + (:move-group + (add-group-in-workspace *motion-object* (current-workspace)))) + (warp-pointer *root* (1- (screen-width *screen*)) 100) + (setf accept-motion nil)) + ((and accept-motion (>= root-x (- (screen-width *screen*) 5))) + (case *motion-action* + (:move-group + (remove-group-in-workspace *motion-object* (current-workspace)))) + (circulate-workspace-up) + (minimize-group (current-group)) + (case *motion-action* + (:move-group + (add-group-in-workspace *motion-object* (current-workspace)))) + (warp-pointer *root* 0 100) + (setf accept-motion nil)) + (t (setf accept-motion t))) + (setf accept-motion t)) + (case *motion-action* + (:move-group + (setf (group-x *motion-object*) (+ root-x *motion-dx*) + (group-y *motion-object*) (+ root-y *motion-dy*)) + (adapt-all-window-in-group *motion-object*) + (show-all-group (current-workspace))) + (:resize-group + (setf (group-width *motion-object*) (max (+ (group-width *motion-object*) (- root-x *motion-dx*)) 100) + (group-height *motion-object*) (max (+ (group-height *motion-object*) (- root-y *motion-dy*)) 100) + *motion-dx* root-x *motion-dy* root-y) + (adapt-all-window-in-group *motion-object*) + (show-all-group (current-workspace)))))) + + + +(defun move-selected-group (root-x root-y) + "Move selected group or create a new group on the root window" + (select-group-under-mouse root-x root-y) + (setf *motion-object* (find-group-under-mouse root-x root-y)) + (if *motion-object* + (setf *motion-action* :move-group + *motion-dx* (- (group-x *motion-object*) root-x) + *motion-dy* (- (group-y *motion-object*) root-y)) + (progn + (setf *motion-object* (make-group :x root-x :y root-y :width 100 :height 100 :fullscreenp nil)) + (warp-pointer *root* (+ root-x 100) (+ root-y 100)) + (add-group-in-workspace *motion-object* (current-workspace)) + (show-all-group (current-workspace)) + (setf *motion-action* :resize-group + *motion-dx* (+ root-x 100) + *motion-dy* (+ root-y 100))))) + + + +(defun copy-selected-group (root-x root-y) + "Copy selected group" + (select-group-under-mouse root-x root-y) + (setf *motion-object* (find-group-under-mouse root-x root-y)) + (when *motion-object* + (setf *motion-action* :move-group + *motion-object* (copy-group *motion-object*) + *motion-dx* (- (group-x *motion-object*) root-x) + *motion-dy* (- (group-y *motion-object*) root-y)) + (add-group-in-workspace *motion-object* (current-workspace)))) + + + +(defun release-move-selected-group (root-x root-y) + "Release button" + (when *motion-object* + (case *motion-action* + (:move-group + (move-group-to *motion-object* (+ root-x *motion-dx*) (+ root-y *motion-dy*))) + (:resize-group + (resize-group *motion-object* 0 0)))) + (setf *motion-action* nil + *motion-object* nil + *motion-dx* nil + *motion-dy* nil) + (select-group-under-mouse root-x root-y)) + + + +(defun resize-selected-group (root-x root-y) + "Resize selected group" + (select-group-under-mouse root-x root-y) + (setf *motion-object* (find-group-under-mouse root-x root-y)) + (when *motion-object* + (setf *motion-action* :resize-group + *motion-dx* root-x + *motion-dy* root-y))) + + +(defun release-resize-selected-group (root-x root-y) + "Release button" + (when *motion-object* + (resize-group *motion-object* 0 0)) + (setf *motion-action* nil + *motion-object* nil + *motion-dx* nil + *motion-dy* nil) + (select-group-under-mouse root-x root-y)) + + + +(defun move-selected-window (root-x root-y) + "Move selected window" + (xgrab-pointer *root* 50 51) + (select-group-under-mouse root-x root-y) + (setf *motion-object* (current-window)) + (when *motion-object* + (setf *motion-start-group* (current-group)))) + + +(defun release-move-selected-window (root-x root-y) + "Release button" + (xgrab-pointer *root* 66 67) + (setf *motion-action* nil) + (select-group-under-mouse root-x root-y) + (when *motion-object* + (remove-window-in-group *motion-object* *motion-start-group*) + (add-window-in-group *motion-object* (current-group))) + (select-group-under-mouse root-x root-y) + (show-all-windows-in-workspace (current-workspace))) + + + +(defun copy-selected-window (root-x root-y) + "Copy selected window" + (move-selected-window root-x root-y)) + +(defun release-copy-selected-window (root-x root-y) + "Release button" + (xgrab-pointer *root* 66 67) + (setf *motion-action* nil) + (select-group-under-mouse root-x root-y) + (when *motion-object* + (add-window-in-group *motion-object* (current-group))) + (select-group-under-mouse root-x root-y) + (show-all-windows-in-workspace (current-workspace))) + + + + + + +(define-mouse-action (1) 'move-selected-group 'release-move-selected-group) +(define-mouse-action (1 :mod-1) 'resize-selected-group 'release-resize-selected-group) +(define-mouse-action (1 :control) 'copy-selected-group 'release-move-selected-group) + +(define-mouse-action (2) nil 'mouse-leave-second-mode-maximize) +(define-mouse-action (2 :control) nil 'mouse-leave-second-mode) + +(define-mouse-action (3) 'move-selected-window 'release-move-selected-window) +(define-mouse-action (3 :control) 'copy-selected-window 'release-copy-selected-window) + + +(define-mouse-action (4) 'mouse-circulate-window-up nil) +(define-mouse-action (5) 'mouse-circulate-window-down nil) + +(define-mouse-action (4 :mod-1) 'mouse-circulate-workspace-up nil) +(define-mouse-action (5 :mod-1) 'mouse-circulate-workspace-down nil) + +(define-mouse-action ('Motion) 'mouse-motion nil) + Added: bindings.fas ============================================================================== --- (empty file) +++ bindings.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,101 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 30 (IN-PACKAGE :CLFSWM)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CLFSWM" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|32 37 (DEFINE-MAIN-KEY ("F1" :MOD-1) 'HELP-ON-CLFSWM)-2| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("F1" 8. |CLFSWM|::|HELP-ON-CLFSWM| |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|39 41 (DEFUN QUIT-CLFSWM NIL ...)-3| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|QUIT-CLFSWM| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|QUIT-CLFSWM| #13Y(00 00 00 00 00 00 00 00 06 01 DA 00 52) + (|CLFSWM|::|EXIT-MAIN-LOOP|) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Quit clfswm")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|43 43 (DEFINE-MAIN-KEY ("Home" :MOD-1 :CONTROL ...) 'QUIT-CLFSWM)-4| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Home" 13. |CLFSWM|::|QUIT-CLFSWM| |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|45 45 (DEFINE-MAIN-KEY ("Right" :MOD-1) 'SELECT-NEXT-BROTHER)-5| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Right" 8. |CLFSWM|::|SELECT-NEXT-BROTHER| |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|46 46 (DEFINE-MAIN-KEY ("Left" :MOD-1) 'SELECT-PREVIOUS-BROTHER)-6| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Left" 8. |CLFSWM|::|SELECT-PREVIOUS-BROTHER| + |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|48 48 (DEFINE-MAIN-KEY ("Down" :MOD-1) 'SELECT-NEXT-LEVEL)-7| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Down" 8. |CLFSWM|::|SELECT-NEXT-LEVEL| |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|49 49 (DEFINE-MAIN-KEY ("Up" :MOD-1) 'SELECT-PREVIOUS-LEVEL)-8| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Up" 8. |CLFSWM|::|SELECT-PREVIOUS-LEVEL| |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|51 51 (DEFINE-MAIN-KEY ("Tab" :MOD-1) 'SELECT-NEXT-CHILD)-9| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Tab" 8. |CLFSWM|::|SELECT-NEXT-CHILD| |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|52 52 (DEFINE-MAIN-KEY ("Tab" :MOD-1 :SHIFT) 'SELECT-PREVIOUS-CHILD)-10| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Tab" 9. |CLFSWM|::|SELECT-PREVIOUS-CHILD| |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|54 54 (DEFINE-MAIN-KEY ("Return" :MOD-1) 'ENTER-GROUP)-11| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Return" 8. |CLFSWM|::|ENTER-GROUP| |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|55 55 (DEFINE-MAIN-KEY ("Return" :MOD-1 :SHIFT) 'LEAVE-GROUP)-12| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Return" 9. |CLFSWM|::|LEAVE-GROUP| |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|57 57 (DEFINE-MAIN-KEY ("Home" :MOD-1) 'SWITCH-TO-ROOT-GROUP)-13| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Home" 8. |CLFSWM|::|SWITCH-TO-ROOT-GROUP| |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|58 58 (DEFINE-MAIN-KEY ("Home" :MOD-1 :SHIFT) 'SWITCH-AND-SELECT-ROOT-GROUP)-14| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Home" 9. |CLFSWM|::|SWITCH-AND-SELECT-ROOT-GROUP| + |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|60 60 (DEFINE-MAIN-KEY ("Menu") 'TOGGLE-SHOW-ROOT-GROUP)-15| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Menu" 0. |CLFSWM|::|TOGGLE-SHOW-ROOT-GROUP| + |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|62 62 (DEFINE-MAIN-KEY (#\\b :MOD-1) 'BANISH-POINTER)-16| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + (#\b 8. |CLFSWM|::|BANISH-POINTER| |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|65 66 (DEFINE-MAIN-KEY ("Escape" :CONTROL :SHIFT) 'DELETE-FOCUS-WINDOW)-17| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Escape" 5. |CLFSWM|::|DELETE-FOCUS-WINDOW| + |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|67 67 (DEFINE-MAIN-KEY ("Escape" :MOD-1 :CONTROL ...) 'DESTROY-FOCUS-WINDOW)-18| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Escape" 13. |CLFSWM|::|DESTROY-FOCUS-WINDOW| + |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|68 68 (DEFINE-MAIN-KEY ("Escape" :CONTROL) 'REMOVE-FOCUS-WINDOW)-19| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Escape" 4. |CLFSWM|::|REMOVE-FOCUS-WINDOW| + |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|69 69 (DEFINE-MAIN-KEY ("Escape" :SHIFT) 'UNHIDE-ALL-WINDOWS-IN-CURRENT-CHILD)-20| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Escape" 1. |CLFSWM|::|UNHIDE-ALL-WINDOWS-IN-CURRENT-CHILD| + |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|72 72 (DEFINE-MAIN-KEY (#\\t :MOD-1) 'SECOND-KEY-MODE)-21| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + (#\t 8. |CLFSWM|::|SECOND-KEY-MODE| |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|73 73 (DEFINE-MAIN-KEY ("less" :CONTROL) 'SECOND-KEY-MODE)-22| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("less" 4. |CLFSWM|::|SECOND-KEY-MODE| |CLFSWM|::|DEFINE-MAIN-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: bindings.fasl ============================================================================== Binary file. No diff available. Added: bindings.lib ============================================================================== --- (empty file) +++ bindings.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,5 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CLFSWM")) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|QUIT-CLFSWM| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) Added: bindings.lisp ============================================================================== --- (empty file) +++ bindings.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,173 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Sun Feb 24 21:34:48 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Bindings keys and mouse +;;; +;;; Note: Mod-1 is the Alt or Meta key, Mod-2 is the Numlock key. +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +;;;,----- +;;;| CONFIG - Bindings main mode +;;;`----- + + +(define-main-key ("F1" :mod-1) 'help-on-clfswm) + +(defun quit-clfswm () + "Quit clfswm" + (throw 'exit-main-loop nil)) + +(define-main-key ("Home" :mod-1 :control :shift) 'quit-clfswm) + +(define-main-key ("Right" :mod-1) 'select-next-brother) +(define-main-key ("Left" :mod-1) 'select-previous-brother) + +(define-main-key ("Down" :mod-1) 'select-next-level) +(define-main-key ("Up" :mod-1) 'select-previous-level) + +(define-main-key ("Tab" :mod-1) 'select-next-child) +(define-main-key ("Tab" :mod-1 :shift) 'select-previous-child) + +(define-main-key ("Return" :mod-1) 'enter-group) +(define-main-key ("Return" :mod-1 :shift) 'leave-group) + +(define-main-key ("Home" :mod-1) 'switch-to-root-group) +(define-main-key ("Home" :mod-1 :shift) 'switch-and-select-root-group) + +(define-main-key ("Menu") 'toggle-show-root-group) + +(define-main-key (#\b :mod-1) 'banish-pointer) + + +;;;; Escape +(define-main-key ("Escape" :control :shift) 'delete-focus-window) +(define-main-key ("Escape" :mod-1 :control :shift) 'destroy-focus-window) +(define-main-key ("Escape" :control) 'remove-focus-window) +(define-main-key ("Escape" :shift) 'unhide-all-windows-in-current-child) + + +(define-main-key (#\t :mod-1) 'second-key-mode) +(define-main-key ("less" :control) 'second-key-mode) + + +;;(define-main-key ("a") (lambda () +;; (dbg 'key-a) +;; (show-all-childs *root-group*))) +;; +;;(define-main-key ("b") (lambda () +;; (dbg 'key-b) +;; (let* ((window (xlib:create-window :parent *root* +;; :x 300 +;; :y 200 +;; :width 400 +;; :height 300 +;; :background (get-color "Black") +;; :colormap (xlib:screen-default-colormap *screen*) +;; :border-width 1 +;; :border (get-color "Red") +;; :class :input-output +;; :event-mask '(:exposure))) +;; (gc (xlib:create-gcontext :drawable window +;; :foreground (get-color "Green") +;; :background (get-color "Red") +;; :font *default-font* +;; :line-style :solid))) +;; (xlib:map-window window) +;; (draw-line window gc 10 10 200 200) +;; (xlib:display-finish-output *display*) +;; (xlib:draw-glyphs window gc 10 10 (format nil "~A" 10)) +;; (dbg 'ici)))) +;; +;; +;;;;(define-main-key ("F1" :mod-1) 'help-on-clfswm) +;;;; +;;(defun quit-clfswm () +;; "Quit clfswm" +;; (throw 'exit-main-loop nil)) +;; +;; +;; +;;(define-main-key ("Home" :mod-1 :control :shift) 'quit-clfswm) +;; +;;(define-main-key (#\t :mod-1) 'second-key-mode) +;;(define-main-key ("less" :control) 'second-key-mode) +;; +;;(define-main-key ("Tab" :mod-1) 'rotate-window-up) +;;(define-main-key ("Tab" :mod-1 :shift) 'rotate-window-down) +;; +;;(define-main-key (#\b :mod-1) 'banish-pointer) +;;(define-main-key (#\b :mod-1 :control) 'toggle-maximize-current-group) +;; +;;;; Escape +;;(define-main-key ("Escape" :control :shift) 'delete-current-window) +;;(define-main-key ("Escape" :mod-1 :control :shift) 'destroy-current-window) +;;(define-main-key ("Escape" :control) 'remove-current-window) +;;(define-main-key ("Escape" :shift) 'unhide-all-windows-in-current-group) +;; +;; +;;;; Up +;;(define-main-key ("Up" :mod-1) 'circulate-group-up) +;;(define-main-key ("Up" :mod-1 :shift) 'circulate-group-up-move-window) +;;(define-main-key ("Up" :mod-1 :shift :control) 'circulate-group-up-copy-window) +;; +;; +;;;; Down +;;(define-main-key ("Down" :mod-1) 'circulate-group-down) +;;(define-main-key ("Down" :mod-1 :shift) 'circulate-group-down-move-window) +;;(define-main-key ("Down" :mod-1 :shift :control) 'circulate-group-down-copy-window) +;; +;; +;;;; Right +;;(define-main-key ("Right" :mod-1) 'circulate-workspace-up) +;;(define-main-key ("Right" :mod-1 :shift) 'circulate-workspace-up-move-group) +;;(define-main-key ("Right" :mod-1 :shift :control) 'circulate-workspace-up-copy-group) +;; +;; +;;;; Left +;;(define-main-key ("Left" :mod-1) 'circulate-workspace-down) +;;(define-main-key ("Left" :mod-1 :shift) 'circulate-workspace-down-move-group) +;;(define-main-key ("Left" :mod-1 :shift :control) 'circulate-workspace-down-copy-group) +;; +;; +;; +;;(defmacro define-main-focus-workspace-by-number (key number) +;; "Define a main key to focus a workspace by its number" +;; `(define-main-key ,key +;; (defun ,(create-symbol (format nil "b-main-focus-workspace-~A" number)) () +;; ,(format nil "Focus workspace ~A" number) +;; (circulate-workspace-by-number ,number)))) +;; +;;(define-main-focus-workspace-by-number (#\1 :mod-1) 1) +;;(define-main-focus-workspace-by-number (#\2 :mod-1) 2) +;;(define-main-focus-workspace-by-number (#\3 :mod-1) 3) +;;(define-main-focus-workspace-by-number (#\4 :mod-1) 4) +;;(define-main-focus-workspace-by-number (#\5 :mod-1) 5) +;;(define-main-focus-workspace-by-number (#\6 :mod-1) 6) +;;(define-main-focus-workspace-by-number (#\7 :mod-1) 7) +;;(define-main-focus-workspace-by-number (#\8 :mod-1) 8) +;;(define-main-focus-workspace-by-number (#\9 :mod-1) 9) +;;(define-main-focus-workspace-by-number (#\0 :mod-1) 10) + Added: check-diff.sh ============================================================================== --- (empty file) +++ check-diff.sh Sat Mar 1 07:36:13 2008 @@ -0,0 +1,12 @@ +#!/bin/sh + +DIR=../clfswm2 + +for i in * +do + diff $i $DIR/$i > /dev/null + if [ $? = 1 ]; then + echo $i + #cp $DIR/$i . + fi +done Added: clfswm-info.fas ============================================================================== --- (empty file) +++ clfswm-info.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,970 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 28 (IN-PACKAGE :CLFSWM)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CLFSWM" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|30 30 (DEFSTRUCT INFO WINDOW ...)-2| + #1207Y(00 00 00 00 00 00 00 00 00 01 00 2B 01 DA DB DC 38 01 72 85 2F 03 5D + 0B 00 00 DA 2F 04 DA DF 32 8A DA 68 01 00 E0 63 E1 E2 6B 09 E4 E5 E6 + E7 E8 64 E9 EA EB 01 02 6F 12 70 13 EE EF F0 F1 F2 63 6E 11 19 6B 09 + E4 F4 E6 F5 E8 64 E9 EA EB 01 02 6F 12 70 13 EE F6 F0 F7 F2 63 6E 11 + 19 6B 09 E4 65 1E E6 65 1F E8 64 E9 EA EB 01 02 6F 12 70 13 EE 65 20 + F0 65 21 F2 63 6E 11 19 6B 09 E4 65 22 E6 65 23 E8 64 E9 EA EB 01 02 + 6F 12 70 13 EE 65 24 F0 65 25 F2 63 6E 11 19 6B 09 E4 65 26 E6 65 27 + E8 64 E9 EA EB 01 02 6F 12 70 13 EE 65 28 F0 65 29 F2 63 6E 11 19 6B + 09 E4 65 2A E6 65 2B E8 64 E9 EA EB 01 02 6F 12 70 13 EE 65 2C F0 65 + 2D F2 63 6E 11 19 6B 09 E4 65 2E E6 65 2F E8 64 E9 EA EB 01 02 6F 12 + 70 13 EE 65 30 F0 65 31 F2 63 6E 11 19 6B 09 E4 65 32 E6 65 33 E8 64 + E9 EA EB 01 02 6F 12 70 13 EE 65 34 F0 65 35 F2 63 6E 11 19 7B 08 6B + 36 E4 E5 E6 E7 E8 64 E9 EA EB 01 02 6F 12 70 13 EE 65 37 65 38 65 39 + 65 3A 65 3B 6E 11 3C 6B 36 E4 F4 E6 F5 E8 64 E9 EA EB 01 02 6F 12 70 + 13 EE 65 3D 65 38 65 3E 65 3A 65 3F 6E 11 3C 6B 36 E4 65 1E E6 65 1F + E8 64 E9 EA EB 01 02 6F 12 70 13 EE 65 40 65 38 65 41 65 3A 65 42 6E + 11 3C 6B 36 E4 65 22 E6 65 23 E8 64 E9 EA EB 01 02 6F 12 70 13 EE 65 + 43 65 38 65 44 65 3A 65 45 6E 11 3C 6B 36 E4 65 26 E6 65 27 E8 64 E9 + EA EB 01 02 6F 12 70 13 EE 65 46 65 38 65 47 65 3A 65 48 6E 11 3C 6B + 36 E4 65 2A E6 65 2B E8 64 E9 EA EB 01 02 6F 12 70 13 EE 65 49 65 38 + 65 4A 65 3A 65 4B 6E 11 3C 6B 36 E4 65 2E E6 65 2F E8 64 E9 EA EB 01 + 02 6F 12 70 13 EE 65 4C 65 38 65 4D 65 3A 65 4E 6E 11 3C 6B 36 E4 65 + 32 E6 65 33 E8 64 E9 EA EB 01 02 6F 12 70 13 EE 65 4F 65 38 65 50 65 + 3A 65 51 6E 11 3C 7B 08 2D 08 52 E0 2F 53 E0 AD 6D 54 01 32 83 16 01 + 65 55 31 5A E2 2F 53 E2 65 56 65 57 32 89 E2 65 58 32 83 65 59 31 5A + E1 2F 53 E1 65 56 65 5A 32 89 E1 65 5B 32 83 65 5C 31 5A 65 5D 31 5A + 65 5E 2F 53 65 5E 65 56 65 5F 32 89 65 5E 65 60 32 83 65 5E 65 61 DA + 32 89 65 62 31 5A 65 63 31 5A 65 64 2F 53 65 64 65 56 65 65 32 89 65 + 64 65 66 32 83 65 64 65 61 DA 32 89 65 67 31 5A 65 68 31 5A 65 69 2F + 53 65 69 65 56 65 6A 32 89 65 69 65 6B 32 83 65 69 65 61 DA 32 89 65 + 6C 31 5A 65 6D 31 5A 65 6E 2F 53 65 6E 65 56 65 6F 32 89 65 6E 65 70 + 32 83 65 6E 65 61 DA 32 89 65 71 31 5A 65 72 31 5A 65 73 2F 53 65 73 + 65 56 65 74 32 89 65 73 65 75 32 83 65 73 65 61 DA 32 89 65 76 31 5A + 65 77 31 5A 65 78 2F 53 65 78 65 56 65 79 32 89 65 78 65 7A 32 83 65 + 78 65 61 DA 32 89 65 7B 31 5A 65 7C 31 5A 65 7D 2F 53 65 7D 65 56 65 + 7E 32 89 65 7D 65 7F 32 83 65 7D 65 61 DA 32 89 65 80 80 31 5A 65 80 + 81 31 5A 65 80 82 2F 53 65 80 82 65 56 65 80 83 32 89 65 80 82 65 80 + 84 32 83 65 80 82 65 61 DA 32 89 65 80 85 31 5A 65 80 86 31 5A 65 80 + 87 2F 53 65 80 87 65 56 65 80 88 32 89 65 80 87 65 80 89 32 83 65 5E + 65 80 8A DA 32 89 65 80 8B 31 5A 65 80 8C 31 5A 65 80 8D 2F 53 65 80 + 8D 65 56 65 80 8E 32 89 65 80 8D 65 80 8F 32 83 65 64 65 80 8A DA 32 + 89 65 80 90 31 5A 65 80 91 31 5A 65 80 92 2F 53 65 80 92 65 56 65 80 + 93 32 89 65 80 92 65 80 94 32 83 65 69 65 80 8A DA 32 89 65 80 95 31 + 5A 65 80 96 31 5A 65 80 97 2F 53 65 80 97 65 56 65 80 98 32 89 65 80 + 97 65 80 99 32 83 65 6E 65 80 8A DA 32 89 65 80 9A 31 5A 65 80 9B 31 + 5A 65 80 9C 2F 53 65 80 9C 65 56 65 80 9D 32 89 65 80 9C 65 80 9E 32 + 83 65 73 65 80 8A DA 32 89 65 80 9F 31 5A 65 80 A0 31 5A 65 80 A1 2F + 53 65 80 A1 65 56 65 80 A2 32 89 65 80 A1 65 80 A3 32 83 65 78 65 80 + 8A DA 32 89 65 80 A4 31 5A 65 80 A5 31 5A 65 80 A6 2F 53 65 80 A6 65 + 56 65 80 A7 32 89 65 80 A6 65 80 A8 32 83 65 7D 65 80 8A DA 32 89 65 + 80 A9 31 5A 65 80 AA 31 5A 65 80 AB 2F 53 65 80 AB 65 56 65 80 AC 32 + 89 65 80 AB 65 80 AD 32 83 65 80 82 65 80 8A DA 32 89 DA 65 80 AE 63 + 2D 03 80 AF DA 2F 80 B0 C5 19 01) + (|CLFSWM|::|INFO| |COMMON-LISP|::|STRUCTURE-OBJECT| |CLOS|::|CLOSCLASS| + |CLOS|::|CLASS-NAMES| |SYSTEM|::|STRUCTURE-UNDEFINE-ACCESSORIES| + |SYSTEM|::|DEFSTRUCT-DESCRIPTION| |CLFSWM|::|MAKE-INFO| + |CLFSWM|::|COPY-INFO| |CLFSWM|::|INFO-P| + |CLOS|::|| :|NAME| |CLFSWM|::|WINDOW| + :|INITARGS| (:|WINDOW|) :|TYPE| :|ALLOCATION| :|INSTANCE| + |CLOS|::|INHERITABLE-INITER| |SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| + |CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| |CLOS|::|INHERITABLE-DOC| + (|COMMON-LISP|::|NIL|) |CLOS|::|LOCATION| 1. |CLOS|::|READONLY| + |CLOS|::|MAKE-INSTANCE-| + |CLFSWM|::|GC| (:|GC|) (|COMMON-LISP|::|NIL|) 2. |CLFSWM|::|FONT| (:|FONT|) + (|COMMON-LISP|::|NIL|) 3. |COMMON-LISP|::|LIST| (:|LIST|) + (|COMMON-LISP|::|NIL|) 4. |CLFSWM|::|ILW| (:|ILW|) (|COMMON-LISP|::|NIL|) + 5. |CLFSWM|::|ILH| (:|ILH|) (|COMMON-LISP|::|NIL|) 6. |CLFSWM|::|X| (:|X|) + (|COMMON-LISP|::|NIL|) 7. |CLFSWM|::|Y| (:|Y|) (|COMMON-LISP|::|NIL|) 8. + |CLOS|::|| (|COMMON-LISP|::|NIL|) + :|READERS| (|CLFSWM|::|INFO-WINDOW|) :|WRITERS| + ((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-WINDOW|)) + |CLOS|::|MAKE-INSTANCE-| + (|COMMON-LISP|::|NIL|) (|CLFSWM|::|INFO-GC|) + ((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-GC|)) (|COMMON-LISP|::|NIL|) + (|CLFSWM|::|INFO-FONT|) ((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-FONT|)) + (|COMMON-LISP|::|NIL|) (|CLFSWM|::|INFO-LIST|) + ((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-LIST|)) (|COMMON-LISP|::|NIL|) + (|CLFSWM|::|INFO-ILW|) ((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILW|)) + (|COMMON-LISP|::|NIL|) (|CLFSWM|::|INFO-ILH|) + ((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILH|)) (|COMMON-LISP|::|NIL|) + (|CLFSWM|::|INFO-X|) ((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-X|)) + (|COMMON-LISP|::|NIL|) (|CLFSWM|::|INFO-Y|) + ((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-Y|)) + |CLOS|::|DEFINE-STRUCTURE-CLASS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|MAKE-INFO| + #87Y(00 00 00 00 00 00 00 00 86 1B 08 00 01 00 3D 08 3D 07 3D 06 3D 05 + 3D 04 3D 03 3D 02 3D 01 69 00 01 E3 72 31 E4 AD E5 B8 32 30 E4 AD + E6 B7 32 30 E4 AD E7 B6 32 30 E4 AD E8 B5 32 30 E4 AD E9 B4 32 30 + E4 AD EA B3 32 30 E4 AD EB B2 32 30 E4 AD EC B1 32 30 15 19 09) + (|COMMON-LISP|::|NIL| :|WINDOW| :|GC| :|FONT| :|LIST| :|ILW| :|ILH| :|X| + :|Y| 9. |CLFSWM|::|INFO| 1. 2. 3. 4. 5. 6. 7. 8.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&KEY| (#:|WINDOW| |COMMON-LISP|::|NIL|) + (#:|GC| |COMMON-LISP|::|NIL|) (#:|FONT| |COMMON-LISP|::|NIL|) + (#:|LIST| |COMMON-LISP|::|NIL|) (#:|ILW| |COMMON-LISP|::|NIL|) + (#:|ILH| |COMMON-LISP|::|NIL|) (#:|X| |COMMON-LISP|::|NIL|) + (#:|Y| |COMMON-LISP|::|NIL|)) + |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-P|) |SYSTEM|::|INLINE-EXPANSION| + ((|SYSTEM|::|OBJECT|) + (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-P|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-P| + (|SYSTEM|::|%STRUCTURE-TYPE-P| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT|))) + #Y(|CLFSWM|::|INFO-P| #16Y(00 00 00 00 01 00 00 00 00 02 DA AE 32 33 19 02) + (|CLFSWM|::|INFO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|INLINE| |CLFSWM|::|COPY-INFO|) + (#1=(|COMMON-LISP|::|STRUCTURE|) + (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|COPY-INFO|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|COPY-INFO| + (|COMMON-LISP|::|COPY-STRUCTURE| |COMMON-LISP|::|STRUCTURE|))) + #Y(|CLFSWM|::|COPY-INFO| #15Y(00 00 00 00 01 00 00 00 06 02 AD 32 32 19 02) + () (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|STRUCTURE|) |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-WINDOW| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-WINDOW|) |CLFSWM|::|INFO-WINDOW| + (#2=(|SYSTEM|::|OBJECT|) + (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-WINDOW|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-WINDOW| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 1.)))) + #Y(|CLFSWM|::|INFO-WINDOW| + #17Y(00 00 00 00 01 00 00 00 00 02 DA AE DB 32 2F 19 02) + (|CLFSWM|::|INFO| 1.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + |SYSTEM|::|DEFSTRUCT-READER| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-GC| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-GC|) |CLFSWM|::|INFO-GC| + (#2# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-GC|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-GC| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 2.)))) + #Y(|CLFSWM|::|INFO-GC| + #17Y(00 00 00 00 01 00 00 00 00 02 DA AE DB 32 2F 19 02) + (|CLFSWM|::|INFO| 2.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-FONT| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-FONT|) |CLFSWM|::|INFO-FONT| + (#2# + (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-FONT|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-FONT| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 3.)))) + #Y(|CLFSWM|::|INFO-FONT| + #17Y(00 00 00 00 01 00 00 00 00 02 DA AE DB 32 2F 19 02) + (|CLFSWM|::|INFO| 3.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-LIST| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-LIST|) |CLFSWM|::|INFO-LIST| + (#2# + (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-LIST|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-LIST| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 4.)))) + #Y(|CLFSWM|::|INFO-LIST| + #17Y(00 00 00 00 01 00 00 00 00 02 DA AE DB 32 2F 19 02) + (|CLFSWM|::|INFO| 4.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-ILW| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-ILW|) |CLFSWM|::|INFO-ILW| + (#2# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-ILW|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-ILW| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 5.)))) + #Y(|CLFSWM|::|INFO-ILW| + #17Y(00 00 00 00 01 00 00 00 00 02 DA AE DB 32 2F 19 02) + (|CLFSWM|::|INFO| 5.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-ILH| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-ILH|) |CLFSWM|::|INFO-ILH| + (#2# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-ILH|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-ILH| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 6.)))) + #Y(|CLFSWM|::|INFO-ILH| + #17Y(00 00 00 00 01 00 00 00 00 02 DA AE DB 32 2F 19 02) + (|CLFSWM|::|INFO| 6.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-X| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-X|) |CLFSWM|::|INFO-X| + (#2# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-X|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-X| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 7.)))) + #Y(|CLFSWM|::|INFO-X| + #17Y(00 00 00 00 01 00 00 00 00 02 DA AE DB 32 2F 19 02) + (|CLFSWM|::|INFO| 7.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-Y| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-Y|) |CLFSWM|::|INFO-Y| + (#2# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-Y|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-Y| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 8.)))) + #Y(|CLFSWM|::|INFO-Y| + #17Y(00 00 00 00 01 00 00 00 00 02 DA AE DB 32 2F 19 02) + (|CLFSWM|::|INFO| 8.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-WINDOW|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-WINDOW|)) + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|INFO-WINDOW|) + (#3=(|SYSTEM|::|VALUE| |SYSTEM|::|OBJECT|) + (|COMMON-LISP|::|DECLARE| + (|SYSTEM|::|IN-DEFUN| + #4=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-WINDOW|))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-WINDOW| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 1. + |SYSTEM|::|VALUE|))) + #Y(#4# #18Y(00 00 00 00 02 00 00 00 00 03 DA AE DB B1 32 30 19 03) + (|CLFSWM|::|INFO| 1.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|DEFSTRUCT-WRITER| + (|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-GC|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-GC|)) + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|INFO-GC|) + (#3# + (|COMMON-LISP|::|DECLARE| + (|SYSTEM|::|IN-DEFUN| #5=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-GC|))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-GC| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 2. + |SYSTEM|::|VALUE|))) + #Y(#5# #18Y(00 00 00 00 02 00 00 00 00 03 DA AE DB B1 32 30 19 03) + (|CLFSWM|::|INFO| 2.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-FONT|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-FONT|)) + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|INFO-FONT|) + (#3# + (|COMMON-LISP|::|DECLARE| + (|SYSTEM|::|IN-DEFUN| #6=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-FONT|))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-FONT| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 3. + |SYSTEM|::|VALUE|))) + #Y(#6# #18Y(00 00 00 00 02 00 00 00 00 03 DA AE DB B1 32 30 19 03) + (|CLFSWM|::|INFO| 3.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-LIST|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-LIST|)) + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|INFO-LIST|) + (#3# + (|COMMON-LISP|::|DECLARE| + (|SYSTEM|::|IN-DEFUN| #7=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-LIST|))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-LIST| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 4. + |SYSTEM|::|VALUE|))) + #Y(#7# #18Y(00 00 00 00 02 00 00 00 00 03 DA AE DB B1 32 30 19 03) + (|CLFSWM|::|INFO| 4.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILW|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILW|)) + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|INFO-ILW|) + (#3# + (|COMMON-LISP|::|DECLARE| + (|SYSTEM|::|IN-DEFUN| #8=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILW|))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-ILW| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 5. + |SYSTEM|::|VALUE|))) + #Y(#8# #18Y(00 00 00 00 02 00 00 00 00 03 DA AE DB B1 32 30 19 03) + (|CLFSWM|::|INFO| 5.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILH|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILH|)) + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|INFO-ILH|) + (#3# + (|COMMON-LISP|::|DECLARE| + (|SYSTEM|::|IN-DEFUN| #9=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILH|))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-ILH| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 6. + |SYSTEM|::|VALUE|))) + #Y(#9# #18Y(00 00 00 00 02 00 00 00 00 03 DA AE DB B1 32 30 19 03) + (|CLFSWM|::|INFO| 6.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-X|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-X|)) + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|INFO-X|) + (#3# + (|COMMON-LISP|::|DECLARE| + (|SYSTEM|::|IN-DEFUN| #10=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-X|))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-X| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 7. + |SYSTEM|::|VALUE|))) + #Y(#10# #18Y(00 00 00 00 02 00 00 00 00 03 DA AE DB B1 32 30 19 03) + (|CLFSWM|::|INFO| 7.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-Y|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|) + (|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-Y|)) + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|INFO-Y|) + (#3# + (|COMMON-LISP|::|DECLARE| + (|SYSTEM|::|IN-DEFUN| #11=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-Y|))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-Y| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 8. + |SYSTEM|::|VALUE|))) + #Y(#11# #18Y(00 00 00 00 02 00 00 00 00 03 DA AE DB B1 32 30 19 03) + (|CLFSWM|::|INFO| 8.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|TYPE| |SYSTEM|::|%SET-DOCUMENTATION| + |CLOS|::|DEFSTRUCT-REMOVE-PRINT-OBJECT-METHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|33 36 (DEFUN LEAVE-INFO-MODE (INFO) ...)-3| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|LEAVE-INFO-MODE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|LEAVE-INFO-MODE| #13Y(00 00 00 00 01 00 00 00 06 02 DA 00 52) + (|CLFSWM|::|EXIT-INFO-LOOP|) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|INFO|) "Leave the info mode")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|38 41 (DEFUN MOUSE-LEAVE-INFO-MODE (ROOT-X ROOT-Y INFO) ...)-4| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|MOUSE-LEAVE-INFO-MODE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|MOUSE-LEAVE-INFO-MODE| + #13Y(00 00 00 00 03 00 00 00 06 04 DA 00 52) + (|CLFSWM|::|EXIT-INFO-LOOP|) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|INFO|) + "Leave the info mode")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|45 53 (DEFUN DRAW-INFO-WINDOW (INFO) ...)-5| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|DRAW-INFO-WINDOW| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DRAW-INFO-WINDOW| + #118Y(00 00 00 00 01 00 00 00 06 02 DA AE DB 72 2F 2F 02 DA AE DD 72 2F + 6B 04 6F 05 30 06 DA AE E1 72 2F 01 02 CD F8 1B 80 46 87 02 01 DA + B1 DB 72 2F DA B2 DD 72 2F DA B3 E3 72 2F DA B4 E4 72 2F 73 01 36 + DA B4 E5 72 2F B0 73 02 37 DA B5 E5 72 2F 73 02 35 DA B5 E6 72 2F + 73 01 36 38 02 72 76 B2 AD 31 86 AC 81 77 00 2D 05 0D 83 02 85 00 + AE 8D 94 FF B5 00 19 05) + (|CLFSWM|::|INFO| 1. |XLIB|::|CLEAR-AREA| 2. + |CLFSWM|::|*INFO-FOREGROUND*| |CLFSWM|::|GET-COLOR| + |XLIB|::|SET-GCONTEXT-FOREGROUND| 4. 0. 5. 7. 6. 8. + |XLIB|::|DRAW-IMAGE-GLYPHS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|INFO|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|56 78 (DEFUN DRAW-INFO-WINDOW-PARTIAL (INFO) ...)-6| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|DRAW-INFO-WINDOW-PARTIAL| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DRAW-INFO-WINDOW-PARTIAL| + #273Y(00 00 00 00 01 00 00 00 06 02 DA AE DB 72 2F DA AF DC 72 2F 6B 03 + 6F 04 30 05 DA AF E0 72 2F DA B0 DC 72 2F E1 E1 DA B3 E0 72 2F 6F + 08 DA B4 DB 72 2F 73 00 36 DA B5 E3 72 2F 6F 0A 73 02 35 E1 73 01 + 33 64 2D 07 0B DA AF E6 72 2F 01 02 CC F8 1B 80 8C 87 02 01 DA B2 + E7 72 2F AD 73 02 37 DA B3 E7 72 2F 73 02 35 DA B3 DB 72 2F 82 01 + 36 03 DA B2 DC 72 2F 6B 03 6F 04 30 05 DA B2 E0 72 2F DA B3 DC 72 + 2F E1 B2 DA B6 E7 72 2F 73 00 36 DA B7 E3 72 2F 6F 0E 73 03 35 DA + B6 E0 72 2F 6F 08 DA B7 E7 72 2F 64 2D 07 0B DA B2 DC 72 2F 6B 0F + 6F 04 30 05 DA B2 E0 72 2F DA B3 DC 72 2F DA B4 EA 72 2F DA B5 EB + 72 2F 73 01 36 B2 38 02 72 76 B2 AD 31 86 AC 81 77 00 2D 05 12 83 + 02 85 00 AE 8D 94 FF 6F 16 03 DA AF DC 72 2F 6B 03 6F 04 30 05 DA + AF E0 72 2F DA B0 DC 72 2F E1 AF DA B3 E0 72 2F 6F 08 DA B4 E0 72 + 2F 6F 13 64 2D 07 0B 19 03) + (|CLFSWM|::|INFO| 8. 2. |CLFSWM|::|*INFO-BACKGROUND*| + |CLFSWM|::|GET-COLOR| |XLIB|::|SET-GCONTEXT-FOREGROUND| 1. 0. + |XLIB|::|DRAWABLE-WIDTH| 3. |XLIB|::|MAX-CHAR-ASCENT| + |XLIB|::|DRAW-RECTANGLE| 4. 6. |XLIB|::|MAX-CHAR-DESCENT| + |CLFSWM|::|*INFO-FOREGROUND*| 5. 7. |XLIB|::|DRAW-IMAGE-GLYPHS| + |XLIB|::|DRAWABLE-HEIGHT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|INFO|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|81 85 (DEFINE-INFO-KEY (#\\q) 'LEAVE-INFO-MODE)-7| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + (#\q 0. |CLFSWM|::|LEAVE-INFO-MODE| |CLFSWM|::|DEFINE-INFO-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|86 86 (DEFINE-INFO-KEY ("Return") 'LEAVE-INFO-MODE)-8| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Return" 0. |CLFSWM|::|LEAVE-INFO-MODE| |CLFSWM|::|DEFINE-INFO-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|87 87 (DEFINE-INFO-KEY ("Escape") 'LEAVE-INFO-MODE)-9| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + ("Escape" 0. |CLFSWM|::|LEAVE-INFO-MODE| |CLFSWM|::|DEFINE-INFO-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|88 88 (DEFINE-INFO-KEY (#\\ ) 'LEAVE-INFO-MODE)-10| + #21Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 2D 03 03 19 01) + (#\ 0. |CLFSWM|::|LEAVE-INFO-MODE| |CLFSWM|::|DEFINE-INFO-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|90 94 (DEFINE-INFO-KEY ("twosuperior") (DEFUN INFO-BANISH-POINTER # ...))-11| + #28Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 2F 03 DC DE 32 83 DC 63 2D + 03 05 19 01) + ("twosuperior" 0. |CLFSWM|::|INFO-BANISH-POINTER| + |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-BANISH-POINTER| + #14Y(00 00 00 00 01 00 00 00 06 02 2E 00 19 02) + (|CLFSWM|::|BANISH-POINTER|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|INFO|) + "Move the pointer to the lower right corner of the screen") + |CLFSWM|::|DEFINE-INFO-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|96 100 (DEFINE-INFO-KEY ("Down") (DEFUN INFO-NEXT-LINE # ...))-12| + #28Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 2F 03 DC DE 32 83 DC 63 2D + 03 05 19 01) + ("Down" 0. |CLFSWM|::|INFO-NEXT-LINE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-NEXT-LINE| + #37Y(00 00 00 00 01 00 00 00 06 02 DA AE DB 72 2F DA AF DC 72 2F AD 73 + 02 35 DA B0 DC AF 32 30 16 02 AD 2F 03 19 02) + (|CLFSWM|::|INFO| 6. 8. |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|INFO|) "Move one line down") + |CLFSWM|::|DEFINE-INFO-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|102 106 (DEFINE-INFO-KEY ("Up") (DEFUN INFO-PREVIOUS-LINE # ...))-13| + #28Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 2F 03 DC DE 32 83 DC 63 2D + 03 05 19 01) + ("Up" 0. |CLFSWM|::|INFO-PREVIOUS-LINE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-PREVIOUS-LINE| + #37Y(00 00 00 00 01 00 00 00 06 02 DA AE DB 72 2F DA AF DC 72 2F AD 73 + 01 36 DA B0 DC AF 32 30 16 02 AD 2F 03 19 02) + (|CLFSWM|::|INFO| 6. 8. |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|INFO|) "Move one line up") + |CLFSWM|::|DEFINE-INFO-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|108 112 (DEFINE-INFO-KEY ("Left") (DEFUN INFO-PREVIOUS-CHAR # ...))-14| + #28Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 2F 03 DC DE 32 83 DC 63 2D + 03 05 19 01) + ("Left" 0. |CLFSWM|::|INFO-PREVIOUS-CHAR| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-PREVIOUS-CHAR| + #37Y(00 00 00 00 01 00 00 00 06 02 DA AE DB 72 2F DA AF DC 72 2F AD 73 + 01 36 DA B0 DC AF 32 30 16 02 AD 2F 03 19 02) + (|CLFSWM|::|INFO| 5. 7. |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|INFO|) "Move one char left") + |CLFSWM|::|DEFINE-INFO-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|114 118 (DEFINE-INFO-KEY ("Right") (DEFUN INFO-NEXT-CHAR # ...))-15| + #28Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 2F 03 DC DE 32 83 DC 63 2D + 03 05 19 01) + ("Right" 0. |CLFSWM|::|INFO-NEXT-CHAR| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-NEXT-CHAR| + #37Y(00 00 00 00 01 00 00 00 06 02 DA AE DB 72 2F DA AF DC 72 2F AD 73 + 02 35 DA B0 DC AF 32 30 16 02 AD 2F 03 19 02) + (|CLFSWM|::|INFO| 5. 7. |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|INFO|) "Move one char right") + |CLFSWM|::|DEFINE-INFO-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|121 126 (DEFINE-INFO-KEY ("Home") (DEFUN INFO-FIRST-LINE # ...))-16| + #28Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 2F 03 DC DE 32 83 DC 63 2D + 03 05 19 01) + ("Home" 0. |CLFSWM|::|INFO-FIRST-LINE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-FIRST-LINE| + #27Y(00 00 00 00 01 00 00 00 06 02 DA AE DB DC 32 30 DA AE DD DC 32 30 + AD 2F 04 19 02) + (|CLFSWM|::|INFO| 7. 0. 8. |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|INFO|) "Move to first line") + |CLFSWM|::|DEFINE-INFO-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|128 133 (DEFINE-INFO-KEY ("End") (DEFUN INFO-END-LINE # ...))-17| + #28Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 2F 03 DC DE 32 83 DC 63 2D + 03 05 19 01) + ("End" 0. |CLFSWM|::|INFO-END-LINE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-END-LINE| + #54Y(00 00 00 00 01 00 00 00 06 02 DA AE DB DC 32 30 DA AE DD 72 2F 72 + 48 DA AF DE 72 2F 73 02 37 DA AF DF 72 2F 6F 06 73 01 36 DA AF E1 + AF 32 30 16 01 AD 2F 08 19 02) + (|CLFSWM|::|INFO| 7. 0. 4. 6. 1. |XLIB|::|DRAWABLE-HEIGHT| 8. + |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|INFO|) "Move to last line") + |CLFSWM|::|DEFINE-INFO-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|136 140 (DEFINE-INFO-KEY ("Page_Down") (DEFUN INFO-NEXT-TEN-LINES # ...))-18| + #28Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 2F 03 DC DE 32 83 DC 63 2D + 03 05 19 01) + ("Page_Down" 0. |CLFSWM|::|INFO-NEXT-TEN-LINES| + |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-NEXT-TEN-LINES| + #41Y(00 00 00 00 01 00 00 00 06 02 DA DB AF DC 72 2F 73 02 37 DB AF DD + 72 2F AD 73 02 35 DB B0 DD AF 32 30 16 02 AD 2F 04 19 02) + (10. |CLFSWM|::|INFO| 6. 8. |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|INFO|) "Move ten lines down") + |CLFSWM|::|DEFINE-INFO-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|142 146 (DEFINE-INFO-KEY ("Page_Up") (DEFUN INFO-PREVIOUS-TEN-LINES # ...))-19| + #28Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 2F 03 DC DE 32 83 DC 63 2D + 03 05 19 01) + ("Page_Up" 0. |CLFSWM|::|INFO-PREVIOUS-TEN-LINES| + |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-PREVIOUS-TEN-LINES| + #41Y(00 00 00 00 01 00 00 00 06 02 DA DB AF DC 72 2F 73 02 37 DB AF DD + 72 2F AD 73 01 36 DB B0 DD AF 32 30 16 02 AD 2F 04 19 02) + (10. |CLFSWM|::|INFO| 6. 8. |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|INFO|) "Move ten lines up") + |CLFSWM|::|DEFINE-INFO-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|151 151 (DEFPARAMETER *INFO-START-GRAB-X* NIL)-20| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-START-GRAB-X*|) + |CLFSWM|::|*INFO-START-GRAB-X*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|152 152 (DEFPARAMETER *INFO-START-GRAB-Y* NIL)-21| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-START-GRAB-Y*|) + |CLFSWM|::|*INFO-START-GRAB-Y*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|155 159 (DEFUN INFO-BEGIN-GRAB (ROOT-X ROOT-Y INFO) ...)-22| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|INFO-BEGIN-GRAB| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-BEGIN-GRAB| + #37Y(00 00 00 00 03 00 00 00 06 04 AF DA AF DB 72 2F 33 02 35 0F 02 AE + DA AF DD 72 2F 33 02 35 0F 04 AD 2F 05 19 04) + (|CLFSWM|::|INFO| 7. |CLFSWM|::|*INFO-START-GRAB-X*| 8. + |CLFSWM|::|*INFO-START-GRAB-Y*| |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|INFO|) + "Begin grab text")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|161 167 (DEFUN INFO-END-GRAB (ROOT-X ROOT-Y INFO) ...)-23| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|INFO-END-GRAB| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-END-GRAB| + #48Y(00 00 00 00 03 00 00 00 06 04 6B 00 B0 73 01 36 DB AF DC AF 32 30 + 16 01 6B 03 AF 73 01 36 DB AF DE AF 32 30 16 01 00 0F 00 0F 03 AD + 2F 05 19 04) + (|CLFSWM|::|*INFO-START-GRAB-X*| |CLFSWM|::|INFO| 7. + |CLFSWM|::|*INFO-START-GRAB-Y*| 8. |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|INFO|) "End grab")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|169 173 (DEFUN INFO-MOUSE-NEXT-LINE (ROOT-X ROOT-Y INFO) ...)-24| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|INFO-MOUSE-NEXT-LINE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-MOUSE-NEXT-LINE| + #37Y(00 00 00 00 03 00 00 00 06 04 DA AE DB 72 2F DA AF DC 72 2F AD 73 + 02 35 DA B0 DC AF 32 30 16 02 AD 2F 03 19 04) + (|CLFSWM|::|INFO| 6. 8. |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|INFO|) + "Move one line down")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|175 179 (DEFUN INFO-MOUSE-PREVIOUS-LINE (ROOT-X ROOT-Y INFO) ...)-25| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|INFO-MOUSE-PREVIOUS-LINE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-MOUSE-PREVIOUS-LINE| + #37Y(00 00 00 00 03 00 00 00 06 04 DA AE DB 72 2F DA AF DC 72 2F AD 73 + 01 36 DA B0 DC AF 32 30 16 02 AD 2F 03 19 04) + (|CLFSWM|::|INFO| 6. 8. |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|INFO|) + "Move one line up")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|182 187 (DEFUN INFO-MOUSE-MOTION (ROOT-X ROOT-Y INFO) ...)-26| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|INFO-MOUSE-MOTION| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-MOUSE-MOTION| + #53Y(00 00 00 00 03 00 00 00 06 04 0E 00 1F 25 0E 01 1F 21 6B 00 B0 73 + 01 36 DC AF DD AF 32 30 16 01 6B 01 AF 73 01 36 DC AF DE AF 32 30 + 16 01 AD 2F 05 19 04 19 04) + (|CLFSWM|::|*INFO-START-GRAB-X*| |CLFSWM|::|*INFO-START-GRAB-Y*| + |CLFSWM|::|INFO| 7. 8. |CLFSWM|::|DRAW-INFO-WINDOW-PARTIAL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|INFO|) "Grab text")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|193 193 (DEFINE-INFO-MOUSE-ACTION (1) 'INFO-BEGIN-GRAB ...)-27| + #22Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 63 DD 2D 04 04 19 01) + (1. 0. |CLFSWM|::|INFO-BEGIN-GRAB| |CLFSWM|::|INFO-END-GRAB| + |CLFSWM|::|DEFINE-INFO-MOUSE-ACTION-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|194 194 (DEFINE-INFO-MOUSE-ACTION (2) 'MOUSE-LEAVE-INFO-MODE)-28| + #22Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 01 02 2D 04 03 19 01) + (2. 0. |CLFSWM|::|MOUSE-LEAVE-INFO-MODE| + |CLFSWM|::|DEFINE-INFO-MOUSE-ACTION-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|195 195 (DEFINE-INFO-MOUSE-ACTION (4) 'INFO-MOUSE-PREVIOUS-LINE)-29| + #22Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 01 02 2D 04 03 19 01) + (4. 0. |CLFSWM|::|INFO-MOUSE-PREVIOUS-LINE| + |CLFSWM|::|DEFINE-INFO-MOUSE-ACTION-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|196 196 (DEFINE-INFO-MOUSE-ACTION (5) 'INFO-MOUSE-NEXT-LINE)-30| + #22Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 01 02 2D 04 03 19 01) + (5. 0. |CLFSWM|::|INFO-MOUSE-NEXT-LINE| + |CLFSWM|::|DEFINE-INFO-MOUSE-ACTION-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|197 197 (DEFINE-INFO-MOUSE-ACTION ('MOTION) 'INFO-MOUSE-MOTION ...)-31| + #22Y(00 00 00 00 00 00 00 00 00 01 DA DB 7B 02 DC 01 02 2D 04 03 19 01) + (|CLFSWM|::|MOTION| 0. |CLFSWM|::|INFO-MOUSE-MOTION| + |CLFSWM|::|DEFINE-INFO-MOUSE-ACTION-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|200 287 (DEFUN INFO-MODE (INFO-LIST &KEY # ...) ...)-32| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|INFO-MODE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-MODE| + #406Y(04 00 02 00 01 00 00 00 86 1C 04 00 00 00 3B 04 02 C9 FC 3B 03 02 + C9 FB 3D 02 3B 01 08 7D 01 A2 1F 81 71 1B 04 A2 1F 81 6B 00 2B 01 + 2E 05 14 2E 06 14 6B 07 6B 08 70 09 AC 6F 0A E5 AE 6F 0C AF 6F 0D + 73 03 35 E8 6B 0F DA B9 DB BA DC 92 0F 31 EA BF 01 02 1B 0C 87 02 + 01 14 72 48 AD 30 11 F8 83 02 AE 8D 94 70 15 16 01 F8 73 02 35 B5 + 73 02 37 6B 12 ED AD EA 81 2F 00 EA C0 73 02 36 33 01 34 14 DD 92 + 10 1F C0 72 48 B6 73 02 37 EE B7 73 02 37 73 02 35 6B 12 ED AD EF + 81 2F 00 EA C1 73 02 36 33 01 34 14 F0 6B 17 6F 18 F3 6B 12 ED AD + F4 81 2F 00 F5 E5 F6 6B 1D 6F 18 65 1E 65 1F 6E 14 20 65 21 AD 65 + 22 6B 23 6F 18 F0 6B 17 6F 18 65 24 B6 65 25 65 26 6E 0A 27 65 28 + AE 65 29 AF DA DE DB DE 65 2A C2 65 24 BB 65 2B BC 65 2C BD 2D 10 + 2D 0B 07 00 A4 2B 06 AC 2C 2E 01 0B 00 00 AC 2C 2F 01 0B 00 01 AC + 2C 30 01 0B 00 02 AC 2C 31 01 0B 00 03 AC 2C 32 01 0B 00 04 AC 2C + 33 01 0B 00 05 AC 6D 34 01 AF 2F 35 68 09 00 2F 36 6B 0F 65 37 65 + 38 2D 03 39 92 07 04 6B 0F 2F 3A 53 2A 03 3B 50 0E 6B 07 2F 3C 6B + 07 65 3D B3 2D 03 3E 1B 72 54 05 00 00 08 1D 17 6B 0F 65 3F 65 40 + 2D 03 39 05 00 00 07 1D 10 1B 10 05 00 00 08 1C 69 2E 41 05 00 00 + 07 1C 02 2E 42 67 00 00 02 2F 43 67 00 00 03 2F 44 67 00 00 06 2F + 45 2E 46 2E 47 55 19 10 19 06) + (:|X| :|Y| :|WIDTH| :|HEIGHT| 0. |CLFSWM|::|XGRAB-POINTER-P| + |CLFSWM|::|XGRAB-KEYBOARD-P| |CLFSWM|::|*DISPLAY*| + |CLFSWM|::|*INFO-FONT-STRING*| |XLIB|::|OPEN-FONT| + |XLIB|::|MAX-CHAR-WIDTH| 1. |XLIB|::|MAX-CHAR-ASCENT| + |XLIB|::|MAX-CHAR-DESCENT| :|PARENT| |CLFSWM|::|*ROOT*| 2. + |SYSTEM|::|MAX-IF| |CLFSWM|::|*SCREEN*| |XLIB|::|SCREEN| #10r1/2 3. + :|BACKGROUND| |CLFSWM|::|*INFO-BACKGROUND*| |CLFSWM|::|GET-COLOR| + :|COLORMAP| 9. :|BORDER-WIDTH| :|BORDER| |CLFSWM|::|*INFO-BORDER*| + :|EVENT-MASK| (:|EXPOSURE|) |XLIB|::|CREATE-WINDOW| :|DRAWABLE| + :|FOREGROUND| |CLFSWM|::|*INFO-FOREGROUND*| :|FONT| :|LINE-STYLE| + :|SOLID| |XLIB|::|CREATE-GCONTEXT| :|WINDOW| :|GC| :|LIST| :|ILW| + :|ILH| |CLFSWM|::|MAKE-INFO| + #Y(|CLFSWM|::|INFO-MODE-HANDLE-KEY| + #30Y(00 00 00 00 00 00 00 00 C7 00 03 00 01 00 3D 02 3D 01 6B 04 AF + AF 69 01 01 2D 04 05 19 05) + (|COMMON-LISP|::|NIL| :|ROOT| :|CODE| :|STATE| + |CLFSWM|::|*INFO-KEYS*| |CLFSWM|::|FUNCALL-KEY-FROM-CODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| + |COMMON-LISP|::|&KEY| |CLFSWM|::|ROOT| |CLFSWM|::|CODE| + |CLFSWM|::|STATE| |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|INFO-MODE-HANDLE-MOTION-NOTIFY| + #137Y(04 00 01 00 00 00 00 00 C7 00 02 00 01 00 3D 02 3D 01 6B 03 AC + 2F 04 42 04 AF A0 13 1B 2A 00 16 02 1B 80 4D 00 19 04 16 01 7D + 02 3E 54 67 03 00 04 67 00 00 02 63 67 03 00 01 67 03 00 00 67 + 00 00 00 2D 06 0C 55 16 03 67 00 00 04 DF 64 67 00 00 01 2D 04 + 06 42 02 93 01 44 64 53 50 6B 07 E2 B2 E3 32 2F 5F 14 AC 25 0A + FF BC 02 16 01 56 16 03 11 18 01 00 16 05 1C FF AA 6B 0D E8 DF + B1 B1 E9 69 01 01 2D 07 10 19 04) + (|COMMON-LISP|::|NIL| :|ROOT-X| :|ROOT-Y| |CLFSWM|::|*DISPLAY*| + |XLIB|::|EVENT-LOOP-SETUP| 0. |XLIB|::|EVENT-LOOP-STEP-BEFORE| + |XLIB|::|*EVENT-KEY-VECTOR*| |XLIB|::|REPLY-BUFFER| 1. + :|MOTION-NOTIFY| |XLIB|::|DISCARD-CURRENT-EVENT| + |XLIB|::|EVENT-LOOP-STEP-AFTER| |CLFSWM|::|*INFO-MOUSE-ACTION*| + |CLFSWM|::|MOTION| #.#'|COMMON-LISP|::|FIRST| + |CLFSWM|::|FUNCALL-BUTTON-FROM-CODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| + |COMMON-LISP|::|&KEY| |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|INFO-MODE-HANDLE-BUTTON-PRESS| + #37Y(00 00 00 00 00 00 00 00 C7 00 04 00 01 00 3D 04 3D 03 3D 02 3D + 01 6B 05 AF AF B3 B3 E0 69 01 01 2D 07 07 19 06) + (|COMMON-LISP|::|NIL| :|ROOT-X| :|ROOT-Y| :|CODE| :|STATE| + |CLFSWM|::|*INFO-MOUSE-ACTION*| #.#'|COMMON-LISP|::|FIRST| + |CLFSWM|::|FUNCALL-BUTTON-FROM-CODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| + |COMMON-LISP|::|&KEY| |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| + |CLFSWM|::|CODE| |CLFSWM|::|STATE| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|INFO-MODE-HANDLE-BUTTON-RELEASE| + #37Y(00 00 00 00 00 00 00 00 C7 00 04 00 01 00 3D 04 3D 03 3D 02 3D + 01 6B 05 AF AF B3 B3 E0 69 01 01 2D 07 07 19 06) + (|COMMON-LISP|::|NIL| :|ROOT-X| :|ROOT-Y| :|CODE| :|STATE| + |CLFSWM|::|*INFO-MOUSE-ACTION*| #.#'|COMMON-LISP|::|THIRD| + |CLFSWM|::|FUNCALL-BUTTON-FROM-CODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| + |COMMON-LISP|::|&KEY| |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| + |CLFSWM|::|CODE| |CLFSWM|::|STATE| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|INFO-MODE-INFO-HANDLE-UNMAP-NOTIFY| + #22Y(00 00 00 00 00 00 00 00 07 16 99 01 9F 37 00 69 01 01 2F 02 19 + 02) + (|COMMON-LISP|::|NIL| |CLFSWM|::|HANDLE-UNMAP-NOTIFY| + |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|) + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|INFO-MODE-INFO-HANDLE-DESTROY-NOTIFY| + #22Y(00 00 00 00 00 00 00 00 07 16 99 01 9F 37 00 69 01 01 2F 02 19 + 02) + (|COMMON-LISP|::|NIL| |CLFSWM|::|HANDLE-DESTROY-NOTIFY| + |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|) + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|INFO-MODE-HANDLE-EVENTS| + #66Y(00 00 00 00 00 00 00 00 C7 00 02 00 01 00 3D 01 9E 26 03 2B 07 + 00 01 1B 0D 07 00 03 1B 08 07 00 04 1B 03 07 00 02 14 A1 37 00 + 1B 13 AF 07 00 05 34 1B 0C AF 07 00 06 34 1B 05 69 01 01 2F 04 + 02 19 04) + (|COMMON-LISP|::|NIL| :|DISPLAY| :|EVENT-KEY| + #S(|COMMON-LISP|::|HASH-TABLE| :|TEST| |EXT|::|STABLEHASH-EQ| + (:|EXPOSURE| . 39.) (:|ENTER-NOTIFY| . 44.) + (:|CREATE-NOTIFY| . 44.) (:|PROPERTY-NOTIFY| . 44.) + (:|MAPPING-NOTIFY| . 44.) (:|DESTROY-NOTIFY| . 32.) + (:|UNMAP-NOTIFY| . 25.) (:|MAP-REQUEST| . 44.) + (:|MOTION-NOTIFY| . 16.) (:|BUTTON-RELEASE| . 11.) + (:|BUTTON-PRESS| . 6.) (:|KEY-PRESS| . 1.)) + |CLFSWM|::|DRAW-INFO-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| + |COMMON-LISP|::|&KEY| |CLFSWM|::|DISPLAY| |CLFSWM|::|EVENT-KEY| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|) + |XLIB|::|MAP-WINDOW| |CLFSWM|::|DRAW-INFO-WINDOW| 68. 69. + |CLFSWM|::|XGRAB-POINTER| |CLFSWM|::|XGRAB-KEYBOARD| + |CLFSWM|::|EXIT-INFO-LOOP| |XLIB|::|DISPLAY-FINISH-OUTPUT| :|HANDLER| + |XLIB|::|PROCESS-EVENT| 66. 67. |CLFSWM|::|XUNGRAB-POINTER| + |CLFSWM|::|XUNGRAB-KEYBOARD| |XLIB|::|FREE-GCONTEXT| + |XLIB|::|DESTROY-WINDOW| |XLIB|::|CLOSE-FONT| + |CLFSWM|::|SHOW-ALL-CHILDS| |CLFSWM|::|WAIT-NO-KEY-OR-BUTTON-PRESS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|INFO-LIST| |COMMON-LISP|::|&KEY| (|CLFSWM|::|X| 0.) + (|CLFSWM|::|Y| 0.) (|CLFSWM|::|WIDTH| |COMMON-LISP|::|NIL|) + (|CLFSWM|::|HEIGHT| |COMMON-LISP|::|NIL|)) + "Open the info mode. Info-list is a list of info: One string per line")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|294 314 (DEFUN INFO-MODE-MENU (ITEM-LIST &KEY # ...) ...)-33| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|INFO-MODE-MENU| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-MODE-MENU| + #178Y(00 00 00 00 01 00 00 00 86 1C 04 00 00 00 3B 04 02 C9 FC 3B 03 02 + C9 FB 3D 02 3D 01 00 2B 01 63 00 0B 01 00 B3 63 1B 80 4C AC E1 30 + 08 1B 80 43 87 01 00 14 DF DF 63 2D 04 06 1D 6D A0 2B 01 94 01 9F + 5C 5B 0B 01 00 38 02 72 76 68 02 00 E3 70 0A AE AE 31 86 E5 AE 38 + 02 31 8B AC AE 31 86 16 01 AC 81 77 00 84 04 AC DE 7B 02 AE 6D 0C + 01 30 0D 16 02 83 01 AD 8D 94 FF B6 16 02 AC 72 4A DA B4 DB B5 DC + B6 DD B7 2D 09 0E B3 63 1B 0E 87 01 00 78 AC DE 7B 02 2F 0F 16 01 + 83 01 AD 8D 94 6E 16 02 68 01 00 31 50 1F 07 68 01 00 36 00 19 08 + 19 08) + (:|X| :|Y| :|WIDTH| :|HEIGHT| 0. 2. |SYSTEM|::|LIST-LENGTH-IN-BOUNDS-P| + (2. . 2.) |SYSTEM|::|DESTRUCTURING-ERROR| |COMMON-LISP|::|FUNCTION| + |CLOS|::|DOCUMENTATION| ": " + #Y(|CLFSWM|::|INFO-MODE-MENU-1| + #19Y(00 00 00 00 00 00 01 00 06 07 07 00 01 0C 01 01 DB 00 52) + (|COMMON-LISP|::|NIL| |CLFSWM|::|EXIT-INFO-LOOP|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&OPTIONAL| |CLFSWM|::|ARGS|) |COMMON-LISP|::|NIL|) + |CLFSWM|::|DEFINE-INFO-KEY-FUN| |CLFSWM|::|INFO-MODE| + |CLFSWM|::|UNDEFINE-INFO-KEY-FUN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|ITEM-LIST| |COMMON-LISP|::|&KEY| (|CLFSWM|::|X| 0.) + (|CLFSWM|::|Y| 0.) (|CLFSWM|::|WIDTH| |COMMON-LISP|::|NIL|) + (|CLFSWM|::|HEIGHT| |COMMON-LISP|::|NIL|)) + "Open an info help menu. +Item-list is: '((key function) (key function)) +key is a character, a keycode or a keysym")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|320 329 (DEFUN APPEND-SPACE (STRING) ...)-34| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|APPEND-SPACE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|APPEND-SPACE| + #64Y(03 00 01 00 01 00 00 00 06 02 DA 38 01 72 76 53 26 DB 63 1B 14 B2 + AE 82 01 01 00 14 25 02 04 DD B1 31 86 AC B1 31 86 85 01 AD B3 72 + 48 91 01 32 64 16 02 AE 32 77 54 67 00 00 00 2F 04 55 19 03) + (|COMMON-LISP|::|CHARACTER| 0. #\Newline " " |COMMON-LISP|::|CLOSE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|STRING|) "Append spaces before Newline on each line")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|332 337 (DEFUN SHOW-KEY-BINDING (&REST HASH-TABLE-KEY) ...)-35| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SHOW-KEY-BINDING| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SHOW-KEY-BINDING| + #43Y(03 00 01 00 00 00 00 00 07 16 DA 38 01 72 76 53 09 B0 AF 30 01 AE + 32 77 3F 54 67 00 00 00 2F 02 55 F8 6F 03 DE 70 05 2F 06 19 02) + (|COMMON-LISP|::|CHARACTER| |CLFSWM|::|PRODUCE-DOC| + |COMMON-LISP|::|CLOSE| |CLFSWM|::|APPEND-SPACE| #\Newline + |TOOLS|::|SPLIT-STRING| |CLFSWM|::|INFO-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|HASH-TABLE-KEY|) + "Show the binding of each hash-table-key")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|340 343 (DEFUN SHOW-GLOBAL-KEY-BINDING NIL ...)-36| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SHOW-GLOBAL-KEY-BINDING| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SHOW-GLOBAL-KEY-BINDING| + #25Y(00 00 00 00 00 00 00 00 06 01 6B 00 6B 01 6B 02 6B 03 6B 04 2D 05 + 05 19 01) + (|CLFSWM|::|*MAIN-KEYS*| |CLFSWM|::|*SECOND-KEYS*| + |CLFSWM|::|*MOUSE-ACTION*| |CLFSWM|::|*INFO-KEYS*| + |CLFSWM|::|*INFO-MOUSE-ACTION*| |CLFSWM|::|SHOW-KEY-BINDING|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Show all key binding")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|345 347 (DEFUN SHOW-MAIN-MODE-KEY-BINDING NIL ...)-37| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SHOW-MAIN-MODE-KEY-BINDING| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SHOW-MAIN-MODE-KEY-BINDING| + #16Y(00 00 00 00 00 00 00 00 06 01 6B 00 2F 01 19 01) + (|CLFSWM|::|*MAIN-KEYS*| |CLFSWM|::|SHOW-KEY-BINDING|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Show the main mode binding")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|349 351 (DEFUN SHOW-SECOND-MODE-KEY-BINDING NIL ...)-38| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SHOW-SECOND-MODE-KEY-BINDING| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SHOW-SECOND-MODE-KEY-BINDING| + #18Y(00 00 00 00 00 00 00 00 06 01 6B 00 6B 01 30 02 19 01) + (|CLFSWM|::|*SECOND-KEYS*| |CLFSWM|::|*MOUSE-ACTION*| + |CLFSWM|::|SHOW-KEY-BINDING|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Show the second mode key binding")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|354 362 (LET (# #) (DEFUN DATE-STRING NIL ...))-39| + #23Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA 63 6D 02 01 32 83 C5 19 01) + (|CLFSWM|::|DATE-STRING| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DATE-STRING| + #128Y(00 00 00 00 00 00 00 00 06 01 2E 01 42 07 38 02 72 76 AD DC 71 96 + 97 04 DD 71 96 DE AF 38 02 31 8B AE 01 02 DF E0 01 02 BA 2D 08 07 + E2 AF 31 8A AE 01 02 DF E0 01 02 BB 2D 08 07 E2 AF 31 8A AE 01 02 + DF E0 01 02 BC 2D 08 07 E3 AF 38 02 31 8B AD AF 31 86 E4 AF 31 8A + AE 01 02 DF E0 01 02 B9 2D 08 07 E4 AF 31 8A AC AF 31 86 E4 AF 31 + 8A B0 AF 31 86 E5 AF 38 02 31 8B 16 02 AC 32 77 19 09) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|GET-DECODED-TIME| + ("Lundi" "Mardi" "Mercredi" "Jeudi" "Vendredi" "Samedi" "Dimanche") + ("Janvier" "Fevrier" "Mars" "Avril" "Mai" "Juin" "Juillet" "Aout" + "Septembre" "Octobre" "Novembre" "Decembre") + " " 2. #\0 |SYSTEM|::|DO-FORMAT-DECIMAL| #\: " " #\ " ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|365 367 (DEFUN SHOW-DATE NIL ...)-40| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SHOW-DATE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SHOW-DATE| + #19Y(00 00 00 00 00 00 00 00 06 01 2E 00 14 7B 01 2F 01 19 01) + (|CLFSWM|::|DATE-STRING| |CLFSWM|::|INFO-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Show the current time and date")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|374 378 (DEFUN INFO-ON-SHELL (PROGRAM) ...)-41| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|INFO-ON-SHELL| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-ON-SHELL| + #43Y(00 00 00 00 01 00 00 00 06 02 AD 63 64 6E 03 00 01 02 1B 03 AD 84 + 00 AE 01 02 38 01 80 79 01 1C 73 AC 31 A6 16 01 F8 2F 01 19 03) + (|TOOLS|::|DO-SHELL| |CLFSWM|::|INFO-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|PROGRAM|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|381 383 (DEFUN SHOW-CPU-PROC NIL ...)-42| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SHOW-CPU-PROC| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SHOW-CPU-PROC| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + ("ps --cols=1000 --sort='-%cpu,uid,pgid,ppid,pid' -e -o user,pid,stime,pcpu,pmem,args" + |CLFSWM|::|INFO-ON-SHELL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Show current processes sorted by CPU usage")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|385 387 (DEFUN SHOW-MEM-PROC NIL ...)-43| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SHOW-MEM-PROC| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SHOW-MEM-PROC| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + ("ps --cols=1000 --sort='-vsz,uid,pgid,ppid,pid' -e -o user,pid,stime,pcpu,pmem,args" + |CLFSWM|::|INFO-ON-SHELL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Show current processes sorted by memory usage")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|389 391 (DEFUN SHOW-XMMS-STATUS NIL ...)-44| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SHOW-XMMS-STATUS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SHOW-XMMS-STATUS| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + ("xmms-shell -e status" |CLFSWM|::|INFO-ON-SHELL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Show the current xmms status")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|393 395 (DEFUN SHOW-XMMS-PLAYLIST NIL ...)-45| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SHOW-XMMS-PLAYLIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SHOW-XMMS-PLAYLIST| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + ("xmms-shell -e list" |CLFSWM|::|INFO-ON-SHELL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Show the current xmms playlist")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|398 401 (DEFUN XMMS-INFO-MENU NIL ...)-46| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|XMMS-INFO-MENU| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|XMMS-INFO-MENU| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + (((#\s |CLFSWM|::|SHOW-XMMS-STATUS|) + (#\l |CLFSWM|::|SHOW-XMMS-PLAYLIST|)) + |CLFSWM|::|INFO-MODE-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Open the xmms menu")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|405 407 (DEFUN SHOW-CD-INFO NIL ...)-47| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SHOW-CD-INFO| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SHOW-CD-INFO| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + ("pcd i" |CLFSWM|::|INFO-ON-SHELL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Show the current CD track")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|409 411 (DEFUN SHOW-CD-PLAYLIST NIL ...)-48| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SHOW-CD-PLAYLIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SHOW-CD-PLAYLIST| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + ("pcd mi" |CLFSWM|::|INFO-ON-SHELL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Show the current CD playlist")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|413 416 (DEFUN INFO-ON-CD-MENU NIL ...)-49| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|INFO-ON-CD-MENU| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INFO-ON-CD-MENU| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + (((#\i |CLFSWM|::|SHOW-CD-INFO|) (#\l |CLFSWM|::|SHOW-CD-PLAYLIST|)) + |CLFSWM|::|INFO-MODE-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Open the CD info menu")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|420 428 (DEFUN HELP-ON-CLFSWM NIL ...)-50| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HELP-ON-CLFSWM| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HELP-ON-CLFSWM| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + (((#\h |CLFSWM|::|SHOW-GLOBAL-KEY-BINDING|) + (#\b |CLFSWM|::|SHOW-MAIN-MODE-KEY-BINDING|) + (#\t |CLFSWM|::|SHOW-DATE|) (#\c |CLFSWM|::|SHOW-CPU-PROC|) + (#\m |CLFSWM|::|SHOW-MEM-PROC|) (#\x |CLFSWM|::|XMMS-INFO-MENU|) + (#\d |CLFSWM|::|INFO-ON-CD-MENU|)) + |CLFSWM|::|INFO-MODE-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Open the help and info window")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|431 439 (DEFUN HELP-ON-SECOND-MODE NIL ...)-51| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HELP-ON-SECOND-MODE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HELP-ON-SECOND-MODE| + #15Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 19 01) + (((#\h |CLFSWM|::|SHOW-GLOBAL-KEY-BINDING|) + (#\b |CLFSWM|::|SHOW-SECOND-MODE-KEY-BINDING|) + (#\t |CLFSWM|::|SHOW-DATE|) (#\c |CLFSWM|::|SHOW-CPU-PROC|) + (#\m |CLFSWM|::|SHOW-MEM-PROC|) (#\x |CLFSWM|::|XMMS-INFO-MENU|) + (#\d |CLFSWM|::|INFO-ON-CD-MENU|)) + |CLFSWM|::|INFO-MODE-MENU|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Open the help and info window")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: clfswm-info.fasl ============================================================================== Binary file. No diff available. Added: clfswm-info.lib ============================================================================== --- (empty file) +++ clfswm-info.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,612 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CLFSWM")) +(|COMMON-LISP|::|LET| |COMMON-LISP|::|NIL| + (|COMMON-LISP|::|LET| + ((#1=#:|G49499| + (|COMMON-LISP|::|CONS| '|CLFSWM|::|INFO| + (|CLOS|::|CLASS-NAMES| + (|COMMON-LISP|::|GET| '|COMMON-LISP|::|STRUCTURE-OBJECT| + '|CLOS|::|CLOSCLASS|))))) + (|SYSTEM|::|STRUCTURE-UNDEFINE-ACCESSORIES| '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|REMPROP| '|CLFSWM|::|INFO| + '|SYSTEM|::|DEFSTRUCT-DESCRIPTION|) + (|CLOS|::|DEFINE-STRUCTURE-CLASS| '|CLFSWM|::|INFO| #1# + '|CLFSWM|::|MAKE-INFO| '|COMMON-LISP|::|NIL| '|CLFSWM|::|COPY-INFO| + '|CLFSWM|::|INFO-P| + (|COMMON-LISP|::|LIST| + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| + '|CLFSWM|::|WINDOW| :|INITARGS| '#2=(:|WINDOW|) :|TYPE| + '|COMMON-LISP|::|T| :|ALLOCATION| ':|INSTANCE| + #3='|CLOS|::|INHERITABLE-INITER| + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #4=(|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| |COMMON-LISP|::|NIL|)) + #5='|CLOS|::|INHERITABLE-DOC| '(|COMMON-LISP|::|NIL|) + #6='|CLOS|::|LOCATION| '1. #7='|CLOS|::|READONLY| '|COMMON-LISP|::|NIL|) + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| '|CLFSWM|::|GC| + :|INITARGS| '#8=(:|GC|) :|TYPE| '|COMMON-LISP|::|T| :|ALLOCATION| + ':|INSTANCE| #3# + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #9=(|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| |COMMON-LISP|::|NIL|)) + #5# '(|COMMON-LISP|::|NIL|) #6# '2. #7# '|COMMON-LISP|::|NIL|) + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| '|CLFSWM|::|FONT| + :|INITARGS| '#10=(:|FONT|) :|TYPE| '|COMMON-LISP|::|T| :|ALLOCATION| + ':|INSTANCE| #3# + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #11=(|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| |COMMON-LISP|::|NIL|)) + #5# '(|COMMON-LISP|::|NIL|) #6# '3. #7# '|COMMON-LISP|::|NIL|) + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| + '|COMMON-LISP|::|LIST| :|INITARGS| '#12=(:|LIST|) :|TYPE| + '|COMMON-LISP|::|T| :|ALLOCATION| ':|INSTANCE| #3# + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #13=(|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| |COMMON-LISP|::|NIL|)) + #5# '(|COMMON-LISP|::|NIL|) #6# '4. #7# '|COMMON-LISP|::|NIL|) + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| '|CLFSWM|::|ILW| + :|INITARGS| '#14=(:|ILW|) :|TYPE| '|COMMON-LISP|::|T| :|ALLOCATION| + ':|INSTANCE| #3# + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #15=(|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| |COMMON-LISP|::|NIL|)) + #5# '(|COMMON-LISP|::|NIL|) #6# '5. #7# '|COMMON-LISP|::|NIL|) + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| '|CLFSWM|::|ILH| + :|INITARGS| '#16=(:|ILH|) :|TYPE| '|COMMON-LISP|::|T| :|ALLOCATION| + ':|INSTANCE| #3# + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #17=(|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| |COMMON-LISP|::|NIL|)) + #5# '(|COMMON-LISP|::|NIL|) #6# '6. #7# '|COMMON-LISP|::|NIL|) + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| '|CLFSWM|::|X| + :|INITARGS| '#18=(:|X|) :|TYPE| '|COMMON-LISP|::|T| :|ALLOCATION| + ':|INSTANCE| #3# + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #19=(|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| |COMMON-LISP|::|NIL|)) + #5# '(|COMMON-LISP|::|NIL|) #6# '7. #7# '|COMMON-LISP|::|NIL|) + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| '|CLFSWM|::|Y| + :|INITARGS| '#20=(:|Y|) :|TYPE| '|COMMON-LISP|::|T| :|ALLOCATION| + ':|INSTANCE| #3# + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #21=(|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| |COMMON-LISP|::|NIL|)) + #5# '(|COMMON-LISP|::|NIL|) #6# '8. #7# '|COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|LIST| + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| '|CLFSWM|::|WINDOW| + :|INITARGS| '#2# :|TYPE| '|COMMON-LISP|::|T| :|ALLOCATION| ':|INSTANCE| + #22='|CLOS|::|INHERITABLE-INITER| + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #4#) + #23='|CLOS|::|INHERITABLE-DOC| '(|COMMON-LISP|::|NIL|) :|READERS| + '(|CLFSWM|::|INFO-WINDOW|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-WINDOW|))) + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| '|CLFSWM|::|GC| + :|INITARGS| '#8# :|TYPE| '|COMMON-LISP|::|T| :|ALLOCATION| ':|INSTANCE| + #22# + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #9#) + #23# '(|COMMON-LISP|::|NIL|) :|READERS| '(|CLFSWM|::|INFO-GC|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-GC|))) + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| '|CLFSWM|::|FONT| + :|INITARGS| '#10# :|TYPE| '|COMMON-LISP|::|T| :|ALLOCATION| ':|INSTANCE| + #22# + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #11#) + #23# '(|COMMON-LISP|::|NIL|) :|READERS| '(|CLFSWM|::|INFO-FONT|) + :|WRITERS| '((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-FONT|))) + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| + '|COMMON-LISP|::|LIST| :|INITARGS| '#12# :|TYPE| '|COMMON-LISP|::|T| + :|ALLOCATION| ':|INSTANCE| #22# + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #13#) + #23# '(|COMMON-LISP|::|NIL|) :|READERS| '(|CLFSWM|::|INFO-LIST|) + :|WRITERS| '((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-LIST|))) + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| '|CLFSWM|::|ILW| + :|INITARGS| '#14# :|TYPE| '|COMMON-LISP|::|T| :|ALLOCATION| ':|INSTANCE| + #22# + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #15#) + #23# '(|COMMON-LISP|::|NIL|) :|READERS| '(|CLFSWM|::|INFO-ILW|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILW|))) + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| '|CLFSWM|::|ILH| + :|INITARGS| '#16# :|TYPE| '|COMMON-LISP|::|T| :|ALLOCATION| ':|INSTANCE| + #22# + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #17#) + #23# '(|COMMON-LISP|::|NIL|) :|READERS| '(|CLFSWM|::|INFO-ILH|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILH|))) + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| '|CLFSWM|::|X| + :|INITARGS| '#18# :|TYPE| '|COMMON-LISP|::|T| :|ALLOCATION| ':|INSTANCE| + #22# + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #19#) + #23# '(|COMMON-LISP|::|NIL|) :|READERS| '(|CLFSWM|::|INFO-X|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-X|))) + (|CLOS|::|MAKE-INSTANCE-| + |CLOS|::|| :|NAME| '|CLFSWM|::|Y| + :|INITARGS| '#20# :|TYPE| '|COMMON-LISP|::|T| :|ALLOCATION| ':|INSTANCE| + #22# + (|CLOS|::|MAKE-INHERITABLE-SLOT-DEFINITION-INITER| '|COMMON-LISP|::|NIL| + #21#) + #23# '(|COMMON-LISP|::|NIL|) :|READERS| '(|CLFSWM|::|INFO-Y|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-Y|))))) + (|COMMON-LISP|::|DEFUN| |CLFSWM|::|MAKE-INFO| + (|COMMON-LISP|::|&KEY| (#24=#:|WINDOW| |COMMON-LISP|::|NIL|) + (#25=#:|GC| |COMMON-LISP|::|NIL|) (#26=#:|FONT| |COMMON-LISP|::|NIL|) + (#27=#:|LIST| |COMMON-LISP|::|NIL|) (#28=#:|ILW| |COMMON-LISP|::|NIL|) + (#29=#:|ILH| |COMMON-LISP|::|NIL|) (#30=#:|X| |COMMON-LISP|::|NIL|) + (#31=#:|Y| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|LET| + ((|SYSTEM|::|OBJECT| (|SYSTEM|::|%MAKE-STRUCTURE| #1# 9.))) + (|COMMON-LISP|::|SETF| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 1.) + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| #24#)) + (|COMMON-LISP|::|SETF| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 2.) + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| #25#)) + (|COMMON-LISP|::|SETF| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 3.) + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| #26#)) + (|COMMON-LISP|::|SETF| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 4.) + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| #27#)) + (|COMMON-LISP|::|SETF| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 5.) + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| #28#)) + (|COMMON-LISP|::|SETF| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 6.) + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| #29#)) + (|COMMON-LISP|::|SETF| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 7.) + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| #30#)) + (|COMMON-LISP|::|SETF| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 8.) + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| #31#)) + |SYSTEM|::|OBJECT|))) + (|COMMON-LISP|::|PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-P|)) + (|COMMON-LISP|::|DEFUN| |CLFSWM|::|INFO-P| (|SYSTEM|::|OBJECT|) + (|SYSTEM|::|%STRUCTURE-TYPE-P| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT|)) + (|COMMON-LISP|::|PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|COPY-INFO|)) + (|COMMON-LISP|::|DEFUN| |CLFSWM|::|COPY-INFO| (|COMMON-LISP|::|STRUCTURE|) + (|COMMON-LISP|::|COPY-STRUCTURE| |COMMON-LISP|::|STRUCTURE|)) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-WINDOW| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-WINDOW|)) + (|COMMON-LISP|::|DEFUN| |CLFSWM|::|INFO-WINDOW| #32=(|SYSTEM|::|OBJECT|) + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 1.))) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-WINDOW| #33='|SYSTEM|::|DEFSTRUCT-READER| + '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-GC| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-GC|)) + (|COMMON-LISP|::|DEFUN| |CLFSWM|::|INFO-GC| #32# + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 2.))) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-GC| #33# '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-FONT| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-FONT|)) + (|COMMON-LISP|::|DEFUN| |CLFSWM|::|INFO-FONT| #32# + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 3.))) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-FONT| #33# '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-LIST| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-LIST|)) + (|COMMON-LISP|::|DEFUN| |CLFSWM|::|INFO-LIST| #32# + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 4.))) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-LIST| #33# '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-ILW| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-ILW|)) + (|COMMON-LISP|::|DEFUN| |CLFSWM|::|INFO-ILW| #32# + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 5.))) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-ILW| #33# '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-ILH| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-ILH|)) + (|COMMON-LISP|::|DEFUN| |CLFSWM|::|INFO-ILH| #32# + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 6.))) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-ILH| #33# '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-X| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-X|)) + (|COMMON-LISP|::|DEFUN| |CLFSWM|::|INFO-X| #32# + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 7.))) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-X| #33# '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-Y| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-Y|)) + (|COMMON-LISP|::|DEFUN| |CLFSWM|::|INFO-Y| #32# + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 8.))) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-Y| #33# '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-WINDOW|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-WINDOW|))) + (|COMMON-LISP|::|DEFUN| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-WINDOW|) + #34=(|SYSTEM|::|VALUE| |SYSTEM|::|OBJECT|) + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 1. + |SYSTEM|::|VALUE|)) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-WINDOW| #35='|SYSTEM|::|DEFSTRUCT-WRITER| + '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-GC|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-GC|))) + (|COMMON-LISP|::|DEFUN| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-GC|) #34# + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 2. + |SYSTEM|::|VALUE|)) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-GC| #35# '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-FONT|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-FONT|))) + (|COMMON-LISP|::|DEFUN| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-FONT|) #34# + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 3. + |SYSTEM|::|VALUE|)) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-FONT| #35# '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-LIST|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-LIST|))) + (|COMMON-LISP|::|DEFUN| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-LIST|) #34# + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 4. + |SYSTEM|::|VALUE|)) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-LIST| #35# '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILW|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILW|))) + (|COMMON-LISP|::|DEFUN| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILW|) #34# + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 5. + |SYSTEM|::|VALUE|)) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-ILW| #35# '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILH|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILH|))) + (|COMMON-LISP|::|DEFUN| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILH|) #34# + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 6. + |SYSTEM|::|VALUE|)) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-ILH| #35# '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-X|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-X|))) + (|COMMON-LISP|::|DEFUN| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-X|) #34# + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 7. + |SYSTEM|::|VALUE|)) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-X| #35# '|CLFSWM|::|INFO|) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-Y|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-Y|))) + (|COMMON-LISP|::|DEFUN| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-Y|) #34# + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 8. + |SYSTEM|::|VALUE|)) + (|SYSTEM|::|%PUT| '|CLFSWM|::|INFO-Y| #35# '|CLFSWM|::|INFO|) + (|SYSTEM|::|%SET-DOCUMENTATION| '|CLFSWM|::|INFO| '|COMMON-LISP|::|TYPE| + |COMMON-LISP|::|NIL|) + (|CLOS|::|DEFSTRUCT-REMOVE-PRINT-OBJECT-METHOD| '|CLFSWM|::|INFO|) + '|CLFSWM|::|INFO|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|MAKE-INFO| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&KEY| (#:|WINDOW| |COMMON-LISP|::|NIL|) + (#:|GC| |COMMON-LISP|::|NIL|) (#:|FONT| |COMMON-LISP|::|NIL|) + (#:|LIST| |COMMON-LISP|::|NIL|) (#:|ILW| |COMMON-LISP|::|NIL|) + (#:|ILH| |COMMON-LISP|::|NIL|) (#:|X| |COMMON-LISP|::|NIL|) + (#:|Y| |COMMON-LISP|::|NIL|)))) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-P|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-P| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '#1=(|SYSTEM|::|OBJECT|)) + '(#1# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-P|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-P| + (|SYSTEM|::|%STRUCTURE-TYPE-P| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT|)))) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|COPY-INFO|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|COPY-INFO| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '#1=(|COMMON-LISP|::|STRUCTURE|)) + '(#1# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|COPY-INFO|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|COPY-INFO| + (|COMMON-LISP|::|COPY-STRUCTURE| |COMMON-LISP|::|STRUCTURE|)))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-WINDOW| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-WINDOW|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-WINDOW| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '#1=(|SYSTEM|::|OBJECT|)) + '(#1# + (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-WINDOW|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-WINDOW| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 1.))))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-GC| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-GC|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-GC| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '#1=(|SYSTEM|::|OBJECT|)) + '(#1# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-GC|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-GC| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 2.))))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-FONT| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-FONT|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-FONT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '#1=(|SYSTEM|::|OBJECT|)) + '(#1# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-FONT|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-FONT| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 3.))))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-LIST| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-LIST|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '#1=(|SYSTEM|::|OBJECT|)) + '(#1# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-LIST|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-LIST| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 4.))))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-ILW| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-ILW|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-ILW| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '#1=(|SYSTEM|::|OBJECT|)) + '(#1# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-ILW|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-ILW| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 5.))))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-ILH| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-ILH|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-ILH| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '#1=(|SYSTEM|::|OBJECT|)) + '(#1# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-ILH|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-ILH| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 6.))))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-X| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-X|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-X| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '#1=(|SYSTEM|::|OBJECT|)) + '(#1# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-X|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-X| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 7.))))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| |CLFSWM|::|INFO-Y| (|CLFSWM|::|INFO|) + |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|INLINE| |CLFSWM|::|INFO-Y|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-Y| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '#1=(|SYSTEM|::|OBJECT|)) + '(#1# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| |CLFSWM|::|INFO-Y|)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-Y| + (|COMMON-LISP|::|THE| |COMMON-LISP|::|T| + (|SYSTEM|::|%STRUCTURE-REF| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 8.))))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-WINDOW|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-WINDOW|))) +(|SYSTEM|::|C-DEFUN| '#1=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-WINDOW|) + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '#2=(|SYSTEM|::|VALUE| |SYSTEM|::|OBJECT|)) + '(#2# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| #1#)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-WINDOW| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 1. + |SYSTEM|::|VALUE|)))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-GC|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-GC|))) +(|SYSTEM|::|C-DEFUN| '#1=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-GC|) + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '#2=(|SYSTEM|::|VALUE| |SYSTEM|::|OBJECT|)) + '(#2# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| #1#)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-GC| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 2. + |SYSTEM|::|VALUE|)))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-FONT|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-FONT|))) +(|SYSTEM|::|C-DEFUN| '#1=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-FONT|) + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '#2=(|SYSTEM|::|VALUE| |SYSTEM|::|OBJECT|)) + '(#2# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| #1#)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-FONT| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 3. + |SYSTEM|::|VALUE|)))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-LIST|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-LIST|))) +(|SYSTEM|::|C-DEFUN| '#1=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-LIST|) + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '#2=(|SYSTEM|::|VALUE| |SYSTEM|::|OBJECT|)) + '(#2# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| #1#)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-LIST| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 4. + |SYSTEM|::|VALUE|)))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILW|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILW|))) +(|SYSTEM|::|C-DEFUN| '#1=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILW|) + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '#2=(|SYSTEM|::|VALUE| |SYSTEM|::|OBJECT|)) + '(#2# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| #1#)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-ILW| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 5. + |SYSTEM|::|VALUE|)))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILH|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILH|))) +(|SYSTEM|::|C-DEFUN| '#1=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-ILH|) + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '#2=(|SYSTEM|::|VALUE| |SYSTEM|::|OBJECT|)) + '(#2# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| #1#)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-ILH| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 6. + |SYSTEM|::|VALUE|)))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-X|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-X|))) +(|SYSTEM|::|C-DEFUN| '#1=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-X|) + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '#2=(|SYSTEM|::|VALUE| |SYSTEM|::|OBJECT|)) + '(#2# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| #1#)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-X| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 7. + |SYSTEM|::|VALUE|)))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|FUNCTION| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-Y|) + (|COMMON-LISP|::|T| |CLFSWM|::|INFO|) |COMMON-LISP|::|T|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|INLINE| (|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-Y|))) +(|SYSTEM|::|C-DEFUN| '#1=(|COMMON-LISP|::|SETF| |CLFSWM|::|INFO-Y|) + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '#2=(|SYSTEM|::|VALUE| |SYSTEM|::|OBJECT|)) + '(#2# (|COMMON-LISP|::|DECLARE| (|SYSTEM|::|IN-DEFUN| #1#)) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|INFO-Y| + (|SYSTEM|::|%STRUCTURE-STORE| '|CLFSWM|::|INFO| |SYSTEM|::|OBJECT| 8. + |SYSTEM|::|VALUE|)))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|LEAVE-INFO-MODE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|MOUSE-LEAVE-INFO-MODE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DRAW-INFO-WINDOW| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DRAW-INFO-WINDOW-PARTIAL| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-BANISH-POINTER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-NEXT-LINE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-PREVIOUS-LINE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-PREVIOUS-CHAR| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-NEXT-CHAR| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-FIRST-LINE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-END-LINE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-NEXT-TEN-LINES| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-PREVIOUS-TEN-LINES| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|INFO|))) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-START-GRAB-X*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-START-GRAB-Y*|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-BEGIN-GRAB| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-END-GRAB| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-MOUSE-NEXT-LINE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-MOUSE-PREVIOUS-LINE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-MOUSE-MOTION| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|INFO|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-MODE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|INFO-LIST| |COMMON-LISP|::|&KEY| (|CLFSWM|::|X| 0.) + (|CLFSWM|::|Y| 0.) (|CLFSWM|::|WIDTH| |COMMON-LISP|::|NIL|) + (|CLFSWM|::|HEIGHT| |COMMON-LISP|::|NIL|)))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-MODE-MENU| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|ITEM-LIST| |COMMON-LISP|::|&KEY| (|CLFSWM|::|X| 0.) + (|CLFSWM|::|Y| 0.) (|CLFSWM|::|WIDTH| |COMMON-LISP|::|NIL|) + (|CLFSWM|::|HEIGHT| |COMMON-LISP|::|NIL|)))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|APPEND-SPACE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|COMMON-LISP|::|STRING|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-KEY-BINDING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|HASH-TABLE-KEY|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-GLOBAL-KEY-BINDING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-MAIN-MODE-KEY-BINDING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-SECOND-MODE-KEY-BINDING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DATE-STRING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-DATE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-ON-SHELL| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|PROGRAM|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-CPU-PROC| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-MEM-PROC| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-XMMS-STATUS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-XMMS-PLAYLIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|XMMS-INFO-MENU| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-CD-INFO| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-CD-PLAYLIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INFO-ON-CD-MENU| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HELP-ON-CLFSWM| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HELP-ON-SECOND-MODE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) Added: clfswm-info.lisp ============================================================================== --- (empty file) +++ clfswm-info.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,444 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Tue Feb 19 21:43:15 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Info function (see the end of this file for user definition +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +(defstruct info window gc font list ilw ilh x y) + + +(defun leave-info-mode (info) + "Leave the info mode" + (declare (ignore info)) + (throw 'exit-info-loop nil)) + +(defun mouse-leave-info-mode (root-x root-y info) + "Leave the info mode" + (declare (ignore root-x root-y info)) + (throw 'exit-info-loop nil)) + + + +(defun draw-info-window (info) + (xlib:clear-area (info-window info)) + (setf (xlib:gcontext-foreground (info-gc info)) (get-color *info-foreground*)) + (loop for line in (info-list info) + for y from 0 do + (xlib:draw-image-glyphs (info-window info) (info-gc info) + (- (info-ilw info) (info-x info)) + (- (+ (* (info-ilh info) y) (info-ilh info)) (info-y info)) + (format nil "~A" line)))) + + +(defun draw-info-window-partial (info) + (let ((last-y (info-y info))) + (setf (xlib:gcontext-foreground (info-gc info)) (get-color *info-background*)) + (xlib:draw-rectangle (info-window info) (info-gc info) 0 0 + (xlib:drawable-width (info-window info)) + (max (+ (- (info-y info)) (xlib:max-char-ascent (info-font info))) 0) t) + (loop for line in (info-list info) + for y from 0 do + (setf last-y (- (+ (* (info-ilh info) y) (info-ilh info)) (info-y info))) + (setf (xlib:gcontext-foreground (info-gc info)) (get-color *info-background*)) + (xlib:draw-rectangle (info-window info) (info-gc info) + 0 (+ last-y (- (info-ilh info)) (xlib:max-char-descent (info-font info))) + (xlib:drawable-width (info-window info)) (info-ilh info) t) + (setf (xlib:gcontext-foreground (info-gc info)) (get-color *info-foreground*)) + (xlib:draw-image-glyphs (info-window info) (info-gc info) + (- (info-ilw info) (info-x info)) + last-y + (format nil "~A" line))) + (setf (xlib:gcontext-foreground (info-gc info)) (get-color *info-background*)) + (xlib:draw-rectangle (info-window info) (info-gc info) 0 last-y + (xlib:drawable-width (info-window info)) + (xlib:drawable-height (info-window info)) + t))) + + +;;;,----- +;;;| Key binding +;;;`----- + +(define-info-key (#\q) 'leave-info-mode) +(define-info-key ("Return") 'leave-info-mode) +(define-info-key ("Escape") 'leave-info-mode) +(define-info-key (#\Space) 'leave-info-mode) + +(define-info-key ("twosuperior") + (defun info-banish-pointer (info) + "Move the pointer to the lower right corner of the screen" + (declare (ignore info)) + (banish-pointer))) + +(define-info-key ("Down") + (defun info-next-line (info) + "Move one line down" + (incf (info-y info) (info-ilh info)) + (draw-info-window info))) + +(define-info-key ("Up") + (defun info-previous-line (info) + "Move one line up" + (decf (info-y info) (info-ilh info)) + (draw-info-window info))) + +(define-info-key ("Left") + (defun info-previous-char (info) + "Move one char left" + (decf (info-x info) (info-ilw info)) + (draw-info-window info))) + +(define-info-key ("Right") + (defun info-next-char (info) + "Move one char right" + (incf (info-x info) (info-ilw info)) + (draw-info-window info))) + + +(define-info-key ("Home") + (defun info-first-line (info) + "Move to first line" + (setf (info-x info) 0 + (info-y info) 0) + (draw-info-window info))) + +(define-info-key ("End") + (defun info-end-line (info) + "Move to last line" + (setf (info-x info) 0 + (info-y info) (- (* (length (info-list info)) (info-ilh info)) (xlib:drawable-height (info-window info)))) + (draw-info-window info))) + + +(define-info-key ("Page_Down") + (defun info-next-ten-lines (info) + "Move ten lines down" + (incf (info-y info) (* (info-ilh info) 10)) + (draw-info-window info))) + +(define-info-key ("Page_Up") + (defun info-previous-ten-lines (info) + "Move ten lines up" + (decf (info-y info) (* (info-ilh info) 10)) + (draw-info-window info))) + + + + +(defparameter *info-start-grab-x* nil) +(defparameter *info-start-grab-y* nil) + + +(defun info-begin-grab (root-x root-y info) + "Begin grab text" + (setf *info-start-grab-x* (+ root-x (info-x info)) + *info-start-grab-y* (+ root-y (info-y info))) + (draw-info-window info)) + +(defun info-end-grab (root-x root-y info) + "End grab" + (setf (info-x info) (- *info-start-grab-x* root-x) + (info-y info) (- *info-start-grab-y* root-y) + *info-start-grab-x* nil + *info-start-grab-y* nil) + (draw-info-window info)) + +(defun info-mouse-next-line (root-x root-y info) + "Move one line down" + (declare (ignore root-x root-y)) + (incf (info-y info) (info-ilh info)) + (draw-info-window info)) + +(defun info-mouse-previous-line (root-x root-y info) + "Move one line up" + (declare (ignore root-x root-y)) + (decf (info-y info) (info-ilh info)) + (draw-info-window info)) + + +(defun info-mouse-motion (root-x root-y info) + "Grab text" + (when (and *info-start-grab-x* *info-start-grab-y*) + (setf (info-x info) (- *info-start-grab-x* root-x) + (info-y info) (- *info-start-grab-y* root-y)) + (draw-info-window-partial info))) + + + + + +(define-info-mouse-action (1) 'info-begin-grab 'info-end-grab) +(define-info-mouse-action (2) 'mouse-leave-info-mode) +(define-info-mouse-action (4) 'info-mouse-previous-line) +(define-info-mouse-action (5) 'info-mouse-next-line) +(define-info-mouse-action ('Motion) 'info-mouse-motion nil) + + +;;;,----- +;;;| Main mode +;;;`----- + +(defun info-mode (info-list &key (x 0) (y 0) (width nil) (height nil)) + "Open the info mode. Info-list is a list of info: One string per line" + (when info-list + (let* ((pointer-grabbed (xgrab-pointer-p)) + (keyboard-grabbed (xgrab-keyboard-p)) + (font (xlib:open-font *display* *info-font-string*)) + (ilw (xlib:max-char-width font)) + (ilh (+ (xlib:max-char-ascent font) (xlib:max-char-descent font) 1)) + (window (xlib:create-window :parent *root* + :x x :y y + :width (or width + (min (* (+ (loop for l in info-list maximize (length l)) 2) ilw) + (- (xlib:screen-width *screen*) 2 x))) + :height (or height + (min (+ (* (length info-list) ilh) (/ ilh 2)) + (- (xlib:screen-height *screen*) 2 y))) + :background (get-color *info-background*) + :colormap (xlib:screen-default-colormap *screen*) + :border-width 1 + :border (get-color *info-border*) + :event-mask '(:exposure))) + (gc (xlib:create-gcontext :drawable window + :foreground (get-color *info-foreground*) + :background (get-color *info-background*) + :font font + :line-style :solid)) + (info (make-info :window window :gc gc :x 0 :y 0 :list info-list + :font font :ilw ilw :ilh ilh))) + (labels ((handle-key (&rest event-slots &key root code state &allow-other-keys) + (declare (ignore event-slots root)) + (funcall-key-from-code *info-keys* code state info)) + (handle-motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) + (declare (ignore event-slots)) + (unless (xlib:event-case (*display* :discard-p nil :peek-p t :timeout 0) + (:motion-notify () t)) + (funcall-button-from-code *info-mouse-action* 'motion 0 root-x root-y #'first info))) + (handle-button-press (&rest event-slots &key root-x root-y code state &allow-other-keys) + (declare (ignore event-slots)) + (funcall-button-from-code *info-mouse-action* code state root-x root-y #'first info)) + (handle-button-release (&rest event-slots &key root-x root-y code state &allow-other-keys) + (declare (ignore event-slots)) + (funcall-button-from-code *info-mouse-action* code state root-x root-y #'third info)) + (info-handle-unmap-notify (&rest event-slots) + (apply #'handle-unmap-notify event-slots) + (draw-info-window info)) + (info-handle-destroy-notify (&rest event-slots) + (apply #'handle-destroy-notify event-slots) + (draw-info-window info)) + (handle-events (&rest event-slots &key display event-key &allow-other-keys) + (declare (ignore display)) + (case event-key + (:key-press (apply #'handle-key event-slots) t) + (:button-press (apply #'handle-button-press event-slots) t) + (:button-release (apply #'handle-button-release event-slots) t) + (:motion-notify (apply #'handle-motion-notify event-slots) t) + (:map-request nil) + (:unmap-notify (apply #'info-handle-unmap-notify event-slots) t) + (:destroy-notify (apply #'info-handle-destroy-notify event-slots) t) + (:mapping-notify nil) + (:property-notify nil) + (:create-notify nil) + (:enter-notify nil) + (:exposure (draw-info-window info))) + t)) + (xlib:map-window window) + (draw-info-window info) + (xgrab-pointer *root* 68 69) + (unless keyboard-grabbed + (xgrab-keyboard *root*)) + (unwind-protect + (catch 'exit-info-loop + (loop + (xlib:display-finish-output *display*) + (xlib:process-event *display* :handler #'handle-events))) + (if pointer-grabbed + (xgrab-pointer *root* 66 67) + (xungrab-pointer)) + (unless keyboard-grabbed + (xungrab-keyboard)) + (xlib:free-gcontext gc) + (xlib:destroy-window window) + (xlib:close-font font) + (show-all-childs) + (wait-no-key-or-button-press)))))) + + + + + + +(defun info-mode-menu (item-list &key (x 0) (y 0) (width nil) (height nil)) + "Open an info help menu. +Item-list is: '((key function) (key function)) +key is a character, a keycode or a keysym" + (let ((info-list nil) + (action nil)) + (dolist (item item-list) + (destructuring-bind (key function) item + (push (format nil "~A: ~A" key (documentation function 'function)) + info-list) + (define-info-key-fun (list key 0) + (lambda (&optional args) + (declare (ignore args)) + (setf action function) + (throw 'exit-info-loop nil))))) + (info-mode (nreverse info-list) :x x :y y :width width :height height) + (dolist (item item-list) + (let ((key (first item))) + (undefine-info-key-fun (list key 0)))) + (when (fboundp action) + (funcall action)))) + + + + + +;;;,----- +;;;| CONFIG - Info mode functions +;;;`----- +(defun append-space (string) + "Append spaces before Newline on each line" + (with-output-to-string (stream) + (loop for c across string do + (when (equal c #\Newline) + (princ " " stream)) + (princ c stream)))) + + +(defun show-key-binding (&rest hash-table-key) + "Show the binding of each hash-table-key" + (info-mode (split-string (append-space (with-output-to-string (stream) + (produce-doc hash-table-key + stream))) + #\Newline))) + + +(defun show-global-key-binding () + "Show all key binding" + (show-key-binding *main-keys* *second-keys* *mouse-action* + *info-keys* *info-mouse-action*)) + +(defun show-main-mode-key-binding () + "Show the main mode binding" + (show-key-binding *main-keys*)) + +(defun show-second-mode-key-binding () + "Show the second mode key binding" + (show-key-binding *second-keys* *mouse-action*)) + + +(let ((days '("Lundi" "Mardi" "Mercredi" "Jeudi" "Vendredi" "Samedi" "Dimanche")) + (months '("Janvier" "Fevrier" "Mars" "Avril" "Mai" "Juin" "Juillet" + "Aout" "Septembre" "Octobre" "Novembre" "Decembre"))) + (defun date-string () + (multiple-value-bind (second minute hour date month year day) + (get-decoded-time) + (format nil " ~2,'0D:~2,'0D:~2,'0D ~A ~2,'0D ~A ~A " + hour minute second + (nth day days) date (nth (1- month) months) year)))) + + +(defun show-date () + "Show the current time and date" + (info-mode (list (date-string)))) + + + + + + +(defun info-on-shell (program) + (let ((lines (do-shell program nil t))) + (info-mode (loop for line = (read-line lines nil nil) + while line + collect line)))) + + +(defun show-cpu-proc () + "Show current processes sorted by CPU usage" + (info-on-shell "ps --cols=1000 --sort='-%cpu,uid,pgid,ppid,pid' -e -o user,pid,stime,pcpu,pmem,args")) + +(defun show-mem-proc () + "Show current processes sorted by memory usage" + (info-on-shell "ps --cols=1000 --sort='-vsz,uid,pgid,ppid,pid' -e -o user,pid,stime,pcpu,pmem,args")) + +(defun show-xmms-status () + "Show the current xmms status" + (info-on-shell "xmms-shell -e status")) + +(defun show-xmms-playlist () + "Show the current xmms playlist" + (info-on-shell "xmms-shell -e list")) + + +(defun xmms-info-menu () + "Open the xmms menu" + (info-mode-menu '((#\s show-xmms-status) + (#\l show-xmms-playlist)))) + + + +(defun show-cd-info () + "Show the current CD track" + (info-on-shell "pcd i")) + +(defun show-cd-playlist () + "Show the current CD playlist" + (info-on-shell "pcd mi")) + +(defun info-on-cd-menu () + "Open the CD info menu" + (info-mode-menu '((#\i show-cd-info) + (#\l show-cd-playlist)))) + + + +(defun help-on-clfswm () + "Open the help and info window" + (info-mode-menu '((#\h show-global-key-binding) + (#\b show-main-mode-key-binding) + (#\t show-date) + (#\c show-cpu-proc) + (#\m show-mem-proc) + (#\x xmms-info-menu) + (#\d info-on-cd-menu)))) + + +(defun help-on-second-mode () + "Open the help and info window" + (info-mode-menu '((#\h show-global-key-binding) + (#\b show-second-mode-key-binding) + (#\t show-date) + (#\c show-cpu-proc) + (#\m show-mem-proc) + (#\x xmms-info-menu) + (#\d info-on-cd-menu)))) + + + + + Added: clfswm-internal.fas ============================================================================== --- (empty file) +++ clfswm-internal.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,1283 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 28 (IN-PACKAGE :CLFSWM)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CLFSWM" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|31 37 (DEFUN CALL-HOOK (HOOK &OPTIONAL ARGS) ...)-2| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|CALL-HOOK| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|CALL-HOOK| + #44Y(00 00 00 00 01 00 01 00 06 08 3D 01 AE 8E 0D 05 AE 9F 9B 00 03 AE + 63 1B 0C 87 01 00 DA AD B1 61 02 37 00 83 01 AD 8D 94 70 00 19 05) + (|CLFSWM|::|CALL-HOOK|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|HOOK| |COMMON-LISP|::|&OPTIONAL| |CLFSWM|::|ARGS|) + "Call a hook (a function, a symbol or a list of function)")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|40 44 (DEFUN GROUP-DATA-SLOT (GROUP SLOT) ...)-3| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GROUP-DATA-SLOT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GROUP-DATA-SLOT| + #29Y(00 00 00 00 02 00 00 00 06 03 AE 2F 00 1F 0C AD AF 6F 01 38 03 31 + BD 5C 5B 19 03 19 03) + (|CLFSWM|::|GROUP-P| |CLFSWM|::|GROUP-DATA|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|GROUP| |CLFSWM|::|SLOT|) + "Return the value associated to data slot")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|46 52 (DEFUN SET-GROUP-DATA-SLOT (GROUP SLOT VALUE) ...)-4| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SET-GROUP-DATA-SLOT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SET-GROUP-DATA-SLOT| + #58Y(00 00 00 00 03 00 00 00 06 04 AF 2F 00 1F 29 AF DB B0 B2 DB 72 3E + 38 03 71 BD B2 DB 72 3E 38 07 72 4F 32 3F AE AE 7B 02 B0 DB 72 3E + B1 DB AF A0 7A 32 3F 16 02 9E 19 04 19 04) + (|CLFSWM|::|GROUP-P| |CLFSWM|::|DATA|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|GROUP| |CLFSWM|::|SLOT| |CLFSWM|::|VALUE|) + "Set the value associated to data slot")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|54 54 (DEFSETF GROUP-DATA-SLOT SET-GROUP-DATA-SLOT)-5| + #42Y(00 00 00 00 00 00 00 00 00 01 DA DB 32 8A DA DC DA DD 38 01 8F 85 01 C8 + 14 2D 03 04 DA DD DF 32 89 DA E0 63 2D 03 07 C5 19 01) + (|CLFSWM|::|GROUP-DATA-SLOT| |SYSTEM|::|DEFSTRUCT-WRITER| + |COMMON-LISP|::|DEFSETF| |SYSTEM|::|SETF-EXPANDER| + |SYSTEM|::|CHECK-REDEFINITION| |CLFSWM|::|SET-GROUP-DATA-SLOT| + |COMMON-LISP|::|SETF| |SYSTEM|::|%SET-DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|58 58 (DEFGENERIC GROUP-P (GROUP))-6| + #112Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 6B 03 99 + 04 DA DF AF E0 E1 E2 E3 E4 01 03 B8 6F 0B 1B 24 AF 38 01 80 9E 03 14 + AD 31 AD 16 02 1B 14 94 00 94 00 9E 5C 5C 78 76 00 7B 02 A1 21 63 9D + FC FB 16 02 83 00 AC 8D 94 66 16 01 9E 16 01 F8 E6 6B 0D E8 BA E9 DA + 6E 03 10 EB 63 6E 03 12 ED 63 EE 63 7B 08 33 02 22 9B 09 02) + (|CLFSWM|::|GROUP-P| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + |CLOS|::|| |CLOS|::|ENSURE-GENERIC-FUNCTION| + :|GENERIC-FUNCTION-CLASS| :|LAMBDA-LIST| (|CLFSWM|::|GROUP|) + :|ARGUMENT-PRECEDENCE-ORDER| (|CLFSWM|::|GROUP|) |CLOS|::|METHODS| + |CLOS|::|CLASS-DEFAULT-INITARGS| :|METHOD-CLASS| + |CLOS|::|| :|METHOD-COMBINATION| :|NAME| + |CLOS|::|MAKE-GENERIC-FUNCTION-PROTOTYPE| |CLOS|::|STANDARD| + |CLOS|::|FIND-METHOD-COMBINATION| :|DOCUMENTATION| :|DECLARATIONS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|59 61 (DEFMETHOD GROUP-P (#) ...)-7| + #43Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 E4 38 02 72 2A 7B 01 7B 08 2D 03 0B 19 01) + (|CLFSWM|::|GROUP-P| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + #Y(#:|59 61 (DEFMETHOD GROUP-P (#) ...)-7-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|59 61 (DEFMETHOD GROUP-P (#) ...)-7-1-1| + #13Y(00 00 00 00 01 00 00 00 00 02 02 19 02) () + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|GROUP|) |CLOS|::|SIGNATURE| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLFSWM|::|GROUP| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|62 64 (DEFMETHOD GROUP-P (GROUP) ...)-8| + #43Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 64 38 02 72 2A 7B 01 7B 08 2D 03 0A 19 01) + (|CLFSWM|::|GROUP-P| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + #Y(#:|62 64 (DEFMETHOD GROUP-P (GROUP) ...)-8-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|62 64 (DEFMETHOD GROUP-P (GROUP) ...)-8-1-1| + #13Y(00 00 00 00 01 00 00 00 00 02 00 19 02) () + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|GROUP|) |CLOS|::|SIGNATURE| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|68 68 (DEFGENERIC CHILD-NAME (CHILD))-9| + #112Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 6B 03 99 + 04 DA DF AF E0 E1 E2 E3 E4 01 03 B8 6F 0B 1B 24 AF 38 01 80 9E 03 14 + AD 31 AD 16 02 1B 14 94 00 94 00 9E 5C 5C 78 76 00 7B 02 A1 21 63 9D + FC FB 16 02 83 00 AC 8D 94 66 16 01 9E 16 01 F8 E6 6B 0D E8 BA E9 DA + 6E 03 10 EB 63 6E 03 12 ED 63 EE 63 7B 08 33 02 22 9B 09 02) + (|CLFSWM|::|CHILD-NAME| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + |CLOS|::|| |CLOS|::|ENSURE-GENERIC-FUNCTION| + :|GENERIC-FUNCTION-CLASS| :|LAMBDA-LIST| (|CLFSWM|::|CHILD|) + :|ARGUMENT-PRECEDENCE-ORDER| (|CLFSWM|::|CHILD|) |CLOS|::|METHODS| + |CLOS|::|CLASS-DEFAULT-INITARGS| :|METHOD-CLASS| + |CLOS|::|| :|METHOD-COMBINATION| :|NAME| + |CLOS|::|MAKE-GENERIC-FUNCTION-PROTOTYPE| |CLOS|::|STANDARD| + |CLOS|::|FIND-METHOD-COMBINATION| :|DOCUMENTATION| :|DECLARATIONS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|70 71 (DEFMETHOD CHILD-NAME (#) ...)-10| + #43Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 E4 38 02 72 2A 7B 01 7B 08 2D 03 0B 19 01) + (|CLFSWM|::|CHILD-NAME| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + #Y(#:|70 71 (DEFMETHOD CHILD-NAME (#) ...)-10-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|70 71 (DEFMETHOD CHILD-NAME (#) ...)-10-1-1| + #15Y(00 00 00 00 01 00 00 00 00 02 AD 2F 00 19 02) + (|XLIB|::|WM-NAME|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|CHILD|) |CLOS|::|SIGNATURE| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |XLIB|::|WINDOW| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|73 74 (DEFMETHOD CHILD-NAME (#) ...)-11| + #43Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 E4 38 02 72 2A 7B 01 7B 08 2D 03 0B 19 01) + (|CLFSWM|::|CHILD-NAME| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + #Y(#:|73 74 (DEFMETHOD CHILD-NAME (#) ...)-11-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|73 74 (DEFMETHOD CHILD-NAME (#) ...)-11-1-1| + #15Y(00 00 00 00 01 00 00 00 00 02 AD 2F 00 19 02) + (|CLFSWM|::|GROUP-NAME|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|CHILD|) |CLOS|::|SIGNATURE| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLFSWM|::|GROUP| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|76 78 (DEFMETHOD CHILD-NAME (CHILD) ...)-12| + #43Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 64 38 02 72 2A 7B 01 7B 08 2D 03 0A 19 01) + (|CLFSWM|::|CHILD-NAME| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + #Y(#:|76 78 (DEFMETHOD CHILD-NAME (CHILD) ...)-12-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|76 78 (DEFMETHOD CHILD-NAME (CHILD) ...)-12-1-1| + #13Y(00 00 00 00 01 00 00 00 00 02 C5 19 02) ("???") + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|CHILD|) |CLOS|::|SIGNATURE| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|82 91 (DEFMACRO WITH-ALL-CHILDS (# &BODY BODY) ...)-13| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|WITH-ALL-CHILDS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|WITH-ALL-CHILDS| + #108Y(00 00 00 00 02 00 00 00 00 03 AE DA 8B 01 80 49 9F 5C 78 AC DA DA + 2D 03 01 1D 80 42 AC 94 00 9E 5C 78 A3 5C 79 38 01 72 90 38 01 72 + 90 E4 AE B1 7B 01 B1 E5 E6 B5 7B 02 E7 B3 E8 B8 7B 02 7B 02 B5 B5 + 7B 02 7B 03 7B 03 7B 01 33 02 22 5D 7A 7B 01 AF B3 7B 02 61 03 19 + 0A AE 2F 02 19 03 DD DE B1 DF B0 E0 6F 07 E2 B3 E3 33 07 1E) + (2. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|WITH-ALL-CHILDS| + (|CLFSWM|::|ROOT| |CLFSWM|::|CHILD|) |COMMON-LISP|::|LABELS| + |COMMON-LISP|::|WHEN| |CLFSWM|::|GROUP-P| |COMMON-LISP|::|DOLIST| + |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|94 103 (DEFMACRO WITH-ALL-GROUPS (# &BODY BODY) ...)-14| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|WITH-ALL-GROUPS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|WITH-ALL-GROUPS| + #108Y(00 00 00 00 02 00 00 00 00 03 AE DA 8B 01 80 49 9F 5C 78 AC DA DA + 2D 03 01 1D 80 42 AC 94 00 9E 5C 78 A3 5C 79 38 01 72 90 38 01 72 + 90 E4 AE B1 7B 01 E5 E6 B4 7B 02 B3 E7 B3 E8 B8 7B 02 7B 02 B5 B5 + 7B 02 7B 03 7B 01 33 02 22 5D 7A 7B 03 7B 01 AF B3 7B 02 61 03 19 + 0A AE 2F 02 19 03 DD DE B1 DF B0 E0 6F 07 E2 B3 E3 33 07 1E) + (2. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|WITH-ALL-GROUPS| + (|CLFSWM|::|ROOT| |CLFSWM|::|GROUP|) |COMMON-LISP|::|LABELS| + |COMMON-LISP|::|WHEN| |CLFSWM|::|GROUP-P| |COMMON-LISP|::|DOLIST| + |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|106 116 (DEFMACRO WITH-ALL-WINDOWS (# &BODY BODY) ...)-15| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|WITH-ALL-WINDOWS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|WITH-ALL-WINDOWS| + #110Y(00 00 00 00 02 00 00 00 00 03 AE DA 8B 01 80 4B 9F 5C 78 AC DA DA + 2D 03 01 1D 80 44 AC 94 00 9E 5C 78 A3 5C 79 38 01 72 90 38 01 72 + 90 E4 AE B1 7B 01 E5 E6 B4 7B 02 A4 5D 7A E5 E7 B5 7B 02 E8 B3 E9 + B8 7B 02 7B 02 B5 B5 7B 02 7B 03 7B 03 7B 04 7B 01 AF B3 7B 02 61 + 03 19 0A AE 2F 02 19 03 DD DE B1 DF B0 E0 6F 07 E2 B3 E3 33 07 1E) + (2. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|WITH-ALL-WINDOWS| + (|CLFSWM|::|ROOT| |CLFSWM|::|WINDOW|) |COMMON-LISP|::|LABELS| + |COMMON-LISP|::|WHEN| |XLIB|::|WINDOW-P| |CLFSWM|::|GROUP-P| + |COMMON-LISP|::|DOLIST| |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|120 130 (DEFMACRO WITH-ALL-WINDOWS-GROUPS (# BODY-WINDOW BODY-GROUP) ...)-16| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|WITH-ALL-WINDOWS-GROUPS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|WITH-ALL-WINDOWS-GROUPS| + #116Y(00 00 00 00 02 00 00 00 00 03 AE DA DA 2D 03 01 1D 80 4E 9F 5C 78 + AC DD DD 2D 03 01 1D 80 47 AC 94 00 9E 5C 78 A3 5C 5C 78 A4 5C 5C + 5C 78 38 01 72 90 38 01 72 90 E5 AE B2 7B 01 E6 B4 E7 B5 7B 02 E8 + B5 E9 B5 EA BB 7B 02 7B 02 B7 B7 7B 02 7B 03 7B 03 7B 04 7B 03 7B + 01 AF B4 7B 02 61 03 19 0B AE 2F 02 19 03 DE DF B1 E0 B0 E1 6F 08 + E3 B3 E4 33 07 1E) + (4. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 2. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|WITH-ALL-WINDOWS-GROUPS| + (|CLFSWM|::|ROOT| |CLFSWM|::|CHILD|) |COMMON-LISP|::|LABELS| + |COMMON-LISP|::|TYPECASE| |XLIB|::|WINDOW| |CLFSWM|::|GROUP| + |COMMON-LISP|::|DOLIST| |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|134 138 (DEFUN GROUP-FIND-FREE-NUMBER NIL ...)-17| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GROUP-FIND-FREE-NUMBER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GROUP-FIND-FREE-NUMBER| + #34Y(00 00 00 00 00 00 00 00 06 01 00 2B 01 00 0B 00 00 AC 6D 00 01 6B + 01 9E 34 16 01 68 00 00 2F 02 19 02) + (#Y(|CLFSWM|::|GROUP-FIND-FREE-NUMBER-G47649| + #48Y(00 00 00 00 01 00 00 00 06 02 AD 2F 01 1F 1F AD 6F 02 07 00 01 + 5D 0C 00 01 AD 6F 03 63 1B 08 87 01 00 14 28 65 83 01 AD 8D 94 + 74 00 19 04 19 02) + (|COMMON-LISP|::|NIL| |CLFSWM|::|GROUP-P| |CLFSWM|::|GROUP-NUMBER| + |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|GROUP|) |COMMON-LISP|::|NIL|) + |CLFSWM|::|*ROOT-GROUP*| |TOOLS|::|FIND-FREE-NUMBER|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|142 159 (DEFUN CREATE-GROUP (&KEY NAME # ...) ...)-18| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|CREATE-GROUP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|CREATE-GROUP| + #131Y(00 00 00 00 00 00 00 00 86 1B 07 00 00 00 3D 07 3B 06 03 2E 07 FE + 3B 05 02 CD FD 3B 04 02 CD FC 3B 03 02 CE FB 3B 02 02 CE FA 3D 01 + E4 6B 0B DC E6 DD E6 E7 E8 E9 E8 EA EB 6F 12 ED 6B 14 EF AD F0 81 + 2F 00 F1 F2 F3 F4 6F 12 F5 F6 6E 14 1D 65 1E AD 65 1F 65 20 6F 12 + EA 65 21 6F 12 65 22 6B 23 65 24 65 25 6E 0A 26 65 27 DA B7 DB B8 + DC B9 DD BA DE BB DF BC 65 28 BB 65 29 BC E0 C1 2D 13 2A 19 0A) + (:|NAME| :|NUMBER| :|X| :|Y| :|W| :|H| :|LAYOUT| + |CLFSWM|::|GROUP-FIND-FREE-NUMBER| #1=0.1f0 #2=0.8f0 :|PARENT| + |CLFSWM|::|*ROOT*| 0. :|WIDTH| 200. :|HEIGHT| :|BACKGROUND| "Black" + |CLFSWM|::|GET-COLOR| :|COLORMAP| |CLFSWM|::|*SCREEN*| |XLIB|::|SCREEN| + 9. :|BORDER-WIDTH| 1. :|BORDER| "Red" :|EVENT-MASK| + (:|EXPOSURE| :|BUTTON-PRESS|) |XLIB|::|CREATE-WINDOW| :|DRAWABLE| + :|FOREGROUND| "Green" "Black" :|FONT| |CLFSWM|::|*DEFAULT-FONT*| + :|LINE-STYLE| :|SOLID| |XLIB|::|CREATE-GCONTEXT| |CLFSWM|::|GROUP| + :|WINDOW| :|GC| |CLOS|::|MAKE-INSTANCE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&KEY| |CLFSWM|::|NAME| + (|COMMON-LISP|::|NUMBER| (|CLFSWM|::|GROUP-FIND-FREE-NUMBER|)) + (|CLFSWM|::|X| #1#) (|CLFSWM|::|Y| 0.1f0) (|CLFSWM|::|W| #2#) + (|CLFSWM|::|H| 0.8f0) |CLFSWM|::|LAYOUT|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|162 163 (DEFUN ADD-GROUP (GROUP FATHER) ...)-19| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|ADD-GROUP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|ADD-GROUP| + #22Y(00 00 00 00 02 00 00 00 06 03 AD 6F 00 AF 9E 7A AC B0 30 01 19 05) + (|CLFSWM|::|GROUP-CHILD| + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|GROUP-CHILD|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|GROUP| |CLFSWM|::|FATHER|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|170 177 (DEFUN GET-CURRENT-CHILD NIL ...)-20| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GET-CURRENT-CHILD| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GET-CURRENT-CHILD| + #59Y(00 00 00 00 00 00 00 00 06 01 6B 00 6B 01 8E 04 1D 6B 00 DC AD 8E + 33 12 AC DD 8B 04 1B 6B 00 2F 05 78 DC AD 32 33 16 01 1C 07 0E 00 + 19 02 00 19 01 6B 00 2F 05 5B 19 02 00 19 02) + (|CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|*ROOT-GROUP*| |XLIB|::|WINDOW| + #.(|CLOS|::|FIND-CLASS| '|CLFSWM|::|GROUP|) |CLOS|::|TYPEP-CLASS| + |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Return the current focused child")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|180 184 (DEFUN FIND-CHILD (TO-FIND ROOT) ...)-21| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FIND-CHILD| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FIND-CHILD| + #35Y(02 00 01 00 02 00 00 00 06 03 00 2B 01 7F 03 00 00 47 00 0D AF AF + 6D 01 02 B2 9E 34 16 01 48 19 04 19 04) + (|CLFSWM|::|FIND-CHILD| + #Y(|CLFSWM|::|FIND-CHILD-G47727| + #48Y(00 00 00 00 01 00 00 00 06 02 AD 69 00 01 8E 04 0B AD 2F 02 1F + 18 AD 6F 03 63 1B 0B 02 49 01 87 01 00 14 28 65 83 01 AD 8D 94 + 74 00 19 04 19 02) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |CLFSWM|::|GROUP-P| + |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CHILD|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|TO-FIND| |CLFSWM|::|ROOT|) + "Find to-find in root or in its childs")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|188 192 (DEFUN FIND-FATHER-GROUP (TO-FIND &OPTIONAL #) ...)-22| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FIND-FATHER-GROUP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FIND-FATHER-GROUP| + #41Y(02 00 01 00 01 00 01 00 06 08 00 2B 01 7F 03 00 00 3B 02 03 0E 00 + FA 47 01 0D AF AF 6D 02 02 B2 9E 34 16 01 48 19 04 19 04) + (|CLFSWM|::|*ROOT-GROUP*| |CLFSWM|::|FIND-FATHER-GROUP| + #Y(|CLFSWM|::|FIND-FATHER-GROUP-G47754| + #52Y(00 00 00 00 01 00 00 00 06 02 AD 2F 02 1F 23 69 00 01 AE 6F 03 + 38 03 8C B6 06 AD 6F 03 63 1B 0B 9E 49 01 87 01 00 14 28 61 83 + 01 AD 8D 94 74 00 19 04 19 02) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |CLFSWM|::|GROUP-P| + |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|GROUP|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|TO-FIND| |COMMON-LISP|::|&OPTIONAL| + (|CLFSWM|::|ROOT| |CLFSWM|::|*ROOT-GROUP*|)) + "Return the father group of to-find")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|196 200 (DEFUN FIND-GROUP-WINDOW (WINDOW &OPTIONAL #) ...)-23| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FIND-GROUP-WINDOW| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FIND-GROUP-WINDOW| + #41Y(02 00 01 00 01 00 01 00 06 08 00 2B 01 7F 03 00 00 3B 02 03 0E 00 + FA 47 01 0D AF AF 6D 02 02 B2 9E 34 16 01 48 19 04 19 04) + (|CLFSWM|::|*ROOT-GROUP*| |CLFSWM|::|FIND-GROUP-WINDOW| + #Y(|CLFSWM|::|FIND-GROUP-WINDOW-G47782| + #50Y(00 00 00 00 01 00 00 00 06 02 AD 2F 02 1F 21 69 00 01 AE 6F 03 + 8A 04 06 AD 6F 05 63 1B 0B 9E 49 01 87 01 00 14 28 63 83 01 AD + 8D 94 74 00 19 04 19 02) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |CLFSWM|::|GROUP-P| + |CLFSWM|::|GROUP-WINDOW| |XLIB|::|WINDOW-EQUAL| + |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|GROUP|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW| |COMMON-LISP|::|&OPTIONAL| + (|CLFSWM|::|ROOT| |CLFSWM|::|*ROOT-GROUP*|)) + "Return the group with the window window")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|203 208 (DEFUN FIND-GROUP-BY-NAME (NAME) ...)-24| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FIND-GROUP-BY-NAME| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FIND-GROUP-BY-NAME| + #41Y(02 00 01 00 01 00 00 00 06 02 00 2B 01 7F 02 00 00 47 00 13 06 03 + 00 1F 0B AF AF 6D 01 02 6B 02 9E 34 16 01 48 19 03 19 03) + (|CLFSWM|::|FIND-GROUP-BY-NAME| + #Y(|CLFSWM|::|FIND-GROUP-BY-NAME-G47809| + #52Y(00 00 00 00 01 00 00 00 06 02 AD 2F 02 1F 23 69 00 01 AE 6F 03 + 38 04 8C 3B 06 AD 6F 04 63 1B 0B 9E 49 01 87 01 00 14 28 61 83 + 01 AD 8D 94 74 00 19 04 19 02) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |CLFSWM|::|GROUP-P| + |CLFSWM|::|GROUP-NAME| |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|GROUP|) |COMMON-LISP|::|NIL|) + |CLFSWM|::|*ROOT-GROUP*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|NAME|) "Find a group from its name")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|210 215 (DEFUN FIND-GROUP-BY-NUMBER (NUMBER) ...)-25| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FIND-GROUP-BY-NUMBER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FIND-GROUP-BY-NUMBER| + #43Y(02 00 01 00 01 00 00 00 06 02 00 2B 01 7F 02 00 00 47 00 15 68 03 + 00 32 0A 1F 0B AF AF 6D 01 02 6B 02 9E 34 16 01 48 19 03 19 03) + (|CLFSWM|::|FIND-GROUP-BY-NUMBER| + #Y(|CLFSWM|::|FIND-GROUP-BY-NUMBER-G47838| + #51Y(00 00 00 00 01 00 00 00 06 02 AD 2F 02 1F 22 69 00 01 AE 6F 03 + 90 01 2D 06 AD 6F 04 63 1B 0B 9E 49 01 87 01 00 14 28 62 83 01 + AD 8D 94 74 00 19 04 19 02) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |CLFSWM|::|GROUP-P| + |CLFSWM|::|GROUP-NUMBER| |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|GROUP|) |COMMON-LISP|::|NIL|) + |CLFSWM|::|*ROOT-GROUP*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|NUMBER|) "Find a group from its number")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|220 225 (DEFUN GET-ALL-WINDOWS (&OPTIONAL #) ...)-26| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GET-ALL-WINDOWS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GET-ALL-WINDOWS| + #37Y(00 00 00 00 00 00 01 00 06 07 3B 01 03 0E 00 F9 00 2B 01 00 0B 00 + 00 AC 6D 01 01 AF 9E 34 16 01 06 00 00 19 03) + (|CLFSWM|::|*ROOT-GROUP*| + #Y(|CLFSWM|::|GET-ALL-WINDOWS-G47867| + #51Y(00 00 00 00 01 00 00 00 06 02 DB AE 8F 33 08 AD 07 00 01 5D 0C + 00 01 AD 2F 02 1F 15 AD 6F 03 63 1B 08 87 01 00 14 28 62 83 01 + AD 8D 94 74 00 19 04 19 02) + (|COMMON-LISP|::|NIL| |XLIB|::|WINDOW| |CLFSWM|::|GROUP-P| + |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&OPTIONAL| (|CLFSWM|::|ROOT| |CLFSWM|::|*ROOT-GROUP*|)) + "Return all windows in root and in its childs")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|228 233 (DEFUN GET-HIDDEN-WINDOWS NIL ...)-27| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GET-HIDDEN-WINDOWS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GET-HIDDEN-WINDOWS| + #31Y(00 00 00 00 00 00 00 00 06 01 2E 00 14 99 01 6B 02 6F 03 71 A0 38 + 05 72 51 AC AE 30 04 19 03) + (|CLFSWM|::|GET-ALL-WINDOWS| |CLFSWM|::|WINDOW-HIDDEN-P| + |CLFSWM|::|*ROOT*| |XLIB|::|QUERY-TREE| + |COMMON-LISP|::|SET-DIFFERENCE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Return all hiddens windows")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|238 266 (DEFUN DISPLAY-GROUP-INFO (GROUP) ...)-28| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|DISPLAY-GROUP-INFO| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DISPLAY-GROUP-INFO| + #430Y(05 00 02 00 01 00 00 00 06 02 6B 00 6F 01 6B 00 6F 02 73 02 35 AE + 6B 03 8F 04 06 AE DE 72 3E 2F 05 AE E0 72 3E E1 30 08 42 04 53 81 + 45 B4 6B 03 8F 04 07 B4 6B 09 8E 04 80 9F D0 14 6F 0C 93 00 04 B2 + AD 30 0D 16 01 B4 DE 72 3E B5 E0 72 3E E8 B5 38 02 72 76 B9 E9 72 + 3E BA EA 8E 3E 80 7E D7 14 ED AF 38 02 31 8B AD AF 31 86 AC AF 31 + 86 EE AF 38 02 31 8B 16 02 AC 81 77 00 2D 05 15 B2 B5 6B 03 8F 04 + 80 BA B5 DE 72 3E B6 E0 72 3E E8 AF B7 82 02 35 03 14 38 02 72 76 + 2E 16 14 72 48 AC AE 31 86 F1 AE 38 02 31 8B 16 01 AC 81 77 00 2D + 05 15 0E 18 1D 80 89 B5 DE 72 3E B6 E0 72 3E E8 AF B7 82 02 35 03 + 14 F3 38 01 72 76 53 80 66 AE F4 30 1B 6B 18 63 1B 80 4C CF 1B FF + 5E 38 02 72 76 BB EA 72 3E EB AE 38 02 31 8B AC AE 31 86 16 01 AC + 32 77 16 01 1B FF 67 B0 F7 AE 6F 1E 2D 03 1B 1B 20 87 01 00 F6 AD + 8E 33 6E AC 65 1F 8B 20 12 B0 65 21 AE 6F 22 AF 6F 23 92 00 02 03 + 24 F8 2D 04 1B 83 01 AD 8D 94 5A 16 02 AE 65 25 30 1B AE 32 77 3F + 54 67 00 00 00 2F 26 55 F8 2D 05 15 B5 65 27 72 3E 63 1B 22 87 01 + 00 F6 AD 8F 33 18 B7 DE 72 3E B8 E0 72 3E E8 B1 B9 82 02 35 05 14 + B0 6F 1E 6F 28 2D 05 29 83 01 AD 8D 94 5A 00 16 03 54 65 2A 67 00 + 00 03 65 2B 72 2F 67 00 00 02 03 2C 5F 14 AD 03 2C 60 65 2D AD 03 + 2E 60 16 01 05 00 00 00 1D 0F 67 00 00 03 67 00 00 01 67 00 00 00 + 2D 03 2F 67 00 00 02 2F 30 55 19 07) + (|CLFSWM|::|*DEFAULT-FONT*| |XLIB|::|MAX-CHAR-ASCENT| + |XLIB|::|MAX-CHAR-DESCENT| |CLFSWM|::|*CURRENT-ROOT*| + |CLFSWM|::|WINDOW| |XLIB|::|CLEAR-AREA| |CLFSWM|::|GC| (2.) + |XLIB|::|COPY-GCONTEXT-LOCAL-STATE| |CLFSWM|::|*CURRENT-CHILD*| "Red" + "Green" |CLFSWM|::|GET-COLOR| |XLIB|::|SET-GCONTEXT-FOREGROUND| 5. + |COMMON-LISP|::|NUMBER| |CLFSWM|::|NAME| " - " "" "Group: " + " " + |XLIB|::|DRAW-IMAGE-GLYPHS| |CLFSWM|::|GET-HIDDEN-WINDOWS| + " hidden windows " |CLFSWM|::|*CHILD-SELECTION*| + |COMMON-LISP|::|CHARACTER| + #Y(|CLFSWM|::|DISPLAY-GROUP-INFO-1| + #19Y(00 00 00 00 01 00 00 00 01 17 DA AF 38 02 31 8B 9E 19 03) + ("Selection: ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|FORMAT| |XLIB|::|WINDOW| + #Y(|CLFSWM|::|DISPLAY-GROUP-INFO-2| + #21Y(00 00 00 00 02 00 00 00 01 18 AE B0 31 86 DA B0 31 8A 9E 19 04) + (#\ ) (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |XLIB|::|WM-NAME| #.(|CLOS|::|FIND-CLASS| '|CLFSWM|::|GROUP|) + |CLOS|::|TYPEP-CLASS| + #Y(|CLFSWM|::|DISPLAY-GROUP-INFO-3| + #37Y(00 00 00 00 03 00 00 00 01 19 DA B1 38 02 31 8B AF B1 31 86 DB + B1 31 8A AE B1 31 86 DC B1 38 02 31 8B 9E 19 05) + ("group:" #\[ "] ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |CLFSWM|::|GROUP-NUMBER| |CLFSWM|::|GROUP-NAME| "" + #Y(|CLFSWM|::|DISPLAY-GROUP-INFO-4| + #19Y(00 00 00 00 01 00 00 00 01 17 DA AF 38 02 31 8B 9E 19 03) + (" ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|CLOSE| |CLFSWM|::|CHILD| |TOOLS|::|ENSURE-PRINTABLE| + |XLIB|::|DRAW-GLYPHS| |XLIB|::|GCONTEXT| 6. 2. 0. 26. + |XLIB|::|RESTORE-GCONTEXT-TEMP-STATE| + |XLIB|::|DEALLOCATE-GCONTEXT-STATE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|GROUP|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|277 282 (DEFUN GET-FATHER-LAYOUT (CHILD FATHER) ...)-29| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GET-FATHER-LAYOUT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GET-FATHER-LAYOUT| + #37Y(00 00 00 00 02 00 00 00 06 03 AD 88 00 0B 2E 03 19 03 14 B0 B0 36 + 02 19 04 AD 6F 01 92 00 73 AF AF 30 02 19 04) + (|CLFSWM|::|GROUP-P| |CLFSWM|::|GROUP-LAYOUT| |CLFSWM|::|NO-LAYOUT| + |CLFSWM|::|GET-FULLSCREEN-SIZE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|285 285 (DEFGENERIC ADAPT-CHILD-TO-FATHER (CHILD FATHER))-30| + #112Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 6B 03 99 + 04 DA DF AF E0 E1 E2 E3 E4 01 03 B8 6F 0B 1B 24 AF 38 01 80 9E 03 14 + AD 31 AD 16 02 1B 14 94 00 94 00 9E 5C 5C 78 76 00 7B 02 A1 21 63 9D + FC FB 16 02 83 00 AC 8D 94 66 16 01 9E 16 01 F8 E6 6B 0D E8 BA E9 DA + 6E 03 10 EB 63 6E 03 12 ED 63 EE 63 7B 08 33 02 22 9B 09 02) + (|CLFSWM|::|ADAPT-CHILD-TO-FATHER| |SYSTEM|::|TRACED-DEFINITION| + |SYSTEM|::|UNTRACE1| |CLOS|::|| + |CLOS|::|ENSURE-GENERIC-FUNCTION| :|GENERIC-FUNCTION-CLASS| :|LAMBDA-LIST| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|ARGUMENT-PRECEDENCE-ORDER| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) |CLOS|::|METHODS| + |CLOS|::|CLASS-DEFAULT-INITARGS| :|METHOD-CLASS| + |CLOS|::|| :|METHOD-COMBINATION| :|NAME| + |CLOS|::|MAKE-GENERIC-FUNCTION-PROTOTYPE| |CLOS|::|STANDARD| + |CLOS|::|FIND-METHOD-COMBINATION| :|DOCUMENTATION| :|DECLARATIONS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|287 295 (DEFMETHOD ADAPT-CHILD-TO-FATHER (# FATHER) ...)-31| + #48Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 E4 38 02 72 2A 64 38 02 72 2A 7B 02 7B 08 2D 03 0B 19 + 01) + (|CLFSWM|::|ADAPT-CHILD-TO-FATHER| |SYSTEM|::|TRACED-DEFINITION| + |SYSTEM|::|UNTRACE1| + #Y(#:|287 295 (DEFMETHOD ADAPT-CHILD-TO-FATHER (# FATHER) ...)-31-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|287 295 (DEFMETHOD ADAPT-CHILD-TO-FATHER (# FATHER) ...)-31-1-1| + #68Y(02 00 01 00 02 00 00 00 00 03 00 2B 02 7F 03 00 00 7F 02 00 01 + 9D 2B 01 00 0B 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 57 03 + B0 36 00 16 06 1B 10 58 67 00 00 01 76 00 AD 36 01 18 02 01 19 + 02 00 4D 19 05) + (#(|COMMON-LISP|::|NIL|) + #Y(#:|287 295 (DEFMETHOD ADAPT-CHILD-TO-FATHER (# FATHER) ...)-31-1-1-1| + #18Y(00 00 00 00 00 00 00 00 00 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(#:|287 295 (DEFMETHOD ADAPT-CHILD-TO-FATHER (# FATHER) ...)-31-1-1-1-1| + #17Y(00 00 00 00 01 00 00 00 00 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|))) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + #Y(#:|287 295 (DEFMETHOD ADAPT-CHILD-TO-FATHER (# FATHER) ...)-31-1-1-2| + #47Y(00 00 00 00 00 00 00 00 00 01 69 01 01 69 01 02 30 01 42 05 + 69 01 01 B1 30 02 69 01 01 B0 30 03 69 01 01 AF 30 04 69 01 + 01 AE 30 05 15 19 05) + (|COMMON-LISP|::|NIL| |CLFSWM|::|GET-FATHER-LAYOUT| + |XLIB|::|SET-DRAWABLE-X| |XLIB|::|SET-DRAWABLE-Y| + |XLIB|::|SET-DRAWABLE-WIDTH| |XLIB|::|SET-DRAWABLE-HEIGHT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| + |XLIB|::|WINDOW-ERROR| |XLIB|::|DRAWABLE-ERROR|) + 39.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|WINDOW| |CLFSWM|::|FATHER|) + |CLOS|::|SIGNATURE| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |XLIB|::|WINDOW| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|297 307 (DEFMETHOD ADAPT-CHILD-TO-FATHER (# FATHER) ...)-32| + #48Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 E4 38 02 72 2A 64 38 02 72 2A 7B 02 7B 08 2D 03 0B 19 + 01) + (|CLFSWM|::|ADAPT-CHILD-TO-FATHER| |SYSTEM|::|TRACED-DEFINITION| + |SYSTEM|::|UNTRACE1| + #Y(#:|297 307 (DEFMETHOD ADAPT-CHILD-TO-FATHER (# FATHER) ...)-32-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|297 307 (DEFMETHOD ADAPT-CHILD-TO-FATHER (# FATHER) ...)-32-1-1| + #68Y(02 00 01 00 02 00 00 00 00 03 00 2B 02 7F 03 00 00 7F 02 00 01 + 9D 2B 01 00 0B 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 57 03 + B0 36 00 16 06 1B 10 58 67 00 00 01 76 00 AD 36 01 18 02 01 19 + 02 00 4D 19 05) + (#(|COMMON-LISP|::|NIL|) + #Y(#:|297 307 (DEFMETHOD ADAPT-CHILD-TO-FATHER (# FATHER) ...)-32-1-1-1| + #18Y(00 00 00 00 00 00 00 00 00 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(#:|297 307 (DEFMETHOD ADAPT-CHILD-TO-FATHER (# FATHER) ...)-32-1-1-1-1| + #17Y(00 00 00 00 01 00 00 00 00 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|))) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + #Y(#:|297 307 (DEFMETHOD ADAPT-CHILD-TO-FATHER (# FATHER) ...)-32-1-1-2| + #86Y(00 00 00 00 00 00 00 00 00 01 69 01 01 69 01 02 30 01 42 05 + 69 01 01 AC DC B3 32 3F AC DD B2 32 3F AC DE B1 32 3F AC DF + B0 32 3F AC E0 72 3E AD DC 72 3E 30 07 AC E0 72 3E AD DD 72 + 3E 30 08 AC E0 72 3E AD DE 72 3E 30 09 AC E0 72 3E AD DF 72 + 3E 30 0A 9E 19 07) + (|COMMON-LISP|::|NIL| |CLFSWM|::|GET-FATHER-LAYOUT| + |CLFSWM|::|RX| |CLFSWM|::|RY| |CLFSWM|::|RW| |CLFSWM|::|RH| + |CLFSWM|::|WINDOW| |XLIB|::|SET-DRAWABLE-X| + |XLIB|::|SET-DRAWABLE-Y| |XLIB|::|SET-DRAWABLE-WIDTH| + |XLIB|::|SET-DRAWABLE-HEIGHT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| + |XLIB|::|WINDOW-ERROR| |XLIB|::|DRAWABLE-ERROR|) + 39.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|GROUP| |CLFSWM|::|FATHER|) + |CLOS|::|SIGNATURE| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLFSWM|::|GROUP| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|311 311 (DEFGENERIC SHOW-CHILD (CHILD FATHER))-33| + #112Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 6B 03 99 + 04 DA DF AF E0 E1 E2 E3 E4 01 03 B8 6F 0B 1B 24 AF 38 01 80 9E 03 14 + AD 31 AD 16 02 1B 14 94 00 94 00 9E 5C 5C 78 76 00 7B 02 A1 21 63 9D + FC FB 16 02 83 00 AC 8D 94 66 16 01 9E 16 01 F8 E6 6B 0D E8 BA E9 DA + 6E 03 10 EB 63 6E 03 12 ED 63 EE 63 7B 08 33 02 22 9B 09 02) + (|CLFSWM|::|SHOW-CHILD| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + |CLOS|::|| |CLOS|::|ENSURE-GENERIC-FUNCTION| + :|GENERIC-FUNCTION-CLASS| :|LAMBDA-LIST| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|ARGUMENT-PRECEDENCE-ORDER| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) |CLOS|::|METHODS| + |CLOS|::|CLASS-DEFAULT-INITARGS| :|METHOD-CLASS| + |CLOS|::|| :|METHOD-COMBINATION| :|NAME| + |CLOS|::|MAKE-GENERIC-FUNCTION-PROTOTYPE| |CLOS|::|STANDARD| + |CLOS|::|FIND-METHOD-COMBINATION| :|DOCUMENTATION| :|DECLARATIONS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|312 312 (DEFGENERIC HIDE-CHILD (CHILD))-34| + #112Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 6B 03 99 + 04 DA DF AF E0 E1 E2 E3 E4 01 03 B8 6F 0B 1B 24 AF 38 01 80 9E 03 14 + AD 31 AD 16 02 1B 14 94 00 94 00 9E 5C 5C 78 76 00 7B 02 A1 21 63 9D + FC FB 16 02 83 00 AC 8D 94 66 16 01 9E 16 01 F8 E6 6B 0D E8 BA E9 DA + 6E 03 10 EB 63 6E 03 12 ED 63 EE 63 7B 08 33 02 22 9B 09 02) + (|CLFSWM|::|HIDE-CHILD| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + |CLOS|::|| |CLOS|::|ENSURE-GENERIC-FUNCTION| + :|GENERIC-FUNCTION-CLASS| :|LAMBDA-LIST| (|CLFSWM|::|CHILD|) + :|ARGUMENT-PRECEDENCE-ORDER| (|CLFSWM|::|CHILD|) |CLOS|::|METHODS| + |CLOS|::|CLASS-DEFAULT-INITARGS| :|METHOD-CLASS| + |CLOS|::|| :|METHOD-COMBINATION| :|NAME| + |CLOS|::|MAKE-GENERIC-FUNCTION-PROTOTYPE| |CLOS|::|STANDARD| + |CLOS|::|FIND-METHOD-COMBINATION| :|DOCUMENTATION| :|DECLARATIONS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|314 323 (DEFMETHOD SHOW-CHILD (# FATHER) ...)-35| + #48Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 E4 38 02 72 2A 64 38 02 72 2A 7B 02 7B 08 2D 03 0B 19 + 01) + (|CLFSWM|::|SHOW-CHILD| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + #Y(#:|314 323 (DEFMETHOD SHOW-CHILD (# FATHER) ...)-35-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|314 323 (DEFMETHOD SHOW-CHILD (# FATHER) ...)-35-1-1| + #68Y(02 00 01 00 02 00 00 00 00 03 00 2B 02 7F 03 00 00 7F 02 00 01 + 9D 2B 01 00 0B 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 57 03 + B0 36 00 16 06 1B 10 58 67 00 00 01 76 00 AD 36 01 18 02 01 19 + 02 00 4D 19 05) + (#(|COMMON-LISP|::|NIL|) + #Y(#:|314 323 (DEFMETHOD SHOW-CHILD (# FATHER) ...)-35-1-1-1| + #18Y(00 00 00 00 00 00 00 00 00 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(#:|314 323 (DEFMETHOD SHOW-CHILD (# FATHER) ...)-35-1-1-1-1| + #17Y(00 00 00 00 01 00 00 00 00 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|))) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + #Y(#:|314 323 (DEFMETHOD SHOW-CHILD (# FATHER) ...)-35-1-1-2| + #68Y(00 00 00 00 00 00 00 00 00 01 69 01 01 69 01 01 69 01 02 70 + 01 0E 02 1C 0A 69 01 01 6B 03 32 04 59 1F 1F AD DE 72 3E DF + 6F 06 30 07 AD DE 72 3E 2F 08 93 00 06 AD DE 72 3E 2F 09 69 + 01 01 2F 0A 19 03 19 03) + (|COMMON-LISP|::|NIL| |CLFSWM|::|ADAPT-CHILD-TO-FATHER| + |CLFSWM|::|*SHOW-ROOT-GROUP-P*| |CLFSWM|::|*CURRENT-ROOT*| + |CLFSWM|::|WINDOW| "Black" |CLFSWM|::|GET-COLOR| + |XLIB|::|SET-WINDOW-BACKGROUND| |XLIB|::|MAP-WINDOW| + |CLFSWM|::|RAISE-WINDOW| |CLFSWM|::|DISPLAY-GROUP-INFO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| + |XLIB|::|WINDOW-ERROR| |XLIB|::|DRAWABLE-ERROR|) + 39.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|GROUP| |CLFSWM|::|FATHER|) + |CLOS|::|SIGNATURE| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLFSWM|::|GROUP| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|326 329 (DEFMETHOD HIDE-CHILD (#) ...)-36| + #43Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 E4 38 02 72 2A 7B 01 7B 08 2D 03 0B 19 01) + (|CLFSWM|::|HIDE-CHILD| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + #Y(#:|326 329 (DEFMETHOD HIDE-CHILD (#) ...)-36-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|326 329 (DEFMETHOD HIDE-CHILD (#) ...)-36-1-1| + #64Y(02 00 01 00 01 00 00 00 00 02 00 2B 01 7F 02 00 00 9D 2B 01 00 + 0B 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 57 03 B0 36 00 16 + 06 1B 10 58 67 00 00 01 76 00 AD 36 01 18 02 01 19 02 00 4D 19 + 04) + (#(|COMMON-LISP|::|NIL|) + #Y(#:|326 329 (DEFMETHOD HIDE-CHILD (#) ...)-36-1-1-1| + #18Y(00 00 00 00 00 00 00 00 00 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(#:|326 329 (DEFMETHOD HIDE-CHILD (#) ...)-36-1-1-1-1| + #17Y(00 00 00 00 01 00 00 00 00 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|))) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + #Y(#:|326 329 (DEFMETHOD HIDE-CHILD (#) ...)-36-1-1-2| + #21Y(00 00 00 00 00 00 00 00 00 01 69 01 01 AC DB 72 3E 2F 02 19 + 02) + (|COMMON-LISP|::|NIL| |CLFSWM|::|WINDOW| |XLIB|::|UNMAP-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| + |XLIB|::|WINDOW-ERROR| |XLIB|::|DRAWABLE-ERROR|) + 35.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|GROUP|) |CLOS|::|SIGNATURE| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLFSWM|::|GROUP| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|332 339 (DEFMETHOD SHOW-CHILD (# FATHER) ...)-37| + #48Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 E4 38 02 72 2A 64 38 02 72 2A 7B 02 7B 08 2D 03 0B 19 + 01) + (|CLFSWM|::|SHOW-CHILD| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + #Y(#:|332 339 (DEFMETHOD SHOW-CHILD (# FATHER) ...)-37-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|332 339 (DEFMETHOD SHOW-CHILD (# FATHER) ...)-37-1-1| + #68Y(02 00 01 00 02 00 00 00 00 03 00 2B 02 7F 03 00 00 7F 02 00 01 + 9D 2B 01 00 0B 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 57 03 + B0 36 00 16 06 1B 10 58 67 00 00 01 76 00 AD 36 01 18 02 01 19 + 02 00 4D 19 05) + (#(|COMMON-LISP|::|NIL|) + #Y(#:|332 339 (DEFMETHOD SHOW-CHILD (# FATHER) ...)-37-1-1-1| + #18Y(00 00 00 00 00 00 00 00 00 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(#:|332 339 (DEFMETHOD SHOW-CHILD (# FATHER) ...)-37-1-1-1-1| + #17Y(00 00 00 00 01 00 00 00 00 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|))) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + #Y(#:|332 339 (DEFMETHOD SHOW-CHILD (# FATHER) ...)-37-1-1-2| + #45Y(00 00 00 00 00 00 00 00 00 01 63 69 01 01 6F 01 25 02 09 69 + 01 01 69 01 02 30 03 F8 69 01 01 2F 04 9D 1F 07 69 01 01 2F + 05 19 02 19 02) + (|COMMON-LISP|::|NIL| |CLFSWM|::|WINDOW-TYPE| :|NORMAL| + |CLFSWM|::|ADAPT-CHILD-TO-FATHER| |XLIB|::|MAP-WINDOW| + |CLFSWM|::|RAISE-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| + |XLIB|::|WINDOW-ERROR| |XLIB|::|DRAWABLE-ERROR|) + 39.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|WINDOW| |CLFSWM|::|FATHER|) + |CLOS|::|SIGNATURE| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |XLIB|::|WINDOW| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|341 342 (DEFMETHOD HIDE-CHILD (#) ...)-38| + #43Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 E4 38 02 72 2A 7B 01 7B 08 2D 03 0B 19 01) + (|CLFSWM|::|HIDE-CHILD| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + #Y(#:|341 342 (DEFMETHOD HIDE-CHILD (#) ...)-38-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|341 342 (DEFMETHOD HIDE-CHILD (#) ...)-38-1-1| + #15Y(00 00 00 00 01 00 00 00 00 02 AD 2F 00 19 02) + (|CLFSWM|::|HIDE-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|WINDOW|) |CLOS|::|SIGNATURE| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |XLIB|::|WINDOW| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|349 349 (DEFGENERIC SELECT-CHILD (CHILD SELECTED))-39| + #112Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 6B 03 99 + 04 DA DF AF E0 E1 E2 E3 E4 01 03 B8 6F 0B 1B 24 AF 38 01 80 9E 03 14 + AD 31 AD 16 02 1B 14 94 00 94 00 9E 5C 5C 78 76 00 7B 02 A1 21 63 9D + FC FB 16 02 83 00 AC 8D 94 66 16 01 9E 16 01 F8 E6 6B 0D E8 BA E9 DA + 6E 03 10 EB 63 6E 03 12 ED 63 EE 63 7B 08 33 02 22 9B 09 02) + (|CLFSWM|::|SELECT-CHILD| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + |CLOS|::|| |CLOS|::|ENSURE-GENERIC-FUNCTION| + :|GENERIC-FUNCTION-CLASS| :|LAMBDA-LIST| + (|CLFSWM|::|CHILD| |CLFSWM|::|SELECTED|) :|ARGUMENT-PRECEDENCE-ORDER| + (|CLFSWM|::|CHILD| |CLFSWM|::|SELECTED|) |CLOS|::|METHODS| + |CLOS|::|CLASS-DEFAULT-INITARGS| :|METHOD-CLASS| + |CLOS|::|| :|METHOD-COMBINATION| :|NAME| + |CLOS|::|MAKE-GENERIC-FUNCTION-PROTOTYPE| |CLOS|::|STANDARD| + |CLOS|::|FIND-METHOD-COMBINATION| :|DOCUMENTATION| :|DECLARATIONS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|351 357 (DEFMETHOD SELECT-CHILD (# SELECTED) ...)-40| + #48Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 E4 38 02 72 2A 64 38 02 72 2A 7B 02 7B 08 2D 03 0B 19 + 01) + (|CLFSWM|::|SELECT-CHILD| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + #Y(#:|351 357 (DEFMETHOD SELECT-CHILD (# SELECTED) ...)-40-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|351 357 (DEFMETHOD SELECT-CHILD (# SELECTED) ...)-40-1-1| + #68Y(02 00 01 00 02 00 00 00 00 03 00 2B 02 7F 03 00 00 7F 02 00 01 + 9D 2B 01 00 0B 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 57 03 + B0 36 00 16 06 1B 10 58 67 00 00 01 76 00 AD 36 01 18 02 01 19 + 02 00 4D 19 05) + (#(|COMMON-LISP|::|NIL|) + #Y(#:|351 357 (DEFMETHOD SELECT-CHILD (# SELECTED) ...)-40-1-1-1| + #18Y(00 00 00 00 00 00 00 00 00 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(#:|351 357 (DEFMETHOD SELECT-CHILD (# SELECTED) ...)-40-1-1-1-1| + #17Y(00 00 00 00 01 00 00 00 00 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|))) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + #Y(#:|351 357 (DEFMETHOD SELECT-CHILD (# SELECTED) ...)-40-1-1-2| + #67Y(00 00 00 00 00 00 00 00 00 01 69 01 01 2F 01 1F 30 69 01 01 + 2F 02 1F 29 69 01 01 6F 02 69 01 02 24 03 12 07 01 02 1D 11 + 07 01 02 1C 10 00 14 6F 07 30 08 19 01 0E 04 1B 75 0E 05 1B + 71 0E 06 1B 6D 19 01) + (|COMMON-LISP|::|NIL| |CLFSWM|::|GROUP-P| + |CLFSWM|::|GROUP-WINDOW| :|MAYBE| + |CLFSWM|::|*COLOR-MAYBE-SELECTED*| + |CLFSWM|::|*COLOR-UNSELECTED*| |CLFSWM|::|*COLOR-SELECTED*| + |CLFSWM|::|GET-COLOR| |XLIB|::|SET-WINDOW-BORDER|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| + |XLIB|::|WINDOW-ERROR| |XLIB|::|DRAWABLE-ERROR|) + 39.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|GROUP| |CLFSWM|::|SELECTED|) + |CLOS|::|SIGNATURE| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLFSWM|::|GROUP| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|359 364 (DEFMETHOD SELECT-CHILD (# SELECTED) ...)-41| + #48Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 E4 38 02 72 2A 64 38 02 72 2A 7B 02 7B 08 2D 03 0B 19 + 01) + (|CLFSWM|::|SELECT-CHILD| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + #Y(#:|359 364 (DEFMETHOD SELECT-CHILD (# SELECTED) ...)-41-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|359 364 (DEFMETHOD SELECT-CHILD (# SELECTED) ...)-41-1-1| + #68Y(02 00 01 00 02 00 00 00 00 03 00 2B 02 7F 03 00 00 7F 02 00 01 + 9D 2B 01 00 0B 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 57 03 + B0 36 00 16 06 1B 10 58 67 00 00 01 76 00 AD 36 01 18 02 01 19 + 02 00 4D 19 05) + (#(|COMMON-LISP|::|NIL|) + #Y(#:|359 364 (DEFMETHOD SELECT-CHILD (# SELECTED) ...)-41-1-1-1| + #18Y(00 00 00 00 00 00 00 00 00 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(#:|359 364 (DEFMETHOD SELECT-CHILD (# SELECTED) ...)-41-1-1-1-1| + #17Y(00 00 00 00 01 00 00 00 00 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|))) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + #Y(#:|359 364 (DEFMETHOD SELECT-CHILD (# SELECTED) ...)-41-1-1-2| + #49Y(00 00 00 00 00 00 00 00 00 01 69 01 01 69 01 02 24 01 12 07 + 01 02 1D 11 07 01 02 1C 10 00 14 6F 05 30 06 19 01 0E 02 1B + 75 0E 03 1B 71 0E 04 1B 6D) + (|COMMON-LISP|::|NIL| :|MAYBE| + |CLFSWM|::|*COLOR-MAYBE-SELECTED*| + |CLFSWM|::|*COLOR-UNSELECTED*| |CLFSWM|::|*COLOR-SELECTED*| + |CLFSWM|::|GET-COLOR| |XLIB|::|SET-WINDOW-BORDER|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| + |XLIB|::|WINDOW-ERROR| |XLIB|::|DRAWABLE-ERROR|) + 39.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|WINDOW| |CLFSWM|::|SELECTED|) + |CLOS|::|SIGNATURE| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |XLIB|::|WINDOW| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|366 367 (DEFUN SELECT-CURRENT-GROUP (SELECTED) ...)-42| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SELECT-CURRENT-GROUP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SELECT-CURRENT-GROUP| + #17Y(00 00 00 00 01 00 00 00 06 02 6B 00 AE 30 01 19 02) + (|CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|SELECT-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|SELECTED|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|371 377 (DEFUN SET-FOCUS-TO-CURRENT-CHILD NIL ...)-43| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SET-FOCUS-TO-CURRENT-CHILD| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SET-FOCUS-TO-CURRENT-CHILD| + #55Y(00 00 00 00 00 00 00 00 06 01 2E 00 6B 01 89 02 14 6B 01 2F 03 78 + DE AD 32 33 16 01 1D 07 6B 01 2F 03 78 2F 05 6B 01 DE AD 32 33 16 + 01 1F 06 6B 01 2F 05 19 01 19 01) + (|CLFSWM|::|NO-FOCUS| |CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|GROUP-P| + |CLFSWM|::|GROUP-CHILD| |XLIB|::|WINDOW| |CLFSWM|::|FOCUS-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|383 394 (DEFUN SHOW-ALL-CHILDS NIL ...)-44| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SHOW-ALL-CHILDS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SHOW-ALL-CHILDS| + #20Y(00 00 00 00 00 00 00 00 06 01 6B 00 63 64 C6 34 2E 02 19 01) + (|CLFSWM|::|*CURRENT-ROOT*| + #Y(|CLFSWM|::|SHOW-ALL-CHILDS-REC| + #74Y(00 00 00 00 03 00 00 00 06 04 AF AF 30 00 AF B0 6B 01 8E 04 18 + 93 02 01 C7 14 30 03 AF 2F 04 1F 27 AF 2F 05 78 B0 6F 05 72 49 + 63 1B 14 02 1B 69 87 01 00 14 B3 93 06 04 AE B1 32 04 14 28 4B + 83 01 AD 8D 94 6B 00 19 07 19 04) + (|CLFSWM|::|SHOW-CHILD| |CLFSWM|::|*CURRENT-CHILD*| :|MAYBE| + |CLFSWM|::|SELECT-CHILD| |CLFSWM|::|GROUP-P| + |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|ROOT| |CLFSWM|::|FATHER| |CLFSWM|::|FIRST-P|) + |COMMON-LISP|::|NIL|) + |CLFSWM|::|SET-FOCUS-TO-CURRENT-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Show all childs from *current-root*")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|399 403 (DEFUN HIDE-ALL-CHILDS (ROOT) ...)-45| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HIDE-ALL-CHILDS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HIDE-ALL-CHILDS| + #41Y(00 00 00 00 01 00 00 00 06 02 AD 2F 00 AD 2F 01 1F 15 AD 6F 02 63 + 1B 08 87 01 00 14 28 6C 83 01 AD 8D 94 74 00 19 04 19 02) + (|CLFSWM|::|HIDE-CHILD| |CLFSWM|::|GROUP-P| |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|ROOT|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|408 422 (DEFUN SELECT-NEXT/PREVIOUS-BROTHER (FUN-ROTATE) ...)-46| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SELECT-NEXT/PREVIOUS-BROTHER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SELECT-NEXT/PREVIOUS-BROTHER| + #76Y(00 00 00 00 01 00 00 00 06 02 6B 00 6B 01 8F 04 07 6B 00 6B 02 32 + 04 59 14 92 00 2A 63 2F 04 6B 01 6F 05 AC 89 06 12 AC E1 B1 AF E1 + 72 3E 76 01 32 3F AC E1 32 3E 5B 0F 01 16 01 93 00 04 0E 01 0F 00 + 2E 08 19 03 6B 00 2F 03 1B 53) + (|CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|*CURRENT-CHILD*| + |CLFSWM|::|*ROOT-GROUP*| |CLFSWM|::|HIDE-ALL-CHILDS| + |CLFSWM|::|SELECT-CURRENT-GROUP| |CLFSWM|::|FIND-FATHER-GROUP| + |CLFSWM|::|GROUP-P| |CLFSWM|::|CHILD| |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|FUN-ROTATE|) "Select the next/previous brother group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|425 427 (DEFUN SELECT-NEXT-BROTHER NIL ...)-47| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SELECT-NEXT-BROTHER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SELECT-NEXT-BROTHER| + #16Y(00 00 00 00 00 00 00 00 06 01 99 00 2F 01 19 01) + (|TOOLS|::|ANTI-ROTATE-LIST| |CLFSWM|::|SELECT-NEXT/PREVIOUS-BROTHER|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Select the next brother group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|429 431 (DEFUN SELECT-PREVIOUS-BROTHER NIL ...)-48| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SELECT-PREVIOUS-BROTHER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SELECT-PREVIOUS-BROTHER| + #16Y(00 00 00 00 00 00 00 00 06 01 99 00 2F 01 19 01) + (|TOOLS|::|ROTATE-LIST| |CLFSWM|::|SELECT-NEXT/PREVIOUS-BROTHER|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Select the previous brother group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|434 440 (DEFUN SELECT-NEXT-LEVEL NIL ...)-49| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SELECT-NEXT-LEVEL| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SELECT-NEXT-LEVEL| + #38Y(00 00 00 00 00 00 00 00 06 01 63 2F 00 6B 01 89 02 0A 6B 01 2F 03 + 78 92 00 06 16 01 2E 04 19 01 0F 01 16 01 1B 76) + (|CLFSWM|::|SELECT-CURRENT-GROUP| |CLFSWM|::|*CURRENT-CHILD*| + |CLFSWM|::|GROUP-P| |CLFSWM|::|GROUP-CHILD| + |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Select the next level in group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|442 448 (DEFUN SELECT-PREVIOUS-LEVEL NIL ...)-50| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SELECT-PREVIOUS-LEVEL| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SELECT-PREVIOUS-LEVEL| + #38Y(00 00 00 00 00 00 00 00 06 01 6B 00 6B 01 8E 04 12 63 2F 02 6B 00 + 6F 03 93 00 02 0F 00 16 01 2E 04 19 01 00 19 01) + (|CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|*CURRENT-ROOT*| + |CLFSWM|::|SELECT-CURRENT-GROUP| |CLFSWM|::|FIND-FATHER-GROUP| + |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Select the previous level in group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|451 456 (DEFUN SELECT-NEXT/PREVIOUS-CHILD (FUN-ROTATE) ...)-51| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SELECT-NEXT/PREVIOUS-CHILD| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SELECT-NEXT/PREVIOUS-CHILD| + #37Y(00 00 00 00 01 00 00 00 06 02 6B 00 2F 01 1F 13 6B 00 AC DC B0 AF + DC 72 3E 76 01 32 3F 16 01 2E 03 19 02 19 02) + (|CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|GROUP-P| |CLFSWM|::|CHILD| + |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|FUN-ROTATE|) "Select the next/previous child")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|459 461 (DEFUN SELECT-NEXT-CHILD NIL ...)-52| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SELECT-NEXT-CHILD| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SELECT-NEXT-CHILD| + #16Y(00 00 00 00 00 00 00 00 06 01 99 00 2F 01 19 01) + (|TOOLS|::|ANTI-ROTATE-LIST| |CLFSWM|::|SELECT-NEXT/PREVIOUS-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Select the next child")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|463 465 (DEFUN SELECT-PREVIOUS-CHILD NIL ...)-53| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SELECT-PREVIOUS-CHILD| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SELECT-PREVIOUS-CHILD| + #16Y(00 00 00 00 00 00 00 00 06 01 99 00 2F 01 19 01) + (|TOOLS|::|ROTATE-LIST| |CLFSWM|::|SELECT-NEXT/PREVIOUS-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Select the previous child")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|469 473 (DEFUN ENTER-GROUP NIL ...)-54| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|ENTER-GROUP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|ENTER-GROUP| + #22Y(00 00 00 00 00 00 00 00 06 01 6B 00 2F 01 0E 02 0F 00 2E 03 19 01) + (|CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|HIDE-ALL-CHILDS| + |CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Enter in the selected group - ie make it the root group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|475 481 (DEFUN LEAVE-GROUP NIL ...)-55| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|LEAVE-GROUP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|LEAVE-GROUP| + #34Y(00 00 00 00 00 00 00 00 06 01 6B 00 2F 01 6B 00 6F 02 93 00 07 14 + 89 03 03 9D 0F 00 16 01 2E 04 19 01) + (|CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|HIDE-ALL-CHILDS| + |CLFSWM|::|FIND-FATHER-GROUP| |CLFSWM|::|GROUP-P| + |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Leave the selected group - ie make its father the root group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|484 488 (DEFUN SWITCH-TO-ROOT-GROUP NIL ...)-56| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SWITCH-TO-ROOT-GROUP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SWITCH-TO-ROOT-GROUP| + #22Y(00 00 00 00 00 00 00 00 06 01 6B 00 2F 01 0E 02 0F 00 2E 03 19 01) + (|CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|HIDE-ALL-CHILDS| + |CLFSWM|::|*ROOT-GROUP*| |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Switch to the root group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|490 495 (DEFUN SWITCH-AND-SELECT-ROOT-GROUP NIL ...)-57| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SWITCH-AND-SELECT-ROOT-GROUP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SWITCH-AND-SELECT-ROOT-GROUP| + #24Y(00 00 00 00 00 00 00 00 06 01 6B 00 2F 01 0E 02 0F 00 0F 03 2E 04 + 19 01) + (|CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|HIDE-ALL-CHILDS| + |CLFSWM|::|*ROOT-GROUP*| |CLFSWM|::|*CURRENT-CHILD*| + |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Switch and select the root group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|498 502 (DEFUN TOGGLE-SHOW-ROOT-GROUP NIL ...)-58| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|TOGGLE-SHOW-ROOT-GROUP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|TOGGLE-SHOW-ROOT-GROUP| + #23Y(00 00 00 00 00 00 00 00 06 01 6B 00 2F 01 0E 02 59 0F 02 2E 03 19 + 01) + (|CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|HIDE-ALL-CHILDS| + |CLFSWM|::|*SHOW-ROOT-GROUP-P*| |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Show/Hide the root group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|505 512 (DEFUN FOCUS-CHILD (CHILD FATHER) ...)-59| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FOCUS-CHILD| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FOCUS-CHILD| + #61Y(00 00 00 00 02 00 00 00 06 03 AD 2F 00 1F 2C AE AE 6F 01 38 03 31 + B6 1F 22 AE AE 2F 01 78 32 04 59 1F 18 1B 0B AD 6F 01 6F 02 AC AF + 30 03 16 01 AE AE 2F 01 78 8F 04 6D 02 19 03 19 03) + (|CLFSWM|::|GROUP-P| |CLFSWM|::|GROUP-CHILD| |TOOLS|::|ROTATE-LIST| + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|GROUP-CHILD|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) + "Focus child - Return true if something has change")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|514 523 (DEFUN FOCUS-CHILD-REC (CHILD FATHER) ...)-60| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FOCUS-CHILD-REC| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FOCUS-CHILD-REC| + #32Y(00 00 00 00 02 00 00 00 06 03 00 2B 01 00 0B 00 00 AC 6D 00 01 B0 + B0 9F 34 16 01 06 00 00 19 04) + (#Y(|CLFSWM|::|FOCUS-CHILD-REC-REC| + #37Y(00 00 00 00 02 00 00 00 06 03 AE AE 8A 01 0B 9E 1F 11 14 AE 6F + 02 29 02 05 70 02 0C 00 01 9E 1F 02 1B 6F 19 03) + (|COMMON-LISP|::|NIL| |CLFSWM|::|FOCUS-CHILD| + |CLFSWM|::|FIND-FATHER-GROUP|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) + "Focus child and its fathers - Return true if something has change")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|525 532 (DEFUN SET-CURRENT-CHILD (CHILD FATHER) ...)-61| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SET-CURRENT-CHILD| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SET-CURRENT-CHILD| + #42Y(00 00 00 00 02 00 00 00 06 03 AE 89 00 06 6B 01 AF 8F 04 10 AD 89 + 00 0F 6B 01 AE 8E 04 09 9E 0F 01 02 19 03 9F 1B 78 00 19 03) + (|CLFSWM|::|GROUP-P| |CLFSWM|::|*CURRENT-CHILD*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) + "Set *current-child* to child - Return t if something has change")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|534 537 (DEFUN SET-CURRENT-ROOT (FATHER) ...)-62| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SET-CURRENT-ROOT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SET-CURRENT-ROOT| + #24Y(00 00 00 00 01 00 00 00 06 02 AD 6B 00 8A 01 05 9E 0F 00 19 02 00 + 19 02) + (|CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|FIND-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|FATHER|) + "Set current root if father is not in current root")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|540 545 (DEFUN FOCUS-ALL-CHILDS (CHILD FATHER) ...)-63| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FOCUS-ALL-CHILDS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FOCUS-ALL-CHILDS| + #32Y(00 00 00 00 02 00 00 00 06 03 AE AE 70 00 AF AF 70 01 AF 6F 02 9F + 1E 06 9E 1E 03 15 19 05 19 06) + (|CLFSWM|::|FOCUS-CHILD-REC| |CLFSWM|::|SET-CURRENT-CHILD| + |CLFSWM|::|SET-CURRENT-ROOT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) + "Focus child and its fathers - Set current group to father")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|549 552 (DEFUN REMOVE-CHILD-IN-GROUP (CHILD GROUP) ...)-64| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|REMOVE-CHILD-IN-GROUP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|REMOVE-CHILD-IN-GROUP| + #33Y(00 00 00 00 02 00 00 00 06 03 AD 2F 00 1F 10 AE AE 6F 01 38 07 C7 + FA 72 4F AC AF 30 03 19 04 19 03) + (|CLFSWM|::|GROUP-P| |CLFSWM|::|GROUP-CHILD| #.#'|COMMON-LISP|::|EQUAL| + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|GROUP-CHILD|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CHILD| |CLFSWM|::|GROUP|) "Remove the child in group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|554 559 (DEFUN REMOVE-CHILD-IN-GROUPS (CHILD ROOT) ...)-65| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|REMOVE-CHILD-IN-GROUPS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|REMOVE-CHILD-IN-GROUPS| + #46Y(00 00 00 00 02 00 00 00 06 03 00 2B 01 7F 03 00 00 AC 6D 00 01 AF + 9E 34 16 01 68 00 00 DB AD 32 33 16 01 1F 07 68 00 00 2F 02 19 04 + 19 04) + (#Y(|CLFSWM|::|REMOVE-CHILD-IN-GROUPS-G48725| + #44Y(00 00 00 00 01 00 00 00 06 02 AD 2F 01 1F 1B 69 00 01 AE 30 02 + AD 6F 03 63 1B 08 87 01 00 14 28 69 83 01 AD 8D 94 74 00 19 04 + 19 02) + (|COMMON-LISP|::|NIL| |CLFSWM|::|GROUP-P| + |CLFSWM|::|REMOVE-CHILD-IN-GROUP| |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|GROUP|) |COMMON-LISP|::|NIL|) + |XLIB|::|WINDOW| |CLFSWM|::|NETWM-REMOVE-IN-CLIENT-LIST|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CHILD| |CLFSWM|::|ROOT|) + "Remove child in the group root and in all its childs")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|563 569 (DEFUN REMOVE-CHILD-IN-ALL-GROUPS (CHILD) ...)-66| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|REMOVE-CHILD-IN-ALL-GROUPS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|REMOVE-CHILD-IN-ALL-GROUPS| + #38Y(00 00 00 00 01 00 00 00 06 02 AD 6B 00 8F 04 05 AD 2F 01 0F 00 AD + 6B 02 8F 04 04 0E 00 0F 02 AD 6B 03 30 04 19 02) + (|CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|FIND-FATHER-GROUP| + |CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|*ROOT-GROUP*| + |CLFSWM|::|REMOVE-CHILD-IN-GROUPS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CHILD|) "Remove child in all groups from *root-group*")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|576 615 (DEFUN PROCESS-NEW-WINDOW (WINDOW) ...)-67| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|PROCESS-NEW-WINDOW| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|PROCESS-NEW-WINDOW| + #64Y(02 00 01 00 01 00 00 00 06 02 00 2B 01 7F 02 00 00 9D 2B 01 00 0B + 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 57 03 B0 36 00 16 06 1B + 10 58 67 00 00 01 76 00 AD 36 01 18 02 01 19 02 00 4D 19 04) + (#(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|PROCESS-NEW-WINDOW-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|PROCESS-NEW-WINDOW-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|PROCESS-NEW-WINDOW-2| + #325Y(00 00 00 00 00 00 00 00 06 01 69 01 01 6B 01 AD DC AE 6F 03 2D + 03 04 16 02 69 01 01 DF 30 06 69 01 01 69 01 01 2F 07 26 08 13 + CA 1B 11 CA 1B 0E CA 1B 0B 69 01 01 6B 0C 30 14 1B 80 FF CE 14 + 30 0A 69 01 01 2F 0B 6B 0C E7 AD 32 33 16 01 1D 04 2E 0E 2E 0F + 69 01 01 6B 0C AC 6F 10 AE AD 38 03 71 BA AC AF 30 11 16 04 69 + 01 01 2F 12 69 01 01 6F 07 AC 24 13 FF BC 69 01 01 6F 15 93 00 + 06 F0 AD F1 8E 2F 01 CE 14 93 01 06 F0 AE F2 8E 2F 01 CE 14 93 + 02 06 F0 AF F3 8E 2F 04 6B 1A 2F 1B 14 93 03 06 F0 B0 F6 8E 2F + 04 6B 1A 2F 1D 14 93 04 0E F0 B1 65 1E 8E 2F 0C F0 B1 65 1F 8E + 2F 05 69 01 01 2F 1B 14 93 05 0E F0 B2 65 20 8E 2F 0C F0 B2 65 + 21 8E 2F 05 69 01 01 2F 1D 14 69 01 01 B2 AF 73 01 33 B1 73 01 + 34 30 22 69 01 01 B1 AE 73 01 33 B0 73 01 34 30 23 69 01 01 6B + 0C 6F 24 65 25 6B 0C 6F 26 69 01 01 6F 1B 73 01 36 73 02 37 73 + 02 35 38 01 72 B6 30 27 69 01 01 6B 0C 6F 28 65 25 6B 0C 6F 29 + 69 01 01 6F 1D 73 01 36 73 02 37 73 02 35 38 01 72 B6 30 2A 16 + 07 16 01 69 01 01 2F 2B 19 01) + (|COMMON-LISP|::|NIL| |CLFSWM|::|*WINDOW-EVENTS*| 11. + |XLIB|::|ENCODE-EVENT-MASK| |XLIB|::|CHANGE-WINDOW-ATTRIBUTE| + #.|CLFSWM|::|+NORMAL-STATE+| |CLFSWM|::|SET-WINDOW-STATE| + |CLFSWM|::|WINDOW-TYPE| + #S(|COMMON-LISP|::|HASH-TABLE| :|TEST| |EXT|::|STABLEHASH-EQ| + (:|TRANSIENT| . 7.) (:|MAXSIZE| . 4.) (:|NORMAL| . 1.)) + 0. |XLIB|::|SET-DRAWABLE-BORDER-WIDTH| |CLFSWM|::|GRAB-ALL-BUTTONS| + |CLFSWM|::|*CURRENT-CHILD*| |XLIB|::|WINDOW| + |CLFSWM|::|LEAVE-GROUP| |CLFSWM|::|SELECT-PREVIOUS-LEVEL| + |CLFSWM|::|GROUP-CHILD| + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|GROUP-CHILD|) + |CLFSWM|::|UNHIDE-WINDOW| :|NORMAL| + |CLFSWM|::|ADAPT-CHILD-TO-FATHER| |XLIB|::|WM-NORMAL-HINTS| + |XLIB|::|WM-SIZE-HINTS| 7. 8. 9. |CLFSWM|::|*ROOT*| + |XLIB|::|DRAWABLE-WIDTH| 10. |XLIB|::|DRAWABLE-HEIGHT| 5. 15. 6. + 16. |XLIB|::|SET-DRAWABLE-WIDTH| |XLIB|::|SET-DRAWABLE-HEIGHT| + |CLFSWM|::|GROUP-RX| #10r1/2 |CLFSWM|::|GROUP-RW| + |XLIB|::|SET-DRAWABLE-X| |CLFSWM|::|GROUP-RY| |CLFSWM|::|GROUP-RH| + |XLIB|::|SET-DRAWABLE-Y| |CLFSWM|::|NETWM-ADD-IN-CLIENT-LIST|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| |XLIB|::|WINDOW-ERROR| + |XLIB|::|DRAWABLE-ERROR|) + 35.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW|) + "When a new window is created (or when we are scanning initial +windows), this function dresses the window up and gets it ready to be +managed.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|620 642 (DEFUN PROCESS-EXISTING-WINDOWS (SCREEN) ...)-68| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|PROCESS-EXISTING-WINDOWS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|PROCESS-EXISTING-WINDOWS| + #112Y(00 00 00 00 01 00 00 00 06 02 63 2E 00 14 DB B0 DC 72 2F 6F 03 63 + 1B 80 4C E5 6B 0C B0 6F 0D B1 6F 0E B2 33 04 15 AE 2F 0F AE 2F 10 + EB AF DC 72 2F B2 38 03 80 BA 05 16 02 1B 28 87 01 00 14 AF 38 03 + 8C B6 1E AC 6F 04 AD 6F 05 AE 6F 06 24 07 10 AE 6B 08 8E 03 0A AD + 24 09 FF BD AC 24 0A FF B8 16 02 83 01 AD 8D 94 52 16 02 AD 2F 12 + 19 04) + (|CLFSWM|::|GET-ALL-WINDOWS| |XLIB|::|SCREEN| 1. |XLIB|::|QUERY-TREE| + |XLIB|::|WINDOW-MAP-STATE| |CLFSWM|::|WINDOW-STATE| + |XLIB|::|WINDOW-OVERRIDE-REDIRECT| :|ON| |CLFSWM|::|*NO-FOCUS-WINDOW*| + :|VIEWABLE| #.|CLFSWM|::|+ICONIC-STATE+| + #Y(|CLFSWM|::|PROCESS-EXISTING-WINDOWS-1| + #62Y(00 00 00 00 04 00 00 00 01 1A DA B2 38 02 31 8B B1 2F 01 10 02 + B3 B5 31 83 11 B1 2F 03 DE B2 38 02 31 8B AF B2 31 86 DF B2 31 + 8A B1 2F 01 10 02 B1 B5 31 83 11 B1 2F 03 B1 31 8D 9E 19 06) + ("Processing " |SYSTEM|::|STREAM-START-S-EXPRESSION| + |COMMON-LISP|::|*PRINT-RIGHT-MARGIN*| + |SYSTEM|::|STREAM-END-S-EXPRESSION| ": type=" #\ ) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|*STANDARD-OUTPUT*| |XLIB|::|WM-NAME| + |CLFSWM|::|WINDOW-TYPE| |CLFSWM|::|PROCESS-NEW-WINDOW| + |XLIB|::|MAP-WINDOW| |XLIB|::|WINDOW| + |CLFSWM|::|NETWM-SET-CLIENT-LIST|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|SCREEN|) + "Windows present when clfswm starts up must be absorbed by clfswm.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: clfswm-internal.fasl ============================================================================== Binary file. No diff available. Added: clfswm-internal.lib ============================================================================== --- (empty file) +++ clfswm-internal.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,355 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CLFSWM")) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|CALL-HOOK| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|HOOK| |COMMON-LISP|::|&OPTIONAL| |CLFSWM|::|ARGS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-DATA-SLOT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|GROUP| |CLFSWM|::|SLOT|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SET-GROUP-DATA-SLOT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|GROUP| |CLFSWM|::|SLOT| |CLFSWM|::|VALUE|))) +(|COMMON-LISP|::|LET| |COMMON-LISP|::|NIL| + (|COMMON-LISP|::|REMPROP| '|CLFSWM|::|GROUP-DATA-SLOT| + '|SYSTEM|::|DEFSTRUCT-WRITER|) + (|SYSTEM|::|CHECK-REDEFINITION| '|CLFSWM|::|GROUP-DATA-SLOT| + '|COMMON-LISP|::|DEFSETF| + (|COMMON-LISP|::|AND| + (|COMMON-LISP|::|GET| '|CLFSWM|::|GROUP-DATA-SLOT| + '|SYSTEM|::|SETF-EXPANDER|) + '|SYSTEM|::|SETF-EXPANDER|)) + (|SYSTEM|::|%PUT| '|CLFSWM|::|GROUP-DATA-SLOT| '|SYSTEM|::|SETF-EXPANDER| + '|CLFSWM|::|SET-GROUP-DATA-SLOT|) + (|SYSTEM|::|%SET-DOCUMENTATION| '|CLFSWM|::|GROUP-DATA-SLOT| + '|COMMON-LISP|::|SETF| |COMMON-LISP|::|NIL|) + '|CLFSWM|::|GROUP-DATA-SLOT|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-P| + '#(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFGENERIC|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-P| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-P| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|CHILD-NAME| + '#(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFGENERIC|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|CHILD-NAME| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|CHILD-NAME| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|CHILD-NAME| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|WITH-ALL-CHILDS|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|WITH-ALL-CHILDS| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|WITH-ALL-CHILDS| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 2.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G47589| (|COMMON-LISP|::|CADR| . #2=(|SYSTEM|::||))) + (#3=#:|G47590| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 2. 2.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|WITH-ALL-CHILDS| #1# + '(|CLFSWM|::|ROOT| |CLFSWM|::|CHILD|)) + #1#)) + (|CLFSWM|::|ROOT| (|COMMON-LISP|::|CAR| #3#)) + (|CLFSWM|::|CHILD| (|COMMON-LISP|::|CADR| #3#)) + (|CLFSWM|::|BODY| (|COMMON-LISP|::|CDDR| . #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|WITH-ALL-CHILDS| + (|COMMON-LISP|::|LET| + ((|CLFSWM|::|REC| (|COMMON-LISP|::|GENSYM|)) + (|CLFSWM|::|SUB-CHILD| (|COMMON-LISP|::|GENSYM|))) + `(|COMMON-LISP|::|LABELS| + ((,|CLFSWM|::|REC| (,|CLFSWM|::|CHILD|) ,@|CLFSWM|::|BODY| + (|COMMON-LISP|::|WHEN| (|CLFSWM|::|GROUP-P| ,|CLFSWM|::|CHILD|) + (|COMMON-LISP|::|DOLIST| + (,|CLFSWM|::|SUB-CHILD| + (|CLFSWM|::|GROUP-CHILD| ,|CLFSWM|::|CHILD|)) + (,|CLFSWM|::|REC| ,|CLFSWM|::|SUB-CHILD|))))) + (,|CLFSWM|::|REC| ,|CLFSWM|::|ROOT|)))))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|WITH-ALL-GROUPS|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|WITH-ALL-GROUPS| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|WITH-ALL-GROUPS| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 2.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G47603| (|COMMON-LISP|::|CADR| . #2=(|SYSTEM|::||))) + (#3=#:|G47604| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 2. 2.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|WITH-ALL-GROUPS| #1# + '(|CLFSWM|::|ROOT| |CLFSWM|::|GROUP|)) + #1#)) + (|CLFSWM|::|ROOT| (|COMMON-LISP|::|CAR| #3#)) + (|CLFSWM|::|GROUP| (|COMMON-LISP|::|CADR| #3#)) + (|CLFSWM|::|BODY| (|COMMON-LISP|::|CDDR| . #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|WITH-ALL-GROUPS| + (|COMMON-LISP|::|LET| + ((|CLFSWM|::|REC| (|COMMON-LISP|::|GENSYM|)) + (|CLFSWM|::|CHILD| (|COMMON-LISP|::|GENSYM|))) + `(|COMMON-LISP|::|LABELS| + ((,|CLFSWM|::|REC| (,|CLFSWM|::|GROUP|) + (|COMMON-LISP|::|WHEN| (|CLFSWM|::|GROUP-P| ,|CLFSWM|::|GROUP|) + ,@|CLFSWM|::|BODY| + (|COMMON-LISP|::|DOLIST| + (,|CLFSWM|::|CHILD| (|CLFSWM|::|GROUP-CHILD| ,|CLFSWM|::|GROUP|)) + (,|CLFSWM|::|REC| ,|CLFSWM|::|CHILD|))))) + (,|CLFSWM|::|REC| ,|CLFSWM|::|ROOT|)))))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|WITH-ALL-WINDOWS|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|WITH-ALL-WINDOWS| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|WITH-ALL-WINDOWS| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 2.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G47617| (|COMMON-LISP|::|CADR| . #2=(|SYSTEM|::||))) + (#3=#:|G47618| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 2. 2.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|WITH-ALL-WINDOWS| #1# + '(|CLFSWM|::|ROOT| |CLFSWM|::|WINDOW|)) + #1#)) + (|CLFSWM|::|ROOT| (|COMMON-LISP|::|CAR| #3#)) + (|CLFSWM|::|WINDOW| (|COMMON-LISP|::|CADR| #3#)) + (|CLFSWM|::|BODY| (|COMMON-LISP|::|CDDR| . #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|WITH-ALL-WINDOWS| + (|COMMON-LISP|::|LET| + ((|CLFSWM|::|REC| (|COMMON-LISP|::|GENSYM|)) + (|CLFSWM|::|CHILD| (|COMMON-LISP|::|GENSYM|))) + `(|COMMON-LISP|::|LABELS| + ((,|CLFSWM|::|REC| (,|CLFSWM|::|WINDOW|) + (|COMMON-LISP|::|WHEN| (|XLIB|::|WINDOW-P| ,|CLFSWM|::|WINDOW|) + ,@|CLFSWM|::|BODY|) + (|COMMON-LISP|::|WHEN| (|CLFSWM|::|GROUP-P| ,|CLFSWM|::|WINDOW|) + (|COMMON-LISP|::|DOLIST| + (,|CLFSWM|::|CHILD| + (|CLFSWM|::|GROUP-CHILD| ,|CLFSWM|::|WINDOW|)) + (,|CLFSWM|::|REC| ,|CLFSWM|::|CHILD|))))) + (,|CLFSWM|::|REC| ,|CLFSWM|::|ROOT|)))))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|WITH-ALL-WINDOWS-GROUPS|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|WITH-ALL-WINDOWS-GROUPS| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|WITH-ALL-WINDOWS-GROUPS| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 4. + 4.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G47631| (|COMMON-LISP|::|CADR| . #2=(|SYSTEM|::||))) + (#3=#:|G47632| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 2. 2.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|WITH-ALL-WINDOWS-GROUPS| #1# + '(|CLFSWM|::|ROOT| |CLFSWM|::|CHILD|)) + #1#)) + (|CLFSWM|::|ROOT| (|COMMON-LISP|::|CAR| #3#)) + (|CLFSWM|::|CHILD| (|COMMON-LISP|::|CADR| #3#)) + (|CLFSWM|::|BODY-WINDOW| (|COMMON-LISP|::|CADDR| . #2#)) + (|CLFSWM|::|BODY-GROUP| (|COMMON-LISP|::|CADDDR| . #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|WITH-ALL-WINDOWS-GROUPS| + (|COMMON-LISP|::|LET| + ((|CLFSWM|::|REC| (|COMMON-LISP|::|GENSYM|)) + (|CLFSWM|::|SUB-CHILD| (|COMMON-LISP|::|GENSYM|))) + `(|COMMON-LISP|::|LABELS| + ((,|CLFSWM|::|REC| (,|CLFSWM|::|CHILD|) + (|COMMON-LISP|::|TYPECASE| ,|CLFSWM|::|CHILD| + (|XLIB|::|WINDOW| ,|CLFSWM|::|BODY-WINDOW|) + (|CLFSWM|::|GROUP| ,|CLFSWM|::|BODY-GROUP| + (|COMMON-LISP|::|DOLIST| + (,|CLFSWM|::|SUB-CHILD| + (|CLFSWM|::|GROUP-CHILD| ,|CLFSWM|::|CHILD|)) + (,|CLFSWM|::|REC| ,|CLFSWM|::|SUB-CHILD|)))))) + (,|CLFSWM|::|REC| ,|CLFSWM|::|ROOT|)))))))))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-FIND-FREE-NUMBER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|CREATE-GROUP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&KEY| |CLFSWM|::|NAME| + (|COMMON-LISP|::|NUMBER| (|CLFSWM|::|GROUP-FIND-FREE-NUMBER|)) + (|CLFSWM|::|X| 0.1f0) (|CLFSWM|::|Y| 0.1f0) (|CLFSWM|::|W| 0.8f0) + (|CLFSWM|::|H| 0.8f0) |CLFSWM|::|LAYOUT|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|ADD-GROUP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|GROUP| |CLFSWM|::|FATHER|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GET-CURRENT-CHILD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FIND-CHILD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|TO-FIND| |CLFSWM|::|ROOT|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FIND-FATHER-GROUP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|TO-FIND| |COMMON-LISP|::|&OPTIONAL| + (|CLFSWM|::|ROOT| |CLFSWM|::|*ROOT-GROUP*|)))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FIND-GROUP-WINDOW| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|WINDOW| |COMMON-LISP|::|&OPTIONAL| + (|CLFSWM|::|ROOT| |CLFSWM|::|*ROOT-GROUP*|)))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FIND-GROUP-BY-NAME| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|NAME|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FIND-GROUP-BY-NUMBER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|COMMON-LISP|::|NUMBER|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GET-ALL-WINDOWS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&OPTIONAL| (|CLFSWM|::|ROOT| |CLFSWM|::|*ROOT-GROUP*|)))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GET-HIDDEN-WINDOWS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DISPLAY-GROUP-INFO| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|GROUP|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GET-FATHER-LAYOUT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|ADAPT-CHILD-TO-FATHER| + '#(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFGENERIC|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|ADAPT-CHILD-TO-FATHER| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|ADAPT-CHILD-TO-FATHER| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-CHILD| + '#(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFGENERIC|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HIDE-CHILD| + '#(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFGENERIC|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-CHILD| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HIDE-CHILD| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-CHILD| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HIDE-CHILD| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SELECT-CHILD| + '#(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFGENERIC|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SELECT-CHILD| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SELECT-CHILD| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SELECT-CURRENT-GROUP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|SELECTED|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SET-FOCUS-TO-CURRENT-CHILD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SHOW-ALL-CHILDS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HIDE-ALL-CHILDS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|ROOT|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SELECT-NEXT/PREVIOUS-BROTHER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|FUN-ROTATE|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SELECT-NEXT-BROTHER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SELECT-PREVIOUS-BROTHER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SELECT-NEXT-LEVEL| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SELECT-PREVIOUS-LEVEL| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SELECT-NEXT/PREVIOUS-CHILD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|FUN-ROTATE|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SELECT-NEXT-CHILD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SELECT-PREVIOUS-CHILD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|ENTER-GROUP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|LEAVE-GROUP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SWITCH-TO-ROOT-GROUP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SWITCH-AND-SELECT-ROOT-GROUP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|TOGGLE-SHOW-ROOT-GROUP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FOCUS-CHILD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FOCUS-CHILD-REC| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SET-CURRENT-CHILD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SET-CURRENT-ROOT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|FATHER|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FOCUS-ALL-CHILDS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|REMOVE-CHILD-IN-GROUP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|CHILD| |CLFSWM|::|GROUP|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|REMOVE-CHILD-IN-GROUPS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|CHILD| |CLFSWM|::|ROOT|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|REMOVE-CHILD-IN-ALL-GROUPS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|CHILD|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|PROCESS-NEW-WINDOW| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WINDOW|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|PROCESS-EXISTING-WINDOWS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|SCREEN|))) Added: clfswm-internal.lisp ============================================================================== --- (empty file) +++ clfswm-internal.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,642 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Sat Mar 1 00:03:14 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Main functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + +;;; Minimal hook +(defun call-hook (hook &optional args) + "Call a hook (a function, a symbol or a list of function)" + (typecase hook + (list (dolist (h hook) + (apply 'call-hook (list h args)))) + (t (apply hook args)))) + + +;;; Group data manipulation functions +(defun group-data-slot (group slot) + "Return the value associated to data slot" + (when (group-p group) + (second (assoc slot (group-data group))))) + +(defun set-group-data-slot (group slot value) + "Set the value associated to data slot" + (when (group-p group) + (with-slots (data) group + (setf data (remove (assoc slot data) data)) + (push (list slot value) data)) + value)) + +(defsetf group-data-slot set-group-data-slot) + + + +(defgeneric group-p (group)) +(defmethod group-p ((group group)) + (declare (ignore group)) + t) +(defmethod group-p (group) + (declare (ignore group)) + nil) + + + +(defgeneric child-name (child)) + +(defmethod child-name ((child xlib:window)) + (xlib:wm-name child)) + +(defmethod child-name ((child group)) + (group-name child)) + +(defmethod child-name (child) + (declare (ignore child)) + "???") + + + +;; (with-all-childs (*root-group* child) (typecase child (xlib:window (print child)) (group (print (group-number child))))) +(defmacro with-all-childs ((root child) &body body) + (let ((rec (gensym)) + (sub-child (gensym))) + `(labels ((,rec (,child) + , at body + (when (group-p ,child) + (dolist (,sub-child (group-child ,child)) + (,rec ,sub-child))))) + (,rec ,root)))) + + +;; (with-all-group (*root-group* group) (print (group-number group))) +(defmacro with-all-groups ((root group) &body body) + (let ((rec (gensym)) + (child (gensym))) + `(labels ((,rec (,group) + (when (group-p ,group) + , at body + (dolist (,child (group-child ,group)) + (,rec ,child))))) + (,rec ,root)))) + + +;; (with-all-windows (*root-group* window) (print window)) +(defmacro with-all-windows ((root window) &body body) + (let ((rec (gensym)) + (child (gensym))) + `(labels ((,rec (,window) + (when (xlib:window-p ,window) + , at body) + (when (group-p ,window) + (dolist (,child (group-child ,window)) + (,rec ,child))))) + (,rec ,root)))) + + + +;; (with-all-groups-windows (*root-group* child) (print child) (print (group-number child))) +(defmacro with-all-windows-groups ((root child) body-window body-group) + (let ((rec (gensym)) + (sub-child (gensym))) + `(labels ((,rec (,child) + (typecase ,child + (xlib:window ,body-window) + (group ,body-group + (dolist (,sub-child (group-child ,child)) + (,rec ,sub-child)))))) + (,rec ,root)))) + + + +(defun group-find-free-number () + (let ((all-numbers nil)) + (with-all-groups (*root-group* group) + (push (group-number group) all-numbers)) + (find-free-number all-numbers))) + + + +(defun create-group (&key name (number (group-find-free-number)) (x 0.1) (y 0.1) (w 0.8) (h 0.8) layout) + (let* ((window (xlib:create-window :parent *root* + :x 0 + :y 0 + :width 200 + :height 200 + :background (get-color "Black") + :colormap (xlib:screen-default-colormap *screen*) + :border-width 1 + :border (get-color "Red") + :event-mask '(:exposure :button-press))) + (gc (xlib:create-gcontext :drawable window + :foreground (get-color "Green") + :background (get-color "Black") + :font *default-font* + :line-style :solid))) + (make-instance 'group :name name :number number + :x x :y y :w w :h h :window window :gc gc :layout layout))) + + +(defun add-group (group father) + (push group (group-child father))) + + + + + + +(defun get-current-child () + "Return the current focused child" + (unless (equal *current-child* *root-group*) + (typecase *current-child* + (xlib:window *current-child*) + (group (if (xlib:window-p (first (group-child *current-child*))) + (first (group-child *current-child*)) + *current-child*))))) + + +(defun find-child (to-find root) + "Find to-find in root or in its childs" + (with-all-childs (root child) + (when (equal child to-find) + (return-from find-child t)))) + + + +(defun find-father-group (to-find &optional (root *root-group*)) + "Return the father group of to-find" + (with-all-groups (root group) + (when (member to-find (group-child group)) + (return-from find-father-group group)))) + + + +(defun find-group-window (window &optional (root *root-group*)) + "Return the group with the window window" + (with-all-groups (root group) + (when (xlib:window-equal window (group-window group)) + (return-from find-group-window group)))) + + +(defun find-group-by-name (name) + "Find a group from its name" + (when name + (with-all-groups (*root-group* group) + (when (string-equal name (group-name group)) + (return-from find-group-by-name group))))) + +(defun find-group-by-number (number) + "Find a group from its number" + (when (numberp number) + (with-all-groups (*root-group* group) + (when (= number (group-number group)) + (return-from find-group-by-number group))))) + + + + +(defun get-all-windows (&optional (root *root-group*)) + "Return all windows in root and in its childs" + (let ((acc nil)) + (with-all-windows (root window) + (push window acc)) + acc)) + + +(defun get-hidden-windows () + "Return all hiddens windows" + (let ((all-windows (get-all-windows)) + (hidden-windows (remove-if-not #'window-hidden-p + (copy-list (xlib:query-tree *root*))))) + (set-difference hidden-windows all-windows))) + + + + +(defun display-group-info (group) + (let ((dy (+ (xlib:max-char-ascent *default-font*) (xlib:max-char-descent *default-font*)))) + (with-slots (name number gc window child) group + (when (equal group *current-root*) + (xlib:clear-area window)) + (xlib:with-gcontext (gc :foreground (get-color (if (and (equal group *current-root*) + (equal group *current-child*)) + "Red" "Green"))) + (xlib:draw-image-glyphs window gc 5 dy + (format nil "Group: ~A~A " + number + (if name (format nil " - ~A" name) ""))) + (let ((pos dy)) + (when (equal group *current-root*) + (xlib:draw-image-glyphs window gc 5 (incf pos dy) + (format nil "~A hidden windows " (length (get-hidden-windows)))) + (when *child-selection* + (xlib:draw-image-glyphs window gc 5 (incf pos dy) + (with-output-to-string (str) + (format str "Selection: ") + (dolist (child *child-selection*) + (typecase child + (xlib:window (format str "~A " (xlib:wm-name child))) + (group (format str "group:~A[~A] " (group-number child) + (aif (group-name child) it ""))))) + (format str " "))))) + (dolist (ch child) + (when (xlib:window-p ch) + (xlib:draw-glyphs window gc 5 (incf pos dy) (ensure-printable (xlib:wm-name ch)))))))))) + + + + + + + + + + +(defun get-father-layout (child father) + (if (group-p father) + (aif (group-layout father) + (funcall it child father) + (no-layout child father)) + (get-fullscreen-size))) + + +(defgeneric adapt-child-to-father (child father)) + +(defmethod adapt-child-to-father ((window xlib:window) father) + (with-xlib-protect + (multiple-value-bind (nx ny nw nh raise-p) + (get-father-layout window father) + (setf (xlib:drawable-x window) nx + (xlib:drawable-y window) ny + (xlib:drawable-width window) nw + (xlib:drawable-height window) nh) + raise-p))) + +(defmethod adapt-child-to-father ((group group) father) + (with-xlib-protect + (multiple-value-bind (nx ny nw nh raise-p) + (get-father-layout group father) + (with-slots (rx ry rw rh window) group + (setf rx nx ry ny rw nw rh nh) + (setf (xlib:drawable-x window) rx + (xlib:drawable-y window) ry + (xlib:drawable-width window) rw + (xlib:drawable-height window) rh) + raise-p)))) + + + +(defgeneric show-child (child father)) +(defgeneric hide-child (child)) + +(defmethod show-child ((group group) father) + (with-xlib-protect + (with-slots (window) group + (let ((raise-p (adapt-child-to-father group father))) + (when (or *show-root-group-p* (not (equal group *current-root*))) + (setf (xlib:window-background window) (get-color "Black")) + (xlib:map-window window) + (when raise-p + (raise-window window)) + (display-group-info group)))))) + + +(defmethod hide-child ((group group)) + (with-xlib-protect + (with-slots (window) group + (xlib:unmap-window window)))) + + +(defmethod show-child ((window xlib:window) father) + (with-xlib-protect + (let ((raise-p nil)) + (when (eql (window-type window) :normal) + (setf raise-p (adapt-child-to-father window father))) + (xlib:map-window window) + (when raise-p + (raise-window window))))) + +(defmethod hide-child ((window xlib:window)) + (hide-window window)) + + + + + + +(defgeneric select-child (child selected)) + +(defmethod select-child ((group group) selected) + (with-xlib-protect + (when (and (group-p group) (group-window group)) + (setf (xlib:window-border (group-window group)) + (get-color (cond ((equal selected :maybe) *color-maybe-selected*) + ((equal selected nil) *color-unselected*) + (selected *color-selected*))))))) + +(defmethod select-child ((window xlib:window) selected) + (with-xlib-protect + (setf (xlib:window-border window) + (get-color (cond ((equal selected :maybe) *color-maybe-selected*) + ((equal selected nil) *color-unselected*) + (selected *color-selected*)))))) + +(defun select-current-group (selected) + (select-child *current-child* selected)) + + + +(defun set-focus-to-current-child () + (no-focus) + (when (group-p *current-child*) + (when (xlib:window-p (first (group-child *current-child*))) + (focus-window (first (group-child *current-child*))))) + (when (xlib:window-p *current-child*) + (focus-window *current-child*))) + + + + + +(defun show-all-childs () + "Show all childs from *current-root*" + (labels ((rec (root father first-p) + (show-child root father) + (select-child root (if (equal root *current-child*) t + (if first-p :maybe nil))) + (when (group-p root) + (let ((first-child (first (group-child root)))) + (dolist (child (reverse (group-child root))) + (rec child root (and first-p (equal child first-child)))))))) + (rec *current-root* nil t) + (set-focus-to-current-child))) + + + + +(defun hide-all-childs (root) + (hide-child root) + (when (group-p root) + (dolist (child (group-child root)) + (hide-all-childs child)))) + + + + +(defun select-next/previous-brother (fun-rotate) + "Select the next/previous brother group" + (let ((group-is-root? (and (equal *current-root* *current-child*) + (not (equal *current-root* *root-group*))))) + (if group-is-root? + (hide-all-childs *current-root*) + (select-current-group nil)) + (let ((father (find-father-group *current-child*))) + (when (group-p father) + (with-slots (child) father + (setf child (funcall fun-rotate child)) + (setf *current-child* (first child))))) + (when group-is-root? + (setf *current-root* *current-child*)) + (show-all-childs))) + + +(defun select-next-brother () + "Select the next brother group" + (select-next/previous-brother #'anti-rotate-list)) + +(defun select-previous-brother () + "Select the previous brother group" + (select-next/previous-brother #'rotate-list)) + + +(defun select-next-level () + "Select the next level in group" + (select-current-group nil) + (when (group-p *current-child*) + (awhen (first (group-child *current-child*)) + (setf *current-child* it))) + (show-all-childs)) + +(defun select-previous-level () + "Select the previous level in group" + (unless (equal *current-child* *current-root*) + (select-current-group nil) + (awhen (find-father-group *current-child*) + (setf *current-child* it)) + (show-all-childs))) + + +(defun select-next/previous-child (fun-rotate) + "Select the next/previous child" + (when (group-p *current-child*) + (with-slots (child) *current-child* + (setf child (funcall fun-rotate child))) + (show-all-childs))) + + +(defun select-next-child () + "Select the next child" + (select-next/previous-child #'anti-rotate-list)) + +(defun select-previous-child () + "Select the previous child" + (select-next/previous-child #'rotate-list)) + + + +(defun enter-group () + "Enter in the selected group - ie make it the root group" + (hide-all-childs *current-root*) + (setf *current-root* *current-child*) + (show-all-childs)) + +(defun leave-group () + "Leave the selected group - ie make its father the root group" + (hide-all-childs *current-root*) + (awhen (find-father-group *current-root*) + (when (group-p it) + (setf *current-root* it))) + (show-all-childs)) + + +(defun switch-to-root-group () + "Switch to the root group" + (hide-all-childs *current-root*) + (setf *current-root* *root-group*) + (show-all-childs)) + +(defun switch-and-select-root-group () + "Switch and select the root group" + (hide-all-childs *current-root*) + (setf *current-root* *root-group*) + (setf *current-child* *current-root*) + (show-all-childs)) + + +(defun toggle-show-root-group () + "Show/Hide the root group" + (hide-all-childs *current-root*) + (setf *show-root-group-p* (not *show-root-group-p*)) + (show-all-childs)) + + +(defun focus-child (child father) + "Focus child - Return true if something has change" + (when (and (group-p father) + (member child (group-child father))) + (when (not (equal child (first (group-child father)))) + (loop until (equal child (first (group-child father))) + do (setf (group-child father) (rotate-list (group-child father)))) + t))) + +(defun focus-child-rec (child father) + "Focus child and its fathers - Return true if something has change" + (let ((change nil)) + (labels ((rec (child father) + (when (focus-child child father) + (setf change t)) + (when father + (rec father (find-father-group father))))) + (rec child father)) + change)) + +(defun set-current-child (child father) + "Set *current-child* to child - Return t if something has change" + (cond ((and (group-p child) (not (equal *current-child* child))) + (setf *current-child* child) + t) + ((and (group-p father) (not (equal *current-child* father))) + (setf *current-child* father) + t))) + +(defun set-current-root (father) + "Set current root if father is not in current root" + (unless (find-child father *current-root*) + (setf *current-root* father))) + + +(defun focus-all-childs (child father) + "Focus child and its fathers - Set current group to father" + (let ((new-focus (focus-child-rec child father)) + (new-current-child (set-current-child child father)) + (new-root (set-current-root father))) + (or new-focus new-current-child new-root))) + + + +(defun remove-child-in-group (child group) + "Remove the child in group" + (when (group-p group) + (setf (group-child group) (remove child (group-child group) :test #'equal)))) + +(defun remove-child-in-groups (child root) + "Remove child in the group root and in all its childs" + (with-all-groups (root group) + (remove-child-in-group child group)) + (when (xlib:window-p child) + (netwm-remove-in-client-list child))) + + + +(defun remove-child-in-all-groups (child) + "Remove child in all groups from *root-group*" + (when (equal child *current-root*) + (setf *current-root* (find-father-group child))) + (when (equal child *current-child*) + (setf *current-child* *current-root*)) + (remove-child-in-groups child *root-group*)) + + + + + + +(defun process-new-window (window) + "When a new window is created (or when we are scanning initial +windows), this function dresses the window up and gets it ready to be +managed." + ;; Listen for events + ;;(create-workspace-on-request) + ;;(create-group-on-request) + ;; PHIL: TODO: add a hook here + (with-xlib-protect + (setf (xlib:window-event-mask window) *window-events*) + (set-window-state window +normal-state+) + (setf (xlib:drawable-border-width window) (case (window-type window) + (:normal 1) + (:maxsize 1) + (:transient 1) + (t 0))) + (grab-all-buttons window) + (when (xlib:window-p *current-child*) + (leave-group) + (select-previous-level)) + ;;(unless (eql (window-type window) :maxsize) ;; PHIL: this is sufficient for the ROX panel + (pushnew window (group-child *current-child*)) ;) + (unhide-window window) + ;;(dbg (xlib:wm-name window) (xlib:get-wm-class window) (window-type window)) ;;; PHIL + (case (window-type window) + (:normal (adapt-child-to-father window *current-child*)) + (t (let* ((hints (xlib:wm-normal-hints window)) + (min-width (or (and hints (xlib:wm-size-hints-min-width hints)) 0)) + (min-height (or (and hints (xlib:wm-size-hints-min-height hints)) 0)) + (max-width (or (and hints (xlib:wm-size-hints-max-width hints)) (xlib:drawable-width *root*))) + (max-height (or (and hints (xlib:wm-size-hints-max-height hints)) (xlib:drawable-height *root*))) + (rwidth (or (and hints (or (xlib:wm-size-hints-width hints) (xlib:wm-size-hints-base-width hints))) + (xlib:drawable-width window))) + (rheight (or (and hints (or (xlib:wm-size-hints-height hints) (xlib:wm-size-hints-base-height hints))) + (xlib:drawable-height window)))) + (setf (xlib:drawable-width window) (min (max min-width rwidth) max-width) + (xlib:drawable-height window) (min (max min-height rheight) max-height)) + (setf (xlib:drawable-x window) (truncate (+ (group-rx *current-child*) (/ (- (group-rw *current-child*) (xlib:drawable-width window)) 2))) + (xlib:drawable-y window) (truncate (+ (group-ry *current-child*) (/ (- (group-rh *current-child*) (xlib:drawable-height window)) 2))))))) + (netwm-add-in-client-list window))) + + + + +;;(defun hide-existing-windows (screen) +;; "Hide all existing windows in screen" +;; (dolist (win (xlib:query-tree (xlib:screen-root screen))) +;; (hide-window win))) + +(defun process-existing-windows (screen) + "Windows present when clfswm starts up must be absorbed by clfswm." + (let ((id-list nil) + (all-windows (get-all-windows))) + (dolist (win (xlib:query-tree (xlib:screen-root screen))) + (unless (member win all-windows) + (let ((map-state (xlib:window-map-state win)) + (wm-state (window-state win))) + (unless (or (eql (xlib:window-override-redirect win) :on) + (eql win *no-focus-window*)) + (when (or (eql map-state :viewable) + (eql wm-state +iconic-state+)) + (format t "Processing ~S: type=~A ~S~%" (xlib:wm-name win) (window-type win)win) + ;; (unhide-window win) + (process-new-window win) + (xlib:map-window win) + (pushnew (xlib:window-id win) id-list)))))) + (netwm-set-client-list id-list))) Added: clfswm-internal.lisp.bak ============================================================================== --- (empty file) +++ clfswm-internal.lisp.bak Sat Mar 1 07:36:13 2008 @@ -0,0 +1,384 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Fri Dec 21 23:00:08 2007 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Main functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + +;;; Minimal hook +(defun call-hook (hook args) + "Call a hook (a function, a symbol or a list of function)" + (typecase hook + (list (dolist (h hook) + (apply 'call-hook (list h args)))) + (t (apply hook args)))) + + + +;;; CLFSWM internal functions +(defun create-default-workspace (&optional number) + (make-workspace :number (or number (incf *current-workspace-number*)))) + + +(defun get-group-size (group) + (if (group-fullscreenp group) + (destructuring-bind (x y width height) *fullscreen* + (values x y width height)) + (values (group-x group) + (group-y group) + (group-width group) + (group-height group)))) + + +(defun select-minimum-workspace () + "Rotate the workspace list until the smallest workspace is selected" + (let ((min-number (loop for w in *workspace-list* + minimize (workspace-number w)))) + (when min-number + (loop while (and (workspace-p (first *workspace-list*)) + (/= (workspace-number (first *workspace-list*)) min-number)) + do (setf *workspace-list* (rotate-list *workspace-list*)))))) + + + + +(defun adapt-window-to-group (window group) + (handler-case + (when (and window group) + (unhide-window window) + (multiple-value-bind (x y width height) + (get-group-size group) + (case (window-type window) + (:normal + ;;(dbg "adapt 1" (wm-name window) (drawable-height window)) ;;; PHIL + (setf (drawable-x window) x + (drawable-y window) y + (drawable-width window) width + (drawable-height window) height) + ;;(dbg "adapt 2" (drawable-height window)) + ) + (t (let* ((hints (xlib:wm-normal-hints window)) + (hints-width (or (and hints (xlib:wm-size-hints-max-width hints)) + most-positive-fixnum)) + (hints-height (or (and hints (xlib:wm-size-hints-max-height hints)) + most-positive-fixnum))) + ;;; Adapt only windows with width and heigth outside group + (when (> hints-width width) + (setf (drawable-width window) width + (drawable-x window) x)) + (when (> hints-height height) + (setf (drawable-height window) height + (drawable-y window) y))))))) + ((or match-error window-error drawable-error) (c) + (declare (ignore c))))) + ;;(dbg "Adapt error" c)))) + + + + +(defun adapt-all-window-in-group (group) + (when group + (dolist (window (group-window-list group)) + (adapt-window-to-group window group)))) + + +(defun add-window-in-group (window group) + (when (and window group) + (pushnew window (group-window-list group)) + (adapt-window-to-group window group) + window)) + +(defun add-group-in-workspace (group workspace) + (when group + (pushnew group (workspace-group-list workspace)) + group)) + + + +(defun add-workspace (workspace) + (when workspace + (select-minimum-workspace) + (setf *workspace-list* (anti-rotate-list (append *workspace-list* (list workspace)))) + (netwm-update-desktop-property) + workspace)) + + + +(defun remove-window-in-group (window group) + (setf (group-window-list group) + (remove window (group-window-list group)))) + +(defun remove-window-in-workspace (window workspace) + (dolist (group (workspace-group-list workspace)) + (remove-window-in-group window group))) + +(defun remove-window-in-all-workspace (window) + (dolist (workspace *workspace-list*) + (remove-window-in-workspace window workspace)) + (netwm-remove-in-client-list window)) + + +(defun remove-group-in-workspace (group workspace) + (setf (workspace-group-list workspace) + (remove group (workspace-group-list workspace)))) + +(defun remove-group-in-all-workspace (group) + (dolist (workspace *workspace-list*) + (remove-group-in-workspace group workspace))) + +(defun remove-workspace (workspace) + (setf *workspace-list* (remove workspace *workspace-list*)) + (netwm-update-desktop-property)) + + +(defun current-workspace () + (if (consp *workspace-list*) + (first *workspace-list*) + (add-workspace (create-default-workspace)))) + + +(defun current-group () + (let ((current-workspace (current-workspace))) + (when current-workspace + (let ((group-list (workspace-group-list current-workspace))) + (if (consp group-list) + (first group-list) + (add-group-in-workspace (copy-group *default-group*) current-workspace)))))) + +(defun current-window () + (let ((current-group (current-group))) + (when current-group + (let ((window-list (group-window-list current-group))) + (when (consp window-list) + (first window-list)))))) + + + + + + +(defun show-group (root gc group) + (when (and gc group) + (handler-case + (multiple-value-bind (x y width height) + (get-group-size group) + (setf (gcontext-foreground gc) + (get-color (if (eql group (current-group)) + *color-selected* + *color-unselected*))) + (draw-rectangle root gc (1- x) (1- y) (1+ width) (1+ height)) + (draw-line root gc x y (+ x width) (+ y height)) + (draw-line root gc x (+ y height) (+ x width) y)) + ((or match-error window-error drawable-error) (c) + (declare (ignore c)))))) + + + +(defun show-all-group (workspace &optional (root *root*) (gc *root-gc*)) + "Show all groups in workspace" + (handler-case + (progn + (clear-area root) + (dolist (group (reverse (workspace-group-list workspace))) + (show-group root gc group))) + ((or match-error window-error drawable-error) (c) + (declare (ignore c))))) +;;(dbg "Show all group" c)))) + + + + +(defun hide-all-windows-in-workspace (workspace) + "Hide all windows in a workspace" + (no-focus) + (setf *open-next-window-in-new-workspace* nil) + (dolist (group (workspace-group-list workspace)) + (dolist (window (group-window-list group)) + (hide-window window)))) + +(defun show-all-windows-in-workspace (workspace) + "Show all windows in a workspace" + (dolist (group (workspace-group-list workspace)) + (dolist (window (group-window-list group)) + (unhide-window window) + (adapt-window-to-group window group)) + (raise-window (first (group-window-list group)))) + (adapt-window-to-group (current-window) (current-group)) + (focus-window (current-window)) + (show-all-group (current-workspace))) + + + +(defun get-all-windows () + "Return a list with all known windows in all workspace" + (let ((acc nil)) + (dolist (workspace *workspace-list*) + (dolist (group (workspace-group-list workspace)) + (dolist (window (group-window-list group)) + (pushnew window acc)))) + (reverse acc))) + +(defun get-all-windows-in-workspace (workspace) + "Return a list with all known windows in workspace" + (let ((acc nil)) + (dolist (group (workspace-group-list workspace)) + (dolist (window (group-window-list group)) + (pushnew window acc))) + acc)) + + + +(defun create-workspace-on-request () + (when *open-next-window-in-new-workspace* + (let ((action *open-next-window-in-new-workspace*)) + (setf *open-next-window-in-new-workspace* nil) + (hide-all-windows-in-workspace (current-workspace)) + (typecase action + (number (let ((new-workspace (find-if #'(lambda (w) + (= (workspace-number w) action)) + *workspace-list*))) + (if new-workspace + (loop while (/= (workspace-number (current-workspace)) action) + do (setf *workspace-list* (rotate-list *workspace-list*))) + (add-workspace (create-default-workspace action))))) + (t (add-workspace (create-default-workspace)))) + (show-all-windows-in-workspace (current-workspace))))) + + + +(defun create-group-on-request () + (when *open-next-window-in-new-group* + (minimize-group (current-group)) + (unless (null (group-window-list (current-group))) + (add-group-in-workspace (copy-group *default-group*) (current-workspace))) + (case *open-next-window-in-new-group* + (:once (setf *open-next-window-in-new-group* nil))) + (show-all-windows-in-workspace (current-workspace)))) + + +(defun process-new-window (window) + "When a new window is created (or when we are scanning initial +windows), this function dresses the window up and gets it ready to be +managed." + ;; Listen for events + (create-workspace-on-request) + (create-group-on-request) + (setf (window-event-mask window) *window-events*) + (set-window-state window +normal-state+) + (setf (drawable-border-width window) (case (window-type window) + (:normal 0) + (:maxsize 1) + (:transient 1) + (t 0))) + (if (equal (window-type window) :normal) + (adapt-window-to-group window (current-group)) + (let* ((hints (xlib:wm-normal-hints window)) + (hints-width (or (and hints (xlib:wm-size-hints-max-width hints)) + most-positive-fixnum)) + (hints-height (or (and hints (xlib:wm-size-hints-max-height hints)) + most-positive-fixnum))) + (multiple-value-bind (x y width height) + (get-group-size (current-group)) + (setf (drawable-width window) (min hints-width width) + (drawable-height window) (min hints-height height)) + (setf (drawable-x window) (truncate (+ x (/ (- width (drawable-width window)) 2))) + (drawable-y window) (truncate (+ y (/ (- height (drawable-height window)) 2))))))) + (add-window-in-group window (current-group)) + (netwm-add-in-client-list window)) + + +(defun focus-group (group workspace) + "Push group on top of workspace group list" + (remove-group-in-workspace group workspace) + (add-group-in-workspace group workspace)) + + +(defun focus-workspace (workspace) + "Push workspace on top of workspace list" + (remove-workspace workspace) + (add-workspace workspace)) + + +(defun find-group-under-mouse (root-x root-y) + "Find the group under the mouse pointer" + (dolist (group (workspace-group-list (current-workspace))) + (when (and (<= (group-x group) root-x (+ (group-x group) (group-width group))) + (<= (group-y group) root-y (+ (group-y group) (group-height group)))) + (return group)))) + +(defun focus-group-under-mouse (root-x root-y) + "Focus the group under the mouse pointer" + (when (or (<= root-x (- (screen-width *screen*) 100)) + (<= root-y (- (screen-height *screen*) 100))) + (let ((group (find-group-under-mouse root-x root-y))) + (when (and group (not (equal group (current-group)))) + (no-focus) + (focus-group group (current-workspace)) + (focus-window (current-window)) + (show-all-group (current-workspace)))))) + + + + + + +(defun funcall-key-from-code (hash-table-key code state &optional args) + (labels ((funcall-from (key) + (multiple-value-bind (function foundp) + (gethash (list key state) hash-table-key) + (when (and foundp (first function)) + (if args + (funcall (first function) args) + (funcall (first function))) + t))) + (from-code () + (funcall-from code)) + (from-char () + (let ((char (keycode->char code state))) + (funcall-from char))) + (from-string () + (let ((string (keysym->keysym-name (keycode->keysym *display* code 0)))) + (funcall-from string)))) + (cond ((from-code)) + ((from-char)) + ((from-string))))) + + + +(defun funcall-button-from-code (hash-table-key code state root-x root-y + &optional (action #'first) args) + "Action: first=press third=release" + (let ((state (modifiers->state (set-difference (state->modifiers state) + '(:button-1 :button-2 :button-3 :button-4 :button-5))))) + (multiple-value-bind (function foundp) + (gethash (list code state) hash-table-key) + (if (and foundp (funcall action function)) + (if args + (funcall (funcall action function) root-x root-y args) + (funcall (funcall action function) root-x root-y)) + t)))) + + Added: clfswm-keys.fas ============================================================================== --- (empty file) +++ clfswm-keys.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,907 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 28 (IN-PACKAGE :CLFSWM)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CLFSWM" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|30 31 (DEFUN DEFINE-HASH-TABLE-KEY-NAME (HASH-TABLE NAME) ...)-2| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|DEFINE-HASH-TABLE-KEY-NAME| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-HASH-TABLE-KEY-NAME| + #17Y(00 00 00 00 02 00 00 00 06 03 DA AF AF 31 66 19 03) + (|CLFSWM|::|NAME|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|HASH-TABLE| |CLFSWM|::|NAME|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|33 35 (DEFINE-HASH-TABLE-KEY-NAME *MAIN-KEYS* "Main mode keys")-3| + #17Y(00 00 00 00 00 00 00 00 00 01 6B 00 DB 30 02 19 01) + (|CLFSWM|::|*MAIN-KEYS*| "Main mode keys" + |CLFSWM|::|DEFINE-HASH-TABLE-KEY-NAME|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|36 36 (DEFINE-HASH-TABLE-KEY-NAME *SECOND-KEYS* "Second mode keys")-4| + #17Y(00 00 00 00 00 00 00 00 00 01 6B 00 DB 30 02 19 01) + (|CLFSWM|::|*SECOND-KEYS*| "Second mode keys" + |CLFSWM|::|DEFINE-HASH-TABLE-KEY-NAME|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|37 37 (DEFINE-HASH-TABLE-KEY-NAME *MOUSE-ACTION* "Mouse buttons actions in second mode")-5| + #17Y(00 00 00 00 00 00 00 00 00 01 6B 00 DB 30 02 19 01) + (|CLFSWM|::|*MOUSE-ACTION*| "Mouse buttons actions in second mode" + |CLFSWM|::|DEFINE-HASH-TABLE-KEY-NAME|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|38 38 (DEFINE-HASH-TABLE-KEY-NAME *PAGER-KEYS* "Pager mode keys")-6| + #17Y(00 00 00 00 00 00 00 00 00 01 6B 00 DB 30 02 19 01) + (|CLFSWM|::|*PAGER-KEYS*| "Pager mode keys" + |CLFSWM|::|DEFINE-HASH-TABLE-KEY-NAME|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|39 39 (DEFINE-HASH-TABLE-KEY-NAME *PAGER-MOUSE-ACTION* "Mouse buttons actions in pager mode")-7| + #17Y(00 00 00 00 00 00 00 00 00 01 6B 00 DB 30 02 19 01) + (|CLFSWM|::|*PAGER-MOUSE-ACTION*| "Mouse buttons actions in pager mode" + |CLFSWM|::|DEFINE-HASH-TABLE-KEY-NAME|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|40 40 (DEFINE-HASH-TABLE-KEY-NAME *INFO-KEYS* "Info mode keys")-8| + #17Y(00 00 00 00 00 00 00 00 00 01 6B 00 DB 30 02 19 01) + (|CLFSWM|::|*INFO-KEYS*| "Info mode keys" + |CLFSWM|::|DEFINE-HASH-TABLE-KEY-NAME|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|41 41 (DEFINE-HASH-TABLE-KEY-NAME *INFO-MOUSE-ACTION* "Mouse buttons actions in info mode")-9| + #17Y(00 00 00 00 00 00 00 00 00 01 6B 00 DB 30 02 19 01) + (|CLFSWM|::|*INFO-MOUSE-ACTION*| "Mouse buttons actions in info mode" + |CLFSWM|::|DEFINE-HASH-TABLE-KEY-NAME|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|44 63 (DEFMACRO DEFINE-DEFINE-KEY (NAME HASHTABLE) ...)-10| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|DEFINE-DEFINE-KEY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-DEFINE-KEY| + #141Y(00 00 00 00 02 00 00 00 00 03 AE DA DA 2D 03 01 1D 80 75 9F 5C 78 + A0 5C 5C 78 DD AE DE 6E 03 05 E0 AF E1 6E 03 05 E2 B0 E3 6E 03 05 + E4 B1 E5 6E 03 05 E6 E7 B1 E8 E9 EA EB EC B8 7B 03 D8 5D 7A 7B 05 + EE B1 EF F0 F1 B6 7B 02 03 18 5D 7A 7B 04 EE B1 F3 F4 F5 F4 F6 F1 + BB 7B 01 7B 02 7B 03 7B 03 7B 04 EE B1 F7 F4 65 1E 65 1F 65 20 65 + 21 65 22 65 23 65 24 F0 F1 BE 7B 02 03 25 5D 7A 7B 07 7B 03 7B 04 + 61 05 19 09 AE 2F 02 19 03) + (3. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| "define-" "-key-fun" + |TOOLS|::|CREATE-SYMBOL| "define-" "-key" "undefine-" "-key" + "undefine-" "-multi-keys" |COMMON-LISP|::|PROGN| |COMMON-LISP|::|DEFUN| + (|CLFSWM|::|KEY| |COMMON-LISP|::|FUNCTION| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|KEYSTRING|) + "Define a new key, a key is '(char '(modifier list))" + |COMMON-LISP|::|SETF| |COMMON-LISP|::|GETHASH| |CLFSWM|::|KEY| + ((|COMMON-LISP|::|LIST| |COMMON-LISP|::|FUNCTION| + |CLFSWM|::|KEYSTRING|)) + |COMMON-LISP|::|DEFMACRO| + ((|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |COMMON-LISP|::|FUNCTION| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|KEYSTRING|) + |COMMON-LISP|::|LIST| |COMMON-LISP|::|QUOTE| + ((|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|KEY| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + |COMMON-LISP|::|FUNCTION| |CLFSWM|::|KEYSTRING|) + ((|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + |COMMON-LISP|::|CONS| '|COMMON-LISP|::|REMHASH| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|KEY| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + (|COMMON-LISP|::|&REST| |CLFSWM|::|KEYS|) '|COMMON-LISP|::|PROGN| + |COMMON-LISP|::|LOOP| |CLFSWM|::|FOR| |CLFSWM|::|K| |CLFSWM|::|IN| + |CLFSWM|::|KEYS| |CLFSWM|::|COLLECT| (|CLFSWM|::|K|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|66 79 (DEFMACRO DEFINE-DEFINE-MOUSE (NAME HASHTABLE) ...)-11| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|DEFINE-DEFINE-MOUSE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-DEFINE-MOUSE| + #97Y(00 00 00 00 02 00 00 00 00 03 AE DA DA 2D 03 01 1D 80 49 9F 5C 78 + A0 5C 5C 78 DD AE DE 6E 03 05 E0 AF 70 05 E1 B0 70 05 E2 E3 B0 E4 + E5 E6 E7 E8 B7 7B 03 D4 5D 7A 7B 05 EA B0 EB EC ED B5 7B 02 D9 5D + 7A 7B 04 EA B0 EF F0 F1 F0 F2 ED BA 7B 01 7B 02 7B 03 7B 03 7B 04 + 61 04 19 08 AE 2F 02 19 03) + (3. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| "define-" "-fun" |TOOLS|::|CREATE-SYMBOL| + "define-" "undefine-" |COMMON-LISP|::|PROGN| |COMMON-LISP|::|DEFUN| + (|CLFSWM|::|BUTTON| |CLFSWM|::|FUNCTION-PRESS| + |COMMON-LISP|::|&OPTIONAL| |CLFSWM|::|KEYSTRING| + |CLFSWM|::|FUNCTION-RELEASE|) + "Define a new mouse button action, a button is '(button number '(modifier list))" + |COMMON-LISP|::|SETF| |COMMON-LISP|::|GETHASH| |CLFSWM|::|BUTTON| + ((|COMMON-LISP|::|LIST| |CLFSWM|::|FUNCTION-PRESS| + |CLFSWM|::|KEYSTRING| |CLFSWM|::|FUNCTION-RELEASE|)) + |COMMON-LISP|::|DEFMACRO| + ((|CLFSWM|::|BUTTON| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |CLFSWM|::|FUNCTION-PRESS| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|FUNCTION-RELEASE| |CLFSWM|::|KEYSTRING|) + |COMMON-LISP|::|LIST| |COMMON-LISP|::|QUOTE| + ((|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|BUTTON| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + |CLFSWM|::|FUNCTION-PRESS| |CLFSWM|::|KEYSTRING| + |CLFSWM|::|FUNCTION-RELEASE|) + ((|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + |COMMON-LISP|::|CONS| '|COMMON-LISP|::|REMHASH| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|KEY| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|))) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|83 83 (DEFINE-DEFINE-KEY "main" *MAIN-KEYS*)-12-1| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 3E 19 01) + (|CLFSWM|::|DEFINE-MAIN-KEY-FUN| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-MAIN-KEY-FUN| + #25Y(00 00 00 00 02 00 01 00 06 09 3D 01 6B 00 AF AF 7B 02 B1 AE AE 31 + 66 19 06) + (|CLFSWM|::|*MAIN-KEYS*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|KEY| |COMMON-LISP|::|FUNCTION| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|KEYSTRING|) + "Define a new key, a key is '(char '(modifier list))")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|83 83 (DEFINE-DEFINE-KEY "main" *MAIN-KEYS*)-12-2| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 3E 19 01) + (|CLFSWM|::|DEFINE-MAIN-KEY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-MAIN-KEY| + #73Y(00 00 00 00 02 00 00 00 00 03 AE DA DB 2D 03 02 1D 24 9F 5C 78 AC + DE 8B 02 21 AC 94 00 95 01 A3 5C 5C 78 A4 5C 5C 5C 78 E6 E7 B1 B1 + 6F 0E 7B 03 AF AF 61 04 19 09 AE 2F 03 19 03 DF E0 B1 E1 B0 E2 6F + 09 E4 B3 E5 33 07 1E) + (3. 4. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 1. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|DEFINE-MAIN-KEY| + (|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |CLFSWM|::|DEFINE-MAIN-KEY-FUN| |COMMON-LISP|::|LIST| + |CLFSWM|::|MODIFIERS->STATE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|83 83 (DEFINE-DEFINE-KEY "main" *MAIN-KEYS*)-12-3| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 3E 19 01) + (|CLFSWM|::|UNDEFINE-MAIN-KEY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNDEFINE-MAIN-KEY| + #63Y(00 00 00 00 02 00 00 00 00 03 AE DA DA 2D 03 01 1D 1A 9F 5C 78 AC + DD 8B 01 17 AC 94 00 95 01 E5 E6 AF AF 6F 0D 7B 03 D3 5D 5D 19 07 + AE 2F 02 19 03 DE DF B1 E0 B0 E1 6F 08 E3 B3 E4 33 07 1E) + (2. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 1. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|UNDEFINE-MAIN-KEY| + (|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |COMMON-LISP|::|REMHASH| |COMMON-LISP|::|LIST| + |CLFSWM|::|MODIFIERS->STATE| (|CLFSWM|::|*MAIN-KEYS*|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|83 83 (DEFINE-DEFINE-KEY "main" *MAIN-KEYS*)-12-4| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|UNDEFINE-MAIN-MULTI-KEYS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNDEFINE-MAIN-MULTI-KEYS| + #50Y(00 00 00 00 02 00 00 00 00 03 AE 89 00 08 95 02 DC AD 01 02 1B 10 + AE 2F 01 19 03 87 02 01 DD AE 7B 02 84 00 83 02 AE 8D 94 71 AC 31 + A6 16 03 5D 19 04) + (|EXT|::|PROPER-LIST-P| |SYSTEM|::|MACRO-CALL-ERROR| + |COMMON-LISP|::|PROGN| |CLFSWM|::|UNDEFINE-MAIN-KEY|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|84 84 (DEFINE-DEFINE-KEY "second" *SECOND-KEYS*)-13-1| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 3E 19 01) + (|CLFSWM|::|DEFINE-SECOND-KEY-FUN| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-SECOND-KEY-FUN| + #25Y(00 00 00 00 02 00 01 00 06 09 3D 01 6B 00 AF AF 7B 02 B1 AE AE 31 + 66 19 06) + (|CLFSWM|::|*SECOND-KEYS*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|KEY| |COMMON-LISP|::|FUNCTION| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|KEYSTRING|) + "Define a new key, a key is '(char '(modifier list))")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|84 84 (DEFINE-DEFINE-KEY "second" *SECOND-KEYS*)-13-2| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 3E 19 01) + (|CLFSWM|::|DEFINE-SECOND-KEY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-SECOND-KEY| + #73Y(00 00 00 00 02 00 00 00 00 03 AE DA DB 2D 03 02 1D 24 9F 5C 78 AC + DE 8B 02 21 AC 94 00 95 01 A3 5C 5C 78 A4 5C 5C 5C 78 E6 E7 B1 B1 + 6F 0E 7B 03 AF AF 61 04 19 09 AE 2F 03 19 03 DF E0 B1 E1 B0 E2 6F + 09 E4 B3 E5 33 07 1E) + (3. 4. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 1. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|DEFINE-SECOND-KEY| + (|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |CLFSWM|::|DEFINE-SECOND-KEY-FUN| |COMMON-LISP|::|LIST| + |CLFSWM|::|MODIFIERS->STATE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|84 84 (DEFINE-DEFINE-KEY "second" *SECOND-KEYS*)-13-3| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 3E 19 01) + (|CLFSWM|::|UNDEFINE-SECOND-KEY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNDEFINE-SECOND-KEY| + #63Y(00 00 00 00 02 00 00 00 00 03 AE DA DA 2D 03 01 1D 1A 9F 5C 78 AC + DD 8B 01 17 AC 94 00 95 01 E5 E6 AF AF 6F 0D 7B 03 D3 5D 5D 19 07 + AE 2F 02 19 03 DE DF B1 E0 B0 E1 6F 08 E3 B3 E4 33 07 1E) + (2. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 1. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|UNDEFINE-SECOND-KEY| + (|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |COMMON-LISP|::|REMHASH| |COMMON-LISP|::|LIST| + |CLFSWM|::|MODIFIERS->STATE| (|CLFSWM|::|*SECOND-KEYS*|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|84 84 (DEFINE-DEFINE-KEY "second" *SECOND-KEYS*)-13-4| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|UNDEFINE-SECOND-MULTI-KEYS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNDEFINE-SECOND-MULTI-KEYS| + #50Y(00 00 00 00 02 00 00 00 00 03 AE 89 00 08 95 02 DC AD 01 02 1B 10 + AE 2F 01 19 03 87 02 01 DD AE 7B 02 84 00 83 02 AE 8D 94 71 AC 31 + A6 16 03 5D 19 04) + (|EXT|::|PROPER-LIST-P| |SYSTEM|::|MACRO-CALL-ERROR| + |COMMON-LISP|::|PROGN| |CLFSWM|::|UNDEFINE-SECOND-KEY|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|85 85 (DEFINE-DEFINE-KEY "pager" *PAGER-KEYS*)-14-1| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 3E 19 01) + (|CLFSWM|::|DEFINE-PAGER-KEY-FUN| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-PAGER-KEY-FUN| + #25Y(00 00 00 00 02 00 01 00 06 09 3D 01 6B 00 AF AF 7B 02 B1 AE AE 31 + 66 19 06) + (|CLFSWM|::|*PAGER-KEYS*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|KEY| |COMMON-LISP|::|FUNCTION| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|KEYSTRING|) + "Define a new key, a key is '(char '(modifier list))")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|85 85 (DEFINE-DEFINE-KEY "pager" *PAGER-KEYS*)-14-2| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 3E 19 01) + (|CLFSWM|::|DEFINE-PAGER-KEY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-PAGER-KEY| + #73Y(00 00 00 00 02 00 00 00 00 03 AE DA DB 2D 03 02 1D 24 9F 5C 78 AC + DE 8B 02 21 AC 94 00 95 01 A3 5C 5C 78 A4 5C 5C 5C 78 E6 E7 B1 B1 + 6F 0E 7B 03 AF AF 61 04 19 09 AE 2F 03 19 03 DF E0 B1 E1 B0 E2 6F + 09 E4 B3 E5 33 07 1E) + (3. 4. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 1. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|DEFINE-PAGER-KEY| + (|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |CLFSWM|::|DEFINE-PAGER-KEY-FUN| |COMMON-LISP|::|LIST| + |CLFSWM|::|MODIFIERS->STATE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|85 85 (DEFINE-DEFINE-KEY "pager" *PAGER-KEYS*)-14-3| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 3E 19 01) + (|CLFSWM|::|UNDEFINE-PAGER-KEY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNDEFINE-PAGER-KEY| + #63Y(00 00 00 00 02 00 00 00 00 03 AE DA DA 2D 03 01 1D 1A 9F 5C 78 AC + DD 8B 01 17 AC 94 00 95 01 E5 E6 AF AF 6F 0D 7B 03 D3 5D 5D 19 07 + AE 2F 02 19 03 DE DF B1 E0 B0 E1 6F 08 E3 B3 E4 33 07 1E) + (2. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 1. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|UNDEFINE-PAGER-KEY| + (|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |COMMON-LISP|::|REMHASH| |COMMON-LISP|::|LIST| + |CLFSWM|::|MODIFIERS->STATE| (|CLFSWM|::|*PAGER-KEYS*|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|85 85 (DEFINE-DEFINE-KEY "pager" *PAGER-KEYS*)-14-4| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|UNDEFINE-PAGER-MULTI-KEYS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNDEFINE-PAGER-MULTI-KEYS| + #50Y(00 00 00 00 02 00 00 00 00 03 AE 89 00 08 95 02 DC AD 01 02 1B 10 + AE 2F 01 19 03 87 02 01 DD AE 7B 02 84 00 83 02 AE 8D 94 71 AC 31 + A6 16 03 5D 19 04) + (|EXT|::|PROPER-LIST-P| |SYSTEM|::|MACRO-CALL-ERROR| + |COMMON-LISP|::|PROGN| |CLFSWM|::|UNDEFINE-PAGER-KEY|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|86 86 (DEFINE-DEFINE-KEY "info" *INFO-KEYS*)-15-1| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 3E 19 01) + (|CLFSWM|::|DEFINE-INFO-KEY-FUN| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-INFO-KEY-FUN| + #25Y(00 00 00 00 02 00 01 00 06 09 3D 01 6B 00 AF AF 7B 02 B1 AE AE 31 + 66 19 06) + (|CLFSWM|::|*INFO-KEYS*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|KEY| |COMMON-LISP|::|FUNCTION| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|KEYSTRING|) + "Define a new key, a key is '(char '(modifier list))")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|86 86 (DEFINE-DEFINE-KEY "info" *INFO-KEYS*)-15-2| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 3E 19 01) + (|CLFSWM|::|DEFINE-INFO-KEY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-INFO-KEY| + #73Y(00 00 00 00 02 00 00 00 00 03 AE DA DB 2D 03 02 1D 24 9F 5C 78 AC + DE 8B 02 21 AC 94 00 95 01 A3 5C 5C 78 A4 5C 5C 5C 78 E6 E7 B1 B1 + 6F 0E 7B 03 AF AF 61 04 19 09 AE 2F 03 19 03 DF E0 B1 E1 B0 E2 6F + 09 E4 B3 E5 33 07 1E) + (3. 4. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 1. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|DEFINE-INFO-KEY| + (|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |CLFSWM|::|DEFINE-INFO-KEY-FUN| |COMMON-LISP|::|LIST| + |CLFSWM|::|MODIFIERS->STATE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|86 86 (DEFINE-DEFINE-KEY "info" *INFO-KEYS*)-15-3| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 3E 19 01) + (|CLFSWM|::|UNDEFINE-INFO-KEY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNDEFINE-INFO-KEY| + #63Y(00 00 00 00 02 00 00 00 00 03 AE DA DA 2D 03 01 1D 1A 9F 5C 78 AC + DD 8B 01 17 AC 94 00 95 01 E5 E6 AF AF 6F 0D 7B 03 D3 5D 5D 19 07 + AE 2F 02 19 03 DE DF B1 E0 B0 E1 6F 08 E3 B3 E4 33 07 1E) + (2. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 1. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|UNDEFINE-INFO-KEY| + (|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |COMMON-LISP|::|REMHASH| |COMMON-LISP|::|LIST| + |CLFSWM|::|MODIFIERS->STATE| (|CLFSWM|::|*INFO-KEYS*|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|86 86 (DEFINE-DEFINE-KEY "info" *INFO-KEYS*)-15-4| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|UNDEFINE-INFO-MULTI-KEYS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNDEFINE-INFO-MULTI-KEYS| + #50Y(00 00 00 00 02 00 00 00 00 03 AE 89 00 08 95 02 DC AD 01 02 1B 10 + AE 2F 01 19 03 87 02 01 DD AE 7B 02 84 00 83 02 AE 8D 94 71 AC 31 + A6 16 03 5D 19 04) + (|EXT|::|PROPER-LIST-P| |SYSTEM|::|MACRO-CALL-ERROR| + |COMMON-LISP|::|PROGN| |CLFSWM|::|UNDEFINE-INFO-KEY|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|91 96 (DEFUN UNDEFINE-INFO-KEY-FUN (KEY) ...)-16| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|UNDEFINE-INFO-KEY-FUN| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNDEFINE-INFO-KEY-FUN| + #17Y(00 00 00 00 01 00 00 00 06 02 AD 6B 00 31 67 19 02) + (|CLFSWM|::|*INFO-KEYS*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|KEY|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|98 98 (DEFINE-DEFINE-MOUSE "mouse-action" *MOUSE-ACTION*)-17-1| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 3E 19 01) + (|CLFSWM|::|DEFINE-MOUSE-ACTION-FUN| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-MOUSE-ACTION-FUN| + #28Y(00 00 00 00 02 00 02 00 06 0E 3D 02 3D 01 6B 00 B0 B0 B0 7B 03 B2 + AE AE 31 66 19 07) + (|CLFSWM|::|*MOUSE-ACTION*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|BUTTON| |CLFSWM|::|FUNCTION-PRESS| + |COMMON-LISP|::|&OPTIONAL| |CLFSWM|::|KEYSTRING| + |CLFSWM|::|FUNCTION-RELEASE|) + "Define a new mouse button action, a button is '(button number '(modifier list))")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|98 98 (DEFINE-DEFINE-MOUSE "mouse-action" *MOUSE-ACTION*)-17-2| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 3E 19 01) + (|CLFSWM|::|DEFINE-MOUSE-ACTION| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-MOUSE-ACTION| + #77Y(00 00 00 00 02 00 00 00 00 03 AE DA DB 2D 03 02 1D 28 9F 5C 78 AC + DE 8B 02 25 AC 94 00 95 01 A3 5C 5C 78 A4 5C 5C 5C 78 B4 71 97 E6 + E7 B2 B2 6F 0E 7B 03 B0 AF B1 61 05 19 0A AE 2F 03 19 03 DF E0 B1 + E1 B0 E2 6F 09 E4 B3 E5 33 07 1E) + (3. 5. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 1. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|DEFINE-MOUSE-ACTION| + (|CLFSWM|::|BUTTON| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |CLFSWM|::|DEFINE-MOUSE-ACTION-FUN| |COMMON-LISP|::|LIST| + |CLFSWM|::|MODIFIERS->STATE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|98 98 (DEFINE-DEFINE-MOUSE "mouse-action" *MOUSE-ACTION*)-17-3| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|UNDEFINE-MOUSE-ACTION| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNDEFINE-MOUSE-ACTION| + #63Y(00 00 00 00 02 00 00 00 00 03 AE DA DA 2D 03 01 1D 1A 9F 5C 78 AC + DD 8B 01 17 AC 94 00 95 01 E5 E6 AF AF 6F 0D 7B 03 D3 5D 5D 19 07 + AE 2F 02 19 03 DE DF B1 E0 B0 E1 6F 08 E3 B3 E4 33 07 1E) + (2. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 1. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|UNDEFINE-MOUSE-ACTION| + (|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |COMMON-LISP|::|REMHASH| |COMMON-LISP|::|LIST| + |CLFSWM|::|MODIFIERS->STATE| (|CLFSWM|::|*MOUSE-ACTION*|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|99 99 (DEFINE-DEFINE-MOUSE "pager-mouse-action" *PAGER-MOUSE-ACTION*)-18-1| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 3E 19 01) + (|CLFSWM|::|DEFINE-PAGER-MOUSE-ACTION-FUN| + |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-PAGER-MOUSE-ACTION-FUN| + #28Y(00 00 00 00 02 00 02 00 06 0E 3D 02 3D 01 6B 00 B0 B0 B0 7B 03 B2 + AE AE 31 66 19 07) + (|CLFSWM|::|*PAGER-MOUSE-ACTION*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|BUTTON| |CLFSWM|::|FUNCTION-PRESS| + |COMMON-LISP|::|&OPTIONAL| |CLFSWM|::|KEYSTRING| + |CLFSWM|::|FUNCTION-RELEASE|) + "Define a new mouse button action, a button is '(button number '(modifier list))")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|99 99 (DEFINE-DEFINE-MOUSE "pager-mouse-action" *PAGER-MOUSE-ACTION*)-18-2| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 3E 19 01) + (|CLFSWM|::|DEFINE-PAGER-MOUSE-ACTION| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-PAGER-MOUSE-ACTION| + #77Y(00 00 00 00 02 00 00 00 00 03 AE DA DB 2D 03 02 1D 28 9F 5C 78 AC + DE 8B 02 25 AC 94 00 95 01 A3 5C 5C 78 A4 5C 5C 5C 78 B4 71 97 E6 + E7 B2 B2 6F 0E 7B 03 B0 AF B1 61 05 19 0A AE 2F 03 19 03 DF E0 B1 + E1 B0 E2 6F 09 E4 B3 E5 33 07 1E) + (3. 5. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 1. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|DEFINE-PAGER-MOUSE-ACTION| + (|CLFSWM|::|BUTTON| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |CLFSWM|::|DEFINE-PAGER-MOUSE-ACTION-FUN| |COMMON-LISP|::|LIST| + |CLFSWM|::|MODIFIERS->STATE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|99 99 (DEFINE-DEFINE-MOUSE "pager-mouse-action" *PAGER-MOUSE-ACTION*)-18-3| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|UNDEFINE-PAGER-MOUSE-ACTION| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNDEFINE-PAGER-MOUSE-ACTION| + #63Y(00 00 00 00 02 00 00 00 00 03 AE DA DA 2D 03 01 1D 1A 9F 5C 78 AC + DD 8B 01 17 AC 94 00 95 01 E5 E6 AF AF 6F 0D 7B 03 D3 5D 5D 19 07 + AE 2F 02 19 03 DE DF B1 E0 B0 E1 6F 08 E3 B3 E4 33 07 1E) + (2. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 1. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|UNDEFINE-PAGER-MOUSE-ACTION| + (|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |COMMON-LISP|::|REMHASH| |COMMON-LISP|::|LIST| + |CLFSWM|::|MODIFIERS->STATE| (|CLFSWM|::|*PAGER-MOUSE-ACTION*|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|100 100 (DEFINE-DEFINE-MOUSE "info-mouse-action" *INFO-MOUSE-ACTION*)-19-1| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 3E 19 01) + (|CLFSWM|::|DEFINE-INFO-MOUSE-ACTION-FUN| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-INFO-MOUSE-ACTION-FUN| + #28Y(00 00 00 00 02 00 02 00 06 0E 3D 02 3D 01 6B 00 B0 B0 B0 7B 03 B2 + AE AE 31 66 19 07) + (|CLFSWM|::|*INFO-MOUSE-ACTION*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|BUTTON| |CLFSWM|::|FUNCTION-PRESS| + |COMMON-LISP|::|&OPTIONAL| |CLFSWM|::|KEYSTRING| + |CLFSWM|::|FUNCTION-RELEASE|) + "Define a new mouse button action, a button is '(button number '(modifier list))")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|100 100 (DEFINE-DEFINE-MOUSE "info-mouse-action" *INFO-MOUSE-ACTION*)-19-2| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 3E 19 01) + (|CLFSWM|::|DEFINE-INFO-MOUSE-ACTION| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-INFO-MOUSE-ACTION| + #77Y(00 00 00 00 02 00 00 00 00 03 AE DA DB 2D 03 02 1D 28 9F 5C 78 AC + DE 8B 02 25 AC 94 00 95 01 A3 5C 5C 78 A4 5C 5C 5C 78 B4 71 97 E6 + E7 B2 B2 6F 0E 7B 03 B0 AF B1 61 05 19 0A AE 2F 03 19 03 DF E0 B1 + E1 B0 E2 6F 09 E4 B3 E5 33 07 1E) + (3. 5. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 1. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|DEFINE-INFO-MOUSE-ACTION| + (|CLFSWM|::|BUTTON| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |CLFSWM|::|DEFINE-INFO-MOUSE-ACTION-FUN| |COMMON-LISP|::|LIST| + |CLFSWM|::|MODIFIERS->STATE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|100 100 (DEFINE-DEFINE-MOUSE "info-mouse-action" *INFO-MOUSE-ACTION*)-19-3| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|UNDEFINE-INFO-MOUSE-ACTION| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNDEFINE-INFO-MOUSE-ACTION| + #63Y(00 00 00 00 02 00 00 00 00 03 AE DA DA 2D 03 01 1D 1A 9F 5C 78 AC + DD 8B 01 17 AC 94 00 95 01 E5 E6 AF AF 6F 0D 7B 03 D3 5D 5D 19 07 + AE 2F 02 19 03 DE DF B1 E0 B0 E1 6F 08 E3 B3 E4 33 07 1E) + (2. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 1. |EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |CLFSWM|::|UNDEFINE-INFO-MOUSE-ACTION| + (|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |COMMON-LISP|::|REMHASH| |COMMON-LISP|::|LIST| + |CLFSWM|::|MODIFIERS->STATE| (|CLFSWM|::|*INFO-MOUSE-ACTION*|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|106 125 (DEFMACRO DEFINE-UNGRAB/GRAB (NAME FUNCTION HASHTABLE) ...)-20| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|DEFINE-UNGRAB/GRAB| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DEFINE-UNGRAB/GRAB| + #77Y(00 00 00 00 02 00 00 00 00 03 AE DA DA 2D 03 01 1D 36 9F 5C 78 A0 + 5C 5C 78 A1 5C 5C 5C 78 DD AF 63 DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 + E9 BC D5 7A D6 5D 5D 7A 7B 03 D7 5D 7A D8 5D 5D 7A 7B 04 7B 02 B1 + 7B 03 61 04 19 06 AE 2F 02 19 03) + (4. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| |COMMON-LISP|::|DEFUN| + |COMMON-LISP|::|MAPHASH| |COMMON-LISP|::|FUNCTION| + |COMMON-LISP|::|LAMBDA| (|CLFSWM|::|K| |CLFSWM|::|V|) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |CLFSWM|::|V|)) + |COMMON-LISP|::|WHEN| (|COMMON-LISP|::|CONSP| |CLFSWM|::|K|) + |COMMON-LISP|::|HANDLER-CASE| |COMMON-LISP|::|LET*| + ((|CLFSWM|::|KEY| (|COMMON-LISP|::|FIRST| |CLFSWM|::|K|)) + (|CLFSWM|::|KEYCODE| + (|COMMON-LISP|::|TYPECASE| |CLFSWM|::|KEY| + (|COMMON-LISP|::|CHARACTER| + (|CLFSWM|::|CHAR->KEYCODE| |CLFSWM|::|KEY|)) + (|COMMON-LISP|::|NUMBER| |CLFSWM|::|KEY|) + (|COMMON-LISP|::|STRING| + (|COMMON-LISP|::|LET| + ((|CLFSWM|::|KEYSYM| + (|CLFSWM|::|KEYSYM-NAME->KEYSYM| |CLFSWM|::|KEY|))) + (|COMMON-LISP|::|AND| |CLFSWM|::|KEYSYM| + (|XLIB|::|KEYSYM->KEYCODES| |CLFSWM|::|*DISPLAY*| + |CLFSWM|::|KEYSYM|))))))) + |COMMON-LISP|::|IF| |CLFSWM|::|KEYCODE| + (|CLFSWM|::|*ROOT*| |CLFSWM|::|KEYCODE| :|MODIFIERS| + (|COMMON-LISP|::|SECOND| |CLFSWM|::|K|)) + ((|COMMON-LISP|::|FORMAT| |COMMON-LISP|::|T| + "~&Grabbing error: Can't find key '~A'~%" |CLFSWM|::|KEY|)) + ((|COMMON-LISP|::|ERROR| (|CLFSWM|::|C|) + (|COMMON-LISP|::|FORMAT| |COMMON-LISP|::|T| + "~&Grabbing error: Can't grab key '~A' (~A)~%" |CLFSWM|::|K| + |CLFSWM|::|C|))) + ((|COMMON-LISP|::|FORCE-OUTPUT|))) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|127 127 (DEFINE-UNGRAB/GRAB GRAB-MAIN-KEYS XLIB:GRAB-KEY ...)-21| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GRAB-MAIN-KEYS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GRAB-MAIN-KEYS| + #17Y(00 00 00 00 00 00 00 00 06 01 DA 6B 01 31 68 19 01) + (#Y(|CLFSWM|::|GRAB-MAIN-KEYS-1| + #92Y(02 00 01 00 02 00 00 00 06 03 00 2B 01 7F 03 00 00 14 32 06 1F + 80 43 9D 2B 01 00 0B 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 + 57 03 B0 36 00 16 06 1B 1E 58 67 00 00 01 76 00 AD 36 01 18 02 + 01 19 02 68 04 00 DE 6B 05 68 08 00 AF 33 03 15 16 01 4D 16 01 + 38 01 31 90 19 04 19 04) + (#(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|GRAB-MAIN-KEYS-1-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|GRAB-MAIN-KEYS-1-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + () |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|GRAB-MAIN-KEYS-1-2| + #81Y(00 00 00 00 00 00 00 00 06 01 07 01 01 78 AC 8E 1E 16 AC 8E + 0A 17 AC 8E 09 1F 00 14 92 00 24 E2 6B 09 AF 33 02 15 19 03 + AC 2F 01 1B 6E 9D 1B 6B 6B 03 AD 30 04 16 01 1B 62 AC 6F 02 + 92 00 71 16 01 1B 58 6B 05 AD E0 07 01 01 5C 78 2D 04 07 19 + 03) + (|COMMON-LISP|::|NIL| |CLFSWM|::|CHAR->KEYCODE| + |CLFSWM|::|KEYSYM-NAME->KEYSYM| |CLFSWM|::|*DISPLAY*| + |XLIB|::|KEYSYM->KEYCODES| |CLFSWM|::|*ROOT*| :|MODIFIERS| + |XLIB|::|GRAB-KEY| + #Y(|CLFSWM|::|GRAB-MAIN-KEYS-1-2-1| + #32Y(00 00 00 00 02 00 00 00 01 18 AF 31 8E DA B0 38 02 31 + 8B AE B0 31 86 DB B0 38 02 31 8B 9E 19 04) + ("Grabbing error: Can't find key '" + "' +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|*STANDARD-OUTPUT*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#(|COMMON-LISP|::|ERROR| 41.) 1. . 1.) + #Y(|CLFSWM|::|GRAB-MAIN-KEYS-1-3| + #42Y(00 00 00 00 03 00 00 00 01 19 B0 31 8E DA B1 38 02 31 8B AF + B1 31 86 DB B1 38 02 31 8B AE B1 31 86 DC B1 38 02 31 8B 9E + 19 05) + ("Grabbing error: Can't grab key '" "' (" + ") +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|*STANDARD-OUTPUT*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|K| |CLFSWM|::|V|) |COMMON-LISP|::|NIL|) + |CLFSWM|::|*MAIN-KEYS*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|128 128 (DEFINE-UNGRAB/GRAB UNGRAB-MAIN-KEYS XLIB:UNGRAB-KEY ...)-22| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|UNGRAB-MAIN-KEYS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNGRAB-MAIN-KEYS| + #17Y(00 00 00 00 00 00 00 00 06 01 DA 6B 01 31 68 19 01) + (#Y(|CLFSWM|::|UNGRAB-MAIN-KEYS-1| + #92Y(02 00 01 00 02 00 00 00 06 03 00 2B 01 7F 03 00 00 14 32 06 1F + 80 43 9D 2B 01 00 0B 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 + 57 03 B0 36 00 16 06 1B 1E 58 67 00 00 01 76 00 AD 36 01 18 02 + 01 19 02 68 04 00 DE 6B 05 68 08 00 AF 33 03 15 16 01 4D 16 01 + 38 01 31 90 19 04 19 04) + (#(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|UNGRAB-MAIN-KEYS-1-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|UNGRAB-MAIN-KEYS-1-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + () |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|UNGRAB-MAIN-KEYS-1-2| + #81Y(00 00 00 00 00 00 00 00 06 01 07 01 01 78 AC 8E 1E 16 AC 8E + 0A 17 AC 8E 09 1F 00 14 92 00 24 E2 6B 09 AF 33 02 15 19 03 + AC 2F 01 1B 6E 9D 1B 6B 6B 03 AD 30 04 16 01 1B 62 AC 6F 02 + 92 00 71 16 01 1B 58 6B 05 AD E0 07 01 01 5C 78 2D 04 07 19 + 03) + (|COMMON-LISP|::|NIL| |CLFSWM|::|CHAR->KEYCODE| + |CLFSWM|::|KEYSYM-NAME->KEYSYM| |CLFSWM|::|*DISPLAY*| + |XLIB|::|KEYSYM->KEYCODES| |CLFSWM|::|*ROOT*| :|MODIFIERS| + |XLIB|::|UNGRAB-KEY| + #Y(|CLFSWM|::|UNGRAB-MAIN-KEYS-1-2-1| + #32Y(00 00 00 00 02 00 00 00 01 18 AF 31 8E DA B0 38 02 31 + 8B AE B0 31 86 DB B0 38 02 31 8B 9E 19 04) + ("Grabbing error: Can't find key '" + "' +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|*STANDARD-OUTPUT*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#(|COMMON-LISP|::|ERROR| 41.) 1. . 1.) + #Y(|CLFSWM|::|UNGRAB-MAIN-KEYS-1-3| + #42Y(00 00 00 00 03 00 00 00 01 19 B0 31 8E DA B1 38 02 31 8B AF + B1 31 86 DB B1 38 02 31 8B AE B1 31 86 DC B1 38 02 31 8B 9E + 19 05) + ("Grabbing error: Can't grab key '" "' (" + ") +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|*STANDARD-OUTPUT*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|K| |CLFSWM|::|V|) |COMMON-LISP|::|NIL|) + |CLFSWM|::|*MAIN-KEYS*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|143 162 (DEFUN FUNCALL-KEY-FROM-CODE (HASH-TABLE-KEY CODE STATE ...) ...)-23| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FUNCALL-KEY-FROM-CODE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FUNCALL-KEY-FROM-CODE| + #69Y(00 00 00 00 03 00 01 00 06 0A 00 2B 04 7F 05 00 00 7F 04 00 01 7F + 03 00 02 3B 02 01 00 0B 00 03 9D 2B 01 AC 2C 00 01 0B 00 00 AC 6D + 01 01 AD 6D 02 01 AE 6D 03 01 9F 34 1E 09 9E 34 1E 05 9D 34 3F 19 + 0A 19 0A) + (#Y(|CLFSWM|::|FUNCALL-KEY-FROM-CODE-FUNCALL-FROM| + #55Y(00 00 00 00 01 00 00 00 06 02 AD 69 01 03 7B 02 69 01 01 38 01 + 31 65 42 02 9D 1F 19 9E 5B 1F 15 07 01 04 1C 07 94 01 36 00 02 + 19 04 94 01 69 01 04 36 01 1B 74 19 04) + (|COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|KEY|) |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|FUNCALL-KEY-FROM-CODE-FROM-CODE| + #19Y(00 00 00 00 00 00 00 00 06 01 69 01 02 07 00 01 34 19 01) + (|COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|FUNCALL-KEY-FROM-CODE-FROM-CHAR| + #25Y(00 00 00 00 00 00 00 00 06 01 69 01 02 69 01 03 70 01 AC 07 00 + 01 34 19 02) + (|COMMON-LISP|::|NIL| |CLFSWM|::|KEYCODE->CHAR|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|FUNCALL-KEY-FROM-CODE-FROM-STRING| + #28Y(00 00 00 00 00 00 00 00 06 01 6B 01 69 01 02 DC 6E 03 03 6F 04 + AC 07 00 01 34 19 02) + (|COMMON-LISP|::|NIL| |CLFSWM|::|*DISPLAY*| 0. + |XLIB|::|KEYCODE->KEYSYM| |CLFSWM|::|KEYSYM->KEYSYM-NAME|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|HASH-TABLE-KEY| |CLFSWM|::|CODE| |CLFSWM|::|STATE| + |COMMON-LISP|::|&OPTIONAL| |CLFSWM|::|ARGS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|166 177 (DEFUN FUNCALL-BUTTON-FROM-CODE (HASH-TABLE-KEY CODE STATE ...) ...)-24| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FUNCALL-BUTTON-FROM-CODE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FUNCALL-BUTTON-FROM-CODE| + #72Y(00 00 00 00 05 00 02 00 06 00 3B 02 02 C5 FA 3D 01 B1 6F 01 DC 70 + 03 6F 04 B3 AD 7B 02 B5 38 01 31 65 42 02 93 00 06 B1 AE 36 01 1C + 0E 02 19 0B B1 AE 76 01 B4 B4 B3 36 03 19 0B 92 04 72 B1 AE 76 01 + B4 B4 36 02 19 0B) + (#.#'|COMMON-LISP|::|FIRST| |CLFSWM|::|STATE->MODIFIERS| + (:|BUTTON-1| :|BUTTON-2| :|BUTTON-3| :|BUTTON-4| :|BUTTON-5|) + |COMMON-LISP|::|SET-DIFFERENCE| |CLFSWM|::|MODIFIERS->STATE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|HASH-TABLE-KEY| |CLFSWM|::|CODE| |CLFSWM|::|STATE| + |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |COMMON-LISP|::|&OPTIONAL| + (|CLFSWM|::|ACTION| #'|COMMON-LISP|::|FIRST|) |CLFSWM|::|ARGS|) + "Action: first=press third=release")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|182 228 (DEFUN PRODUCE-DOC-HTML (HASH-TABLE-KEY-LIST &OPTIONAL #) ...)-25| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|PRODUCE-DOC-HTML| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|PRODUCE-DOC-HTML| + #76Y(00 00 00 00 01 00 01 00 06 08 3B 01 02 7E 01 63 6D 00 01 DB DC DD + DE DF 63 B5 63 1B 18 87 01 00 E0 E1 E2 AF 38 01 71 65 7B 02 7B 02 + 84 02 AC A6 74 84 02 83 01 AD 8D 94 64 16 02 AC 32 4A 16 01 5D 5D + 7A 7B 03 E3 B0 2D 03 0A 19 04) + (#Y(|CLFSWM|::|PRODUCE-DOC-HTML-PRODUCE-KEYS| + #37Y(00 00 00 00 01 00 00 00 06 02 DB DC 2A 2B 01 00 0B 00 00 AC 6D + 03 01 B1 31 68 68 00 00 32 4A 16 01 5D 5D 19 02) + (|COMMON-LISP|::|NIL| + "table class=\"ex\" cellspacing=\"5\" border=\"0\" width=\"100%\"" + (|CLFSWM|::|TR| ("th align=\"right\" width=\"10%\"" "Modifiers") + ("th align=\"center\" width=\"10%\"" "Key/Button") + ("th align=\"left\"" "Function")) + #Y(|CLFSWM|::|PRODUCE-DOC-HTML-PRODUCE-KEYS-1| + #180Y(00 00 00 00 02 00 00 00 06 03 AE 32 06 1F 80 A2 DB DC 38 + 02 72 76 A2 5C 78 6F 03 AC 1B 27 38 01 AF 71 92 72 76 AC + 2F 04 10 05 94 04 83 05 B0 31 83 11 AC 2F 06 E1 AD 31 8A + AC 72 77 6F 08 B0 38 02 31 8B 16 01 AC 8D 94 55 16 02 AC + 81 77 00 CE 74 7B 02 E4 38 02 72 76 A2 5C 5B 1C 12 94 06 + 8F 09 0B 94 06 38 02 71 46 38 01 8C D6 02 A3 5B 14 38 01 + AE 71 92 72 76 AC 2F 04 10 05 B0 B0 31 83 11 AC 2F 06 AC + 72 77 6F 08 AF 38 02 31 8B 16 02 AC 81 77 00 CE 74 7B 02 + E5 A2 5B 1C 04 A2 5C 5C 5B 14 E6 70 0D 7B 02 7B 04 07 00 + 01 5D 0C 00 01 19 03 19 03) + (|COMMON-LISP|::|NIL| |CLFSWM|::|TR| + "td align=\"right\" style=\"color:#FF0000\" nowrap" + |CLFSWM|::|STATE->MODIFIERS| + |SYSTEM|::|STREAM-START-S-EXPRESSION| + |COMMON-LISP|::|*PRINT-RIGHT-MARGIN*| + |SYSTEM|::|STREAM-END-S-EXPRESSION| #\ + |SYSTEM|::|NSTRING-CAPITALIZE1| + #Y(|CLFSWM|::|PRODUCE-DOC-HTML-CLEAN-STRING| + #61Y(00 00 00 00 01 00 00 00 06 02 AD DA 38 04 8C 3B 23 AD + DC 38 04 8C 3B 1F AD DE 38 04 8C 3B 1B E0 E1 E0 E2 E0 + E3 B3 38 07 72 57 38 07 72 57 38 07 32 57 19 02 C6 19 + 02 C8 19 02 CA 19 02) + ("#\\:" ":" "#\\#" "#" "#\\\\" "\\" #\ #\# #\\ #\:) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|STR|) |COMMON-LISP|::|NIL|) + "td align=\"center\" nowrap" + "td style=\"color:#0000FF\" nowrap" |COMMON-LISP|::|FUNCTION| + |CLOS|::|DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|K| |CLFSWM|::|V|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|HK|) |COMMON-LISP|::|NIL|) + |CLFSWM|::|HTML| (|CLFSWM|::|HEAD| (|CLFSWM|::|TITLE| "CLFSWM Keys")) + |CLFSWM|::|BODY| (|CLFSWM|::|H1| "CLFSWM Keys") + (|CLFSWM|::|P| + (|CLFSWM|::|SMALL| "Note: Mod-1 is the Meta or Alt key")) + |CLFSWM|::|H3| |CLFSWM|::|U| |CLFSWM|::|NAME| 0. + |MY-HTML|::|PRODUCE-HTML|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|HASH-TABLE-KEY-LIST| |COMMON-LISP|::|&OPTIONAL| + (|COMMON-LISP|::|STREAM| |COMMON-LISP|::|T|)) + "Produce an html doc from a hash-table key")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|231 236 (DEFUN PRODUCE-DOC-HTML-IN-FILE (FILENAME) ...)-26| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|PRODUCE-DOC-HTML-IN-FILE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|PRODUCE-DOC-HTML-IN-FILE| + #78Y(03 00 01 00 01 00 00 00 06 02 AD DA 38 05 C6 FB C7 FA 71 FB 53 29 + C8 45 6B 04 6B 05 6B 06 6B 07 6B 08 6B 09 6B 0A 7B 07 B0 30 0B 41 + 05 00 00 02 1D 03 14 2F 0C 46 54 05 00 00 00 1D 0E 1B 06 05 00 00 + 00 1D 06 14 E7 64 2D 03 0C 55 19 03) + (:|OUTPUT| :|SUPERSEDE| :|CREATE| #.#'|COMMON-LISP|::|VALUES| + |CLFSWM|::|*MAIN-KEYS*| |CLFSWM|::|*SECOND-KEYS*| + |CLFSWM|::|*MOUSE-ACTION*| |CLFSWM|::|*PAGER-KEYS*| + |CLFSWM|::|*PAGER-MOUSE-ACTION*| |CLFSWM|::|*INFO-KEYS*| + |CLFSWM|::|*INFO-MOUSE-ACTION*| |CLFSWM|::|PRODUCE-DOC-HTML| + |COMMON-LISP|::|CLOSE| :|ABORT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|FILENAME|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|240 260 (DEFUN PRODUCE-DOC (HASH-TABLE-KEY-LIST &OPTIONAL #) ...)-27| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|PRODUCE-DOC| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|PRODUCE-DOC| + #113Y(00 00 00 00 01 00 01 00 06 08 00 2B 01 3B 02 01 02 0B 00 00 14 DA + 30 01 68 00 00 DC 30 01 68 00 00 DD 30 01 AF 63 1B 80 40 87 01 00 + 68 02 00 DE DF AF 38 01 71 65 2D 03 01 E0 DF AE 38 01 71 65 72 48 + 1B 08 68 04 00 E1 30 01 85 01 AD AD 91 01 32 72 16 02 68 02 00 E2 + 30 01 AE 6D 09 01 AD 31 68 68 02 00 E4 30 01 83 01 AD 8D 94 FF BB + 00 19 06) + (#Y(|CLFSWM|::|PRODUCE-DOC-1| + #19Y(00 00 00 00 01 00 00 00 01 17 DA AF 38 02 31 8B 9E 19 03) + (" * CLFSWM Keys * +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|FORMAT| + #Y(|CLFSWM|::|PRODUCE-DOC-2| + #19Y(00 00 00 00 01 00 00 00 01 17 DA AF 38 02 31 8B 9E 19 03) + (" ----------- +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + #Y(|CLFSWM|::|PRODUCE-DOC-3| + #19Y(00 00 00 00 01 00 00 00 01 17 DA AF 38 02 31 8B 9E 19 03) + (" +Note: Mod-1 is the Meta or Alt key +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + #Y(|CLFSWM|::|PRODUCE-DOC-4| + #30Y(00 00 00 00 02 00 00 00 01 18 AF 01 02 DA 2D 04 01 AE B0 31 86 + DC B0 38 02 31 8B 9E 19 04) + (2. |SYSTEM|::|FORMAT-FRESH-LINE| + ": +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |CLFSWM|::|NAME| 0. + #Y(|CLFSWM|::|PRODUCE-DOC-5| + #17Y(00 00 00 00 01 00 00 00 01 17 DA AF 31 8A 9E 19 03) (#\-) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + #Y(|CLFSWM|::|PRODUCE-DOC-6| + #20Y(00 00 00 00 01 00 00 00 01 17 AE 01 02 DA 2D 04 01 9E 19 03) + (2. |SYSTEM|::|FORMAT-TERPRI|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + #Y(|CLFSWM|::|PRODUCE-DOC-7| + #101Y(00 00 00 00 02 00 00 00 06 03 AE 32 06 1F 80 53 69 00 01 DB A1 + 5C 78 6F 02 DD DE 38 02 72 76 A4 5C 5B 1C 12 94 08 8F 09 0B 94 + 08 38 02 71 46 38 01 8C D6 02 A5 5B 14 AD 2F 05 10 06 AF B1 31 + 83 11 AD 2F 07 16 01 AC 81 77 00 38 07 72 4F 38 07 72 4F A2 5B + 1C 04 A2 5C 5C 5B 14 E2 70 09 2D 05 0A 19 03 19 03) + (|COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|PRODUCE-DOC-7-1| + #149Y(00 00 00 00 04 00 00 00 01 1A B1 31 8E B1 71 92 38 01 AD + 72 76 B3 63 64 DA 01 03 B4 01 04 BE 1B 1E 38 01 BA 71 92 + 72 76 94 01 83 02 AD 31 86 AC 72 77 6F 01 BB 38 02 31 8B + 16 01 DC BA 31 8A AC 8D 94 5E 16 01 B8 72 77 7B 01 2D 0D + 03 16 02 DC B2 31 8A B1 71 92 38 01 AD 72 76 B3 63 64 DE + 01 03 B4 01 04 38 01 B9 71 92 72 76 BE AD 31 86 AC 72 77 + 6F 01 BA 38 02 31 8B 16 01 B8 72 77 7B 01 2D 0D 03 16 02 + DF B2 38 02 31 8B AE B2 31 86 B1 31 8D 9E 19 06) + (20. |SYSTEM|::|NSTRING-CAPITALIZE1| #\ + |SYSTEM|::|DO-FORMAT-JUSTIFICATION| 13. " ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |CLFSWM|::|STATE->MODIFIERS| #\# #\\ + |SYSTEM|::|STREAM-START-S-EXPRESSION| + |COMMON-LISP|::|*PRINT-RIGHT-MARGIN*| + |SYSTEM|::|STREAM-END-S-EXPRESSION| |COMMON-LISP|::|FUNCTION| + |CLOS|::|DOCUMENTATION| |COMMON-LISP|::|FORMAT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|K| |CLFSWM|::|V|) |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|PRODUCE-DOC-8| + #20Y(00 00 00 00 01 00 00 00 01 17 AE 01 02 DA 2D 04 01 9E 19 03) + (2. |SYSTEM|::|FORMAT-FRESH-LINE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|))) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|HASH-TABLE-KEY-LIST| |COMMON-LISP|::|&OPTIONAL| + (|COMMON-LISP|::|STREAM| |COMMON-LISP|::|T|)) + "Produce a text doc from a hash-table key")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|264 269 (DEFUN PRODUCE-DOC-IN-FILE (FILENAME) ...)-28| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|PRODUCE-DOC-IN-FILE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|PRODUCE-DOC-IN-FILE| + #78Y(03 00 01 00 01 00 00 00 06 02 AD DA 38 05 C6 FB C7 FA 71 FB 53 29 + C8 45 6B 04 6B 05 6B 06 6B 07 6B 08 6B 09 6B 0A 7B 07 B0 30 0B 41 + 05 00 00 02 1D 03 14 2F 0C 46 54 05 00 00 00 1D 0E 1B 06 05 00 00 + 00 1D 06 14 E7 64 2D 03 0C 55 19 03) + (:|OUTPUT| :|SUPERSEDE| :|CREATE| #.#'|COMMON-LISP|::|VALUES| + |CLFSWM|::|*MAIN-KEYS*| |CLFSWM|::|*SECOND-KEYS*| + |CLFSWM|::|*MOUSE-ACTION*| |CLFSWM|::|*PAGER-KEYS*| + |CLFSWM|::|*PAGER-MOUSE-ACTION*| |CLFSWM|::|*INFO-KEYS*| + |CLFSWM|::|*INFO-MOUSE-ACTION*| |CLFSWM|::|PRODUCE-DOC| + |COMMON-LISP|::|CLOSE| :|ABORT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|FILENAME|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|272 275 (DEFUN PRODUCE-ALL-DOCS NIL ...)-29| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|PRODUCE-ALL-DOCS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|PRODUCE-ALL-DOCS| + #18Y(00 00 00 00 00 00 00 00 06 01 DA 2F 01 DC 2F 03 19 01) + ("keys.txt" |CLFSWM|::|PRODUCE-DOC-IN-FILE| "keys.html" + |CLFSWM|::|PRODUCE-DOC-HTML-IN-FILE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Produce all docs in keys.html and keys.txt")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: clfswm-keys.fasl ============================================================================== Binary file. No diff available. Added: clfswm-keys.lib ============================================================================== --- (empty file) +++ clfswm-keys.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,752 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CLFSWM")) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DEFINE-HASH-TABLE-KEY-NAME| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|HASH-TABLE| |CLFSWM|::|NAME|))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|DEFINE-DEFINE-KEY|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|DEFINE-DEFINE-KEY| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|DEFINE-DEFINE-KEY| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 3. + 3.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((|CLFSWM|::|NAME| + (|COMMON-LISP|::|CADR| . #1=(|SYSTEM|::||))) + (|CLFSWM|::|HASHTABLE| (|COMMON-LISP|::|CADDR| . #1#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|DEFINE-DEFINE-KEY| + (|COMMON-LISP|::|LET| + ((|CLFSWM|::|NAME-KEY-FUN| + (|TOOLS|::|CREATE-SYMBOL| "define-" |CLFSWM|::|NAME| "-key-fun")) + (|CLFSWM|::|NAME-KEY| + (|TOOLS|::|CREATE-SYMBOL| "define-" |CLFSWM|::|NAME| "-key")) + (|CLFSWM|::|UNDEFINE-NAME| + (|TOOLS|::|CREATE-SYMBOL| "undefine-" |CLFSWM|::|NAME| "-key")) + (|CLFSWM|::|UNDEFINE-MULTI-NAME| + (|TOOLS|::|CREATE-SYMBOL| "undefine-" |CLFSWM|::|NAME| + "-multi-keys"))) + `(|COMMON-LISP|::|PROGN| + (|COMMON-LISP|::|DEFUN| ,|CLFSWM|::|NAME-KEY-FUN| + (|CLFSWM|::|KEY| |COMMON-LISP|::|FUNCTION| + |COMMON-LISP|::|&OPTIONAL| |CLFSWM|::|KEYSTRING|) + "Define a new key, a key is '(char '(modifier list))" + (|COMMON-LISP|::|SETF| + (|COMMON-LISP|::|GETHASH| |CLFSWM|::|KEY| ,|CLFSWM|::|HASHTABLE|) + (|COMMON-LISP|::|LIST| |COMMON-LISP|::|FUNCTION| + |CLFSWM|::|KEYSTRING|))) + (|COMMON-LISP|::|DEFMACRO| ,|CLFSWM|::|NAME-KEY| + ((|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |COMMON-LISP|::|FUNCTION| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|KEYSTRING|) + `(,',|CLFSWM|::|NAME-KEY-FUN| + (|COMMON-LISP|::|LIST| ,|CLFSWM|::|KEY| + ,(|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + ,|COMMON-LISP|::|FUNCTION| ,|CLFSWM|::|KEYSTRING|)) + (|COMMON-LISP|::|DEFMACRO| ,|CLFSWM|::|UNDEFINE-NAME| + ((|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + `(|COMMON-LISP|::|REMHASH| + (|COMMON-LISP|::|LIST| ,|CLFSWM|::|KEY| + ,(|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + ,',|CLFSWM|::|HASHTABLE|)) + (|COMMON-LISP|::|DEFMACRO| ,|CLFSWM|::|UNDEFINE-MULTI-NAME| + (|COMMON-LISP|::|&REST| |CLFSWM|::|KEYS|) + `(|COMMON-LISP|::|PROGN| + ,@(|COMMON-LISP|::|LOOP| |CLFSWM|::|FOR| |CLFSWM|::|K| + |CLFSWM|::|IN| |CLFSWM|::|KEYS| |CLFSWM|::|COLLECT| + `(,',|CLFSWM|::|UNDEFINE-NAME| ,|CLFSWM|::|K|))))))))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|DEFINE-DEFINE-MOUSE|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|DEFINE-DEFINE-MOUSE| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|DEFINE-DEFINE-MOUSE| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 3. + 3.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((|CLFSWM|::|NAME| + (|COMMON-LISP|::|CADR| . #1=(|SYSTEM|::||))) + (|CLFSWM|::|HASHTABLE| (|COMMON-LISP|::|CADDR| . #1#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|DEFINE-DEFINE-MOUSE| + (|COMMON-LISP|::|LET| + ((|CLFSWM|::|NAME-MOUSE-FUN| + (|TOOLS|::|CREATE-SYMBOL| "define-" |CLFSWM|::|NAME| "-fun")) + (|CLFSWM|::|NAME-MOUSE| + (|TOOLS|::|CREATE-SYMBOL| "define-" |CLFSWM|::|NAME|)) + (|CLFSWM|::|UNDEFINE-NAME| + (|TOOLS|::|CREATE-SYMBOL| "undefine-" |CLFSWM|::|NAME|))) + `(|COMMON-LISP|::|PROGN| + (|COMMON-LISP|::|DEFUN| ,|CLFSWM|::|NAME-MOUSE-FUN| + (|CLFSWM|::|BUTTON| |CLFSWM|::|FUNCTION-PRESS| + |COMMON-LISP|::|&OPTIONAL| |CLFSWM|::|KEYSTRING| + |CLFSWM|::|FUNCTION-RELEASE|) + "Define a new mouse button action, a button is '(button number '(modifier list))" + (|COMMON-LISP|::|SETF| + (|COMMON-LISP|::|GETHASH| |CLFSWM|::|BUTTON| + ,|CLFSWM|::|HASHTABLE|) + (|COMMON-LISP|::|LIST| |CLFSWM|::|FUNCTION-PRESS| + |CLFSWM|::|KEYSTRING| |CLFSWM|::|FUNCTION-RELEASE|))) + (|COMMON-LISP|::|DEFMACRO| ,|CLFSWM|::|NAME-MOUSE| + ((|CLFSWM|::|BUTTON| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|) + |CLFSWM|::|FUNCTION-PRESS| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|FUNCTION-RELEASE| |CLFSWM|::|KEYSTRING|) + `(,',|CLFSWM|::|NAME-MOUSE-FUN| + (|COMMON-LISP|::|LIST| ,|CLFSWM|::|BUTTON| + ,(|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + ,|CLFSWM|::|FUNCTION-PRESS| ,|CLFSWM|::|KEYSTRING| + ,|CLFSWM|::|FUNCTION-RELEASE|)) + (|COMMON-LISP|::|DEFMACRO| ,|CLFSWM|::|UNDEFINE-NAME| + ((|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + `(|COMMON-LISP|::|REMHASH| + (|COMMON-LISP|::|LIST| ,|CLFSWM|::|KEY| + ,(|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + ,',|CLFSWM|::|HASHTABLE|))))))))))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DEFINE-MAIN-KEY-FUN| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|KEY| |COMMON-LISP|::|FUNCTION| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|KEYSTRING|))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|DEFINE-MAIN-KEY|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|DEFINE-MAIN-KEY| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|DEFINE-MAIN-KEY| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 3. + 4.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46621| (|COMMON-LISP|::|CADR| . #2=(|SYSTEM|::||))) + (#3=#:|G46622| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|DEFINE-MAIN-KEY| #1# + '(|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + #1#)) + (|CLFSWM|::|KEY| (|COMMON-LISP|::|CAR| #3#)) + (|CLFSWM|::|MODIFIERS| (|COMMON-LISP|::|CDR| #3#)) + #'(|COMMON-LISP|::|CADDR| . #2#) + (|CLFSWM|::|KEYSTRING| (|COMMON-LISP|::|CADDDR| . #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|DEFINE-MAIN-KEY| + (|COMMON-LISP|::|LIST| '|CLFSWM|::|DEFINE-MAIN-KEY-FUN| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|KEY| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + |COMMON-LISP|::|FUNCTION| |CLFSWM|::|KEYSTRING|)))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|UNDEFINE-MAIN-KEY|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|UNDEFINE-MAIN-KEY| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|UNDEFINE-MAIN-KEY| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 2. + 2.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46635| (|COMMON-LISP|::|CADR| |SYSTEM|::||)) + (#2=#:|G46636| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|UNDEFINE-MAIN-KEY| #1# + '(|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + #1#)) + (|CLFSWM|::|KEY| (|COMMON-LISP|::|CAR| #2#)) + (|CLFSWM|::|MODIFIERS| (|COMMON-LISP|::|CDR| #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|UNDEFINE-MAIN-KEY| + (|COMMON-LISP|::|CONS| '|COMMON-LISP|::|REMHASH| + (|COMMON-LISP|::|CONS| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|KEY| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + '(|CLFSWM|::|*MAIN-KEYS*|)))))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|UNDEFINE-MAIN-MULTI-KEYS|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|UNDEFINE-MAIN-MULTI-KEYS| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|UNDEFINE-MAIN-MULTI-KEYS| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| (|EXT|::|PROPER-LIST-P| |SYSTEM|::||)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((|CLFSWM|::|KEYS| (|COMMON-LISP|::|CDR| |SYSTEM|::||))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|UNDEFINE-MAIN-MULTI-KEYS| + (|COMMON-LISP|::|CONS| '|COMMON-LISP|::|PROGN| + (|COMMON-LISP|::|LOOP| |CLFSWM|::|FOR| |CLFSWM|::|K| |CLFSWM|::|IN| + |CLFSWM|::|KEYS| |CLFSWM|::|COLLECT| + (|COMMON-LISP|::|LIST| '|CLFSWM|::|UNDEFINE-MAIN-KEY| + |CLFSWM|::|K|)))))))))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DEFINE-SECOND-KEY-FUN| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|KEY| |COMMON-LISP|::|FUNCTION| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|KEYSTRING|))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|DEFINE-SECOND-KEY|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|DEFINE-SECOND-KEY| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|DEFINE-SECOND-KEY| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 3. + 4.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46680| (|COMMON-LISP|::|CADR| . #2=(|SYSTEM|::||))) + (#3=#:|G46681| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|DEFINE-SECOND-KEY| #1# + '(|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + #1#)) + (|CLFSWM|::|KEY| (|COMMON-LISP|::|CAR| #3#)) + (|CLFSWM|::|MODIFIERS| (|COMMON-LISP|::|CDR| #3#)) + #'(|COMMON-LISP|::|CADDR| . #2#) + (|CLFSWM|::|KEYSTRING| (|COMMON-LISP|::|CADDDR| . #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|DEFINE-SECOND-KEY| + (|COMMON-LISP|::|LIST| '|CLFSWM|::|DEFINE-SECOND-KEY-FUN| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|KEY| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + |COMMON-LISP|::|FUNCTION| |CLFSWM|::|KEYSTRING|)))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|UNDEFINE-SECOND-KEY|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|UNDEFINE-SECOND-KEY| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|UNDEFINE-SECOND-KEY| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 2. + 2.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46694| (|COMMON-LISP|::|CADR| |SYSTEM|::||)) + (#2=#:|G46695| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|UNDEFINE-SECOND-KEY| #1# + '(|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + #1#)) + (|CLFSWM|::|KEY| (|COMMON-LISP|::|CAR| #2#)) + (|CLFSWM|::|MODIFIERS| (|COMMON-LISP|::|CDR| #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|UNDEFINE-SECOND-KEY| + (|COMMON-LISP|::|CONS| '|COMMON-LISP|::|REMHASH| + (|COMMON-LISP|::|CONS| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|KEY| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + '(|CLFSWM|::|*SECOND-KEYS*|)))))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|UNDEFINE-SECOND-MULTI-KEYS|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|UNDEFINE-SECOND-MULTI-KEYS| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|UNDEFINE-SECOND-MULTI-KEYS| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| (|EXT|::|PROPER-LIST-P| |SYSTEM|::||)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((|CLFSWM|::|KEYS| (|COMMON-LISP|::|CDR| |SYSTEM|::||))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|UNDEFINE-SECOND-MULTI-KEYS| + (|COMMON-LISP|::|CONS| '|COMMON-LISP|::|PROGN| + (|COMMON-LISP|::|LOOP| |CLFSWM|::|FOR| |CLFSWM|::|K| |CLFSWM|::|IN| + |CLFSWM|::|KEYS| |CLFSWM|::|COLLECT| + (|COMMON-LISP|::|LIST| '|CLFSWM|::|UNDEFINE-SECOND-KEY| + |CLFSWM|::|K|)))))))))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DEFINE-PAGER-KEY-FUN| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|KEY| |COMMON-LISP|::|FUNCTION| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|KEYSTRING|))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|DEFINE-PAGER-KEY|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|DEFINE-PAGER-KEY| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|DEFINE-PAGER-KEY| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 3. + 4.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46739| (|COMMON-LISP|::|CADR| . #2=(|SYSTEM|::||))) + (#3=#:|G46740| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|DEFINE-PAGER-KEY| #1# + '(|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + #1#)) + (|CLFSWM|::|KEY| (|COMMON-LISP|::|CAR| #3#)) + (|CLFSWM|::|MODIFIERS| (|COMMON-LISP|::|CDR| #3#)) + #'(|COMMON-LISP|::|CADDR| . #2#) + (|CLFSWM|::|KEYSTRING| (|COMMON-LISP|::|CADDDR| . #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|DEFINE-PAGER-KEY| + (|COMMON-LISP|::|LIST| '|CLFSWM|::|DEFINE-PAGER-KEY-FUN| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|KEY| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + |COMMON-LISP|::|FUNCTION| |CLFSWM|::|KEYSTRING|)))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|UNDEFINE-PAGER-KEY|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|UNDEFINE-PAGER-KEY| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|UNDEFINE-PAGER-KEY| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 2. + 2.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46753| (|COMMON-LISP|::|CADR| |SYSTEM|::||)) + (#2=#:|G46754| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|UNDEFINE-PAGER-KEY| #1# + '(|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + #1#)) + (|CLFSWM|::|KEY| (|COMMON-LISP|::|CAR| #2#)) + (|CLFSWM|::|MODIFIERS| (|COMMON-LISP|::|CDR| #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|UNDEFINE-PAGER-KEY| + (|COMMON-LISP|::|CONS| '|COMMON-LISP|::|REMHASH| + (|COMMON-LISP|::|CONS| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|KEY| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + '(|CLFSWM|::|*PAGER-KEYS*|)))))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|UNDEFINE-PAGER-MULTI-KEYS|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|UNDEFINE-PAGER-MULTI-KEYS| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|UNDEFINE-PAGER-MULTI-KEYS| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| (|EXT|::|PROPER-LIST-P| |SYSTEM|::||)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((|CLFSWM|::|KEYS| (|COMMON-LISP|::|CDR| |SYSTEM|::||))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|UNDEFINE-PAGER-MULTI-KEYS| + (|COMMON-LISP|::|CONS| '|COMMON-LISP|::|PROGN| + (|COMMON-LISP|::|LOOP| |CLFSWM|::|FOR| |CLFSWM|::|K| |CLFSWM|::|IN| + |CLFSWM|::|KEYS| |CLFSWM|::|COLLECT| + (|COMMON-LISP|::|LIST| '|CLFSWM|::|UNDEFINE-PAGER-KEY| + |CLFSWM|::|K|)))))))))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DEFINE-INFO-KEY-FUN| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|KEY| |COMMON-LISP|::|FUNCTION| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|KEYSTRING|))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|DEFINE-INFO-KEY|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|DEFINE-INFO-KEY| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|DEFINE-INFO-KEY| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 3. + 4.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46798| (|COMMON-LISP|::|CADR| . #2=(|SYSTEM|::||))) + (#3=#:|G46799| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|DEFINE-INFO-KEY| #1# + '(|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + #1#)) + (|CLFSWM|::|KEY| (|COMMON-LISP|::|CAR| #3#)) + (|CLFSWM|::|MODIFIERS| (|COMMON-LISP|::|CDR| #3#)) + #'(|COMMON-LISP|::|CADDR| . #2#) + (|CLFSWM|::|KEYSTRING| (|COMMON-LISP|::|CADDDR| . #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|DEFINE-INFO-KEY| + (|COMMON-LISP|::|LIST| '|CLFSWM|::|DEFINE-INFO-KEY-FUN| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|KEY| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + |COMMON-LISP|::|FUNCTION| |CLFSWM|::|KEYSTRING|)))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|UNDEFINE-INFO-KEY|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|UNDEFINE-INFO-KEY| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|UNDEFINE-INFO-KEY| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 2. + 2.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46812| (|COMMON-LISP|::|CADR| |SYSTEM|::||)) + (#2=#:|G46813| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|UNDEFINE-INFO-KEY| #1# + '(|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + #1#)) + (|CLFSWM|::|KEY| (|COMMON-LISP|::|CAR| #2#)) + (|CLFSWM|::|MODIFIERS| (|COMMON-LISP|::|CDR| #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|UNDEFINE-INFO-KEY| + (|COMMON-LISP|::|CONS| '|COMMON-LISP|::|REMHASH| + (|COMMON-LISP|::|CONS| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|KEY| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + '(|CLFSWM|::|*INFO-KEYS*|)))))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|UNDEFINE-INFO-MULTI-KEYS|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|UNDEFINE-INFO-MULTI-KEYS| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|UNDEFINE-INFO-MULTI-KEYS| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| (|EXT|::|PROPER-LIST-P| |SYSTEM|::||)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((|CLFSWM|::|KEYS| (|COMMON-LISP|::|CDR| |SYSTEM|::||))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|UNDEFINE-INFO-MULTI-KEYS| + (|COMMON-LISP|::|CONS| '|COMMON-LISP|::|PROGN| + (|COMMON-LISP|::|LOOP| |CLFSWM|::|FOR| |CLFSWM|::|K| |CLFSWM|::|IN| + |CLFSWM|::|KEYS| |CLFSWM|::|COLLECT| + (|COMMON-LISP|::|LIST| '|CLFSWM|::|UNDEFINE-INFO-KEY| + |CLFSWM|::|K|)))))))))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|UNDEFINE-INFO-KEY-FUN| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|KEY|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DEFINE-MOUSE-ACTION-FUN| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|BUTTON| |CLFSWM|::|FUNCTION-PRESS| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|KEYSTRING| |CLFSWM|::|FUNCTION-RELEASE|))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|DEFINE-MOUSE-ACTION|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|DEFINE-MOUSE-ACTION| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|DEFINE-MOUSE-ACTION| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 3. + 5.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46864| (|COMMON-LISP|::|CADR| . #2=(|SYSTEM|::||))) + (#3=#:|G46865| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|DEFINE-MOUSE-ACTION| #1# + '(|CLFSWM|::|BUTTON| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + #1#)) + (|CLFSWM|::|BUTTON| (|COMMON-LISP|::|CAR| #3#)) + (|CLFSWM|::|MODIFIERS| (|COMMON-LISP|::|CDR| #3#)) + (|CLFSWM|::|FUNCTION-PRESS| (|COMMON-LISP|::|CADDR| . #2#)) + (|CLFSWM|::|FUNCTION-RELEASE| (|COMMON-LISP|::|CADDDR| . #2#)) + (|CLFSWM|::|KEYSTRING| (|COMMON-LISP|::|FIFTH| . #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|DEFINE-MOUSE-ACTION| + (|COMMON-LISP|::|LIST| '|CLFSWM|::|DEFINE-MOUSE-ACTION-FUN| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|BUTTON| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + |CLFSWM|::|FUNCTION-PRESS| |CLFSWM|::|KEYSTRING| + |CLFSWM|::|FUNCTION-RELEASE|)))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|UNDEFINE-MOUSE-ACTION|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|UNDEFINE-MOUSE-ACTION| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|UNDEFINE-MOUSE-ACTION| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 2. + 2.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46878| (|COMMON-LISP|::|CADR| |SYSTEM|::||)) + (#2=#:|G46879| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|UNDEFINE-MOUSE-ACTION| #1# + '(|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + #1#)) + (|CLFSWM|::|KEY| (|COMMON-LISP|::|CAR| #2#)) + (|CLFSWM|::|MODIFIERS| (|COMMON-LISP|::|CDR| #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|UNDEFINE-MOUSE-ACTION| + (|COMMON-LISP|::|CONS| '|COMMON-LISP|::|REMHASH| + (|COMMON-LISP|::|CONS| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|KEY| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + '(|CLFSWM|::|*MOUSE-ACTION*|)))))))))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DEFINE-PAGER-MOUSE-ACTION-FUN| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|BUTTON| |CLFSWM|::|FUNCTION-PRESS| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|KEYSTRING| |CLFSWM|::|FUNCTION-RELEASE|))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|DEFINE-PAGER-MOUSE-ACTION|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|DEFINE-PAGER-MOUSE-ACTION| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|DEFINE-PAGER-MOUSE-ACTION| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 3. + 5.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46905| (|COMMON-LISP|::|CADR| . #2=(|SYSTEM|::||))) + (#3=#:|G46906| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|DEFINE-PAGER-MOUSE-ACTION| #1# + '(|CLFSWM|::|BUTTON| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + #1#)) + (|CLFSWM|::|BUTTON| (|COMMON-LISP|::|CAR| #3#)) + (|CLFSWM|::|MODIFIERS| (|COMMON-LISP|::|CDR| #3#)) + (|CLFSWM|::|FUNCTION-PRESS| (|COMMON-LISP|::|CADDR| . #2#)) + (|CLFSWM|::|FUNCTION-RELEASE| (|COMMON-LISP|::|CADDDR| . #2#)) + (|CLFSWM|::|KEYSTRING| (|COMMON-LISP|::|FIFTH| . #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|DEFINE-PAGER-MOUSE-ACTION| + (|COMMON-LISP|::|LIST| '|CLFSWM|::|DEFINE-PAGER-MOUSE-ACTION-FUN| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|BUTTON| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + |CLFSWM|::|FUNCTION-PRESS| |CLFSWM|::|KEYSTRING| + |CLFSWM|::|FUNCTION-RELEASE|)))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|UNDEFINE-PAGER-MOUSE-ACTION|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|UNDEFINE-PAGER-MOUSE-ACTION| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|UNDEFINE-PAGER-MOUSE-ACTION| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 2. + 2.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46919| (|COMMON-LISP|::|CADR| |SYSTEM|::||)) + (#2=#:|G46920| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|UNDEFINE-PAGER-MOUSE-ACTION| #1# + '(|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + #1#)) + (|CLFSWM|::|KEY| (|COMMON-LISP|::|CAR| #2#)) + (|CLFSWM|::|MODIFIERS| (|COMMON-LISP|::|CDR| #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|UNDEFINE-PAGER-MOUSE-ACTION| + (|COMMON-LISP|::|CONS| '|COMMON-LISP|::|REMHASH| + (|COMMON-LISP|::|CONS| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|KEY| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + '(|CLFSWM|::|*PAGER-MOUSE-ACTION*|)))))))))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DEFINE-INFO-MOUSE-ACTION-FUN| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|BUTTON| |CLFSWM|::|FUNCTION-PRESS| |COMMON-LISP|::|&OPTIONAL| + |CLFSWM|::|KEYSTRING| |CLFSWM|::|FUNCTION-RELEASE|))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|DEFINE-INFO-MOUSE-ACTION|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|DEFINE-INFO-MOUSE-ACTION| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|DEFINE-INFO-MOUSE-ACTION| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 3. + 5.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46946| (|COMMON-LISP|::|CADR| . #2=(|SYSTEM|::||))) + (#3=#:|G46947| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|DEFINE-INFO-MOUSE-ACTION| #1# + '(|CLFSWM|::|BUTTON| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + #1#)) + (|CLFSWM|::|BUTTON| (|COMMON-LISP|::|CAR| #3#)) + (|CLFSWM|::|MODIFIERS| (|COMMON-LISP|::|CDR| #3#)) + (|CLFSWM|::|FUNCTION-PRESS| (|COMMON-LISP|::|CADDR| . #2#)) + (|CLFSWM|::|FUNCTION-RELEASE| (|COMMON-LISP|::|CADDDR| . #2#)) + (|CLFSWM|::|KEYSTRING| (|COMMON-LISP|::|FIFTH| . #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|DEFINE-INFO-MOUSE-ACTION| + (|COMMON-LISP|::|LIST| '|CLFSWM|::|DEFINE-INFO-MOUSE-ACTION-FUN| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|BUTTON| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + |CLFSWM|::|FUNCTION-PRESS| |CLFSWM|::|KEYSTRING| + |CLFSWM|::|FUNCTION-RELEASE|)))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|UNDEFINE-INFO-MOUSE-ACTION|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|UNDEFINE-INFO-MOUSE-ACTION| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|UNDEFINE-INFO-MOUSE-ACTION| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 2. + 2.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46960| (|COMMON-LISP|::|CADR| |SYSTEM|::||)) + (#2=#:|G46961| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|CLFSWM|::|UNDEFINE-INFO-MOUSE-ACTION| #1# + '(|CLFSWM|::|KEY| |COMMON-LISP|::|&REST| |CLFSWM|::|MODIFIERS|)) + #1#)) + (|CLFSWM|::|KEY| (|COMMON-LISP|::|CAR| #2#)) + (|CLFSWM|::|MODIFIERS| (|COMMON-LISP|::|CDR| #2#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|UNDEFINE-INFO-MOUSE-ACTION| + (|COMMON-LISP|::|CONS| '|COMMON-LISP|::|REMHASH| + (|COMMON-LISP|::|CONS| + (|COMMON-LISP|::|LIST| '|COMMON-LISP|::|LIST| |CLFSWM|::|KEY| + (|CLFSWM|::|MODIFIERS->STATE| |CLFSWM|::|MODIFIERS|)) + '(|CLFSWM|::|*INFO-MOUSE-ACTION*|)))))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|DEFINE-UNGRAB/GRAB|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|DEFINE-UNGRAB/GRAB| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|DEFINE-UNGRAB/GRAB| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 4. + 4.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((|CLFSWM|::|NAME| + (|COMMON-LISP|::|CADR| . #1=(|SYSTEM|::||))) + #'(|COMMON-LISP|::|CADDR| . #1#) + (|CLFSWM|::|HASHTABLE| (|COMMON-LISP|::|CADDDR| . #1#))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|DEFINE-UNGRAB/GRAB| + `(|COMMON-LISP|::|DEFUN| ,|CLFSWM|::|NAME| |COMMON-LISP|::|NIL| + (|COMMON-LISP|::|MAPHASH| + #'(|COMMON-LISP|::|LAMBDA| (|CLFSWM|::|K| |CLFSWM|::|V|) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |CLFSWM|::|V|)) + (|COMMON-LISP|::|WHEN| (|COMMON-LISP|::|CONSP| |CLFSWM|::|K|) + (|COMMON-LISP|::|HANDLER-CASE| + (|COMMON-LISP|::|LET*| + ((|CLFSWM|::|KEY| (|COMMON-LISP|::|FIRST| |CLFSWM|::|K|)) + (|CLFSWM|::|KEYCODE| + (|COMMON-LISP|::|TYPECASE| |CLFSWM|::|KEY| + (|COMMON-LISP|::|CHARACTER| + (|CLFSWM|::|CHAR->KEYCODE| |CLFSWM|::|KEY|)) + (|COMMON-LISP|::|NUMBER| |CLFSWM|::|KEY|) + (|COMMON-LISP|::|STRING| + (|COMMON-LISP|::|LET| + ((|CLFSWM|::|KEYSYM| + (|CLFSWM|::|KEYSYM-NAME->KEYSYM| |CLFSWM|::|KEY|))) + (|COMMON-LISP|::|AND| |CLFSWM|::|KEYSYM| + (|XLIB|::|KEYSYM->KEYCODES| |CLFSWM|::|*DISPLAY*| + |CLFSWM|::|KEYSYM|))))))) + (|COMMON-LISP|::|IF| |CLFSWM|::|KEYCODE| + (,|COMMON-LISP|::|FUNCTION| |CLFSWM|::|*ROOT*| + |CLFSWM|::|KEYCODE| :|MODIFIERS| + (|COMMON-LISP|::|SECOND| |CLFSWM|::|K|)) + (|COMMON-LISP|::|FORMAT| |COMMON-LISP|::|T| + "~&Grabbing error: Can't find key '~A'~%" |CLFSWM|::|KEY|))) + (|COMMON-LISP|::|ERROR| (|CLFSWM|::|C|) + (|COMMON-LISP|::|FORMAT| |COMMON-LISP|::|T| + "~&Grabbing error: Can't grab key '~A' (~A)~%" |CLFSWM|::|K| + |CLFSWM|::|C|))) + (|COMMON-LISP|::|FORCE-OUTPUT|))) + ,|CLFSWM|::|HASHTABLE|))))))))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GRAB-MAIN-KEYS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|UNGRAB-MAIN-KEYS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FUNCALL-KEY-FROM-CODE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|HASH-TABLE-KEY| |CLFSWM|::|CODE| |CLFSWM|::|STATE| + |COMMON-LISP|::|&OPTIONAL| |CLFSWM|::|ARGS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FUNCALL-BUTTON-FROM-CODE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|HASH-TABLE-KEY| |CLFSWM|::|CODE| |CLFSWM|::|STATE| + |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |COMMON-LISP|::|&OPTIONAL| + (|CLFSWM|::|ACTION| #'|COMMON-LISP|::|FIRST|) |CLFSWM|::|ARGS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|PRODUCE-DOC-HTML| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|HASH-TABLE-KEY-LIST| |COMMON-LISP|::|&OPTIONAL| + (|COMMON-LISP|::|STREAM| |COMMON-LISP|::|T|)))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|PRODUCE-DOC-HTML-IN-FILE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|FILENAME|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|PRODUCE-DOC| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|HASH-TABLE-KEY-LIST| |COMMON-LISP|::|&OPTIONAL| + (|COMMON-LISP|::|STREAM| |COMMON-LISP|::|T|)))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|PRODUCE-DOC-IN-FILE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|FILENAME|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|PRODUCE-ALL-DOCS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) Added: clfswm-keys.lisp ============================================================================== --- (empty file) +++ clfswm-keys.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,276 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Tue Feb 12 19:23:14 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Keys functions definition +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +(defun define-hash-table-key-name (hash-table name) + (setf (gethash 'name hash-table) name)) + +;;; CONFIG - Key mode names + +(define-hash-table-key-name *main-keys* "Main mode keys") +(define-hash-table-key-name *second-keys* "Second mode keys") +(define-hash-table-key-name *mouse-action* "Mouse buttons actions in second mode") +(define-hash-table-key-name *pager-keys* "Pager mode keys") +(define-hash-table-key-name *pager-mouse-action* "Mouse buttons actions in pager mode") +(define-hash-table-key-name *info-keys* "Info mode keys") +(define-hash-table-key-name *info-mouse-action* "Mouse buttons actions in info mode") + + +(defmacro define-define-key (name hashtable) + (let ((name-key-fun (create-symbol "define-" name "-key-fun")) + (name-key (create-symbol "define-" name "-key")) + (undefine-name (create-symbol "undefine-" name "-key")) + (undefine-multi-name (create-symbol "undefine-" name "-multi-keys"))) + `(progn + (defun ,name-key-fun (key function &optional keystring) + "Define a new key, a key is '(char '(modifier list))" + (setf (gethash key ,hashtable) (list function keystring))) + + (defmacro ,name-key ((key &rest modifiers) function &optional keystring) + `(,',name-key-fun (list ,key ,(modifiers->state modifiers)) ,function ,keystring)) + + (defmacro ,undefine-name ((key &rest modifiers)) + `(remhash (list ,key ,(modifiers->state modifiers)) ,',hashtable)) + + (defmacro ,undefine-multi-name (&rest keys) + `(progn + ,@(loop for k in keys + collect `(,',undefine-name ,k))))))) + + +(defmacro define-define-mouse (name hashtable) + (let ((name-mouse-fun (create-symbol "define-" name "-fun")) + (name-mouse (create-symbol "define-" name)) + (undefine-name (create-symbol "undefine-" name))) + `(progn + (defun ,name-mouse-fun (button function-press &optional keystring function-release) + "Define a new mouse button action, a button is '(button number '(modifier list))" + (setf (gethash button ,hashtable) (list function-press keystring function-release))) + + (defmacro ,name-mouse ((button &rest modifiers) function-press &optional function-release keystring) + `(,',name-mouse-fun (list ,button ,(modifiers->state modifiers)) ,function-press ,keystring ,function-release)) + + (defmacro ,undefine-name ((key &rest modifiers)) + `(remhash (list ,key ,(modifiers->state modifiers)) ,',hashtable))))) + + + +(define-define-key "main" *main-keys*) +(define-define-key "second" *second-keys*) +(define-define-key "pager" *pager-keys*) +(define-define-key "info" *info-keys*) + + + + +;;(defun undefine-main-keys (&rest keys) +;; (dolist (k keys) +;; (undefine-main-key k))) + +(defun undefine-info-key-fun (key) + (remhash key *info-keys*)) + +(define-define-mouse "mouse-action" *mouse-action*) +(define-define-mouse "pager-mouse-action" *pager-mouse-action*) +(define-define-mouse "info-mouse-action" *info-mouse-action*) + + + + + +(defmacro define-ungrab/grab (name function hashtable) + `(defun ,name () + (maphash #'(lambda (k v) + (declare (ignore v)) + (when (consp k) + (handler-case + (let* ((key (first k)) + (keycode (typecase key + (character (char->keycode key)) + (number key) + (string (let ((keysym (keysym-name->keysym key))) + (and keysym (xlib:keysym->keycodes *display* keysym))))))) + (if keycode + (,function *root* keycode :modifiers (second k)) + (format t "~&Grabbing error: Can't find key '~A'~%" key))) + (error (c) + ;;(declare (ignore c)) + (format t "~&Grabbing error: Can't grab key '~A' (~A)~%" k c))) + (force-output))) + ,hashtable))) + +(define-ungrab/grab grab-main-keys xlib:grab-key *main-keys*) +(define-ungrab/grab ungrab-main-keys xlib:ungrab-key *main-keys*) + + + + + + + + + + + + + + +(defun funcall-key-from-code (hash-table-key code state &optional args) + (labels ((funcall-from (key) + (multiple-value-bind (function foundp) + (gethash (list key state) hash-table-key) + (when (and foundp (first function)) + (if args + (funcall (first function) args) + (funcall (first function))) + t))) + (from-code () + (funcall-from code)) + (from-char () + (let ((char (keycode->char code state))) + (funcall-from char))) + (from-string () + (let ((string (keysym->keysym-name (xlib:keycode->keysym *display* code 0)))) + (funcall-from string)))) + (cond ((from-code)) + ((from-char)) + ((from-string))))) + + + +(defun funcall-button-from-code (hash-table-key code state root-x root-y + &optional (action #'first) args) + "Action: first=press third=release" + (let ((state (modifiers->state (set-difference (state->modifiers state) + '(:button-1 :button-2 :button-3 :button-4 :button-5))))) + (multiple-value-bind (function foundp) + (gethash (list code state) hash-table-key) + (if (and foundp (funcall action function)) + (if args + (funcall (funcall action function) root-x root-y args) + (funcall (funcall action function) root-x root-y)) + t)))) + + + + +;;;,----- +;;;| Auto documentation tools +;;;`----- + +(defun produce-doc-html (hash-table-key-list &optional (stream t)) + "Produce an html doc from a hash-table key" + (labels ((clean-string (str) + (cond ((string-equal str "#\\:") ":") + ((string-equal str "#\\#") "#") + ((string-equal str "#\\\\") "\\") + (t (substitute #\Space #\# + (substitute #\Space #\\ + (substitute #\Space #\: str)))))) + (produce-keys (hk) + `("table class=\"ex\" cellspacing=\"5\" border=\"0\" width=\"100%\"" + (tr ("th align=\"right\" width=\"10%\"" "Modifiers") + ("th align=\"center\" width=\"10%\"" "Key/Button") + ("th align=\"left\"" "Function")) + ,@(let ((acc nil)) + (maphash #'(lambda (k v) + (when (consp k) + (push `(tr + ("td align=\"right\" style=\"color:#FF0000\" nowrap" + ,(clean-string (format nil "~{~@(~S ~)~}" (state->modifiers (second k))))) + ("td align=\"center\" nowrap" + ,(clean-string (format nil "~@(~S~)" + (or (second v) + (and (stringp (first k)) + (intern (string-upcase (first k)))) + (first k))))) + ("td style=\"color:#0000FF\" nowrap" ,(documentation (or (first v) (third v)) 'function))) + acc))) + hk) + (nreverse acc))))) + (produce-html + `(html + (head + (title "CLFSWM Keys")) + (body + (h1 "CLFSWM Keys") + (p (small "Note: Mod-1 is the Meta or Alt key")) + ,@(let ((acc nil)) + (dolist (hk hash-table-key-list) + (push `(h3 (u ,(gethash 'name hk))) acc) + (push (produce-keys hk) acc)) + (nreverse acc)))) + 0 stream))) + + +(defun produce-doc-html-in-file (filename) + (with-open-file (stream filename :direction :output + :if-exists :supersede :if-does-not-exist :create) + (produce-doc-html (list *main-keys* *second-keys* *mouse-action* *pager-keys* *pager-mouse-action* + *info-keys* *info-mouse-action*) + stream))) + + + +(defun produce-doc (hash-table-key-list &optional (stream t)) + "Produce a text doc from a hash-table key" + (format stream " * CLFSWM Keys *~%") + (format stream " -----------~%") + (format stream "~%Note: Mod-1 is the Meta or Alt key~%") + (dolist (hk hash-table-key-list) + (format stream "~2&~A:~%" (gethash 'name hk)) + (dotimes (i (length (gethash 'name hk))) + (format stream "-")) + (format stream "~2%") + (maphash #'(lambda (k v) + (when (consp k) + (format stream "~&~20@<~{~@(~A~) ~}~> ~13@<~@(~A~)~> ~A~%" + (state->modifiers (second k)) + (remove #\# (remove #\\ (format nil "~S" (or (second v) + (and (stringp (first k)) + (intern (string-upcase (first k)))) + (first k))))) + (documentation (or (first v) (third v)) 'function)))) + hk) + (format stream "~2&"))) + + + +(defun produce-doc-in-file (filename) + (with-open-file (stream filename :direction :output + :if-exists :supersede :if-does-not-exist :create) + (produce-doc (list *main-keys* *second-keys* *mouse-action* *pager-keys* *pager-mouse-action* + *info-keys* *info-mouse-action*) + stream))) + + +(defun produce-all-docs () + "Produce all docs in keys.html and keys.txt" + (produce-doc-in-file "keys.txt") + (produce-doc-html-in-file "keys.html")) + Added: clfswm-layout.fas ============================================================================== --- (empty file) +++ clfswm-layout.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,491 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 28 (IN-PACKAGE :CLFSWM)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CLFSWM" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|31 49 (DEFUN SET-LAYOUT (LAYOUT) ...)-2| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SET-LAYOUT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SET-LAYOUT| + #30Y(00 00 00 00 01 00 00 00 06 02 6B 00 2F 01 1F 0C 6B 00 AE AD 30 02 + 16 01 2E 03 19 02 19 02) + (|CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|GROUP-P| + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|GROUP-LAYOUT|) + |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|LAYOUT|) "Set the layout of the current child")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|50 57 (DEFUN GET-MANAGED-CHILD (FATHER) ...)-3| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GET-MANAGED-CHILD| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GET-MANAGED-CHILD| + #27Y(00 00 00 00 01 00 00 00 06 02 AD 2F 00 1F 0A DB AE 6F 02 38 05 32 + 50 19 02 19 02) + (|CLFSWM|::|GROUP-P| + #Y(|CLFSWM|::|GET-MANAGED-CHILD-1| + #26Y(00 00 00 00 01 00 00 00 06 02 DA AE 32 33 1F 08 AD 6F 01 C7 5A + 59 19 02 19 02) + (|XLIB|::|WINDOW| |CLFSWM|::|WINDOW-TYPE| :|NORMAL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|X|) |COMMON-LISP|::|NIL|) + |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|FATHER|) + "Return only window in normal mode who can be tiled")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|59 60 (DEFUN REGISTER-LAYOUT (LAYOUT) ...)-4| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|REGISTER-LAYOUT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|REGISTER-LAYOUT| + #22Y(00 00 00 00 01 00 00 00 06 02 6B 00 AE 7B 01 33 02 22 0F 00 19 02) + (|CLFSWM|::|*LAYOUT-LIST*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|LAYOUT|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|64 66 (DEFGENERIC NO-LAYOUT (CHILD FATHER) ...)-5| + #112Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 6B 03 99 + 04 DA DF AF E0 E1 E2 E3 E4 E5 E6 01 03 BA 6F 0D 1B 24 AF 38 01 80 9E + 03 14 AD 31 AD 16 02 1B 14 94 00 94 00 9E 5C 5C 78 76 00 7B 02 A1 21 + 63 9D FC FB 16 02 83 00 AC 8D 94 66 16 01 9E 16 01 F8 E8 6B 0F EA BC + EB DA 6E 03 12 ED 63 6E 03 14 EF 63 7B 06 33 02 22 9B 0B 02) + (|CLFSWM|::|NO-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + |CLOS|::|| |CLOS|::|ENSURE-GENERIC-FUNCTION| + :|GENERIC-FUNCTION-CLASS| :|LAMBDA-LIST| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|ARGUMENT-PRECEDENCE-ORDER| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|DOCUMENTATION| + "Maximize windows in there group - leave group to there size" + |CLOS|::|METHODS| |CLOS|::|CLASS-DEFAULT-INITARGS| :|METHOD-CLASS| + |CLOS|::|| :|METHOD-COMBINATION| :|NAME| + |CLOS|::|MAKE-GENERIC-FUNCTION-PROTOTYPE| |CLOS|::|STANDARD| + |CLOS|::|FIND-METHOD-COMBINATION| :|DECLARATIONS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|68 70 (DEFMETHOD NO-LAYOUT (# FATHER) ...)-6| + #48Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 E4 38 02 72 2A 64 38 02 72 2A 7B 02 7B 08 2D 03 0B 19 + 01) + (|CLFSWM|::|NO-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + #Y(#:|68 70 (DEFMETHOD NO-LAYOUT (# FATHER) ...)-6-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|68 70 (DEFMETHOD NO-LAYOUT (# FATHER) ...)-6-1-1| + #43Y(00 00 00 00 02 00 00 00 00 03 AD DA 72 3E 72 97 AE DB 72 3E 72 + 97 DC B0 DD 72 3E 73 02 35 DC B1 DE 72 3E 73 02 35 63 40 05 19 + 03) + (|CLFSWM|::|RX| |CLFSWM|::|RY| -2. |CLFSWM|::|RW| |CLFSWM|::|RH|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) + |CLOS|::|SIGNATURE| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |XLIB|::|WINDOW| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|72 79 (DEFMETHOD NO-LAYOUT (# FATHER) ...)-7| + #48Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 E4 38 02 72 2A 64 38 02 72 2A 7B 02 7B 08 2D 03 0B 19 + 01) + (|CLFSWM|::|NO-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + #Y(#:|72 79 (DEFMETHOD NO-LAYOUT (# FATHER) ...)-7-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|72 79 (DEFMETHOD NO-LAYOUT (# FATHER) ...)-7-1-1| + #89Y(00 00 00 00 02 00 00 00 00 03 AE DA 72 3E AE DB 72 3E 73 02 37 + AE DC 72 3E 73 02 35 38 01 72 B7 AF DD 72 3E AF DE 72 3E 73 02 + 37 AF DF 72 3E 73 02 35 38 01 72 B7 B0 E0 72 3E B0 DB 72 3E 73 + 02 37 38 01 72 B7 B1 E1 72 3E B1 DE 72 3E 73 02 37 38 01 72 B7 + 64 40 05 19 03) + (|CLFSWM|::|X| |CLFSWM|::|RW| |CLFSWM|::|RX| |CLFSWM|::|Y| + |CLFSWM|::|RH| |CLFSWM|::|RY| |CLFSWM|::|W| |CLFSWM|::|H|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) + |CLOS|::|SIGNATURE| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLFSWM|::|GROUP| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|81 83 (DEFUN SET-NO-LAYOUT NIL ...)-8| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SET-NO-LAYOUT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SET-NO-LAYOUT| + #16Y(00 00 00 00 00 00 00 00 06 01 99 00 2F 01 19 01) + (|CLFSWM|::|NO-LAYOUT| |CLFSWM|::|SET-LAYOUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Maximize windows in there group - leave group to there size")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|85 85 (REGISTER-LAYOUT 'SET-NO-LAYOUT)-9| + #15Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 19 01) + (|CLFSWM|::|SET-NO-LAYOUT| |CLFSWM|::|REGISTER-LAYOUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|90 92 (DEFGENERIC TILE-LAYOUT (CHILD FATHER) ...)-10| + #112Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 6B 03 99 + 04 DA DF AF E0 E1 E2 E3 E4 E5 E6 01 03 BA 6F 0D 1B 24 AF 38 01 80 9E + 03 14 AD 31 AD 16 02 1B 14 94 00 94 00 9E 5C 5C 78 76 00 7B 02 A1 21 + 63 9D FC FB 16 02 83 00 AC 8D 94 66 16 01 9E 16 01 F8 E8 6B 0F EA BC + EB DA 6E 03 12 ED 63 6E 03 14 EF 63 7B 06 33 02 22 9B 0B 02) + (|CLFSWM|::|TILE-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + |CLOS|::|| |CLOS|::|ENSURE-GENERIC-FUNCTION| + :|GENERIC-FUNCTION-CLASS| :|LAMBDA-LIST| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|ARGUMENT-PRECEDENCE-ORDER| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|DOCUMENTATION| + "Tile child in its group" |CLOS|::|METHODS| + |CLOS|::|CLASS-DEFAULT-INITARGS| :|METHOD-CLASS| + |CLOS|::|| :|METHOD-COMBINATION| :|NAME| + |CLOS|::|MAKE-GENERIC-FUNCTION-PROTOTYPE| |CLOS|::|STANDARD| + |CLOS|::|FIND-METHOD-COMBINATION| :|DECLARATIONS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|94 105 (DEFMETHOD TILE-LAYOUT (CHILD FATHER) ...)-11| + #48Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 64 38 02 72 2A 64 38 02 72 2A 7B 02 7B 08 2D 03 0A 19 + 01) + (|CLFSWM|::|TILE-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| |SYSTEM|::|UNTRACE1| + #Y(#:|94 105 (DEFMETHOD TILE-LAYOUT (CHILD FATHER) ...)-11-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|94 105 (DEFMETHOD TILE-LAYOUT (CHILD FATHER) ...)-11-1-1| + #125Y(00 00 00 00 02 00 00 00 00 03 AD 6F 00 AF AD 38 06 72 60 AD 72 + 48 AC 72 9D 38 01 72 B5 B1 6F 01 AD 73 01 38 B2 6F 02 AF AF 73 + 01 38 38 01 72 B5 73 01 38 DD B4 6F 04 B2 B1 72 B8 B0 73 02 37 + 38 01 72 B6 73 03 35 38 01 72 B7 DD B5 6F 05 B3 B2 73 01 38 38 + 01 72 B6 B0 73 02 37 38 01 72 B6 73 03 35 38 01 72 B7 E0 B0 73 + 02 35 38 01 72 B7 E0 B0 73 02 35 38 01 72 B7 63 40 05 19 09) + (|CLFSWM|::|GET-MANAGED-CHILD| |CLFSWM|::|GROUP-RW| + |CLFSWM|::|GROUP-RH| 1. |CLFSWM|::|GROUP-RX| |CLFSWM|::|GROUP-RY| + -2.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) + |CLOS|::|SIGNATURE| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|107 109 (DEFUN SET-TILE-LAYOUT NIL ...)-12| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SET-TILE-LAYOUT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SET-TILE-LAYOUT| + #16Y(00 00 00 00 00 00 00 00 06 01 99 00 2F 01 19 01) + (|CLFSWM|::|TILE-LAYOUT| |CLFSWM|::|SET-LAYOUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Tile child in its group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|111 111 (REGISTER-LAYOUT 'SET-TILE-LAYOUT)-13| + #15Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 19 01) + (|CLFSWM|::|SET-TILE-LAYOUT| |CLFSWM|::|REGISTER-LAYOUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|114 119 (DEFUN LAYOUT-ASK-SIZE (MSG SLOT &OPTIONAL ...) ...)-14| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|LAYOUT-ASK-SIZE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|LAYOUT-ASK-SIZE| + #52Y(00 00 00 00 02 00 01 00 06 09 3B 01 02 C5 F9 6B 01 2F 02 1F 1D DD + B0 88 04 01 9F 14 73 02 37 DF AD E0 33 02 31 1F 09 6B 01 B0 AE 2D + 03 07 19 05 19 05 19 04) + (80. |CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|GROUP-P| #10r1/100 + |CLFSWM|::|QUERY-NUMBER| 0. 1. |CLFSWM|::|SET-GROUP-DATA-SLOT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|MSG| |CLFSWM|::|SLOT| |COMMON-LISP|::|&OPTIONAL| + (|COMMON-LISP|::|MIN| 80.)) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|124 125 (DEFGENERIC TILE-LEFT-LAYOUT (CHILD FATHER) ...)-15| + #112Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 6B 03 99 + 04 DA DF AF E0 E1 E2 E3 E4 E5 E6 01 03 BA 6F 0D 1B 24 AF 38 01 80 9E + 03 14 AD 31 AD 16 02 1B 14 94 00 94 00 9E 5C 5C 78 76 00 7B 02 A1 21 + 63 9D FC FB 16 02 83 00 AC 8D 94 66 16 01 9E 16 01 F8 E8 6B 0F EA BC + EB DA 6E 03 12 ED 63 6E 03 14 EF 63 7B 06 33 02 22 9B 0B 02) + (|CLFSWM|::|TILE-LEFT-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| + |SYSTEM|::|UNTRACE1| |CLOS|::|| + |CLOS|::|ENSURE-GENERIC-FUNCTION| :|GENERIC-FUNCTION-CLASS| :|LAMBDA-LIST| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|ARGUMENT-PRECEDENCE-ORDER| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|DOCUMENTATION| + "Tile Left: main child on left and others on right" |CLOS|::|METHODS| + |CLOS|::|CLASS-DEFAULT-INITARGS| :|METHOD-CLASS| + |CLOS|::|| :|METHOD-COMBINATION| :|NAME| + |CLOS|::|MAKE-GENERIC-FUNCTION-PROTOTYPE| |CLOS|::|STANDARD| + |CLOS|::|FIND-METHOD-COMBINATION| :|DECLARATIONS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|127 144 (DEFMETHOD TILE-LEFT-LAYOUT (CHILD FATHER) ...)-16| + #48Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 64 38 02 72 2A 64 38 02 72 2A 7B 02 7B 08 2D 03 0A 19 + 01) + (|CLFSWM|::|TILE-LEFT-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| + |SYSTEM|::|UNTRACE1| + #Y(#:|127 144 (DEFMETHOD TILE-LEFT-LAYOUT (CHILD FATHER) ...)-16-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|127 144 (DEFMETHOD TILE-LEFT-LAYOUT (CHILD FATHER) ...)-16-1-1| + #158Y(00 00 00 00 02 00 00 00 00 03 AD 6F 00 AF AD 38 06 72 60 AD 72 + 48 72 98 DB 73 01 33 B0 DC 72 3E AD 73 01 38 B1 DD 8A 04 01 CA + 14 AF 8E 92 80 4B B2 E0 72 3E B3 E3 72 3E AE 73 02 37 73 02 35 + 38 01 72 B7 72 97 B3 E1 72 3E AF 97 06 73 02 37 73 02 35 38 01 + 72 B7 72 97 E2 B5 E3 72 3E DB B1 73 01 36 73 02 37 38 01 72 B7 + 73 02 35 E2 B1 38 01 32 B7 14 73 02 35 63 40 05 19 08 B2 E0 72 + 3E 72 97 B3 E1 72 3E 72 97 E2 B5 E3 72 3E B0 73 02 37 38 01 72 + B7 73 02 35 E2 B6 DC 32 3E 1B 54) + (|CLFSWM|::|GET-MANAGED-CHILD| 1. |CLFSWM|::|RH| :|TILE-SIZE| + |CLFSWM|::|GROUP-DATA-SLOT| 0.8f0 |CLFSWM|::|RX| |CLFSWM|::|RY| -2. + |CLFSWM|::|RW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) + |CLOS|::|SIGNATURE| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|147 150 (DEFUN SET-TILE-LEFT-LAYOUT NIL ...)-17| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SET-TILE-LEFT-LAYOUT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SET-TILE-LEFT-LAYOUT| + #20Y(00 00 00 00 00 00 00 00 06 01 DA DB 30 02 99 03 2F 04 19 01) + ("Tile size in percent (%)" :|TILE-SIZE| |CLFSWM|::|LAYOUT-ASK-SIZE| + |CLFSWM|::|TILE-LEFT-LAYOUT| |CLFSWM|::|SET-LAYOUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Tile Left: main child on left and others on right")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|152 152 (REGISTER-LAYOUT 'SET-TILE-LEFT-LAYOUT)-18| + #15Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 19 01) + (|CLFSWM|::|SET-TILE-LEFT-LAYOUT| |CLFSWM|::|REGISTER-LAYOUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|156 158 (DEFGENERIC TILE-RIGHT-LAYOUT (CHILD FATHER) ...)-19| + #112Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 6B 03 99 + 04 DA DF AF E0 E1 E2 E3 E4 E5 E6 01 03 BA 6F 0D 1B 24 AF 38 01 80 9E + 03 14 AD 31 AD 16 02 1B 14 94 00 94 00 9E 5C 5C 78 76 00 7B 02 A1 21 + 63 9D FC FB 16 02 83 00 AC 8D 94 66 16 01 9E 16 01 F8 E8 6B 0F EA BC + EB DA 6E 03 12 ED 63 6E 03 14 EF 63 7B 06 33 02 22 9B 0B 02) + (|CLFSWM|::|TILE-RIGHT-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| + |SYSTEM|::|UNTRACE1| |CLOS|::|| + |CLOS|::|ENSURE-GENERIC-FUNCTION| :|GENERIC-FUNCTION-CLASS| :|LAMBDA-LIST| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|ARGUMENT-PRECEDENCE-ORDER| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|DOCUMENTATION| + "Tile Right: main child on right and others on left" |CLOS|::|METHODS| + |CLOS|::|CLASS-DEFAULT-INITARGS| :|METHOD-CLASS| + |CLOS|::|| :|METHOD-COMBINATION| :|NAME| + |CLOS|::|MAKE-GENERIC-FUNCTION-PROTOTYPE| |CLOS|::|STANDARD| + |CLOS|::|FIND-METHOD-COMBINATION| :|DECLARATIONS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|160 177 (DEFMETHOD TILE-RIGHT-LAYOUT (CHILD FATHER) ...)-20| + #48Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 64 38 02 72 2A 64 38 02 72 2A 7B 02 7B 08 2D 03 0A 19 + 01) + (|CLFSWM|::|TILE-RIGHT-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| + |SYSTEM|::|UNTRACE1| + #Y(#:|160 177 (DEFMETHOD TILE-RIGHT-LAYOUT (CHILD FATHER) ...)-20-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|160 177 (DEFMETHOD TILE-RIGHT-LAYOUT (CHILD FATHER) ...)-20-1-1| + #161Y(00 00 00 00 02 00 00 00 00 03 AD 6F 00 AF AD 38 06 72 60 AD 72 + 48 72 98 DB 73 01 33 B0 DC 72 3E AD 73 01 38 B1 DD 8A 04 01 CA + 14 AF 8E 92 3C B2 E0 72 3E 72 97 B3 E2 72 3E AF 97 06 73 02 37 + 73 02 35 38 01 72 B7 72 97 E3 B5 E1 72 3E DB B1 73 01 36 73 02 + 37 38 01 72 B7 73 02 35 E3 B1 38 01 32 B7 14 73 02 35 63 40 05 + 19 08 B2 E0 72 3E B3 E1 72 3E DB AF 73 01 36 73 02 37 73 02 35 + 38 01 72 B7 72 97 B3 E2 72 3E 72 97 E3 B5 E1 72 3E B0 73 02 37 + 38 01 72 B7 73 02 35 E3 B6 DC 32 3E 1B 41) + (|CLFSWM|::|GET-MANAGED-CHILD| 1. |CLFSWM|::|RH| :|TILE-SIZE| + |CLFSWM|::|GROUP-DATA-SLOT| 0.8f0 |CLFSWM|::|RX| |CLFSWM|::|RW| + |CLFSWM|::|RY| -2.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) + |CLOS|::|SIGNATURE| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|180 183 (DEFUN SET-TILE-RIGHT-LAYOUT NIL ...)-21| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SET-TILE-RIGHT-LAYOUT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SET-TILE-RIGHT-LAYOUT| + #20Y(00 00 00 00 00 00 00 00 06 01 DA DB 30 02 99 03 2F 04 19 01) + ("Tile size in percent (%)" :|TILE-SIZE| |CLFSWM|::|LAYOUT-ASK-SIZE| + |CLFSWM|::|TILE-RIGHT-LAYOUT| |CLFSWM|::|SET-LAYOUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Tile Right: main child on right and others on left")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|186 186 (REGISTER-LAYOUT 'SET-TILE-RIGHT-LAYOUT)-22| + #15Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 19 01) + (|CLFSWM|::|SET-TILE-RIGHT-LAYOUT| |CLFSWM|::|REGISTER-LAYOUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|191 193 (DEFGENERIC TILE-TOP-LAYOUT (CHILD FATHER) ...)-23| + #112Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 6B 03 99 + 04 DA DF AF E0 E1 E2 E3 E4 E5 E6 01 03 BA 6F 0D 1B 24 AF 38 01 80 9E + 03 14 AD 31 AD 16 02 1B 14 94 00 94 00 9E 5C 5C 78 76 00 7B 02 A1 21 + 63 9D FC FB 16 02 83 00 AC 8D 94 66 16 01 9E 16 01 F8 E8 6B 0F EA BC + EB DA 6E 03 12 ED 63 6E 03 14 EF 63 7B 06 33 02 22 9B 0B 02) + (|CLFSWM|::|TILE-TOP-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| + |SYSTEM|::|UNTRACE1| |CLOS|::|| + |CLOS|::|ENSURE-GENERIC-FUNCTION| :|GENERIC-FUNCTION-CLASS| :|LAMBDA-LIST| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|ARGUMENT-PRECEDENCE-ORDER| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|DOCUMENTATION| + "Tile Top: main child on top and others on bottom" |CLOS|::|METHODS| + |CLOS|::|CLASS-DEFAULT-INITARGS| :|METHOD-CLASS| + |CLOS|::|| :|METHOD-COMBINATION| :|NAME| + |CLOS|::|MAKE-GENERIC-FUNCTION-PROTOTYPE| |CLOS|::|STANDARD| + |CLOS|::|FIND-METHOD-COMBINATION| :|DECLARATIONS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|195 212 (DEFMETHOD TILE-TOP-LAYOUT (CHILD FATHER) ...)-24| + #48Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 64 38 02 72 2A 64 38 02 72 2A 7B 02 7B 08 2D 03 0A 19 + 01) + (|CLFSWM|::|TILE-TOP-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| + |SYSTEM|::|UNTRACE1| + #Y(#:|195 212 (DEFMETHOD TILE-TOP-LAYOUT (CHILD FATHER) ...)-24-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|195 212 (DEFMETHOD TILE-TOP-LAYOUT (CHILD FATHER) ...)-24-1-1| + #151Y(00 00 00 00 02 00 00 00 00 03 AD 6F 00 AF AD 38 06 72 60 AD 72 + 48 72 98 DB 73 01 33 B0 DC 72 3E AD 73 01 38 B1 DD 8A 04 01 CA + 14 AF 8E 92 80 4B B2 E0 72 3E AE 97 05 73 02 37 73 02 35 38 01 + 72 B7 72 97 B3 E1 72 3E B4 E3 72 3E AF 73 02 37 73 02 35 38 01 + 72 B7 72 97 E2 B0 38 01 72 B7 73 02 35 E2 B6 E3 72 3E DB B2 33 + 01 36 14 73 02 37 38 01 72 B7 73 02 35 63 40 05 19 08 B2 E0 72 + 3E 72 97 B3 E1 72 3E 72 97 E2 B5 DC 72 3E 73 02 35 E2 B6 E3 72 + 3E A2 1B 54) + (|CLFSWM|::|GET-MANAGED-CHILD| 1. |CLFSWM|::|RW| :|TILE-SIZE| + |CLFSWM|::|GROUP-DATA-SLOT| 0.8f0 |CLFSWM|::|RX| |CLFSWM|::|RY| -2. + |CLFSWM|::|RH|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) + |CLOS|::|SIGNATURE| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|215 218 (DEFUN SET-TILE-TOP-LAYOUT NIL ...)-25| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SET-TILE-TOP-LAYOUT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SET-TILE-TOP-LAYOUT| + #20Y(00 00 00 00 00 00 00 00 06 01 DA DB 30 02 99 03 2F 04 19 01) + ("Tile size in percent (%)" :|TILE-SIZE| |CLFSWM|::|LAYOUT-ASK-SIZE| + |CLFSWM|::|TILE-TOP-LAYOUT| |CLFSWM|::|SET-LAYOUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Tile Top: main child on top and others on bottom")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|220 220 (REGISTER-LAYOUT 'SET-TILE-TOP-LAYOUT)-26| + #15Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 19 01) + (|CLFSWM|::|SET-TILE-TOP-LAYOUT| |CLFSWM|::|REGISTER-LAYOUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|224 226 (DEFGENERIC TILE-BOTTOM-LAYOUT (CHILD FATHER) ...)-27| + #112Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 6B 03 99 + 04 DA DF AF E0 E1 E2 E3 E4 E5 E6 01 03 BA 6F 0D 1B 24 AF 38 01 80 9E + 03 14 AD 31 AD 16 02 1B 14 94 00 94 00 9E 5C 5C 78 76 00 7B 02 A1 21 + 63 9D FC FB 16 02 83 00 AC 8D 94 66 16 01 9E 16 01 F8 E8 6B 0F EA BC + EB DA 6E 03 12 ED 63 6E 03 14 EF 63 7B 06 33 02 22 9B 0B 02) + (|CLFSWM|::|TILE-BOTTOM-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| + |SYSTEM|::|UNTRACE1| |CLOS|::|| + |CLOS|::|ENSURE-GENERIC-FUNCTION| :|GENERIC-FUNCTION-CLASS| :|LAMBDA-LIST| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|ARGUMENT-PRECEDENCE-ORDER| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|DOCUMENTATION| + "Tile Bottom: main child on bottom and others on top" |CLOS|::|METHODS| + |CLOS|::|CLASS-DEFAULT-INITARGS| :|METHOD-CLASS| + |CLOS|::|| :|METHOD-COMBINATION| :|NAME| + |CLOS|::|MAKE-GENERIC-FUNCTION-PROTOTYPE| |CLOS|::|STANDARD| + |CLOS|::|FIND-METHOD-COMBINATION| :|DECLARATIONS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|228 243 (DEFMETHOD TILE-BOTTOM-LAYOUT (CHILD FATHER) ...)-28| + #48Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 64 38 02 72 2A 64 38 02 72 2A 7B 02 7B 08 2D 03 0A 19 + 01) + (|CLFSWM|::|TILE-BOTTOM-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| + |SYSTEM|::|UNTRACE1| + #Y(#:|228 243 (DEFMETHOD TILE-BOTTOM-LAYOUT (CHILD FATHER) ...)-28-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|228 243 (DEFMETHOD TILE-BOTTOM-LAYOUT (CHILD FATHER) ...)-28-1-1| + #153Y(00 00 00 00 02 00 00 00 00 03 AD 6F 00 AF AD 38 06 72 60 AD 72 + 48 72 98 DB 73 01 33 B0 DC 72 3E AD 73 01 38 B1 DD 8A 04 01 CA + 14 AF 8E 92 3B B2 E0 72 3E AE 97 05 73 02 37 73 02 35 38 01 72 + B7 72 97 B3 E1 72 3E 72 97 E3 B0 38 01 72 B7 73 02 35 E3 B6 E2 + 72 3E DB B2 33 01 36 14 73 02 37 38 01 72 B7 73 02 35 40 04 19 + 08 B2 E0 72 3E 72 97 B3 E1 72 3E B4 E2 72 3E DB B0 73 01 36 73 + 02 37 73 02 35 38 01 72 B7 72 97 E3 B5 DC 72 3E 73 02 35 E3 B6 + E2 72 3E A2 1B 42) + (|CLFSWM|::|GET-MANAGED-CHILD| 1. |CLFSWM|::|RW| :|TILE-SIZE| + |CLFSWM|::|GROUP-DATA-SLOT| 0.8f0 |CLFSWM|::|RX| |CLFSWM|::|RY| + |CLFSWM|::|RH| -2.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) + |CLOS|::|SIGNATURE| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|247 250 (DEFUN SET-TILE-BOTTOM-LAYOUT NIL ...)-29| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SET-TILE-BOTTOM-LAYOUT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SET-TILE-BOTTOM-LAYOUT| + #20Y(00 00 00 00 00 00 00 00 06 01 DA DB 30 02 99 03 2F 04 19 01) + ("Tile size in percent (%)" :|TILE-SIZE| |CLFSWM|::|LAYOUT-ASK-SIZE| + |CLFSWM|::|TILE-BOTTOM-LAYOUT| |CLFSWM|::|SET-LAYOUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Tile Bottom: main child on bottom and others on top")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|253 253 (REGISTER-LAYOUT 'SET-TILE-BOTTOM-LAYOUT)-30| + #15Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 19 01) + (|CLFSWM|::|SET-TILE-BOTTOM-LAYOUT| |CLFSWM|::|REGISTER-LAYOUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|259 261 (DEFGENERIC TILE-SPACE-LAYOUT (CHILD FATHER) ...)-31| + #112Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 6B 03 99 + 04 DA DF AF E0 E1 E2 E3 E4 E5 E6 01 03 BA 6F 0D 1B 24 AF 38 01 80 9E + 03 14 AD 31 AD 16 02 1B 14 94 00 94 00 9E 5C 5C 78 76 00 7B 02 A1 21 + 63 9D FC FB 16 02 83 00 AC 8D 94 66 16 01 9E 16 01 F8 E8 6B 0F EA BC + EB DA 6E 03 12 ED 63 6E 03 14 EF 63 7B 06 33 02 22 9B 0B 02) + (|CLFSWM|::|TILE-SPACE-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| + |SYSTEM|::|UNTRACE1| |CLOS|::|| + |CLOS|::|ENSURE-GENERIC-FUNCTION| :|GENERIC-FUNCTION-CLASS| :|LAMBDA-LIST| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|ARGUMENT-PRECEDENCE-ORDER| + (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) :|DOCUMENTATION| + "Tile Space: tile child in its group leaving spaces between them" + |CLOS|::|METHODS| |CLOS|::|CLASS-DEFAULT-INITARGS| :|METHOD-CLASS| + |CLOS|::|| :|METHOD-COMBINATION| :|NAME| + |CLOS|::|MAKE-GENERIC-FUNCTION-PROTOTYPE| |CLOS|::|STANDARD| + |CLOS|::|FIND-METHOD-COMBINATION| :|DECLARATIONS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|263 277 (DEFMETHOD TILE-SPACE-LAYOUT (CHILD FATHER) ...)-32| + #48Y(00 00 00 00 00 00 00 00 00 01 DA DB 38 01 8F 85 03 DA 2F 02 DA DD DE 63 + DF E0 E1 E2 E3 64 38 02 72 2A 64 38 02 72 2A 7B 02 7B 08 2D 03 0A 19 + 01) + (|CLFSWM|::|TILE-SPACE-LAYOUT| |SYSTEM|::|TRACED-DEFINITION| + |SYSTEM|::|UNTRACE1| + #Y(#:|263 277 (DEFMETHOD TILE-SPACE-LAYOUT (CHILD FATHER) ...)-32-1| + #15Y(00 00 00 00 01 00 00 00 00 02 DA C6 5D 19 02) + (#Y(#:|263 277 (DEFMETHOD TILE-SPACE-LAYOUT (CHILD FATHER) ...)-32-1-1| + #166Y(00 00 00 00 02 00 00 00 00 03 AD 6F 00 AF AD 38 06 72 60 AD 72 + 48 AC 72 9D 38 01 72 B5 B1 DB 72 3E AD 73 01 38 B2 DC 72 3E AF + AF 73 01 38 38 01 72 B5 73 01 38 B3 DD 8A 04 01 CA 14 AC E0 91 + 01 30 02 CC F8 E2 B5 E3 72 3E B3 B2 72 B8 B1 73 02 37 38 01 72 + B6 B1 B0 73 02 37 73 04 35 38 01 72 B7 E2 B6 E4 72 3E B4 B3 73 + 01 38 38 01 72 B6 B1 73 02 37 38 01 72 B6 B1 B1 73 02 37 73 04 + 35 38 01 72 B7 B0 E5 E5 B3 B2 73 03 37 73 02 36 38 01 72 B7 B0 + E5 E5 B3 B3 73 03 37 73 02 36 38 01 72 B7 63 40 05 19 0A) + (|CLFSWM|::|GET-MANAGED-CHILD| |CLFSWM|::|RW| |CLFSWM|::|RH| + :|TILE-SPACE-SIZE| |CLFSWM|::|GROUP-DATA-SLOT| 0.1f0 0.5f0 0.45f0 + 1. |CLFSWM|::|RX| |CLFSWM|::|RY| 2.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|T|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) + :|QUALIFIERS| :|LAMBDA-LIST| (|CLFSWM|::|CHILD| |CLFSWM|::|FATHER|) + |CLOS|::|SIGNATURE| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + :|SPECIALIZERS| |CLOS|::|DO-DEFMETHOD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|279 282 (DEFUN SET-SPACE-TILE-LAYOUT NIL ...)-33| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SET-SPACE-TILE-LAYOUT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SET-SPACE-TILE-LAYOUT| + #22Y(00 00 00 00 00 00 00 00 06 01 DA DB DC 2D 03 03 99 04 2F 05 19 01) + ("Space size in percent (%)" :|TILE-SPACE-SIZE| 10. + |CLFSWM|::|LAYOUT-ASK-SIZE| |CLFSWM|::|TILE-SPACE-LAYOUT| + |CLFSWM|::|SET-LAYOUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Tile Space: tile child in its group leaving spaces between them")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|284 284 (REGISTER-LAYOUT 'SET-SPACE-TILE-LAYOUT)-34| + #15Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 19 01) + (|CLFSWM|::|SET-SPACE-TILE-LAYOUT| |CLFSWM|::|REGISTER-LAYOUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: clfswm-layout.fasl ============================================================================== Binary file. No diff available. Added: clfswm-layout.lib ============================================================================== --- (empty file) +++ clfswm-layout.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,87 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CLFSWM")) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SET-LAYOUT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|LAYOUT|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GET-MANAGED-CHILD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|FATHER|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|REGISTER-LAYOUT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|LAYOUT|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|NO-LAYOUT| + '#(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFGENERIC|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|NO-LAYOUT| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|NO-LAYOUT| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SET-NO-LAYOUT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|TILE-LAYOUT| + '#(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFGENERIC|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|TILE-LAYOUT| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SET-TILE-LAYOUT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|LAYOUT-ASK-SIZE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|MSG| |CLFSWM|::|SLOT| |COMMON-LISP|::|&OPTIONAL| + (|COMMON-LISP|::|MIN| 80.)))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|TILE-LEFT-LAYOUT| + '#(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFGENERIC|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|TILE-LEFT-LAYOUT| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SET-TILE-LEFT-LAYOUT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|TILE-RIGHT-LAYOUT| + '#(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFGENERIC|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|TILE-RIGHT-LAYOUT| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SET-TILE-RIGHT-LAYOUT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|TILE-TOP-LAYOUT| + '#(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFGENERIC|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|TILE-TOP-LAYOUT| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SET-TILE-TOP-LAYOUT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|TILE-BOTTOM-LAYOUT| + '#(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFGENERIC|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|TILE-BOTTOM-LAYOUT| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SET-TILE-BOTTOM-LAYOUT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|TILE-SPACE-LAYOUT| + '#(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFGENERIC|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|TILE-SPACE-LAYOUT| + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SET-SPACE-TILE-LAYOUT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) Added: clfswm-layout.lisp ============================================================================== --- (empty file) +++ clfswm-layout.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,284 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Wed Feb 27 22:19:57 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Layout functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + +;;; CONFIG - Layout menu +;;; +;;; To add a new layout: +;;; 1- define your own layout: a method returning the real size of the +;;; child in screen size (integer) as 5 values (rx, ry, rw, rh, raise-p). +;;; This method can use the float size of the child (x, y ,w , h). +;;; It can be specialised for xlib:window or group +;;; 2- Define a seter function for your layout +;;; 3- Register your new layout with register-layout. + + + + +;;; Generic functions +(defun set-layout (layout) + "Set the layout of the current child" + (when (group-p *current-child*) + (setf (group-layout *current-child*) layout) + (leave-second-mode))) + ;;(show-all-childs))) + +(defun get-managed-child (father) + "Return only window in normal mode who can be tiled" + (when (group-p father) + (remove-if #'(lambda (x) + (and (xlib:window-p x) (not (eql (window-type x) :normal)))) + (group-child father)))) + +(defun register-layout (layout) + (setf *layout-list* (append *layout-list* (list layout)))) + + + +;;; No layout +(defgeneric no-layout (child father) + (:documentation "Maximize windows in there group - leave group to there size")) + +(defmethod no-layout ((child xlib:window) father) + (with-slots (rx ry rw rh) father + (values (1+ rx) (1+ ry) (- rw 2) (- rh 2) nil))) + +(defmethod no-layout ((child group) father) + (with-slots ((cx x) (cy y) (cw w) (ch h)) child + (with-slots ((frx rx) (fry ry) (frw rw) (frh rh)) father + (values (round (+ (* cx frw) frx)) + (round (+ (* cy frh) fry)) + (round (* cw frw)) + (round (* ch frh)) + t)))) + +(defun set-no-layout () + "Maximize windows in there group - leave group to there size" + (set-layout #'no-layout)) + +(register-layout 'set-no-layout) + + + + +;;; Tile layout +(defgeneric tile-layout (child father) + (:documentation "Tile child in its group")) + +(defmethod tile-layout (child father) + (let* ((managed-childs (get-managed-child father)) + (pos (position child managed-childs)) + (len (length managed-childs)) + (n (ceiling (sqrt len))) + (dx (/ (group-rw father) n)) + (dy (/ (group-rh father) (ceiling (/ len n))))) + (values (round (+ (group-rx father) (truncate (* (mod pos n) dx)) 1)) + (round (+ (group-ry father) (truncate (* (truncate (/ pos n)) dy)) 1)) + (round (- dx 2)) + (round (- dy 2)) + nil))) + +(defun set-tile-layout () + "Tile child in its group" + (set-layout #'tile-layout)) + +(register-layout 'set-tile-layout) + + +;;; Tile Left +(defun layout-ask-size (msg slot &optional (min 80)) + (when (group-p *current-child*) + (let ((new-size (/ (or (query-number msg) min) 100))) + (when (<= 0 new-size 1) + (setf (group-data-slot *current-child* slot) new-size))))) + + + + +(defgeneric tile-left-layout (child father) + (:documentation "Tile Left: main child on left and others on right")) + +(defmethod tile-left-layout (child father) + (with-slots (rx ry rw rh) father + (let* ((managed-childs (get-managed-child father)) + (pos (position child managed-childs)) + (len (max (1- (length managed-childs)) 1)) + (dy (/ rh len)) + (size (or (group-data-slot father :tile-size) 0.8))) + (if (= pos 0) + (values (1+ rx) + (1+ ry) + (- (round (* rw size)) 2) + (- rh 2) + nil) + (values (1+ (round (+ rx (* rw size)))) + (1+ (round (+ ry (* dy (1- pos))))) + (- (round (* rw (- 1 size))) 2) + (- (round dy) 2) + nil))))) + + +(defun set-tile-left-layout () + "Tile Left: main child on left and others on right" + (layout-ask-size "Tile size in percent (%)" :tile-size) + (set-layout #'tile-left-layout)) + +(register-layout 'set-tile-left-layout) + + + +;;; Tile right +(defgeneric tile-right-layout (child father) + (:documentation "Tile Right: main child on right and others on left")) + +(defmethod tile-right-layout (child father) + (with-slots (rx ry rw rh) father + (let* ((managed-childs (get-managed-child father)) + (pos (position child managed-childs)) + (len (max (1- (length managed-childs)) 1)) + (dy (/ rh len)) + (size (or (group-data-slot father :tile-size) 0.8))) + (if (= pos 0) + (values (1+ (round (+ rx (* rw (- 1 size))))) + (1+ ry) + (- (round (* rw size)) 2) + (- rh 2) + nil) + (values (1+ rx) + (1+ (round (+ ry (* dy (1- pos))))) + (- (round (* rw (- 1 size))) 2) + (- (round dy) 2) + nil))))) + + +(defun set-tile-right-layout () + "Tile Right: main child on right and others on left" + (layout-ask-size "Tile size in percent (%)" :tile-size) + (set-layout #'tile-right-layout)) + + +(register-layout 'set-tile-right-layout) + + + + +;;; Tile Top +(defgeneric tile-top-layout (child father) + (:documentation "Tile Top: main child on top and others on bottom")) + +(defmethod tile-top-layout (child father) + (with-slots (rx ry rw rh) father + (let* ((managed-childs (get-managed-child father)) + (pos (position child managed-childs)) + (len (max (1- (length managed-childs)) 1)) + (dx (/ rw len)) + (size (or (group-data-slot father :tile-size) 0.8))) + (if (= pos 0) + (values (1+ rx) + (1+ ry) + (- rw 2) + (- (round (* rh size)) 2) + nil) + (values (1+ (round (+ rx (* dx (1- pos))))) + (1+ (round (+ ry (* rh size)))) + (- (round dx) 2) + (- (round (* rh (- 1 size))) 2) + nil))))) + + +(defun set-tile-top-layout () + "Tile Top: main child on top and others on bottom" + (layout-ask-size "Tile size in percent (%)" :tile-size) + (set-layout #'tile-top-layout)) + +(register-layout 'set-tile-top-layout) + + + +;;; Tile Bottom +(defgeneric tile-bottom-layout (child father) + (:documentation "Tile Bottom: main child on bottom and others on top")) + +(defmethod tile-bottom-layout (child father) + (with-slots (rx ry rw rh) father + (let* ((managed-childs (get-managed-child father)) + (pos (position child managed-childs)) + (len (max (1- (length managed-childs)) 1)) + (dx (/ rw len)) + (size (or (group-data-slot father :tile-size) 0.8))) + (if (= pos 0) + (values (1+ rx) + (1+ (round (+ ry (* rh (- 1 size))))) + (- rw 2) + (- (round (* rh size)) 2)) + (values (1+ (round (+ rx (* dx (1- pos))))) + (1+ ry) + (- (round dx) 2) + (- (round (* rh (- 1 size))) 2)))))) + + + +(defun set-tile-bottom-layout () + "Tile Bottom: main child on bottom and others on top" + (layout-ask-size "Tile size in percent (%)" :tile-size) + (set-layout #'tile-bottom-layout)) + + +(register-layout 'set-tile-bottom-layout) + + + + + +;;; Space layout +(defgeneric tile-space-layout (child father) + (:documentation "Tile Space: tile child in its group leaving spaces between them")) + +(defmethod tile-space-layout (child father) + (with-slots (rx ry rw rh) father + (let* ((managed-childs (get-managed-child father)) + (pos (position child managed-childs)) + (len (length managed-childs)) + (n (ceiling (sqrt len))) + (dx (/ rw n)) + (dy (/ rh (ceiling (/ len n)))) + (size (or (group-data-slot father :tile-space-size) 0.1))) + (when (> size 0.5) (setf size 0.45)) + (values (round (+ rx (truncate (* (mod pos n) dx)) (* dx size) 1)) + (round (+ ry (truncate (* (truncate (/ pos n)) dy)) (* dy size) 1)) + (round (- dx (* dx size 2) 2)) + (round (- dy (* dy size 2) 2)) + nil)))) + +(defun set-space-tile-layout () + "Tile Space: tile child in its group leaving spaces between them" + (layout-ask-size "Space size in percent (%)" :tile-space-size 10) + (set-layout #'tile-space-layout)) + +(register-layout 'set-space-tile-layout) Added: clfswm-pack.lisp ============================================================================== --- (empty file) +++ clfswm-pack.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,479 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Tue Feb 12 14:02:45 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Tile, pack and fill functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +;;;,----- +;;;| Tile functions +;;;`----- +(defun tile-workspace-vertically (workspace) + "Tile a workspace vertically" + (let* ((len (max (length (workspace-group-list workspace)) 1)) + (n (ceiling (sqrt len))) + (dx (/ (xlib:screen-width *screen*) n)) + (dy (/ (xlib:screen-height *screen*) (ceiling (/ len n))))) + (loop for group in (workspace-group-list workspace) + for i from 0 do + (setf (group-x group) (1+ (truncate (* (mod i n) dx))) + (group-y group) (1+ (truncate (* (truncate (/ i n)) dy))) + (group-width group) (- (truncate dx) 2) + (group-height group) (- (truncate dy) 2))))) + + +(defun tile-current-workspace-vertically () + "Tile the current workspace vertically" + (minimize-group (current-group)) + (tile-workspace-vertically (current-workspace)) + (show-all-windows-in-workspace (current-workspace))) + + + +(defun tile-workspace-horizontally (workspace) + "Tile a workspace horizontally" + (let* ((len (max (length (workspace-group-list workspace)) 1)) + (n (ceiling (sqrt len))) + (dx (/ (xlib:screen-width *screen*) (ceiling (/ len n)))) + (dy (/ (xlib:screen-height *screen*) n))) + (loop for group in (workspace-group-list workspace) + for i from 0 do + (setf (group-x group) (1+ (truncate (* (truncate (/ i n)) dx))) + (group-y group) (1+ (truncate (* (mod i n) dy))) + (group-width group) (- (truncate dx) 2) + (group-height group) (- (truncate dy) 2))))) + + +(defun tile-current-workspace-horizontally () + "Tile the current workspace horizontally" + (minimize-group (current-group)) + (tile-workspace-horizontally (current-workspace)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun tile-workspace-right (workspace) + "Tile workspace with the current window on the left and others on the right" + (let ((len (length (workspace-group-list workspace))) + (group (first (workspace-group-list workspace)))) + (if (<= len 1) + (setf (group-x group) 0 + (group-y group) 0 + (group-width group) (xlib:screen-width *screen*) + (group-height group) (xlib:screen-height *screen*)) + (let ((dy (/ (xlib:screen-height *screen*) (1- len)))) + (setf (group-x group) 1 + (group-y group) 1 + (group-width group) (- (xlib:screen-width *screen*) *tile-border-size* 1) + (group-height group) (- (xlib:screen-height *screen*) 1)) + (loop :for i :from 0 + :for g :in (rest (workspace-group-list workspace)) + :do (setf (group-x g) (- (xlib:screen-width *screen*) *tile-border-size* -1) + (group-y g) (truncate (* i dy)) + (group-width g) (- *tile-border-size* 2) + (group-height g) (truncate (- dy 1)))))))) + +(defun tile-workspace-left (workspace) + "Tile workspace with the current window on the right and others on the left" + (let ((len (length (workspace-group-list workspace))) + (group (first (workspace-group-list workspace)))) + (if (<= len 1) + (setf (group-x group) 0 + (group-y group) 0 + (group-width group) (xlib:screen-width *screen*) + (group-height group) (xlib:screen-height *screen*)) + (let ((dy (/ (xlib:screen-height *screen*) (1- len)))) + (setf (group-x group) *tile-border-size* + (group-y group) 1 + (group-width group) (- (xlib:screen-width *screen*) *tile-border-size* 1) + (group-height group) (- (xlib:screen-height *screen*) 1)) + (loop :for i :from 0 + :for g :in (rest (workspace-group-list workspace)) + :do (setf (group-x g) 0 + (group-y g) (truncate (* i dy)) + (group-width g) (- *tile-border-size* 2) + (group-height g) (truncate (- dy 1)))))))) + + +(defun tile-workspace-top (workspace) + "Tile workspace with the current window on the bottom and others on the top" + (let ((len (length (workspace-group-list workspace))) + (group (first (workspace-group-list workspace)))) + (if (<= len 1) + (setf (group-x group) 0 + (group-y group) 0 + (group-width group) (xlib:screen-width *screen*) + (group-height group) (xlib:screen-height *screen*)) + (let ((dx (/ (xlib:screen-width *screen*) (1- len)))) + (setf (group-x group) 1 + (group-y group) *tile-border-size* + (group-width group) (- (xlib:screen-width *screen*) 1) + (group-height group) (- (xlib:screen-height *screen*) *tile-border-size* 1)) + (loop :for i :from 0 + :for g :in (rest (workspace-group-list workspace)) + :do (setf (group-x g) (truncate (* i dx)) + (group-y g) 0 + (group-width g) (truncate (- dx 1)) + (group-height g) (- *tile-border-size* 2))))))) + +(defun tile-workspace-bottom (workspace) + "Tile workspace with the current window on the top and others on the bottom" + (let ((len (length (workspace-group-list workspace))) + (group (first (workspace-group-list workspace)))) + (if (<= len 1) + (setf (group-x group) 0 + (group-y group) 0 + (group-width group) (xlib:screen-width *screen*) + (group-height group) (xlib:screen-height *screen*)) + (let ((dx (/ (xlib:screen-width *screen*) (1- len)))) + (setf (group-x group) 1 + (group-y group) 1 + (group-width group) (- (xlib:screen-width *screen*) 1) + (group-height group) (- (xlib:screen-height *screen*) *tile-border-size* 1)) + (loop :for i :from 0 + :for g :in (rest (workspace-group-list workspace)) + :do (setf (group-x g) (truncate (* i dx)) + (group-y g) (- (xlib:screen-height *screen*) *tile-border-size* -1) + (group-width g) (truncate (- dx 1)) + (group-height g) (- *tile-border-size* 2))))))) + + +(defun tile-current-workspace-to () + "Tile the current workspace with the current window on one side and others on the other" + (funcall *tile-workspace-function* (current-workspace)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun reconfigure-tile-workspace () + "Reconfigure the workspace tiling for the current session" + (let ((method (loop :for m = (intern (string-upcase + (query-string "Workspace tiling method (R)ight, (L)eft, (T)op, (B)ottom:")) + :keyword) + :when (member m '(:r :l :t :b)) :return m)) + (size (loop :for s = (parse-integer (query-string "Workspace tiling border size" + (format nil "~A" *tile-border-size*)) + :junk-allowed t) + :when (numberp s) :return s))) + (setf *tile-workspace-function* (case method + (:r 'tile-workspace-right) + (:l 'tile-workspace-left) + (:t 'tile-workspace-top) + (:b 'tile-workspace-bottom)) + *tile-border-size* size))) + + + + +;;;,----- +;;;| Edges functions +;;;`----- +(defun group-x2 (group) + (+ (group-x group) (group-width group))) + +(defun group-y2 (group) + (+ (group-y group) (group-height group))) + + +(defun find-edge-up (current-group workspace) + (let ((y-found 0)) + (dolist (group (workspace-group-list workspace)) + (when (and (not (equal group current-group)) + (<= (group-y2 group) (group-y current-group)) + (>= (group-x2 group) (group-x current-group)) + (<= (group-x group) (group-x2 current-group))) + (setf y-found (max y-found (+ (group-y2 group) 2))))) + y-found)) + +(defun find-edge-down (current-group workspace) + (let ((y-found (xlib:screen-height *screen*))) + (dolist (group (workspace-group-list workspace)) + (when (and (not (equal group current-group)) + (>= (group-y group) (group-y2 current-group)) + (>= (group-x2 group) (group-x current-group)) + (<= (group-x group) (group-x2 current-group))) + (setf y-found (min y-found (- (group-y group) 2))))) + y-found)) + +(defun find-edge-right (current-group workspace) + (let ((x-found (xlib:screen-width *screen*))) + (dolist (group (workspace-group-list workspace)) + (when (and (not (equal group current-group)) + (>= (group-x group) (group-x2 current-group)) + (>= (group-y2 group) (group-y current-group)) + (<= (group-y group) (group-y2 current-group))) + (setf x-found (min x-found (- (group-x group) 2))))) + x-found)) + + +(defun find-edge-left (current-group workspace) + (let ((x-found 0)) + (dolist (group (workspace-group-list workspace)) + (when (and (not (equal group current-group)) + (<= (group-x2 group) (group-x current-group)) + (>= (group-y2 group) (group-y current-group)) + (<= (group-y group) (group-y2 current-group))) + (setf x-found (max x-found (+ (group-x2 group) 2))))) + x-found)) + + + +;;;,----- +;;;| Pack functions +;;;`----- + + + +(defun pack-group-up (workspace group) + "Pack group to up" + (let ((y-found (find-edge-up group workspace))) + (setf (group-y group) y-found))) + + +(defun pack-group-down (workspace group) + "Pack group to down" + (let ((y-found (find-edge-down group workspace))) + (setf (group-y group) (- y-found (group-height group))))) + +(defun pack-group-right (workspace group) + "Pack group to right" + (let ((x-found (find-edge-right group workspace))) + (setf (group-x group) (- x-found (group-width group))))) + + +(defun pack-group-left (workspace group) + "Pack group to left" + (let ((x-found (find-edge-left group workspace))) + (setf (group-x group) x-found))) + + + + +(defun pack-current-group-up () + "Pack current group to up" + (pack-group-up (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun pack-current-group-down () + "Pack current group to down" + (pack-group-down (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + +(defun pack-current-group-right () + "Pack current group to right" + (pack-group-right (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun pack-current-group-left () + "Pack current group to left" + (pack-group-left (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun center-group (group) + "Center group" + (setf (group-x group) (truncate (/ (- (xlib:screen-width *screen*) (group-width group)) 2)) + (group-y group) (truncate (/ (- (xlib:screen-height *screen*) (group-height group)) 2)))) + +(defun center-current-group () + "Center the current group" + (center-group (current-group)) + (show-all-windows-in-workspace (current-workspace))) + +;;;,----- +;;;| Fill functions +;;;`----- + + +(defun fill-group-up (workspace group) + "Fill a group up" + (let* ((y-found (find-edge-up group workspace)) + (dy (- (group-y group) y-found))) + (setf (group-y group) y-found + (group-height group) (+ (group-height group) dy)))) + +(defun fill-group-down (workspace group) + "Fill a group down" + (let* ((y-found (find-edge-down group workspace)) + (dy (- y-found (group-y2 group)))) + (setf (group-height group) (+ (group-height group) dy)))) + + +(defun fill-group-left (workspace group) + "Fill a group left" + (let* ((x-found (find-edge-left group workspace)) + (dx (- (group-x group) x-found))) + (setf (group-x group) x-found + (group-width group) (+ (group-width group) dx)))) + +(defun fill-group-right (workspace group) + "Fill a group rigth" + (let* ((x-found (find-edge-right group workspace)) + (dx (- x-found (group-x2 group)))) + (setf (group-width group) (+ (group-width group) dx)))) + + +(defun fill-current-group-up () + "Fill the current group up" + (fill-group-up (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + +(defun fill-current-group-down () + "Fill the current group down" + (fill-group-down (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun fill-current-group-left () + "Fill the current group left" + (fill-group-left (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + +(defun fill-current-group-right () + "Fill the current group rigth" + (fill-group-right (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + + +;;;,----- +;;;| Lower functions +;;;`----- + +(defun resize-down-group (group) + "Resize down a group" + (when (> (group-width group) 100) + (setf (group-x group) (+ (group-x group) 10) + (group-width group) (max (- (group-width group) 20)))) + (when (> (group-height group) 100) + (setf (group-y group) (+ (group-y group) 10) + (group-height group) (max (- (group-height group) 20))))) + + +(defun resize-minimal-group (group) + "Resize down a group to its minimal size" + (loop while (> (group-width group) 100) do + (setf (group-x group) (+ (group-x group) 10) + (group-width group) (max (- (group-width group) 20)))) + (loop while (> (group-height group) 100) do + (setf (group-y group) (+ (group-y group) 10) + (group-height group) (max (- (group-height group) 20))))) + + + +(defun resize-down-current-group () + "Resize down the current group" + (resize-down-group (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun resize-minimal-current-group () + "Resize down the current group to its minimal size" + (resize-minimal-group (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + + + +(defun resize-half-width-left (group) + (setf (group-width group) + (max (truncate (/ (group-width group) 2)) + 100))) + +(defun resize-half-width-right (group) + (let* ((new-size (max (truncate (/ (group-width group) 2)) 100)) + (dx (- (group-width group) new-size))) + (setf (group-width group) new-size) + (incf (group-x group) (max dx 0)))) + + +(defun resize-half-height-up (group) + (setf (group-height group) + (max (truncate (/ (group-height group) 2)) + 100))) + +(defun resize-half-height-down (group) + (let* ((new-size (max (truncate (/ (group-height group) 2)) 100)) + (dy (- (group-height group) new-size))) + (setf (group-height group) new-size) + (incf (group-y group) (max dy 0)))) + + + + +(defun resize-half-width-left-current-group () + "Resize the current group to its half width to left" + (resize-half-width-left (current-group)) + (show-all-windows-in-workspace (current-workspace))) + +(defun resize-half-width-right-current-group () + "Resize the current group to its half width to right" + (resize-half-width-right (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun resize-half-height-up-current-group () + "Resize the current group to its half height to up" + (resize-half-height-up (current-group)) + (show-all-windows-in-workspace (current-workspace))) + +(defun resize-half-height-down-current-group () + "Resize the current group to its half height to down" + (resize-half-height-down (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + + +;;;,----- +;;;| Explode/Implode functions +;;;`----- +(defun explode-group (workspace group) + "Create a new group for each window in group" + (dolist (w (rest (group-window-list group))) + (add-group-in-workspace (copy-group *default-group*) workspace) + (add-window-in-group w (first (workspace-group-list workspace))) + (remove-window-in-group w group))) + +(defun implode-group (workspace) + "Move all windows in workspace to one group and remove other groups" + (dolist (g (rest (workspace-group-list workspace))) + (dolist (w (group-window-list g)) + (add-window-in-group w (first (workspace-group-list workspace))) + (remove-window-in-group w g)) + (remove-group-in-workspace g workspace))) + + + +(defun explode-current-group () + "Create a new group for each window in the current group" + (explode-group (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun implode-current-group () + "Move all windows in the current workspace to one group and remove other groups" + (implode-group (current-workspace)) + (show-all-windows-in-workspace (current-workspace))) + Added: clfswm-second-mode.fas ============================================================================== --- (empty file) +++ clfswm-second-mode.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,288 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 28 (IN-PACKAGE :CLFSWM)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CLFSWM" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|30 30 (DEFPARAMETER *SM-WINDOW* NIL)-2| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-WINDOW*|) |CLFSWM|::|*SM-WINDOW*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|31 31 (DEFPARAMETER *SM-FONT* NIL)-3| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-FONT*|) |CLFSWM|::|*SM-FONT*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|32 32 (DEFPARAMETER *SM-GC* NIL)-4| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-GC*|) |CLFSWM|::|*SM-GC*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|34 35 (DEFPARAMETER *SECOND-MODE-PROGRAM* NIL ...)-5| + #26Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 DB DC DD 2D 03 04 C6 + 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SECOND-MODE-PROGRAM*|) + |CLFSWM|::|*SECOND-MODE-PROGRAM*| |COMMON-LISP|::|VARIABLE| + "Execute the program string if not nil" |SYSTEM|::|%SET-DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|38 65 (DEFUN DRAW-SECOND-MODE-WINDOW NIL ...)-6| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|DRAW-SECOND-MODE-WINDOW| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DRAW-SECOND-MODE-WINDOW| + #86Y(00 00 00 00 00 00 00 00 06 01 6B 00 2F 01 38 02 72 76 DC AD 38 02 + 31 8B AC 81 77 00 AC 72 48 6B 00 6B 03 DE 6B 05 6B 06 6F 07 B1 73 + 02 37 73 01 36 73 02 37 38 01 72 B6 DE 6B 08 6B 06 6F 09 6B 06 6F + 0A 73 01 36 73 02 35 73 02 37 38 01 72 B6 B1 2D 05 0B 19 03) + (|CLFSWM|::|*SM-WINDOW*| |XLIB|::|CLEAR-AREA| "Second mode" + |CLFSWM|::|*SM-GC*| #10r1/2 |CLFSWM|::|*SM-WIDTH*| + |CLFSWM|::|*SM-FONT*| |XLIB|::|MAX-CHAR-WIDTH| |CLFSWM|::|*SM-HEIGHT*| + |XLIB|::|FONT-ASCENT| |XLIB|::|FONT-DESCENT| + |XLIB|::|DRAW-IMAGE-GLYPHS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|70 74 (DEFUN SM-HANDLE-KEY-PRESS (&REST EVENT-SLOTS &KEY ...) ...)-7| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SM-HANDLE-KEY-PRESS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SM-HANDLE-KEY-PRESS| + #29Y(00 00 00 00 00 00 00 00 C7 00 03 00 00 00 3D 02 3D 01 6B 03 AF AF + 2D 03 04 2E 05 19 05) + (:|ROOT| :|CODE| :|STATE| |CLFSWM|::|*SECOND-KEYS*| + |CLFSWM|::|FUNCALL-KEY-FROM-CODE| |CLFSWM|::|DRAW-SECOND-MODE-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|ROOT| |CLFSWM|::|CODE| |CLFSWM|::|STATE| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|76 79 (DEFUN SM-HANDLE-ENTER-NOTIFY (&REST EVENT-SLOTS &KEY ...) ...)-8| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SM-HANDLE-ENTER-NOTIFY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SM-HANDLE-ENTER-NOTIFY| + #18Y(00 00 00 00 00 00 00 00 C7 00 02 00 00 00 2E 02 19 04) + (:|ROOT-X| :|ROOT-Y| |CLFSWM|::|DRAW-SECOND-MODE-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|81 84 (DEFUN SM-HANDLE-MOTION-NOTIFY (&REST EVENT-SLOTS &KEY ...) ...)-9| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SM-HANDLE-MOTION-NOTIFY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SM-HANDLE-MOTION-NOTIFY| + #44Y(00 00 00 00 00 00 00 00 C7 00 02 00 00 00 3D 02 3B 01 09 7D 01 2E + 02 1D 07 00 19 04 2E 02 1C 79 6B 03 DE DF B1 B1 E0 2D 06 07 19 04) + (:|ROOT-X| :|ROOT-Y| |CLFSWM|::|COMPRESS-MOTION-NOTIFY| + |CLFSWM|::|*MOUSE-ACTION*| |CLFSWM|::|MOTION| 0. + #.#'|COMMON-LISP|::|FIRST| |CLFSWM|::|FUNCALL-BUTTON-FROM-CODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|86 89 (DEFUN SM-HANDLE-BUTTON-PRESS (&REST EVENT-SLOTS &KEY ...) ...)-10| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SM-HANDLE-BUTTON-PRESS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SM-HANDLE-BUTTON-PRESS| + #36Y(00 00 00 00 00 00 00 00 C7 00 04 00 00 00 3D 04 3D 03 3D 02 3D 01 + 6B 04 AF AF B3 B3 DF 2D 06 06 2E 07 19 06) + (:|ROOT-X| :|ROOT-Y| :|CODE| :|STATE| |CLFSWM|::|*MOUSE-ACTION*| + #.#'|COMMON-LISP|::|FIRST| |CLFSWM|::|FUNCALL-BUTTON-FROM-CODE| + |CLFSWM|::|DRAW-SECOND-MODE-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|CODE| + |CLFSWM|::|STATE| |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|91 94 (DEFUN SM-HANDLE-BUTTON-RELEASE (&REST EVENT-SLOTS &KEY ...) ...)-11| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SM-HANDLE-BUTTON-RELEASE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SM-HANDLE-BUTTON-RELEASE| + #36Y(00 00 00 00 00 00 00 00 C7 00 04 00 00 00 3D 04 3D 03 3D 02 3D 01 + 6B 04 AF AF B3 B3 DF 2D 06 06 2E 07 19 06) + (:|ROOT-X| :|ROOT-Y| :|CODE| :|STATE| |CLFSWM|::|*MOUSE-ACTION*| + #.#'|COMMON-LISP|::|THIRD| |CLFSWM|::|FUNCALL-BUTTON-FROM-CODE| + |CLFSWM|::|DRAW-SECOND-MODE-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|CODE| + |CLFSWM|::|STATE| |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|96 98 (DEFUN SM-HANDLE-CONFIGURE-REQUEST (&REST EVENT-SLOTS) ...)-12| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SM-HANDLE-CONFIGURE-REQUEST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SM-HANDLE-CONFIGURE-REQUEST| + #19Y(00 00 00 00 00 00 00 00 07 16 99 00 9F 37 00 2E 01 19 02) + (|CLFSWM|::|HANDLE-CONFIGURE-REQUEST| + |CLFSWM|::|DRAW-SECOND-MODE-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|101 103 (DEFUN SM-HANDLE-CONFIGURE-NOTIFY (&REST EVENT-SLOTS) ...)-13| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SM-HANDLE-CONFIGURE-NOTIFY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SM-HANDLE-CONFIGURE-NOTIFY| + #19Y(00 00 00 00 00 00 00 00 07 16 99 00 9F 37 00 2E 01 19 02) + (|CLFSWM|::|HANDLE-CONFIGURE-NOTIFY| + |CLFSWM|::|DRAW-SECOND-MODE-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|106 108 (DEFUN SM-HANDLE-DESTROY-NOTIFY (&REST EVENT-SLOTS) ...)-14| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SM-HANDLE-DESTROY-NOTIFY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SM-HANDLE-DESTROY-NOTIFY| + #19Y(00 00 00 00 00 00 00 00 07 16 99 00 9F 37 00 2E 01 19 02) + (|CLFSWM|::|HANDLE-DESTROY-NOTIFY| |CLFSWM|::|DRAW-SECOND-MODE-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|110 112 (DEFUN SM-HANDLE-MAP-REQUEST (&REST EVENT-SLOTS) ...)-15| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SM-HANDLE-MAP-REQUEST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SM-HANDLE-MAP-REQUEST| + #19Y(00 00 00 00 00 00 00 00 07 16 99 00 9F 37 00 2E 01 19 02) + (|CLFSWM|::|HANDLE-MAP-REQUEST| |CLFSWM|::|DRAW-SECOND-MODE-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|114 116 (DEFUN SM-HANDLE-UNMAP-NOTIFY (&REST EVENT-SLOTS) ...)-16| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SM-HANDLE-UNMAP-NOTIFY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SM-HANDLE-UNMAP-NOTIFY| + #19Y(00 00 00 00 00 00 00 00 07 16 99 00 9F 37 00 2E 01 19 02) + (|CLFSWM|::|HANDLE-UNMAP-NOTIFY| |CLFSWM|::|DRAW-SECOND-MODE-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|118 120 (DEFUN SM-HANDLE-EXPOSURE (&REST EVENT-SLOTS) ...)-17| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SM-HANDLE-EXPOSURE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SM-HANDLE-EXPOSURE| + #19Y(00 00 00 00 00 00 00 00 07 16 99 00 9F 37 00 2E 01 19 02) + (|CLFSWM|::|HANDLE-EXPOSURE| |CLFSWM|::|DRAW-SECOND-MODE-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|124 140 (SETF *SM-BUTTON-PRESS-HOOK* #'SM-HANDLE-BUTTON-PRESS ...)-18| + #56Y(00 00 00 00 00 00 00 00 00 01 98 00 0F 01 98 02 0F 03 98 04 0F 05 98 06 + 0F 07 98 08 0F 09 98 0A 0F 0B 98 0C 0F 0D 98 0E 0F 0F 98 10 0F 11 98 12 + 0F 13 98 14 0F 15 19 01) + (|CLFSWM|::|SM-HANDLE-BUTTON-PRESS| |CLFSWM|::|*SM-BUTTON-PRESS-HOOK*| + |CLFSWM|::|SM-HANDLE-BUTTON-RELEASE| |CLFSWM|::|*SM-BUTTON-RELEASE-HOOK*| + |CLFSWM|::|SM-HANDLE-MOTION-NOTIFY| |CLFSWM|::|*SM-MOTION-NOTIFY-HOOK*| + |CLFSWM|::|SM-HANDLE-KEY-PRESS| |CLFSWM|::|*SM-KEY-PRESS-HOOK*| + |CLFSWM|::|SM-HANDLE-CONFIGURE-REQUEST| + |CLFSWM|::|*SM-CONFIGURE-REQUEST-HOOK*| + |CLFSWM|::|SM-HANDLE-CONFIGURE-NOTIFY| + |CLFSWM|::|*SM-CONFIGURE-NOTIFY-HOOK*| |CLFSWM|::|SM-HANDLE-DESTROY-NOTIFY| + |CLFSWM|::|*SM-DESTROY-NOTIFY-HOOK*| |CLFSWM|::|SM-HANDLE-ENTER-NOTIFY| + |CLFSWM|::|*SM-ENTER-NOTIFY-HOOK*| |CLFSWM|::|SM-HANDLE-EXPOSURE| + |CLFSWM|::|*SM-EXPOSURE-HOOK*| |CLFSWM|::|SM-HANDLE-MAP-REQUEST| + |CLFSWM|::|*SM-MAP-REQUEST-HOOK*| |CLFSWM|::|SM-HANDLE-UNMAP-NOTIFY| + |CLFSWM|::|*SM-UNMAP-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|146 166 (DEFUN SM-HANDLE-EVENT (&REST EVENT-SLOTS &KEY ...) ...)-19| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SM-HANDLE-EVENT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SM-HANDLE-EVENT| + #75Y(02 00 01 00 00 00 00 00 C7 00 02 00 00 00 00 2B 02 7F 04 00 00 3B + 02 01 00 0B 00 01 9D 2B 01 00 0B 00 00 4B 02 10 B0 AF 6D 03 02 B1 + 6D 04 01 57 05 B0 36 00 16 06 4D 16 01 02 19 05 58 67 00 00 01 76 + 00 AD 36 01 18 02 01 19 02) + (:|DISPLAY| :|EVENT-KEY| #(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|SM-HANDLE-EVENT-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|SM-HANDLE-EVENT-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|SM-HANDLE-EVENT-2| + #81Y(00 00 00 00 00 00 00 00 06 01 07 01 02 26 01 3E 0E 02 1B 32 0E + 04 1B 2E 0E 05 1B 2A 0E 06 1B 26 0E 07 1B 22 0E 08 1B 1E 0E 09 + 1B 1A 0E 0A 1B 16 0E 0B 1B 12 0E 0C 1B 0E 0E 0D 1B 0A 0E 0E 1B + 06 0E 0F 1B 02 0E 10 14 69 01 01 30 03 19 01 00 19 01) + (|COMMON-LISP|::|NIL| + #S(|COMMON-LISP|::|HASH-TABLE| :|TEST| |EXT|::|STABLEHASH-EQ| + (:|EXPOSURE| . 53.) (:|ENTER-NOTIFY| . 49.) + (:|CREATE-NOTIFY| . 45.) (:|PROPERTY-NOTIFY| . 41.) + (:|MAPPING-NOTIFY| . 37.) (:|DESTROY-NOTIFY| . 33.) + (:|UNMAP-NOTIFY| . 29.) (:|MAP-REQUEST| . 25.) + (:|CONFIGURE-NOTIFY| . 21.) (:|CONFIGURE-REQUEST| . 17.) + (:|KEY-PRESS| . 13.) (:|MOTION-NOTIFY| . 9.) + (:|BUTTON-RELEASE| . 5.) (:|BUTTON-PRESS| . 1.)) + |CLFSWM|::|*SM-BUTTON-PRESS-HOOK*| |CLFSWM|::|CALL-HOOK| + |CLFSWM|::|*SM-BUTTON-RELEASE-HOOK*| + |CLFSWM|::|*SM-MOTION-NOTIFY-HOOK*| |CLFSWM|::|*SM-KEY-PRESS-HOOK*| + |CLFSWM|::|*SM-CONFIGURE-REQUEST-HOOK*| + |CLFSWM|::|*SM-CONFIGURE-NOTIFY-HOOK*| + |CLFSWM|::|*SM-MAP-REQUEST-HOOK*| + |CLFSWM|::|*SM-UNMAP-NOTIFY-HOOK*| + |CLFSWM|::|*SM-DESTROY-NOTIFY-HOOK*| + |CLFSWM|::|*SM-MAPPING-NOTIFY-HOOK*| + |CLFSWM|::|*SM-PROPERTY-NOTIFY-HOOK*| + |CLFSWM|::|*SM-CREATE-NOTIFY-HOOK*| + |CLFSWM|::|*SM-ENTER-NOTIFY-HOOK*| |CLFSWM|::|*SM-EXPOSURE-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| |XLIB|::|WINDOW-ERROR| + |XLIB|::|DRAWABLE-ERROR|) + 46.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|DISPLAY| |CLFSWM|::|EVENT-KEY| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|170 211 (DEFUN SECOND-KEY-MODE NIL ...)-20| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SECOND-KEY-MODE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SECOND-KEY-MODE| + #198Y(04 00 02 00 00 00 00 00 06 01 DA 6B 01 DC DD 6B 04 DF AD E0 81 2F + 00 6B 07 73 01 36 73 02 37 38 01 72 B6 E2 E3 E4 6B 07 E5 6B 0C E7 + 6B 0E 6F 0F EA EB EC 6B 13 6F 0F EE 6B 04 DF AD EF 81 2F 00 F0 F1 + 2D 14 18 0F 19 6B 1A 6B 1B 30 1C 0F 1D 65 1E 6B 19 65 1F 6B 20 6F + 0F E7 6B 0E 6F 0F 65 21 6B 1D 65 22 65 23 2D 0A 24 0F 25 6B 19 2F + 26 2E 27 2E 28 2E 29 6B 01 2F 2A 6B 01 65 2B 65 2C 2D 03 2D 53 1D + 03 2E 50 17 6B 19 2F 2F 6B 1A 2F 30 6B 1A 65 31 99 32 2D 03 33 6B + 1A 2F 30 1B 69 3E 54 6B 25 2F 34 6B 1D 2F 35 6B 19 2F 36 2E 37 2E + 38 2E 39 2E 3A 55 2E 3B 0E 3C 1F 08 14 2F 3D 00 0F 3C 19 01 19 01) + (:|PARENT| |CLFSWM|::|*ROOT*| :|X| #10r1/2 |CLFSWM|::|*SCREEN*| + |XLIB|::|SCREEN| 2. |CLFSWM|::|*SM-WIDTH*| :|Y| 0. :|WIDTH| :|HEIGHT| + |CLFSWM|::|*SM-HEIGHT*| :|BACKGROUND| |CLFSWM|::|*SM-BACKGROUND-COLOR*| + |CLFSWM|::|GET-COLOR| :|BORDER-WIDTH| 1. :|BORDER| + |CLFSWM|::|*SM-BORDER-COLOR*| :|COLORMAP| 9. :|EVENT-MASK| + (:|EXPOSURE|) |XLIB|::|CREATE-WINDOW| |CLFSWM|::|*SM-WINDOW*| + |CLFSWM|::|*DISPLAY*| |CLFSWM|::|*SM-FONT-STRING*| |XLIB|::|OPEN-FONT| + |CLFSWM|::|*SM-FONT*| :|DRAWABLE| :|FOREGROUND| + |CLFSWM|::|*SM-FOREGROUND-COLOR*| :|FONT| :|LINE-STYLE| :|SOLID| + |XLIB|::|CREATE-GCONTEXT| |CLFSWM|::|*SM-GC*| |XLIB|::|MAP-WINDOW| + |CLFSWM|::|DRAW-SECOND-MODE-WINDOW| |CLFSWM|::|NO-FOCUS| + |CLFSWM|::|UNGRAB-MAIN-KEYS| |CLFSWM|::|XGRAB-KEYBOARD| 66. 67. + |CLFSWM|::|XGRAB-POINTER| |CLFSWM|::|EXIT-SECOND-LOOP| + |CLFSWM|::|RAISE-WINDOW| |XLIB|::|DISPLAY-FINISH-OUTPUT| :|HANDLER| + |CLFSWM|::|SM-HANDLE-EVENT| |XLIB|::|PROCESS-EVENT| + |XLIB|::|FREE-GCONTEXT| |XLIB|::|CLOSE-FONT| |XLIB|::|DESTROY-WINDOW| + |CLFSWM|::|XUNGRAB-KEYBOARD| |CLFSWM|::|XUNGRAB-POINTER| + |CLFSWM|::|GRAB-MAIN-KEYS| |CLFSWM|::|SHOW-ALL-CHILDS| + |CLFSWM|::|WAIT-NO-KEY-OR-BUTTON-PRESS| + |CLFSWM|::|*SECOND-MODE-PROGRAM*| |TOOLS|::|DO-SHELL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Switch to editing mode")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|215 218 (DEFUN LEAVE-SECOND-MODE NIL ...)-21| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|LEAVE-SECOND-MODE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|LEAVE-SECOND-MODE| + #15Y(00 00 00 00 00 00 00 00 06 01 2E 00 DB 00 52) + (|CLFSWM|::|BANISH-POINTER| |CLFSWM|::|EXIT-SECOND-LOOP|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Leave second mode")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: clfswm-second-mode.fasl ============================================================================== Binary file. No diff available. Added: clfswm-second-mode.lib ============================================================================== --- (empty file) +++ clfswm-second-mode.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,60 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CLFSWM")) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-WINDOW*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-FONT*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-GC*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SECOND-MODE-PROGRAM*|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DRAW-SECOND-MODE-WINDOW| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SM-HANDLE-KEY-PRESS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|ROOT| |CLFSWM|::|CODE| |CLFSWM|::|STATE| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SM-HANDLE-ENTER-NOTIFY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SM-HANDLE-MOTION-NOTIFY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SM-HANDLE-BUTTON-PRESS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|CODE| |CLFSWM|::|STATE| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SM-HANDLE-BUTTON-RELEASE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |CLFSWM|::|CODE| |CLFSWM|::|STATE| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SM-HANDLE-CONFIGURE-REQUEST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SM-HANDLE-CONFIGURE-NOTIFY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SM-HANDLE-DESTROY-NOTIFY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SM-HANDLE-MAP-REQUEST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SM-HANDLE-UNMAP-NOTIFY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SM-HANDLE-EXPOSURE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SM-HANDLE-EVENT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|DISPLAY| |CLFSWM|::|EVENT-KEY| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SECOND-KEY-MODE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|LEAVE-SECOND-MODE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) Added: clfswm-second-mode.lisp ============================================================================== --- (empty file) +++ clfswm-second-mode.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,222 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Fri Feb 22 21:38:53 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Second mode functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +(defparameter *sm-window* nil) +(defparameter *sm-font* nil) +(defparameter *sm-gc* nil) + +(defparameter *second-mode-program* nil + "Execute the program string if not nil") + + +;;(defun draw-second-mode-window () +;; (xlib:clear-area *sm-window*) +;; (let* ((text (format nil "Workspace ~A ~:(~A~) ~A ~A ~A" +;; (workspace-number (current-workspace)) +;; (if *arrow-action* *arrow-action* "") +;; (if *motion-action* *motion-action* "") +;; (cond ((numberp *open-next-window-in-new-workspace*) +;; (format nil ">W:~A" *open-next-window-in-new-workspace*)) +;; (*open-next-window-in-new-workspace* ">W") +;; (t "")) +;; (cond ((equal *open-next-window-in-new-group* :once) ">G") +;; (*open-next-window-in-new-group* ">G+") +;; (t "")))) +;; (len (length text))) +;; (xlib:draw-image-glyphs *sm-window* *sm-gc* +;; (truncate (/ (- *sm-width* (* (xlib:max-char-width *sm-font*) len)) 2)) +;; (truncate (/ (+ *sm-height* (- (font-ascent *sm-font*) (font-descent *sm-font*))) 2)) +;; text))) + + +(defun draw-second-mode-window () + (xlib:clear-area *sm-window*) + (let* ((text (format nil "Second mode")) + (len (length text))) + (xlib:draw-image-glyphs *sm-window* *sm-gc* + (truncate (/ (- *sm-width* (* (xlib:max-char-width *sm-font*) len)) 2)) + (truncate (/ (+ *sm-height* (- (xlib:font-ascent *sm-font*) (xlib:font-descent *sm-font*))) 2)) + text))) + + + + +;;; Second mode hooks +(defun sm-handle-key-press (&rest event-slots &key root code state &allow-other-keys) + (declare (ignore event-slots root)) + (funcall-key-from-code *second-keys* code state) + (draw-second-mode-window)) + +(defun sm-handle-enter-notify (&rest event-slots &key root-x root-y &allow-other-keys) + (declare (ignore event-slots root-x root-y)) + ;; (focus-group-under-mouse root-x root-y) + (draw-second-mode-window)) + +(defun sm-handle-motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) + (declare (ignore event-slots)) + (unless (compress-motion-notify) + (funcall-button-from-code *mouse-action* 'motion 0 root-x root-y #'first))) + +(defun sm-handle-button-press (&rest event-slots &key root-x root-y code state &allow-other-keys) + (declare (ignore event-slots)) + (funcall-button-from-code *mouse-action* code state root-x root-y #'first) + (draw-second-mode-window)) + +(defun sm-handle-button-release (&rest event-slots &key root-x root-y code state &allow-other-keys) + (declare (ignore event-slots)) + (funcall-button-from-code *mouse-action* code state root-x root-y #'third) + (draw-second-mode-window)) + +(defun sm-handle-configure-request (&rest event-slots) + (apply #'handle-configure-request event-slots) + (draw-second-mode-window)) + + +(defun sm-handle-configure-notify (&rest event-slots) + (apply #'handle-configure-notify event-slots) + (draw-second-mode-window)) + + +(defun sm-handle-destroy-notify (&rest event-slots) + (apply #'handle-destroy-notify event-slots) + (draw-second-mode-window)) + +(defun sm-handle-map-request (&rest event-slots) + (apply #'handle-map-request event-slots) + (draw-second-mode-window)) + +(defun sm-handle-unmap-notify (&rest event-slots) + (apply #'handle-unmap-notify event-slots) + (draw-second-mode-window)) + +(defun sm-handle-exposure (&rest event-slots) + (apply #'handle-exposure event-slots) + (draw-second-mode-window)) + + + +;;(defun sm-handle-property-notify (&rest event-slots &key window &allow-other-keys) +;; ;;(dbg (xlib:wm-name window)) +;; (draw-second-mode-window)) + + +;;; CONFIG: Second mode hooks +(setf *sm-button-press-hook* #'sm-handle-button-press + *sm-button-release-hook* #'sm-handle-button-release + *sm-motion-notify-hook* #'sm-handle-motion-notify + *sm-key-press-hook* #'sm-handle-key-press + *sm-configure-request-hook* #'sm-handle-configure-request + *sm-configure-notify-hook* #'sm-handle-configure-notify + *sm-destroy-notify-hook* #'sm-handle-destroy-notify + *sm-enter-notify-hook* #'sm-handle-enter-notify + *sm-exposure-hook* #'sm-handle-exposure + *sm-map-request-hook* #'sm-handle-map-request + *sm-unmap-notify-hook* #'sm-handle-unmap-notify) + + + + + +(defun sm-handle-event (&rest event-slots &key display event-key &allow-other-keys) + (declare (ignore display)) + ;;(dbg event-key) + (with-xlib-protect + (case event-key + (:button-press (call-hook *sm-button-press-hook* event-slots)) + (:button-release (call-hook *sm-button-release-hook* event-slots)) + (:motion-notify (call-hook *sm-motion-notify-hook* event-slots)) + (:key-press (call-hook *sm-key-press-hook* event-slots)) + (:configure-request (call-hook *sm-configure-request-hook* event-slots)) + (:configure-notify (call-hook *sm-configure-notify-hook* event-slots)) + (:map-request (call-hook *sm-map-request-hook* event-slots)) + (:unmap-notify (call-hook *sm-unmap-notify-hook* event-slots)) + (:destroy-notify (call-hook *sm-destroy-notify-hook* event-slots)) + (:mapping-notify (call-hook *sm-mapping-notify-hook* event-slots)) + (:property-notify (call-hook *sm-property-notify-hook* event-slots)) + (:create-notify (call-hook *sm-create-notify-hook* event-slots)) + (:enter-notify (call-hook *sm-enter-notify-hook* event-slots)) + (:exposure (call-hook *sm-exposure-hook* event-slots)))) + ;;(dbg "Ignore handle event" c event-slots))) + t) + + + +(defun second-key-mode () + "Switch to editing mode" + ;;(dbg "Second key ignore" c))))) + (setf *sm-window* (xlib:create-window :parent *root* + :x (truncate (/ (- (xlib:screen-width *screen*) *sm-width*) 2)) + :y 0 + :width *sm-width* :height *sm-height* + :background (get-color *sm-background-color*) + :border-width 1 + :border (get-color *sm-border-color*) + :colormap (xlib:screen-default-colormap *screen*) + :event-mask '(:exposure)) + *sm-font* (xlib:open-font *display* *sm-font-string*) + *sm-gc* (xlib:create-gcontext :drawable *sm-window* + :foreground (get-color *sm-foreground-color*) + :background (get-color *sm-background-color*) + :font *sm-font* + :line-style :solid)) + (xlib:map-window *sm-window*) + (draw-second-mode-window) + (no-focus) + (ungrab-main-keys) + (xgrab-keyboard *root*) + (xgrab-pointer *root* 66 67) + (unwind-protect + (catch 'exit-second-loop + (loop + (raise-window *sm-window*) + (xlib:display-finish-output *display*) + (xlib:process-event *display* :handler #'sm-handle-event) + (xlib:display-finish-output *display*))) + (xlib:free-gcontext *sm-gc*) + (xlib:close-font *sm-font*) + (xlib:destroy-window *sm-window*) + (xungrab-keyboard) + (xungrab-pointer) + (grab-main-keys) + (show-all-childs)) + (wait-no-key-or-button-press) + (when *second-mode-program* + (do-shell *second-mode-program*) + (setf *second-mode-program* nil))) + + + +(defun leave-second-mode () + "Leave second mode" + (banish-pointer) + (throw 'exit-second-loop nil)) + + + + Added: clfswm-util.fas ============================================================================== --- (empty file) +++ clfswm-util.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,832 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 28 (IN-PACKAGE :CLFSWM)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CLFSWM" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|32 37 (DEFUN ADD-DEFAULT-GROUP NIL ...)-2| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|ADD-DEFAULT-GROUP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|ADD-DEFAULT-GROUP| + #40Y(00 00 00 00 00 00 00 00 06 01 6B 00 89 01 15 DC 6F 03 DE AD 70 05 + 6B 00 AC 6F 06 AE 9E 7A AC AF 30 07 16 05 2E 08 19 01) + (|CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|GROUP-P| "Group name" + |CLFSWM|::|QUERY-STRING| :|NAME| |CLFSWM|::|CREATE-GROUP| + |CLFSWM|::|GROUP-CHILD| + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|GROUP-CHILD|) + |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Add a default group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|40 50 (DEFUN ADD-PLACED-GROUP NIL ...)-3| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|ADD-PLACED-GROUP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|ADD-PLACED-GROUP| + #77Y(00 00 00 00 00 00 00 00 06 01 6B 00 89 01 3A DC 6F 03 DE DF 6F 06 + 73 02 37 DE E1 6F 06 73 02 37 DE E2 6F 06 73 02 37 DE E3 6F 06 73 + 02 37 E4 B1 E5 B2 E6 B3 E7 B4 E8 B5 6E 0A 0F 6B 00 AC 6F 10 AE 9E + 7A AC AF 30 11 16 09 2E 12 19 01) + (|CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|GROUP-P| "Group name" + |CLFSWM|::|QUERY-STRING| #10r1/100 "Group x in percent (%)" + |CLFSWM|::|QUERY-NUMBER| "Group y in percent (%)" + "Group width in percent (%)" "Group height in percent (%)" :|NAME| :|X| + :|Y| :|W| :|H| |CLFSWM|::|CREATE-GROUP| |CLFSWM|::|GROUP-CHILD| + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|GROUP-CHILD|) + |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Add a placed group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|54 62 (DEFUN DELETE-FOCUS-WINDOW NIL ...)-4| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|DELETE-FOCUS-WINDOW| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DELETE-FOCUS-WINDOW| + #48Y(00 00 00 00 00 00 00 00 06 01 6B 00 6F 01 9D 1F 1D 14 6B 02 30 03 + 59 1F 15 0E 04 0F 05 AC 2F 06 AC E1 6B 00 E2 70 09 2D 03 0A 2E 0B + 19 02 19 02) + (|CLFSWM|::|*DISPLAY*| |XLIB|::|INPUT-FOCUS| + |CLFSWM|::|*NO-FOCUS-WINDOW*| |XLIB|::|WINDOW-EQUAL| + |CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|*CURRENT-CHILD*| + |CLFSWM|::|REMOVE-CHILD-IN-ALL-GROUPS| :|WM_PROTOCOLS| + "WM_DELETE_WINDOW" |XLIB|::|INTERN-ATOM| + |CLFSWM|::|SEND-CLIENT-MESSAGE| |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Delete the focus window in all groups and workspaces")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|64 71 (DEFUN DESTROY-FOCUS-WINDOW NIL ...)-5| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|DESTROY-FOCUS-WINDOW| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DESTROY-FOCUS-WINDOW| + #47Y(00 00 00 00 00 00 00 00 06 01 6B 00 6F 01 9D 1F 1C 14 6B 02 30 03 + 59 1F 14 0E 04 0F 05 AC 2F 06 6B 00 E1 AE E2 72 2F 30 09 2E 0A 19 + 02 19 02) + (|CLFSWM|::|*DISPLAY*| |XLIB|::|INPUT-FOCUS| + |CLFSWM|::|*NO-FOCUS-WINDOW*| |XLIB|::|WINDOW-EQUAL| + |CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|*CURRENT-CHILD*| + |CLFSWM|::|REMOVE-CHILD-IN-ALL-GROUPS| |XLIB|::|WINDOW| 1. + |XLIB|::|KILL-CLIENT| |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Destroy the focus window in all groups and workspaces")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|73 80 (DEFUN REMOVE-FOCUS-WINDOW NIL ...)-6| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|REMOVE-FOCUS-WINDOW| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|REMOVE-FOCUS-WINDOW| + #44Y(00 00 00 00 00 00 00 00 06 01 6B 00 6F 01 9D 1F 19 14 6B 02 30 03 + 59 1F 11 0E 04 0F 05 AC 2F 06 AC AD 6F 07 30 08 2E 09 19 02 19 02) + (|CLFSWM|::|*DISPLAY*| |XLIB|::|INPUT-FOCUS| + |CLFSWM|::|*NO-FOCUS-WINDOW*| |XLIB|::|WINDOW-EQUAL| + |CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|*CURRENT-CHILD*| + |CLFSWM|::|HIDE-CHILD| |CLFSWM|::|FIND-FATHER-GROUP| + |CLFSWM|::|REMOVE-CHILD-IN-GROUP| |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Remove the focus window in the current group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|83 90 (DEFUN UNHIDE-ALL-WINDOWS-IN-CURRENT-CHILD NIL ...)-7| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|UNHIDE-ALL-WINDOWS-IN-CURRENT-CHILD| + |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNHIDE-ALL-WINDOWS-IN-CURRENT-CHILD| + #55Y(02 00 01 00 00 00 00 00 06 01 00 2B 01 00 0B 00 00 4B 00 0D B0 AF + 6D 01 02 DC 57 03 B0 36 00 16 06 4D 16 01 2E 04 19 01 58 67 00 00 + 01 76 00 AD 36 01 18 02 01 19 02) + (#(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|UNHIDE-ALL-WINDOWS-IN-CURRENT-CHILD-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|UNHIDE-ALL-WINDOWS-IN-CURRENT-CHILD-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|UNHIDE-ALL-WINDOWS-IN-CURRENT-CHILD-2| + #37Y(00 00 00 00 00 00 00 00 06 01 2E 00 14 63 1B 0E 87 01 00 14 2F + 01 AC 2F 02 AC 2F 03 83 01 AD 8D 94 6E 00 19 03) + (|CLFSWM|::|GET-HIDDEN-WINDOWS| |CLFSWM|::|UNHIDE-WINDOW| + |CLFSWM|::|PROCESS-NEW-WINDOW| |XLIB|::|MAP-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| |XLIB|::|WINDOW-ERROR| + |XLIB|::|DRAWABLE-ERROR|) + 30.) + 1. . 1.) + |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Unhide all hidden windows into the current child")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|95 106 (DEFUN FIND-CHILD-UNDER-MOUSE (X Y) ...)-8| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FIND-CHILD-UNDER-MOUSE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FIND-CHILD-UNDER-MOUSE| + #68Y(02 00 01 00 02 00 00 00 06 03 00 2B 02 7F 03 00 00 7F 02 00 01 9D + 2B 01 00 0B 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 57 03 B0 36 + 00 16 06 1B 10 58 67 00 00 01 76 00 AD 36 01 18 02 01 19 02 00 4D + 19 05) + (#(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|FIND-CHILD-UNDER-MOUSE-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|FIND-CHILD-UNDER-MOUSE-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|FIND-CHILD-UNDER-MOUSE-2| + #32Y(00 00 00 00 00 00 00 00 06 01 2A 2B 01 00 0B 00 00 AC 6D 01 01 + 6B 02 9E 34 16 01 06 00 00 19 02) + (|COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|FIND-CHILD-UNDER-MOUSE-2-G50377| + #139Y(00 00 00 00 01 00 00 00 06 02 DB AE 8E 33 08 AD E0 8A 07 + 33 00 19 02 AD 6F 02 69 02 01 AF 6F 02 B0 6F 03 73 02 35 + 33 02 31 1F 80 5D AD 6F 04 69 02 02 AF 6F 04 B0 6F 05 73 + 02 35 33 02 31 1F 80 48 9E 0C 00 01 19 02 AD 6F 08 69 02 + 01 AF 6F 08 B0 6F 09 73 02 35 91 02 31 19 AD 6F 0A 69 02 + 02 AF 6F 0A B0 6F 0B 73 02 35 91 02 31 06 AD 2F 0C 0C 00 + 01 AD 6F 0D 63 1B 09 87 01 00 14 28 FF 8A 83 01 AD 8D 94 + 73 00 19 04 19 02) + (|COMMON-LISP|::|NIL| |XLIB|::|WINDOW| |XLIB|::|DRAWABLE-X| + |XLIB|::|DRAWABLE-WIDTH| |XLIB|::|DRAWABLE-Y| + |XLIB|::|DRAWABLE-HEIGHT| + #.(|CLOS|::|FIND-CLASS| '|CLFSWM|::|GROUP|) + |CLOS|::|TYPEP-CLASS| |CLFSWM|::|GROUP-RX| |CLFSWM|::|GROUP-RW| + |CLFSWM|::|GROUP-RY| |CLFSWM|::|GROUP-RH| + |CLFSWM|::|GROUP-WINDOW| |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CHILD|) |COMMON-LISP|::|NIL|) + |CLFSWM|::|*CURRENT-ROOT*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| |XLIB|::|WINDOW-ERROR| + |XLIB|::|DRAWABLE-ERROR|) + 39.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|X| |CLFSWM|::|Y|) "Return the child window under the mouse")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|112 116 (DEFUN CLEAR-SELECTION NIL ...)-9| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|CLEAR-SELECTION| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|CLEAR-SELECTION| + #19Y(00 00 00 00 00 00 00 00 06 01 00 0F 00 6B 01 2F 02 19 01) + (|CLFSWM|::|*CHILD-SELECTION*| |CLFSWM|::|*CURRENT-ROOT*| + |CLFSWM|::|DISPLAY-GROUP-INFO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Clear the current selection")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|118 121 (DEFUN COPY-CURRENT-CHILD NIL ...)-10| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|COPY-CURRENT-CHILD| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|COPY-CURRENT-CHILD| + #26Y(00 00 00 00 00 00 00 00 06 01 6B 00 6B 01 38 03 31 BA 0F 01 6B 02 + 2F 03 19 01) + (|CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|*CHILD-SELECTION*| + |CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|DISPLAY-GROUP-INFO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Copy the current child to the selection")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|124 130 (DEFUN CUT-CURRENT-CHILD NIL ...)-11| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|CUT-CURRENT-CHILD| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|CUT-CURRENT-CHILD| + #34Y(00 00 00 00 00 00 00 00 06 01 2E 00 6B 01 2F 02 6B 01 6B 01 6B 03 + 70 04 30 05 0E 03 0F 01 2E 06 19 01) + (|CLFSWM|::|COPY-CURRENT-CHILD| |CLFSWM|::|*CURRENT-CHILD*| + |CLFSWM|::|HIDE-ALL-CHILDS| |CLFSWM|::|*CURRENT-ROOT*| + |CLFSWM|::|FIND-FATHER-GROUP| |CLFSWM|::|REMOVE-CHILD-IN-GROUP| + |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Cut the current child to the selection")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|132 137 (DEFUN REMOVE-CURRENT-CHILD NIL ...)-12| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|REMOVE-CURRENT-CHILD| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|REMOVE-CURRENT-CHILD| + #32Y(00 00 00 00 00 00 00 00 06 01 6B 00 2F 01 6B 00 6B 00 6B 02 70 03 + 30 04 0E 02 0F 00 2E 05 19 01) + (|CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|HIDE-ALL-CHILDS| + |CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|FIND-FATHER-GROUP| + |CLFSWM|::|REMOVE-CHILD-IN-GROUP| |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Remove the current child from its father group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|140 148 (DEFUN PASTE-SELECTION-NO-CLEAR NIL ...)-13| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|PASTE-SELECTION-NO-CLEAR| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|PASTE-SELECTION-NO-CLEAR| + #76Y(00 00 00 00 00 00 00 00 06 01 6B 00 DB AD 8E 33 0F AC DE 8A 05 12 + 00 F8 9D 1F 2F 6B 06 63 1B 20 6B 00 6B 02 30 03 1B 6F 0E 00 1B 6B + 87 01 00 AE 6F 07 AD AD 38 03 71 BA AC B1 30 08 16 02 83 01 AD 8D + 94 68 16 02 2E 09 19 02 19 02) + (|CLFSWM|::|*CURRENT-CHILD*| |XLIB|::|WINDOW| |CLFSWM|::|*CURRENT-ROOT*| + |CLFSWM|::|FIND-FATHER-GROUP| + #.(|CLOS|::|FIND-CLASS| '|CLFSWM|::|GROUP|) |CLOS|::|TYPEP-CLASS| + |CLFSWM|::|*CHILD-SELECTION*| |CLFSWM|::|GROUP-CHILD| + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|GROUP-CHILD|) + |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Paste the selection in the current group - Do not clear the selection after paste")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|150 154 (DEFUN PASTE-SELECTION NIL ...)-14| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|PASTE-SELECTION| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|PASTE-SELECTION| + #21Y(00 00 00 00 00 00 00 00 06 01 2E 00 00 0F 01 6B 02 2F 03 19 01) + (|CLFSWM|::|PASTE-SELECTION-NO-CLEAR| |CLFSWM|::|*CHILD-SELECTION*| + |CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|DISPLAY-GROUP-INFO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Paste the selection in the current group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|162 216 (DEFUN IDENTIFY-KEY NIL ...)-15| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|IDENTIFY-KEY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|IDENTIFY-KEY| + #229Y(03 00 01 00 00 00 00 00 06 01 00 2B 04 00 0B 00 00 6B 00 6B 01 30 + 02 0B 00 01 DD 6B 04 DF E0 E1 E0 E2 E3 6B 0A E5 AD E6 81 2F 00 73 + 02 35 E7 E8 68 0A 01 6F 0F 68 0B 01 6F 10 73 02 35 73 02 37 EB 6B + 12 6F 13 EE EF F0 6B 17 6F 13 F2 6B 0A E5 AD F3 81 2F 00 F4 F5 2D + 14 1C 0B 00 02 F7 68 01 02 65 1E 6B 1F 6F 13 EB 6B 12 6F 13 65 20 + 68 07 01 65 21 65 22 2D 0A 23 0B 00 03 9D 2B 02 AC 2C 24 01 0B 00 + 00 AC 2C 25 01 0B 00 01 AC 6D 26 01 6B 04 65 27 65 28 2D 03 29 68 + 02 02 2F 2A 65 2B 6B 2C 33 01 15 01 04 06 05 00 34 38 01 31 90 53 + 18 06 04 00 1C 11 6B 00 2F 2D 6B 00 65 2E B0 2D 03 2F 06 04 00 1D + 6F 00 54 08 00 00 02 02 14 2F 30 08 00 00 02 01 14 2F 31 6B 04 65 + 32 65 33 2D 03 29 55 19 04) + (|CLFSWM|::|*DISPLAY*| |CLFSWM|::|*IDENTIFY-FONT-STRING*| + |XLIB|::|OPEN-FONT| :|PARENT| |CLFSWM|::|*ROOT*| :|X| 0. :|Y| :|WIDTH| + -2. |CLFSWM|::|*SCREEN*| |XLIB|::|SCREEN| 2. :|HEIGHT| 3. + |XLIB|::|MAX-CHAR-ASCENT| |XLIB|::|MAX-CHAR-DESCENT| :|BACKGROUND| + |CLFSWM|::|*IDENTIFY-BACKGROUND*| |CLFSWM|::|GET-COLOR| :|BORDER-WIDTH| + 1. :|BORDER| |CLFSWM|::|*IDENTIFY-BORDER*| :|COLORMAP| 9. :|EVENT-MASK| + (:|EXPOSURE|) |XLIB|::|CREATE-WINDOW| :|DRAWABLE| :|FOREGROUND| + |CLFSWM|::|*IDENTIFY-FOREGROUND*| :|FONT| :|LINE-STYLE| :|SOLID| + |XLIB|::|CREATE-GCONTEXT| + #Y(|CLFSWM|::|IDENTIFY-KEY-PRINT-KEY| + #153Y(00 00 00 00 04 00 00 00 06 05 69 01 03 2F 01 69 01 04 6B 02 6F + 03 30 04 69 01 03 69 01 04 DF DF 69 01 02 6F 06 73 02 35 38 02 + 72 76 E1 AD 38 02 31 8B AC 81 77 00 2D 05 08 A1 1F 80 5A 69 01 + 03 69 01 04 E3 DF E4 69 01 02 6F 06 69 01 02 6F 0B 73 02 35 73 + 02 37 73 02 35 38 02 72 76 E6 AD 38 02 31 8B B5 AD 31 86 E7 AD + 38 02 31 8B B4 AD 31 86 E8 AD 38 02 31 8B AC 2F 0F 10 10 B6 B0 + 31 83 11 AC 2F 11 EC AD 38 02 31 8B B2 AD 31 86 AC 81 77 00 2D + 05 08 19 05 19 05) + (|COMMON-LISP|::|NIL| |XLIB|::|CLEAR-AREA| + |CLFSWM|::|*IDENTIFY-FOREGROUND*| |CLFSWM|::|GET-COLOR| + |XLIB|::|SET-GCONTEXT-FOREGROUND| 5. |XLIB|::|MAX-CHAR-ASCENT| + "Press a key to identify. Press 'q' to stop the identify loop." + |XLIB|::|DRAW-IMAGE-GLYPHS| 10. 2. |XLIB|::|MAX-CHAR-DESCENT| + "Code=" " KeySym=" " Key=" |SYSTEM|::|STREAM-START-S-EXPRESSION| + |COMMON-LISP|::|*PRINT-RIGHT-MARGIN*| + |SYSTEM|::|STREAM-END-S-EXPRESSION| " Modifiers=") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CODE| |CLFSWM|::|KEYSYM| |CLFSWM|::|KEY| + |CLFSWM|::|MODIFIERS|) + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|IDENTIFY-KEY-HANDLE-IDENTIFY-KEY| + #115Y(00 00 00 00 00 00 00 00 C7 00 03 00 01 00 3D 02 3D 01 AD 6F 04 + AF AF 70 05 6B 06 B1 E1 6E 03 08 6F 09 AD CF 5A 1D 02 9F 59 0C + 01 01 E5 6B 0C 6B 0D 32 97 0F 0D 14 6B 0E 33 03 15 E9 6B 0C EA + B4 33 03 15 EB 6B 0C EC AF 33 03 15 ED 6B 0C EE B0 33 03 15 EF + 6B 0C F0 B1 33 03 15 F1 6B 0C 33 01 15 38 01 31 90 B1 AD AF B1 + 07 00 01 34 38 01 31 90 19 08) + (|COMMON-LISP|::|NIL| :|ROOT| :|CODE| :|STATE| + |XLIB|::|MAKE-STATE-KEYS| |CLFSWM|::|KEYCODE->CHAR| + |CLFSWM|::|*DISPLAY*| 0. |XLIB|::|KEYCODE->KEYSYM| + |CLFSWM|::|KEYSYM->KEYSYM-NAME| #\q + #Y(|CLFSWM|::|IDENTIFY-KEY-HANDLE-IDENTIFY-KEY-1| + #42Y(00 00 00 00 03 00 00 00 01 19 B0 31 8E DA B1 38 02 31 8B AF + B1 31 86 DB B1 38 02 31 8B AE B1 31 86 DC B1 38 02 31 8B 9E + 19 05) + ("DEBUG[" " - " "] ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|*STANDARD-OUTPUT*| |TOOLS|::|*%DBG-COUNT%*| + |TOOLS|::|*%DBG-NAME%*| + #Y(|CLFSWM|::|IDENTIFY-KEY-HANDLE-IDENTIFY-KEY-2| + #40Y(00 00 00 00 03 00 00 00 01 19 AF B1 31 86 DA B1 31 8A B0 2F + 01 10 02 B1 B4 31 83 11 B0 2F 03 DE B1 38 02 31 8B 9E 19 + 05) + (#\= |SYSTEM|::|STREAM-START-S-EXPRESSION| + |COMMON-LISP|::|*PRINT-RIGHT-MARGIN*| + |SYSTEM|::|STREAM-END-S-EXPRESSION| " ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |CLFSWM|::|CODE| + #Y(|CLFSWM|::|IDENTIFY-KEY-HANDLE-IDENTIFY-KEY-3| + #40Y(00 00 00 00 03 00 00 00 01 19 AF B1 31 86 DA B1 31 8A B0 2F + 01 10 02 B1 B4 31 83 11 B0 2F 03 DE B1 38 02 31 8B 9E 19 + 05) + (#\= |SYSTEM|::|STREAM-START-S-EXPRESSION| + |COMMON-LISP|::|*PRINT-RIGHT-MARGIN*| + |SYSTEM|::|STREAM-END-S-EXPRESSION| " ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |CLFSWM|::|KEYSYM| + #Y(|CLFSWM|::|IDENTIFY-KEY-HANDLE-IDENTIFY-KEY-4| + #40Y(00 00 00 00 03 00 00 00 01 19 AF B1 31 86 DA B1 31 8A B0 2F + 01 10 02 B1 B4 31 83 11 B0 2F 03 DE B1 38 02 31 8B 9E 19 + 05) + (#\= |SYSTEM|::|STREAM-START-S-EXPRESSION| + |COMMON-LISP|::|*PRINT-RIGHT-MARGIN*| + |SYSTEM|::|STREAM-END-S-EXPRESSION| " ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |CLFSWM|::|KEY| + #Y(|CLFSWM|::|IDENTIFY-KEY-HANDLE-IDENTIFY-KEY-5| + #40Y(00 00 00 00 03 00 00 00 01 19 AF B1 31 86 DA B1 31 8A B0 2F + 01 10 02 B1 B4 31 83 11 B0 2F 03 DE B1 38 02 31 8B 9E 19 + 05) + (#\= |SYSTEM|::|STREAM-START-S-EXPRESSION| + |COMMON-LISP|::|*PRINT-RIGHT-MARGIN*| + |SYSTEM|::|STREAM-END-S-EXPRESSION| " ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |CLFSWM|::|MODIFIERS| + #Y(|CLFSWM|::|IDENTIFY-KEY-HANDLE-IDENTIFY-KEY-6| + #16Y(00 00 00 00 01 00 00 00 01 17 AE 31 8D 9E 19 03) () + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|))) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| + |COMMON-LISP|::|&KEY| |CLFSWM|::|ROOT| |CLFSWM|::|CODE| + |CLFSWM|::|STATE| |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|IDENTIFY-KEY-HANDLE-IDENTIFY| + #41Y(00 00 00 00 00 00 00 00 C7 00 02 00 01 00 3D 01 AD 24 03 0D AD + 25 04 06 01 04 07 00 01 34 02 19 04 69 00 02 A1 37 00 1B 75) + (|COMMON-LISP|::|NIL| :|DISPLAY| :|EVENT-KEY| :|KEY-PRESS| + :|EXPOSURE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| + |COMMON-LISP|::|&KEY| |CLFSWM|::|DISPLAY| |CLFSWM|::|EVENT-KEY| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|) + 92. 93. |CLFSWM|::|XGRAB-POINTER| |XLIB|::|MAP-WINDOW| + #Y(|CLFSWM|::|IDENTIFY-KEY-1| + #22Y(00 00 00 00 01 00 00 00 01 17 AE 31 8E DA AF 38 02 31 8B 9E 19 + 03) + ("Press 'q' to stop the identify loop +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|*STANDARD-OUTPUT*| |XLIB|::|DISPLAY-FINISH-OUTPUT| + :|HANDLER| |XLIB|::|PROCESS-EVENT| |XLIB|::|DESTROY-WINDOW| + |XLIB|::|CLOSE-FONT| 66. 67.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Identify a key")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|220 245 (DEFUN QUERY-SHOW-PAREN (ORIG-STRING POS) ...)-16| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|QUERY-SHOW-PAREN| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|QUERY-SHOW-PAREN| + #95Y(00 00 00 00 02 00 00 00 06 03 00 2B 01 7F 02 00 00 9D 2B 01 B0 32 + 47 0B 00 00 AC 6D 00 01 AD 6D 01 01 AE 6D 02 01 AF 6D 03 01 A0 34 + 1D 07 9E 74 92 00 12 16 01 9F 34 1D 07 9D 74 92 00 14 16 01 06 04 + 00 19 09 68 05 00 AC AE DE 33 01 02 16 02 1B 63 68 05 00 AC AE DF + 33 01 02 16 02 1B 61) + (#Y(|CLFSWM|::|QUERY-SHOW-PAREN-HAVE-TO-FIND-RIGHT?| + #40Y(00 00 00 00 00 00 00 00 06 01 69 01 01 69 00 01 72 48 33 01 2F + 1F 0F 69 00 01 69 01 01 73 01 01 DB 33 01 07 19 01 19 01) + (|COMMON-LISP|::|NIL| #\() + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|QUERY-SHOW-PAREN-HAVE-TO-FIND-LEFT?| + #38Y(00 00 00 00 00 00 00 00 06 01 69 01 01 72 98 32 93 1F 11 69 00 + 01 69 01 01 72 98 73 01 01 DB 33 01 07 19 01 19 01) + (|COMMON-LISP|::|NIL| #\)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|QUERY-SHOW-PAREN-POS-RIGHT| + #66Y(00 00 00 00 00 00 00 00 06 01 69 01 01 72 97 69 00 01 72 48 DB + 63 1B 21 A0 19 05 69 00 01 B0 82 01 01 00 14 DC 91 01 07 02 85 + 01 AC DD 91 01 07 02 86 01 AD 8E 92 61 85 03 AF AF 91 01 32 5C + 00 19 05) + (|COMMON-LISP|::|NIL| 1. #\( #\)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|QUERY-SHOW-PAREN-POS-LEFT| + #61Y(00 00 00 00 00 00 00 00 06 01 DB 69 01 01 73 02 35 DC 63 1B 21 + 9F 19 04 69 00 01 AF 82 01 01 00 14 DD 91 01 07 02 86 01 AC DE + 91 01 07 02 85 01 AD 8E 92 61 86 02 AE 8F 94 5E 00 19 04) + (|COMMON-LISP|::|NIL| -2. 1. #\( #\)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + #\] #\[) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|ORIG-STRING| |CLFSWM|::|POS|) + "Replace matching parentheses with brackets")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|248 374 (LET (#) (DEFUN CLEAR-HISTORY NIL ...) ...)-17| + #40Y(00 00 00 00 00 00 00 00 00 01 00 2B 01 00 0B 00 00 DA 2F 01 DA AD 6D 02 + 01 32 83 DD 2F 01 DD AD 6D 04 01 32 83 C8 19 02) + (|CLFSWM|::|CLEAR-HISTORY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|CLEAR-HISTORY| + #16Y(00 00 00 00 00 00 00 00 06 01 00 0C 00 01 19 01) + (|COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Clear the query-string history") + |CLFSWM|::|QUERY-STRING| + #Y(|CLFSWM|::|QUERY-STRING| + #308Y(03 00 01 00 01 00 01 00 06 08 2A 2B 01 7F 03 00 00 3B 02 02 C6 FA + 9D 2B 07 00 0B 00 00 6B 02 6B 03 30 04 0B 00 01 DF 6B 06 E1 E2 E3 + E2 E4 E5 6B 0C E7 AD E8 81 2F 00 73 02 35 E9 EA 68 0A 01 6F 11 68 + 0B 01 6F 12 73 02 35 73 02 37 ED 6B 14 6F 15 F0 F1 F2 6B 19 6F 15 + F4 6B 0C E7 AD F5 81 2F 00 F6 F7 2D 14 1E 0B 00 02 65 1F 68 01 02 + 65 20 6B 21 6F 15 ED 6B 14 6F 15 65 22 68 07 01 65 23 65 24 2D 0A + 25 0B 00 03 7F 03 00 04 14 32 48 0B 00 05 07 00 01 0B 00 06 9D 2B + 06 AC 2C 26 01 0B 00 00 AC 2C 27 01 0B 00 01 AC 2C 28 01 0B 00 02 + AC 2C 29 01 0B 00 03 AC 2C 2A 01 0B 00 04 AC 2C 2B 01 0B 00 05 AC + 6D 2C 01 6B 06 65 2D 65 2E 2D 03 2F 68 02 02 2F 30 06 01 01 34 2E + 31 53 1A 1B 0C 6B 02 2F 33 6B 02 65 34 B0 2D 03 35 68 04 00 65 32 + 38 03 8D B6 6A 3E 54 08 00 00 02 02 14 2F 36 08 00 00 02 01 14 2F + 37 6B 06 65 38 65 39 2D 03 2F 55 16 02 68 00 00 65 3A 38 03 8D B6 + 0D 68 00 04 07 00 01 5D 0C 00 01 06 00 04 14 68 01 00 40 02 19 05) + (|COMMON-LISP|::|NIL| #1="" |CLFSWM|::|*DISPLAY*| + |CLFSWM|::|*QUERY-FONT-STRING*| |XLIB|::|OPEN-FONT| :|PARENT| + |CLFSWM|::|*ROOT*| :|X| 0. :|Y| :|WIDTH| -2. |CLFSWM|::|*SCREEN*| + |XLIB|::|SCREEN| 2. :|HEIGHT| 3. |XLIB|::|MAX-CHAR-ASCENT| + |XLIB|::|MAX-CHAR-DESCENT| :|BACKGROUND| |CLFSWM|::|*QUERY-BACKGROUND*| + |CLFSWM|::|GET-COLOR| :|BORDER-WIDTH| 1. :|BORDER| + |CLFSWM|::|*QUERY-BORDER*| :|COLORMAP| 9. :|EVENT-MASK| (:|EXPOSURE|) + |XLIB|::|CREATE-WINDOW| :|DRAWABLE| :|FOREGROUND| + |CLFSWM|::|*QUERY-FOREGROUND*| :|FONT| :|LINE-STYLE| :|SOLID| + |XLIB|::|CREATE-GCONTEXT| + #Y(|CLFSWM|::|QUERY-STRING-ADD-CURSOR| + #32Y(00 00 00 00 01 00 00 00 06 02 DB AE DC 69 01 06 72 46 DD B0 69 + 01 06 38 01 72 46 33 03 25 19 02) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|STRING| 0. "|") + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|STRING|) |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|QUERY-STRING-PRINT-STRING| + #121Y(00 00 00 00 00 00 00 00 06 01 69 01 03 2F 01 69 01 04 6B 02 6F + 03 30 04 69 01 03 69 01 04 DF DF 69 01 02 6F 06 73 02 35 69 02 + 01 2D 05 07 69 01 06 8F 94 04 CD 0C 01 06 69 01 06 69 01 05 72 + 48 91 01 30 08 69 01 05 32 48 0C 01 06 69 01 03 69 01 04 E3 DF + E4 69 01 02 6F 06 69 01 02 6F 0B 73 02 35 73 02 37 73 02 35 69 + 01 05 69 01 06 70 0C 07 00 01 74 2D 05 07 19 01) + (|COMMON-LISP|::|NIL| |XLIB|::|CLEAR-AREA| + |CLFSWM|::|*QUERY-FOREGROUND*| |CLFSWM|::|GET-COLOR| + |XLIB|::|SET-GCONTEXT-FOREGROUND| 5. |XLIB|::|MAX-CHAR-ASCENT| + |XLIB|::|DRAW-IMAGE-GLYPHS| 0. 10. 2. |XLIB|::|MAX-CHAR-DESCENT| + |CLFSWM|::|QUERY-SHOW-PAREN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|QUERY-STRING-CALL-BACKSPACE| + #78Y(00 00 00 00 01 00 00 00 06 02 DB AE 38 03 8C B6 2A 69 01 06 32 + 98 14 AC 32 94 59 1F 2F DE 69 01 05 DD AF 72 46 69 01 05 69 01 + 06 38 01 72 46 33 02 25 0C 01 05 9D 0C 01 06 19 03 DC 69 01 05 + 64 38 05 07 01 06 FB 8E 60 4D C8 1B 4A 19 03) + (|COMMON-LISP|::|NIL| :|CONTROL| #\ 0. |COMMON-LISP|::|STRING|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|MODIFIERS|) |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|QUERY-STRING-CALL-DELETE| + #84Y(00 00 00 00 01 00 00 00 06 02 DB AE 38 03 8C B6 2B 07 01 06 14 + 72 97 AC 69 01 05 72 48 33 01 31 1F 30 DD 69 01 05 DE 69 01 06 + 72 46 69 01 05 AF 38 01 72 46 33 02 25 0C 01 05 19 03 DC 69 01 + 05 38 06 07 01 06 FC 8E 60 4B 69 01 05 72 48 32 98 1B 42 19 03) + (|COMMON-LISP|::|NIL| :|CONTROL| #\ |COMMON-LISP|::|STRING| 0.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|MODIFIERS|) |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|QUERY-STRING-CALL-DELETE-EOF| + #24Y(00 00 00 00 00 00 00 00 06 01 69 01 05 DB 69 01 06 32 46 0C 01 + 05 19 01) + (|COMMON-LISP|::|NIL| 0.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|QUERY-STRING-HANDLE-QUERY-KEY| + #461Y(00 00 00 00 00 00 00 00 C7 00 03 00 01 00 3D 02 3D 01 AD 6F 04 + 6B 05 B0 E0 AF 38 03 8C B6 80 7C E2 AF 38 03 8C B6 80 78 CF 14 + 6E 03 0B 6B 05 AD 70 0C AD 6F 0D AC E8 38 04 8C 3B 80 67 AC EA + 38 04 8C 3B 80 63 AC EC 38 04 8C 3B 80 5F 00 0C 01 01 AC EE 38 + 04 8C 3B 80 74 AC F1 38 04 8D 3B 80 DE 69 01 06 69 01 05 72 48 + 91 01 2F 81 59 EF B0 38 03 8D B6 81 49 F0 69 01 05 38 06 69 01 + 06 72 97 69 01 05 72 48 82 01 34 04 72 60 92 00 05 69 01 05 32 + 48 16 01 0C 01 06 1B 81 2B CC 1B FF 89 CE 1B FF 85 D4 1B FF A6 + D6 1B FF A2 D8 1B FF 9E F0 69 01 05 64 38 05 69 01 06 72 98 69 + 01 05 72 48 82 01 34 03 72 60 92 00 4A CF 1B 47 69 01 06 8F 93 + 80 F3 EF B0 38 03 8C B6 55 69 01 06 32 98 0C 01 06 1B 80 E1 07 + 01 07 5B 0C 01 05 14 32 48 0C 01 06 69 01 07 2F 19 0C 01 07 1B + 80 C9 07 01 07 5B 0C 01 05 14 32 48 0C 01 06 69 01 07 2F 1B 0C + 01 07 1B 80 B1 CF 0C 01 06 1B 80 AA 69 01 05 32 48 0C 01 06 1B + 80 9F AF 07 00 03 34 1B 80 97 AF 07 00 04 34 1B 80 8F 07 00 05 + 34 1B 80 88 AC F2 38 04 8C 3B FF 9F AC F4 38 04 8C 3B FF AF AC + F6 38 04 8C 3B 40 AC F7 38 04 8C 3B 40 AC 65 1E 38 04 8C 3B 43 + AC 65 1F 38 04 8C 3B 43 AC 65 20 38 04 8D 3B 08 EF B0 38 03 8C + B6 FF BB AD 8F 1E 80 45 AD 8D 1F 80 40 65 21 69 01 06 69 01 05 + 72 48 91 01 31 09 69 01 05 E4 69 01 06 32 46 14 AF 71 4B 69 01 + 06 69 01 05 72 48 91 01 2F 0A 69 01 05 69 01 06 38 01 32 46 14 + 33 03 25 0C 01 05 69 01 06 32 97 0C 01 06 07 00 02 34 19 09) + (|COMMON-LISP|::|NIL| :|ROOT| :|CODE| :|STATE| + |XLIB|::|MAKE-STATE-KEYS| |CLFSWM|::|*DISPLAY*| :|SHIFT| 1. + :|MOD-5| 2. 0. |XLIB|::|KEYCODE->KEYSYM| + |XLIB|::|KEYSYM->CHARACTER| |CLFSWM|::|KEYSYM->KEYSYM-NAME| + "Return" :|RETURN| "Tab" :|COMPLET| "Escape" :|ESCAPE| "Left" + :|CONTROL| #\ "Right" "Up" |TOOLS|::|ROTATE-LIST| "Down" + |TOOLS|::|ANTI-ROTATE-LIST| "Home" "End" "Backspace" "Delete" "k" + |COMMON-LISP|::|STRING|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| + |COMMON-LISP|::|&KEY| |CLFSWM|::|ROOT| |CLFSWM|::|CODE| + |CLFSWM|::|STATE| |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|QUERY-STRING-HANDLE-QUERY| + #39Y(00 00 00 00 00 00 00 00 C7 00 02 00 01 00 3D 01 AD 24 03 0B AD + 25 04 04 07 00 02 34 02 19 04 69 00 06 A1 37 00 1B 75) + (|COMMON-LISP|::|NIL| :|DISPLAY| :|EVENT-KEY| :|KEY-PRESS| + :|EXPOSURE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| + |COMMON-LISP|::|&KEY| |CLFSWM|::|DISPLAY| |CLFSWM|::|EVENT-KEY| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|) + 92. 93. |CLFSWM|::|XGRAB-POINTER| |XLIB|::|MAP-WINDOW| + |CLFSWM|::|WAIT-NO-KEY-OR-BUTTON-PRESS| + (:|RETURN| :|ESCAPE| :|COMPLET|) |XLIB|::|DISPLAY-FINISH-OUTPUT| + :|HANDLER| |XLIB|::|PROCESS-EVENT| |XLIB|::|DESTROY-WINDOW| + |XLIB|::|CLOSE-FONT| 66. 67. (:|RETURN| :|COMPLET|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|MSG| |COMMON-LISP|::|&OPTIONAL| (|CLFSWM|::|DEFAULT| #1#)) + "Query a string from the keyboard. Display msg as prompt")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|378 380 (DEFUN QUERY-NUMBER (MSG) ...)-18| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|QUERY-NUMBER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|QUERY-NUMBER| + #23Y(00 00 00 00 01 00 00 00 06 02 AD 88 00 01 C6 14 38 03 64 31 81 19 + 02) + (|CLFSWM|::|QUERY-STRING| "") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|MSG|) "Query a number from the query input")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|384 401 (DEFUN EVAL-FROM-QUERY-STRING NIL ...)-19| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|EVAL-FROM-QUERY-STRING| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|EVAL-FROM-QUERY-STRING| + #179Y(04 00 02 00 00 00 00 00 06 01 00 2B 01 DA 2F 01 0B 00 00 63 06 01 + 00 1F 80 97 14 DC 32 04 59 1F 80 8F DD 38 01 32 76 10 04 53 80 45 + A3 2B 01 00 0B 00 00 4B 05 21 B0 AF 6D 06 02 B1 6D 07 01 57 08 B0 + 36 00 16 06 1B 1F 58 67 00 00 01 76 00 AD 36 01 18 04 02 19 02 68 + 04 00 38 02 72 76 AD AD 31 86 AC 32 77 16 02 4D 16 01 FD 6B 04 32 + 77 3F 54 6B 04 2F 09 55 11 14 38 02 72 76 68 03 00 E4 AE 38 02 31 + 8B AC AE 31 86 16 01 AC 81 77 00 6F 0B AD 6F 0B AF 6F 0B 73 03 22 + 6F 0C E7 E8 6B 0F EA AD EB 81 2F 00 73 02 35 2D 03 12 29 00 04 FF + 59 19 03) + ("Eval:" |CLFSWM|::|QUERY-STRING| "" |COMMON-LISP|::|CHARACTER| + |COMMON-LISP|::|*STANDARD-OUTPUT*| #(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|EVAL-FROM-QUERY-STRING-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|EVAL-FROM-QUERY-STRING-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|EVAL-FROM-QUERY-STRING-2| + #62Y(00 00 00 00 00 00 00 00 06 01 69 01 01 38 05 71 80 31 5B 43 14 + 01 02 1B 1C 87 02 01 38 02 72 76 AC 2F 01 10 02 B1 B0 31 83 11 + AC 2F 03 AC 81 77 00 84 00 83 02 AE 8D 94 60 AC 31 A6 19 04) + (|COMMON-LISP|::|NIL| |SYSTEM|::|STREAM-START-S-EXPRESSION| + |COMMON-LISP|::|*PRINT-RIGHT-MARGIN*| + |SYSTEM|::|STREAM-END-S-EXPRESSION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#(|COMMON-LISP|::|ERROR| 62.) 3. . 2.) |COMMON-LISP|::|CLOSE| "> " + |TOOLS|::|ENSURE-LIST| |TOOLS|::|EXPAND-NEWLINE| :|WIDTH| -2. + |CLFSWM|::|*SCREEN*| |XLIB|::|SCREEN| 2. |CLFSWM|::|INFO-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Eval a lisp form from the query input")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|406 411 (DEFUN RUN-PROGRAM-FROM-QUERY-STRING NIL ...)-20| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|RUN-PROGRAM-FROM-QUERY-STRING| + |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|RUN-PROGRAM-FROM-QUERY-STRING| + #32Y(00 00 00 00 00 00 00 00 06 01 DA 6F 01 9D 1F 0E 14 DC 32 04 59 1F + 07 9D 0F 03 2E 04 19 02 19 02) + ("Run:" |CLFSWM|::|QUERY-STRING| "" |CLFSWM|::|*SECOND-MODE-PROGRAM*| + |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Run a program from the query input")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|416 441 (DEFUN ASK-GROUP-NAME (MSG) ...)-21| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|ASK-GROUP-NAME| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|ASK-GROUP-NAME| + #61Y(00 00 00 00 01 00 00 00 06 02 00 2B 01 7F 02 00 00 9D 2B 02 00 0B + 00 00 C5 0B 00 01 AC 6D 01 01 6B 02 9E 34 16 01 9D 2B 01 AC 2C 03 + 01 0B 00 00 AC 6D 04 01 9D 34 16 02 06 00 01 19 04) + ("" + #Y(|CLFSWM|::|ASK-GROUP-NAME-G50901| + #54Y(00 00 00 00 01 00 00 00 06 02 AD 2F 01 1F 25 AD 6F 02 93 00 08 + 14 07 00 01 5D 0C 00 01 16 01 AD 6F 03 63 1B 08 87 01 00 14 28 + 5F 83 01 AD 8D 94 74 00 19 04 19 02) + (|COMMON-LISP|::|NIL| |CLFSWM|::|GROUP-P| |CLFSWM|::|GROUP-NAME| + |CLFSWM|::|GROUP-CHILD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|GROUP|) |COMMON-LISP|::|NIL|) + |CLFSWM|::|*ROOT-GROUP*| + #Y(|CLFSWM|::|ASK-GROUP-NAME-SELECTED-NAMES| + #50Y(00 00 00 00 00 00 00 00 06 01 69 01 01 01 02 1B 18 87 02 01 69 + 01 02 AE 38 08 C6 F9 8E 67 01 C7 14 8F 92 03 AD 84 00 83 02 AE + 8D 94 64 AC 31 A6 19 04) + (|COMMON-LISP|::|NIL| #.#'|COMMON-LISP|::|STRING-EQUAL| -1.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|ASK-GROUP-NAME-ASK| + #101Y(00 00 00 00 00 00 00 00 06 01 07 00 01 74 69 01 02 AD C6 74 38 + 02 72 76 69 02 01 AC AE 31 86 DC AE 38 02 31 8B AF 1B 15 16 01 + 1B 17 94 00 83 01 AF 31 86 AC 8C 94 71 DD AF 38 02 31 8B AC 8D + 94 6B 16 01 16 01 AC 81 77 00 AD 30 04 42 02 9E 0C 01 02 14 AF + 38 04 8D 3B 05 AC CA 5A 1F 05 29 00 05 FF A7 19 05) + (|COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|ASK-GROUP-NAME-COMPLET-ALONE| + #25Y(00 00 00 00 02 00 00 00 06 03 DA AE 72 48 90 01 2D 03 9F 19 + 03 9E 5B 19 03) + (1.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|CLFSWM|::|REQ| |CLFSWM|::|SEL|) |COMMON-LISP|::|NIL|) + ": " ", " |CLFSWM|::|QUERY-STRING| :|COMPLET|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|MSG|) "Ask a group name")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|445 450 (DEFUN FOCUS-GROUP-BY (GROUP) ...)-22| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FOCUS-GROUP-BY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FOCUS-GROUP-BY| + #35Y(00 00 00 00 01 00 00 00 06 02 AD 2F 00 1F 12 AD AE 6B 01 8A 02 06 + AE 88 02 02 0E 03 14 30 04 19 02 19 02) + (|CLFSWM|::|GROUP-P| |CLFSWM|::|*CURRENT-ROOT*| + |CLFSWM|::|FIND-FATHER-GROUP| |CLFSWM|::|*ROOT-GROUP*| + |CLFSWM|::|FOCUS-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|GROUP|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|453 456 (DEFUN FOCUS-GROUP-BY-NAME NIL ...)-23| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FOCUS-GROUP-BY-NAME| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FOCUS-GROUP-BY-NAME| + #21Y(00 00 00 00 00 00 00 00 06 01 DA 6F 01 6F 02 2F 03 2E 04 19 01) + ("Focus group" |CLFSWM|::|ASK-GROUP-NAME| |CLFSWM|::|FIND-GROUP-BY-NAME| + |CLFSWM|::|FOCUS-GROUP-BY| |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Focus a group by name")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|458 461 (DEFUN FOCUS-GROUP-BY-NUMBER NIL ...)-24| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FOCUS-GROUP-BY-NUMBER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FOCUS-GROUP-BY-NUMBER| + #21Y(00 00 00 00 00 00 00 00 06 01 DA 6F 01 6F 02 2F 03 2E 04 19 01) + ("Focus group by number:" |CLFSWM|::|QUERY-NUMBER| + |CLFSWM|::|FIND-GROUP-BY-NUMBER| |CLFSWM|::|FOCUS-GROUP-BY| + |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Focus a group by number")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|464 467 (DEFUN OPEN-GROUP-BY (GROUP) ...)-25| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|OPEN-GROUP-BY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|OPEN-GROUP-BY| + #35Y(00 00 00 00 01 00 00 00 06 02 AD 2F 00 1F 12 DB DC 6F 03 70 04 AE + 6F 05 AD 9E 7A AC B1 30 06 19 05 19 02) + (|CLFSWM|::|GROUP-P| :|NAME| "Group name" |CLFSWM|::|QUERY-STRING| + |CLFSWM|::|CREATE-GROUP| |CLFSWM|::|GROUP-CHILD| + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|GROUP-CHILD|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|GROUP|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|471 474 (DEFUN OPEN-GROUP-BY-NAME NIL ...)-26| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|OPEN-GROUP-BY-NAME| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|OPEN-GROUP-BY-NAME| + #21Y(00 00 00 00 00 00 00 00 06 01 DA 6F 01 6F 02 2F 03 2E 04 19 01) + ("Open a new group in" |CLFSWM|::|ASK-GROUP-NAME| + |CLFSWM|::|FIND-GROUP-BY-NAME| |CLFSWM|::|OPEN-GROUP-BY| + |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Open a new group in a named group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|476 479 (DEFUN OPEN-GROUP-BY-NUMBER NIL ...)-27| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|OPEN-GROUP-BY-NUMBER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|OPEN-GROUP-BY-NUMBER| + #21Y(00 00 00 00 00 00 00 00 06 01 DA 6F 01 6F 02 2F 03 2E 04 19 01) + ("Open a new group in the grou numbered:" |CLFSWM|::|ASK-GROUP-NAME| + |CLFSWM|::|FIND-GROUP-BY-NAME| |CLFSWM|::|OPEN-GROUP-BY| + |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Open a new group in a numbered group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|482 489 (DEFUN DELETE-GROUP-BY (GROUP) ...)-28| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|DELETE-GROUP-BY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DELETE-GROUP-BY| + #47Y(00 00 00 00 01 00 00 00 06 02 AD 6B 00 8E 04 1C AD 6B 01 8F 04 04 + 0E 00 0F 01 AD 6B 02 8F 04 04 0E 01 0F 02 AD AE 6F 03 30 04 19 02 + 00 19 02) + (|CLFSWM|::|*ROOT-GROUP*| |CLFSWM|::|*CURRENT-ROOT*| + |CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|FIND-FATHER-GROUP| + |CLFSWM|::|REMOVE-CHILD-IN-GROUP|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|GROUP|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|492 495 (DEFUN DELETE-GROUP-BY-NAME NIL ...)-29| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|DELETE-GROUP-BY-NAME| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DELETE-GROUP-BY-NAME| + #21Y(00 00 00 00 00 00 00 00 06 01 DA 6F 01 6F 02 2F 03 2E 04 19 01) + ("Delete group" |CLFSWM|::|ASK-GROUP-NAME| + |CLFSWM|::|FIND-GROUP-BY-NAME| |CLFSWM|::|DELETE-GROUP-BY| + |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Delete a group by name")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|497 500 (DEFUN DELETE-GROUP-BY-NUMBER NIL ...)-30| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|DELETE-GROUP-BY-NUMBER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|DELETE-GROUP-BY-NUMBER| + #21Y(00 00 00 00 00 00 00 00 06 01 DA 6F 01 6F 02 2F 03 2E 04 19 01) + ("Delete group by number:" |CLFSWM|::|QUERY-NUMBER| + |CLFSWM|::|FIND-GROUP-BY-NUMBER| |CLFSWM|::|DELETE-GROUP-BY| + |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Delete a group by number")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|503 508 (DEFUN MOVE-CURRENT-CHILD-BY (CHILD GROUP-DEST) ...)-31| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|MOVE-CURRENT-CHILD-BY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|MOVE-CURRENT-CHILD-BY| + #47Y(00 00 00 00 02 00 00 00 06 03 9F 1F 20 AD 2F 00 1F 1B AE AF 6F 01 + 30 02 AD 6F 03 AF AD 38 03 71 BA AC B0 30 04 16 02 AE AE 30 05 19 + 03 19 03) + (|CLFSWM|::|GROUP-P| |CLFSWM|::|FIND-FATHER-GROUP| + |CLFSWM|::|REMOVE-CHILD-IN-GROUP| |CLFSWM|::|GROUP-CHILD| + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|GROUP-CHILD|) + |CLFSWM|::|FOCUS-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CHILD| |CLFSWM|::|GROUP-DEST|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|510 515 (DEFUN MOVE-CURRENT-CHILD-BY-NAME NIL ...)-32| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|MOVE-CURRENT-CHILD-BY-NAME| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|MOVE-CURRENT-CHILD-BY-NAME| + #52Y(00 00 00 00 00 00 00 00 06 01 6B 00 38 02 72 76 6B 00 6F 01 DC AE + 38 02 31 8B AC AE 31 86 DD AE 38 02 31 8B 16 01 AC 81 77 00 6F 04 + 6F 05 30 06 2E 07 19 01) + (|CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|CHILD-NAME| "Move '" + "' to group" |CLFSWM|::|ASK-GROUP-NAME| |CLFSWM|::|FIND-GROUP-BY-NAME| + |CLFSWM|::|MOVE-CURRENT-CHILD-BY| |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Move current child in a named group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|517 522 (DEFUN MOVE-CURRENT-CHILD-BY-NUMBER NIL ...)-33| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|MOVE-CURRENT-CHILD-BY-NUMBER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|MOVE-CURRENT-CHILD-BY-NUMBER| + #52Y(00 00 00 00 00 00 00 00 06 01 6B 00 38 02 72 76 6B 00 6F 01 DC AE + 38 02 31 8B AC AE 31 86 DD AE 38 02 31 8B 16 01 AC 81 77 00 6F 04 + 6F 05 30 06 2E 07 19 01) + (|CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|CHILD-NAME| "Move '" + "' to group numbered:" |CLFSWM|::|QUERY-NUMBER| + |CLFSWM|::|FIND-GROUP-BY-NUMBER| |CLFSWM|::|MOVE-CURRENT-CHILD-BY| + |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Move current child in a numbered group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|525 529 (DEFUN COPY-CURRENT-CHILD-BY (CHILD GROUP-DEST) ...)-34| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|COPY-CURRENT-CHILD-BY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|COPY-CURRENT-CHILD-BY| + #41Y(00 00 00 00 02 00 00 00 06 03 9F 1F 1A AD 2F 00 1F 15 AD 6F 01 AF + AD 38 03 71 BA AC B0 30 02 16 02 AE AE 30 03 19 03 19 03) + (|CLFSWM|::|GROUP-P| |CLFSWM|::|GROUP-CHILD| + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|CLFSWM|::|GROUP-CHILD|) + |CLFSWM|::|FOCUS-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CHILD| |CLFSWM|::|GROUP-DEST|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|531 536 (DEFUN COPY-CURRENT-CHILD-BY-NAME NIL ...)-35| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|COPY-CURRENT-CHILD-BY-NAME| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|COPY-CURRENT-CHILD-BY-NAME| + #52Y(00 00 00 00 00 00 00 00 06 01 6B 00 38 02 72 76 6B 00 6F 01 DC AE + 38 02 31 8B AC AE 31 86 DD AE 38 02 31 8B 16 01 AC 81 77 00 6F 04 + 6F 05 30 06 2E 07 19 01) + (|CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|CHILD-NAME| "Copy '" + "' to group" |CLFSWM|::|ASK-GROUP-NAME| |CLFSWM|::|FIND-GROUP-BY-NAME| + |CLFSWM|::|COPY-CURRENT-CHILD-BY| |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Copy current child in a named group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|538 543 (DEFUN COPY-CURRENT-CHILD-BY-NUMBER NIL ...)-36| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|COPY-CURRENT-CHILD-BY-NUMBER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|COPY-CURRENT-CHILD-BY-NUMBER| + #52Y(00 00 00 00 00 00 00 00 06 01 6B 00 38 02 72 76 6B 00 6F 01 DC AE + 38 02 31 8B AC AE 31 86 DD AE 38 02 31 8B 16 01 AC 81 77 00 6F 04 + 6F 05 30 06 2E 07 19 01) + (|CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|CHILD-NAME| "Copy '" + "' to group numbered:" |CLFSWM|::|QUERY-NUMBER| + |CLFSWM|::|FIND-GROUP-BY-NUMBER| |CLFSWM|::|COPY-CURRENT-CHILD-BY| + |CLFSWM|::|LEAVE-SECOND-MODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Copy current child in a numbered group")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: clfswm-util.fasl ============================================================================== Binary file. No diff available. Added: clfswm-util.lib ============================================================================== --- (empty file) +++ clfswm-util.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,79 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CLFSWM")) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|ADD-DEFAULT-GROUP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|ADD-PLACED-GROUP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DELETE-FOCUS-WINDOW| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DESTROY-FOCUS-WINDOW| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|REMOVE-FOCUS-WINDOW| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|UNHIDE-ALL-WINDOWS-IN-CURRENT-CHILD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FIND-CHILD-UNDER-MOUSE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|X| |CLFSWM|::|Y|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|CLEAR-SELECTION| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|COPY-CURRENT-CHILD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|CUT-CURRENT-CHILD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|REMOVE-CURRENT-CHILD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|PASTE-SELECTION-NO-CLEAR| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|PASTE-SELECTION| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|IDENTIFY-KEY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|QUERY-SHOW-PAREN| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|ORIG-STRING| |CLFSWM|::|POS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|CLEAR-HISTORY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|QUERY-STRING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|MSG| |COMMON-LISP|::|&OPTIONAL| (|CLFSWM|::|DEFAULT| "")))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|QUERY-NUMBER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|MSG|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|EVAL-FROM-QUERY-STRING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|RUN-PROGRAM-FROM-QUERY-STRING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|ASK-GROUP-NAME| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|MSG|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FOCUS-GROUP-BY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|GROUP|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FOCUS-GROUP-BY-NAME| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FOCUS-GROUP-BY-NUMBER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|OPEN-GROUP-BY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|GROUP|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|OPEN-GROUP-BY-NAME| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|OPEN-GROUP-BY-NUMBER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DELETE-GROUP-BY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|GROUP|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DELETE-GROUP-BY-NAME| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|DELETE-GROUP-BY-NUMBER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|MOVE-CURRENT-CHILD-BY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|CHILD| |CLFSWM|::|GROUP-DEST|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|MOVE-CURRENT-CHILD-BY-NAME| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|MOVE-CURRENT-CHILD-BY-NUMBER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|COPY-CURRENT-CHILD-BY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|CHILD| |CLFSWM|::|GROUP-DEST|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|COPY-CURRENT-CHILD-BY-NAME| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|COPY-CURRENT-CHILD-BY-NUMBER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) Added: clfswm-util.lisp ============================================================================== --- (empty file) +++ clfswm-util.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,925 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Sat Mar 1 00:03:08 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Utility +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + + +(defun add-default-group () + "Add a default group" + (when (group-p *current-child*) + (let ((name (query-string "Group name"))) + (push (create-group :name name) (group-child *current-child*)))) + (leave-second-mode)) + + +(defun add-placed-group () + "Add a placed group" + (when (group-p *current-child*) + (let ((name (query-string "Group name")) + (x (/ (query-number "Group x in percent (%)") 100)) + (y (/ (query-number "Group y in percent (%)") 100)) + (w (/ (query-number "Group width in percent (%)") 100)) + (h (/ (query-number "Group height in percent (%)") 100))) + (push (create-group :name name :x x :y y :w w :h h) + (group-child *current-child*)))) + (leave-second-mode)) + + + +(defun delete-focus-window () + "Delete the focus window in all groups and workspaces" + (let ((window (xlib:input-focus *display*))) + (when (and window (not (xlib:window-equal window *no-focus-window*))) + (setf *current-child* *current-root*) + (remove-child-in-all-groups window) + (send-client-message window :WM_PROTOCOLS + (xlib:intern-atom *display* "WM_DELETE_WINDOW")) + (show-all-childs)))) + +(defun destroy-focus-window () + "Destroy the focus window in all groups and workspaces" + (let ((window (xlib:input-focus *display*))) + (when (and window (not (xlib:window-equal window *no-focus-window*))) + (setf *current-child* *current-root*) + (remove-child-in-all-groups window) + (xlib:kill-client *display* (xlib:window-id window)) + (show-all-childs)))) + +(defun remove-focus-window () + "Remove the focus window in the current group" + (let ((window (xlib:input-focus *display*))) + (when (and window (not (xlib:window-equal window *no-focus-window*))) + (setf *current-child* *current-root*) + (hide-child window) + (remove-child-in-group window (find-father-group window)) + (show-all-childs)))) + + +(defun unhide-all-windows-in-current-child () + "Unhide all hidden windows into the current child" + (with-xlib-protect + (dolist (window (get-hidden-windows)) + (unhide-window window) + (process-new-window window) + (xlib:map-window window))) + (show-all-childs)) + + + + +(defun find-child-under-mouse (x y) + "Return the child window under the mouse" + (with-xlib-protect + (let ((win nil)) + (with-all-windows-groups (*current-root* child) + (when (and (<= (xlib:drawable-x child) x (+ (xlib:drawable-x child) (xlib:drawable-width child))) + (<= (xlib:drawable-y child) y (+ (xlib:drawable-y child) (xlib:drawable-height child)))) + (setf win child)) + (when (and (<= (group-rx child) x (+ (group-rx child) (group-rw child))) + (<= (group-ry child) y (+ (group-ry child) (group-rh child)))) + (setf win (group-window child)))) + win))) + + + + + +;;; Selection functions +(defun clear-selection () + "Clear the current selection" + (setf *child-selection* nil) + (display-group-info *current-root*)) + +(defun copy-current-child () + "Copy the current child to the selection" + (pushnew *current-child* *child-selection*) + (display-group-info *current-root*)) + + +(defun cut-current-child () + "Cut the current child to the selection" + (copy-current-child) + (hide-all-childs *current-child*) + (remove-child-in-group *current-child* (find-father-group *current-child* *current-root*)) + (setf *current-child* *current-root*) + (show-all-childs)) + +(defun remove-current-child () + "Remove the current child from its father group" + (hide-all-childs *current-child*) + (remove-child-in-group *current-child* (find-father-group *current-child* *current-root*)) + (setf *current-child* *current-root*) + (leave-second-mode)) + + +(defun paste-selection-no-clear () + "Paste the selection in the current group - Do not clear the selection after paste" + (let ((group-dest (typecase *current-child* + (xlib:window (find-father-group *current-child* *current-root*)) + (group *current-child*)))) + (when group-dest + (dolist (child *child-selection*) + (pushnew child (group-child group-dest))) + (show-all-childs)))) + +(defun paste-selection () + "Paste the selection in the current group" + (paste-selection-no-clear) + (setf *child-selection* nil) + (display-group-info *current-root*)) + + + + + + + +;;; CONFIG - Identify mode +(defun identify-key () + "Identify a key" + (let* ((done nil) + (font (xlib:open-font *display* *identify-font-string*)) + (window (xlib:create-window :parent *root* + :x 0 :y 0 + :width (- (xlib:screen-width *screen*) 2) + :height (* 3 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) + :background (get-color *identify-background*) + :border-width 1 + :border (get-color *identify-border*) + :colormap (xlib:screen-default-colormap *screen*) + :event-mask '(:exposure))) + (gc (xlib:create-gcontext :drawable window + :foreground (get-color *identify-foreground*) + :background (get-color *identify-background*) + :font font + :line-style :solid))) + (labels ((print-key (code keysym key modifiers) + (xlib:clear-area window) + (setf (xlib:gcontext-foreground gc) (get-color *identify-foreground*)) + (xlib:draw-image-glyphs window gc 5 (+ (xlib:max-char-ascent font) 5) + (format nil "Press a key to identify. Press 'q' to stop the identify loop.")) + (when code + (xlib:draw-image-glyphs window gc 10 (+ (* 2 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) 5) + (format nil "Code=~A KeySym=~A Key=~S Modifiers=~A" + code keysym key modifiers)))) + (handle-identify-key (&rest event-slots &key root code state &allow-other-keys) + (declare (ignore event-slots root)) + (let* ((modifiers (xlib:make-state-keys state)) + (key (keycode->char code state)) + (keysym (keysym->keysym-name (xlib:keycode->keysym *display* code 0)))) + (setf done (and (equal key #\q) (null modifiers))) + (dbg code keysym key modifiers) + (print-key code keysym key modifiers) + (force-output))) + (handle-identify (&rest event-slots &key display event-key &allow-other-keys) + (declare (ignore display)) + (case event-key + (:key-press (apply #'handle-identify-key event-slots) t) + (:exposure (print-key nil nil nil nil))) + t)) + (xgrab-pointer *root* 92 93) + (xlib:map-window window) + (format t "~&Press 'q' to stop the identify loop~%") + (print-key nil nil nil nil) + (force-output) + (unwind-protect + (loop until done do + (xlib:display-finish-output *display*) + (xlib:process-event *display* :handler #'handle-identify)) + (xlib:destroy-window window) + (xlib:close-font font) + (xgrab-pointer *root* 66 67))))) + + + +(defun query-show-paren (orig-string pos) + "Replace matching parentheses with brackets" + (let ((string (copy-seq orig-string))) + (labels ((have-to-find-right? () + (and (< pos (length string)) (char= (aref string pos) #\())) + (have-to-find-left? () + (and (> (1- pos) 0) (char= (aref string (1- pos)) #\)))) + (pos-right () + (loop :for p :from (1+ pos) :below (length string) + :with level = 1 :for c = (aref string p) + :do (when (char= c #\() (incf level)) + (when (char= c #\)) (decf level)) + (when (= level 0) (return p)))) + (pos-left () + (loop :for p :from (- pos 2) :downto 0 + :with level = 1 :for c = (aref string p) + :do (when (char= c #\() (decf level)) + (when (char= c #\)) (incf level)) + (when (= level 0) (return p))))) + (when (have-to-find-right?) + (let ((p (pos-right))) + (when p (setf (aref string p) #\])))) + (when (have-to-find-left?) + (let ((p (pos-left))) + (when p (setf (aref string p) #\[)))) + string))) + + +;;; CONFIG - Query string mode +(let ((history nil)) + (defun clear-history () + "Clear the query-string history" + (setf history nil)) + + (defun query-string (msg &optional (default "")) + "Query a string from the keyboard. Display msg as prompt" + (let* ((done nil) + (font (xlib:open-font *display* *query-font-string*)) + (window (xlib:create-window :parent *root* + :x 0 :y 0 + :width (- (xlib:screen-width *screen*) 2) + :height (* 3 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) + :background (get-color *query-background*) + :border-width 1 + :border (get-color *query-border*) + :colormap (xlib:screen-default-colormap *screen*) + :event-mask '(:exposure))) + (gc (xlib:create-gcontext :drawable window + :foreground (get-color *query-foreground*) + :background (get-color *query-background*) + :font font + :line-style :solid)) + (result-string default) + (pos (length default)) + (local-history history)) + (labels ((add-cursor (string) + (concatenate 'string (subseq string 0 pos) "|" (subseq string pos))) + (print-string () + (xlib:clear-area window) + (setf (xlib:gcontext-foreground gc) (get-color *query-foreground*)) + (xlib:draw-image-glyphs window gc 5 (+ (xlib:max-char-ascent font) 5) msg) + (when (< pos 0) (setf pos 0)) + (when (> pos (length result-string)) (setf pos (length result-string))) + (xlib:draw-image-glyphs window gc 10 (+ (* 2 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) 5) + (add-cursor (query-show-paren result-string pos)))) + (call-backspace (modifiers) + (let ((del-pos (if (member :control modifiers) + (or (position #\Space result-string :from-end t :end pos) 0) + (1- pos)))) + (when (>= del-pos 0) + (setf result-string (concatenate 'string + (subseq result-string 0 del-pos) + (subseq result-string pos)) + pos del-pos)))) + (call-delete (modifiers) + (let ((del-pos (if (member :control modifiers) + (1+ (or (position #\Space result-string :start pos) (1- (length result-string)))) + (1+ pos)))) + (if (<= del-pos (length result-string)) + (setf result-string (concatenate 'string + (subseq result-string 0 pos) + (subseq result-string del-pos)))))) + (call-delete-eof () + (setf result-string (subseq result-string 0 pos))) + (handle-query-key (&rest event-slots &key root code state &allow-other-keys) + (declare (ignore event-slots root)) + (let* ((modifiers (xlib:make-state-keys state)) + (keysym (xlib:keycode->keysym *display* code (cond ((member :shift modifiers) 1) + ((member :mod-5 modifiers) 2) + (t 0)))) + (char (xlib:keysym->character *display* keysym)) + (keysym-name (keysym->keysym-name keysym))) + (setf done (cond ((string-equal keysym-name "Return") :Return) + ((string-equal keysym-name "Tab") :Complet) + ((string-equal keysym-name "Escape") :Escape) + (t nil))) + (cond ((string-equal keysym-name "Left") + (when (> pos 0) + (setf pos (if (member :control modifiers) + (let ((p (position #\Space result-string + :end (min (1- pos) (length result-string)) + :from-end t))) + (if p p 0)) + (1- pos))))) + ((string-equal keysym-name "Right") + (when (< pos (length result-string)) + (setf pos (if (member :control modifiers) + (let ((p (position #\Space result-string + :start (min (1+ pos) (length result-string))))) + (if p p (length result-string))) + (1+ pos))))) + ((string-equal keysym-name "Up") + (setf result-string (first local-history) + pos (length result-string) + local-history (rotate-list local-history))) + ((string-equal keysym-name "Down") + (setf result-string (first local-history) + pos (length result-string) + local-history (anti-rotate-list local-history))) + ((string-equal keysym-name "Home") (setf pos 0)) + ((string-equal keysym-name "End") (setf pos (length result-string))) + ((string-equal keysym-name "Backspace") (call-backspace modifiers)) + ((string-equal keysym-name "Delete") (call-delete modifiers)) + ((and (string-equal keysym-name "k") (member :control modifiers)) + (call-delete-eof)) + ((and (characterp char) (standard-char-p char)) + (setf result-string (concatenate 'string + (when (<= pos (length result-string)) + (subseq result-string 0 pos)) + (string char) + (when (< pos (length result-string)) + (subseq result-string pos)))) + (incf pos))) + (print-string))) + (handle-query (&rest event-slots &key display event-key &allow-other-keys) + (declare (ignore display)) + (case event-key + (:key-press (apply #'handle-query-key event-slots) t) + (:exposure (print-string))) + t)) + (xgrab-pointer *root* 92 93) + (xlib:map-window window) + (print-string) + (wait-no-key-or-button-press) + (unwind-protect + (loop until (member done '(:Return :Escape :Complet)) do + (xlib:display-finish-output *display*) + (xlib:process-event *display* :handler #'handle-query)) + (xlib:destroy-window window) + (xlib:close-font font) + (xgrab-pointer *root* 66 67))) + (values (when (member done '(:Return :Complet)) + (push result-string history) + result-string) + done)))) + + + +(defun query-number (msg) + "Query a number from the query input" + (parse-integer (or (query-string msg) "") :junk-allowed t)) + + + +(defun eval-from-query-string () + "Eval a lisp form from the query input" + (let ((form (query-string "Eval:")) + (result nil)) + (when (and form (not (equal form ""))) + (let ((printed-result + (with-output-to-string (*standard-output*) + (setf result (handler-case + (loop for i in (multiple-value-list + (eval (read-from-string form))) + collect (format nil "~S" i)) + (error (condition) + (format nil "~A" condition))))))) + (info-mode (expand-newline (append (ensure-list (format nil "> ~A" form)) + (ensure-list printed-result) + (ensure-list result))) + :width (- (xlib:screen-width *screen*) 2)) + (eval-from-query-string))))) + + + + +(defun run-program-from-query-string () + "Run a program from the query input" + (let ((program (query-string "Run:"))) + (when (and program (not (equal program ""))) + (setf *second-mode-program* program) + (leave-second-mode)))) + + + + +;;; Group name actions +;;;(loop :for str :in '("The Gimp" "The klm" "klm" "abc") ;; Test +;;; :when (zerop (or (search "ThE" str :test #'string-equal) -1)) +;;; :collect str) +(defun ask-group-name (msg) + "Ask a group name" + (let ((all-group-name nil) + (name "")) + (with-all-groups (*root-group* group) + (awhen (group-name group) (push it all-group-name))) + (labels ((selected-names () + (loop :for str :in all-group-name + :when (zerop (or (search name str :test #'string-equal) -1)) + :collect str)) + (complet-alone (req sel) + (if (= 1 (length sel)) (first sel) req)) + (ask () + (let* ((selected (selected-names)) + (default (complet-alone name selected))) + (multiple-value-bind (str done) + (query-string (format nil "~A: ~{~A~^, ~}" msg selected) default) + (setf name str) + (when (or (not (string-equal name default)) (eql done :complet)) + (ask)))))) + (ask)) + name)) + + + +;;; Focus by functions +(defun focus-group-by (group) + (when (group-p group) + (focus-all-childs group (or (find-father-group group *current-root*) + (find-father-group group) + *root-group*)))) + + +(defun focus-group-by-name () + "Focus a group by name" + (focus-group-by (find-group-by-name (ask-group-name "Focus group"))) + (leave-second-mode)) + +(defun focus-group-by-number () + "Focus a group by number" + (focus-group-by (find-group-by-number (query-number "Focus group by number:"))) + (leave-second-mode)) + + +;;; Open by functions +(defun open-group-by (group) + (when (group-p group) + (push (create-group :name (query-string "Group name")) (group-child group)))) + + + +(defun open-group-by-name () + "Open a new group in a named group" + (open-group-by (find-group-by-name (ask-group-name "Open a new group in"))) + (leave-second-mode)) + +(defun open-group-by-number () + "Open a new group in a numbered group" + (open-group-by (find-group-by-name (ask-group-name "Open a new group in the grou numbered:"))) + (leave-second-mode)) + + +;;; Delete by functions +(defun delete-group-by (group) + (unless (equal group *root-group*) + (when (equal group *current-root*) + (setf *current-root* *root-group*)) + (when (equal group *current-child*) + (setf *current-child* *current-root*)) + (remove-child-in-group group (find-father-group group)))) + + +(defun delete-group-by-name () + "Delete a group by name" + (delete-group-by (find-group-by-name (ask-group-name "Delete group"))) + (leave-second-mode)) + +(defun delete-group-by-number () + "Delete a group by number" + (delete-group-by (find-group-by-number (query-number "Delete group by number:"))) + (leave-second-mode)) + + +;;; Move by function +(defun move-current-child-by (child group-dest) + (when (and child (group-p group-dest)) + (remove-child-in-group child (find-father-group child)) + (pushnew child (group-child group-dest)) + (focus-all-childs child group-dest))) + +(defun move-current-child-by-name () + "Move current child in a named group" + (move-current-child-by *current-child* + (find-group-by-name + (ask-group-name (format nil "Move '~A' to group" (child-name *current-child*))))) + (leave-second-mode)) + +(defun move-current-child-by-number () + "Move current child in a numbered group" + (move-current-child-by *current-child* + (find-group-by-number + (query-number (format nil "Move '~A' to group numbered:" (child-name *current-child*))))) + (leave-second-mode)) + + +;;; Copy by function +(defun copy-current-child-by (child group-dest) + (when (and child (group-p group-dest)) + (pushnew child (group-child group-dest)) + (focus-all-childs child group-dest))) + +(defun copy-current-child-by-name () + "Copy current child in a named group" + (copy-current-child-by *current-child* + (find-group-by-name + (ask-group-name (format nil "Copy '~A' to group" (child-name *current-child*))))) + (leave-second-mode)) + +(defun copy-current-child-by-number () + "Copy current child in a numbered group" + (copy-current-child-by *current-child* + (find-group-by-number + (query-number (format nil "Copy '~A' to group numbered:" (child-name *current-child*))))) + (leave-second-mode)) + + + + + + +;;;;;,----- +;;;;;| Various definitions +;;;;;`----- +;;(defun stop-all-pending-actions () +;; "Stop all pending actions (actions like open in new workspace/group)" +;; (setf *open-next-window-in-new-workspace* nil +;; *open-next-window-in-new-group* nil +;; *arrow-action* nil +;; *pager-arrow-action* nil)) +;; +;;(defun rotate-window-up () +;; "Rotate up windows in the current group" +;; (setf (group-window-list (current-group)) +;; (rotate-list (group-window-list (current-group)))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;;(defun rotate-window-down () +;; "Rotate down windows in the current group" +;; (setf (group-window-list (current-group)) +;; (anti-rotate-list (group-window-list (current-group)))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;; +;;(defun maximize-group (group) +;; "Maximize the group" +;; (when group +;; (unless (group-fullscreenp group) +;; (setf (group-fullscreenp group) t) +;; (show-all-windows-in-workspace (current-workspace))))) +;; +;;(defun minimize-group (group) +;; "Minimize the group" +;; (when group +;; (when (group-fullscreenp group) +;; (setf (group-fullscreenp group) nil) +;; (show-all-windows-in-workspace (current-workspace))))) +;; +;;(defun toggle-maximize-group (group) +;; "Maximize/minimize a group" +;; (if (group-fullscreenp group) +;; (minimize-group group) +;; (maximize-group group))) +;; +;; +;;(defun toggle-maximize-current-group () +;; "Maximize/minimize the current group" +;; (toggle-maximize-group (current-group))) +;; +;; +;;(defun renumber-workspaces () +;; "Reset workspaces numbers (1 for current workspace, 2 for the second...) " +;; (hide-all-windows-in-workspace (current-workspace)) +;; (setf *current-workspace-number* 0) +;; (loop for workspace in *workspace-list* do +;; (setf (workspace-number workspace) (incf *current-workspace-number*))) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;;(defun sort-workspaces () +;; "Sort workspaces by numbers" +;; (hide-all-windows-in-workspace (current-workspace)) +;; (setf *workspace-list* (sort *workspace-list* +;; #'(lambda (x y) +;; (< (workspace-number x) (workspace-number y))))) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;; +;; +;;(defun circulate-group-up () +;; "Circulate up in group" +;; (banish-pointer) +;; (minimize-group (current-group)) +;; (no-focus) +;; (setf (workspace-group-list (current-workspace)) +;; (rotate-list (workspace-group-list (current-workspace)))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;; +;;(defun circulate-group-up-move-window () +;; "Circulate up in group moving the current window in the next group" +;; (banish-pointer) +;; (minimize-group (current-group)) +;; (no-focus) +;; (let ((window (current-window))) +;; (remove-window-in-group window (current-group)) +;; (focus-window (current-window)) +;; (setf (workspace-group-list (current-workspace)) +;; (rotate-list (workspace-group-list (current-workspace)))) +;; (add-window-in-group window (current-group))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;;(defun circulate-group-up-copy-window () +;; "Circulate up in group copying the current window in the next group" +;; (banish-pointer) +;; (minimize-group (current-group)) +;; (no-focus) +;; (let ((window (current-window))) +;; (setf (workspace-group-list (current-workspace)) +;; (rotate-list (workspace-group-list (current-workspace)))) +;; (unless (window-already-in-workspace window (current-workspace)) +;; (add-window-in-group window (current-group)))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;; +;; +;;(defun circulate-group-down () +;; "Circulate down in group" +;; (banish-pointer) +;; (minimize-group (current-group)) +;; (no-focus) +;; (setf (workspace-group-list (current-workspace)) +;; (anti-rotate-list (workspace-group-list (current-workspace)))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;;(defun circulate-group-down-move-window () +;; "Circulate down in group moving the current window in the next group" +;; (banish-pointer) +;; (minimize-group (current-group)) +;; (no-focus) +;; (let ((window (current-window))) +;; (remove-window-in-group window (current-group)) +;; (focus-window (current-window)) +;; (setf (workspace-group-list (current-workspace)) +;; (anti-rotate-list (workspace-group-list (current-workspace)))) +;; (add-window-in-group window (current-group))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;;(defun circulate-group-down-copy-window () +;; "Circulate down in group copying the current window in the next group" +;; (banish-pointer) +;; (minimize-group (current-group)) +;; (no-focus) +;; (let ((window (current-window))) +;; (setf (workspace-group-list (current-workspace)) +;; (anti-rotate-list (workspace-group-list (current-workspace)))) +;; (unless (window-already-in-workspace window (current-workspace)) +;; (add-window-in-group window (current-group)))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;; +;; +;; +;; +;;(defun circulate-workspace-by-number (number) +;; "Focus a workspace given its number" +;; (no-focus) +;; (hide-all-windows-in-workspace (current-workspace)) +;; (dotimes (i (length *workspace-list*)) +;; (when (= (workspace-number (current-workspace)) number) +;; (return)) +;; (setf *workspace-list* (rotate-list *workspace-list*))) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;;(defun circulate-workspace-up () +;; "Circulate up in workspace" +;; (no-focus) +;; (hide-all-windows-in-workspace (current-workspace)) +;; (setf *workspace-list* (rotate-list *workspace-list*)) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;;(defun circulate-workspace-up-move-group () +;; "Circulate up in workspace moving current group in the next workspace" +;; (no-focus) +;; (hide-all-windows-in-workspace (current-workspace)) +;; (let ((group (current-group))) +;; (remove-group-in-workspace group (current-workspace)) +;; (setf *workspace-list* (rotate-list *workspace-list*)) +;; (add-group-in-workspace (copy-group group) (current-workspace))) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;;(defun circulate-workspace-up-copy-group () +;; "Circulate up in workspace copying current group in the next workspace" +;; (no-focus) +;; (hide-all-windows-in-workspace (current-workspace)) +;; (let ((group (current-group))) +;; (setf *workspace-list* (rotate-list *workspace-list*)) +;; (unless (group-windows-already-in-workspace group (current-workspace)) +;; (add-group-in-workspace (copy-group group) (current-workspace)))) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;; +;;(defun circulate-workspace-down () +;; "Circulate down in workspace" +;; (no-focus) +;; (hide-all-windows-in-workspace (current-workspace)) +;; (setf *workspace-list* (anti-rotate-list *workspace-list*)) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;;(defun circulate-workspace-down-move-group () +;; "Circulate down in workspace moving current group in the next workspace" +;; (no-focus) +;; (hide-all-windows-in-workspace (current-workspace)) +;; (let ((group (current-group))) +;; (remove-group-in-workspace group (current-workspace)) +;; (setf *workspace-list* (anti-rotate-list *workspace-list*)) +;; (add-group-in-workspace (copy-group group) (current-workspace))) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;;(defun circulate-workspace-down-copy-group () +;; "Circulate down in workspace copying current group in the next workspace" +;; (no-focus) +;; (hide-all-windows-in-workspace (current-workspace)) +;; (let ((group (current-group))) +;; (setf *workspace-list* (anti-rotate-list *workspace-list*)) +;; (unless (group-windows-already-in-workspace group (current-workspace)) +;; (add-group-in-workspace (copy-group group) (current-workspace)))) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;; +;;(defun delete-current-window () +;; "Delete the current window in all groups and workspaces" +;; (let ((window (current-window))) +;; (when window +;; (no-focus) +;; (remove-window-in-all-workspace window) +;; (send-client-message window :WM_PROTOCOLS +;; (intern-atom *display* "WM_DELETE_WINDOW")))) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;; +;;(defun destroy-current-window () +;; "Destroy the current window in all groups and workspaces" +;; (let ((window (current-window))) +;; (when window +;; (no-focus) +;; (remove-window-in-all-workspace window) +;; (kill-client *display* (xlib:window-id window)))) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;;(defun remove-current-window () +;; "Remove the current window in the current group" +;; (let ((window (current-window))) +;; (when window +;; (no-focus) +;; (hide-window window) +;; (remove-window-in-group (current-window) (current-group)))) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;;(defun remove-current-group () +;; "Remove the current group in the current workspace" +;; (minimize-group (current-group)) +;; (let ((group (current-group))) +;; (when group +;; (no-focus) +;; (dolist (window (group-window-list group)) +;; (when window +;; (hide-window window))) +;; (remove-group-in-workspace group (current-workspace)))) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;;(defun remove-current-workspace () +;; "Remove the current workspace" +;; (let ((workspace (current-workspace))) +;; (when workspace +;; (hide-all-windows-in-workspace workspace) +;; (remove-workspace workspace) +;; (show-all-windows-in-workspace (current-workspace))))) +;; +;; +;;(defun unhide-all-windows-in-current-group () +;; "Unhide all hidden windows into the current group" +;; (let ((all-windows (get-all-windows)) +;; (hidden-windows (remove-if-not #'window-hidden-p +;; (copy-list (xlib:query-tree *root*)))) +;; (current-group (current-group))) +;; (dolist (window (set-difference hidden-windows all-windows)) +;; (unhide-window window) +;; (process-new-window window) +;; (xlib:map-window window) +;; (adapt-window-to-group window current-group))) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;; +;; +;; +;;(defun create-new-default-group () +;; "Create a new default group" +;; (minimize-group (current-group)) +;; (add-group-in-workspace (copy-group *default-group*) +;; (current-workspace)) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;;(defun create-new-default-workspace () +;; "Create a new default workspace" +;; (hide-all-windows-in-workspace (current-workspace)) +;; (add-workspace (create-default-workspace)) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;; +;; +;;;;;,----- +;;;;;| Group moving +;;;;;`----- +;;(defun move-group (group dx dy) +;; "Move group" +;; (setf (group-x group) (+ (group-x group) dx) +;; (group-y group) (+ (group-y group) dy)) +;; (dolist (window (group-window-list group)) +;; (adapt-window-to-group window group)) +;; (show-all-group (current-workspace))) +;; +;;(defun move-group-to (group x y) +;; "Move group to" +;; (setf (group-x group) x +;; (group-y group) y) +;; (dolist (window (group-window-list group)) +;; (adapt-window-to-group window group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;; +;;(defun resize-group (group dx dy) +;; "Resize group" +;; (setf (group-width group) (max (+ (group-width group) dx) 100) +;; (group-height group) (max (+ (group-height group) dy) 100)) +;; (dolist (window (group-window-list group)) +;; (adapt-window-to-group window group)) +;; (show-all-group (current-workspace))) +;; +;;(defun force-window-in-group () +;; "Force the current window to move in the group (Useful only for transient windows)" +;; (let ((group (current-group)) +;; (window (current-window))) +;; (when window +;; (setf (xlib:drawable-x window) (group-x group) +;; (xlib:drawable-y window) (group-y group)) +;; (show-all-windows-in-workspace (current-workspace))))) +;; +;;(defun force-window-center-in-group () +;; "Force the current window to move in the center of the group (Useful only for transient windows)" +;; (let ((group (current-group)) +;; (window (current-window))) +;; (when window +;; (setf (xlib:drawable-x window) (truncate (+ (group-x group) +;; (/ (- (group-width group) (xlib:drawable-width window)) 2))) +;; (xlib:drawable-y window) (truncate (+ (group-y group) +;; (/ (- (group-height group) (xlib:drawable-height window)) 2)))) +;; (show-all-windows-in-workspace (current-workspace))))) +;; +;; +;; +;; +;; +;;(defun show-help (&optional (browser "dillo") (tempfile "/tmp/clfswm.html")) +;; "Show current keys and buttons bindings" +;; (ignore-errors +;; (produce-doc-html-in-file tempfile)) +;; (sleep 1) +;; (do-shell (format nil "~A ~A" browser tempfile))) Added: clfswm.asd ============================================================================== --- (empty file) +++ clfswm.asd Sat Mar 1 07:36:13 2008 @@ -0,0 +1,50 @@ +;;;; -*- Mode: Lisp -*- +;;;; Author: Philippe Brochard +;;;; ASDF System Definition +;;; +;;; #date#: Fri Feb 22 21:39:37 2008 + +(in-package #:asdf) + +(defsystem clfswm + :description "CLFSWM: Fullscreen Window Manager" + :version "Please, see the package date (something between 0.5 and 1.5)" + :author "Philippe Brochard " + :licence "GNU Public License (GPL)" + :components ((:file "tools") + (:file "my-html" + :depends-on ("tools")) + (:file "package" + :depends-on ("my-html" "tools")) + (:file "config" + :depends-on ("package")) + (:file "keysyms" + :depends-on ("package")) + (:file "xlib-util" + :depends-on ("package" "keysyms" "config")) + (:file "netwm-util" + :depends-on ("package" "xlib-util")) + (:file "clfswm-keys" + :depends-on ("package" "config" "xlib-util" "keysyms")) + (:file "clfswm-internal" + :depends-on ("xlib-util" "clfswm-keys" "netwm-util" "tools")) + (:file "clfswm" + :depends-on ("xlib-util" "netwm-util" "clfswm-keys" "config" + "clfswm-internal" "tools")) + (:file "clfswm-second-mode" + :depends-on ("package" "clfswm-internal")) + (:file "clfswm-info" + :depends-on ("package" "xlib-util" "config" "clfswm-keys" "clfswm" "clfswm-internal")) + (:file "clfswm-util" + :depends-on ("clfswm" "keysyms" "clfswm-info" "clfswm-second-mode")) + (:file "clfswm-layout" + :depends-on ("package" "clfswm-util" "clfswm-info")) + (:file "bindings" + :depends-on ("clfswm" "clfswm-internal")) + (:file "bindings-second-mode" + :depends-on ("clfswm" "clfswm-util")))) + + + + + Added: clfswm.fas ============================================================================== --- (empty file) +++ clfswm.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,535 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 28 (IN-PACKAGE :CLFSWM)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CLFSWM" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|34 37 (DEFUN HANDLE-KEY-PRESS (&REST EVENT-SLOTS &KEY ...) ...)-2| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HANDLE-KEY-PRESS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HANDLE-KEY-PRESS| + #27Y(00 00 00 00 00 00 00 00 C7 00 03 00 00 00 3D 02 3D 01 6B 03 AF AF + 2D 03 04 19 05) + (:|ROOT| :|CODE| :|STATE| |CLFSWM|::|*MAIN-KEYS*| + |CLFSWM|::|FUNCALL-KEY-FROM-CODE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|ROOT| |CLFSWM|::|CODE| |CLFSWM|::|STATE| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|42 68 (DEFUN HANDLE-CONFIGURE-REQUEST (&REST EVENT-SLOTS &KEY ...) ...)-3| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HANDLE-CONFIGURE-REQUEST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HANDLE-CONFIGURE-REQUEST| + #130Y(02 00 01 00 00 00 00 00 C7 00 08 00 00 00 00 2B 08 3B 09 01 00 0B + 00 00 3B 08 01 00 0B 00 01 3B 07 01 00 0B 00 02 3B 06 01 00 0B 00 + 03 3B 05 01 00 0B 00 04 3B 04 01 00 0B 00 05 3B 03 01 00 0B 00 06 + 3B 02 01 00 0B 00 07 9D 2B 01 AC 2C 08 01 0B 00 00 9D 2B 01 00 0B + 00 00 4B 09 21 B0 AF 6D 0A 02 B1 6D 0B 01 57 0C B0 36 00 16 06 1B + 10 58 67 00 00 01 76 00 AD 36 01 18 02 01 19 02 00 4D 19 0D) + (:|STACK-MODE| :|WINDOW| :|X| :|Y| :|WIDTH| :|HEIGHT| :|BORDER-WIDTH| + :|VALUE-MASK| + #Y(|CLFSWM|::|HANDLE-CONFIGURE-REQUEST-ADJUST-FROM-REQUEST| + #74Y(00 00 00 00 00 00 00 00 06 01 69 01 08 C6 34 1D 08 69 01 02 69 + 01 03 30 02 69 01 08 C8 34 1D 08 69 01 02 69 01 04 30 04 69 01 + 08 CA 34 1D 08 69 01 02 69 01 06 30 06 69 01 08 CC 34 1F 0A 69 + 01 02 69 01 05 30 08 19 01 19 01) + (|COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|HANDLE-CONFIGURE-REQUEST-HAS-X| + #21Y(00 00 00 00 01 00 00 00 06 02 DA AE DA 73 02 3D 33 01 2D 19 + 02) + (1.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|CLFSWM|::|MASK|) |COMMON-LISP|::|NIL|) + |XLIB|::|SET-DRAWABLE-X| + #Y(|CLFSWM|::|HANDLE-CONFIGURE-REQUEST-HAS-Y| + #21Y(00 00 00 00 01 00 00 00 06 02 DA AE DA 73 02 3D 33 01 2D 19 + 02) + (2.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|CLFSWM|::|MASK|) |COMMON-LISP|::|NIL|) + |XLIB|::|SET-DRAWABLE-Y| + #Y(|CLFSWM|::|HANDLE-CONFIGURE-REQUEST-HAS-H| + #21Y(00 00 00 00 01 00 00 00 06 02 DA AE DA 73 02 3D 33 01 2D 19 + 02) + (8.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|CLFSWM|::|MASK|) |COMMON-LISP|::|NIL|) + |XLIB|::|SET-DRAWABLE-HEIGHT| + #Y(|CLFSWM|::|HANDLE-CONFIGURE-REQUEST-HAS-W| + #21Y(00 00 00 00 01 00 00 00 06 02 DA AE DA 73 02 3D 33 01 2D 19 + 02) + (4.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|CLFSWM|::|MASK|) |COMMON-LISP|::|NIL|) + |XLIB|::|SET-DRAWABLE-WIDTH|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + #(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|HANDLE-CONFIGURE-REQUEST-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|HANDLE-CONFIGURE-REQUEST-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|HANDLE-CONFIGURE-REQUEST-2| + #128Y(01 00 00 00 00 00 00 00 06 01 69 02 02 01 04 7B 05 AC 0E 01 5D + 10 01 C7 45 69 02 08 C8 34 1D 08 69 02 02 69 02 07 30 04 69 02 + 02 6B 05 8A 06 35 07 01 01 34 69 02 08 D1 34 1F 0A 69 02 01 AC + 24 0D 35 00 16 01 41 67 00 00 03 2F 0F 46 11 19 02 69 02 02 69 + 02 02 6B 05 70 09 30 0A 69 02 02 2F 0B 16 01 1B 4F 69 02 02 6F + 07 AC 24 08 62 07 01 01 34 16 01 1B FF BD 69 02 02 2F 0E 16 01 + 1B 45) + (|COMMON-LISP|::|NIL| |XLIB|::|*WINDOW-ATTRIBUTES*| + #.#'|COMMON-LISP|::|VALUES| + #Y(|CLFSWM|::|HANDLE-CONFIGURE-REQUEST-HAS-BW| + #21Y(00 00 00 00 01 00 00 00 06 02 DA AE DA 73 02 3D 33 01 2D 19 + 02) + (16.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|CLFSWM|::|MASK|) |COMMON-LISP|::|NIL|) + |XLIB|::|SET-DRAWABLE-BORDER-WIDTH| |CLFSWM|::|*CURRENT-ROOT*| + |CLFSWM|::|FIND-CHILD| |CLFSWM|::|WINDOW-TYPE| :|NORMAL| + |CLFSWM|::|FIND-FATHER-GROUP| |CLFSWM|::|ADAPT-CHILD-TO-FATHER| + |CLFSWM|::|SEND-CONFIGURATION-NOTIFY| + #Y(|CLFSWM|::|HANDLE-CONFIGURE-REQUEST-HAS-STACKMODE| + #21Y(00 00 00 00 01 00 00 00 06 02 DA AE DA 73 02 3D 33 01 2D 19 + 02) + (64.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|CLFSWM|::|MASK|) |COMMON-LISP|::|NIL|) + :|ABOVE| |CLFSWM|::|RAISE-WINDOW| |XLIB|::|CLEANUP-STATE-ENTRY|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| |XLIB|::|WINDOW-ERROR| + |XLIB|::|DRAWABLE-ERROR|) + 97.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|STACK-MODE| |CLFSWM|::|WINDOW| |CLFSWM|::|X| |CLFSWM|::|Y| + |CLFSWM|::|WIDTH| |CLFSWM|::|HEIGHT| |CLFSWM|::|BORDER-WIDTH| + |CLFSWM|::|VALUE-MASK| |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|73 74 (DEFUN HANDLE-CONFIGURE-NOTIFY (&REST EVENT-SLOTS) ...)-4| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HANDLE-CONFIGURE-NOTIFY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HANDLE-CONFIGURE-NOTIFY| + #13Y(00 00 00 00 00 00 00 00 07 16 00 19 02) () |COMMON-LISP|::|NIL| + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|79 86 (DEFUN HANDLE-MAP-REQUEST (&REST EVENT-SLOTS &KEY ...) ...)-5| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HANDLE-MAP-REQUEST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HANDLE-MAP-REQUEST| + #40Y(00 00 00 00 00 00 00 00 C7 00 02 00 00 00 3D 02 3B 01 08 7D 01 93 + 01 06 00 19 04 92 01 7A AE 2F 02 AE 2F 03 2E 04 19 04) + (:|WINDOW| :|SEND-EVENT-P| |CLFSWM|::|PROCESS-NEW-WINDOW| + |XLIB|::|MAP-WINDOW| |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|WINDOW| |CLFSWM|::|SEND-EVENT-P| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|89 95 (DEFUN HANDLE-UNMAP-NOTIFY (&REST EVENT-SLOTS &KEY ...) ...)-6| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HANDLE-UNMAP-NOTIFY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HANDLE-UNMAP-NOTIFY| + #55Y(00 00 00 00 00 00 00 00 C7 00 03 00 00 00 3D 03 3D 02 3B 01 0A 7D + 01 93 03 08 1B 0B 00 19 05 92 03 05 AD AF 8B 03 75 AD 6B 04 30 05 + 1F 07 AD 2F 06 2E 07 19 05 19 05) + (:|SEND-EVENT-P| :|EVENT-WINDOW| :|WINDOW| |XLIB|::|WINDOW-EQUAL| + |CLFSWM|::|*ROOT-GROUP*| |CLFSWM|::|FIND-CHILD| + |CLFSWM|::|REMOVE-CHILD-IN-ALL-GROUPS| |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|SEND-EVENT-P| |CLFSWM|::|EVENT-WINDOW| |CLFSWM|::|WINDOW| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|98 104 (DEFUN HANDLE-DESTROY-NOTIFY (&REST EVENT-SLOTS &KEY ...) ...)-7| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HANDLE-DESTROY-NOTIFY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HANDLE-DESTROY-NOTIFY| + #53Y(00 00 00 00 00 00 00 00 C7 00 03 00 00 00 3D 03 3D 02 3B 01 08 7D + 01 93 03 06 00 19 05 92 03 7A AD AF 8A 03 75 AD 6B 04 30 05 1F 07 + AD 2F 06 2E 07 19 05 19 05) + (:|SEND-EVENT-P| :|EVENT-WINDOW| :|WINDOW| |XLIB|::|WINDOW-EQUAL| + |CLFSWM|::|*ROOT-GROUP*| |CLFSWM|::|FIND-CHILD| + |CLFSWM|::|REMOVE-CHILD-IN-ALL-GROUPS| |CLFSWM|::|SHOW-ALL-CHILDS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|SEND-EVENT-P| |CLFSWM|::|EVENT-WINDOW| |CLFSWM|::|WINDOW| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|108 109 (DEFUN HANDLE-ENTER-NOTIFY (&REST EVENT-SLOTS &KEY ...) ...)-8| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HANDLE-ENTER-NOTIFY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HANDLE-ENTER-NOTIFY| + #17Y(00 00 00 00 00 00 00 00 C7 00 02 00 00 00 00 19 04) + (:|ROOT-X| :|ROOT-Y|) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|113 116 (DEFUN HANDLE-EXPOSURE (&REST EVENT-SLOTS &KEY ...) ...)-9| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HANDLE-EXPOSURE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HANDLE-EXPOSURE| + #31Y(00 00 00 00 00 00 00 00 C7 00 01 00 00 00 3D 01 AD 6B 01 70 02 9D + 1F 05 14 2F 03 19 04 19 04) + (:|WINDOW| |CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|FIND-GROUP-WINDOW| + |CLFSWM|::|DISPLAY-GROUP-INFO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|WINDOW| |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|119 120 (DEFUN HANDLE-CREATE-NOTIFY (&REST EVENT-SLOTS) ...)-10| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HANDLE-CREATE-NOTIFY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HANDLE-CREATE-NOTIFY| + #13Y(00 00 00 00 00 00 00 00 07 16 00 19 02) () |COMMON-LISP|::|NIL| + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|124 136 (DEFUN HANDLE-CLICK-TO-FOCUS (WINDOW) ...)-11| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HANDLE-CLICK-TO-FOCUS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HANDLE-CLICK-TO-FOCUS| + #66Y(00 00 00 00 01 00 00 00 06 02 64 AE AF 6B 00 70 01 93 00 12 93 01 + 08 93 00 05 AD AD 8A 03 18 92 02 1C 2E 06 19 05 B0 6B 00 30 02 F9 + 14 6B 00 30 01 F8 93 01 6A 1B 60 2E 04 7D 02 93 02 64 2E 05 19 05) + (|CLFSWM|::|*CURRENT-ROOT*| |CLFSWM|::|FIND-FATHER-GROUP| + |CLFSWM|::|FIND-GROUP-WINDOW| |CLFSWM|::|FOCUS-ALL-CHILDS| + |CLFSWM|::|SHOW-ALL-CHILDS| |CLFSWM|::|REPLAY-BUTTON-EVENT| + |CLFSWM|::|STOP-BUTTON-EVENT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|139 143 (DEFUN HANDLE-BUTTON-PRESS (&REST EVENT-SLOTS &KEY ...) ...)-12| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HANDLE-BUTTON-PRESS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HANDLE-BUTTON-PRESS| + #39Y(00 00 00 00 00 00 00 00 C7 00 03 00 00 00 3D 03 3D 02 3D 01 AF DD + 91 01 2D 04 AE 8E 92 04 2E 05 19 05 AD 2F 04 19 05) + (:|CODE| :|STATE| :|WINDOW| 1. |CLFSWM|::|HANDLE-CLICK-TO-FOCUS| + |CLFSWM|::|REPLAY-BUTTON-EVENT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|CODE| |CLFSWM|::|STATE| |CLFSWM|::|WINDOW| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|150 160 (SETF *KEY-PRESS-HOOK* #'HANDLE-KEY-PRESS ...)-13| + #48Y(00 00 00 00 00 00 00 00 00 01 98 00 0F 01 98 02 0F 03 98 04 0F 05 CB 0F + 07 98 08 0F 09 CF 0F 0B 98 0C 0F 0D D3 0F 0F 98 10 0F 11 D7 0F 13 19 + 01) + (|CLFSWM|::|HANDLE-KEY-PRESS| |CLFSWM|::|*KEY-PRESS-HOOK*| + |CLFSWM|::|HANDLE-CONFIGURE-REQUEST| |CLFSWM|::|*CONFIGURE-REQUEST-HOOK*| + |CLFSWM|::|HANDLE-CONFIGURE-NOTIFY| |CLFSWM|::|*CONFIGURE-NOTIFY-HOOK*| + |CLFSWM|::|HANDLE-DESTROY-NOTIFY| |CLFSWM|::|*DESTROY-NOTIFY-HOOK*| + |CLFSWM|::|HANDLE-ENTER-NOTIFY| |CLFSWM|::|*ENTER-NOTIFY-HOOK*| + |CLFSWM|::|HANDLE-EXPOSURE| |CLFSWM|::|*EXPOSURE-HOOK*| + |CLFSWM|::|HANDLE-MAP-REQUEST| |CLFSWM|::|*MAP-REQUEST-HOOK*| + |CLFSWM|::|HANDLE-UNMAP-NOTIFY| |CLFSWM|::|*UNMAP-NOTIFY-HOOK*| + |CLFSWM|::|HANDLE-CREATE-NOTIFY| |CLFSWM|::|*CREATE-NOTIFY-HOOK*| + |CLFSWM|::|HANDLE-BUTTON-PRESS| |CLFSWM|::|*BUTTON-PRESS-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|165 183 (DEFUN HANDLE-EVENT (&REST EVENT-SLOTS &KEY ...) ...)-14| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HANDLE-EVENT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HANDLE-EVENT| + #75Y(02 00 01 00 00 00 00 00 C7 00 02 00 00 00 00 2B 02 7F 04 00 00 3B + 02 01 00 0B 00 01 9D 2B 01 00 0B 00 00 4B 02 10 B0 AF 6D 03 02 B1 + 6D 04 01 57 05 B0 36 00 16 06 4D 16 01 02 19 05 58 67 00 00 01 76 + 00 AD 36 01 18 02 01 19 02) + (:|DISPLAY| :|EVENT-KEY| #(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|HANDLE-EVENT-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|HANDLE-EVENT-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|HANDLE-EVENT-2| + #77Y(00 00 00 00 00 00 00 00 06 01 07 01 02 26 01 3A 0E 02 1B 2E 0E + 04 1B 2A 0E 05 1B 26 0E 06 1B 22 0E 07 1B 1E 0E 08 1B 1A 0E 09 + 1B 16 0E 0A 1B 12 0E 0B 1B 0E 0E 0C 1B 0A 0E 0D 1B 06 0E 0E 1B + 02 0E 0F 14 69 01 01 30 03 19 01 00 19 01) + (|COMMON-LISP|::|NIL| + #S(|COMMON-LISP|::|HASH-TABLE| :|TEST| |EXT|::|STABLEHASH-EQ| + (:|EXPOSURE| . 49.) (:|ENTER-NOTIFY| . 45.) + (:|CREATE-NOTIFY| . 41.) (:|PROPERTY-NOTIFY| . 37.) + (:|MAPPING-NOTIFY| . 33.) (:|DESTROY-NOTIFY| . 29.) + (:|UNMAP-NOTIFY| . 25.) (:|MAP-REQUEST| . 21.) + (:|CONFIGURE-NOTIFY| . 17.) (:|CONFIGURE-REQUEST| . 13.) + (:|KEY-PRESS| . 9.) (:|MOTION-NOTIFY| . 5.) + (:|BUTTON-PRESS| . 1.)) + |CLFSWM|::|*BUTTON-PRESS-HOOK*| |CLFSWM|::|CALL-HOOK| + |CLFSWM|::|*BUTTON-MOTION-NOTIFY-HOOK*| + |CLFSWM|::|*KEY-PRESS-HOOK*| |CLFSWM|::|*CONFIGURE-REQUEST-HOOK*| + |CLFSWM|::|*CONFIGURE-NOTIFY-HOOK*| |CLFSWM|::|*MAP-REQUEST-HOOK*| + |CLFSWM|::|*UNMAP-NOTIFY-HOOK*| |CLFSWM|::|*DESTROY-NOTIFY-HOOK*| + |CLFSWM|::|*MAPPING-NOTIFY-HOOK*| + |CLFSWM|::|*PROPERTY-NOTIFY-HOOK*| |CLFSWM|::|*CREATE-NOTIFY-HOOK*| + |CLFSWM|::|*ENTER-NOTIFY-HOOK*| |CLFSWM|::|*EXPOSURE-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| |XLIB|::|WINDOW-ERROR| + |XLIB|::|DRAWABLE-ERROR|) + 46.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|DISPLAY| |CLFSWM|::|EVENT-KEY| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|187 191 (DEFUN MAIN-LOOP NIL ...)-15| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|MAIN-LOOP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|MAIN-LOOP| + #53Y(02 00 01 00 00 00 00 00 06 01 00 2B 01 00 0B 00 00 4B 00 0D B0 AF + 6D 01 02 DC 57 03 B0 36 00 16 06 4D 16 01 1B 64 58 67 00 00 01 76 + 00 AD 36 01 18 02 01 19 02) + (#(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|MAIN-LOOP-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|MAIN-LOOP-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|MAIN-LOOP-2| + #24Y(00 00 00 00 00 00 00 00 06 01 6B 00 2F 01 6B 00 DC 99 03 2D 03 + 04 19 01) + (|CLFSWM|::|*DISPLAY*| |XLIB|::|DISPLAY-FINISH-OUTPUT| :|HANDLER| + |CLFSWM|::|HANDLE-EVENT| |XLIB|::|PROCESS-EVENT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| |XLIB|::|WINDOW-ERROR| + |XLIB|::|DRAWABLE-ERROR|) + 28.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|192 198 (DEFUN OPEN-DISPLAY (DISPLAY-STR PROTOCOL) ...)-16| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|OPEN-DISPLAY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|OPEN-DISPLAY| + #31Y(00 00 00 00 02 00 00 00 06 03 AE 2F 00 42 02 AD DB AE DC B3 2D 05 + 03 0F 04 B0 DF 30 06 19 05) + (|CLFSWM|::|PARSE-DISPLAY-STRING| :|DISPLAY| :|PROTOCOL| + |XLIB|::|OPEN-DISPLAY| |CLFSWM|::|*DISPLAY*| "DISPLAY" + #.(|SYSTEM|::|GET-SETF-SYMBOL| '|TOOLS|::|GETENV|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|DISPLAY-STR| |CLFSWM|::|PROTOCOL|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|201 236 (DEFUN INIT-DISPLAY NIL ...)-17| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|INIT-DISPLAY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|INIT-DISPLAY| + #193Y(00 00 00 00 00 00 00 00 06 01 6B 00 DB AD DC 32 2F 16 01 5B 0F 03 + 14 DE AD DF 32 2F 16 01 0F 06 E1 6B 06 E2 E3 E4 E3 E5 DF E6 DF 2D + 0A 0D 0F 0E E9 6B 06 EA 6B 11 6F 12 ED EE 6F 12 EF F0 2D 08 17 0F + 18 6B 00 6B 19 30 1A 0F 1B 2E 1C 2E 1D 6B 0E 2F 1E 65 1F 6B 20 6B + 21 32 97 0F 21 14 6B 22 33 03 15 65 23 6B 20 DA 6B 00 33 03 15 65 + 24 6B 20 33 01 15 38 01 31 90 6B 06 65 25 65 26 65 27 65 28 65 29 + 6E 05 2A AD 65 2B AE 6F 2C 2D 03 2D 16 02 2E 2E 6B 00 2F 2F 00 0F + 30 65 31 65 32 65 33 E3 65 34 99 35 2D 06 36 0F 37 0F 38 0F 39 6B + 3A 2F 3B 6B 03 2F 3C 2E 3D 2E 3E 6B 00 2F 3F 19 01) + (|CLFSWM|::|*DISPLAY*| |XLIB|::|DISPLAY| 41. |CLFSWM|::|*SCREEN*| + |XLIB|::|SCREEN| 1. |CLFSWM|::|*ROOT*| :|PARENT| :|X| 0. :|Y| :|WIDTH| + :|HEIGHT| |XLIB|::|CREATE-WINDOW| |CLFSWM|::|*NO-FOCUS-WINDOW*| + :|DRAWABLE| :|FOREGROUND| |CLFSWM|::|*COLOR-UNSELECTED*| + |CLFSWM|::|GET-COLOR| :|BACKGROUND| "Black" :|LINE-STYLE| :|SOLID| + |XLIB|::|CREATE-GCONTEXT| |CLFSWM|::|*ROOT-GC*| + |CLFSWM|::|*DEFAULT-FONT-STRING*| |XLIB|::|OPEN-FONT| + |CLFSWM|::|*DEFAULT-FONT*| |CLFSWM|::|XGRAB-INIT-POINTER| + |CLFSWM|::|XGRAB-INIT-KEYBOARD| |XLIB|::|MAP-WINDOW| + #Y(|CLFSWM|::|INIT-DISPLAY-1| + #42Y(00 00 00 00 03 00 00 00 01 19 B0 31 8E DA B1 38 02 31 8B AF B1 + 31 86 DB B1 38 02 31 8B AE B1 31 86 DC B1 38 02 31 8B 9E 19 05) + ("DEBUG[" " - " "] ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|*STANDARD-OUTPUT*| |TOOLS|::|*%DBG-COUNT%*| + |TOOLS|::|*%DBG-NAME%*| + #Y(|CLFSWM|::|INIT-DISPLAY-2| + #40Y(00 00 00 00 03 00 00 00 01 19 AF B1 31 86 DA B1 31 8A B0 2F 01 + 10 02 B1 B4 31 83 11 B0 2F 03 DE B1 38 02 31 8B 9E 19 05) + (#\= |SYSTEM|::|STREAM-START-S-EXPRESSION| + |COMMON-LISP|::|*PRINT-RIGHT-MARGIN*| + |SYSTEM|::|STREAM-END-S-EXPRESSION| " ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + #Y(|CLFSWM|::|INIT-DISPLAY-3| + #16Y(00 00 00 00 01 00 00 00 01 17 AE 31 8D 9E 19 03) () + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + :|SUBSTRUCTURE-REDIRECT| :|SUBSTRUCTURE-NOTIFY| :|PROPERTY-CHANGE| + :|EXPOSURE| :|BUTTON-PRESS| |XLIB|::|MAKE-EVENT-MASK| 11. + |XLIB|::|ENCODE-EVENT-MASK| |XLIB|::|CHANGE-WINDOW-ATTRIBUTE| + |CLFSWM|::|NETWM-SET-PROPERTIES| |XLIB|::|DISPLAY-FORCE-OUTPUT| + |CLFSWM|::|*CHILD-SELECTION*| :|NAME| "Root" :|NUMBER| :|LAYOUT| + |CLFSWM|::|TILE-SPACE-LAYOUT| |CLFSWM|::|CREATE-GROUP| + |CLFSWM|::|*ROOT-GROUP*| |CLFSWM|::|*CURRENT-ROOT*| + |CLFSWM|::|*CURRENT-CHILD*| |CLFSWM|::|*INIT-HOOK*| + |CLFSWM|::|CALL-HOOK| |CLFSWM|::|PROCESS-EXISTING-WINDOWS| + |CLFSWM|::|SHOW-ALL-CHILDS| |CLFSWM|::|GRAB-MAIN-KEYS| + |XLIB|::|DISPLAY-FINISH-OUTPUT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|240 243 (DEFUN XDG-CONFIG-HOME NIL ...)-18| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|XDG-CONFIG-HOME| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|XDG-CONFIG-HOME| + #29Y(00 00 00 00 00 00 00 00 06 01 DA DB 88 02 03 DD 2F 02 14 DE 73 02 + 25 38 01 31 EC 19 01) + (|COMMON-LISP|::|STRING| "XDG_CONFIG_HOME" |TOOLS|::|GETENV| "HOME" "/") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|246 260 (DEFUN READ-CONF-FILE NIL ...)-19| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|READ-CONF-FILE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|READ-CONF-FILE| + #161Y(03 00 01 00 00 00 00 00 06 01 00 2B 01 2E 00 14 DB 38 02 71 F3 71 + F8 DC 71 F8 38 08 2E 03 14 DE 82 02 22 03 CA FA 71 F5 71 F8 92 02 + 03 93 01 1B 0B 03 00 1C 1C 64 01 02 40 03 19 05 58 67 00 00 01 76 + 00 AD 36 01 18 03 01 19 02 7F 00 03 00 1D 64 A0 2B 01 00 0B 00 00 + 4B 06 19 B0 2C 07 01 45 B1 B0 6D 08 02 B2 6D 09 01 57 0A B0 36 00 + 16 06 41 46 1B 2A 68 04 00 E5 6B 0C 68 0B 00 AF 33 03 15 63 38 02 + 72 76 AC 2F 0D 10 0E B1 B0 31 83 11 AC 2F 0F AC 81 77 00 68 0B 00 + 40 03 16 01 4D 19 06) + (|COMMON-LISP|::|USER-HOMEDIR-PATHNAME| + #S(|COMMON-LISP|::|PATHNAME| :|HOST| |COMMON-LISP|::|NIL| + :|DEVICE| |COMMON-LISP|::|NIL| :|DIRECTORY| |COMMON-LISP|::|NIL| + :|NAME| ".clfswmrc" :|TYPE| |COMMON-LISP|::|NIL| + :|VERSION| |COMMON-LISP|::|NIL|) + #S(|COMMON-LISP|::|PATHNAME| :|HOST| |COMMON-LISP|::|NIL| + :|DEVICE| |COMMON-LISP|::|NIL| :|DIRECTORY| (:|ABSOLUTE| "etc") + :|NAME| "clfswmrc" :|TYPE| |COMMON-LISP|::|NIL| + :|VERSION| |COMMON-LISP|::|NIL|) + |CLFSWM|::|XDG-CONFIG-HOME| ("clfswm") "clfswmrc" + #(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|READ-CONF-FILE-1| + #19Y(00 00 00 00 00 00 00 00 07 16 64 63 69 01 01 40 03 19 02) + (|COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|&REST| |CLFSWM|::|ARGS|) |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|READ-CONF-FILE-2| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|READ-CONF-FILE-2-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|READ-CONF-FILE-3| + #17Y(00 00 00 00 00 00 00 00 06 01 69 01 01 2F 01 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|LOAD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#(|COMMON-LISP|::|ERROR| 50.) 2. . 1.) + #Y(|CLFSWM|::|READ-CONF-FILE-4| + #46Y(00 00 00 00 03 00 00 00 01 19 B0 01 02 DA 2D 04 01 DC B1 38 02 + 31 8B AF B1 31 86 DD B1 38 02 31 8B B0 31 8E AE B1 31 86 B0 31 + 8D 9E 19 05) + (2. |SYSTEM|::|FORMAT-TERPRI| + "*** Error loading configurtion file: " " ***") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|*STANDARD-OUTPUT*| + |SYSTEM|::|STREAM-START-S-EXPRESSION| + |COMMON-LISP|::|*PRINT-RIGHT-MARGIN*| + |SYSTEM|::|STREAM-END-S-EXPRESSION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|264 286 (DEFUN MAIN (&OPTIONAL # PROTOCOL) ...)-20| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|MAIN| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|MAIN| + #178Y(04 00 02 00 00 00 02 00 06 0C 00 2B 02 3B 03 05 DA 88 01 01 C7 0B + 00 00 3B 02 01 00 0B 00 01 2E 03 9D 2B 01 00 0B 00 00 4B 04 3B B0 + AF 6D 05 02 B1 6D 06 01 57 07 B0 36 00 16 06 4D 16 01 9D 2B 01 00 + 0B 00 00 4B 0B 3E B0 AF 6D 0C 02 E7 57 0E B0 36 00 16 06 4D 16 01 + 53 80 4A 03 15 50 80 44 2E 16 51 54 1B 3F 68 04 00 E2 6B 09 AE 33 + 02 15 38 01 31 90 CF 1B 28 58 67 00 00 01 76 00 AD 36 01 18 02 01 + 19 02 68 04 00 2E 0F 6B 10 2F 11 6B 12 2F 13 EE 6B 09 AE 33 02 15 + 38 01 31 90 CF 16 01 4D 19 05 54 2E 0F 6B 10 2F 11 6B 12 2F 13 55 + 19 04) + (#1="DISPLAY" |TOOLS|::|GETENV| #2=":0" |CLFSWM|::|READ-CONF-FILE| + #(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|MAIN-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|MAIN-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|MAIN-2| + #20Y(00 00 00 00 00 00 00 00 06 01 69 01 01 69 01 02 30 01 19 01) + (|COMMON-LISP|::|NIL| |CLFSWM|::|OPEN-DISPLAY|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#(|XLIB|::|ACCESS-ERROR| 109.) 1. . 1.) + #Y(|CLFSWM|::|MAIN-3| + #29Y(00 00 00 00 02 00 00 00 01 18 AF 31 8E AE B0 31 86 AF 31 8E DA + B0 38 02 31 8B 9E 19 04) + ("Maybe another window manager is running. +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|*STANDARD-OUTPUT*| |CLFSWM|::|INIT-DISPLAY-ERROR| + #(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|MAIN-4| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|MAIN-4-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|MAIN-5| #14Y(00 00 00 00 00 00 00 00 06 01 2E 00 19 01) + (|CLFSWM|::|INIT-DISPLAY|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#(|XLIB|::|ACCESS-ERROR| 109.) 1. . 1.) |CLFSWM|::|UNGRAB-MAIN-KEYS| + |CLFSWM|::|*NO-FOCUS-WINDOW*| |XLIB|::|DESTROY-WINDOW| + |CLFSWM|::|*DISPLAY*| |XLIB|::|CLOSE-DISPLAY| + #Y(|CLFSWM|::|MAIN-6| + #29Y(00 00 00 00 02 00 00 00 01 18 AF 31 8E AE B0 31 86 AF 31 8E DA + B0 38 02 31 8B 9E 19 04) + ("Maybe another window manager is running. +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |CLFSWM|::|EXIT-MAIN-LOOP| |CLFSWM|::|MAIN-LOOP|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&OPTIONAL| + (|CLFSWM|::|DISPLAY-STR| + (|COMMON-LISP|::|OR| (|TOOLS|::|GETENV| #1#) #2#)) + |CLFSWM|::|PROTOCOL|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: clfswm.fasl ============================================================================== Binary file. No diff available. Added: clfswm.lib ============================================================================== --- (empty file) +++ clfswm.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,72 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CLFSWM")) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HANDLE-KEY-PRESS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|ROOT| |CLFSWM|::|CODE| |CLFSWM|::|STATE| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HANDLE-CONFIGURE-REQUEST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|STACK-MODE| |CLFSWM|::|WINDOW| |CLFSWM|::|X| |CLFSWM|::|Y| + |CLFSWM|::|WIDTH| |CLFSWM|::|HEIGHT| |CLFSWM|::|BORDER-WIDTH| + |CLFSWM|::|VALUE-MASK| |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HANDLE-CONFIGURE-NOTIFY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HANDLE-MAP-REQUEST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|WINDOW| |CLFSWM|::|SEND-EVENT-P| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HANDLE-UNMAP-NOTIFY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|SEND-EVENT-P| |CLFSWM|::|EVENT-WINDOW| |CLFSWM|::|WINDOW| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HANDLE-DESTROY-NOTIFY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|SEND-EVENT-P| |CLFSWM|::|EVENT-WINDOW| |CLFSWM|::|WINDOW| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HANDLE-ENTER-NOTIFY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|ROOT-X| |CLFSWM|::|ROOT-Y| |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HANDLE-EXPOSURE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|WINDOW| |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HANDLE-CREATE-NOTIFY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HANDLE-CLICK-TO-FOCUS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WINDOW|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HANDLE-BUTTON-PRESS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|CODE| |CLFSWM|::|STATE| |CLFSWM|::|WINDOW| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HANDLE-EVENT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |CLFSWM|::|EVENT-SLOTS| |COMMON-LISP|::|&KEY| + |CLFSWM|::|DISPLAY| |CLFSWM|::|EVENT-KEY| + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|MAIN-LOOP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|OPEN-DISPLAY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|DISPLAY-STR| |CLFSWM|::|PROTOCOL|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|INIT-DISPLAY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|XDG-CONFIG-HOME| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|READ-CONF-FILE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|MAIN| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&OPTIONAL| + (|CLFSWM|::|DISPLAY-STR| + (|COMMON-LISP|::|OR| (|TOOLS|::|GETENV| "DISPLAY") ":0")) + |CLFSWM|::|PROTOCOL|))) Added: clfswm.lisp ============================================================================== --- (empty file) +++ clfswm.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,308 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Sat Mar 1 00:02:34 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Main functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + + + + +;;; Main mode hooks +(defun handle-key-press (&rest event-slots &key root code state &allow-other-keys) + (declare (ignore event-slots root)) + (funcall-key-from-code *main-keys* code state)) + + + + +(defun handle-configure-request (&rest event-slots &key stack-mode #|parent|# window #|above-sibling|# + x y width height border-width value-mask &allow-other-keys) + (declare (ignore event-slots)) + (labels ((has-x (mask) (= 1 (logand mask 1))) + (has-y (mask) (= 2 (logand mask 2))) + (has-w (mask) (= 4 (logand mask 4))) + (has-h (mask) (= 8 (logand mask 8))) + (has-bw (mask) (= 16 (logand mask 16))) + (has-stackmode (mask) (= 64 (logand mask 64))) + (adjust-from-request () + (when (has-x value-mask) (setf (xlib:drawable-x window) x)) + (when (has-y value-mask) (setf (xlib:drawable-y window) y)) + (when (has-h value-mask) (setf (xlib:drawable-height window) height)) + (when (has-w value-mask) (setf (xlib:drawable-width window) width)))) + (with-xlib-protect + (xlib:with-state (window) + (when (has-bw value-mask) + (setf (xlib:drawable-border-width window) border-width)) + (if (find-child window *current-root*) + (case (window-type window) + (:normal (adapt-child-to-father window (find-father-group window *current-root*)) + (send-configuration-notify window)) + (t (adjust-from-request))) + (adjust-from-request)) + (when (has-stackmode value-mask) + (case stack-mode + (:above (raise-window window)))))))) + + + + +(defun handle-configure-notify (&rest event-slots) + (declare (ignore event-slots))) + + + + +(defun handle-map-request (&rest event-slots &key window send-event-p &allow-other-keys) + (declare (ignore event-slots)) + (unless send-event-p + ;; (unhide-window window) + (process-new-window window) + (xlib:map-window window) + ;; (focus-window window) + (show-all-childs))) + + +(defun handle-unmap-notify (&rest event-slots &key send-event-p event-window window &allow-other-keys) + (declare (ignore event-slots)) + (unless (and (not send-event-p) + (not (xlib:window-equal window event-window))) + (when (find-child window *root-group*) + (remove-child-in-all-groups window) + (show-all-childs)))) + + +(defun handle-destroy-notify (&rest event-slots &key send-event-p event-window window &allow-other-keys) + (declare (ignore event-slots)) + (unless (or send-event-p + (xlib:window-equal window event-window)) + (when (find-child window *root-group*) + (remove-child-in-all-groups window) + (show-all-childs)))) + + + +(defun handle-enter-notify (&rest event-slots &key root-x root-y &allow-other-keys) + (declare (ignore event-slots root-x root-y))) + + + +(defun handle-exposure (&rest event-slots &key window &allow-other-keys) + (declare (ignore event-slots)) + (awhen (find-group-window window *current-root*) + (display-group-info it))) + + +(defun handle-create-notify (&rest event-slots) + (declare (ignore event-slots))) + + + +;; PHIL: TODO: focus-policy par group +;; :click, :sloppy, :nofocus +(defun handle-click-to-focus (window) + (let ((to-replay t) + (child window) + (father (find-father-group window *current-root*))) + (unless father + (setf child (find-group-window window *current-root*) + father (find-father-group child *current-root*))) + (when (and child father (focus-all-childs child father)) + (show-all-childs) + (setf to-replay nil)) + (if to-replay (replay-button-event) (stop-button-event)))) + + +(defun handle-button-press (&rest event-slots &key code state window &allow-other-keys) + (declare (ignore event-slots)) + (if (and (= code 1) (= state 0)) + (handle-click-to-focus window) + (replay-button-event))) + + + + + + +;;; CONFIG: Main mode hooks +(setf *key-press-hook* #'handle-key-press + *configure-request-hook* #'handle-configure-request + *configure-notify-hook* #'handle-configure-notify + *destroy-notify-hook* 'handle-destroy-notify + *enter-notify-hook* #'handle-enter-notify + *exposure-hook* 'handle-exposure + *map-request-hook* #'handle-map-request + *unmap-notify-hook* 'handle-unmap-notify + *create-notify-hook* #'handle-create-notify + *button-press-hook* 'handle-button-press) + + + + +(defun handle-event (&rest event-slots &key display event-key &allow-other-keys) + (declare (ignore display)) + ;;(dbg event-key) + (with-xlib-protect + (case event-key + (:button-press (call-hook *button-press-hook* event-slots)) + (:motion-notify (call-hook *button-motion-notify-hook* event-slots)) + (:key-press (call-hook *key-press-hook* event-slots)) + (:configure-request (call-hook *configure-request-hook* event-slots)) + (:configure-notify (call-hook *configure-notify-hook* event-slots)) + (:map-request (call-hook *map-request-hook* event-slots)) + (:unmap-notify (call-hook *unmap-notify-hook* event-slots)) + (:destroy-notify (call-hook *destroy-notify-hook* event-slots)) + (:mapping-notify (call-hook *mapping-notify-hook* event-slots)) + (:property-notify (call-hook *property-notify-hook* event-slots)) + (:create-notify (call-hook *create-notify-hook* event-slots)) + (:enter-notify (call-hook *enter-notify-hook* event-slots)) + (:exposure (call-hook *exposure-hook* event-slots)))) + t) + + + +(defun main-loop () + (loop + (with-xlib-protect + (xlib:display-finish-output *display*) + (xlib:process-event *display* :handler #'handle-event)))) +;;(dbg "Main loop finish" c))))) + + +(defun open-display (display-str protocol) + (multiple-value-bind (host display-num) (parse-display-string display-str) + (setf *display* (xlib:open-display host :display display-num :protocol protocol) + (getenv "DISPLAY") display-str))) + + +(defun init-display () + (setf *screen* (first (xlib:display-roots *display*)) + *root* (xlib:screen-root *screen*) + *no-focus-window* (xlib:create-window :parent *root* :x 0 :y 0 :width 1 :height 1) + *root-gc* (xlib:create-gcontext :drawable *root* + :foreground (get-color *color-unselected*) + :background (get-color "Black") + :line-style :solid) + *default-font* (xlib:open-font *display* *default-font-string*)) + (xgrab-init-pointer) + (xgrab-init-keyboard) + ;;(xgrab-pointer *root* 66 67 '(:enter-window :button-press :button-release) t) ;; PHIL + ;;(grab-pointer *root* '(:button-press :button-release) + ;; :owner-p t :sync-keyboard-p nil :sync-pointer-p nil) + ;;(grab-button *root* 1 nil ;;'(:button-press :button-release) + ;; :owner-p nil :sync-keyboard-p nil :sync-pointer-p nil) + ;;(xlib:grab-pointer *root* nil :owner-p nil) + (xlib:map-window *no-focus-window*) + (dbg *display*) + (setf (xlib:window-event-mask *root*) (xlib:make-event-mask :substructure-redirect + :substructure-notify + :property-change + :exposure + :button-press)) + ;;(intern-atoms *display*) + (netwm-set-properties) + (xlib:display-force-output *display*) + (setf *child-selection* nil) + (setf *root-group* (create-group :name "Root" :number 0 :layout #'tile-space-layout) + *current-root* *root-group* + *current-child* *current-root*) + (call-hook *init-hook*) + (process-existing-windows *screen*) + (show-all-childs) + (grab-main-keys) + (xlib:display-finish-output *display*)) + + + +(defun xdg-config-home () + (pathname-directory (concatenate 'string (or (getenv "XDG_CONFIG_HOME") + (getenv "HOME")) + "/"))) + + +(defun read-conf-file () + (let* ((user-conf (probe-file (merge-pathnames (user-homedir-pathname) #p".clfswmrc"))) + (etc-conf (probe-file #p"/etc/clfswmrc")) + (config-user-conf (probe-file (make-pathname :directory (append (xdg-config-home) '("clfswm")) + :name "clfswmrc"))) + (conf (or user-conf etc-conf config-user-conf))) + (if conf + (handler-case (load conf) + (error (c) + (format t "~2%*** Error loading configurtion file: ~A ***~&~A~%" conf c) + (values nil (format nil "~s" c) conf)) + (:no-error (&rest args) + (declare (ignore args)) + (values t nil conf))) + (values t nil nil)))) + + + +(defun main (&optional (display-str (or (getenv "DISPLAY") ":0")) protocol) + (read-conf-file) + (handler-case + (open-display display-str protocol) + (xlib:access-error (c) + (format t "~&~A~&Maybe another window manager is running.~%" c) + (force-output) + (return-from main 'init-display-error))) + (handler-case + (init-display) + (xlib:access-error (c) + (ungrab-main-keys) + (xlib:destroy-window *no-focus-window*) + (xlib:close-display *display*) + (format t "~&~A~&Maybe another window manager is running.~%" c) + (force-output) + (return-from main 'init-display-error))) + (unwind-protect + (catch 'exit-main-loop + (main-loop)) + (ungrab-main-keys) + (xlib:destroy-window *no-focus-window*) + (xlib:close-display *display*))) + + + + +;;(defun perform-click (type code state time) +;; "Send a button-{press, release} event for button-number. The type of the +;; sent event will be determined according to the type of the ev event +;; argument: if type key-press then send button-press, if key-release then +;; button-release is sent. The destination window will be retreived in the +;; ev event argument." +;; (flet ((my-query (win) (multiple-value-list (xlib:query-pointer win)))) +;; (loop with window = *root* +;; for (x y ssp child nil root-x root-y root) = (my-query window) +;; while child do (setf window child) +;; finally +;; (progn +;; (dbg window) +;; (xlib:send-event window type nil +;; :x x :y y :root-x root-x :root-y root-y +;; :state state :code code +;; :window window :event-window window :root root :child child +;; :same-screen-p ssp :time time))))) Added: clisp-load.lisp ============================================================================== --- (empty file) +++ clisp-load.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,59 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Tue Feb 26 23:00:50 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: System loading functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + + +(defparameter *base-dir* (directory-namestring *load-truename*)) + +#+CMU +(setf ext:*gc-verbose* nil) + +#+CMU +(require :clx) + +#+SBCL +(require :asdf) + +#+SBCL +(require :sb-posix) + +#+SBCL +(require :clx) + +#-ASDF +(load (make-pathname :host (pathname-host *base-dir*) + :device (pathname-device *base-dir*) + :directory (pathname-directory *base-dir*) + :name "asdf" :type "lisp")) + +(push *base-dir* asdf:*central-registry*) + + +(asdf:oos 'asdf:load-op :clfswm) + +(in-package :clfswm) + +(clfswm:main ":1") Added: config.fas ============================================================================== --- (empty file) +++ config.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,231 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 33 (IN-PACKAGE :CLFSWM)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CLFSWM" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|36 39 (DEFPARAMETER *HAVE-TO-COMPRESS-NOTIFY* NIL ...)-2| + #26Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 DB DC DD 2D 03 04 C6 + 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*HAVE-TO-COMPRESS-NOTIFY*|) + |CLFSWM|::|*HAVE-TO-COMPRESS-NOTIFY*| |COMMON-LISP|::|VARIABLE| + "This variable may be useful to speed up some slow version of CLX. +It is particulary useful with CLISP/MIT-CLX." + |SYSTEM|::|%SET-DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|43 47 (DEFUN GET-FULLSCREEN-SIZE NIL ...)-3| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GET-FULLSCREEN-SIZE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GET-FULLSCREEN-SIZE| + #33Y(00 00 00 00 00 00 00 00 06 01 DA DA 6B 01 DC AD DD 81 2F 00 6B 01 + DC AD DE 81 2F 00 63 40 05 19 01) + (-1. |CLFSWM|::|*SCREEN*| |XLIB|::|SCREEN| 2. 3.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + "Return the size of root child (values rx ry rw rh raise-p) +You can tweak this to what you want")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|48 57 (DEFPARAMETER *COLOR-SELECTED* "Red")-4| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*COLOR-SELECTED*|) + |CLFSWM|::|*COLOR-SELECTED*| "Red") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|58 58 (DEFPARAMETER *COLOR-UNSELECTED* "Blue")-5| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*COLOR-UNSELECTED*|) + |CLFSWM|::|*COLOR-UNSELECTED*| "Blue") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|59 59 (DEFPARAMETER *COLOR-MAYBE-SELECTED* "Yellow")-6| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*COLOR-MAYBE-SELECTED*|) + |CLFSWM|::|*COLOR-MAYBE-SELECTED*| "Yellow") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|61 62 (DEFPARAMETER *SM-BORDER-COLOR* "Green")-7| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-BORDER-COLOR*|) + |CLFSWM|::|*SM-BORDER-COLOR*| "Green") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|63 63 (DEFPARAMETER *SM-BACKGROUND-COLOR* "Black")-8| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-BACKGROUND-COLOR*|) + |CLFSWM|::|*SM-BACKGROUND-COLOR*| "Black") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|64 64 (DEFPARAMETER *SM-FOREGROUND-COLOR* "Red")-9| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-FOREGROUND-COLOR*|) + |CLFSWM|::|*SM-FOREGROUND-COLOR*| "Red") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|65 65 (DEFPARAMETER *SM-FONT-STRING* "9x15bold")-10| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-FONT-STRING*|) + |CLFSWM|::|*SM-FONT-STRING*| "9x15bold") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|66 66 (DEFPARAMETER *SM-WIDTH* 300)-11| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-WIDTH*|) |CLFSWM|::|*SM-WIDTH*| + 300.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|67 67 (DEFPARAMETER *SM-HEIGHT* 25)-12| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-HEIGHT*|) |CLFSWM|::|*SM-HEIGHT*| + 25.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|70 71 (DEFPARAMETER *PAGER-BACKGROUND* "black")-13| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-BACKGROUND*|) + |CLFSWM|::|*PAGER-BACKGROUND*| "black") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|72 72 (DEFPARAMETER *PAGER-WORKSPACE-BORDER* "blue")-14| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WORKSPACE-BORDER*|) + |CLFSWM|::|*PAGER-WORKSPACE-BORDER*| "blue") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|73 73 (DEFPARAMETER *PAGER-WORKSPACE-BACKGROUND* "black")-15| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WORKSPACE-BACKGROUND*|) + |CLFSWM|::|*PAGER-WORKSPACE-BACKGROUND*| "black") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|74 74 (DEFPARAMETER *PAGER-GROUP-BORDER* "yellow")-16| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-GROUP-BORDER*|) + |CLFSWM|::|*PAGER-GROUP-BORDER*| "yellow") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|75 75 (DEFPARAMETER *PAGER-GROUP-BORDER-SELECTED* "red")-17| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-GROUP-BORDER-SELECTED*|) + |CLFSWM|::|*PAGER-GROUP-BORDER-SELECTED*| "red") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|76 76 (DEFPARAMETER *PAGER-GROUP-BACKGROUND* "grey10")-18| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-GROUP-BACKGROUND*|) + |CLFSWM|::|*PAGER-GROUP-BACKGROUND*| "grey10") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|78 78 (DEFPARAMETER *PAGER-WINDOW-SELECTED* "Green")-19| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WINDOW-SELECTED*|) + |CLFSWM|::|*PAGER-WINDOW-SELECTED*| "Green") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|79 79 (DEFPARAMETER *PAGER-WINDOW-DESELECTED* "Yellow")-20| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WINDOW-DESELECTED*|) + |CLFSWM|::|*PAGER-WINDOW-DESELECTED*| "Yellow") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|80 80 (DEFPARAMETER *PAGER-WINDOW-HIDDEN* "Green")-21| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WINDOW-HIDDEN*|) + |CLFSWM|::|*PAGER-WINDOW-HIDDEN*| "Green") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|81 81 (DEFPARAMETER *PAGER-WINDOW-HIDDEN-1* "Red")-22| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WINDOW-HIDDEN-1*|) + |CLFSWM|::|*PAGER-WINDOW-HIDDEN-1*| "Red") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|83 83 (DEFPARAMETER *PAGER-WINDOW-SEPARATOR* "blue")-23| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WINDOW-SEPARATOR*|) + |CLFSWM|::|*PAGER-WINDOW-SEPARATOR*| "blue") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|85 85 (DEFPARAMETER *PAGER-WORKSPACE-CURSOR* "black")-24| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WORKSPACE-CURSOR*|) + |CLFSWM|::|*PAGER-WORKSPACE-CURSOR*| "black") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|86 86 (DEFPARAMETER *PAGER-LINE-CURSOR* "blue")-25| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-LINE-CURSOR*|) + |CLFSWM|::|*PAGER-LINE-CURSOR*| "blue") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|87 87 (DEFPARAMETER *PAGER-GROUP-CURSOR* "white")-26| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-GROUP-CURSOR*|) + |CLFSWM|::|*PAGER-GROUP-CURSOR*| "white") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|88 88 (DEFPARAMETER *PAGER-GROUP-BACKGROUND-CURSOR* "grey35")-27| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-GROUP-BACKGROUND-CURSOR*|) + |CLFSWM|::|*PAGER-GROUP-BACKGROUND-CURSOR*| "grey35") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|91 91 (DEFPARAMETER *PAGER-FONT-STRING* "9x15bold")-28| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-FONT-STRING*|) + |CLFSWM|::|*PAGER-FONT-STRING*| "9x15bold") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|93 93 (DEFPARAMETER *PAGER-WORKSPACE-HEIGHT* 200)-29| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WORKSPACE-HEIGHT*|) + |CLFSWM|::|*PAGER-WORKSPACE-HEIGHT*| 200.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|97 98 (DEFPARAMETER *IDENTIFY-FONT-STRING* "9x15")-30| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*IDENTIFY-FONT-STRING*|) + |CLFSWM|::|*IDENTIFY-FONT-STRING*| "9x15") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|99 99 (DEFPARAMETER *IDENTIFY-BACKGROUND* "black")-31| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*IDENTIFY-BACKGROUND*|) + |CLFSWM|::|*IDENTIFY-BACKGROUND*| "black") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|100 100 (DEFPARAMETER *IDENTIFY-FOREGROUND* "green")-32| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*IDENTIFY-FOREGROUND*|) + |CLFSWM|::|*IDENTIFY-FOREGROUND*| "green") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|101 101 (DEFPARAMETER *IDENTIFY-BORDER* "red")-33| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*IDENTIFY-BORDER*|) + |CLFSWM|::|*IDENTIFY-BORDER*| "red") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|103 104 (DEFPARAMETER *QUERY-FONT-STRING* "9x15")-34| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*QUERY-FONT-STRING*|) + |CLFSWM|::|*QUERY-FONT-STRING*| "9x15") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|105 105 (DEFPARAMETER *QUERY-BACKGROUND* "black")-35| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*QUERY-BACKGROUND*|) + |CLFSWM|::|*QUERY-BACKGROUND*| "black") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|106 106 (DEFPARAMETER *QUERY-FOREGROUND* "green")-36| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*QUERY-FOREGROUND*|) + |CLFSWM|::|*QUERY-FOREGROUND*| "green") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|107 107 (DEFPARAMETER *QUERY-BORDER* "red")-37| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*QUERY-BORDER*|) + |CLFSWM|::|*QUERY-BORDER*| "red") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|110 112 (DEFPARAMETER *INFO-BACKGROUND* "black")-38| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-BACKGROUND*|) + |CLFSWM|::|*INFO-BACKGROUND*| "black") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|113 113 (DEFPARAMETER *INFO-FOREGROUND* "green")-39| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-FOREGROUND*|) + |CLFSWM|::|*INFO-FOREGROUND*| "green") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|114 114 (DEFPARAMETER *INFO-BORDER* "red")-40| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-BORDER*|) + |CLFSWM|::|*INFO-BORDER*| "red") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|115 115 (DEFPARAMETER *INFO-LINE-CURSOR* "white")-41| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-LINE-CURSOR*|) + |CLFSWM|::|*INFO-LINE-CURSOR*| "white") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|116 116 (DEFPARAMETER *INFO-FONT-STRING* "9x15")-42| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-FONT-STRING*|) + |CLFSWM|::|*INFO-FONT-STRING*| "9x15") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|120 121 (DEFPARAMETER *TILE-WORKSPACE-FUNCTION* 'TILE-WORKSPACE-TOP)-43| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*TILE-WORKSPACE-FUNCTION*|) + |CLFSWM|::|*TILE-WORKSPACE-FUNCTION*| |CLFSWM|::|TILE-WORKSPACE-TOP|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|122 122 (DEFPARAMETER *TILE-BORDER-SIZE* 200)-44| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*TILE-BORDER-SIZE*|) + |CLFSWM|::|*TILE-BORDER-SIZE*| 200.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: config.fasl ============================================================================== Binary file. No diff available. Added: config.lib ============================================================================== --- (empty file) +++ config.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,85 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CLFSWM")) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*HAVE-TO-COMPRESS-NOTIFY*|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GET-FULLSCREEN-SIZE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*COLOR-SELECTED*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*COLOR-UNSELECTED*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*COLOR-MAYBE-SELECTED*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-BORDER-COLOR*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-BACKGROUND-COLOR*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-FOREGROUND-COLOR*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-FONT-STRING*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-WIDTH*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-HEIGHT*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-BACKGROUND*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WORKSPACE-BORDER*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WORKSPACE-BACKGROUND*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-GROUP-BORDER*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-GROUP-BORDER-SELECTED*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-GROUP-BACKGROUND*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WINDOW-SELECTED*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WINDOW-DESELECTED*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WINDOW-HIDDEN*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WINDOW-HIDDEN-1*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WINDOW-SEPARATOR*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WORKSPACE-CURSOR*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-LINE-CURSOR*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-GROUP-CURSOR*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-GROUP-BACKGROUND-CURSOR*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-FONT-STRING*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-WORKSPACE-HEIGHT*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*IDENTIFY-FONT-STRING*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*IDENTIFY-BACKGROUND*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*IDENTIFY-FOREGROUND*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*IDENTIFY-BORDER*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*QUERY-FONT-STRING*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*QUERY-BACKGROUND*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*QUERY-FOREGROUND*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*QUERY-BORDER*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-BACKGROUND*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-FOREGROUND*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-BORDER*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-LINE-CURSOR*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-FONT-STRING*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*TILE-WORKSPACE-FUNCTION*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*TILE-BORDER-SIZE*|)) Added: config.lisp ============================================================================== --- (empty file) +++ config.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,122 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Wed Feb 27 22:15:01 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Configuration file +;;; +;;; Change this file to your own needs or update some of this variables in +;;; your ~/.clfswmrc +;;; Some simple hack can be done in the code begining with the word CONFIG +;;; (you can do a 'grep CONFIG *.lisp' to see what you can configure) +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + +;;; CONFIG - Compress motion notify ? +(defparameter *have-to-compress-notify* nil + "This variable may be useful to speed up some slow version of CLX. +It is particulary useful with CLISP/MIT-CLX.") + + + +;;; CONFIG - Screen size +(defun get-fullscreen-size () + "Return the size of root child (values rx ry rw rh raise-p) +You can tweak this to what you want" + (values -1 -1 (xlib:screen-width *screen*) (xlib:screen-height *screen*) nil)) +;; (values -1 -1 1024 768)) +;; (values 100 100 800 600)) + + + + + + +;;; CONFIG: Main mode colors +(defparameter *color-selected* "Red") +(defparameter *color-unselected* "Blue") +(defparameter *color-maybe-selected* "Yellow") + +;;; CONFIG: Second mode colors and fonts +(defparameter *sm-border-color* "Green") +(defparameter *sm-background-color* "Black") +(defparameter *sm-foreground-color* "Red") +(defparameter *sm-font-string* "9x15bold") +(defparameter *sm-width* 300) +(defparameter *sm-height* 25) + + +;;; CONFIG - Pager mode colors and fonts +(defparameter *pager-background* "black") +(defparameter *pager-workspace-border* "blue") +(defparameter *pager-workspace-background* "black") +(defparameter *pager-group-border* "yellow") +(defparameter *pager-group-border-selected* "red") +(defparameter *pager-group-background* "grey10") + +(defparameter *pager-window-selected* "Green") +(defparameter *pager-window-deselected* "Yellow") +(defparameter *pager-window-hidden* "Green") +(defparameter *pager-window-hidden-1* "Red") + +(defparameter *pager-window-separator* "blue") + +(defparameter *pager-workspace-cursor* "black") +(defparameter *pager-line-cursor* "blue") +(defparameter *pager-group-cursor* "white") +(defparameter *pager-group-background-cursor* "grey35") + + +(defparameter *pager-font-string* "9x15bold") + +(defparameter *pager-workspace-height* 200) + + + +;;; CONFIG - Identify key colors +(defparameter *identify-font-string* "9x15") +(defparameter *identify-background* "black") +(defparameter *identify-foreground* "green") +(defparameter *identify-border* "red") + +;;; CONFIG - Query string colors +(defparameter *query-font-string* "9x15") +(defparameter *query-background* "black") +(defparameter *query-foreground* "green") +(defparameter *query-border* "red") + + +;;; CONFIG - Info mode + +(defparameter *info-background* "black") +(defparameter *info-foreground* "green") +(defparameter *info-border* "red") +(defparameter *info-line-cursor* "white") +(defparameter *info-font-string* "9x15") + + + +;;; Tiling to side parameters +(defparameter *tile-workspace-function* 'tile-workspace-top) +(defparameter *tile-border-size* 200) Added: dot-clfswmrc ============================================================================== --- (empty file) +++ dot-clfswmrc Sat Mar 1 07:36:13 2008 @@ -0,0 +1,272 @@ +;;; -*- lisp -*- +;;; +;;; CLFSWM configuration file example +;;; +;;; Send me your configuration file at hocwp _at_ free -dot- fr if +;;; you want to share it with others. + +(in-package :clfswm) + + +;;;; Uncomment the line above if you want to enable the notify event compression. +;;;; This variable may be useful to speed up some slow version of CLX +;;;; It is particulary useful with CLISP/MIT-CLX. +;; (setf *have-to-compress-notify* t) + + +;;; Color configuration example +;;; +;;; See in package.lisp for all variables +(setf *color-unselected* "Blue") + + +;;(defparameter *fullscreen* '(0 4 800 570)) +(defparameter *fullscreen* '(0 0 1024 750)) + + + +;;; Binding example: Undefine Control-F1 and define Control-F5 as a +;;; new binding in main mode +;;; +;;; See bindings.lisp, bindings-second-mode.lisp and bindings-pager.lisp +;;; for all default bindings definitions. +(undefine-main-key ("F1" :mod-1)) +(define-main-key ("F5" :mod-1) 'help-on-clfswm) + + + +;;; Binding example for apwal +(define-second-key (#\Space) + (defun tpm-apwal () + "Run Apwal" + (do-shell "exec apwal") + (show-all-windows-in-workspace (current-workspace)) + (throw 'exit-second-loop nil))) + + + + + +;;;; Reloading example +(defun reload-clfswm () + "Reload clfswm" + (format t "RELOADING... ") + (ungrab-main-keys) + (setf *main-keys* (make-hash-table :test 'equal)) + (asdf:oos 'asdf:load-op :clfswm) + (grab-main-keys) + (format t "Done!~%")) + + +(define-main-key ("F2" :mod-1) 'reload-clfswm) + +(define-main-key ("F3" :mod-1) (lambda () + (do-shell "rxvt"))) + + + +;;; Hook example +;;; +;;; See in package.lisp and clfswm.lisp, clfswm-second-mode.lisp +;;; or clfswm-pager.lisp for hook examples +(setf *key-press-hook* (list (lambda (&rest args) ; function 1 + (format t "Keyp press (before): ~A~%" args) + (force-output)) + #'handle-key-press ; function 2 (default) + (lambda (&rest args) ; function 3 + (declare (ignore args)) + (format t "Keyp press (after)~%") + (force-output)))) + + + +;;; A more complex example I use to record my desktop and show +;;; documentation associated to each key press. +(defun documentation-key-from-code (hash-key code state) + (labels ((doc-from (key) + (multiple-value-bind (function foundp) + (gethash (list key state) hash-key) + (when (and foundp (first function)) + (documentation (first function) 'function)))) + (from-code () + (doc-from code)) + (from-char () + (let ((char (keycode->char code state))) + (doc-from char))) + (from-string () + (let ((string (keysym->keysym-name (keycode->keysym *display* code 0)))) + (doc-from string)))) + (cond ((from-code)) + ((from-char)) + ((from-string))))) + + +(defun key-string (hash-key code state) + (let* ((modifiers (make-state-keys state)) + (keysym (keysym->keysym-name (keycode->keysym *display* code 0))) + (doc (documentation-key-from-code hash-key code state))) + (values (format nil "~:(~{~A+~}~A~) : ~S" modifiers keysym doc) + doc))) + +(defun display-doc (hash-key code state) + (multiple-value-bind (str doc) + (key-string hash-key code state) + (when doc + (do-shell "pkill osd_cat") + (do-shell (format nil "echo ~A | osd_cat -d 3 -p bottom -o -45 -f -*-fixed-*-*-*-*-12-*-*-*-*-*-*-1" str)) + (force-output)))) + +(defun display-key-osd-main (&rest event-slots &key code state &allow-other-keys) + (display-doc *main-keys* code state)) + +(defun display-key-osd-second (&rest event-slots &key code state &allow-other-keys) + (display-doc *second-keys* code state)) + +(defun display-key-pager (&rest event-slots &key code state &allow-other-keys) + (setf (gcontext-background *pager-gc*) (get-color "Black")) + (setf (gcontext-foreground *pager-gc*) (get-color "Red")) + (multiple-value-bind (str doc) + (key-string *pager-keys* code state) + (when doc + (draw-image-glyphs *pager-window* *pager-gc* 20 570 + (format nil "~A " str))) + (display-finish-output *display*))) + +;; Define new hook or add to precedent one +(if (consp *key-press-hook*) + (push #'display-key-osd-main *key-press-hook*) + (setf *key-press-hook* (list #'display-key-osd-main #'handle-key-press))) +(setf *sm-key-press-hook* (list #'display-key-osd-second #'sm-handle-key-press)) +(setf *pager-key-press-hook* (list #'pager-handle-key-press #'display-key-pager)) + +;;; -- Doc example end -- + + + +;;;; Uncomment the lines below if you want to enable the larswm, +;;;; dwm, wmii... cycling style. +;;;; +;;;; This leave the main window in one side of the screen and tile others +;;;; on the other side. It can be configured in the rc file or interactively +;;;; with the function 'reconfigure-tile-workspace'. +;;;; +(defun circulate-group-up () + "Circulate up in group - larswm, dwm, wmii style" + (banish-pointer) + (minimize-group (current-group)) + (no-focus) + (setf (workspace-group-list (current-workspace)) + (rotate-list (workspace-group-list (current-workspace)))) + (funcall *tile-workspace-function* (current-workspace)) + (show-all-windows-in-workspace (current-workspace))) + +(defun circulate-group-down () + "Circulate down in group - larswm, dwm, wmii style" + (banish-pointer) + (minimize-group (current-group)) + (no-focus) + (setf (workspace-group-list (current-workspace)) + (anti-rotate-list (workspace-group-list (current-workspace)))) + (funcall *tile-workspace-function* (current-workspace)) + (show-all-windows-in-workspace (current-workspace))) + +;;; -- Lasrwm style end -- + + + +;;; Azerty keyboard configuration (first remove keys, then rebind) +;; Main mode +;;(undefine-main-key (#\t :mod-1)) +;;(undefine-main-key (#\b :mod-1)) +;;(undefine-main-key (#\b :mod-1 :control)) +;;(undefine-main-key ("1" :mod-1)) +;;(undefine-main-key ("2" :mod-1)) +;;(undefine-main-key ("3" :mod-1)) +;;(undefine-main-key ("4" :mod-1)) +;;(undefine-main-key ("5" :mod-1)) +;;(undefine-main-key ("6" :mod-1)) +;;(undefine-main-key ("7" :mod-1)) +;;(undefine-main-key ("8" :mod-1)) +;;(undefine-main-key ("9" :mod-1)) +;;(undefine-main-key ("0" :mod-1)) +;; Or better: +(undefine-main-multi-keys (#\t :mod-1) (#\b :mod-1) (#\b :mod-1 :control) + (#\1 :mod-1) (#\2 :mod-1) (#\3 :mod-1) + (#\4 :mod-1) (#\5 :mod-1) (#\6 :mod-1) + (#\7 :mod-1) (#\8 :mod-1) (#\9 :mod-1) (#\0 :mod-1)) + +(define-main-key (#\< :control) 'second-key-mode) + +(define-main-key ("twosuperior") 'banish-pointer) +(define-main-key ("twosuperior" :mod-1) 'toggle-maximize-current-group) + +(define-main-key ("ampersand" :mod-1) 'b-main-focus-workspace-1) +(define-main-key ("eacute" :mod-1) 'b-main-focus-workspace-2) +(define-main-key ("quotedbl" :mod-1) 'b-main-focus-workspace-3) +(define-main-key ("quoteright" :mod-1) 'b-main-focus-workspace-4) +(define-main-key ("parenleft" :mod-1) 'b-main-focus-workspace-5) +(define-main-key ("minus" :mod-1) 'b-main-focus-workspace-6) +(define-main-key ("egrave" :mod-1) 'b-main-focus-workspace-7) +(define-main-key ("underscore" :mod-1) 'b-main-focus-workspace-8) +(define-main-key ("ccedilla" :mod-1) 'b-main-focus-workspace-9) +(define-main-key ("agrave" :mod-1) 'b-main-focus-workspace-10) + +;; Second mode +(undefine-second-multi-keys (#\t) (#\b) (#\b :mod-1) + (#\1 :mod-1) (#\2 :mod-1) (#\3 :mod-1) + (#\4 :mod-1) (#\5 :mod-1) (#\6 :mod-1) + (#\7 :mod-1) (#\8 :mod-1) (#\9 :mod-1) (#\0 :mod-1) + (#\1 :control :mod-1) (#\2 :control :mod-1)) + +(define-second-key (#\<) 'leave-second-mode-maximize) + + +(define-second-key ("ampersand" :mod-1) 'b-second-focus-workspace-1) +(define-second-key ("eacute" :mod-1) 'b-second-focus-workspace-2) +(define-second-key ("quotedbl" :mod-1) 'b-second-focus-workspace-3) +(define-second-key ("quoteright" :mod-1) 'b-second-focus-workspace-4) +(define-second-key ("parenleft" :mod-1) 'b-second-focus-workspace-5) +(define-second-key ("minus" :mod-1) 'b-second-focus-workspace-6) +(define-second-key ("egrave" :mod-1) 'b-second-focus-workspace-7) +(define-second-key ("underscore" :mod-1) 'b-second-focus-workspace-8) +(define-second-key ("ccedilla" :mod-1) 'b-second-focus-workspace-9) +(define-second-key ("agrave" :mod-1) 'b-second-focus-workspace-10) + +(define-second-key ("ampersand" :control :mod-1) 'renumber-workspaces) +(define-second-key ("eacute" :control :mod-1) 'sort-workspaces) + + +(define-second-key ("twosuperior") 'banish-pointer) +(define-second-key ("twosuperior" :mod-1) 'toggle-maximize-current-group) + +(define-second-key (#\t) 'tile-current-workspace-vertically) +(define-second-key (#\t :shift) 'tile-current-workspace-horizontally) + + +;; Pager mode +(undefine-pager-multi-keys (#\b) + (#\1 :mod-1) (#\2 :mod-1) (#\3 :mod-1) + (#\4 :mod-1) (#\5 :mod-1) (#\6 :mod-1) + (#\7 :mod-1) (#\8 :mod-1) (#\9 :mod-1) (#\0 :mod-1) + (#\1 :control :mod-1) (#\2 :control :mod-1)) + +(define-pager-key ("twosuperior") 'banish-pointer) + +(define-pager-key ("ampersand" :mod-1) 'b-pager-focus-workspace-1) +(define-pager-key ("eacute" :mod-1) 'b-pager-focus-workspace-2) +(define-pager-key ("quotedbl" :mod-1) 'b-pager-focus-workspace-3) +(define-pager-key ("quoteright" :mod-1) 'b-pager-focus-workspace-4) +(define-pager-key ("parenleft" :mod-1) 'b-pager-focus-workspace-5) +(define-pager-key ("minus" :mod-1) 'b-pager-focus-workspace-6) +(define-pager-key ("egrave" :mod-1) 'b-pager-focus-workspace-7) +(define-pager-key ("underscore" :mod-1) 'b-pager-focus-workspace-8) +(define-pager-key ("ccedilla" :mod-1) 'b-pager-focus-workspace-9) +(define-pager-key ("agrave" :mod-1) 'b-pager-focus-workspace-10) + +(define-pager-key ("ampersand" :control :mod-1) 'pager-renumber-workspaces) +(define-pager-key ("eacute" :control :mod-1) 'pager-sort-workspaces) + +;;; -- Azerty configuration end -- + + + Added: keys.html ============================================================================== --- (empty file) +++ keys.html Sat Mar 1 07:36:13 2008 @@ -0,0 +1,2576 @@ + + + + CLFSWM Keys + + + +

+ CLFSWM Keys +

+

+ + Note: Mod-1 is the Meta or Alt key + +

+

+ + Main mode keys + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Modifiers + + Key/Button + + Function +
+ Mod-1 + + 0 + + Focus workspace 10 +
+ Mod-1 + + 9 + + Focus workspace 9 +
+ Mod-1 + + 8 + + Focus workspace 8 +
+ Mod-1 + + 7 + + Focus workspace 7 +
+ Mod-1 + + 6 + + Focus workspace 6 +
+ Mod-1 + + 5 + + Focus workspace 5 +
+ Mod-1 + + 4 + + Focus workspace 4 +
+ Mod-1 + + 3 + + Focus workspace 3 +
+ Mod-1 + + 2 + + Focus workspace 2 +
+ Mod-1 + + 1 + + Focus workspace 1 +
+ Mod-1 Control Shift + + Left + + Circulate down in workspace copying current group in the next workspace +
+ Mod-1 Shift + + Left + + Circulate down in workspace moving current group in the next workspace +
+ Mod-1 + + Left + + Circulate down in workspace +
+ Mod-1 Control Shift + + Right + + Circulate up in workspace copying current group in the next workspace +
+ Mod-1 Shift + + Right + + Circulate up in workspace moving current group in the next workspace +
+ Mod-1 + + Right + + Circulate up in workspace +
+ Mod-1 Control Shift + + Down + + Circulate down in group copying the current window in the next group +
+ Mod-1 Shift + + Down + + Circulate down in group moving the current window in the next group +
+ Mod-1 + + Down + + Circulate down in group +
+ Mod-1 Control Shift + + Up + + Circulate up in group copying the current window in the next group +
+ Mod-1 Shift + + Up + + Circulate up in group moving the current window in the next group +
+ Mod-1 + + Up + + Circulate up in group +
+ Shift + + Escape + + Unhide all hidden windows into the current group +
+ Control + + Escape + + Remove the current window in the current group +
+ Mod-1 Control Shift + + Escape + + Destroy the current window in all groups and workspaces +
+ Control Shift + + Escape + + Delete the current window in all groups and workspaces +
+ Mod-1 Control + + B + + Maximize/minimize the current group +
+ Mod-1 + + B + + Move the pointer to the lower right corner of the screen and redraw all groups +
+ Mod-1 Shift + + Tab + + Rotate down windows in the current group +
+ Mod-1 + + Tab + + Rotate up windows in the current group +
+ Control + + Less + + Switch to editing mode +
+ Mod-1 + + T + + Switch to editing mode +
+ Mod-1 Control Shift + + Home + + Quit clfswm +
+ Mod-1 + + F1 + + Open the help and info window +
+

+ + Second mode keys + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Modifiers + + Key/Button + + Function +
+ Shift + + Left + + Resize group left +
+ Shift + + Right + + Resize group right +
+ Shift + + Down + + Resize group down +
+ Shift + + Up + + Resize group up +
+ + + Left + + Move, pack, fill or resize group left +
+ + + Right + + Move, pack, fill or resize group right +
+ + + Down + + Move, pack, fill or resize group down +
+ + + Up + + Move, pack, fill or resize group up +
+ + + M + + Center the current group +
+ Mod-1 + + L + + Resize down the current group +
+ + + L + + Resize down the current group to its minimal size +
+ + + R + + Resize group to its half width or heigth on next arraw action +
+ Control + + F + + Fill group horizontally +
+ Shift + + F + + Fill group vertically +
+ Mod-1 + + F + + Fill group in all directions +
+ + + F + + Fill group on next arrow action (fill in all directions on second f keypress) +
+ + + P + + Pack group on next arrow action +
+ Control Shift + + Y + + Move all windows in the current workspace to one group and remove other groups +
+ Control + + Y + + Create a new group for each window in the current group +
+ Mod-1 + + Y + + Reconfigure the workspace tiling for the current session +
+ + + Y + + Tile the current workspace with the current window on one side and others on the other +
+ Control Shift + + T + + Tile the current workspace horizontally +
+ Control + + T + + Tile the current workspace vertically +
+ Mod-1 + + D + + Show debuging info +
+ Mod-1 + + A + + Force the current window to move in the group (Useful only for transient windows) +
+ + + A + + Force the current window to move in the center of the group (Useful only for transient windows) +
+ + + H + + start an xclock +
+ Control + + E + + start an emacs for another user +
+ + + E + + start emacs +
+ + + C + + start an xterm +
+ Mod-1 Control + + O + + Open each next window in a new group +
+ Mod-1 + + O + + Open the next window in a new group and all others in the same group +
+ Control + + O + + Open the next window in a numbered workspace +
+ + + O + + Open the next window in a new workspace +
+ Mod-1 + + W + + Remove the current workspace +
+ + + W + + Create a new default workspace +
+ Mod-1 + + G + + Remove the current group in the current workspace +
+ + + G + + Create a new default group +
+ + + K + + Remove the current window in the current group +
+ Mod-1 + + K + + Destroy the current window in all groups and workspaces +
+ + + X + + Open the fullscreen pager +
+ Mod-1 + + B + + Maximize/minimize the current group +
+ + + B + + Move the pointer to the lower right corner of the screen and redraw all groups +
+ Mod-1 Shift + + Tab + + Rotate down windows in the current group +
+ Mod-1 + + Tab + + Rotate up windows in the current group +
+ Mod-1 Control + + 2 + + Sort workspaces by numbers +
+ Mod-1 Control + + 1 + + Reset workspaces numbers (1 for current workspace, 2 for the second...) +
+ Mod-1 + + 0 + + Focus workspace 10 +
+ Mod-1 + + 9 + + Focus workspace 9 +
+ Mod-1 + + 8 + + Focus workspace 8 +
+ Mod-1 + + 7 + + Focus workspace 7 +
+ Mod-1 + + 6 + + Focus workspace 6 +
+ Mod-1 + + 5 + + Focus workspace 5 +
+ Mod-1 + + 4 + + Focus workspace 4 +
+ Mod-1 + + 3 + + Focus workspace 3 +
+ Mod-1 + + 2 + + Focus workspace 2 +
+ Mod-1 + + 1 + + Focus workspace 1 +
+ Mod-1 Control Shift + + Left + + Circulate down in workspace copying current group in the next workspace +
+ Mod-1 Shift + + Left + + Circulate down in workspace moving current group in the next workspace +
+ Mod-1 + + Left + + Circulate down in workspace +
+ Mod-1 Control Shift + + Right + + Circulate up in workspace copying current group in the next workspace +
+ Mod-1 Shift + + Right + + Circulate up in workspace moving current group in the next workspace +
+ Mod-1 + + Right + + Circulate up in workspace +
+ Mod-1 Control Shift + + Down + + Circulate down in group copying the current window in the next group +
+ Mod-1 Shift + + Down + + Circulate down in group moving the current window in the next group +
+ Mod-1 + + Down + + Circulate down in group +
+ Mod-1 Control Shift + + Up + + Circulate up in group copying the current window in the next group +
+ Mod-1 Shift + + Up + + Circulate up in group moving the current window in the next group +
+ Mod-1 + + Up + + Circulate up in group +
+ Shift + + Escape + + Unhide all hidden windows into the current group +
+ Control + + Escape + + Remove the current window in the current group +
+ Mod-1 Control Shift + + Escape + + Destroy the current window in all groups and workspaces +
+ Control Shift + + Escape + + Delete the current window in all groups and workspaces +
+ Control + + Return + + Leave second mode +
+ Control + + < + + Leave second mode +
+ + + Escape + + Leave second mode +
+ + + Return + + Leave second mode and maximize current group +
+ + + T + + Leave second mode and maximize current group +
+ + + ! + + Run a program from the query input +
+ + + : + + Eval a lisp form from the query input +
+ + + I + + Identify a key +
+ Control + + G + + Stop all pending actions (actions like open in new workspace/group) +
+ Mod-1 + + F1 + + Open the help and info window +
+

+ + Mouse buttons actions in second mode + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Modifiers + + Key/Button + + Function +
+ + + Motion + + +Move or resize group. Move window from a group to another. +Go to top left or rigth corner to change workspaces. +
+ Mod-1 + + 5 + + Circulate down in workspaces +
+ Mod-1 + + 4 + + Circulate up in workspaces +
+ + + 5 + + Rotate window down +
+ + + 4 + + Rotate window up +
+ Control + + 3 + + Copy selected window +
+ + + 3 + + Move selected window +
+ Control + + 2 + + Leave second mode +
+ + + 2 + + Leave second mode and maximize current group +
+ Control + + 1 + + Copy selected group +
+ Mod-1 + + 1 + + Resize selected group +
+ + + 1 + + Move selected group or create a new group on the root window +
+

+ + Pager mode keys + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Modifiers + + Key/Button + + Function +
+ Mod-1 Control + + 2 + + Sort workspaces by numbers +
+ Mod-1 Control + + 1 + + Reset workspaces numbers (1 for current workspace, 2 for the second...) +
+ Mod-1 + + 0 + + Focus workspace 10 +
+ Mod-1 + + 9 + + Focus workspace 9 +
+ Mod-1 + + 8 + + Focus workspace 8 +
+ Mod-1 + + 7 + + Focus workspace 7 +
+ Mod-1 + + 6 + + Focus workspace 6 +
+ Mod-1 + + 5 + + Focus workspace 5 +
+ Mod-1 + + 4 + + Focus workspace 4 +
+ Mod-1 + + 3 + + Focus workspace 3 +
+ Mod-1 + + 2 + + Focus workspace 2 +
+ Mod-1 + + 1 + + Focus workspace 1 +
+ Control Shift + + Right + + Copy the current group to the next workspace +
+ Control Shift + + Left + + Copy the current group to the previous workspace +
+ Shift + + Up + + Move the current window to the previous line +
+ Shift + + Down + + Move the current window to the next line +
+ Shift + + Right + + Move the current group to the next workspace +
+ Shift + + Left + + Move the current group to the previous workspace +
+ Mod-1 Control + + Left + + Resize group left +
+ Mod-1 Control + + Right + + Resize group right +
+ Mod-1 Control + + Down + + Resize group down +
+ Mod-1 Control + + Up + + Resize group up +
+ Mod-1 + + Left + + Move group left +
+ Mod-1 + + Right + + Move group right +
+ Mod-1 + + Down + + Move group down +
+ Mod-1 + + Up + + Move group up +
+ + + M + + Center the current group +
+ + + Left + + Move cursor, pack, fill or resize group left +
+ + + Right + + Move cursor, pack, fill or resize group right +
+ + + Down + + Move cursor, pack, fill or resize group down +
+ + + Up + + Move cursor, pack, fill or resize group up +
+ Mod-1 + + L + + Resize down the current group +
+ + + L + + Resize down the current group to its minimal size +
+ Control + + F + + Fill group horizontally +
+ Shift + + F + + Fill group vertically +
+ Mod-1 + + F + + Fill group in all directions +
+ + + F + + Fill group on next arrow action (fill in all directions on second f keypress) +
+ Shift + + R + + Resize group on next arrow action +
+ + + R + + Resize group to its half width or heigth on next arrow action +
+ Shift + + M + + Move group on next arrow action +
+ + + P + + Pack group on next arrow action +
+ Control Shift + + Y + + Move all windows in the current workspace to one group and remove other groups +
+ Control + + Y + + Create a new group for each window in the current group +
+ + + Y + + Tile the current workspace with the current window on one side and others on the other +
+ Shift + + T + + Tile the current workspace horizontally +
+ + + T + + Tile the current workspace vertically +
+ Mod-1 + + X + + Swap the current window with the next window +
+ Control + + X + + Swap the current group with the next group +
+ + + X + + Swap the current workspace with the next workspace +
+ Mod-1 + + W + + Remove the current workspace +
+ + + W + + Create a new default workspace +
+ Mod-1 + + G + + Remove the current group in the current workspace +
+ + + G + + Create a new default group +
+ Shift + + Escape + + Unhide all hidden windows into the current group +
+ Control + + Escape + + Remove the current window in the current group +
+ Mod-1 Control Shift + + Escape + + Destroy the current window in all groups and workspaces +
+ Control Shift + + Escape + + Delete the current window in all groups and workspaces +
+ Mod-1 Shift + + Tab + + Rotate down windows in the current group +
+ Mod-1 + + Tab + + Rotate up windows in the current group +
+ + + End + + Select the last workspace +
+ + + Home + + Select the first workspace +
+ + + B + + Move the pointer to the lower right corner of the screen and redraw all groups +
+ + + Escape + + Leave the pager mode +
+ + + Return + + Leave the pager mode +
+ Control + + G + + Stop all pending actions (actions like open in new workspace/group) +
+ Mod-1 + + F1 + + Open the help and info window +
+

+ + Mouse buttons actions in pager mode + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Modifiers + + Key/Button + + Function +
+ + + Motion + + Select workspaces +
+ + + 5 + + Rotate down windows in selected group +
+ + + 4 + + Rotate up windows in selected group +
+ Control + + 3 + + Copy selected window +
+ + + 3 + + Move selected window +
+ + + 2 + + Leave the pager mode +
+ Control + + 1 + + Copy selected group +
+ + + 1 + + Move selected group +
+

+ + Info mode keys + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Modifiers + + Key/Button + + Function +
+ + + Page_up + + Move ten lines up +
+ + + Page_down + + Move ten lines down +
+ + + End + + Move to last line +
+ + + Home + + Move to first line +
+ + + Right + + Move one char right +
+ + + Left + + Move one char left +
+ + + Up + + Move one line up +
+ + + Down + + Move one line down +
+ + + Twosuperior + + Move the pointer to the lower right corner of the screen +
+ + + + + Leave the info mode +
+ + + Escape + + Leave the info mode +
+ + + Return + + Leave the info mode +
+ + + Q + + Leave the info mode +
+

+ + Mouse buttons actions in info mode + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Modifiers + + Key/Button + + Function +
+ + + Motion + + Grab text +
+ + + 5 + + Move one line down +
+ + + 4 + + Move one line up +
+ + + 2 + + Leave the info mode +
+ + + 1 + + Begin grab text +
+ + Added: keys.txt ============================================================================== --- (empty file) +++ keys.txt Sat Mar 1 07:36:13 2008 @@ -0,0 +1,262 @@ + * CLFSWM Keys * + ----------- + +Note: Mod-1 is the Meta or Alt key + +Main mode keys: +-------------- + +Mod-1 0 Focus workspace 10 +Mod-1 9 Focus workspace 9 +Mod-1 8 Focus workspace 8 +Mod-1 7 Focus workspace 7 +Mod-1 6 Focus workspace 6 +Mod-1 5 Focus workspace 5 +Mod-1 4 Focus workspace 4 +Mod-1 3 Focus workspace 3 +Mod-1 2 Focus workspace 2 +Mod-1 1 Focus workspace 1 +Mod-1 Control Shift Left Circulate down in workspace copying current group in the next workspace +Mod-1 Shift Left Circulate down in workspace moving current group in the next workspace +Mod-1 Left Circulate down in workspace +Mod-1 Control Shift Right Circulate up in workspace copying current group in the next workspace +Mod-1 Shift Right Circulate up in workspace moving current group in the next workspace +Mod-1 Right Circulate up in workspace +Mod-1 Control Shift Down Circulate down in group copying the current window in the next group +Mod-1 Shift Down Circulate down in group moving the current window in the next group +Mod-1 Down Circulate down in group +Mod-1 Control Shift Up Circulate up in group copying the current window in the next group +Mod-1 Shift Up Circulate up in group moving the current window in the next group +Mod-1 Up Circulate up in group +Shift Escape Unhide all hidden windows into the current group +Control Escape Remove the current window in the current group +Mod-1 Control Shift Escape Destroy the current window in all groups and workspaces +Control Shift Escape Delete the current window in all groups and workspaces +Mod-1 Control B Maximize/minimize the current group +Mod-1 B Move the pointer to the lower right corner of the screen and redraw all groups +Mod-1 Shift Tab Rotate down windows in the current group +Mod-1 Tab Rotate up windows in the current group +Control Less Switch to editing mode +Mod-1 T Switch to editing mode +Mod-1 Control Shift Home Quit clfswm +Mod-1 F1 Open the help and info window + + +Second mode keys: +---------------- + +Shift Left Resize group left +Shift Right Resize group right +Shift Down Resize group down +Shift Up Resize group up + Left Move, pack, fill or resize group left + Right Move, pack, fill or resize group right + Down Move, pack, fill or resize group down + Up Move, pack, fill or resize group up + M Center the current group +Mod-1 L Resize down the current group + L Resize down the current group to its minimal size + R Resize group to its half width or heigth on next arraw action +Control F Fill group horizontally +Shift F Fill group vertically +Mod-1 F Fill group in all directions + F Fill group on next arrow action (fill in all directions on second f keypress) + P Pack group on next arrow action +Control Shift Y Move all windows in the current workspace to one group and remove other groups +Control Y Create a new group for each window in the current group +Mod-1 Y Reconfigure the workspace tiling for the current session + Y Tile the current workspace with the current window on one side and others on the other +Control Shift T Tile the current workspace horizontally +Control T Tile the current workspace vertically +Mod-1 D Show debuging info +Mod-1 A Force the current window to move in the group (Useful only for transient windows) + A Force the current window to move in the center of the group (Useful only for transient windows) + H start an xclock +Control E start an emacs for another user + E start emacs + C start an xterm +Mod-1 Control O Open each next window in a new group +Mod-1 O Open the next window in a new group and all others in the same group +Control O Open the next window in a numbered workspace + O Open the next window in a new workspace +Mod-1 W Remove the current workspace + W Create a new default workspace +Mod-1 G Remove the current group in the current workspace + G Create a new default group + K Remove the current window in the current group +Mod-1 K Destroy the current window in all groups and workspaces + X Open the fullscreen pager +Mod-1 B Maximize/minimize the current group + B Move the pointer to the lower right corner of the screen and redraw all groups +Mod-1 Shift Tab Rotate down windows in the current group +Mod-1 Tab Rotate up windows in the current group +Mod-1 Control 2 Sort workspaces by numbers +Mod-1 Control 1 Reset workspaces numbers (1 for current workspace, 2 for the second...) +Mod-1 0 Focus workspace 10 +Mod-1 9 Focus workspace 9 +Mod-1 8 Focus workspace 8 +Mod-1 7 Focus workspace 7 +Mod-1 6 Focus workspace 6 +Mod-1 5 Focus workspace 5 +Mod-1 4 Focus workspace 4 +Mod-1 3 Focus workspace 3 +Mod-1 2 Focus workspace 2 +Mod-1 1 Focus workspace 1 +Mod-1 Control Shift Left Circulate down in workspace copying current group in the next workspace +Mod-1 Shift Left Circulate down in workspace moving current group in the next workspace +Mod-1 Left Circulate down in workspace +Mod-1 Control Shift Right Circulate up in workspace copying current group in the next workspace +Mod-1 Shift Right Circulate up in workspace moving current group in the next workspace +Mod-1 Right Circulate up in workspace +Mod-1 Control Shift Down Circulate down in group copying the current window in the next group +Mod-1 Shift Down Circulate down in group moving the current window in the next group +Mod-1 Down Circulate down in group +Mod-1 Control Shift Up Circulate up in group copying the current window in the next group +Mod-1 Shift Up Circulate up in group moving the current window in the next group +Mod-1 Up Circulate up in group +Shift Escape Unhide all hidden windows into the current group +Control Escape Remove the current window in the current group +Mod-1 Control Shift Escape Destroy the current window in all groups and workspaces +Control Shift Escape Delete the current window in all groups and workspaces +Control Return Leave second mode +Control < Leave second mode + Escape Leave second mode + Return Leave second mode and maximize current group + T Leave second mode and maximize current group + ! Run a program from the query input + : Eval a lisp form from the query input + I Identify a key +Control G Stop all pending actions (actions like open in new workspace/group) +Mod-1 F1 Open the help and info window + + +Mouse buttons actions in second mode: +------------------------------------ + + Motion +Move or resize group. Move window from a group to another. +Go to top left or rigth corner to change workspaces. +Mod-1 5 Circulate down in workspaces +Mod-1 4 Circulate up in workspaces + 5 Rotate window down + 4 Rotate window up +Control 3 Copy selected window + 3 Move selected window +Control 2 Leave second mode + 2 Leave second mode and maximize current group +Control 1 Copy selected group +Mod-1 1 Resize selected group + 1 Move selected group or create a new group on the root window + + +Pager mode keys: +--------------- + +Mod-1 Control 2 Sort workspaces by numbers +Mod-1 Control 1 Reset workspaces numbers (1 for current workspace, 2 for the second...) +Mod-1 0 Focus workspace 10 +Mod-1 9 Focus workspace 9 +Mod-1 8 Focus workspace 8 +Mod-1 7 Focus workspace 7 +Mod-1 6 Focus workspace 6 +Mod-1 5 Focus workspace 5 +Mod-1 4 Focus workspace 4 +Mod-1 3 Focus workspace 3 +Mod-1 2 Focus workspace 2 +Mod-1 1 Focus workspace 1 +Control Shift Right Copy the current group to the next workspace +Control Shift Left Copy the current group to the previous workspace +Shift Up Move the current window to the previous line +Shift Down Move the current window to the next line +Shift Right Move the current group to the next workspace +Shift Left Move the current group to the previous workspace +Mod-1 Control Left Resize group left +Mod-1 Control Right Resize group right +Mod-1 Control Down Resize group down +Mod-1 Control Up Resize group up +Mod-1 Left Move group left +Mod-1 Right Move group right +Mod-1 Down Move group down +Mod-1 Up Move group up + M Center the current group + Left Move cursor, pack, fill or resize group left + Right Move cursor, pack, fill or resize group right + Down Move cursor, pack, fill or resize group down + Up Move cursor, pack, fill or resize group up +Mod-1 L Resize down the current group + L Resize down the current group to its minimal size +Control F Fill group horizontally +Shift F Fill group vertically +Mod-1 F Fill group in all directions + F Fill group on next arrow action (fill in all directions on second f keypress) +Shift R Resize group on next arrow action + R Resize group to its half width or heigth on next arrow action +Shift M Move group on next arrow action + P Pack group on next arrow action +Control Shift Y Move all windows in the current workspace to one group and remove other groups +Control Y Create a new group for each window in the current group + Y Tile the current workspace with the current window on one side and others on the other +Shift T Tile the current workspace horizontally + T Tile the current workspace vertically +Mod-1 X Swap the current window with the next window +Control X Swap the current group with the next group + X Swap the current workspace with the next workspace +Mod-1 W Remove the current workspace + W Create a new default workspace +Mod-1 G Remove the current group in the current workspace + G Create a new default group +Shift Escape Unhide all hidden windows into the current group +Control Escape Remove the current window in the current group +Mod-1 Control Shift Escape Destroy the current window in all groups and workspaces +Control Shift Escape Delete the current window in all groups and workspaces +Mod-1 Shift Tab Rotate down windows in the current group +Mod-1 Tab Rotate up windows in the current group + End Select the last workspace + Home Select the first workspace + B Move the pointer to the lower right corner of the screen and redraw all groups + Escape Leave the pager mode + Return Leave the pager mode +Control G Stop all pending actions (actions like open in new workspace/group) +Mod-1 F1 Open the help and info window + + +Mouse buttons actions in pager mode: +----------------------------------- + + Motion Select workspaces + 5 Rotate down windows in selected group + 4 Rotate up windows in selected group +Control 3 Copy selected window + 3 Move selected window + 2 Leave the pager mode +Control 1 Copy selected group + 1 Move selected group + + +Info mode keys: +-------------- + + Page_up Move ten lines up + Page_down Move ten lines down + End Move to last line + Home Move to first line + Right Move one char right + Left Move one char left + Up Move one line up + Down Move one line down + Twosuperior Move the pointer to the lower right corner of the screen + Leave the info mode + Escape Leave the info mode + Return Leave the info mode + Q Leave the info mode + + +Mouse buttons actions in info mode: +---------------------------------- + + Motion Grab text + 5 Move one line down + 4 Move one line up + 2 Leave the info mode + 1 Begin grab text + Added: keysyms.fas ============================================================================== --- (empty file) +++ keysyms.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,6880 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 28 (IN-PACKAGE :CLFSWM)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CLFSWM" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|30 30 (DEFVAR *KEYSYM-NAME-TRANSLATIONS* (MAKE-HASH-TABLE))-2| + #27Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 8C 4F 07 DB 38 09 71 64 31 52 + C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*KEYSYM-NAME-TRANSLATIONS*|) + |CLFSWM|::|*KEYSYM-NAME-TRANSLATIONS*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|31 31 (DEFVAR *NAME-KEYSYM-TRANSLATIONS* (MAKE-HASH-TABLE :TEST #'EQUAL))-3| + #29Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 8C 4F 09 DB 38 09 C7 FB 71 64 + 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*NAME-KEYSYM-TRANSLATIONS*|) + |CLFSWM|::|*NAME-KEYSYM-TRANSLATIONS*| #.#'|COMMON-LISP|::|EQUAL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|33 36 (DEFUN CL-DEFINE-KEYSYM (KEYSYM NAME) ...)-4| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|CL-DEFINE-KEYSYM| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|CL-DEFINE-KEYSYM| + #28Y(00 00 00 00 02 00 00 00 06 03 6B 00 AF AD B0 31 66 16 01 6B 01 AE + AD B1 31 66 19 04) + (|CLFSWM|::|*KEYSYM-NAME-TRANSLATIONS*| + |CLFSWM|::|*NAME-KEYSYM-TRANSLATIONS*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|KEYSYM| |CLFSWM|::|NAME|) + "Define a mapping from a keysym name to a keysym.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|38 43 (DEFUN KEYSYM-NAME->KEYSYM (NAME) ...)-5| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|KEYSYM-NAME->KEYSYM| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|KEYSYM-NAME->KEYSYM| + #22Y(00 00 00 00 01 00 00 00 06 02 AD 6B 00 38 01 31 65 42 02 9E 19 04) + (|CLFSWM|::|*NAME-KEYSYM-TRANSLATIONS*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|NAME|) "Return the keysym corresponding to NAME.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|45 50 (DEFUN KEYSYM->KEYSYM-NAME (KEYSYM) ...)-6| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|KEYSYM->KEYSYM-NAME| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|KEYSYM->KEYSYM-NAME| + #22Y(00 00 00 00 01 00 00 00 06 02 AD 6B 00 38 01 31 65 42 02 9E 19 04) + (|CLFSWM|::|*KEYSYM-NAME-TRANSLATIONS*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|KEYSYM|) "Return the name corresponding to KEYSYM.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|52 52 (CL-DEFINE-KEYSYM 16777215 "VoidSymbol")-7| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777215. "VoidSymbol" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|52 53 (CL-DEFINE-KEYSYM 65288 "BackSpace")-8| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65288. "BackSpace" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|53 54 (CL-DEFINE-KEYSYM 65289 "Tab")-9| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65289. "Tab" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|55 55 (CL-DEFINE-KEYSYM 65290 "Linefeed")-10| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65290. "Linefeed" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|55 56 (CL-DEFINE-KEYSYM 65291 "Clear")-11| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65291. "Clear" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|57 57 (CL-DEFINE-KEYSYM 65293 "Return")-12| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65293. "Return" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|57 58 (CL-DEFINE-KEYSYM 65299 "Pause")-13| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65299. "Pause" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|58 59 (CL-DEFINE-KEYSYM 65300 "Scroll_Lock")-14| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65300. "Scroll_Lock" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|60 60 (CL-DEFINE-KEYSYM 65301 "Sys_Req")-15| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65301. "Sys_Req" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|61 61 (CL-DEFINE-KEYSYM 65307 "Escape")-16| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65307. "Escape" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|62 62 (CL-DEFINE-KEYSYM 65535 "Delete")-17| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65535. "Delete" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|62 63 (CL-DEFINE-KEYSYM 65312 "Multi_key")-18| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65312. "Multi_key" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|63 64 (CL-DEFINE-KEYSYM 65335 "Codeinput")-19| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65335. "Codeinput" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|65 65 (CL-DEFINE-KEYSYM 65340 "SingleCandidate")-20| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65340. "SingleCandidate" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|66 66 (CL-DEFINE-KEYSYM 65341 "MultipleCandidate")-21| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65341. "MultipleCandidate" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|67 67 (CL-DEFINE-KEYSYM 65342 "PreviousCandidate")-22| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65342. "PreviousCandidate" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|68 68 (CL-DEFINE-KEYSYM 65313 "Kanji")-23| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65313. "Kanji" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|68 69 (CL-DEFINE-KEYSYM 65314 "Muhenkan")-24| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65314. "Muhenkan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|69 70 (CL-DEFINE-KEYSYM 65315 "Henkan_Mode")-25| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65315. "Henkan_Mode" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|70 71 (CL-DEFINE-KEYSYM 65315 "Henkan")-26| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65315. "Henkan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|71 72 (CL-DEFINE-KEYSYM 65316 "Romaji")-27| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65316. "Romaji" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|72 73 (CL-DEFINE-KEYSYM 65317 "Hiragana")-28| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65317. "Hiragana" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|73 74 (CL-DEFINE-KEYSYM 65318 "Katakana")-29| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65318. "Katakana" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|74 75 (CL-DEFINE-KEYSYM 65319 "Hiragana_Katakana")-30| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65319. "Hiragana_Katakana" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|75 76 (CL-DEFINE-KEYSYM 65320 "Zenkaku")-31| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65320. "Zenkaku" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|76 77 (CL-DEFINE-KEYSYM 65321 "Hankaku")-32| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65321. "Hankaku" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|77 78 (CL-DEFINE-KEYSYM 65322 "Zenkaku_Hankaku")-33| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65322. "Zenkaku_Hankaku" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|78 79 (CL-DEFINE-KEYSYM 65323 "Touroku")-34| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65323. "Touroku" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|79 80 (CL-DEFINE-KEYSYM 65324 "Massyo")-35| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65324. "Massyo" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|80 81 (CL-DEFINE-KEYSYM 65325 "Kana_Lock")-36| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65325. "Kana_Lock" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|81 82 (CL-DEFINE-KEYSYM 65326 "Kana_Shift")-37| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65326. "Kana_Shift" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|82 83 (CL-DEFINE-KEYSYM 65327 "Eisu_Shift")-38| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65327. "Eisu_Shift" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|83 84 (CL-DEFINE-KEYSYM 65328 "Eisu_toggle")-39| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65328. "Eisu_toggle" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|84 85 (CL-DEFINE-KEYSYM 65335 "Kanji_Bangou")-40| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65335. "Kanji_Bangou" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|85 86 (CL-DEFINE-KEYSYM 65341 "Zen_Koho")-41| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65341. "Zen_Koho" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|86 87 (CL-DEFINE-KEYSYM 65342 "Mae_Koho")-42| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65342. "Mae_Koho" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|87 88 (CL-DEFINE-KEYSYM 65360 "Home")-43| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65360. "Home" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|89 89 (CL-DEFINE-KEYSYM 65361 "Left")-44| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65361. "Left" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|89 90 (CL-DEFINE-KEYSYM 65362 "Up")-45| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65362. "Up" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|90 91 (CL-DEFINE-KEYSYM 65363 "Right")-46| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65363. "Right" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|91 92 (CL-DEFINE-KEYSYM 65364 "Down")-47| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65364. "Down" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|92 93 (CL-DEFINE-KEYSYM 65365 "Prior")-48| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65365. "Prior" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|93 94 (CL-DEFINE-KEYSYM 65365 "Page_Up")-49| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65365. "Page_Up" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|95 95 (CL-DEFINE-KEYSYM 65366 "Next")-50| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65366. "Next" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|95 96 (CL-DEFINE-KEYSYM 65366 "Page_Down")-51| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65366. "Page_Down" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|97 97 (CL-DEFINE-KEYSYM 65367 "End")-52| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65367. "End" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|97 98 (CL-DEFINE-KEYSYM 65368 "Begin")-53| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65368. "Begin" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|98 99 (CL-DEFINE-KEYSYM 65376 "Select")-54| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65376. "Select" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|99 100 (CL-DEFINE-KEYSYM 65377 "Print")-55| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65377. "Print" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|101 101 (CL-DEFINE-KEYSYM 65378 "Execute")-56| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65378. "Execute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|101 102 (CL-DEFINE-KEYSYM 65379 "Insert")-57| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65379. "Insert" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|102 103 (CL-DEFINE-KEYSYM 65381 "Undo")-58| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65381. "Undo" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|104 104 (CL-DEFINE-KEYSYM 65382 "Redo")-59| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65382. "Redo" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|104 105 (CL-DEFINE-KEYSYM 65383 "Menu")-60| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65383. "Menu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|106 106 (CL-DEFINE-KEYSYM 65384 "Find")-61| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65384. "Find" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|106 107 (CL-DEFINE-KEYSYM 65385 "Cancel")-62| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65385. "Cancel" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|107 108 (CL-DEFINE-KEYSYM 65386 "Help")-63| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65386. "Help" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|108 109 (CL-DEFINE-KEYSYM 65387 "Break")-64| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65387. "Break" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|110 110 (CL-DEFINE-KEYSYM 65406 "Mode_switch")-65| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65406. "Mode_switch" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|110 111 (CL-DEFINE-KEYSYM 65406 "script_switch")-66| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65406. "script_switch" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|111 112 (CL-DEFINE-KEYSYM 65407 "Num_Lock")-67| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65407. "Num_Lock" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|113 113 (CL-DEFINE-KEYSYM 65408 "KP_Space")-68| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65408. "KP_Space" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|113 114 (CL-DEFINE-KEYSYM 65417 "KP_Tab")-69| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65417. "KP_Tab" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|115 115 (CL-DEFINE-KEYSYM 65421 "KP_Enter")-70| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65421. "KP_Enter" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|115 116 (CL-DEFINE-KEYSYM 65425 "KP_F1")-71| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65425. "KP_F1" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|116 117 (CL-DEFINE-KEYSYM 65426 "KP_F2")-72| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65426. "KP_F2" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|118 118 (CL-DEFINE-KEYSYM 65427 "KP_F3")-73| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65427. "KP_F3" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|119 119 (CL-DEFINE-KEYSYM 65428 "KP_F4")-74| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65428. "KP_F4" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|120 120 (CL-DEFINE-KEYSYM 65429 "KP_Home")-75| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65429. "KP_Home" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|121 121 (CL-DEFINE-KEYSYM 65430 "KP_Left")-76| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65430. "KP_Left" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|122 122 (CL-DEFINE-KEYSYM 65431 "KP_Up")-77| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65431. "KP_Up" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|123 123 (CL-DEFINE-KEYSYM 65432 "KP_Right")-78| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65432. "KP_Right" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|124 124 (CL-DEFINE-KEYSYM 65433 "KP_Down")-79| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65433. "KP_Down" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|125 125 (CL-DEFINE-KEYSYM 65434 "KP_Prior")-80| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65434. "KP_Prior" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|126 126 (CL-DEFINE-KEYSYM 65434 "KP_Page_Up")-81| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65434. "KP_Page_Up" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|127 127 (CL-DEFINE-KEYSYM 65435 "KP_Next")-82| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65435. "KP_Next" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|128 128 (CL-DEFINE-KEYSYM 65435 "KP_Page_Down")-83| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65435. "KP_Page_Down" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|129 129 (CL-DEFINE-KEYSYM 65436 "KP_End")-84| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65436. "KP_End" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|130 130 (CL-DEFINE-KEYSYM 65437 "KP_Begin")-85| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65437. "KP_Begin" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|131 131 (CL-DEFINE-KEYSYM 65438 "KP_Insert")-86| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65438. "KP_Insert" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|132 132 (CL-DEFINE-KEYSYM 65439 "KP_Delete")-87| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65439. "KP_Delete" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|133 133 (CL-DEFINE-KEYSYM 65469 "KP_Equal")-88| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65469. "KP_Equal" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|133 134 (CL-DEFINE-KEYSYM 65450 "KP_Multiply")-89| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65450. "KP_Multiply" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|135 135 (CL-DEFINE-KEYSYM 65451 "KP_Add")-90| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65451. "KP_Add" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|136 136 (CL-DEFINE-KEYSYM 65452 "KP_Separator")-91| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65452. "KP_Separator" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|136 137 (CL-DEFINE-KEYSYM 65453 "KP_Subtract")-92| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65453. "KP_Subtract" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|138 138 (CL-DEFINE-KEYSYM 65454 "KP_Decimal")-93| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65454. "KP_Decimal" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|139 139 (CL-DEFINE-KEYSYM 65455 "KP_Divide")-94| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65455. "KP_Divide" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|140 140 (CL-DEFINE-KEYSYM 65456 "KP_0")-95| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65456. "KP_0" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|141 141 (CL-DEFINE-KEYSYM 65457 "KP_1")-96| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65457. "KP_1" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|142 142 (CL-DEFINE-KEYSYM 65458 "KP_2")-97| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65458. "KP_2" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|143 143 (CL-DEFINE-KEYSYM 65459 "KP_3")-98| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65459. "KP_3" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|144 144 (CL-DEFINE-KEYSYM 65460 "KP_4")-99| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65460. "KP_4" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|145 145 (CL-DEFINE-KEYSYM 65461 "KP_5")-100| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65461. "KP_5" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|146 146 (CL-DEFINE-KEYSYM 65462 "KP_6")-101| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65462. "KP_6" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|147 147 (CL-DEFINE-KEYSYM 65463 "KP_7")-102| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65463. "KP_7" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|148 148 (CL-DEFINE-KEYSYM 65464 "KP_8")-103| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65464. "KP_8" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|149 149 (CL-DEFINE-KEYSYM 65465 "KP_9")-104| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65465. "KP_9" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|150 150 (CL-DEFINE-KEYSYM 65470 "F1")-105| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65470. "F1" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|151 151 (CL-DEFINE-KEYSYM 65471 "F2")-106| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65471. "F2" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|152 152 (CL-DEFINE-KEYSYM 65472 "F3")-107| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65472. "F3" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|153 153 (CL-DEFINE-KEYSYM 65473 "F4")-108| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65473. "F4" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|154 154 (CL-DEFINE-KEYSYM 65474 "F5")-109| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65474. "F5" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|155 155 (CL-DEFINE-KEYSYM 65475 "F6")-110| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65475. "F6" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|156 156 (CL-DEFINE-KEYSYM 65476 "F7")-111| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65476. "F7" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|157 157 (CL-DEFINE-KEYSYM 65477 "F8")-112| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65477. "F8" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|158 158 (CL-DEFINE-KEYSYM 65478 "F9")-113| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65478. "F9" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|159 159 (CL-DEFINE-KEYSYM 65479 "F10")-114| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65479. "F10" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|160 160 (CL-DEFINE-KEYSYM 65480 "F11")-115| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65480. "F11" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|161 161 (CL-DEFINE-KEYSYM 65480 "L1")-116| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65480. "L1" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|162 162 (CL-DEFINE-KEYSYM 65481 "F12")-117| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65481. "F12" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|163 163 (CL-DEFINE-KEYSYM 65481 "L2")-118| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65481. "L2" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|164 164 (CL-DEFINE-KEYSYM 65482 "F13")-119| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65482. "F13" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|165 165 (CL-DEFINE-KEYSYM 65482 "L3")-120| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65482. "L3" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|166 166 (CL-DEFINE-KEYSYM 65483 "F14")-121| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65483. "F14" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|167 167 (CL-DEFINE-KEYSYM 65483 "L4")-122| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65483. "L4" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|168 168 (CL-DEFINE-KEYSYM 65484 "F15")-123| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65484. "F15" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|169 169 (CL-DEFINE-KEYSYM 65484 "L5")-124| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65484. "L5" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|170 170 (CL-DEFINE-KEYSYM 65485 "F16")-125| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65485. "F16" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|171 171 (CL-DEFINE-KEYSYM 65485 "L6")-126| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65485. "L6" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|172 172 (CL-DEFINE-KEYSYM 65486 "F17")-127| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65486. "F17" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|173 173 (CL-DEFINE-KEYSYM 65486 "L7")-128| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65486. "L7" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|174 174 (CL-DEFINE-KEYSYM 65487 "F18")-129| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65487. "F18" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|175 175 (CL-DEFINE-KEYSYM 65487 "L8")-130| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65487. "L8" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|176 176 (CL-DEFINE-KEYSYM 65488 "F19")-131| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65488. "F19" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|177 177 (CL-DEFINE-KEYSYM 65488 "L9")-132| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65488. "L9" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|178 178 (CL-DEFINE-KEYSYM 65489 "F20")-133| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65489. "F20" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|179 179 (CL-DEFINE-KEYSYM 65489 "L10")-134| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65489. "L10" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|180 180 (CL-DEFINE-KEYSYM 65490 "F21")-135| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65490. "F21" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|181 181 (CL-DEFINE-KEYSYM 65490 "R1")-136| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65490. "R1" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|182 182 (CL-DEFINE-KEYSYM 65491 "F22")-137| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65491. "F22" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|183 183 (CL-DEFINE-KEYSYM 65491 "R2")-138| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65491. "R2" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|184 184 (CL-DEFINE-KEYSYM 65492 "F23")-139| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65492. "F23" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|185 185 (CL-DEFINE-KEYSYM 65492 "R3")-140| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65492. "R3" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|186 186 (CL-DEFINE-KEYSYM 65493 "F24")-141| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65493. "F24" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|187 187 (CL-DEFINE-KEYSYM 65493 "R4")-142| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65493. "R4" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|188 188 (CL-DEFINE-KEYSYM 65494 "F25")-143| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65494. "F25" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|189 189 (CL-DEFINE-KEYSYM 65494 "R5")-144| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65494. "R5" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|190 190 (CL-DEFINE-KEYSYM 65495 "F26")-145| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65495. "F26" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|191 191 (CL-DEFINE-KEYSYM 65495 "R6")-146| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65495. "R6" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|192 192 (CL-DEFINE-KEYSYM 65496 "F27")-147| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65496. "F27" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|193 193 (CL-DEFINE-KEYSYM 65496 "R7")-148| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65496. "R7" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|194 194 (CL-DEFINE-KEYSYM 65497 "F28")-149| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65497. "F28" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|195 195 (CL-DEFINE-KEYSYM 65497 "R8")-150| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65497. "R8" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|196 196 (CL-DEFINE-KEYSYM 65498 "F29")-151| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65498. "F29" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|197 197 (CL-DEFINE-KEYSYM 65498 "R9")-152| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65498. "R9" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|198 198 (CL-DEFINE-KEYSYM 65499 "F30")-153| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65499. "F30" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|199 199 (CL-DEFINE-KEYSYM 65499 "R10")-154| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65499. "R10" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|200 200 (CL-DEFINE-KEYSYM 65500 "F31")-155| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65500. "F31" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|201 201 (CL-DEFINE-KEYSYM 65500 "R11")-156| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65500. "R11" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|202 202 (CL-DEFINE-KEYSYM 65501 "F32")-157| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65501. "F32" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|203 203 (CL-DEFINE-KEYSYM 65501 "R12")-158| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65501. "R12" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|204 204 (CL-DEFINE-KEYSYM 65502 "F33")-159| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65502. "F33" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|205 205 (CL-DEFINE-KEYSYM 65502 "R13")-160| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65502. "R13" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|206 206 (CL-DEFINE-KEYSYM 65503 "F34")-161| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65503. "F34" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|207 207 (CL-DEFINE-KEYSYM 65503 "R14")-162| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65503. "R14" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|208 208 (CL-DEFINE-KEYSYM 65504 "F35")-163| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65504. "F35" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|209 209 (CL-DEFINE-KEYSYM 65504 "R15")-164| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65504. "R15" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|210 210 (CL-DEFINE-KEYSYM 65505 "Shift_L")-165| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65505. "Shift_L" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|210 211 (CL-DEFINE-KEYSYM 65506 "Shift_R")-166| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65506. "Shift_R" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|211 212 (CL-DEFINE-KEYSYM 65507 "Control_L")-167| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65507. "Control_L" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|212 213 (CL-DEFINE-KEYSYM 65508 "Control_R")-168| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65508. "Control_R" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|213 214 (CL-DEFINE-KEYSYM 65509 "Caps_Lock")-169| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65509. "Caps_Lock" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|214 215 (CL-DEFINE-KEYSYM 65510 "Shift_Lock")-170| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65510. "Shift_Lock" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|215 216 (CL-DEFINE-KEYSYM 65511 "Meta_L")-171| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65511. "Meta_L" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|216 217 (CL-DEFINE-KEYSYM 65512 "Meta_R")-172| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65512. "Meta_R" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|217 218 (CL-DEFINE-KEYSYM 65513 "Alt_L")-173| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65513. "Alt_L" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|218 219 (CL-DEFINE-KEYSYM 65514 "Alt_R")-174| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65514. "Alt_R" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|219 220 (CL-DEFINE-KEYSYM 65515 "Super_L")-175| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65515. "Super_L" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|220 221 (CL-DEFINE-KEYSYM 65516 "Super_R")-176| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65516. "Super_R" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|221 222 (CL-DEFINE-KEYSYM 65517 "Hyper_L")-177| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65517. "Hyper_L" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|222 223 (CL-DEFINE-KEYSYM 65518 "Hyper_R")-178| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65518. "Hyper_R" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|223 224 (CL-DEFINE-KEYSYM 65025 "ISO_Lock")-179| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65025. "ISO_Lock" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|225 225 (CL-DEFINE-KEYSYM 65026 "ISO_Level2_Latch")-180| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65026. "ISO_Level2_Latch" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|226 226 (CL-DEFINE-KEYSYM 65027 "ISO_Level3_Shift")-181| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65027. "ISO_Level3_Shift" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|227 227 (CL-DEFINE-KEYSYM 65028 "ISO_Level3_Latch")-182| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65028. "ISO_Level3_Latch" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|228 228 (CL-DEFINE-KEYSYM 65029 "ISO_Level3_Lock")-183| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65029. "ISO_Level3_Lock" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|229 229 (CL-DEFINE-KEYSYM 65406 "ISO_Group_Shift")-184| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65406. "ISO_Group_Shift" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|229 230 (CL-DEFINE-KEYSYM 65030 "ISO_Group_Latch")-185| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65030. "ISO_Group_Latch" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|231 231 (CL-DEFINE-KEYSYM 65031 "ISO_Group_Lock")-186| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65031. "ISO_Group_Lock" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|232 232 (CL-DEFINE-KEYSYM 65032 "ISO_Next_Group")-187| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65032. "ISO_Next_Group" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|233 233 (CL-DEFINE-KEYSYM 65033 "ISO_Next_Group_Lock")-188| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65033. "ISO_Next_Group_Lock" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|234 234 (CL-DEFINE-KEYSYM 65034 "ISO_Prev_Group")-189| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65034. "ISO_Prev_Group" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|235 235 (CL-DEFINE-KEYSYM 65035 "ISO_Prev_Group_Lock")-190| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65035. "ISO_Prev_Group_Lock" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|236 236 (CL-DEFINE-KEYSYM 65036 "ISO_First_Group")-191| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65036. "ISO_First_Group" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|237 237 (CL-DEFINE-KEYSYM 65037 "ISO_First_Group_Lock")-192| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65037. "ISO_First_Group_Lock" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|238 238 (CL-DEFINE-KEYSYM 65038 "ISO_Last_Group")-193| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65038. "ISO_Last_Group" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|239 239 (CL-DEFINE-KEYSYM 65039 "ISO_Last_Group_Lock")-194| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65039. "ISO_Last_Group_Lock" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|240 240 (CL-DEFINE-KEYSYM 65056 "ISO_Left_Tab")-195| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65056. "ISO_Left_Tab" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|241 241 (CL-DEFINE-KEYSYM 65057 "ISO_Move_Line_Up")-196| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65057. "ISO_Move_Line_Up" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|242 242 (CL-DEFINE-KEYSYM 65058 "ISO_Move_Line_Down")-197| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65058. "ISO_Move_Line_Down" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|243 243 (CL-DEFINE-KEYSYM 65059 "ISO_Partial_Line_Up")-198| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65059. "ISO_Partial_Line_Up" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|244 244 (CL-DEFINE-KEYSYM 65060 "ISO_Partial_Line_Down")-199| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65060. "ISO_Partial_Line_Down" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|245 245 (CL-DEFINE-KEYSYM 65061 "ISO_Partial_Space_Left")-200| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65061. "ISO_Partial_Space_Left" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|246 246 (CL-DEFINE-KEYSYM 65062 "ISO_Partial_Space_Right")-201| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65062. "ISO_Partial_Space_Right" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|247 247 (CL-DEFINE-KEYSYM 65063 "ISO_Set_Margin_Left")-202| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65063. "ISO_Set_Margin_Left" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|248 248 (CL-DEFINE-KEYSYM 65064 "ISO_Set_Margin_Right")-203| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65064. "ISO_Set_Margin_Right" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|249 249 (CL-DEFINE-KEYSYM 65065 "ISO_Release_Margin_Left")-204| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65065. "ISO_Release_Margin_Left" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|250 250 (CL-DEFINE-KEYSYM 65066 "ISO_Release_Margin_Right")-205| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65066. "ISO_Release_Margin_Right" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|251 251 (CL-DEFINE-KEYSYM 65067 "ISO_Release_Both_Margins")-206| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65067. "ISO_Release_Both_Margins" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|252 252 (CL-DEFINE-KEYSYM 65068 "ISO_Fast_Cursor_Left")-207| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65068. "ISO_Fast_Cursor_Left" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|253 253 (CL-DEFINE-KEYSYM 65069 "ISO_Fast_Cursor_Right")-208| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65069. "ISO_Fast_Cursor_Right" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|254 254 (CL-DEFINE-KEYSYM 65070 "ISO_Fast_Cursor_Up")-209| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65070. "ISO_Fast_Cursor_Up" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|255 255 (CL-DEFINE-KEYSYM 65071 "ISO_Fast_Cursor_Down")-210| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65071. "ISO_Fast_Cursor_Down" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|256 256 (CL-DEFINE-KEYSYM 65072 "ISO_Continuous_Underline")-211| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65072. "ISO_Continuous_Underline" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|257 257 (CL-DEFINE-KEYSYM 65073 "ISO_Discontinuous_Underline")-212| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65073. "ISO_Discontinuous_Underline" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|258 258 (CL-DEFINE-KEYSYM 65074 "ISO_Emphasize")-213| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65074. "ISO_Emphasize" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|259 259 (CL-DEFINE-KEYSYM 65075 "ISO_Center_Object")-214| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65075. "ISO_Center_Object" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|260 260 (CL-DEFINE-KEYSYM 65076 "ISO_Enter")-215| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65076. "ISO_Enter" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|261 261 (CL-DEFINE-KEYSYM 65104 "dead_grave")-216| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65104. "dead_grave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|262 262 (CL-DEFINE-KEYSYM 65105 "dead_acute")-217| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65105. "dead_acute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|263 263 (CL-DEFINE-KEYSYM 65106 "dead_circumflex")-218| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65106. "dead_circumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|264 264 (CL-DEFINE-KEYSYM 65107 "dead_tilde")-219| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65107. "dead_tilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|265 265 (CL-DEFINE-KEYSYM 65108 "dead_macron")-220| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65108. "dead_macron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|266 266 (CL-DEFINE-KEYSYM 65109 "dead_breve")-221| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65109. "dead_breve" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|267 267 (CL-DEFINE-KEYSYM 65110 "dead_abovedot")-222| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65110. "dead_abovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|268 268 (CL-DEFINE-KEYSYM 65111 "dead_diaeresis")-223| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65111. "dead_diaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|269 269 (CL-DEFINE-KEYSYM 65112 "dead_abovering")-224| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65112. "dead_abovering" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|270 270 (CL-DEFINE-KEYSYM 65113 "dead_doubleacute")-225| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65113. "dead_doubleacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|271 271 (CL-DEFINE-KEYSYM 65114 "dead_caron")-226| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65114. "dead_caron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|272 272 (CL-DEFINE-KEYSYM 65115 "dead_cedilla")-227| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65115. "dead_cedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|273 273 (CL-DEFINE-KEYSYM 65116 "dead_ogonek")-228| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65116. "dead_ogonek" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|274 274 (CL-DEFINE-KEYSYM 65117 "dead_iota")-229| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65117. "dead_iota" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|275 275 (CL-DEFINE-KEYSYM 65118 "dead_voiced_sound")-230| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65118. "dead_voiced_sound" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|276 276 (CL-DEFINE-KEYSYM 65119 "dead_semivoiced_sound")-231| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65119. "dead_semivoiced_sound" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|277 277 (CL-DEFINE-KEYSYM 65120 "dead_belowdot")-232| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65120. "dead_belowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|278 278 (CL-DEFINE-KEYSYM 65121 "dead_hook")-233| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65121. "dead_hook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|279 279 (CL-DEFINE-KEYSYM 65122 "dead_horn")-234| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65122. "dead_horn" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|280 280 (CL-DEFINE-KEYSYM 65232 "First_Virtual_Screen")-235| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65232. "First_Virtual_Screen" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|281 281 (CL-DEFINE-KEYSYM 65233 "Prev_Virtual_Screen")-236| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65233. "Prev_Virtual_Screen" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|282 282 (CL-DEFINE-KEYSYM 65234 "Next_Virtual_Screen")-237| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65234. "Next_Virtual_Screen" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|283 283 (CL-DEFINE-KEYSYM 65236 "Last_Virtual_Screen")-238| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65236. "Last_Virtual_Screen" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|284 284 (CL-DEFINE-KEYSYM 65237 "Terminate_Server")-239| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65237. "Terminate_Server" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|285 285 (CL-DEFINE-KEYSYM 65136 "AccessX_Enable")-240| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65136. "AccessX_Enable" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|286 286 (CL-DEFINE-KEYSYM 65137 "AccessX_Feedback_Enable")-241| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65137. "AccessX_Feedback_Enable" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|287 287 (CL-DEFINE-KEYSYM 65138 "RepeatKeys_Enable")-242| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65138. "RepeatKeys_Enable" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|288 288 (CL-DEFINE-KEYSYM 65139 "SlowKeys_Enable")-243| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65139. "SlowKeys_Enable" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|289 289 (CL-DEFINE-KEYSYM 65140 "BounceKeys_Enable")-244| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65140. "BounceKeys_Enable" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|290 290 (CL-DEFINE-KEYSYM 65141 "StickyKeys_Enable")-245| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65141. "StickyKeys_Enable" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|291 291 (CL-DEFINE-KEYSYM 65142 "MouseKeys_Enable")-246| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65142. "MouseKeys_Enable" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|292 292 (CL-DEFINE-KEYSYM 65143 "MouseKeys_Accel_Enable")-247| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65143. "MouseKeys_Accel_Enable" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|293 293 (CL-DEFINE-KEYSYM 65144 "Overlay1_Enable")-248| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65144. "Overlay1_Enable" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|294 294 (CL-DEFINE-KEYSYM 65145 "Overlay2_Enable")-249| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65145. "Overlay2_Enable" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|295 295 (CL-DEFINE-KEYSYM 65146 "AudibleBell_Enable")-250| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65146. "AudibleBell_Enable" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|296 296 (CL-DEFINE-KEYSYM 65248 "Pointer_Left")-251| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65248. "Pointer_Left" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|297 297 (CL-DEFINE-KEYSYM 65249 "Pointer_Right")-252| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65249. "Pointer_Right" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|298 298 (CL-DEFINE-KEYSYM 65250 "Pointer_Up")-253| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65250. "Pointer_Up" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|299 299 (CL-DEFINE-KEYSYM 65251 "Pointer_Down")-254| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65251. "Pointer_Down" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|300 300 (CL-DEFINE-KEYSYM 65252 "Pointer_UpLeft")-255| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65252. "Pointer_UpLeft" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|301 301 (CL-DEFINE-KEYSYM 65253 "Pointer_UpRight")-256| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65253. "Pointer_UpRight" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|302 302 (CL-DEFINE-KEYSYM 65254 "Pointer_DownLeft")-257| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65254. "Pointer_DownLeft" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|303 303 (CL-DEFINE-KEYSYM 65255 "Pointer_DownRight")-258| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65255. "Pointer_DownRight" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|304 304 (CL-DEFINE-KEYSYM 65256 "Pointer_Button_Dflt")-259| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65256. "Pointer_Button_Dflt" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|305 305 (CL-DEFINE-KEYSYM 65257 "Pointer_Button1")-260| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65257. "Pointer_Button1" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|306 306 (CL-DEFINE-KEYSYM 65258 "Pointer_Button2")-261| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65258. "Pointer_Button2" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|307 307 (CL-DEFINE-KEYSYM 65259 "Pointer_Button3")-262| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65259. "Pointer_Button3" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|308 308 (CL-DEFINE-KEYSYM 65260 "Pointer_Button4")-263| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65260. "Pointer_Button4" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|309 309 (CL-DEFINE-KEYSYM 65261 "Pointer_Button5")-264| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65261. "Pointer_Button5" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|310 310 (CL-DEFINE-KEYSYM 65262 "Pointer_DblClick_Dflt")-265| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65262. "Pointer_DblClick_Dflt" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|311 311 (CL-DEFINE-KEYSYM 65263 "Pointer_DblClick1")-266| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65263. "Pointer_DblClick1" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|312 312 (CL-DEFINE-KEYSYM 65264 "Pointer_DblClick2")-267| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65264. "Pointer_DblClick2" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|313 313 (CL-DEFINE-KEYSYM 65265 "Pointer_DblClick3")-268| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65265. "Pointer_DblClick3" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|314 314 (CL-DEFINE-KEYSYM 65266 "Pointer_DblClick4")-269| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65266. "Pointer_DblClick4" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|315 315 (CL-DEFINE-KEYSYM 65267 "Pointer_DblClick5")-270| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65267. "Pointer_DblClick5" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|316 316 (CL-DEFINE-KEYSYM 65268 "Pointer_Drag_Dflt")-271| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65268. "Pointer_Drag_Dflt" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|317 317 (CL-DEFINE-KEYSYM 65269 "Pointer_Drag1")-272| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65269. "Pointer_Drag1" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|318 318 (CL-DEFINE-KEYSYM 65270 "Pointer_Drag2")-273| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65270. "Pointer_Drag2" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|319 319 (CL-DEFINE-KEYSYM 65271 "Pointer_Drag3")-274| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65271. "Pointer_Drag3" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|320 320 (CL-DEFINE-KEYSYM 65272 "Pointer_Drag4")-275| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65272. "Pointer_Drag4" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|321 321 (CL-DEFINE-KEYSYM 65277 "Pointer_Drag5")-276| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65277. "Pointer_Drag5" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|322 322 (CL-DEFINE-KEYSYM 65273 "Pointer_EnableKeys")-277| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65273. "Pointer_EnableKeys" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|323 323 (CL-DEFINE-KEYSYM 65274 "Pointer_Accelerate")-278| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65274. "Pointer_Accelerate" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|324 324 (CL-DEFINE-KEYSYM 65275 "Pointer_DfltBtnNext")-279| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65275. "Pointer_DfltBtnNext" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|325 325 (CL-DEFINE-KEYSYM 65276 "Pointer_DfltBtnPrev")-280| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65276. "Pointer_DfltBtnPrev" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|326 326 (CL-DEFINE-KEYSYM 64769 "3270_Duplicate")-281| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64769. "3270_Duplicate" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|327 327 (CL-DEFINE-KEYSYM 64770 "3270_FieldMark")-282| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64770. "3270_FieldMark" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|328 328 (CL-DEFINE-KEYSYM 64771 "3270_Right2")-283| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64771. "3270_Right2" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|329 329 (CL-DEFINE-KEYSYM 64772 "3270_Left2")-284| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64772. "3270_Left2" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|330 330 (CL-DEFINE-KEYSYM 64773 "3270_BackTab")-285| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64773. "3270_BackTab" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|331 331 (CL-DEFINE-KEYSYM 64774 "3270_EraseEOF")-286| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64774. "3270_EraseEOF" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|332 332 (CL-DEFINE-KEYSYM 64775 "3270_EraseInput")-287| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64775. "3270_EraseInput" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|333 333 (CL-DEFINE-KEYSYM 64776 "3270_Reset")-288| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64776. "3270_Reset" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|334 334 (CL-DEFINE-KEYSYM 64777 "3270_Quit")-289| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64777. "3270_Quit" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|335 335 (CL-DEFINE-KEYSYM 64778 "3270_PA1")-290| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64778. "3270_PA1" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|336 336 (CL-DEFINE-KEYSYM 64779 "3270_PA2")-291| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64779. "3270_PA2" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|337 337 (CL-DEFINE-KEYSYM 64780 "3270_PA3")-292| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64780. "3270_PA3" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|338 338 (CL-DEFINE-KEYSYM 64781 "3270_Test")-293| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64781. "3270_Test" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|339 339 (CL-DEFINE-KEYSYM 64782 "3270_Attn")-294| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64782. "3270_Attn" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|340 340 (CL-DEFINE-KEYSYM 64783 "3270_CursorBlink")-295| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64783. "3270_CursorBlink" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|341 341 (CL-DEFINE-KEYSYM 64784 "3270_AltCursor")-296| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64784. "3270_AltCursor" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|342 342 (CL-DEFINE-KEYSYM 64785 "3270_KeyClick")-297| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64785. "3270_KeyClick" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|343 343 (CL-DEFINE-KEYSYM 64786 "3270_Jump")-298| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64786. "3270_Jump" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|344 344 (CL-DEFINE-KEYSYM 64787 "3270_Ident")-299| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64787. "3270_Ident" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|345 345 (CL-DEFINE-KEYSYM 64788 "3270_Rule")-300| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64788. "3270_Rule" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|346 346 (CL-DEFINE-KEYSYM 64789 "3270_Copy")-301| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64789. "3270_Copy" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|347 347 (CL-DEFINE-KEYSYM 64790 "3270_Play")-302| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64790. "3270_Play" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|348 348 (CL-DEFINE-KEYSYM 64791 "3270_Setup")-303| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64791. "3270_Setup" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|349 349 (CL-DEFINE-KEYSYM 64792 "3270_Record")-304| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64792. "3270_Record" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|350 350 (CL-DEFINE-KEYSYM 64793 "3270_ChangeScreen")-305| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64793. "3270_ChangeScreen" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|351 351 (CL-DEFINE-KEYSYM 64794 "3270_DeleteWord")-306| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64794. "3270_DeleteWord" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|352 352 (CL-DEFINE-KEYSYM 64795 "3270_ExSelect")-307| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64795. "3270_ExSelect" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|353 353 (CL-DEFINE-KEYSYM 64796 "3270_CursorSelect")-308| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64796. "3270_CursorSelect" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|354 354 (CL-DEFINE-KEYSYM 64797 "3270_PrintScreen")-309| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64797. "3270_PrintScreen" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|355 355 (CL-DEFINE-KEYSYM 64798 "3270_Enter")-310| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64798. "3270_Enter" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|356 356 (CL-DEFINE-KEYSYM 32 "space")-311| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (32. "space" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|356 357 (CL-DEFINE-KEYSYM 33 "exclam")-312| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (33. "exclam" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|357 358 (CL-DEFINE-KEYSYM 34 "quotedbl")-313| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (34. "quotedbl" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|358 359 (CL-DEFINE-KEYSYM 35 "numbersign")-314| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (35. "numbersign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|359 360 (CL-DEFINE-KEYSYM 36 "dollar")-315| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (36. "dollar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|360 361 (CL-DEFINE-KEYSYM 37 "percent")-316| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (37. "percent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|361 362 (CL-DEFINE-KEYSYM 38 "ampersand")-317| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (38. "ampersand" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|362 363 (CL-DEFINE-KEYSYM 39 "apostrophe")-318| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (39. "apostrophe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|363 364 (CL-DEFINE-KEYSYM 39 "quoteright")-319| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (39. "quoteright" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|364 365 (CL-DEFINE-KEYSYM 40 "parenleft")-320| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (40. "parenleft" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|365 366 (CL-DEFINE-KEYSYM 41 "parenright")-321| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (41. "parenright" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|366 367 (CL-DEFINE-KEYSYM 42 "asterisk")-322| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (42. "asterisk" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|367 368 (CL-DEFINE-KEYSYM 43 "plus")-323| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (43. "plus" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|368 369 (CL-DEFINE-KEYSYM 44 "comma")-324| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (44. "comma" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|369 370 (CL-DEFINE-KEYSYM 45 "minus")-325| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (45. "minus" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|370 371 (CL-DEFINE-KEYSYM 46 "period")-326| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (46. "period" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|371 372 (CL-DEFINE-KEYSYM 47 "slash")-327| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (47. "slash" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|372 373 (CL-DEFINE-KEYSYM 48 "0")-328| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (48. "0" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|373 374 (CL-DEFINE-KEYSYM 49 "1")-329| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (49. "1" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|374 375 (CL-DEFINE-KEYSYM 50 "2")-330| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (50. "2" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|375 376 (CL-DEFINE-KEYSYM 51 "3")-331| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (51. "3" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|376 377 (CL-DEFINE-KEYSYM 52 "4")-332| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (52. "4" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|377 378 (CL-DEFINE-KEYSYM 53 "5")-333| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (53. "5" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|378 379 (CL-DEFINE-KEYSYM 54 "6")-334| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (54. "6" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|379 380 (CL-DEFINE-KEYSYM 55 "7")-335| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (55. "7" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|380 381 (CL-DEFINE-KEYSYM 56 "8")-336| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (56. "8" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|381 382 (CL-DEFINE-KEYSYM 57 "9")-337| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (57. "9" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|382 383 (CL-DEFINE-KEYSYM 58 "colon")-338| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (58. "colon" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|383 384 (CL-DEFINE-KEYSYM 59 "semicolon")-339| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (59. "semicolon" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|384 385 (CL-DEFINE-KEYSYM 60 "less")-340| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (60. "less" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|385 386 (CL-DEFINE-KEYSYM 61 "equal")-341| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (61. "equal" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|386 387 (CL-DEFINE-KEYSYM 62 "greater")-342| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (62. "greater" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|387 388 (CL-DEFINE-KEYSYM 63 "question")-343| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (63. "question" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|388 389 (CL-DEFINE-KEYSYM 64 "at")-344| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (64. "at" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|389 390 (CL-DEFINE-KEYSYM 65 "A")-345| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65. "A" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|390 391 (CL-DEFINE-KEYSYM 66 "B")-346| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (66. "B" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|391 392 (CL-DEFINE-KEYSYM 67 "C")-347| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (67. "C" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|392 393 (CL-DEFINE-KEYSYM 68 "D")-348| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (68. "D" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|393 394 (CL-DEFINE-KEYSYM 69 "E")-349| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (69. "E" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|394 395 (CL-DEFINE-KEYSYM 70 "F")-350| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (70. "F" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|395 396 (CL-DEFINE-KEYSYM 71 "G")-351| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (71. "G" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|396 397 (CL-DEFINE-KEYSYM 72 "H")-352| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (72. "H" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|397 398 (CL-DEFINE-KEYSYM 73 "I")-353| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (73. "I" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|398 399 (CL-DEFINE-KEYSYM 74 "J")-354| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (74. "J" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|399 400 (CL-DEFINE-KEYSYM 75 "K")-355| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (75. "K" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|400 401 (CL-DEFINE-KEYSYM 76 "L")-356| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (76. "L" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|401 402 (CL-DEFINE-KEYSYM 77 "M")-357| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (77. "M" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|402 403 (CL-DEFINE-KEYSYM 78 "N")-358| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (78. "N" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|403 404 (CL-DEFINE-KEYSYM 79 "O")-359| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (79. "O" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|404 405 (CL-DEFINE-KEYSYM 80 "P")-360| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (80. "P" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|405 406 (CL-DEFINE-KEYSYM 81 "Q")-361| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (81. "Q" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|406 407 (CL-DEFINE-KEYSYM 82 "R")-362| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (82. "R" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|407 408 (CL-DEFINE-KEYSYM 83 "S")-363| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (83. "S" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|408 409 (CL-DEFINE-KEYSYM 84 "T")-364| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (84. "T" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|409 410 (CL-DEFINE-KEYSYM 85 "U")-365| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (85. "U" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|410 411 (CL-DEFINE-KEYSYM 86 "V")-366| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (86. "V" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|411 412 (CL-DEFINE-KEYSYM 87 "W")-367| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (87. "W" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|412 413 (CL-DEFINE-KEYSYM 88 "X")-368| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (88. "X" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|413 414 (CL-DEFINE-KEYSYM 89 "Y")-369| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (89. "Y" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|414 415 (CL-DEFINE-KEYSYM 90 "Z")-370| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (90. "Z" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|415 416 (CL-DEFINE-KEYSYM 91 "bracketleft")-371| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (91. "bracketleft" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|416 417 (CL-DEFINE-KEYSYM 92 "backslash")-372| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (92. "backslash" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|417 418 (CL-DEFINE-KEYSYM 93 "bracketright")-373| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (93. "bracketright" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|418 419 (CL-DEFINE-KEYSYM 94 "asciicircum")-374| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (94. "asciicircum" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|419 420 (CL-DEFINE-KEYSYM 95 "underscore")-375| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (95. "underscore" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|420 421 (CL-DEFINE-KEYSYM 96 "grave")-376| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (96. "grave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|421 422 (CL-DEFINE-KEYSYM 96 "quoteleft")-377| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (96. "quoteleft" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|422 423 (CL-DEFINE-KEYSYM 97 "a")-378| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (97. "a" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|423 424 (CL-DEFINE-KEYSYM 98 "b")-379| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (98. "b" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|424 425 (CL-DEFINE-KEYSYM 99 "c")-380| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (99. "c" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|425 426 (CL-DEFINE-KEYSYM 100 "d")-381| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (100. "d" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|426 427 (CL-DEFINE-KEYSYM 101 "e")-382| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (101. "e" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|427 428 (CL-DEFINE-KEYSYM 102 "f")-383| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (102. "f" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|428 429 (CL-DEFINE-KEYSYM 103 "g")-384| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (103. "g" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|429 430 (CL-DEFINE-KEYSYM 104 "h")-385| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (104. "h" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|430 431 (CL-DEFINE-KEYSYM 105 "i")-386| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (105. "i" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|431 432 (CL-DEFINE-KEYSYM 106 "j")-387| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (106. "j" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|432 433 (CL-DEFINE-KEYSYM 107 "k")-388| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (107. "k" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|433 434 (CL-DEFINE-KEYSYM 108 "l")-389| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (108. "l" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|434 435 (CL-DEFINE-KEYSYM 109 "m")-390| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (109. "m" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|435 436 (CL-DEFINE-KEYSYM 110 "n")-391| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (110. "n" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|436 437 (CL-DEFINE-KEYSYM 111 "o")-392| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (111. "o" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|437 438 (CL-DEFINE-KEYSYM 112 "p")-393| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (112. "p" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|438 439 (CL-DEFINE-KEYSYM 113 "q")-394| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (113. "q" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|439 440 (CL-DEFINE-KEYSYM 114 "r")-395| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (114. "r" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|440 441 (CL-DEFINE-KEYSYM 115 "s")-396| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (115. "s" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|441 442 (CL-DEFINE-KEYSYM 116 "t")-397| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (116. "t" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|442 443 (CL-DEFINE-KEYSYM 117 "u")-398| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (117. "u" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|443 444 (CL-DEFINE-KEYSYM 118 "v")-399| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (118. "v" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|444 445 (CL-DEFINE-KEYSYM 119 "w")-400| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (119. "w" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|445 446 (CL-DEFINE-KEYSYM 120 "x")-401| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (120. "x" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|446 447 (CL-DEFINE-KEYSYM 121 "y")-402| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (121. "y" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|447 448 (CL-DEFINE-KEYSYM 122 "z")-403| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (122. "z" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|448 449 (CL-DEFINE-KEYSYM 123 "braceleft")-404| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (123. "braceleft" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|449 450 (CL-DEFINE-KEYSYM 124 "bar")-405| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (124. "bar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|450 451 (CL-DEFINE-KEYSYM 125 "braceright")-406| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (125. "braceright" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|451 452 (CL-DEFINE-KEYSYM 126 "asciitilde")-407| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (126. "asciitilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|452 453 (CL-DEFINE-KEYSYM 160 "nobreakspace")-408| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (160. "nobreakspace" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|453 454 (CL-DEFINE-KEYSYM 161 "exclamdown")-409| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (161. "exclamdown" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|454 455 (CL-DEFINE-KEYSYM 162 "cent")-410| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (162. "cent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|455 456 (CL-DEFINE-KEYSYM 163 "sterling")-411| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (163. "sterling" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|456 457 (CL-DEFINE-KEYSYM 164 "currency")-412| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (164. "currency" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|457 458 (CL-DEFINE-KEYSYM 165 "yen")-413| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (165. "yen" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|458 459 (CL-DEFINE-KEYSYM 166 "brokenbar")-414| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (166. "brokenbar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|459 460 (CL-DEFINE-KEYSYM 167 "section")-415| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (167. "section" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|460 461 (CL-DEFINE-KEYSYM 168 "diaeresis")-416| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (168. "diaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|461 462 (CL-DEFINE-KEYSYM 169 "copyright")-417| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (169. "copyright" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|462 463 (CL-DEFINE-KEYSYM 170 "ordfeminine")-418| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (170. "ordfeminine" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|463 464 (CL-DEFINE-KEYSYM 171 "guillemotleft")-419| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (171. "guillemotleft" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|464 465 (CL-DEFINE-KEYSYM 172 "notsign")-420| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (172. "notsign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|465 466 (CL-DEFINE-KEYSYM 173 "hyphen")-421| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (173. "hyphen" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|466 467 (CL-DEFINE-KEYSYM 174 "registered")-422| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (174. "registered" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|467 468 (CL-DEFINE-KEYSYM 175 "macron")-423| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (175. "macron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|468 469 (CL-DEFINE-KEYSYM 176 "degree")-424| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (176. "degree" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|469 470 (CL-DEFINE-KEYSYM 177 "plusminus")-425| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (177. "plusminus" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|470 471 (CL-DEFINE-KEYSYM 178 "twosuperior")-426| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (178. "twosuperior" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|471 472 (CL-DEFINE-KEYSYM 179 "threesuperior")-427| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (179. "threesuperior" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|472 473 (CL-DEFINE-KEYSYM 180 "acute")-428| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (180. "acute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|473 474 (CL-DEFINE-KEYSYM 181 "mu")-429| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (181. "mu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|474 475 (CL-DEFINE-KEYSYM 182 "paragraph")-430| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (182. "paragraph" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|475 476 (CL-DEFINE-KEYSYM 183 "periodcentered")-431| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (183. "periodcentered" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|476 477 (CL-DEFINE-KEYSYM 184 "cedilla")-432| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (184. "cedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|477 478 (CL-DEFINE-KEYSYM 185 "onesuperior")-433| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (185. "onesuperior" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|478 479 (CL-DEFINE-KEYSYM 186 "masculine")-434| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (186. "masculine" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|479 480 (CL-DEFINE-KEYSYM 187 "guillemotright")-435| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (187. "guillemotright" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|480 481 (CL-DEFINE-KEYSYM 188 "onequarter")-436| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (188. "onequarter" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|481 482 (CL-DEFINE-KEYSYM 189 "onehalf")-437| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (189. "onehalf" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|482 483 (CL-DEFINE-KEYSYM 190 "threequarters")-438| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (190. "threequarters" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|483 484 (CL-DEFINE-KEYSYM 191 "questiondown")-439| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (191. "questiondown" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|484 485 (CL-DEFINE-KEYSYM 192 "Agrave")-440| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (192. "Agrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|485 486 (CL-DEFINE-KEYSYM 193 "Aacute")-441| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (193. "Aacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|486 487 (CL-DEFINE-KEYSYM 194 "Acircumflex")-442| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (194. "Acircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|487 488 (CL-DEFINE-KEYSYM 195 "Atilde")-443| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (195. "Atilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|488 489 (CL-DEFINE-KEYSYM 196 "Adiaeresis")-444| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (196. "Adiaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|489 490 (CL-DEFINE-KEYSYM 197 "Aring")-445| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (197. "Aring" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|490 491 (CL-DEFINE-KEYSYM 198 "AE")-446| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (198. "AE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|491 492 (CL-DEFINE-KEYSYM 199 "Ccedilla")-447| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (199. "Ccedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|492 493 (CL-DEFINE-KEYSYM 200 "Egrave")-448| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (200. "Egrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|493 494 (CL-DEFINE-KEYSYM 201 "Eacute")-449| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (201. "Eacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|494 495 (CL-DEFINE-KEYSYM 202 "Ecircumflex")-450| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (202. "Ecircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|495 496 (CL-DEFINE-KEYSYM 203 "Ediaeresis")-451| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (203. "Ediaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|496 497 (CL-DEFINE-KEYSYM 204 "Igrave")-452| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (204. "Igrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|497 498 (CL-DEFINE-KEYSYM 205 "Iacute")-453| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (205. "Iacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|498 499 (CL-DEFINE-KEYSYM 206 "Icircumflex")-454| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (206. "Icircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|499 500 (CL-DEFINE-KEYSYM 207 "Idiaeresis")-455| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (207. "Idiaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|500 501 (CL-DEFINE-KEYSYM 208 "ETH")-456| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (208. "ETH" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|501 502 (CL-DEFINE-KEYSYM 208 "Eth")-457| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (208. "Eth" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|502 503 (CL-DEFINE-KEYSYM 209 "Ntilde")-458| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (209. "Ntilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|503 504 (CL-DEFINE-KEYSYM 210 "Ograve")-459| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (210. "Ograve" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|504 505 (CL-DEFINE-KEYSYM 211 "Oacute")-460| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (211. "Oacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|505 506 (CL-DEFINE-KEYSYM 212 "Ocircumflex")-461| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (212. "Ocircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|506 507 (CL-DEFINE-KEYSYM 213 "Otilde")-462| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (213. "Otilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|507 508 (CL-DEFINE-KEYSYM 214 "Odiaeresis")-463| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (214. "Odiaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|508 509 (CL-DEFINE-KEYSYM 215 "multiply")-464| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (215. "multiply" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|509 510 (CL-DEFINE-KEYSYM 216 "Oslash")-465| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (216. "Oslash" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|510 511 (CL-DEFINE-KEYSYM 216 "Ooblique")-466| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (216. "Ooblique" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|511 512 (CL-DEFINE-KEYSYM 217 "Ugrave")-467| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (217. "Ugrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|512 513 (CL-DEFINE-KEYSYM 218 "Uacute")-468| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (218. "Uacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|513 514 (CL-DEFINE-KEYSYM 219 "Ucircumflex")-469| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (219. "Ucircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|514 515 (CL-DEFINE-KEYSYM 220 "Udiaeresis")-470| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (220. "Udiaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|515 516 (CL-DEFINE-KEYSYM 221 "Yacute")-471| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (221. "Yacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|516 517 (CL-DEFINE-KEYSYM 222 "THORN")-472| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (222. "THORN" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|517 518 (CL-DEFINE-KEYSYM 222 "Thorn")-473| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (222. "Thorn" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|518 519 (CL-DEFINE-KEYSYM 223 "ssharp")-474| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (223. "ssharp" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|519 520 (CL-DEFINE-KEYSYM 224 "agrave")-475| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (224. "agrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|520 521 (CL-DEFINE-KEYSYM 225 "aacute")-476| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (225. "aacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|521 522 (CL-DEFINE-KEYSYM 226 "acircumflex")-477| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (226. "acircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|522 523 (CL-DEFINE-KEYSYM 227 "atilde")-478| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (227. "atilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|523 524 (CL-DEFINE-KEYSYM 228 "adiaeresis")-479| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (228. "adiaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|524 525 (CL-DEFINE-KEYSYM 229 "aring")-480| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (229. "aring" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|525 526 (CL-DEFINE-KEYSYM 230 "ae")-481| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (230. "ae" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|526 527 (CL-DEFINE-KEYSYM 231 "ccedilla")-482| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (231. "ccedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|527 528 (CL-DEFINE-KEYSYM 232 "egrave")-483| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (232. "egrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|528 529 (CL-DEFINE-KEYSYM 233 "eacute")-484| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (233. "eacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|529 530 (CL-DEFINE-KEYSYM 234 "ecircumflex")-485| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (234. "ecircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|530 531 (CL-DEFINE-KEYSYM 235 "ediaeresis")-486| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (235. "ediaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|531 532 (CL-DEFINE-KEYSYM 236 "igrave")-487| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (236. "igrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|532 533 (CL-DEFINE-KEYSYM 237 "iacute")-488| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (237. "iacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|533 534 (CL-DEFINE-KEYSYM 238 "icircumflex")-489| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (238. "icircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|534 535 (CL-DEFINE-KEYSYM 239 "idiaeresis")-490| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (239. "idiaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|535 536 (CL-DEFINE-KEYSYM 240 "eth")-491| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (240. "eth" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|536 537 (CL-DEFINE-KEYSYM 241 "ntilde")-492| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (241. "ntilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|537 538 (CL-DEFINE-KEYSYM 242 "ograve")-493| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (242. "ograve" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|538 539 (CL-DEFINE-KEYSYM 243 "oacute")-494| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (243. "oacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|539 540 (CL-DEFINE-KEYSYM 244 "ocircumflex")-495| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (244. "ocircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|540 541 (CL-DEFINE-KEYSYM 245 "otilde")-496| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (245. "otilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|541 542 (CL-DEFINE-KEYSYM 246 "odiaeresis")-497| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (246. "odiaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|542 543 (CL-DEFINE-KEYSYM 247 "division")-498| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (247. "division" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|543 544 (CL-DEFINE-KEYSYM 248 "oslash")-499| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (248. "oslash" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|544 545 (CL-DEFINE-KEYSYM 248 "ooblique")-500| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (248. "ooblique" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|545 546 (CL-DEFINE-KEYSYM 249 "ugrave")-501| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (249. "ugrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|546 547 (CL-DEFINE-KEYSYM 250 "uacute")-502| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (250. "uacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|547 548 (CL-DEFINE-KEYSYM 251 "ucircumflex")-503| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (251. "ucircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|548 549 (CL-DEFINE-KEYSYM 252 "udiaeresis")-504| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (252. "udiaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|549 550 (CL-DEFINE-KEYSYM 253 "yacute")-505| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (253. "yacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|550 551 (CL-DEFINE-KEYSYM 254 "thorn")-506| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (254. "thorn" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|551 552 (CL-DEFINE-KEYSYM 255 "ydiaeresis")-507| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (255. "ydiaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|552 553 (CL-DEFINE-KEYSYM 417 "Aogonek")-508| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (417. "Aogonek" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|553 554 (CL-DEFINE-KEYSYM 418 "breve")-509| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (418. "breve" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|554 555 (CL-DEFINE-KEYSYM 419 "Lstroke")-510| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (419. "Lstroke" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|555 556 (CL-DEFINE-KEYSYM 421 "Lcaron")-511| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (421. "Lcaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|556 557 (CL-DEFINE-KEYSYM 422 "Sacute")-512| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (422. "Sacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|557 558 (CL-DEFINE-KEYSYM 425 "Scaron")-513| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (425. "Scaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|558 559 (CL-DEFINE-KEYSYM 426 "Scedilla")-514| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (426. "Scedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|559 560 (CL-DEFINE-KEYSYM 427 "Tcaron")-515| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (427. "Tcaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|560 561 (CL-DEFINE-KEYSYM 428 "Zacute")-516| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (428. "Zacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|561 562 (CL-DEFINE-KEYSYM 430 "Zcaron")-517| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (430. "Zcaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|562 563 (CL-DEFINE-KEYSYM 431 "Zabovedot")-518| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (431. "Zabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|563 564 (CL-DEFINE-KEYSYM 433 "aogonek")-519| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (433. "aogonek" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|564 565 (CL-DEFINE-KEYSYM 434 "ogonek")-520| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (434. "ogonek" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|565 566 (CL-DEFINE-KEYSYM 435 "lstroke")-521| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (435. "lstroke" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|566 567 (CL-DEFINE-KEYSYM 437 "lcaron")-522| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (437. "lcaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|567 568 (CL-DEFINE-KEYSYM 438 "sacute")-523| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (438. "sacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|568 569 (CL-DEFINE-KEYSYM 439 "caron")-524| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (439. "caron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|569 570 (CL-DEFINE-KEYSYM 441 "scaron")-525| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (441. "scaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|570 571 (CL-DEFINE-KEYSYM 442 "scedilla")-526| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (442. "scedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|571 572 (CL-DEFINE-KEYSYM 443 "tcaron")-527| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (443. "tcaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|572 573 (CL-DEFINE-KEYSYM 444 "zacute")-528| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (444. "zacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|573 574 (CL-DEFINE-KEYSYM 445 "doubleacute")-529| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (445. "doubleacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|574 575 (CL-DEFINE-KEYSYM 446 "zcaron")-530| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (446. "zcaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|575 576 (CL-DEFINE-KEYSYM 447 "zabovedot")-531| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (447. "zabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|576 577 (CL-DEFINE-KEYSYM 448 "Racute")-532| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (448. "Racute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|577 578 (CL-DEFINE-KEYSYM 451 "Abreve")-533| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (451. "Abreve" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|578 579 (CL-DEFINE-KEYSYM 453 "Lacute")-534| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (453. "Lacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|579 580 (CL-DEFINE-KEYSYM 454 "Cacute")-535| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (454. "Cacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|580 581 (CL-DEFINE-KEYSYM 456 "Ccaron")-536| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (456. "Ccaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|581 582 (CL-DEFINE-KEYSYM 458 "Eogonek")-537| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (458. "Eogonek" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|582 583 (CL-DEFINE-KEYSYM 460 "Ecaron")-538| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (460. "Ecaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|583 584 (CL-DEFINE-KEYSYM 463 "Dcaron")-539| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (463. "Dcaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|584 585 (CL-DEFINE-KEYSYM 464 "Dstroke")-540| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (464. "Dstroke" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|585 586 (CL-DEFINE-KEYSYM 465 "Nacute")-541| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (465. "Nacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|586 587 (CL-DEFINE-KEYSYM 466 "Ncaron")-542| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (466. "Ncaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|587 588 (CL-DEFINE-KEYSYM 469 "Odoubleacute")-543| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (469. "Odoubleacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|588 589 (CL-DEFINE-KEYSYM 472 "Rcaron")-544| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (472. "Rcaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|589 590 (CL-DEFINE-KEYSYM 473 "Uring")-545| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (473. "Uring" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|590 591 (CL-DEFINE-KEYSYM 475 "Udoubleacute")-546| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (475. "Udoubleacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|591 592 (CL-DEFINE-KEYSYM 478 "Tcedilla")-547| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (478. "Tcedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|592 593 (CL-DEFINE-KEYSYM 480 "racute")-548| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (480. "racute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|593 594 (CL-DEFINE-KEYSYM 483 "abreve")-549| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (483. "abreve" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|594 595 (CL-DEFINE-KEYSYM 485 "lacute")-550| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (485. "lacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|595 596 (CL-DEFINE-KEYSYM 486 "cacute")-551| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (486. "cacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|596 597 (CL-DEFINE-KEYSYM 488 "ccaron")-552| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (488. "ccaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|597 598 (CL-DEFINE-KEYSYM 490 "eogonek")-553| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (490. "eogonek" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|598 599 (CL-DEFINE-KEYSYM 492 "ecaron")-554| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (492. "ecaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|599 600 (CL-DEFINE-KEYSYM 495 "dcaron")-555| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (495. "dcaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|600 601 (CL-DEFINE-KEYSYM 496 "dstroke")-556| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (496. "dstroke" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|601 602 (CL-DEFINE-KEYSYM 497 "nacute")-557| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (497. "nacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|602 603 (CL-DEFINE-KEYSYM 498 "ncaron")-558| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (498. "ncaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|603 604 (CL-DEFINE-KEYSYM 501 "odoubleacute")-559| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (501. "odoubleacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|604 605 (CL-DEFINE-KEYSYM 507 "udoubleacute")-560| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (507. "udoubleacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|605 606 (CL-DEFINE-KEYSYM 504 "rcaron")-561| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (504. "rcaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|606 607 (CL-DEFINE-KEYSYM 505 "uring")-562| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (505. "uring" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|607 608 (CL-DEFINE-KEYSYM 510 "tcedilla")-563| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (510. "tcedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|608 609 (CL-DEFINE-KEYSYM 511 "abovedot")-564| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (511. "abovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|609 610 (CL-DEFINE-KEYSYM 673 "Hstroke")-565| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (673. "Hstroke" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|610 611 (CL-DEFINE-KEYSYM 678 "Hcircumflex")-566| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (678. "Hcircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|611 612 (CL-DEFINE-KEYSYM 681 "Iabovedot")-567| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (681. "Iabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|612 613 (CL-DEFINE-KEYSYM 683 "Gbreve")-568| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (683. "Gbreve" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|613 614 (CL-DEFINE-KEYSYM 684 "Jcircumflex")-569| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (684. "Jcircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|614 615 (CL-DEFINE-KEYSYM 689 "hstroke")-570| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (689. "hstroke" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|615 616 (CL-DEFINE-KEYSYM 694 "hcircumflex")-571| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (694. "hcircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|616 617 (CL-DEFINE-KEYSYM 697 "idotless")-572| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (697. "idotless" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|617 618 (CL-DEFINE-KEYSYM 699 "gbreve")-573| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (699. "gbreve" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|618 619 (CL-DEFINE-KEYSYM 700 "jcircumflex")-574| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (700. "jcircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|619 620 (CL-DEFINE-KEYSYM 709 "Cabovedot")-575| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (709. "Cabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|620 621 (CL-DEFINE-KEYSYM 710 "Ccircumflex")-576| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (710. "Ccircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|621 622 (CL-DEFINE-KEYSYM 725 "Gabovedot")-577| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (725. "Gabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|622 623 (CL-DEFINE-KEYSYM 728 "Gcircumflex")-578| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (728. "Gcircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|623 624 (CL-DEFINE-KEYSYM 733 "Ubreve")-579| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (733. "Ubreve" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|624 625 (CL-DEFINE-KEYSYM 734 "Scircumflex")-580| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (734. "Scircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|625 626 (CL-DEFINE-KEYSYM 741 "cabovedot")-581| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (741. "cabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|626 627 (CL-DEFINE-KEYSYM 742 "ccircumflex")-582| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (742. "ccircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|627 628 (CL-DEFINE-KEYSYM 757 "gabovedot")-583| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (757. "gabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|628 629 (CL-DEFINE-KEYSYM 760 "gcircumflex")-584| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (760. "gcircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|629 630 (CL-DEFINE-KEYSYM 765 "ubreve")-585| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (765. "ubreve" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|630 631 (CL-DEFINE-KEYSYM 766 "scircumflex")-586| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (766. "scircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|631 632 (CL-DEFINE-KEYSYM 930 "kra")-587| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (930. "kra" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|632 633 (CL-DEFINE-KEYSYM 930 "kappa")-588| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (930. "kappa" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|633 634 (CL-DEFINE-KEYSYM 931 "Rcedilla")-589| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (931. "Rcedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|634 635 (CL-DEFINE-KEYSYM 933 "Itilde")-590| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (933. "Itilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|635 636 (CL-DEFINE-KEYSYM 934 "Lcedilla")-591| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (934. "Lcedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|636 637 (CL-DEFINE-KEYSYM 938 "Emacron")-592| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (938. "Emacron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|637 638 (CL-DEFINE-KEYSYM 939 "Gcedilla")-593| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (939. "Gcedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|638 639 (CL-DEFINE-KEYSYM 940 "Tslash")-594| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (940. "Tslash" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|639 640 (CL-DEFINE-KEYSYM 947 "rcedilla")-595| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (947. "rcedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|640 641 (CL-DEFINE-KEYSYM 949 "itilde")-596| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (949. "itilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|641 642 (CL-DEFINE-KEYSYM 950 "lcedilla")-597| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (950. "lcedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|642 643 (CL-DEFINE-KEYSYM 954 "emacron")-598| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (954. "emacron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|643 644 (CL-DEFINE-KEYSYM 955 "gcedilla")-599| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (955. "gcedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|644 645 (CL-DEFINE-KEYSYM 956 "tslash")-600| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (956. "tslash" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|645 646 (CL-DEFINE-KEYSYM 957 "ENG")-601| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (957. "ENG" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|646 647 (CL-DEFINE-KEYSYM 959 "eng")-602| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (959. "eng" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|647 648 (CL-DEFINE-KEYSYM 960 "Amacron")-603| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (960. "Amacron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|648 649 (CL-DEFINE-KEYSYM 967 "Iogonek")-604| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (967. "Iogonek" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|649 650 (CL-DEFINE-KEYSYM 972 "Eabovedot")-605| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (972. "Eabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|650 651 (CL-DEFINE-KEYSYM 975 "Imacron")-606| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (975. "Imacron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|651 652 (CL-DEFINE-KEYSYM 977 "Ncedilla")-607| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (977. "Ncedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|652 653 (CL-DEFINE-KEYSYM 978 "Omacron")-608| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (978. "Omacron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|653 654 (CL-DEFINE-KEYSYM 979 "Kcedilla")-609| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (979. "Kcedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|654 655 (CL-DEFINE-KEYSYM 985 "Uogonek")-610| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (985. "Uogonek" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|655 656 (CL-DEFINE-KEYSYM 989 "Utilde")-611| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (989. "Utilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|656 657 (CL-DEFINE-KEYSYM 990 "Umacron")-612| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (990. "Umacron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|657 658 (CL-DEFINE-KEYSYM 992 "amacron")-613| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (992. "amacron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|658 659 (CL-DEFINE-KEYSYM 999 "iogonek")-614| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (999. "iogonek" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|659 660 (CL-DEFINE-KEYSYM 1004 "eabovedot")-615| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1004. "eabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|660 661 (CL-DEFINE-KEYSYM 1007 "imacron")-616| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1007. "imacron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|661 662 (CL-DEFINE-KEYSYM 1009 "ncedilla")-617| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1009. "ncedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|662 663 (CL-DEFINE-KEYSYM 1010 "omacron")-618| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1010. "omacron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|663 664 (CL-DEFINE-KEYSYM 1011 "kcedilla")-619| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1011. "kcedilla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|664 665 (CL-DEFINE-KEYSYM 1017 "uogonek")-620| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1017. "uogonek" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|665 666 (CL-DEFINE-KEYSYM 1021 "utilde")-621| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1021. "utilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|666 667 (CL-DEFINE-KEYSYM 1022 "umacron")-622| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1022. "umacron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|667 668 (CL-DEFINE-KEYSYM 16784898 "Babovedot")-623| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16784898. "Babovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|668 669 (CL-DEFINE-KEYSYM 16784899 "babovedot")-624| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16784899. "babovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|669 670 (CL-DEFINE-KEYSYM 16784906 "Dabovedot")-625| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16784906. "Dabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|670 671 (CL-DEFINE-KEYSYM 16785024 "Wgrave")-626| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785024. "Wgrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|671 672 (CL-DEFINE-KEYSYM 16785026 "Wacute")-627| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785026. "Wacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|672 673 (CL-DEFINE-KEYSYM 16784907 "dabovedot")-628| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16784907. "dabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|673 674 (CL-DEFINE-KEYSYM 16785138 "Ygrave")-629| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785138. "Ygrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|674 675 (CL-DEFINE-KEYSYM 16784926 "Fabovedot")-630| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16784926. "Fabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|675 676 (CL-DEFINE-KEYSYM 16784927 "fabovedot")-631| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16784927. "fabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|676 677 (CL-DEFINE-KEYSYM 16784960 "Mabovedot")-632| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16784960. "Mabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|677 678 (CL-DEFINE-KEYSYM 16784961 "mabovedot")-633| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16784961. "mabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|678 679 (CL-DEFINE-KEYSYM 16784982 "Pabovedot")-634| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16784982. "Pabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|679 680 (CL-DEFINE-KEYSYM 16785025 "wgrave")-635| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785025. "wgrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|680 681 (CL-DEFINE-KEYSYM 16784983 "pabovedot")-636| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16784983. "pabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|681 682 (CL-DEFINE-KEYSYM 16785027 "wacute")-637| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785027. "wacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|682 683 (CL-DEFINE-KEYSYM 16784992 "Sabovedot")-638| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16784992. "Sabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|683 684 (CL-DEFINE-KEYSYM 16785139 "ygrave")-639| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785139. "ygrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|684 685 (CL-DEFINE-KEYSYM 16785028 "Wdiaeresis")-640| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785028. "Wdiaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|685 686 (CL-DEFINE-KEYSYM 16785029 "wdiaeresis")-641| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785029. "wdiaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|686 687 (CL-DEFINE-KEYSYM 16784993 "sabovedot")-642| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16784993. "sabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|687 688 (CL-DEFINE-KEYSYM 16777588 "Wcircumflex")-643| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777588. "Wcircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|688 689 (CL-DEFINE-KEYSYM 16785002 "Tabovedot")-644| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785002. "Tabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|689 690 (CL-DEFINE-KEYSYM 16777590 "Ycircumflex")-645| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777590. "Ycircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|690 691 (CL-DEFINE-KEYSYM 16777589 "wcircumflex")-646| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777589. "wcircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|691 692 (CL-DEFINE-KEYSYM 16785003 "tabovedot")-647| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785003. "tabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|692 693 (CL-DEFINE-KEYSYM 16777591 "ycircumflex")-648| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777591. "ycircumflex" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|693 694 (CL-DEFINE-KEYSYM 5052 "OE")-649| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (5052. "OE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|694 695 (CL-DEFINE-KEYSYM 5053 "oe")-650| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (5053. "oe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|695 696 (CL-DEFINE-KEYSYM 5054 "Ydiaeresis")-651| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (5054. "Ydiaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|696 697 (CL-DEFINE-KEYSYM 1150 "overline")-652| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1150. "overline" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|697 698 (CL-DEFINE-KEYSYM 1185 "kana_fullstop")-653| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1185. "kana_fullstop" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|698 699 (CL-DEFINE-KEYSYM 1186 "kana_openingbracket")-654| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1186. "kana_openingbracket" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|699 700 (CL-DEFINE-KEYSYM 1187 "kana_closingbracket")-655| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1187. "kana_closingbracket" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|700 701 (CL-DEFINE-KEYSYM 1188 "kana_comma")-656| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1188. "kana_comma" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|701 702 (CL-DEFINE-KEYSYM 1189 "kana_conjunctive")-657| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1189. "kana_conjunctive" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|702 703 (CL-DEFINE-KEYSYM 1189 "kana_middledot")-658| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1189. "kana_middledot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|703 704 (CL-DEFINE-KEYSYM 1190 "kana_WO")-659| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1190. "kana_WO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|704 705 (CL-DEFINE-KEYSYM 1191 "kana_a")-660| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1191. "kana_a" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|705 706 (CL-DEFINE-KEYSYM 1192 "kana_i")-661| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1192. "kana_i" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|706 707 (CL-DEFINE-KEYSYM 1193 "kana_u")-662| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1193. "kana_u" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|707 708 (CL-DEFINE-KEYSYM 1194 "kana_e")-663| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1194. "kana_e" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|708 709 (CL-DEFINE-KEYSYM 1195 "kana_o")-664| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1195. "kana_o" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|709 710 (CL-DEFINE-KEYSYM 1196 "kana_ya")-665| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1196. "kana_ya" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|710 711 (CL-DEFINE-KEYSYM 1197 "kana_yu")-666| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1197. "kana_yu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|711 712 (CL-DEFINE-KEYSYM 1198 "kana_yo")-667| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1198. "kana_yo" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|712 713 (CL-DEFINE-KEYSYM 1199 "kana_tsu")-668| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1199. "kana_tsu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|713 714 (CL-DEFINE-KEYSYM 1199 "kana_tu")-669| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1199. "kana_tu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|714 715 (CL-DEFINE-KEYSYM 1200 "prolongedsound")-670| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1200. "prolongedsound" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|715 716 (CL-DEFINE-KEYSYM 1201 "kana_A")-671| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1201. "kana_A" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|716 717 (CL-DEFINE-KEYSYM 1202 "kana_I")-672| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1202. "kana_I" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|717 718 (CL-DEFINE-KEYSYM 1203 "kana_U")-673| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1203. "kana_U" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|718 719 (CL-DEFINE-KEYSYM 1204 "kana_E")-674| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1204. "kana_E" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|719 720 (CL-DEFINE-KEYSYM 1205 "kana_O")-675| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1205. "kana_O" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|720 721 (CL-DEFINE-KEYSYM 1206 "kana_KA")-676| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1206. "kana_KA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|721 722 (CL-DEFINE-KEYSYM 1207 "kana_KI")-677| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1207. "kana_KI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|722 723 (CL-DEFINE-KEYSYM 1208 "kana_KU")-678| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1208. "kana_KU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|723 724 (CL-DEFINE-KEYSYM 1209 "kana_KE")-679| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1209. "kana_KE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|724 725 (CL-DEFINE-KEYSYM 1210 "kana_KO")-680| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1210. "kana_KO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|725 726 (CL-DEFINE-KEYSYM 1211 "kana_SA")-681| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1211. "kana_SA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|726 727 (CL-DEFINE-KEYSYM 1212 "kana_SHI")-682| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1212. "kana_SHI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|727 728 (CL-DEFINE-KEYSYM 1213 "kana_SU")-683| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1213. "kana_SU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|728 729 (CL-DEFINE-KEYSYM 1214 "kana_SE")-684| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1214. "kana_SE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|729 730 (CL-DEFINE-KEYSYM 1215 "kana_SO")-685| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1215. "kana_SO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|730 731 (CL-DEFINE-KEYSYM 1216 "kana_TA")-686| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1216. "kana_TA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|731 732 (CL-DEFINE-KEYSYM 1217 "kana_CHI")-687| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1217. "kana_CHI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|732 733 (CL-DEFINE-KEYSYM 1217 "kana_TI")-688| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1217. "kana_TI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|733 734 (CL-DEFINE-KEYSYM 1218 "kana_TSU")-689| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1218. "kana_TSU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|734 735 (CL-DEFINE-KEYSYM 1218 "kana_TU")-690| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1218. "kana_TU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|735 736 (CL-DEFINE-KEYSYM 1219 "kana_TE")-691| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1219. "kana_TE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|736 737 (CL-DEFINE-KEYSYM 1220 "kana_TO")-692| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1220. "kana_TO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|737 738 (CL-DEFINE-KEYSYM 1221 "kana_NA")-693| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1221. "kana_NA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|738 739 (CL-DEFINE-KEYSYM 1222 "kana_NI")-694| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1222. "kana_NI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|739 740 (CL-DEFINE-KEYSYM 1223 "kana_NU")-695| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1223. "kana_NU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|740 741 (CL-DEFINE-KEYSYM 1224 "kana_NE")-696| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1224. "kana_NE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|741 742 (CL-DEFINE-KEYSYM 1225 "kana_NO")-697| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1225. "kana_NO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|742 743 (CL-DEFINE-KEYSYM 1226 "kana_HA")-698| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1226. "kana_HA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|743 744 (CL-DEFINE-KEYSYM 1227 "kana_HI")-699| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1227. "kana_HI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|744 745 (CL-DEFINE-KEYSYM 1228 "kana_FU")-700| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1228. "kana_FU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|745 746 (CL-DEFINE-KEYSYM 1228 "kana_HU")-701| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1228. "kana_HU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|746 747 (CL-DEFINE-KEYSYM 1229 "kana_HE")-702| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1229. "kana_HE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|747 748 (CL-DEFINE-KEYSYM 1230 "kana_HO")-703| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1230. "kana_HO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|748 749 (CL-DEFINE-KEYSYM 1231 "kana_MA")-704| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1231. "kana_MA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|749 750 (CL-DEFINE-KEYSYM 1232 "kana_MI")-705| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1232. "kana_MI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|750 751 (CL-DEFINE-KEYSYM 1233 "kana_MU")-706| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1233. "kana_MU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|751 752 (CL-DEFINE-KEYSYM 1234 "kana_ME")-707| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1234. "kana_ME" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|752 753 (CL-DEFINE-KEYSYM 1235 "kana_MO")-708| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1235. "kana_MO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|753 754 (CL-DEFINE-KEYSYM 1236 "kana_YA")-709| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1236. "kana_YA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|754 755 (CL-DEFINE-KEYSYM 1237 "kana_YU")-710| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1237. "kana_YU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|755 756 (CL-DEFINE-KEYSYM 1238 "kana_YO")-711| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1238. "kana_YO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|756 757 (CL-DEFINE-KEYSYM 1239 "kana_RA")-712| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1239. "kana_RA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|757 758 (CL-DEFINE-KEYSYM 1240 "kana_RI")-713| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1240. "kana_RI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|758 759 (CL-DEFINE-KEYSYM 1241 "kana_RU")-714| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1241. "kana_RU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|759 760 (CL-DEFINE-KEYSYM 1242 "kana_RE")-715| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1242. "kana_RE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|760 761 (CL-DEFINE-KEYSYM 1243 "kana_RO")-716| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1243. "kana_RO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|761 762 (CL-DEFINE-KEYSYM 1244 "kana_WA")-717| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1244. "kana_WA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|762 763 (CL-DEFINE-KEYSYM 1245 "kana_N")-718| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1245. "kana_N" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|763 764 (CL-DEFINE-KEYSYM 1246 "voicedsound")-719| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1246. "voicedsound" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|764 765 (CL-DEFINE-KEYSYM 1247 "semivoicedsound")-720| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1247. "semivoicedsound" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|765 766 (CL-DEFINE-KEYSYM 65406 "kana_switch")-721| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65406. "kana_switch" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|766 767 (CL-DEFINE-KEYSYM 16778992 "Farsi_0")-722| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778992. "Farsi_0" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|767 768 (CL-DEFINE-KEYSYM 16778993 "Farsi_1")-723| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778993. "Farsi_1" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|768 769 (CL-DEFINE-KEYSYM 16778994 "Farsi_2")-724| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778994. "Farsi_2" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|769 770 (CL-DEFINE-KEYSYM 16778995 "Farsi_3")-725| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778995. "Farsi_3" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|770 771 (CL-DEFINE-KEYSYM 16778996 "Farsi_4")-726| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778996. "Farsi_4" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|771 772 (CL-DEFINE-KEYSYM 16778997 "Farsi_5")-727| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778997. "Farsi_5" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|772 773 (CL-DEFINE-KEYSYM 16778998 "Farsi_6")-728| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778998. "Farsi_6" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|773 774 (CL-DEFINE-KEYSYM 16778999 "Farsi_7")-729| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778999. "Farsi_7" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|774 775 (CL-DEFINE-KEYSYM 16779000 "Farsi_8")-730| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16779000. "Farsi_8" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|775 776 (CL-DEFINE-KEYSYM 16779001 "Farsi_9")-731| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16779001. "Farsi_9" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|776 777 (CL-DEFINE-KEYSYM 16778858 "Arabic_percent")-732| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778858. "Arabic_percent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|777 778 (CL-DEFINE-KEYSYM 16778864 "Arabic_superscript_alef")-733| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778864. "Arabic_superscript_alef" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|778 779 (CL-DEFINE-KEYSYM 16778873 "Arabic_tteh")-734| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778873. "Arabic_tteh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|779 780 (CL-DEFINE-KEYSYM 16778878 "Arabic_peh")-735| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778878. "Arabic_peh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|780 781 (CL-DEFINE-KEYSYM 16778886 "Arabic_tcheh")-736| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778886. "Arabic_tcheh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|781 782 (CL-DEFINE-KEYSYM 16778888 "Arabic_ddal")-737| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778888. "Arabic_ddal" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|782 783 (CL-DEFINE-KEYSYM 16778897 "Arabic_rreh")-738| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778897. "Arabic_rreh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|783 784 (CL-DEFINE-KEYSYM 1452 "Arabic_comma")-739| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1452. "Arabic_comma" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|784 785 (CL-DEFINE-KEYSYM 16778964 "Arabic_fullstop")-740| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778964. "Arabic_fullstop" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|785 786 (CL-DEFINE-KEYSYM 16778848 "Arabic_0")-741| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778848. "Arabic_0" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|786 787 (CL-DEFINE-KEYSYM 16778849 "Arabic_1")-742| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778849. "Arabic_1" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|787 788 (CL-DEFINE-KEYSYM 16778850 "Arabic_2")-743| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778850. "Arabic_2" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|788 789 (CL-DEFINE-KEYSYM 16778851 "Arabic_3")-744| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778851. "Arabic_3" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|789 790 (CL-DEFINE-KEYSYM 16778852 "Arabic_4")-745| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778852. "Arabic_4" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|790 791 (CL-DEFINE-KEYSYM 16778853 "Arabic_5")-746| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778853. "Arabic_5" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|791 792 (CL-DEFINE-KEYSYM 16778854 "Arabic_6")-747| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778854. "Arabic_6" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|792 793 (CL-DEFINE-KEYSYM 16778855 "Arabic_7")-748| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778855. "Arabic_7" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|793 794 (CL-DEFINE-KEYSYM 16778856 "Arabic_8")-749| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778856. "Arabic_8" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|794 795 (CL-DEFINE-KEYSYM 16778857 "Arabic_9")-750| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778857. "Arabic_9" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|795 796 (CL-DEFINE-KEYSYM 1467 "Arabic_semicolon")-751| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1467. "Arabic_semicolon" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|796 797 (CL-DEFINE-KEYSYM 1471 "Arabic_question_mark")-752| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1471. "Arabic_question_mark" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|797 798 (CL-DEFINE-KEYSYM 1473 "Arabic_hamza")-753| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1473. "Arabic_hamza" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|798 799 (CL-DEFINE-KEYSYM 1474 "Arabic_maddaonalef")-754| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1474. "Arabic_maddaonalef" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|799 800 (CL-DEFINE-KEYSYM 1475 "Arabic_hamzaonalef")-755| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1475. "Arabic_hamzaonalef" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|800 801 (CL-DEFINE-KEYSYM 1476 "Arabic_hamzaonwaw")-756| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1476. "Arabic_hamzaonwaw" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|801 802 (CL-DEFINE-KEYSYM 1477 "Arabic_hamzaunderalef")-757| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1477. "Arabic_hamzaunderalef" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|802 803 (CL-DEFINE-KEYSYM 1478 "Arabic_hamzaonyeh")-758| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1478. "Arabic_hamzaonyeh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|803 804 (CL-DEFINE-KEYSYM 1479 "Arabic_alef")-759| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1479. "Arabic_alef" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|804 805 (CL-DEFINE-KEYSYM 1480 "Arabic_beh")-760| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1480. "Arabic_beh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|805 806 (CL-DEFINE-KEYSYM 1481 "Arabic_tehmarbuta")-761| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1481. "Arabic_tehmarbuta" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|806 807 (CL-DEFINE-KEYSYM 1482 "Arabic_teh")-762| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1482. "Arabic_teh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|807 808 (CL-DEFINE-KEYSYM 1483 "Arabic_theh")-763| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1483. "Arabic_theh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|808 809 (CL-DEFINE-KEYSYM 1484 "Arabic_jeem")-764| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1484. "Arabic_jeem" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|809 810 (CL-DEFINE-KEYSYM 1485 "Arabic_hah")-765| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1485. "Arabic_hah" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|810 811 (CL-DEFINE-KEYSYM 1486 "Arabic_khah")-766| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1486. "Arabic_khah" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|811 812 (CL-DEFINE-KEYSYM 1487 "Arabic_dal")-767| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1487. "Arabic_dal" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|812 813 (CL-DEFINE-KEYSYM 1488 "Arabic_thal")-768| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1488. "Arabic_thal" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|813 814 (CL-DEFINE-KEYSYM 1489 "Arabic_ra")-769| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1489. "Arabic_ra" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|814 815 (CL-DEFINE-KEYSYM 1490 "Arabic_zain")-770| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1490. "Arabic_zain" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|815 816 (CL-DEFINE-KEYSYM 1491 "Arabic_seen")-771| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1491. "Arabic_seen" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|816 817 (CL-DEFINE-KEYSYM 1492 "Arabic_sheen")-772| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1492. "Arabic_sheen" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|817 818 (CL-DEFINE-KEYSYM 1493 "Arabic_sad")-773| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1493. "Arabic_sad" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|818 819 (CL-DEFINE-KEYSYM 1494 "Arabic_dad")-774| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1494. "Arabic_dad" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|819 820 (CL-DEFINE-KEYSYM 1495 "Arabic_tah")-775| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1495. "Arabic_tah" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|820 821 (CL-DEFINE-KEYSYM 1496 "Arabic_zah")-776| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1496. "Arabic_zah" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|821 822 (CL-DEFINE-KEYSYM 1497 "Arabic_ain")-777| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1497. "Arabic_ain" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|822 823 (CL-DEFINE-KEYSYM 1498 "Arabic_ghain")-778| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1498. "Arabic_ghain" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|823 824 (CL-DEFINE-KEYSYM 1504 "Arabic_tatweel")-779| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1504. "Arabic_tatweel" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|824 825 (CL-DEFINE-KEYSYM 1505 "Arabic_feh")-780| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1505. "Arabic_feh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|825 826 (CL-DEFINE-KEYSYM 1506 "Arabic_qaf")-781| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1506. "Arabic_qaf" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|826 827 (CL-DEFINE-KEYSYM 1507 "Arabic_kaf")-782| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1507. "Arabic_kaf" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|827 828 (CL-DEFINE-KEYSYM 1508 "Arabic_lam")-783| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1508. "Arabic_lam" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|828 829 (CL-DEFINE-KEYSYM 1509 "Arabic_meem")-784| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1509. "Arabic_meem" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|829 830 (CL-DEFINE-KEYSYM 1510 "Arabic_noon")-785| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1510. "Arabic_noon" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|830 831 (CL-DEFINE-KEYSYM 1511 "Arabic_ha")-786| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1511. "Arabic_ha" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|831 832 (CL-DEFINE-KEYSYM 1511 "Arabic_heh")-787| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1511. "Arabic_heh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|832 833 (CL-DEFINE-KEYSYM 1512 "Arabic_waw")-788| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1512. "Arabic_waw" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|833 834 (CL-DEFINE-KEYSYM 1513 "Arabic_alefmaksura")-789| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1513. "Arabic_alefmaksura" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|834 835 (CL-DEFINE-KEYSYM 1514 "Arabic_yeh")-790| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1514. "Arabic_yeh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|835 836 (CL-DEFINE-KEYSYM 1515 "Arabic_fathatan")-791| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1515. "Arabic_fathatan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|836 837 (CL-DEFINE-KEYSYM 1516 "Arabic_dammatan")-792| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1516. "Arabic_dammatan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|837 838 (CL-DEFINE-KEYSYM 1517 "Arabic_kasratan")-793| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1517. "Arabic_kasratan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|838 839 (CL-DEFINE-KEYSYM 1518 "Arabic_fatha")-794| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1518. "Arabic_fatha" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|839 840 (CL-DEFINE-KEYSYM 1519 "Arabic_damma")-795| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1519. "Arabic_damma" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|840 841 (CL-DEFINE-KEYSYM 1520 "Arabic_kasra")-796| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1520. "Arabic_kasra" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|841 842 (CL-DEFINE-KEYSYM 1521 "Arabic_shadda")-797| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1521. "Arabic_shadda" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|842 843 (CL-DEFINE-KEYSYM 1522 "Arabic_sukun")-798| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1522. "Arabic_sukun" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|843 844 (CL-DEFINE-KEYSYM 16778835 "Arabic_madda_above")-799| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778835. "Arabic_madda_above" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|844 845 (CL-DEFINE-KEYSYM 16778836 "Arabic_hamza_above")-800| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778836. "Arabic_hamza_above" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|845 846 (CL-DEFINE-KEYSYM 16778837 "Arabic_hamza_below")-801| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778837. "Arabic_hamza_below" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|846 847 (CL-DEFINE-KEYSYM 16778904 "Arabic_jeh")-802| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778904. "Arabic_jeh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|847 848 (CL-DEFINE-KEYSYM 16778916 "Arabic_veh")-803| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778916. "Arabic_veh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|848 849 (CL-DEFINE-KEYSYM 16778921 "Arabic_keheh")-804| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778921. "Arabic_keheh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|849 850 (CL-DEFINE-KEYSYM 16778927 "Arabic_gaf")-805| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778927. "Arabic_gaf" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|850 851 (CL-DEFINE-KEYSYM 16778938 "Arabic_noon_ghunna")-806| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778938. "Arabic_noon_ghunna" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|851 852 (CL-DEFINE-KEYSYM 16778942 "Arabic_heh_doachashmee")-807| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778942. "Arabic_heh_doachashmee" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|852 853 (CL-DEFINE-KEYSYM 16778956 "Farsi_yeh")-808| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778956. "Farsi_yeh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|853 854 (CL-DEFINE-KEYSYM 16778956 "Arabic_farsi_yeh")-809| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778956. "Arabic_farsi_yeh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|854 855 (CL-DEFINE-KEYSYM 16778962 "Arabic_yeh_baree")-810| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778962. "Arabic_yeh_baree" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|855 856 (CL-DEFINE-KEYSYM 16778945 "Arabic_heh_goal")-811| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778945. "Arabic_heh_goal" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|856 857 (CL-DEFINE-KEYSYM 65406 "Arabic_switch")-812| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65406. "Arabic_switch" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|857 858 (CL-DEFINE-KEYSYM 16778386 "Cyrillic_GHE_bar")-813| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778386. "Cyrillic_GHE_bar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|858 859 (CL-DEFINE-KEYSYM 16778387 "Cyrillic_ghe_bar")-814| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778387. "Cyrillic_ghe_bar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|859 860 (CL-DEFINE-KEYSYM 16778390 "Cyrillic_ZHE_descender")-815| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778390. "Cyrillic_ZHE_descender" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|860 861 (CL-DEFINE-KEYSYM 16778391 "Cyrillic_zhe_descender")-816| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778391. "Cyrillic_zhe_descender" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|861 862 (CL-DEFINE-KEYSYM 16778394 "Cyrillic_KA_descender")-817| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778394. "Cyrillic_KA_descender" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|862 863 (CL-DEFINE-KEYSYM 16778395 "Cyrillic_ka_descender")-818| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778395. "Cyrillic_ka_descender" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|863 864 (CL-DEFINE-KEYSYM 16778396 "Cyrillic_KA_vertstroke")-819| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778396. "Cyrillic_KA_vertstroke" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|864 865 (CL-DEFINE-KEYSYM 16778397 "Cyrillic_ka_vertstroke")-820| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778397. "Cyrillic_ka_vertstroke" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|865 866 (CL-DEFINE-KEYSYM 16778402 "Cyrillic_EN_descender")-821| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778402. "Cyrillic_EN_descender" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|866 867 (CL-DEFINE-KEYSYM 16778403 "Cyrillic_en_descender")-822| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778403. "Cyrillic_en_descender" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|867 868 (CL-DEFINE-KEYSYM 16778414 "Cyrillic_U_straight")-823| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778414. "Cyrillic_U_straight" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|868 869 (CL-DEFINE-KEYSYM 16778415 "Cyrillic_u_straight")-824| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778415. "Cyrillic_u_straight" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|869 870 (CL-DEFINE-KEYSYM 16778416 "Cyrillic_U_straight_bar")-825| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778416. "Cyrillic_U_straight_bar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|870 871 (CL-DEFINE-KEYSYM 16778417 "Cyrillic_u_straight_bar")-826| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778417. "Cyrillic_u_straight_bar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|871 872 (CL-DEFINE-KEYSYM 16778418 "Cyrillic_HA_descender")-827| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778418. "Cyrillic_HA_descender" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|872 873 (CL-DEFINE-KEYSYM 16778419 "Cyrillic_ha_descender")-828| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778419. "Cyrillic_ha_descender" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|873 874 (CL-DEFINE-KEYSYM 16778422 "Cyrillic_CHE_descender")-829| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778422. "Cyrillic_CHE_descender" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|874 875 (CL-DEFINE-KEYSYM 16778423 "Cyrillic_che_descender")-830| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778423. "Cyrillic_che_descender" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|875 876 (CL-DEFINE-KEYSYM 16778424 "Cyrillic_CHE_vertstroke")-831| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778424. "Cyrillic_CHE_vertstroke" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|876 877 (CL-DEFINE-KEYSYM 16778425 "Cyrillic_che_vertstroke")-832| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778425. "Cyrillic_che_vertstroke" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|877 878 (CL-DEFINE-KEYSYM 16778426 "Cyrillic_SHHA")-833| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778426. "Cyrillic_SHHA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|878 879 (CL-DEFINE-KEYSYM 16778427 "Cyrillic_shha")-834| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778427. "Cyrillic_shha" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|879 880 (CL-DEFINE-KEYSYM 16778456 "Cyrillic_SCHWA")-835| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778456. "Cyrillic_SCHWA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|880 881 (CL-DEFINE-KEYSYM 16778457 "Cyrillic_schwa")-836| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778457. "Cyrillic_schwa" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|881 882 (CL-DEFINE-KEYSYM 16778466 "Cyrillic_I_macron")-837| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778466. "Cyrillic_I_macron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|882 883 (CL-DEFINE-KEYSYM 16778467 "Cyrillic_i_macron")-838| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778467. "Cyrillic_i_macron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|883 884 (CL-DEFINE-KEYSYM 16778472 "Cyrillic_O_bar")-839| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778472. "Cyrillic_O_bar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|884 885 (CL-DEFINE-KEYSYM 16778473 "Cyrillic_o_bar")-840| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778473. "Cyrillic_o_bar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|885 886 (CL-DEFINE-KEYSYM 16778478 "Cyrillic_U_macron")-841| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778478. "Cyrillic_U_macron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|886 887 (CL-DEFINE-KEYSYM 16778479 "Cyrillic_u_macron")-842| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778479. "Cyrillic_u_macron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|887 888 (CL-DEFINE-KEYSYM 1697 "Serbian_dje")-843| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1697. "Serbian_dje" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|888 889 (CL-DEFINE-KEYSYM 1698 "Macedonia_gje")-844| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1698. "Macedonia_gje" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|889 890 (CL-DEFINE-KEYSYM 1699 "Cyrillic_io")-845| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1699. "Cyrillic_io" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|890 891 (CL-DEFINE-KEYSYM 1700 "Ukrainian_ie")-846| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1700. "Ukrainian_ie" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|891 892 (CL-DEFINE-KEYSYM 1700 "Ukranian_je")-847| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1700. "Ukranian_je" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|892 893 (CL-DEFINE-KEYSYM 1701 "Macedonia_dse")-848| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1701. "Macedonia_dse" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|893 894 (CL-DEFINE-KEYSYM 1702 "Ukrainian_i")-849| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1702. "Ukrainian_i" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|894 895 (CL-DEFINE-KEYSYM 1702 "Ukranian_i")-850| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1702. "Ukranian_i" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|895 896 (CL-DEFINE-KEYSYM 1703 "Ukrainian_yi")-851| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1703. "Ukrainian_yi" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|896 897 (CL-DEFINE-KEYSYM 1703 "Ukranian_yi")-852| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1703. "Ukranian_yi" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|897 898 (CL-DEFINE-KEYSYM 1704 "Cyrillic_je")-853| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1704. "Cyrillic_je" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|898 899 (CL-DEFINE-KEYSYM 1704 "Serbian_je")-854| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1704. "Serbian_je" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|899 900 (CL-DEFINE-KEYSYM 1705 "Cyrillic_lje")-855| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1705. "Cyrillic_lje" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|900 901 (CL-DEFINE-KEYSYM 1705 "Serbian_lje")-856| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1705. "Serbian_lje" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|901 902 (CL-DEFINE-KEYSYM 1706 "Cyrillic_nje")-857| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1706. "Cyrillic_nje" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|902 903 (CL-DEFINE-KEYSYM 1706 "Serbian_nje")-858| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1706. "Serbian_nje" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|903 904 (CL-DEFINE-KEYSYM 1707 "Serbian_tshe")-859| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1707. "Serbian_tshe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|904 905 (CL-DEFINE-KEYSYM 1708 "Macedonia_kje")-860| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1708. "Macedonia_kje" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|905 906 (CL-DEFINE-KEYSYM 1709 "Ukrainian_ghe_with_upturn")-861| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1709. "Ukrainian_ghe_with_upturn" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|906 907 (CL-DEFINE-KEYSYM 1710 "Byelorussian_shortu")-862| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1710. "Byelorussian_shortu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|907 908 (CL-DEFINE-KEYSYM 1711 "Cyrillic_dzhe")-863| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1711. "Cyrillic_dzhe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|908 909 (CL-DEFINE-KEYSYM 1711 "Serbian_dze")-864| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1711. "Serbian_dze" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|909 910 (CL-DEFINE-KEYSYM 1712 "numerosign")-865| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1712. "numerosign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|910 911 (CL-DEFINE-KEYSYM 1713 "Serbian_DJE")-866| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1713. "Serbian_DJE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|911 912 (CL-DEFINE-KEYSYM 1714 "Macedonia_GJE")-867| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1714. "Macedonia_GJE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|912 913 (CL-DEFINE-KEYSYM 1715 "Cyrillic_IO")-868| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1715. "Cyrillic_IO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|913 914 (CL-DEFINE-KEYSYM 1716 "Ukrainian_IE")-869| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1716. "Ukrainian_IE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|914 915 (CL-DEFINE-KEYSYM 1716 "Ukranian_JE")-870| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1716. "Ukranian_JE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|915 916 (CL-DEFINE-KEYSYM 1717 "Macedonia_DSE")-871| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1717. "Macedonia_DSE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|916 917 (CL-DEFINE-KEYSYM 1718 "Ukrainian_I")-872| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1718. "Ukrainian_I" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|917 918 (CL-DEFINE-KEYSYM 1718 "Ukranian_I")-873| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1718. "Ukranian_I" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|918 919 (CL-DEFINE-KEYSYM 1719 "Ukrainian_YI")-874| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1719. "Ukrainian_YI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|919 920 (CL-DEFINE-KEYSYM 1719 "Ukranian_YI")-875| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1719. "Ukranian_YI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|920 921 (CL-DEFINE-KEYSYM 1720 "Cyrillic_JE")-876| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1720. "Cyrillic_JE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|921 922 (CL-DEFINE-KEYSYM 1720 "Serbian_JE")-877| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1720. "Serbian_JE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|922 923 (CL-DEFINE-KEYSYM 1721 "Cyrillic_LJE")-878| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1721. "Cyrillic_LJE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|923 924 (CL-DEFINE-KEYSYM 1721 "Serbian_LJE")-879| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1721. "Serbian_LJE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|924 925 (CL-DEFINE-KEYSYM 1722 "Cyrillic_NJE")-880| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1722. "Cyrillic_NJE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|925 926 (CL-DEFINE-KEYSYM 1722 "Serbian_NJE")-881| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1722. "Serbian_NJE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|926 927 (CL-DEFINE-KEYSYM 1723 "Serbian_TSHE")-882| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1723. "Serbian_TSHE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|927 928 (CL-DEFINE-KEYSYM 1724 "Macedonia_KJE")-883| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1724. "Macedonia_KJE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|928 929 (CL-DEFINE-KEYSYM 1725 "Ukrainian_GHE_WITH_UPTURN")-884| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1725. "Ukrainian_GHE_WITH_UPTURN" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|929 930 (CL-DEFINE-KEYSYM 1726 "Byelorussian_SHORTU")-885| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1726. "Byelorussian_SHORTU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|930 931 (CL-DEFINE-KEYSYM 1727 "Cyrillic_DZHE")-886| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1727. "Cyrillic_DZHE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|931 932 (CL-DEFINE-KEYSYM 1727 "Serbian_DZE")-887| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1727. "Serbian_DZE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|932 933 (CL-DEFINE-KEYSYM 1728 "Cyrillic_yu")-888| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1728. "Cyrillic_yu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|933 934 (CL-DEFINE-KEYSYM 1729 "Cyrillic_a")-889| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1729. "Cyrillic_a" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|934 935 (CL-DEFINE-KEYSYM 1730 "Cyrillic_be")-890| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1730. "Cyrillic_be" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|935 936 (CL-DEFINE-KEYSYM 1731 "Cyrillic_tse")-891| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1731. "Cyrillic_tse" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|936 937 (CL-DEFINE-KEYSYM 1732 "Cyrillic_de")-892| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1732. "Cyrillic_de" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|937 938 (CL-DEFINE-KEYSYM 1733 "Cyrillic_ie")-893| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1733. "Cyrillic_ie" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|938 939 (CL-DEFINE-KEYSYM 1734 "Cyrillic_ef")-894| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1734. "Cyrillic_ef" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|939 940 (CL-DEFINE-KEYSYM 1735 "Cyrillic_ghe")-895| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1735. "Cyrillic_ghe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|940 941 (CL-DEFINE-KEYSYM 1736 "Cyrillic_ha")-896| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1736. "Cyrillic_ha" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|941 942 (CL-DEFINE-KEYSYM 1737 "Cyrillic_i")-897| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1737. "Cyrillic_i" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|942 943 (CL-DEFINE-KEYSYM 1738 "Cyrillic_shorti")-898| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1738. "Cyrillic_shorti" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|943 944 (CL-DEFINE-KEYSYM 1739 "Cyrillic_ka")-899| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1739. "Cyrillic_ka" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|944 945 (CL-DEFINE-KEYSYM 1740 "Cyrillic_el")-900| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1740. "Cyrillic_el" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|945 946 (CL-DEFINE-KEYSYM 1741 "Cyrillic_em")-901| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1741. "Cyrillic_em" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|946 947 (CL-DEFINE-KEYSYM 1742 "Cyrillic_en")-902| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1742. "Cyrillic_en" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|947 948 (CL-DEFINE-KEYSYM 1743 "Cyrillic_o")-903| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1743. "Cyrillic_o" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|948 949 (CL-DEFINE-KEYSYM 1744 "Cyrillic_pe")-904| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1744. "Cyrillic_pe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|949 950 (CL-DEFINE-KEYSYM 1745 "Cyrillic_ya")-905| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1745. "Cyrillic_ya" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|950 951 (CL-DEFINE-KEYSYM 1746 "Cyrillic_er")-906| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1746. "Cyrillic_er" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|951 952 (CL-DEFINE-KEYSYM 1747 "Cyrillic_es")-907| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1747. "Cyrillic_es" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|952 953 (CL-DEFINE-KEYSYM 1748 "Cyrillic_te")-908| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1748. "Cyrillic_te" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|953 954 (CL-DEFINE-KEYSYM 1749 "Cyrillic_u")-909| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1749. "Cyrillic_u" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|954 955 (CL-DEFINE-KEYSYM 1750 "Cyrillic_zhe")-910| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1750. "Cyrillic_zhe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|955 956 (CL-DEFINE-KEYSYM 1751 "Cyrillic_ve")-911| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1751. "Cyrillic_ve" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|956 957 (CL-DEFINE-KEYSYM 1752 "Cyrillic_softsign")-912| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1752. "Cyrillic_softsign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|957 958 (CL-DEFINE-KEYSYM 1753 "Cyrillic_yeru")-913| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1753. "Cyrillic_yeru" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|958 959 (CL-DEFINE-KEYSYM 1754 "Cyrillic_ze")-914| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1754. "Cyrillic_ze" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|959 960 (CL-DEFINE-KEYSYM 1755 "Cyrillic_sha")-915| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1755. "Cyrillic_sha" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|960 961 (CL-DEFINE-KEYSYM 1756 "Cyrillic_e")-916| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1756. "Cyrillic_e" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|961 962 (CL-DEFINE-KEYSYM 1757 "Cyrillic_shcha")-917| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1757. "Cyrillic_shcha" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|962 963 (CL-DEFINE-KEYSYM 1758 "Cyrillic_che")-918| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1758. "Cyrillic_che" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|963 964 (CL-DEFINE-KEYSYM 1759 "Cyrillic_hardsign")-919| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1759. "Cyrillic_hardsign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|964 965 (CL-DEFINE-KEYSYM 1760 "Cyrillic_YU")-920| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1760. "Cyrillic_YU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|965 966 (CL-DEFINE-KEYSYM 1761 "Cyrillic_A")-921| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1761. "Cyrillic_A" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|966 967 (CL-DEFINE-KEYSYM 1762 "Cyrillic_BE")-922| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1762. "Cyrillic_BE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|967 968 (CL-DEFINE-KEYSYM 1763 "Cyrillic_TSE")-923| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1763. "Cyrillic_TSE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|968 969 (CL-DEFINE-KEYSYM 1764 "Cyrillic_DE")-924| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1764. "Cyrillic_DE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|969 970 (CL-DEFINE-KEYSYM 1765 "Cyrillic_IE")-925| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1765. "Cyrillic_IE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|970 971 (CL-DEFINE-KEYSYM 1766 "Cyrillic_EF")-926| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1766. "Cyrillic_EF" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|971 972 (CL-DEFINE-KEYSYM 1767 "Cyrillic_GHE")-927| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1767. "Cyrillic_GHE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|972 973 (CL-DEFINE-KEYSYM 1768 "Cyrillic_HA")-928| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1768. "Cyrillic_HA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|973 974 (CL-DEFINE-KEYSYM 1769 "Cyrillic_I")-929| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1769. "Cyrillic_I" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|974 975 (CL-DEFINE-KEYSYM 1770 "Cyrillic_SHORTI")-930| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1770. "Cyrillic_SHORTI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|975 976 (CL-DEFINE-KEYSYM 1771 "Cyrillic_KA")-931| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1771. "Cyrillic_KA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|976 977 (CL-DEFINE-KEYSYM 1772 "Cyrillic_EL")-932| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1772. "Cyrillic_EL" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|977 978 (CL-DEFINE-KEYSYM 1773 "Cyrillic_EM")-933| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1773. "Cyrillic_EM" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|978 979 (CL-DEFINE-KEYSYM 1774 "Cyrillic_EN")-934| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1774. "Cyrillic_EN" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|979 980 (CL-DEFINE-KEYSYM 1775 "Cyrillic_O")-935| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1775. "Cyrillic_O" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|980 981 (CL-DEFINE-KEYSYM 1776 "Cyrillic_PE")-936| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1776. "Cyrillic_PE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|981 982 (CL-DEFINE-KEYSYM 1777 "Cyrillic_YA")-937| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1777. "Cyrillic_YA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|982 983 (CL-DEFINE-KEYSYM 1778 "Cyrillic_ER")-938| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1778. "Cyrillic_ER" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|983 984 (CL-DEFINE-KEYSYM 1779 "Cyrillic_ES")-939| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1779. "Cyrillic_ES" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|984 985 (CL-DEFINE-KEYSYM 1780 "Cyrillic_TE")-940| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1780. "Cyrillic_TE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|985 986 (CL-DEFINE-KEYSYM 1781 "Cyrillic_U")-941| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1781. "Cyrillic_U" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|986 987 (CL-DEFINE-KEYSYM 1782 "Cyrillic_ZHE")-942| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1782. "Cyrillic_ZHE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|987 988 (CL-DEFINE-KEYSYM 1783 "Cyrillic_VE")-943| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1783. "Cyrillic_VE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|988 989 (CL-DEFINE-KEYSYM 1784 "Cyrillic_SOFTSIGN")-944| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1784. "Cyrillic_SOFTSIGN" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|989 990 (CL-DEFINE-KEYSYM 1785 "Cyrillic_YERU")-945| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1785. "Cyrillic_YERU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|990 991 (CL-DEFINE-KEYSYM 1786 "Cyrillic_ZE")-946| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1786. "Cyrillic_ZE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|991 992 (CL-DEFINE-KEYSYM 1787 "Cyrillic_SHA")-947| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1787. "Cyrillic_SHA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|992 993 (CL-DEFINE-KEYSYM 1788 "Cyrillic_E")-948| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1788. "Cyrillic_E" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|993 994 (CL-DEFINE-KEYSYM 1789 "Cyrillic_SHCHA")-949| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1789. "Cyrillic_SHCHA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|994 995 (CL-DEFINE-KEYSYM 1790 "Cyrillic_CHE")-950| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1790. "Cyrillic_CHE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|995 996 (CL-DEFINE-KEYSYM 1791 "Cyrillic_HARDSIGN")-951| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1791. "Cyrillic_HARDSIGN" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|996 997 (CL-DEFINE-KEYSYM 1953 "Greek_ALPHAaccent")-952| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1953. "Greek_ALPHAaccent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|997 998 (CL-DEFINE-KEYSYM 1954 "Greek_EPSILONaccent")-953| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1954. "Greek_EPSILONaccent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|998 999 (CL-DEFINE-KEYSYM 1955 "Greek_ETAaccent")-954| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1955. "Greek_ETAaccent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|999 1000 (CL-DEFINE-KEYSYM 1956 "Greek_IOTAaccent")-955| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1956. "Greek_IOTAaccent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1000 1001 (CL-DEFINE-KEYSYM 1957 "Greek_IOTAdieresis")-956| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1957. "Greek_IOTAdieresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1001 1002 (CL-DEFINE-KEYSYM 1957 "Greek_IOTAdiaeresis")-957| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1957. "Greek_IOTAdiaeresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1002 1003 (CL-DEFINE-KEYSYM 1959 "Greek_OMICRONaccent")-958| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1959. "Greek_OMICRONaccent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1003 1004 (CL-DEFINE-KEYSYM 1960 "Greek_UPSILONaccent")-959| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1960. "Greek_UPSILONaccent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1004 1005 (CL-DEFINE-KEYSYM 1961 "Greek_UPSILONdieresis")-960| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1961. "Greek_UPSILONdieresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1005 1006 (CL-DEFINE-KEYSYM 1963 "Greek_OMEGAaccent")-961| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1963. "Greek_OMEGAaccent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1006 1007 (CL-DEFINE-KEYSYM 1966 "Greek_accentdieresis")-962| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1966. "Greek_accentdieresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1007 1008 (CL-DEFINE-KEYSYM 1967 "Greek_horizbar")-963| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1967. "Greek_horizbar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1008 1009 (CL-DEFINE-KEYSYM 1969 "Greek_alphaaccent")-964| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1969. "Greek_alphaaccent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1009 1010 (CL-DEFINE-KEYSYM 1970 "Greek_epsilonaccent")-965| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1970. "Greek_epsilonaccent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1010 1011 (CL-DEFINE-KEYSYM 1971 "Greek_etaaccent")-966| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1971. "Greek_etaaccent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1011 1012 (CL-DEFINE-KEYSYM 1972 "Greek_iotaaccent")-967| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1972. "Greek_iotaaccent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1012 1013 (CL-DEFINE-KEYSYM 1973 "Greek_iotadieresis")-968| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1973. "Greek_iotadieresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1013 1014 (CL-DEFINE-KEYSYM 1974 "Greek_iotaaccentdieresis")-969| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1974. "Greek_iotaaccentdieresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1014 1015 (CL-DEFINE-KEYSYM 1975 "Greek_omicronaccent")-970| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1975. "Greek_omicronaccent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1015 1016 (CL-DEFINE-KEYSYM 1976 "Greek_upsilonaccent")-971| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1976. "Greek_upsilonaccent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1016 1017 (CL-DEFINE-KEYSYM 1977 "Greek_upsilondieresis")-972| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1977. "Greek_upsilondieresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1017 1018 (CL-DEFINE-KEYSYM 1978 "Greek_upsilonaccentdieresis")-973| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1978. "Greek_upsilonaccentdieresis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1018 1019 (CL-DEFINE-KEYSYM 1979 "Greek_omegaaccent")-974| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1979. "Greek_omegaaccent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1019 1020 (CL-DEFINE-KEYSYM 1985 "Greek_ALPHA")-975| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1985. "Greek_ALPHA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1020 1021 (CL-DEFINE-KEYSYM 1986 "Greek_BETA")-976| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1986. "Greek_BETA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1021 1022 (CL-DEFINE-KEYSYM 1987 "Greek_GAMMA")-977| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1987. "Greek_GAMMA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1022 1023 (CL-DEFINE-KEYSYM 1988 "Greek_DELTA")-978| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1988. "Greek_DELTA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1023 1024 (CL-DEFINE-KEYSYM 1989 "Greek_EPSILON")-979| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1989. "Greek_EPSILON" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1024 1025 (CL-DEFINE-KEYSYM 1990 "Greek_ZETA")-980| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1990. "Greek_ZETA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1025 1026 (CL-DEFINE-KEYSYM 1991 "Greek_ETA")-981| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1991. "Greek_ETA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1026 1027 (CL-DEFINE-KEYSYM 1992 "Greek_THETA")-982| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1992. "Greek_THETA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1027 1028 (CL-DEFINE-KEYSYM 1993 "Greek_IOTA")-983| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1993. "Greek_IOTA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1028 1029 (CL-DEFINE-KEYSYM 1994 "Greek_KAPPA")-984| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1994. "Greek_KAPPA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1029 1030 (CL-DEFINE-KEYSYM 1995 "Greek_LAMDA")-985| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1995. "Greek_LAMDA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1030 1031 (CL-DEFINE-KEYSYM 1995 "Greek_LAMBDA")-986| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1995. "Greek_LAMBDA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1031 1032 (CL-DEFINE-KEYSYM 1996 "Greek_MU")-987| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1996. "Greek_MU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1032 1033 (CL-DEFINE-KEYSYM 1997 "Greek_NU")-988| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1997. "Greek_NU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1033 1034 (CL-DEFINE-KEYSYM 1998 "Greek_XI")-989| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1998. "Greek_XI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1034 1035 (CL-DEFINE-KEYSYM 1999 "Greek_OMICRON")-990| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (1999. "Greek_OMICRON" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1035 1036 (CL-DEFINE-KEYSYM 2000 "Greek_PI")-991| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2000. "Greek_PI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1036 1037 (CL-DEFINE-KEYSYM 2001 "Greek_RHO")-992| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2001. "Greek_RHO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1037 1038 (CL-DEFINE-KEYSYM 2002 "Greek_SIGMA")-993| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2002. "Greek_SIGMA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1038 1039 (CL-DEFINE-KEYSYM 2004 "Greek_TAU")-994| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2004. "Greek_TAU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1039 1040 (CL-DEFINE-KEYSYM 2005 "Greek_UPSILON")-995| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2005. "Greek_UPSILON" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1040 1041 (CL-DEFINE-KEYSYM 2006 "Greek_PHI")-996| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2006. "Greek_PHI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1041 1042 (CL-DEFINE-KEYSYM 2007 "Greek_CHI")-997| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2007. "Greek_CHI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1042 1043 (CL-DEFINE-KEYSYM 2008 "Greek_PSI")-998| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2008. "Greek_PSI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1043 1044 (CL-DEFINE-KEYSYM 2009 "Greek_OMEGA")-999| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2009. "Greek_OMEGA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1044 1045 (CL-DEFINE-KEYSYM 2017 "Greek_alpha")-1000| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2017. "Greek_alpha" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1045 1046 (CL-DEFINE-KEYSYM 2018 "Greek_beta")-1001| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2018. "Greek_beta" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1046 1047 (CL-DEFINE-KEYSYM 2019 "Greek_gamma")-1002| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2019. "Greek_gamma" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1047 1048 (CL-DEFINE-KEYSYM 2020 "Greek_delta")-1003| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2020. "Greek_delta" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1048 1049 (CL-DEFINE-KEYSYM 2021 "Greek_epsilon")-1004| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2021. "Greek_epsilon" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1049 1050 (CL-DEFINE-KEYSYM 2022 "Greek_zeta")-1005| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2022. "Greek_zeta" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1050 1051 (CL-DEFINE-KEYSYM 2023 "Greek_eta")-1006| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2023. "Greek_eta" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1051 1052 (CL-DEFINE-KEYSYM 2024 "Greek_theta")-1007| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2024. "Greek_theta" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1052 1053 (CL-DEFINE-KEYSYM 2025 "Greek_iota")-1008| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2025. "Greek_iota" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1053 1054 (CL-DEFINE-KEYSYM 2026 "Greek_kappa")-1009| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2026. "Greek_kappa" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1054 1055 (CL-DEFINE-KEYSYM 2027 "Greek_lamda")-1010| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2027. "Greek_lamda" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1055 1056 (CL-DEFINE-KEYSYM 2027 "Greek_lambda")-1011| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2027. "Greek_lambda" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1056 1057 (CL-DEFINE-KEYSYM 2028 "Greek_mu")-1012| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2028. "Greek_mu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1057 1058 (CL-DEFINE-KEYSYM 2029 "Greek_nu")-1013| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2029. "Greek_nu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1058 1059 (CL-DEFINE-KEYSYM 2030 "Greek_xi")-1014| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2030. "Greek_xi" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1059 1060 (CL-DEFINE-KEYSYM 2031 "Greek_omicron")-1015| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2031. "Greek_omicron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1060 1061 (CL-DEFINE-KEYSYM 2032 "Greek_pi")-1016| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2032. "Greek_pi" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1061 1062 (CL-DEFINE-KEYSYM 2033 "Greek_rho")-1017| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2033. "Greek_rho" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1062 1063 (CL-DEFINE-KEYSYM 2034 "Greek_sigma")-1018| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2034. "Greek_sigma" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1063 1064 (CL-DEFINE-KEYSYM 2035 "Greek_finalsmallsigma")-1019| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2035. "Greek_finalsmallsigma" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1064 1065 (CL-DEFINE-KEYSYM 2036 "Greek_tau")-1020| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2036. "Greek_tau" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1065 1066 (CL-DEFINE-KEYSYM 2037 "Greek_upsilon")-1021| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2037. "Greek_upsilon" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1066 1067 (CL-DEFINE-KEYSYM 2038 "Greek_phi")-1022| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2038. "Greek_phi" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1067 1068 (CL-DEFINE-KEYSYM 2039 "Greek_chi")-1023| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2039. "Greek_chi" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1068 1069 (CL-DEFINE-KEYSYM 2040 "Greek_psi")-1024| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2040. "Greek_psi" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1069 1070 (CL-DEFINE-KEYSYM 2041 "Greek_omega")-1025| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2041. "Greek_omega" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1070 1071 (CL-DEFINE-KEYSYM 65406 "Greek_switch")-1026| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65406. "Greek_switch" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1071 1072 (CL-DEFINE-KEYSYM 2209 "leftradical")-1027| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2209. "leftradical" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1072 1073 (CL-DEFINE-KEYSYM 2210 "topleftradical")-1028| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2210. "topleftradical" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1073 1074 (CL-DEFINE-KEYSYM 2211 "horizconnector")-1029| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2211. "horizconnector" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1074 1075 (CL-DEFINE-KEYSYM 2212 "topintegral")-1030| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2212. "topintegral" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1075 1076 (CL-DEFINE-KEYSYM 2213 "botintegral")-1031| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2213. "botintegral" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1076 1077 (CL-DEFINE-KEYSYM 2214 "vertconnector")-1032| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2214. "vertconnector" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1077 1078 (CL-DEFINE-KEYSYM 2215 "topleftsqbracket")-1033| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2215. "topleftsqbracket" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1078 1079 (CL-DEFINE-KEYSYM 2216 "botleftsqbracket")-1034| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2216. "botleftsqbracket" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1079 1080 (CL-DEFINE-KEYSYM 2217 "toprightsqbracket")-1035| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2217. "toprightsqbracket" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1080 1081 (CL-DEFINE-KEYSYM 2218 "botrightsqbracket")-1036| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2218. "botrightsqbracket" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1081 1082 (CL-DEFINE-KEYSYM 2219 "topleftparens")-1037| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2219. "topleftparens" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1082 1083 (CL-DEFINE-KEYSYM 2220 "botleftparens")-1038| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2220. "botleftparens" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1083 1084 (CL-DEFINE-KEYSYM 2221 "toprightparens")-1039| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2221. "toprightparens" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1084 1085 (CL-DEFINE-KEYSYM 2222 "botrightparens")-1040| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2222. "botrightparens" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1085 1086 (CL-DEFINE-KEYSYM 2223 "leftmiddlecurlybrace")-1041| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2223. "leftmiddlecurlybrace" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1086 1087 (CL-DEFINE-KEYSYM 2224 "rightmiddlecurlybrace")-1042| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2224. "rightmiddlecurlybrace" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1087 1088 (CL-DEFINE-KEYSYM 2225 "topleftsummation")-1043| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2225. "topleftsummation" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1089 1089 (CL-DEFINE-KEYSYM 2226 "botleftsummation")-1044| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2226. "botleftsummation" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1090 1090 (CL-DEFINE-KEYSYM 2227 "topvertsummationconnector")-1045| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2227. "topvertsummationconnector" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1091 1091 (CL-DEFINE-KEYSYM 2228 "botvertsummationconnector")-1046| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2228. "botvertsummationconnector" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1092 1092 (CL-DEFINE-KEYSYM 2229 "toprightsummation")-1047| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2229. "toprightsummation" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1093 1093 (CL-DEFINE-KEYSYM 2230 "botrightsummation")-1048| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2230. "botrightsummation" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1094 1094 (CL-DEFINE-KEYSYM 2231 "rightmiddlesummation")-1049| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2231. "rightmiddlesummation" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1095 1095 (CL-DEFINE-KEYSYM 2236 "lessthanequal")-1050| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2236. "lessthanequal" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1095 1096 (CL-DEFINE-KEYSYM 2237 "notequal")-1051| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2237. "notequal" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1096 1097 (CL-DEFINE-KEYSYM 2238 "greaterthanequal")-1052| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2238. "greaterthanequal" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1097 1098 (CL-DEFINE-KEYSYM 2239 "integral")-1053| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2239. "integral" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1098 1099 (CL-DEFINE-KEYSYM 2240 "therefore")-1054| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2240. "therefore" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1099 1100 (CL-DEFINE-KEYSYM 2241 "variation")-1055| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2241. "variation" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1100 1101 (CL-DEFINE-KEYSYM 2242 "infinity")-1056| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2242. "infinity" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1101 1102 (CL-DEFINE-KEYSYM 2245 "nabla")-1057| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2245. "nabla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1102 1103 (CL-DEFINE-KEYSYM 2248 "approximate")-1058| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2248. "approximate" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1103 1104 (CL-DEFINE-KEYSYM 2249 "similarequal")-1059| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2249. "similarequal" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1104 1105 (CL-DEFINE-KEYSYM 2253 "ifonlyif")-1060| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2253. "ifonlyif" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1105 1106 (CL-DEFINE-KEYSYM 2254 "implies")-1061| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2254. "implies" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1106 1107 (CL-DEFINE-KEYSYM 2255 "identical")-1062| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2255. "identical" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1107 1108 (CL-DEFINE-KEYSYM 2262 "radical")-1063| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2262. "radical" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1108 1109 (CL-DEFINE-KEYSYM 2266 "includedin")-1064| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2266. "includedin" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1109 1110 (CL-DEFINE-KEYSYM 2267 "includes")-1065| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2267. "includes" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1110 1111 (CL-DEFINE-KEYSYM 2268 "intersection")-1066| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2268. "intersection" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1111 1112 (CL-DEFINE-KEYSYM 2269 "union")-1067| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2269. "union" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1112 1113 (CL-DEFINE-KEYSYM 2270 "logicaland")-1068| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2270. "logicaland" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1113 1114 (CL-DEFINE-KEYSYM 2271 "logicalor")-1069| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2271. "logicalor" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1114 1115 (CL-DEFINE-KEYSYM 2287 "partialderivative")-1070| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2287. "partialderivative" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1115 1116 (CL-DEFINE-KEYSYM 2294 "function")-1071| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2294. "function" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1116 1117 (CL-DEFINE-KEYSYM 2299 "leftarrow")-1072| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2299. "leftarrow" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1117 1118 (CL-DEFINE-KEYSYM 2300 "uparrow")-1073| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2300. "uparrow" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1118 1119 (CL-DEFINE-KEYSYM 2301 "rightarrow")-1074| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2301. "rightarrow" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1119 1120 (CL-DEFINE-KEYSYM 2302 "downarrow")-1075| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2302. "downarrow" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1120 1121 (CL-DEFINE-KEYSYM 2527 "blank")-1076| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2527. "blank" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1122 1122 (CL-DEFINE-KEYSYM 2528 "soliddiamond")-1077| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2528. "soliddiamond" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1122 1123 (CL-DEFINE-KEYSYM 2529 "checkerboard")-1078| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2529. "checkerboard" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1123 1124 (CL-DEFINE-KEYSYM 2530 "ht")-1079| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2530. "ht" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1124 1125 (CL-DEFINE-KEYSYM 2531 "ff")-1080| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2531. "ff" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1125 1126 (CL-DEFINE-KEYSYM 2532 "cr")-1081| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2532. "cr" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1126 1127 (CL-DEFINE-KEYSYM 2533 "lf")-1082| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2533. "lf" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1127 1128 (CL-DEFINE-KEYSYM 2536 "nl")-1083| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2536. "nl" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1128 1129 (CL-DEFINE-KEYSYM 2537 "vt")-1084| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2537. "vt" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1129 1130 (CL-DEFINE-KEYSYM 2538 "lowrightcorner")-1085| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2538. "lowrightcorner" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1130 1131 (CL-DEFINE-KEYSYM 2539 "uprightcorner")-1086| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2539. "uprightcorner" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1131 1132 (CL-DEFINE-KEYSYM 2540 "upleftcorner")-1087| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2540. "upleftcorner" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1132 1133 (CL-DEFINE-KEYSYM 2541 "lowleftcorner")-1088| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2541. "lowleftcorner" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1133 1134 (CL-DEFINE-KEYSYM 2542 "crossinglines")-1089| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2542. "crossinglines" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1134 1135 (CL-DEFINE-KEYSYM 2543 "horizlinescan1")-1090| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2543. "horizlinescan1" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1135 1136 (CL-DEFINE-KEYSYM 2544 "horizlinescan3")-1091| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2544. "horizlinescan3" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1136 1137 (CL-DEFINE-KEYSYM 2545 "horizlinescan5")-1092| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2545. "horizlinescan5" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1137 1138 (CL-DEFINE-KEYSYM 2546 "horizlinescan7")-1093| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2546. "horizlinescan7" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1138 1139 (CL-DEFINE-KEYSYM 2547 "horizlinescan9")-1094| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2547. "horizlinescan9" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1139 1140 (CL-DEFINE-KEYSYM 2548 "leftt")-1095| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2548. "leftt" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1140 1141 (CL-DEFINE-KEYSYM 2549 "rightt")-1096| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2549. "rightt" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1141 1142 (CL-DEFINE-KEYSYM 2550 "bott")-1097| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2550. "bott" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1142 1143 (CL-DEFINE-KEYSYM 2551 "topt")-1098| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2551. "topt" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1143 1144 (CL-DEFINE-KEYSYM 2552 "vertbar")-1099| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2552. "vertbar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1144 1145 (CL-DEFINE-KEYSYM 2721 "emspace")-1100| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2721. "emspace" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1145 1146 (CL-DEFINE-KEYSYM 2722 "enspace")-1101| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2722. "enspace" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1146 1147 (CL-DEFINE-KEYSYM 2723 "em3space")-1102| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2723. "em3space" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1147 1148 (CL-DEFINE-KEYSYM 2724 "em4space")-1103| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2724. "em4space" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1148 1149 (CL-DEFINE-KEYSYM 2725 "digitspace")-1104| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2725. "digitspace" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1149 1150 (CL-DEFINE-KEYSYM 2726 "punctspace")-1105| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2726. "punctspace" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1150 1151 (CL-DEFINE-KEYSYM 2727 "thinspace")-1106| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2727. "thinspace" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1151 1152 (CL-DEFINE-KEYSYM 2728 "hairspace")-1107| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2728. "hairspace" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1152 1153 (CL-DEFINE-KEYSYM 2729 "emdash")-1108| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2729. "emdash" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1153 1154 (CL-DEFINE-KEYSYM 2730 "endash")-1109| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2730. "endash" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1154 1155 (CL-DEFINE-KEYSYM 2732 "signifblank")-1110| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2732. "signifblank" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1155 1156 (CL-DEFINE-KEYSYM 2734 "ellipsis")-1111| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2734. "ellipsis" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1156 1157 (CL-DEFINE-KEYSYM 2735 "doubbaselinedot")-1112| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2735. "doubbaselinedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1157 1158 (CL-DEFINE-KEYSYM 2736 "onethird")-1113| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2736. "onethird" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1158 1159 (CL-DEFINE-KEYSYM 2737 "twothirds")-1114| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2737. "twothirds" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1159 1160 (CL-DEFINE-KEYSYM 2738 "onefifth")-1115| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2738. "onefifth" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1160 1161 (CL-DEFINE-KEYSYM 2739 "twofifths")-1116| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2739. "twofifths" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1161 1162 (CL-DEFINE-KEYSYM 2740 "threefifths")-1117| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2740. "threefifths" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1162 1163 (CL-DEFINE-KEYSYM 2741 "fourfifths")-1118| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2741. "fourfifths" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1163 1164 (CL-DEFINE-KEYSYM 2742 "onesixth")-1119| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2742. "onesixth" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1164 1165 (CL-DEFINE-KEYSYM 2743 "fivesixths")-1120| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2743. "fivesixths" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1165 1166 (CL-DEFINE-KEYSYM 2744 "careof")-1121| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2744. "careof" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1166 1167 (CL-DEFINE-KEYSYM 2747 "figdash")-1122| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2747. "figdash" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1167 1168 (CL-DEFINE-KEYSYM 2748 "leftanglebracket")-1123| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2748. "leftanglebracket" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1168 1169 (CL-DEFINE-KEYSYM 2749 "decimalpoint")-1124| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2749. "decimalpoint" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1169 1170 (CL-DEFINE-KEYSYM 2750 "rightanglebracket")-1125| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2750. "rightanglebracket" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1170 1171 (CL-DEFINE-KEYSYM 2751 "marker")-1126| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2751. "marker" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1172 1172 (CL-DEFINE-KEYSYM 2755 "oneeighth")-1127| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2755. "oneeighth" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1172 1173 (CL-DEFINE-KEYSYM 2756 "threeeighths")-1128| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2756. "threeeighths" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1173 1174 (CL-DEFINE-KEYSYM 2757 "fiveeighths")-1129| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2757. "fiveeighths" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1174 1175 (CL-DEFINE-KEYSYM 2758 "seveneighths")-1130| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2758. "seveneighths" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1175 1176 (CL-DEFINE-KEYSYM 2761 "trademark")-1131| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2761. "trademark" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1176 1177 (CL-DEFINE-KEYSYM 2762 "signaturemark")-1132| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2762. "signaturemark" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1177 1178 (CL-DEFINE-KEYSYM 2763 "trademarkincircle")-1133| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2763. "trademarkincircle" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1179 1179 (CL-DEFINE-KEYSYM 2764 "leftopentriangle")-1134| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2764. "leftopentriangle" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1179 1180 (CL-DEFINE-KEYSYM 2765 "rightopentriangle")-1135| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2765. "rightopentriangle" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1180 1181 (CL-DEFINE-KEYSYM 2766 "emopencircle")-1136| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2766. "emopencircle" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1181 1182 (CL-DEFINE-KEYSYM 2767 "emopenrectangle")-1137| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2767. "emopenrectangle" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1182 1183 (CL-DEFINE-KEYSYM 2768 "leftsinglequotemark")-1138| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2768. "leftsinglequotemark" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1183 1184 (CL-DEFINE-KEYSYM 2769 "rightsinglequotemark")-1139| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2769. "rightsinglequotemark" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1184 1185 (CL-DEFINE-KEYSYM 2770 "leftdoublequotemark")-1140| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2770. "leftdoublequotemark" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1185 1186 (CL-DEFINE-KEYSYM 2771 "rightdoublequotemark")-1141| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2771. "rightdoublequotemark" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1186 1187 (CL-DEFINE-KEYSYM 2772 "prescription")-1142| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2772. "prescription" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1187 1188 (CL-DEFINE-KEYSYM 2774 "minutes")-1143| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2774. "minutes" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1188 1189 (CL-DEFINE-KEYSYM 2775 "seconds")-1144| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2775. "seconds" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1189 1190 (CL-DEFINE-KEYSYM 2777 "latincross")-1145| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2777. "latincross" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1190 1191 (CL-DEFINE-KEYSYM 2778 "hexagram")-1146| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2778. "hexagram" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1192 1192 (CL-DEFINE-KEYSYM 2779 "filledrectbullet")-1147| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2779. "filledrectbullet" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1192 1193 (CL-DEFINE-KEYSYM 2780 "filledlefttribullet")-1148| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2780. "filledlefttribullet" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1193 1194 (CL-DEFINE-KEYSYM 2781 "filledrighttribullet")-1149| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2781. "filledrighttribullet" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1194 1195 (CL-DEFINE-KEYSYM 2782 "emfilledcircle")-1150| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2782. "emfilledcircle" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1195 1196 (CL-DEFINE-KEYSYM 2783 "emfilledrect")-1151| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2783. "emfilledrect" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1196 1197 (CL-DEFINE-KEYSYM 2784 "enopencircbullet")-1152| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2784. "enopencircbullet" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1197 1198 (CL-DEFINE-KEYSYM 2785 "enopensquarebullet")-1153| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2785. "enopensquarebullet" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1198 1199 (CL-DEFINE-KEYSYM 2786 "openrectbullet")-1154| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2786. "openrectbullet" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1199 1200 (CL-DEFINE-KEYSYM 2787 "opentribulletup")-1155| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2787. "opentribulletup" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1200 1201 (CL-DEFINE-KEYSYM 2788 "opentribulletdown")-1156| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2788. "opentribulletdown" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1201 1202 (CL-DEFINE-KEYSYM 2789 "openstar")-1157| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2789. "openstar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1202 1203 (CL-DEFINE-KEYSYM 2790 "enfilledcircbullet")-1158| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2790. "enfilledcircbullet" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1203 1204 (CL-DEFINE-KEYSYM 2791 "enfilledsqbullet")-1159| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2791. "enfilledsqbullet" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1204 1205 (CL-DEFINE-KEYSYM 2792 "filledtribulletup")-1160| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2792. "filledtribulletup" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1205 1206 (CL-DEFINE-KEYSYM 2793 "filledtribulletdown")-1161| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2793. "filledtribulletdown" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1206 1207 (CL-DEFINE-KEYSYM 2794 "leftpointer")-1162| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2794. "leftpointer" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1207 1208 (CL-DEFINE-KEYSYM 2795 "rightpointer")-1163| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2795. "rightpointer" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1208 1209 (CL-DEFINE-KEYSYM 2796 "club")-1164| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2796. "club" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1209 1210 (CL-DEFINE-KEYSYM 2797 "diamond")-1165| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2797. "diamond" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1210 1211 (CL-DEFINE-KEYSYM 2798 "heart")-1166| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2798. "heart" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1211 1212 (CL-DEFINE-KEYSYM 2800 "maltesecross")-1167| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2800. "maltesecross" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1212 1213 (CL-DEFINE-KEYSYM 2801 "dagger")-1168| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2801. "dagger" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1213 1214 (CL-DEFINE-KEYSYM 2802 "doubledagger")-1169| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2802. "doubledagger" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1214 1215 (CL-DEFINE-KEYSYM 2803 "checkmark")-1170| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2803. "checkmark" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1215 1216 (CL-DEFINE-KEYSYM 2804 "ballotcross")-1171| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2804. "ballotcross" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1216 1217 (CL-DEFINE-KEYSYM 2805 "musicalsharp")-1172| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2805. "musicalsharp" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1217 1218 (CL-DEFINE-KEYSYM 2806 "musicalflat")-1173| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2806. "musicalflat" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1218 1219 (CL-DEFINE-KEYSYM 2807 "malesymbol")-1174| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2807. "malesymbol" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1219 1220 (CL-DEFINE-KEYSYM 2808 "femalesymbol")-1175| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2808. "femalesymbol" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1220 1221 (CL-DEFINE-KEYSYM 2809 "telephone")-1176| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2809. "telephone" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1221 1222 (CL-DEFINE-KEYSYM 2810 "telephonerecorder")-1177| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2810. "telephonerecorder" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1222 1223 (CL-DEFINE-KEYSYM 2811 "phonographcopyright")-1178| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2811. "phonographcopyright" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1223 1224 (CL-DEFINE-KEYSYM 2812 "caret")-1179| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2812. "caret" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1224 1225 (CL-DEFINE-KEYSYM 2813 "singlelowquotemark")-1180| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2813. "singlelowquotemark" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1225 1226 (CL-DEFINE-KEYSYM 2814 "doublelowquotemark")-1181| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2814. "doublelowquotemark" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1226 1227 (CL-DEFINE-KEYSYM 2815 "cursor")-1182| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2815. "cursor" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1228 1228 (CL-DEFINE-KEYSYM 2979 "leftcaret")-1183| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2979. "leftcaret" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1228 1229 (CL-DEFINE-KEYSYM 2982 "rightcaret")-1184| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2982. "rightcaret" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1229 1230 (CL-DEFINE-KEYSYM 2984 "downcaret")-1185| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2984. "downcaret" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1230 1231 (CL-DEFINE-KEYSYM 2985 "upcaret")-1186| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (2985. "upcaret" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1231 1232 (CL-DEFINE-KEYSYM 3008 "overbar")-1187| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3008. "overbar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1232 1233 (CL-DEFINE-KEYSYM 3010 "downtack")-1188| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3010. "downtack" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1233 1234 (CL-DEFINE-KEYSYM 3011 "upshoe")-1189| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3011. "upshoe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1234 1235 (CL-DEFINE-KEYSYM 3012 "downstile")-1190| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3012. "downstile" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1235 1236 (CL-DEFINE-KEYSYM 3014 "underbar")-1191| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3014. "underbar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1236 1237 (CL-DEFINE-KEYSYM 3018 "jot")-1192| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3018. "jot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1237 1238 (CL-DEFINE-KEYSYM 3020 "quad")-1193| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3020. "quad" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1238 1239 (CL-DEFINE-KEYSYM 3022 "uptack")-1194| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3022. "uptack" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1239 1240 (CL-DEFINE-KEYSYM 3023 "circle")-1195| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3023. "circle" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1240 1241 (CL-DEFINE-KEYSYM 3027 "upstile")-1196| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3027. "upstile" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1241 1242 (CL-DEFINE-KEYSYM 3030 "downshoe")-1197| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3030. "downshoe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1242 1243 (CL-DEFINE-KEYSYM 3032 "rightshoe")-1198| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3032. "rightshoe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1243 1244 (CL-DEFINE-KEYSYM 3034 "leftshoe")-1199| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3034. "leftshoe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1244 1245 (CL-DEFINE-KEYSYM 3036 "lefttack")-1200| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3036. "lefttack" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1245 1246 (CL-DEFINE-KEYSYM 3068 "righttack")-1201| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3068. "righttack" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1246 1247 (CL-DEFINE-KEYSYM 3295 "hebrew_doublelowline")-1202| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3295. "hebrew_doublelowline" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1247 1248 (CL-DEFINE-KEYSYM 3296 "hebrew_aleph")-1203| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3296. "hebrew_aleph" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1248 1249 (CL-DEFINE-KEYSYM 3297 "hebrew_bet")-1204| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3297. "hebrew_bet" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1249 1250 (CL-DEFINE-KEYSYM 3297 "hebrew_beth")-1205| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3297. "hebrew_beth" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1250 1251 (CL-DEFINE-KEYSYM 3298 "hebrew_gimel")-1206| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3298. "hebrew_gimel" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1251 1252 (CL-DEFINE-KEYSYM 3298 "hebrew_gimmel")-1207| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3298. "hebrew_gimmel" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1252 1253 (CL-DEFINE-KEYSYM 3299 "hebrew_dalet")-1208| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3299. "hebrew_dalet" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1253 1254 (CL-DEFINE-KEYSYM 3299 "hebrew_daleth")-1209| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3299. "hebrew_daleth" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1254 1255 (CL-DEFINE-KEYSYM 3300 "hebrew_he")-1210| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3300. "hebrew_he" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1255 1256 (CL-DEFINE-KEYSYM 3301 "hebrew_waw")-1211| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3301. "hebrew_waw" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1256 1257 (CL-DEFINE-KEYSYM 3302 "hebrew_zain")-1212| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3302. "hebrew_zain" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1257 1258 (CL-DEFINE-KEYSYM 3302 "hebrew_zayin")-1213| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3302. "hebrew_zayin" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1258 1259 (CL-DEFINE-KEYSYM 3303 "hebrew_chet")-1214| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3303. "hebrew_chet" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1259 1260 (CL-DEFINE-KEYSYM 3303 "hebrew_het")-1215| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3303. "hebrew_het" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1260 1261 (CL-DEFINE-KEYSYM 3304 "hebrew_tet")-1216| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3304. "hebrew_tet" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1261 1262 (CL-DEFINE-KEYSYM 3304 "hebrew_teth")-1217| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3304. "hebrew_teth" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1262 1263 (CL-DEFINE-KEYSYM 3305 "hebrew_yod")-1218| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3305. "hebrew_yod" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1263 1264 (CL-DEFINE-KEYSYM 3306 "hebrew_finalkaph")-1219| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3306. "hebrew_finalkaph" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1264 1265 (CL-DEFINE-KEYSYM 3307 "hebrew_kaph")-1220| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3307. "hebrew_kaph" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1265 1266 (CL-DEFINE-KEYSYM 3308 "hebrew_lamed")-1221| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3308. "hebrew_lamed" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1266 1267 (CL-DEFINE-KEYSYM 3309 "hebrew_finalmem")-1222| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3309. "hebrew_finalmem" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1267 1268 (CL-DEFINE-KEYSYM 3310 "hebrew_mem")-1223| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3310. "hebrew_mem" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1268 1269 (CL-DEFINE-KEYSYM 3311 "hebrew_finalnun")-1224| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3311. "hebrew_finalnun" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1269 1270 (CL-DEFINE-KEYSYM 3312 "hebrew_nun")-1225| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3312. "hebrew_nun" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1270 1271 (CL-DEFINE-KEYSYM 3313 "hebrew_samech")-1226| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3313. "hebrew_samech" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1271 1272 (CL-DEFINE-KEYSYM 3313 "hebrew_samekh")-1227| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3313. "hebrew_samekh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1272 1273 (CL-DEFINE-KEYSYM 3314 "hebrew_ayin")-1228| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3314. "hebrew_ayin" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1273 1274 (CL-DEFINE-KEYSYM 3315 "hebrew_finalpe")-1229| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3315. "hebrew_finalpe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1274 1275 (CL-DEFINE-KEYSYM 3316 "hebrew_pe")-1230| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3316. "hebrew_pe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1275 1276 (CL-DEFINE-KEYSYM 3317 "hebrew_finalzade")-1231| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3317. "hebrew_finalzade" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1276 1277 (CL-DEFINE-KEYSYM 3317 "hebrew_finalzadi")-1232| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3317. "hebrew_finalzadi" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1277 1278 (CL-DEFINE-KEYSYM 3318 "hebrew_zade")-1233| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3318. "hebrew_zade" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1278 1279 (CL-DEFINE-KEYSYM 3318 "hebrew_zadi")-1234| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3318. "hebrew_zadi" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1279 1280 (CL-DEFINE-KEYSYM 3319 "hebrew_qoph")-1235| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3319. "hebrew_qoph" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1280 1281 (CL-DEFINE-KEYSYM 3319 "hebrew_kuf")-1236| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3319. "hebrew_kuf" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1281 1282 (CL-DEFINE-KEYSYM 3320 "hebrew_resh")-1237| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3320. "hebrew_resh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1282 1283 (CL-DEFINE-KEYSYM 3321 "hebrew_shin")-1238| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3321. "hebrew_shin" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1283 1284 (CL-DEFINE-KEYSYM 3322 "hebrew_taw")-1239| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3322. "hebrew_taw" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1284 1285 (CL-DEFINE-KEYSYM 3322 "hebrew_taf")-1240| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3322. "hebrew_taf" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1285 1286 (CL-DEFINE-KEYSYM 65406 "Hebrew_switch")-1241| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65406. "Hebrew_switch" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1286 1287 (CL-DEFINE-KEYSYM 3489 "Thai_kokai")-1242| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3489. "Thai_kokai" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1287 1288 (CL-DEFINE-KEYSYM 3490 "Thai_khokhai")-1243| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3490. "Thai_khokhai" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1288 1289 (CL-DEFINE-KEYSYM 3491 "Thai_khokhuat")-1244| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3491. "Thai_khokhuat" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1289 1290 (CL-DEFINE-KEYSYM 3492 "Thai_khokhwai")-1245| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3492. "Thai_khokhwai" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1290 1291 (CL-DEFINE-KEYSYM 3493 "Thai_khokhon")-1246| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3493. "Thai_khokhon" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1291 1292 (CL-DEFINE-KEYSYM 3494 "Thai_khorakhang")-1247| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3494. "Thai_khorakhang" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1292 1293 (CL-DEFINE-KEYSYM 3495 "Thai_ngongu")-1248| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3495. "Thai_ngongu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1293 1294 (CL-DEFINE-KEYSYM 3496 "Thai_chochan")-1249| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3496. "Thai_chochan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1294 1295 (CL-DEFINE-KEYSYM 3497 "Thai_choching")-1250| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3497. "Thai_choching" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1295 1296 (CL-DEFINE-KEYSYM 3498 "Thai_chochang")-1251| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3498. "Thai_chochang" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1296 1297 (CL-DEFINE-KEYSYM 3499 "Thai_soso")-1252| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3499. "Thai_soso" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1297 1298 (CL-DEFINE-KEYSYM 3500 "Thai_chochoe")-1253| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3500. "Thai_chochoe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1298 1299 (CL-DEFINE-KEYSYM 3501 "Thai_yoying")-1254| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3501. "Thai_yoying" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1299 1300 (CL-DEFINE-KEYSYM 3502 "Thai_dochada")-1255| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3502. "Thai_dochada" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1300 1301 (CL-DEFINE-KEYSYM 3503 "Thai_topatak")-1256| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3503. "Thai_topatak" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1301 1302 (CL-DEFINE-KEYSYM 3504 "Thai_thothan")-1257| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3504. "Thai_thothan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1302 1303 (CL-DEFINE-KEYSYM 3505 "Thai_thonangmontho")-1258| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3505. "Thai_thonangmontho" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1303 1304 (CL-DEFINE-KEYSYM 3506 "Thai_thophuthao")-1259| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3506. "Thai_thophuthao" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1304 1305 (CL-DEFINE-KEYSYM 3507 "Thai_nonen")-1260| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3507. "Thai_nonen" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1305 1306 (CL-DEFINE-KEYSYM 3508 "Thai_dodek")-1261| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3508. "Thai_dodek" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1306 1307 (CL-DEFINE-KEYSYM 3509 "Thai_totao")-1262| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3509. "Thai_totao" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1307 1308 (CL-DEFINE-KEYSYM 3510 "Thai_thothung")-1263| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3510. "Thai_thothung" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1308 1309 (CL-DEFINE-KEYSYM 3511 "Thai_thothahan")-1264| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3511. "Thai_thothahan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1309 1310 (CL-DEFINE-KEYSYM 3512 "Thai_thothong")-1265| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3512. "Thai_thothong" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1310 1311 (CL-DEFINE-KEYSYM 3513 "Thai_nonu")-1266| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3513. "Thai_nonu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1311 1312 (CL-DEFINE-KEYSYM 3514 "Thai_bobaimai")-1267| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3514. "Thai_bobaimai" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1312 1313 (CL-DEFINE-KEYSYM 3515 "Thai_popla")-1268| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3515. "Thai_popla" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1313 1314 (CL-DEFINE-KEYSYM 3516 "Thai_phophung")-1269| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3516. "Thai_phophung" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1314 1315 (CL-DEFINE-KEYSYM 3517 "Thai_fofa")-1270| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3517. "Thai_fofa" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1315 1316 (CL-DEFINE-KEYSYM 3518 "Thai_phophan")-1271| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3518. "Thai_phophan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1316 1317 (CL-DEFINE-KEYSYM 3519 "Thai_fofan")-1272| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3519. "Thai_fofan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1317 1318 (CL-DEFINE-KEYSYM 3520 "Thai_phosamphao")-1273| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3520. "Thai_phosamphao" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1318 1319 (CL-DEFINE-KEYSYM 3521 "Thai_moma")-1274| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3521. "Thai_moma" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1319 1320 (CL-DEFINE-KEYSYM 3522 "Thai_yoyak")-1275| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3522. "Thai_yoyak" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1320 1321 (CL-DEFINE-KEYSYM 3523 "Thai_rorua")-1276| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3523. "Thai_rorua" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1321 1322 (CL-DEFINE-KEYSYM 3524 "Thai_ru")-1277| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3524. "Thai_ru" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1322 1323 (CL-DEFINE-KEYSYM 3525 "Thai_loling")-1278| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3525. "Thai_loling" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1323 1324 (CL-DEFINE-KEYSYM 3526 "Thai_lu")-1279| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3526. "Thai_lu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1324 1325 (CL-DEFINE-KEYSYM 3527 "Thai_wowaen")-1280| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3527. "Thai_wowaen" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1325 1326 (CL-DEFINE-KEYSYM 3528 "Thai_sosala")-1281| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3528. "Thai_sosala" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1326 1327 (CL-DEFINE-KEYSYM 3529 "Thai_sorusi")-1282| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3529. "Thai_sorusi" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1327 1328 (CL-DEFINE-KEYSYM 3530 "Thai_sosua")-1283| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3530. "Thai_sosua" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1328 1329 (CL-DEFINE-KEYSYM 3531 "Thai_hohip")-1284| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3531. "Thai_hohip" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1329 1330 (CL-DEFINE-KEYSYM 3532 "Thai_lochula")-1285| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3532. "Thai_lochula" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1330 1331 (CL-DEFINE-KEYSYM 3533 "Thai_oang")-1286| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3533. "Thai_oang" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1331 1332 (CL-DEFINE-KEYSYM 3534 "Thai_honokhuk")-1287| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3534. "Thai_honokhuk" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1332 1333 (CL-DEFINE-KEYSYM 3535 "Thai_paiyannoi")-1288| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3535. "Thai_paiyannoi" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1333 1334 (CL-DEFINE-KEYSYM 3536 "Thai_saraa")-1289| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3536. "Thai_saraa" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1334 1335 (CL-DEFINE-KEYSYM 3537 "Thai_maihanakat")-1290| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3537. "Thai_maihanakat" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1335 1336 (CL-DEFINE-KEYSYM 3538 "Thai_saraaa")-1291| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3538. "Thai_saraaa" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1336 1337 (CL-DEFINE-KEYSYM 3539 "Thai_saraam")-1292| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3539. "Thai_saraam" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1337 1338 (CL-DEFINE-KEYSYM 3540 "Thai_sarai")-1293| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3540. "Thai_sarai" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1338 1339 (CL-DEFINE-KEYSYM 3541 "Thai_saraii")-1294| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3541. "Thai_saraii" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1339 1340 (CL-DEFINE-KEYSYM 3542 "Thai_saraue")-1295| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3542. "Thai_saraue" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1340 1341 (CL-DEFINE-KEYSYM 3543 "Thai_sarauee")-1296| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3543. "Thai_sarauee" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1341 1342 (CL-DEFINE-KEYSYM 3544 "Thai_sarau")-1297| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3544. "Thai_sarau" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1342 1343 (CL-DEFINE-KEYSYM 3545 "Thai_sarauu")-1298| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3545. "Thai_sarauu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1343 1344 (CL-DEFINE-KEYSYM 3546 "Thai_phinthu")-1299| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3546. "Thai_phinthu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1344 1345 (CL-DEFINE-KEYSYM 3550 "Thai_maihanakat_maitho")-1300| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3550. "Thai_maihanakat_maitho" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1346 1346 (CL-DEFINE-KEYSYM 3551 "Thai_baht")-1301| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3551. "Thai_baht" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1346 1347 (CL-DEFINE-KEYSYM 3552 "Thai_sarae")-1302| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3552. "Thai_sarae" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1347 1348 (CL-DEFINE-KEYSYM 3553 "Thai_saraae")-1303| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3553. "Thai_saraae" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1348 1349 (CL-DEFINE-KEYSYM 3554 "Thai_sarao")-1304| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3554. "Thai_sarao" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1349 1350 (CL-DEFINE-KEYSYM 3555 "Thai_saraaimaimuan")-1305| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3555. "Thai_saraaimaimuan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1350 1351 (CL-DEFINE-KEYSYM 3556 "Thai_saraaimaimalai")-1306| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3556. "Thai_saraaimaimalai" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1351 1352 (CL-DEFINE-KEYSYM 3557 "Thai_lakkhangyao")-1307| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3557. "Thai_lakkhangyao" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1352 1353 (CL-DEFINE-KEYSYM 3558 "Thai_maiyamok")-1308| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3558. "Thai_maiyamok" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1353 1354 (CL-DEFINE-KEYSYM 3559 "Thai_maitaikhu")-1309| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3559. "Thai_maitaikhu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1354 1355 (CL-DEFINE-KEYSYM 3560 "Thai_maiek")-1310| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3560. "Thai_maiek" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1355 1356 (CL-DEFINE-KEYSYM 3561 "Thai_maitho")-1311| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3561. "Thai_maitho" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1356 1357 (CL-DEFINE-KEYSYM 3562 "Thai_maitri")-1312| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3562. "Thai_maitri" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1357 1358 (CL-DEFINE-KEYSYM 3563 "Thai_maichattawa")-1313| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3563. "Thai_maichattawa" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1358 1359 (CL-DEFINE-KEYSYM 3564 "Thai_thanthakhat")-1314| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3564. "Thai_thanthakhat" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1359 1360 (CL-DEFINE-KEYSYM 3565 "Thai_nikhahit")-1315| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3565. "Thai_nikhahit" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1360 1361 (CL-DEFINE-KEYSYM 3568 "Thai_leksun")-1316| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3568. "Thai_leksun" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1361 1362 (CL-DEFINE-KEYSYM 3569 "Thai_leknung")-1317| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3569. "Thai_leknung" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1362 1363 (CL-DEFINE-KEYSYM 3570 "Thai_leksong")-1318| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3570. "Thai_leksong" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1363 1364 (CL-DEFINE-KEYSYM 3571 "Thai_leksam")-1319| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3571. "Thai_leksam" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1364 1365 (CL-DEFINE-KEYSYM 3572 "Thai_leksi")-1320| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3572. "Thai_leksi" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1365 1366 (CL-DEFINE-KEYSYM 3573 "Thai_lekha")-1321| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3573. "Thai_lekha" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1366 1367 (CL-DEFINE-KEYSYM 3574 "Thai_lekhok")-1322| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3574. "Thai_lekhok" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1367 1368 (CL-DEFINE-KEYSYM 3575 "Thai_lekchet")-1323| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3575. "Thai_lekchet" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1368 1369 (CL-DEFINE-KEYSYM 3576 "Thai_lekpaet")-1324| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3576. "Thai_lekpaet" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1369 1370 (CL-DEFINE-KEYSYM 3577 "Thai_lekkao")-1325| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3577. "Thai_lekkao" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1370 1371 (CL-DEFINE-KEYSYM 65329 "Hangul")-1326| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65329. "Hangul" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1371 1372 (CL-DEFINE-KEYSYM 65330 "Hangul_Start")-1327| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65330. "Hangul_Start" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1372 1373 (CL-DEFINE-KEYSYM 65331 "Hangul_End")-1328| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65331. "Hangul_End" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1373 1374 (CL-DEFINE-KEYSYM 65332 "Hangul_Hanja")-1329| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65332. "Hangul_Hanja" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1374 1375 (CL-DEFINE-KEYSYM 65333 "Hangul_Jamo")-1330| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65333. "Hangul_Jamo" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1375 1376 (CL-DEFINE-KEYSYM 65334 "Hangul_Romaja")-1331| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65334. "Hangul_Romaja" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1376 1377 (CL-DEFINE-KEYSYM 65335 "Hangul_Codeinput")-1332| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65335. "Hangul_Codeinput" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1377 1378 (CL-DEFINE-KEYSYM 65336 "Hangul_Jeonja")-1333| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65336. "Hangul_Jeonja" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1378 1379 (CL-DEFINE-KEYSYM 65337 "Hangul_Banja")-1334| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65337. "Hangul_Banja" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1379 1380 (CL-DEFINE-KEYSYM 65338 "Hangul_PreHanja")-1335| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65338. "Hangul_PreHanja" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1380 1381 (CL-DEFINE-KEYSYM 65339 "Hangul_PostHanja")-1336| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65339. "Hangul_PostHanja" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1381 1382 (CL-DEFINE-KEYSYM 65340 "Hangul_SingleCandidate")-1337| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65340. "Hangul_SingleCandidate" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1382 1383 (CL-DEFINE-KEYSYM 65341 "Hangul_MultipleCandidate")-1338| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65341. "Hangul_MultipleCandidate" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1383 1384 (CL-DEFINE-KEYSYM 65342 "Hangul_PreviousCandidate")-1339| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65342. "Hangul_PreviousCandidate" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1384 1385 (CL-DEFINE-KEYSYM 65343 "Hangul_Special")-1340| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65343. "Hangul_Special" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1385 1386 (CL-DEFINE-KEYSYM 65406 "Hangul_switch")-1341| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (65406. "Hangul_switch" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1386 1387 (CL-DEFINE-KEYSYM 3745 "Hangul_Kiyeog")-1342| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3745. "Hangul_Kiyeog" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1388 1388 (CL-DEFINE-KEYSYM 3746 "Hangul_SsangKiyeog")-1343| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3746. "Hangul_SsangKiyeog" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1389 1389 (CL-DEFINE-KEYSYM 3747 "Hangul_KiyeogSios")-1344| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3747. "Hangul_KiyeogSios" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1390 1390 (CL-DEFINE-KEYSYM 3748 "Hangul_Nieun")-1345| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3748. "Hangul_Nieun" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1391 1391 (CL-DEFINE-KEYSYM 3749 "Hangul_NieunJieuj")-1346| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3749. "Hangul_NieunJieuj" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1392 1392 (CL-DEFINE-KEYSYM 3750 "Hangul_NieunHieuh")-1347| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3750. "Hangul_NieunHieuh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1393 1393 (CL-DEFINE-KEYSYM 3751 "Hangul_Dikeud")-1348| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3751. "Hangul_Dikeud" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1394 1394 (CL-DEFINE-KEYSYM 3752 "Hangul_SsangDikeud")-1349| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3752. "Hangul_SsangDikeud" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1395 1395 (CL-DEFINE-KEYSYM 3753 "Hangul_Rieul")-1350| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3753. "Hangul_Rieul" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1396 1396 (CL-DEFINE-KEYSYM 3754 "Hangul_RieulKiyeog")-1351| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3754. "Hangul_RieulKiyeog" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1397 1397 (CL-DEFINE-KEYSYM 3755 "Hangul_RieulMieum")-1352| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3755. "Hangul_RieulMieum" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1398 1398 (CL-DEFINE-KEYSYM 3756 "Hangul_RieulPieub")-1353| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3756. "Hangul_RieulPieub" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1399 1399 (CL-DEFINE-KEYSYM 3757 "Hangul_RieulSios")-1354| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3757. "Hangul_RieulSios" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1400 1400 (CL-DEFINE-KEYSYM 3758 "Hangul_RieulTieut")-1355| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3758. "Hangul_RieulTieut" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1401 1401 (CL-DEFINE-KEYSYM 3759 "Hangul_RieulPhieuf")-1356| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3759. "Hangul_RieulPhieuf" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1402 1402 (CL-DEFINE-KEYSYM 3760 "Hangul_RieulHieuh")-1357| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3760. "Hangul_RieulHieuh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1403 1403 (CL-DEFINE-KEYSYM 3761 "Hangul_Mieum")-1358| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3761. "Hangul_Mieum" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1404 1404 (CL-DEFINE-KEYSYM 3762 "Hangul_Pieub")-1359| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3762. "Hangul_Pieub" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1405 1405 (CL-DEFINE-KEYSYM 3763 "Hangul_SsangPieub")-1360| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3763. "Hangul_SsangPieub" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1406 1406 (CL-DEFINE-KEYSYM 3764 "Hangul_PieubSios")-1361| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3764. "Hangul_PieubSios" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1407 1407 (CL-DEFINE-KEYSYM 3765 "Hangul_Sios")-1362| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3765. "Hangul_Sios" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1408 1408 (CL-DEFINE-KEYSYM 3766 "Hangul_SsangSios")-1363| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3766. "Hangul_SsangSios" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1409 1409 (CL-DEFINE-KEYSYM 3767 "Hangul_Ieung")-1364| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3767. "Hangul_Ieung" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1410 1410 (CL-DEFINE-KEYSYM 3768 "Hangul_Jieuj")-1365| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3768. "Hangul_Jieuj" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1411 1411 (CL-DEFINE-KEYSYM 3769 "Hangul_SsangJieuj")-1366| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3769. "Hangul_SsangJieuj" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1412 1412 (CL-DEFINE-KEYSYM 3770 "Hangul_Cieuc")-1367| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3770. "Hangul_Cieuc" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1413 1413 (CL-DEFINE-KEYSYM 3771 "Hangul_Khieuq")-1368| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3771. "Hangul_Khieuq" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1414 1414 (CL-DEFINE-KEYSYM 3772 "Hangul_Tieut")-1369| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3772. "Hangul_Tieut" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1415 1415 (CL-DEFINE-KEYSYM 3773 "Hangul_Phieuf")-1370| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3773. "Hangul_Phieuf" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1416 1416 (CL-DEFINE-KEYSYM 3774 "Hangul_Hieuh")-1371| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3774. "Hangul_Hieuh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1417 1417 (CL-DEFINE-KEYSYM 3775 "Hangul_A")-1372| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3775. "Hangul_A" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1418 1418 (CL-DEFINE-KEYSYM 3776 "Hangul_AE")-1373| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3776. "Hangul_AE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1419 1419 (CL-DEFINE-KEYSYM 3777 "Hangul_YA")-1374| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3777. "Hangul_YA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1420 1420 (CL-DEFINE-KEYSYM 3778 "Hangul_YAE")-1375| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3778. "Hangul_YAE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1421 1421 (CL-DEFINE-KEYSYM 3779 "Hangul_EO")-1376| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3779. "Hangul_EO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1422 1422 (CL-DEFINE-KEYSYM 3780 "Hangul_E")-1377| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3780. "Hangul_E" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1423 1423 (CL-DEFINE-KEYSYM 3781 "Hangul_YEO")-1378| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3781. "Hangul_YEO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1424 1424 (CL-DEFINE-KEYSYM 3782 "Hangul_YE")-1379| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3782. "Hangul_YE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1425 1425 (CL-DEFINE-KEYSYM 3783 "Hangul_O")-1380| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3783. "Hangul_O" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1426 1426 (CL-DEFINE-KEYSYM 3784 "Hangul_WA")-1381| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3784. "Hangul_WA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1427 1427 (CL-DEFINE-KEYSYM 3785 "Hangul_WAE")-1382| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3785. "Hangul_WAE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1428 1428 (CL-DEFINE-KEYSYM 3786 "Hangul_OE")-1383| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3786. "Hangul_OE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1429 1429 (CL-DEFINE-KEYSYM 3787 "Hangul_YO")-1384| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3787. "Hangul_YO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1430 1430 (CL-DEFINE-KEYSYM 3788 "Hangul_U")-1385| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3788. "Hangul_U" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1431 1431 (CL-DEFINE-KEYSYM 3789 "Hangul_WEO")-1386| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3789. "Hangul_WEO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1432 1432 (CL-DEFINE-KEYSYM 3790 "Hangul_WE")-1387| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3790. "Hangul_WE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1433 1433 (CL-DEFINE-KEYSYM 3791 "Hangul_WI")-1388| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3791. "Hangul_WI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1434 1434 (CL-DEFINE-KEYSYM 3792 "Hangul_YU")-1389| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3792. "Hangul_YU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1435 1435 (CL-DEFINE-KEYSYM 3793 "Hangul_EU")-1390| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3793. "Hangul_EU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1436 1436 (CL-DEFINE-KEYSYM 3794 "Hangul_YI")-1391| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3794. "Hangul_YI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1437 1437 (CL-DEFINE-KEYSYM 3795 "Hangul_I")-1392| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3795. "Hangul_I" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1438 1438 (CL-DEFINE-KEYSYM 3796 "Hangul_J_Kiyeog")-1393| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3796. "Hangul_J_Kiyeog" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1439 1439 (CL-DEFINE-KEYSYM 3797 "Hangul_J_SsangKiyeog")-1394| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3797. "Hangul_J_SsangKiyeog" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1440 1440 (CL-DEFINE-KEYSYM 3798 "Hangul_J_KiyeogSios")-1395| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3798. "Hangul_J_KiyeogSios" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1441 1441 (CL-DEFINE-KEYSYM 3799 "Hangul_J_Nieun")-1396| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3799. "Hangul_J_Nieun" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1442 1442 (CL-DEFINE-KEYSYM 3800 "Hangul_J_NieunJieuj")-1397| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3800. "Hangul_J_NieunJieuj" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1443 1443 (CL-DEFINE-KEYSYM 3801 "Hangul_J_NieunHieuh")-1398| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3801. "Hangul_J_NieunHieuh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1444 1444 (CL-DEFINE-KEYSYM 3802 "Hangul_J_Dikeud")-1399| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3802. "Hangul_J_Dikeud" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1445 1445 (CL-DEFINE-KEYSYM 3803 "Hangul_J_Rieul")-1400| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3803. "Hangul_J_Rieul" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1446 1446 (CL-DEFINE-KEYSYM 3804 "Hangul_J_RieulKiyeog")-1401| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3804. "Hangul_J_RieulKiyeog" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1447 1447 (CL-DEFINE-KEYSYM 3805 "Hangul_J_RieulMieum")-1402| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3805. "Hangul_J_RieulMieum" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1448 1448 (CL-DEFINE-KEYSYM 3806 "Hangul_J_RieulPieub")-1403| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3806. "Hangul_J_RieulPieub" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1449 1449 (CL-DEFINE-KEYSYM 3807 "Hangul_J_RieulSios")-1404| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3807. "Hangul_J_RieulSios" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1450 1450 (CL-DEFINE-KEYSYM 3808 "Hangul_J_RieulTieut")-1405| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3808. "Hangul_J_RieulTieut" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1451 1451 (CL-DEFINE-KEYSYM 3809 "Hangul_J_RieulPhieuf")-1406| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3809. "Hangul_J_RieulPhieuf" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1452 1452 (CL-DEFINE-KEYSYM 3810 "Hangul_J_RieulHieuh")-1407| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3810. "Hangul_J_RieulHieuh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1453 1453 (CL-DEFINE-KEYSYM 3811 "Hangul_J_Mieum")-1408| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3811. "Hangul_J_Mieum" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1454 1454 (CL-DEFINE-KEYSYM 3812 "Hangul_J_Pieub")-1409| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3812. "Hangul_J_Pieub" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1455 1455 (CL-DEFINE-KEYSYM 3813 "Hangul_J_PieubSios")-1410| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3813. "Hangul_J_PieubSios" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1456 1456 (CL-DEFINE-KEYSYM 3814 "Hangul_J_Sios")-1411| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3814. "Hangul_J_Sios" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1457 1457 (CL-DEFINE-KEYSYM 3815 "Hangul_J_SsangSios")-1412| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3815. "Hangul_J_SsangSios" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1458 1458 (CL-DEFINE-KEYSYM 3816 "Hangul_J_Ieung")-1413| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3816. "Hangul_J_Ieung" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1459 1459 (CL-DEFINE-KEYSYM 3817 "Hangul_J_Jieuj")-1414| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3817. "Hangul_J_Jieuj" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1460 1460 (CL-DEFINE-KEYSYM 3818 "Hangul_J_Cieuc")-1415| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3818. "Hangul_J_Cieuc" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1461 1461 (CL-DEFINE-KEYSYM 3819 "Hangul_J_Khieuq")-1416| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3819. "Hangul_J_Khieuq" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1462 1462 (CL-DEFINE-KEYSYM 3820 "Hangul_J_Tieut")-1417| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3820. "Hangul_J_Tieut" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1463 1463 (CL-DEFINE-KEYSYM 3821 "Hangul_J_Phieuf")-1418| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3821. "Hangul_J_Phieuf" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1464 1464 (CL-DEFINE-KEYSYM 3822 "Hangul_J_Hieuh")-1419| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3822. "Hangul_J_Hieuh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1465 1465 (CL-DEFINE-KEYSYM 3823 "Hangul_RieulYeorinHieuh")-1420| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3823. "Hangul_RieulYeorinHieuh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1466 1466 (CL-DEFINE-KEYSYM 3824 "Hangul_SunkyeongeumMieum")-1421| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3824. "Hangul_SunkyeongeumMieum" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1467 1467 (CL-DEFINE-KEYSYM 3825 "Hangul_SunkyeongeumPieub")-1422| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3825. "Hangul_SunkyeongeumPieub" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1468 1468 (CL-DEFINE-KEYSYM 3826 "Hangul_PanSios")-1423| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3826. "Hangul_PanSios" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1469 1469 (CL-DEFINE-KEYSYM 3827 "Hangul_KkogjiDalrinIeung")-1424| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3827. "Hangul_KkogjiDalrinIeung" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1470 1470 (CL-DEFINE-KEYSYM 3828 "Hangul_SunkyeongeumPhieuf")-1425| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3828. "Hangul_SunkyeongeumPhieuf" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1471 1471 (CL-DEFINE-KEYSYM 3829 "Hangul_YeorinHieuh")-1426| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3829. "Hangul_YeorinHieuh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1472 1472 (CL-DEFINE-KEYSYM 3830 "Hangul_AraeA")-1427| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3830. "Hangul_AraeA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1473 1473 (CL-DEFINE-KEYSYM 3831 "Hangul_AraeAE")-1428| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3831. "Hangul_AraeAE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1474 1474 (CL-DEFINE-KEYSYM 3832 "Hangul_J_PanSios")-1429| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3832. "Hangul_J_PanSios" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1475 1475 (CL-DEFINE-KEYSYM 3833 "Hangul_J_KkogjiDalrinIeung")-1430| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3833. "Hangul_J_KkogjiDalrinIeung" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1476 1476 (CL-DEFINE-KEYSYM 3834 "Hangul_J_YeorinHieuh")-1431| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3834. "Hangul_J_YeorinHieuh" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1477 1477 (CL-DEFINE-KEYSYM 3839 "Korean_Won")-1432| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (3839. "Korean_Won" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1477 1478 (CL-DEFINE-KEYSYM 16778631 "Armenian_ligature_ew")-1433| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778631. "Armenian_ligature_ew" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1478 1479 (CL-DEFINE-KEYSYM 16778633 "Armenian_full_stop")-1434| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778633. "Armenian_full_stop" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1479 1480 (CL-DEFINE-KEYSYM 16778633 "Armenian_verjaket")-1435| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778633. "Armenian_verjaket" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1480 1481 (CL-DEFINE-KEYSYM 16778589 "Armenian_separation_mark")-1436| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778589. "Armenian_separation_mark" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1481 1482 (CL-DEFINE-KEYSYM 16778589 "Armenian_but")-1437| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778589. "Armenian_but" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1482 1483 (CL-DEFINE-KEYSYM 16778634 "Armenian_hyphen")-1438| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778634. "Armenian_hyphen" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1483 1484 (CL-DEFINE-KEYSYM 16778634 "Armenian_yentamna")-1439| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778634. "Armenian_yentamna" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1484 1485 (CL-DEFINE-KEYSYM 16778588 "Armenian_exclam")-1440| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778588. "Armenian_exclam" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1485 1486 (CL-DEFINE-KEYSYM 16778588 "Armenian_amanak")-1441| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778588. "Armenian_amanak" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1486 1487 (CL-DEFINE-KEYSYM 16778587 "Armenian_accent")-1442| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778587. "Armenian_accent" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1487 1488 (CL-DEFINE-KEYSYM 16778587 "Armenian_shesht")-1443| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778587. "Armenian_shesht" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1488 1489 (CL-DEFINE-KEYSYM 16778590 "Armenian_question")-1444| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778590. "Armenian_question" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1489 1490 (CL-DEFINE-KEYSYM 16778590 "Armenian_paruyk")-1445| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778590. "Armenian_paruyk" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1490 1491 (CL-DEFINE-KEYSYM 16778545 "Armenian_AYB")-1446| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778545. "Armenian_AYB" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1491 1492 (CL-DEFINE-KEYSYM 16778593 "Armenian_ayb")-1447| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778593. "Armenian_ayb" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1492 1493 (CL-DEFINE-KEYSYM 16778546 "Armenian_BEN")-1448| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778546. "Armenian_BEN" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1493 1494 (CL-DEFINE-KEYSYM 16778594 "Armenian_ben")-1449| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778594. "Armenian_ben" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1494 1495 (CL-DEFINE-KEYSYM 16778547 "Armenian_GIM")-1450| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778547. "Armenian_GIM" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1495 1496 (CL-DEFINE-KEYSYM 16778595 "Armenian_gim")-1451| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778595. "Armenian_gim" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1496 1497 (CL-DEFINE-KEYSYM 16778548 "Armenian_DA")-1452| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778548. "Armenian_DA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1497 1498 (CL-DEFINE-KEYSYM 16778596 "Armenian_da")-1453| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778596. "Armenian_da" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1498 1499 (CL-DEFINE-KEYSYM 16778549 "Armenian_YECH")-1454| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778549. "Armenian_YECH" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1499 1500 (CL-DEFINE-KEYSYM 16778597 "Armenian_yech")-1455| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778597. "Armenian_yech" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1500 1501 (CL-DEFINE-KEYSYM 16778550 "Armenian_ZA")-1456| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778550. "Armenian_ZA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1501 1502 (CL-DEFINE-KEYSYM 16778598 "Armenian_za")-1457| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778598. "Armenian_za" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1502 1503 (CL-DEFINE-KEYSYM 16778551 "Armenian_E")-1458| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778551. "Armenian_E" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1503 1504 (CL-DEFINE-KEYSYM 16778599 "Armenian_e")-1459| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778599. "Armenian_e" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1504 1505 (CL-DEFINE-KEYSYM 16778552 "Armenian_AT")-1460| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778552. "Armenian_AT" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1505 1506 (CL-DEFINE-KEYSYM 16778600 "Armenian_at")-1461| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778600. "Armenian_at" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1506 1507 (CL-DEFINE-KEYSYM 16778553 "Armenian_TO")-1462| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778553. "Armenian_TO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1507 1508 (CL-DEFINE-KEYSYM 16778601 "Armenian_to")-1463| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778601. "Armenian_to" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1508 1509 (CL-DEFINE-KEYSYM 16778554 "Armenian_ZHE")-1464| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778554. "Armenian_ZHE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1509 1510 (CL-DEFINE-KEYSYM 16778602 "Armenian_zhe")-1465| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778602. "Armenian_zhe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1510 1511 (CL-DEFINE-KEYSYM 16778555 "Armenian_INI")-1466| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778555. "Armenian_INI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1511 1512 (CL-DEFINE-KEYSYM 16778603 "Armenian_ini")-1467| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778603. "Armenian_ini" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1512 1513 (CL-DEFINE-KEYSYM 16778556 "Armenian_LYUN")-1468| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778556. "Armenian_LYUN" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1513 1514 (CL-DEFINE-KEYSYM 16778604 "Armenian_lyun")-1469| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778604. "Armenian_lyun" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1514 1515 (CL-DEFINE-KEYSYM 16778557 "Armenian_KHE")-1470| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778557. "Armenian_KHE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1515 1516 (CL-DEFINE-KEYSYM 16778605 "Armenian_khe")-1471| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778605. "Armenian_khe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1516 1517 (CL-DEFINE-KEYSYM 16778558 "Armenian_TSA")-1472| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778558. "Armenian_TSA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1517 1518 (CL-DEFINE-KEYSYM 16778606 "Armenian_tsa")-1473| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778606. "Armenian_tsa" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1518 1519 (CL-DEFINE-KEYSYM 16778559 "Armenian_KEN")-1474| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778559. "Armenian_KEN" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1519 1520 (CL-DEFINE-KEYSYM 16778607 "Armenian_ken")-1475| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778607. "Armenian_ken" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1520 1521 (CL-DEFINE-KEYSYM 16778560 "Armenian_HO")-1476| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778560. "Armenian_HO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1521 1522 (CL-DEFINE-KEYSYM 16778608 "Armenian_ho")-1477| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778608. "Armenian_ho" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1522 1523 (CL-DEFINE-KEYSYM 16778561 "Armenian_DZA")-1478| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778561. "Armenian_DZA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1523 1524 (CL-DEFINE-KEYSYM 16778609 "Armenian_dza")-1479| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778609. "Armenian_dza" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1524 1525 (CL-DEFINE-KEYSYM 16778562 "Armenian_GHAT")-1480| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778562. "Armenian_GHAT" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1525 1526 (CL-DEFINE-KEYSYM 16778610 "Armenian_ghat")-1481| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778610. "Armenian_ghat" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1526 1527 (CL-DEFINE-KEYSYM 16778563 "Armenian_TCHE")-1482| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778563. "Armenian_TCHE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1527 1528 (CL-DEFINE-KEYSYM 16778611 "Armenian_tche")-1483| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778611. "Armenian_tche" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1528 1529 (CL-DEFINE-KEYSYM 16778564 "Armenian_MEN")-1484| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778564. "Armenian_MEN" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1529 1530 (CL-DEFINE-KEYSYM 16778612 "Armenian_men")-1485| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778612. "Armenian_men" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1530 1531 (CL-DEFINE-KEYSYM 16778565 "Armenian_HI")-1486| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778565. "Armenian_HI" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1531 1532 (CL-DEFINE-KEYSYM 16778613 "Armenian_hi")-1487| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778613. "Armenian_hi" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1532 1533 (CL-DEFINE-KEYSYM 16778566 "Armenian_NU")-1488| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778566. "Armenian_NU" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1533 1534 (CL-DEFINE-KEYSYM 16778614 "Armenian_nu")-1489| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778614. "Armenian_nu" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1534 1535 (CL-DEFINE-KEYSYM 16778567 "Armenian_SHA")-1490| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778567. "Armenian_SHA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1535 1536 (CL-DEFINE-KEYSYM 16778615 "Armenian_sha")-1491| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778615. "Armenian_sha" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1536 1537 (CL-DEFINE-KEYSYM 16778568 "Armenian_VO")-1492| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778568. "Armenian_VO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1537 1538 (CL-DEFINE-KEYSYM 16778616 "Armenian_vo")-1493| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778616. "Armenian_vo" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1538 1539 (CL-DEFINE-KEYSYM 16778569 "Armenian_CHA")-1494| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778569. "Armenian_CHA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1539 1540 (CL-DEFINE-KEYSYM 16778617 "Armenian_cha")-1495| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778617. "Armenian_cha" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1540 1541 (CL-DEFINE-KEYSYM 16778570 "Armenian_PE")-1496| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778570. "Armenian_PE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1541 1542 (CL-DEFINE-KEYSYM 16778618 "Armenian_pe")-1497| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778618. "Armenian_pe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1542 1543 (CL-DEFINE-KEYSYM 16778571 "Armenian_JE")-1498| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778571. "Armenian_JE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1543 1544 (CL-DEFINE-KEYSYM 16778619 "Armenian_je")-1499| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778619. "Armenian_je" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1544 1545 (CL-DEFINE-KEYSYM 16778572 "Armenian_RA")-1500| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778572. "Armenian_RA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1545 1546 (CL-DEFINE-KEYSYM 16778620 "Armenian_ra")-1501| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778620. "Armenian_ra" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1546 1547 (CL-DEFINE-KEYSYM 16778573 "Armenian_SE")-1502| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778573. "Armenian_SE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1547 1548 (CL-DEFINE-KEYSYM 16778621 "Armenian_se")-1503| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778621. "Armenian_se" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1548 1549 (CL-DEFINE-KEYSYM 16778574 "Armenian_VEV")-1504| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778574. "Armenian_VEV" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1549 1550 (CL-DEFINE-KEYSYM 16778622 "Armenian_vev")-1505| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778622. "Armenian_vev" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1550 1551 (CL-DEFINE-KEYSYM 16778575 "Armenian_TYUN")-1506| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778575. "Armenian_TYUN" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1551 1552 (CL-DEFINE-KEYSYM 16778623 "Armenian_tyun")-1507| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778623. "Armenian_tyun" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1552 1553 (CL-DEFINE-KEYSYM 16778576 "Armenian_RE")-1508| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778576. "Armenian_RE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1553 1554 (CL-DEFINE-KEYSYM 16778624 "Armenian_re")-1509| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778624. "Armenian_re" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1554 1555 (CL-DEFINE-KEYSYM 16778577 "Armenian_TSO")-1510| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778577. "Armenian_TSO" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1555 1556 (CL-DEFINE-KEYSYM 16778625 "Armenian_tso")-1511| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778625. "Armenian_tso" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1556 1557 (CL-DEFINE-KEYSYM 16778578 "Armenian_VYUN")-1512| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778578. "Armenian_VYUN" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1557 1558 (CL-DEFINE-KEYSYM 16778626 "Armenian_vyun")-1513| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778626. "Armenian_vyun" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1558 1559 (CL-DEFINE-KEYSYM 16778579 "Armenian_PYUR")-1514| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778579. "Armenian_PYUR" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1559 1560 (CL-DEFINE-KEYSYM 16778627 "Armenian_pyur")-1515| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778627. "Armenian_pyur" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1560 1561 (CL-DEFINE-KEYSYM 16778580 "Armenian_KE")-1516| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778580. "Armenian_KE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1561 1562 (CL-DEFINE-KEYSYM 16778628 "Armenian_ke")-1517| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778628. "Armenian_ke" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1562 1563 (CL-DEFINE-KEYSYM 16778581 "Armenian_O")-1518| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778581. "Armenian_O" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1563 1564 (CL-DEFINE-KEYSYM 16778629 "Armenian_o")-1519| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778629. "Armenian_o" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1564 1565 (CL-DEFINE-KEYSYM 16778582 "Armenian_FE")-1520| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778582. "Armenian_FE" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1565 1566 (CL-DEFINE-KEYSYM 16778630 "Armenian_fe")-1521| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778630. "Armenian_fe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1566 1567 (CL-DEFINE-KEYSYM 16778586 "Armenian_apostrophe")-1522| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16778586. "Armenian_apostrophe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1567 1568 (CL-DEFINE-KEYSYM 16781520 "Georgian_an")-1523| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781520. "Georgian_an" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1568 1569 (CL-DEFINE-KEYSYM 16781521 "Georgian_ban")-1524| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781521. "Georgian_ban" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1569 1570 (CL-DEFINE-KEYSYM 16781522 "Georgian_gan")-1525| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781522. "Georgian_gan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1570 1571 (CL-DEFINE-KEYSYM 16781523 "Georgian_don")-1526| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781523. "Georgian_don" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1571 1572 (CL-DEFINE-KEYSYM 16781524 "Georgian_en")-1527| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781524. "Georgian_en" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1572 1573 (CL-DEFINE-KEYSYM 16781525 "Georgian_vin")-1528| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781525. "Georgian_vin" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1573 1574 (CL-DEFINE-KEYSYM 16781526 "Georgian_zen")-1529| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781526. "Georgian_zen" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1574 1575 (CL-DEFINE-KEYSYM 16781527 "Georgian_tan")-1530| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781527. "Georgian_tan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1575 1576 (CL-DEFINE-KEYSYM 16781528 "Georgian_in")-1531| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781528. "Georgian_in" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1576 1577 (CL-DEFINE-KEYSYM 16781529 "Georgian_kan")-1532| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781529. "Georgian_kan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1577 1578 (CL-DEFINE-KEYSYM 16781530 "Georgian_las")-1533| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781530. "Georgian_las" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1578 1579 (CL-DEFINE-KEYSYM 16781531 "Georgian_man")-1534| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781531. "Georgian_man" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1579 1580 (CL-DEFINE-KEYSYM 16781532 "Georgian_nar")-1535| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781532. "Georgian_nar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1580 1581 (CL-DEFINE-KEYSYM 16781533 "Georgian_on")-1536| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781533. "Georgian_on" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1581 1582 (CL-DEFINE-KEYSYM 16781534 "Georgian_par")-1537| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781534. "Georgian_par" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1582 1583 (CL-DEFINE-KEYSYM 16781535 "Georgian_zhar")-1538| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781535. "Georgian_zhar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1583 1584 (CL-DEFINE-KEYSYM 16781536 "Georgian_rae")-1539| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781536. "Georgian_rae" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1584 1585 (CL-DEFINE-KEYSYM 16781537 "Georgian_san")-1540| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781537. "Georgian_san" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1585 1586 (CL-DEFINE-KEYSYM 16781538 "Georgian_tar")-1541| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781538. "Georgian_tar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1586 1587 (CL-DEFINE-KEYSYM 16781539 "Georgian_un")-1542| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781539. "Georgian_un" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1587 1588 (CL-DEFINE-KEYSYM 16781540 "Georgian_phar")-1543| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781540. "Georgian_phar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1588 1589 (CL-DEFINE-KEYSYM 16781541 "Georgian_khar")-1544| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781541. "Georgian_khar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1589 1590 (CL-DEFINE-KEYSYM 16781542 "Georgian_ghan")-1545| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781542. "Georgian_ghan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1590 1591 (CL-DEFINE-KEYSYM 16781543 "Georgian_qar")-1546| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781543. "Georgian_qar" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1591 1592 (CL-DEFINE-KEYSYM 16781544 "Georgian_shin")-1547| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781544. "Georgian_shin" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1592 1593 (CL-DEFINE-KEYSYM 16781545 "Georgian_chin")-1548| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781545. "Georgian_chin" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1593 1594 (CL-DEFINE-KEYSYM 16781546 "Georgian_can")-1549| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781546. "Georgian_can" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1594 1595 (CL-DEFINE-KEYSYM 16781547 "Georgian_jil")-1550| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781547. "Georgian_jil" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1595 1596 (CL-DEFINE-KEYSYM 16781548 "Georgian_cil")-1551| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781548. "Georgian_cil" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1596 1597 (CL-DEFINE-KEYSYM 16781549 "Georgian_char")-1552| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781549. "Georgian_char" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1597 1598 (CL-DEFINE-KEYSYM 16781550 "Georgian_xan")-1553| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781550. "Georgian_xan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1598 1599 (CL-DEFINE-KEYSYM 16781551 "Georgian_jhan")-1554| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781551. "Georgian_jhan" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1599 1600 (CL-DEFINE-KEYSYM 16781552 "Georgian_hae")-1555| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781552. "Georgian_hae" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1600 1601 (CL-DEFINE-KEYSYM 16781553 "Georgian_he")-1556| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781553. "Georgian_he" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1601 1602 (CL-DEFINE-KEYSYM 16781554 "Georgian_hie")-1557| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781554. "Georgian_hie" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1602 1603 (CL-DEFINE-KEYSYM 16781555 "Georgian_we")-1558| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781555. "Georgian_we" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1603 1604 (CL-DEFINE-KEYSYM 16781556 "Georgian_har")-1559| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781556. "Georgian_har" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1604 1605 (CL-DEFINE-KEYSYM 16781557 "Georgian_hoe")-1560| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781557. "Georgian_hoe" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1605 1606 (CL-DEFINE-KEYSYM 16781558 "Georgian_fi")-1561| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16781558. "Georgian_fi" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1606 1607 (CL-DEFINE-KEYSYM 16785034 "Xabovedot")-1562| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785034. "Xabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1607 1608 (CL-DEFINE-KEYSYM 16777516 "Ibreve")-1563| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777516. "Ibreve" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1608 1609 (CL-DEFINE-KEYSYM 16777653 "Zstroke")-1564| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777653. "Zstroke" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1609 1610 (CL-DEFINE-KEYSYM 16777702 "Gcaron")-1565| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777702. "Gcaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1610 1611 (CL-DEFINE-KEYSYM 16777681 "Ocaron")-1566| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777681. "Ocaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1611 1612 (CL-DEFINE-KEYSYM 16777631 "Obarred")-1567| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777631. "Obarred" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1612 1613 (CL-DEFINE-KEYSYM 16785035 "xabovedot")-1568| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785035. "xabovedot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1613 1614 (CL-DEFINE-KEYSYM 16777517 "ibreve")-1569| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777517. "ibreve" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1614 1615 (CL-DEFINE-KEYSYM 16777654 "zstroke")-1570| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777654. "zstroke" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1615 1616 (CL-DEFINE-KEYSYM 16777703 "gcaron")-1571| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777703. "gcaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1616 1617 (CL-DEFINE-KEYSYM 16777682 "ocaron")-1572| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777682. "ocaron" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1617 1618 (CL-DEFINE-KEYSYM 16777845 "obarred")-1573| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777845. "obarred" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1618 1619 (CL-DEFINE-KEYSYM 16777615 "SCHWA")-1574| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777615. "SCHWA" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1619 1620 (CL-DEFINE-KEYSYM 16777817 "schwa")-1575| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777817. "schwa" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1620 1621 (CL-DEFINE-KEYSYM 16784950 "Lbelowdot")-1576| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16784950. "Lbelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1621 1622 (CL-DEFINE-KEYSYM 16784951 "lbelowdot")-1577| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16784951. "lbelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1622 1623 (CL-DEFINE-KEYSYM 16785056 "Abelowdot")-1578| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785056. "Abelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1623 1624 (CL-DEFINE-KEYSYM 16785057 "abelowdot")-1579| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785057. "abelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1624 1625 (CL-DEFINE-KEYSYM 16785058 "Ahook")-1580| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785058. "Ahook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1625 1626 (CL-DEFINE-KEYSYM 16785059 "ahook")-1581| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785059. "ahook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1626 1627 (CL-DEFINE-KEYSYM 16785060 "Acircumflexacute")-1582| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785060. "Acircumflexacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1627 1628 (CL-DEFINE-KEYSYM 16785061 "acircumflexacute")-1583| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785061. "acircumflexacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1628 1629 (CL-DEFINE-KEYSYM 16785062 "Acircumflexgrave")-1584| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785062. "Acircumflexgrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1629 1630 (CL-DEFINE-KEYSYM 16785063 "acircumflexgrave")-1585| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785063. "acircumflexgrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1630 1631 (CL-DEFINE-KEYSYM 16785064 "Acircumflexhook")-1586| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785064. "Acircumflexhook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1631 1632 (CL-DEFINE-KEYSYM 16785065 "acircumflexhook")-1587| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785065. "acircumflexhook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1632 1633 (CL-DEFINE-KEYSYM 16785066 "Acircumflextilde")-1588| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785066. "Acircumflextilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1633 1634 (CL-DEFINE-KEYSYM 16785067 "acircumflextilde")-1589| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785067. "acircumflextilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1634 1635 (CL-DEFINE-KEYSYM 16785068 "Acircumflexbelowdot")-1590| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785068. "Acircumflexbelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1635 1636 (CL-DEFINE-KEYSYM 16785069 "acircumflexbelowdot")-1591| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785069. "acircumflexbelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1636 1637 (CL-DEFINE-KEYSYM 16785070 "Abreveacute")-1592| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785070. "Abreveacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1637 1638 (CL-DEFINE-KEYSYM 16785071 "abreveacute")-1593| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785071. "abreveacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1638 1639 (CL-DEFINE-KEYSYM 16785072 "Abrevegrave")-1594| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785072. "Abrevegrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1639 1640 (CL-DEFINE-KEYSYM 16785073 "abrevegrave")-1595| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785073. "abrevegrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1640 1641 (CL-DEFINE-KEYSYM 16785074 "Abrevehook")-1596| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785074. "Abrevehook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1641 1642 (CL-DEFINE-KEYSYM 16785075 "abrevehook")-1597| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785075. "abrevehook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1642 1643 (CL-DEFINE-KEYSYM 16785076 "Abrevetilde")-1598| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785076. "Abrevetilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1643 1644 (CL-DEFINE-KEYSYM 16785077 "abrevetilde")-1599| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785077. "abrevetilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1644 1645 (CL-DEFINE-KEYSYM 16785078 "Abrevebelowdot")-1600| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785078. "Abrevebelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1645 1646 (CL-DEFINE-KEYSYM 16785079 "abrevebelowdot")-1601| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785079. "abrevebelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1646 1647 (CL-DEFINE-KEYSYM 16785080 "Ebelowdot")-1602| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785080. "Ebelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1647 1648 (CL-DEFINE-KEYSYM 16785081 "ebelowdot")-1603| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785081. "ebelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1648 1649 (CL-DEFINE-KEYSYM 16785082 "Ehook")-1604| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785082. "Ehook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1649 1650 (CL-DEFINE-KEYSYM 16785083 "ehook")-1605| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785083. "ehook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1650 1651 (CL-DEFINE-KEYSYM 16785084 "Etilde")-1606| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785084. "Etilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1651 1652 (CL-DEFINE-KEYSYM 16785085 "etilde")-1607| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785085. "etilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1652 1653 (CL-DEFINE-KEYSYM 16785086 "Ecircumflexacute")-1608| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785086. "Ecircumflexacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1653 1654 (CL-DEFINE-KEYSYM 16785087 "ecircumflexacute")-1609| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785087. "ecircumflexacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1654 1655 (CL-DEFINE-KEYSYM 16785088 "Ecircumflexgrave")-1610| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785088. "Ecircumflexgrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1655 1656 (CL-DEFINE-KEYSYM 16785089 "ecircumflexgrave")-1611| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785089. "ecircumflexgrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1656 1657 (CL-DEFINE-KEYSYM 16785090 "Ecircumflexhook")-1612| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785090. "Ecircumflexhook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1657 1658 (CL-DEFINE-KEYSYM 16785091 "ecircumflexhook")-1613| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785091. "ecircumflexhook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1658 1659 (CL-DEFINE-KEYSYM 16785092 "Ecircumflextilde")-1614| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785092. "Ecircumflextilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1659 1660 (CL-DEFINE-KEYSYM 16785093 "ecircumflextilde")-1615| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785093. "ecircumflextilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1660 1661 (CL-DEFINE-KEYSYM 16785094 "Ecircumflexbelowdot")-1616| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785094. "Ecircumflexbelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1661 1662 (CL-DEFINE-KEYSYM 16785095 "ecircumflexbelowdot")-1617| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785095. "ecircumflexbelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1662 1663 (CL-DEFINE-KEYSYM 16785096 "Ihook")-1618| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785096. "Ihook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1663 1664 (CL-DEFINE-KEYSYM 16785097 "ihook")-1619| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785097. "ihook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1664 1665 (CL-DEFINE-KEYSYM 16785098 "Ibelowdot")-1620| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785098. "Ibelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1665 1666 (CL-DEFINE-KEYSYM 16785099 "ibelowdot")-1621| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785099. "ibelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1666 1667 (CL-DEFINE-KEYSYM 16785100 "Obelowdot")-1622| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785100. "Obelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1667 1668 (CL-DEFINE-KEYSYM 16785101 "obelowdot")-1623| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785101. "obelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1668 1669 (CL-DEFINE-KEYSYM 16785102 "Ohook")-1624| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785102. "Ohook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1669 1670 (CL-DEFINE-KEYSYM 16785103 "ohook")-1625| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785103. "ohook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1670 1671 (CL-DEFINE-KEYSYM 16785104 "Ocircumflexacute")-1626| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785104. "Ocircumflexacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1671 1672 (CL-DEFINE-KEYSYM 16785105 "ocircumflexacute")-1627| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785105. "ocircumflexacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1672 1673 (CL-DEFINE-KEYSYM 16785106 "Ocircumflexgrave")-1628| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785106. "Ocircumflexgrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1673 1674 (CL-DEFINE-KEYSYM 16785107 "ocircumflexgrave")-1629| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785107. "ocircumflexgrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1674 1675 (CL-DEFINE-KEYSYM 16785108 "Ocircumflexhook")-1630| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785108. "Ocircumflexhook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1675 1676 (CL-DEFINE-KEYSYM 16785109 "ocircumflexhook")-1631| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785109. "ocircumflexhook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1676 1677 (CL-DEFINE-KEYSYM 16785110 "Ocircumflextilde")-1632| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785110. "Ocircumflextilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1677 1678 (CL-DEFINE-KEYSYM 16785111 "ocircumflextilde")-1633| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785111. "ocircumflextilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1678 1679 (CL-DEFINE-KEYSYM 16785112 "Ocircumflexbelowdot")-1634| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785112. "Ocircumflexbelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1679 1680 (CL-DEFINE-KEYSYM 16785113 "ocircumflexbelowdot")-1635| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785113. "ocircumflexbelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1680 1681 (CL-DEFINE-KEYSYM 16785114 "Ohornacute")-1636| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785114. "Ohornacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1681 1682 (CL-DEFINE-KEYSYM 16785115 "ohornacute")-1637| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785115. "ohornacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1682 1683 (CL-DEFINE-KEYSYM 16785116 "Ohorngrave")-1638| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785116. "Ohorngrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1683 1684 (CL-DEFINE-KEYSYM 16785117 "ohorngrave")-1639| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785117. "ohorngrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1684 1685 (CL-DEFINE-KEYSYM 16785118 "Ohornhook")-1640| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785118. "Ohornhook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1685 1686 (CL-DEFINE-KEYSYM 16785119 "ohornhook")-1641| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785119. "ohornhook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1686 1687 (CL-DEFINE-KEYSYM 16785120 "Ohorntilde")-1642| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785120. "Ohorntilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1687 1688 (CL-DEFINE-KEYSYM 16785121 "ohorntilde")-1643| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785121. "ohorntilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1688 1689 (CL-DEFINE-KEYSYM 16785122 "Ohornbelowdot")-1644| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785122. "Ohornbelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1689 1690 (CL-DEFINE-KEYSYM 16785123 "ohornbelowdot")-1645| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785123. "ohornbelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1690 1691 (CL-DEFINE-KEYSYM 16785124 "Ubelowdot")-1646| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785124. "Ubelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1691 1692 (CL-DEFINE-KEYSYM 16785125 "ubelowdot")-1647| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785125. "ubelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1692 1693 (CL-DEFINE-KEYSYM 16785126 "Uhook")-1648| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785126. "Uhook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1693 1694 (CL-DEFINE-KEYSYM 16785127 "uhook")-1649| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785127. "uhook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1694 1695 (CL-DEFINE-KEYSYM 16785128 "Uhornacute")-1650| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785128. "Uhornacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1695 1696 (CL-DEFINE-KEYSYM 16785129 "uhornacute")-1651| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785129. "uhornacute" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1696 1697 (CL-DEFINE-KEYSYM 16785130 "Uhorngrave")-1652| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785130. "Uhorngrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1697 1698 (CL-DEFINE-KEYSYM 16785131 "uhorngrave")-1653| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785131. "uhorngrave" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1698 1699 (CL-DEFINE-KEYSYM 16785132 "Uhornhook")-1654| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785132. "Uhornhook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1699 1700 (CL-DEFINE-KEYSYM 16785133 "uhornhook")-1655| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785133. "uhornhook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1700 1701 (CL-DEFINE-KEYSYM 16785134 "Uhorntilde")-1656| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785134. "Uhorntilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1701 1702 (CL-DEFINE-KEYSYM 16785135 "uhorntilde")-1657| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785135. "uhorntilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1702 1703 (CL-DEFINE-KEYSYM 16785136 "Uhornbelowdot")-1658| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785136. "Uhornbelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1703 1704 (CL-DEFINE-KEYSYM 16785137 "uhornbelowdot")-1659| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785137. "uhornbelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1704 1705 (CL-DEFINE-KEYSYM 16785140 "Ybelowdot")-1660| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785140. "Ybelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1705 1706 (CL-DEFINE-KEYSYM 16785141 "ybelowdot")-1661| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785141. "ybelowdot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1706 1707 (CL-DEFINE-KEYSYM 16785142 "Yhook")-1662| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785142. "Yhook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1707 1708 (CL-DEFINE-KEYSYM 16785143 "yhook")-1663| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785143. "yhook" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1708 1709 (CL-DEFINE-KEYSYM 16785144 "Ytilde")-1664| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785144. "Ytilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1709 1710 (CL-DEFINE-KEYSYM 16785145 "ytilde")-1665| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785145. "ytilde" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1710 1711 (CL-DEFINE-KEYSYM 16777632 "Ohorn")-1666| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777632. "Ohorn" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1711 1712 (CL-DEFINE-KEYSYM 16777633 "ohorn")-1667| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777633. "ohorn" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1712 1713 (CL-DEFINE-KEYSYM 16777647 "Uhorn")-1668| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777647. "Uhorn" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1713 1714 (CL-DEFINE-KEYSYM 16777648 "uhorn")-1669| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16777648. "uhorn" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1714 1715 (CL-DEFINE-KEYSYM 16785568 "EcuSign")-1670| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785568. "EcuSign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1715 1716 (CL-DEFINE-KEYSYM 16785569 "ColonSign")-1671| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785569. "ColonSign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1716 1717 (CL-DEFINE-KEYSYM 16785570 "CruzeiroSign")-1672| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785570. "CruzeiroSign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1717 1718 (CL-DEFINE-KEYSYM 16785571 "FFrancSign")-1673| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785571. "FFrancSign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1718 1719 (CL-DEFINE-KEYSYM 16785572 "LiraSign")-1674| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785572. "LiraSign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1719 1720 (CL-DEFINE-KEYSYM 16785573 "MillSign")-1675| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785573. "MillSign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1720 1721 (CL-DEFINE-KEYSYM 16785574 "NairaSign")-1676| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785574. "NairaSign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1721 1722 (CL-DEFINE-KEYSYM 16785575 "PesetaSign")-1677| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785575. "PesetaSign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1722 1723 (CL-DEFINE-KEYSYM 16785576 "RupeeSign")-1678| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785576. "RupeeSign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1723 1724 (CL-DEFINE-KEYSYM 16785577 "WonSign")-1679| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785577. "WonSign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1724 1725 (CL-DEFINE-KEYSYM 16785578 "NewSheqelSign")-1680| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785578. "NewSheqelSign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1725 1726 (CL-DEFINE-KEYSYM 16785579 "DongSign")-1681| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785579. "DongSign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1726 1727 (CL-DEFINE-KEYSYM 8364 "EuroSign")-1682| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (8364. "EuroSign" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1727 1728 (CL-DEFINE-KEYSYM 16785520 "zerosuperior")-1683| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785520. "zerosuperior" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1728 1729 (CL-DEFINE-KEYSYM 16785524 "foursuperior")-1684| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785524. "foursuperior" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1729 1730 (CL-DEFINE-KEYSYM 16785525 "fivesuperior")-1685| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785525. "fivesuperior" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1730 1731 (CL-DEFINE-KEYSYM 16785526 "sixsuperior")-1686| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785526. "sixsuperior" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1731 1732 (CL-DEFINE-KEYSYM 16785527 "sevensuperior")-1687| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785527. "sevensuperior" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1732 1733 (CL-DEFINE-KEYSYM 16785528 "eightsuperior")-1688| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785528. "eightsuperior" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1733 1734 (CL-DEFINE-KEYSYM 16785529 "ninesuperior")-1689| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785529. "ninesuperior" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1734 1735 (CL-DEFINE-KEYSYM 16785536 "zerosubscript")-1690| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785536. "zerosubscript" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1735 1736 (CL-DEFINE-KEYSYM 16785537 "onesubscript")-1691| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785537. "onesubscript" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1736 1737 (CL-DEFINE-KEYSYM 16785538 "twosubscript")-1692| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785538. "twosubscript" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1737 1738 (CL-DEFINE-KEYSYM 16785539 "threesubscript")-1693| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785539. "threesubscript" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1738 1739 (CL-DEFINE-KEYSYM 16785540 "foursubscript")-1694| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785540. "foursubscript" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1739 1740 (CL-DEFINE-KEYSYM 16785541 "fivesubscript")-1695| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785541. "fivesubscript" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1740 1741 (CL-DEFINE-KEYSYM 16785542 "sixsubscript")-1696| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785542. "sixsubscript" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1741 1742 (CL-DEFINE-KEYSYM 16785543 "sevensubscript")-1697| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785543. "sevensubscript" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1742 1743 (CL-DEFINE-KEYSYM 16785544 "eightsubscript")-1698| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785544. "eightsubscript" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1743 1744 (CL-DEFINE-KEYSYM 16785545 "ninesubscript")-1699| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785545. "ninesubscript" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1744 1745 (CL-DEFINE-KEYSYM 16785922 "partdifferential")-1700| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785922. "partdifferential" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1745 1746 (CL-DEFINE-KEYSYM 16785925 "emptyset")-1701| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785925. "emptyset" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1746 1747 (CL-DEFINE-KEYSYM 16785928 "elementof")-1702| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785928. "elementof" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1747 1748 (CL-DEFINE-KEYSYM 16785929 "notelementof")-1703| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785929. "notelementof" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1748 1749 (CL-DEFINE-KEYSYM 16785931 "containsas")-1704| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785931. "containsas" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1749 1750 (CL-DEFINE-KEYSYM 16785946 "squareroot")-1705| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785946. "squareroot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1750 1751 (CL-DEFINE-KEYSYM 16785947 "cuberoot")-1706| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785947. "cuberoot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1751 1752 (CL-DEFINE-KEYSYM 16785948 "fourthroot")-1707| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785948. "fourthroot" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1752 1753 (CL-DEFINE-KEYSYM 16785964 "dintegral")-1708| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785964. "dintegral" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1753 1754 (CL-DEFINE-KEYSYM 16785965 "tintegral")-1709| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785965. "tintegral" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1754 1755 (CL-DEFINE-KEYSYM 16785973 "because")-1710| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785973. "because" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1755 1756 (CL-DEFINE-KEYSYM 16785992 "approxeq")-1711| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785992. "approxeq" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1756 1757 (CL-DEFINE-KEYSYM 16785991 "notapproxeq")-1712| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16785991. "notapproxeq" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1757 1758 (CL-DEFINE-KEYSYM 16786018 "notidentical")-1713| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16786018. "notidentical" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|1758 1759 (CL-DEFINE-KEYSYM 16786019 "stricteq")-1714| + #16Y(00 00 00 00 00 00 00 00 00 01 DA DB 30 02 19 01) + (16786019. "stricteq" |CLFSWM|::|CL-DEFINE-KEYSYM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: keysyms.fasl ============================================================================== Binary file. No diff available. Added: keysyms.lib ============================================================================== --- (empty file) +++ keysyms.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,13 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CLFSWM")) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*KEYSYM-NAME-TRANSLATIONS*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*NAME-KEYSYM-TRANSLATIONS*|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|CL-DEFINE-KEYSYM| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|KEYSYM| |CLFSWM|::|NAME|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|KEYSYM-NAME->KEYSYM| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|NAME|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|KEYSYM->KEYSYM-NAME| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|KEYSYM|))) Added: keysyms.lisp ============================================================================== --- (empty file) +++ keysyms.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,1759 @@ +;; Copyright (C) 2006 Matthew Kennedy +;; +;; This file is part of stumpwm. +;; +;; stumpwm 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, or (at your option) +;; any later version. + +;; stumpwm 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 software; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330, +;; Boston, MA 02111-1307 USA + +;; Commentary: +;; +;; Mapping a keysym to a name is a client side activity in X11. Some +;; of the code here was taken from the CMUCL Hemlocks code base. The +;; actual mappings were taken from Xorg's keysymdefs.h. +;; +;; Code: + +(in-package :clfswm) + +(defvar *keysym-name-translations* (make-hash-table)) +(defvar *name-keysym-translations* (make-hash-table :test #'equal)) + +(defun cl-define-keysym (keysym name) + "Define a mapping from a keysym name to a keysym." + (setf (gethash keysym *keysym-name-translations*) name + (gethash name *name-keysym-translations*) keysym)) + +(defun keysym-name->keysym (name) + "Return the keysym corresponding to NAME." + (multiple-value-bind (value present-p) + (gethash name *name-keysym-translations*) + (declare (ignore present-p)) + value)) + +(defun keysym->keysym-name (keysym) + "Return the name corresponding to KEYSYM." + (multiple-value-bind (value present-p) + (gethash keysym *keysym-name-translations*) + (declare (ignore present-p)) + value)) + +(cl-define-keysym #xffffff "VoidSymbol") ;Void symbol +(cl-define-keysym #xff08 "BackSpace") ;Back space, back char +(cl-define-keysym #xff09 "Tab") +(cl-define-keysym #xff0a "Linefeed") ;Linefeed, LF +(cl-define-keysym #xff0b "Clear") +(cl-define-keysym #xff0d "Return") ;Return, enter +(cl-define-keysym #xff13 "Pause") ;Pause, hold +(cl-define-keysym #xff14 "Scroll_Lock") +(cl-define-keysym #xff15 "Sys_Req") +(cl-define-keysym #xff1b "Escape") +(cl-define-keysym #xffff "Delete") ;Delete, rubout +(cl-define-keysym #xff20 "Multi_key") ;Multi-key character compose +(cl-define-keysym #xff37 "Codeinput") +(cl-define-keysym #xff3c "SingleCandidate") +(cl-define-keysym #xff3d "MultipleCandidate") +(cl-define-keysym #xff3e "PreviousCandidate") +(cl-define-keysym #xff21 "Kanji") ;Kanji, Kanji convert +(cl-define-keysym #xff22 "Muhenkan") ;Cancel Conversion +(cl-define-keysym #xff23 "Henkan_Mode") ;Start/Stop Conversion +(cl-define-keysym #xff23 "Henkan") ;Alias for Henkan_Mode +(cl-define-keysym #xff24 "Romaji") ;to Romaji +(cl-define-keysym #xff25 "Hiragana") ;to Hiragana +(cl-define-keysym #xff26 "Katakana") ;to Katakana +(cl-define-keysym #xff27 "Hiragana_Katakana") ;Hiragana/Katakana toggle +(cl-define-keysym #xff28 "Zenkaku") ;to Zenkaku +(cl-define-keysym #xff29 "Hankaku") ;to Hankaku +(cl-define-keysym #xff2a "Zenkaku_Hankaku") ;Zenkaku/Hankaku toggle +(cl-define-keysym #xff2b "Touroku") ;Add to Dictionary +(cl-define-keysym #xff2c "Massyo") ;Delete from Dictionary +(cl-define-keysym #xff2d "Kana_Lock") ;Kana Lock +(cl-define-keysym #xff2e "Kana_Shift") ;Kana Shift +(cl-define-keysym #xff2f "Eisu_Shift") ;Alphanumeric Shift +(cl-define-keysym #xff30 "Eisu_toggle") ;Alphanumeric toggle +(cl-define-keysym #xff37 "Kanji_Bangou") ;Codeinput +(cl-define-keysym #xff3d "Zen_Koho") ;Multiple/All Candidate(s) +(cl-define-keysym #xff3e "Mae_Koho") ;Previous Candidate +(cl-define-keysym #xff50 "Home") +(cl-define-keysym #xff51 "Left") ;Move left, left arrow +(cl-define-keysym #xff52 "Up") ;Move up, up arrow +(cl-define-keysym #xff53 "Right") ;Move right, right arrow +(cl-define-keysym #xff54 "Down") ;Move down, down arrow +(cl-define-keysym #xff55 "Prior") ;Prior, previous +(cl-define-keysym #xff55 "Page_Up") +(cl-define-keysym #xff56 "Next") ;Next +(cl-define-keysym #xff56 "Page_Down") +(cl-define-keysym #xff57 "End") ;EOL +(cl-define-keysym #xff58 "Begin") ;BOL +(cl-define-keysym #xff60 "Select") ;Select, mark +(cl-define-keysym #xff61 "Print") +(cl-define-keysym #xff62 "Execute") ;Execute, run, do +(cl-define-keysym #xff63 "Insert") ;Insert, insert here +(cl-define-keysym #xff65 "Undo") +(cl-define-keysym #xff66 "Redo") ;Redo, again +(cl-define-keysym #xff67 "Menu") +(cl-define-keysym #xff68 "Find") ;Find, search +(cl-define-keysym #xff69 "Cancel") ;Cancel, stop, abort, exit +(cl-define-keysym #xff6a "Help") ;Help +(cl-define-keysym #xff6b "Break") +(cl-define-keysym #xff7e "Mode_switch") ;Character set switch +(cl-define-keysym #xff7e "script_switch") ;Alias for mode_switch +(cl-define-keysym #xff7f "Num_Lock") +(cl-define-keysym #xff80 "KP_Space") ;Space +(cl-define-keysym #xff89 "KP_Tab") +(cl-define-keysym #xff8d "KP_Enter") ;Enter +(cl-define-keysym #xff91 "KP_F1") ;PF1, KP_A, ... +(cl-define-keysym #xff92 "KP_F2") +(cl-define-keysym #xff93 "KP_F3") +(cl-define-keysym #xff94 "KP_F4") +(cl-define-keysym #xff95 "KP_Home") +(cl-define-keysym #xff96 "KP_Left") +(cl-define-keysym #xff97 "KP_Up") +(cl-define-keysym #xff98 "KP_Right") +(cl-define-keysym #xff99 "KP_Down") +(cl-define-keysym #xff9a "KP_Prior") +(cl-define-keysym #xff9a "KP_Page_Up") +(cl-define-keysym #xff9b "KP_Next") +(cl-define-keysym #xff9b "KP_Page_Down") +(cl-define-keysym #xff9c "KP_End") +(cl-define-keysym #xff9d "KP_Begin") +(cl-define-keysym #xff9e "KP_Insert") +(cl-define-keysym #xff9f "KP_Delete") +(cl-define-keysym #xffbd "KP_Equal") ;Equals +(cl-define-keysym #xffaa "KP_Multiply") +(cl-define-keysym #xffab "KP_Add") +(cl-define-keysym #xffac "KP_Separator") ;Separator, often comma +(cl-define-keysym #xffad "KP_Subtract") +(cl-define-keysym #xffae "KP_Decimal") +(cl-define-keysym #xffaf "KP_Divide") +(cl-define-keysym #xffb0 "KP_0") +(cl-define-keysym #xffb1 "KP_1") +(cl-define-keysym #xffb2 "KP_2") +(cl-define-keysym #xffb3 "KP_3") +(cl-define-keysym #xffb4 "KP_4") +(cl-define-keysym #xffb5 "KP_5") +(cl-define-keysym #xffb6 "KP_6") +(cl-define-keysym #xffb7 "KP_7") +(cl-define-keysym #xffb8 "KP_8") +(cl-define-keysym #xffb9 "KP_9") +(cl-define-keysym #xffbe "F1") +(cl-define-keysym #xffbf "F2") +(cl-define-keysym #xffc0 "F3") +(cl-define-keysym #xffc1 "F4") +(cl-define-keysym #xffc2 "F5") +(cl-define-keysym #xffc3 "F6") +(cl-define-keysym #xffc4 "F7") +(cl-define-keysym #xffc5 "F8") +(cl-define-keysym #xffc6 "F9") +(cl-define-keysym #xffc7 "F10") +(cl-define-keysym #xffc8 "F11") +(cl-define-keysym #xffc8 "L1") +(cl-define-keysym #xffc9 "F12") +(cl-define-keysym #xffc9 "L2") +(cl-define-keysym #xffca "F13") +(cl-define-keysym #xffca "L3") +(cl-define-keysym #xffcb "F14") +(cl-define-keysym #xffcb "L4") +(cl-define-keysym #xffcc "F15") +(cl-define-keysym #xffcc "L5") +(cl-define-keysym #xffcd "F16") +(cl-define-keysym #xffcd "L6") +(cl-define-keysym #xffce "F17") +(cl-define-keysym #xffce "L7") +(cl-define-keysym #xffcf "F18") +(cl-define-keysym #xffcf "L8") +(cl-define-keysym #xffd0 "F19") +(cl-define-keysym #xffd0 "L9") +(cl-define-keysym #xffd1 "F20") +(cl-define-keysym #xffd1 "L10") +(cl-define-keysym #xffd2 "F21") +(cl-define-keysym #xffd2 "R1") +(cl-define-keysym #xffd3 "F22") +(cl-define-keysym #xffd3 "R2") +(cl-define-keysym #xffd4 "F23") +(cl-define-keysym #xffd4 "R3") +(cl-define-keysym #xffd5 "F24") +(cl-define-keysym #xffd5 "R4") +(cl-define-keysym #xffd6 "F25") +(cl-define-keysym #xffd6 "R5") +(cl-define-keysym #xffd7 "F26") +(cl-define-keysym #xffd7 "R6") +(cl-define-keysym #xffd8 "F27") +(cl-define-keysym #xffd8 "R7") +(cl-define-keysym #xffd9 "F28") +(cl-define-keysym #xffd9 "R8") +(cl-define-keysym #xffda "F29") +(cl-define-keysym #xffda "R9") +(cl-define-keysym #xffdb "F30") +(cl-define-keysym #xffdb "R10") +(cl-define-keysym #xffdc "F31") +(cl-define-keysym #xffdc "R11") +(cl-define-keysym #xffdd "F32") +(cl-define-keysym #xffdd "R12") +(cl-define-keysym #xffde "F33") +(cl-define-keysym #xffde "R13") +(cl-define-keysym #xffdf "F34") +(cl-define-keysym #xffdf "R14") +(cl-define-keysym #xffe0 "F35") +(cl-define-keysym #xffe0 "R15") +(cl-define-keysym #xffe1 "Shift_L") ;Left shift +(cl-define-keysym #xffe2 "Shift_R") ;Right shift +(cl-define-keysym #xffe3 "Control_L") ;Left control +(cl-define-keysym #xffe4 "Control_R") ;Right control +(cl-define-keysym #xffe5 "Caps_Lock") ;Caps lock +(cl-define-keysym #xffe6 "Shift_Lock") ;Shift lock +(cl-define-keysym #xffe7 "Meta_L") ;Left meta +(cl-define-keysym #xffe8 "Meta_R") ;Right meta +(cl-define-keysym #xffe9 "Alt_L") ;Left alt +(cl-define-keysym #xffea "Alt_R") ;Right alt +(cl-define-keysym #xffeb "Super_L") ;Left super +(cl-define-keysym #xffec "Super_R") ;Right super +(cl-define-keysym #xffed "Hyper_L") ;Left hyper +(cl-define-keysym #xffee "Hyper_R") ;Right hyper +(cl-define-keysym #xfe01 "ISO_Lock") +(cl-define-keysym #xfe02 "ISO_Level2_Latch") +(cl-define-keysym #xfe03 "ISO_Level3_Shift") +(cl-define-keysym #xfe04 "ISO_Level3_Latch") +(cl-define-keysym #xfe05 "ISO_Level3_Lock") +(cl-define-keysym #xff7e "ISO_Group_Shift") ;Alias for mode_switch +(cl-define-keysym #xfe06 "ISO_Group_Latch") +(cl-define-keysym #xfe07 "ISO_Group_Lock") +(cl-define-keysym #xfe08 "ISO_Next_Group") +(cl-define-keysym #xfe09 "ISO_Next_Group_Lock") +(cl-define-keysym #xfe0a "ISO_Prev_Group") +(cl-define-keysym #xfe0b "ISO_Prev_Group_Lock") +(cl-define-keysym #xfe0c "ISO_First_Group") +(cl-define-keysym #xfe0d "ISO_First_Group_Lock") +(cl-define-keysym #xfe0e "ISO_Last_Group") +(cl-define-keysym #xfe0f "ISO_Last_Group_Lock") +(cl-define-keysym #xfe20 "ISO_Left_Tab") +(cl-define-keysym #xfe21 "ISO_Move_Line_Up") +(cl-define-keysym #xfe22 "ISO_Move_Line_Down") +(cl-define-keysym #xfe23 "ISO_Partial_Line_Up") +(cl-define-keysym #xfe24 "ISO_Partial_Line_Down") +(cl-define-keysym #xfe25 "ISO_Partial_Space_Left") +(cl-define-keysym #xfe26 "ISO_Partial_Space_Right") +(cl-define-keysym #xfe27 "ISO_Set_Margin_Left") +(cl-define-keysym #xfe28 "ISO_Set_Margin_Right") +(cl-define-keysym #xfe29 "ISO_Release_Margin_Left") +(cl-define-keysym #xfe2a "ISO_Release_Margin_Right") +(cl-define-keysym #xfe2b "ISO_Release_Both_Margins") +(cl-define-keysym #xfe2c "ISO_Fast_Cursor_Left") +(cl-define-keysym #xfe2d "ISO_Fast_Cursor_Right") +(cl-define-keysym #xfe2e "ISO_Fast_Cursor_Up") +(cl-define-keysym #xfe2f "ISO_Fast_Cursor_Down") +(cl-define-keysym #xfe30 "ISO_Continuous_Underline") +(cl-define-keysym #xfe31 "ISO_Discontinuous_Underline") +(cl-define-keysym #xfe32 "ISO_Emphasize") +(cl-define-keysym #xfe33 "ISO_Center_Object") +(cl-define-keysym #xfe34 "ISO_Enter") +(cl-define-keysym #xfe50 "dead_grave") +(cl-define-keysym #xfe51 "dead_acute") +(cl-define-keysym #xfe52 "dead_circumflex") +(cl-define-keysym #xfe53 "dead_tilde") +(cl-define-keysym #xfe54 "dead_macron") +(cl-define-keysym #xfe55 "dead_breve") +(cl-define-keysym #xfe56 "dead_abovedot") +(cl-define-keysym #xfe57 "dead_diaeresis") +(cl-define-keysym #xfe58 "dead_abovering") +(cl-define-keysym #xfe59 "dead_doubleacute") +(cl-define-keysym #xfe5a "dead_caron") +(cl-define-keysym #xfe5b "dead_cedilla") +(cl-define-keysym #xfe5c "dead_ogonek") +(cl-define-keysym #xfe5d "dead_iota") +(cl-define-keysym #xfe5e "dead_voiced_sound") +(cl-define-keysym #xfe5f "dead_semivoiced_sound") +(cl-define-keysym #xfe60 "dead_belowdot") +(cl-define-keysym #xfe61 "dead_hook") +(cl-define-keysym #xfe62 "dead_horn") +(cl-define-keysym #xfed0 "First_Virtual_Screen") +(cl-define-keysym #xfed1 "Prev_Virtual_Screen") +(cl-define-keysym #xfed2 "Next_Virtual_Screen") +(cl-define-keysym #xfed4 "Last_Virtual_Screen") +(cl-define-keysym #xfed5 "Terminate_Server") +(cl-define-keysym #xfe70 "AccessX_Enable") +(cl-define-keysym #xfe71 "AccessX_Feedback_Enable") +(cl-define-keysym #xfe72 "RepeatKeys_Enable") +(cl-define-keysym #xfe73 "SlowKeys_Enable") +(cl-define-keysym #xfe74 "BounceKeys_Enable") +(cl-define-keysym #xfe75 "StickyKeys_Enable") +(cl-define-keysym #xfe76 "MouseKeys_Enable") +(cl-define-keysym #xfe77 "MouseKeys_Accel_Enable") +(cl-define-keysym #xfe78 "Overlay1_Enable") +(cl-define-keysym #xfe79 "Overlay2_Enable") +(cl-define-keysym #xfe7a "AudibleBell_Enable") +(cl-define-keysym #xfee0 "Pointer_Left") +(cl-define-keysym #xfee1 "Pointer_Right") +(cl-define-keysym #xfee2 "Pointer_Up") +(cl-define-keysym #xfee3 "Pointer_Down") +(cl-define-keysym #xfee4 "Pointer_UpLeft") +(cl-define-keysym #xfee5 "Pointer_UpRight") +(cl-define-keysym #xfee6 "Pointer_DownLeft") +(cl-define-keysym #xfee7 "Pointer_DownRight") +(cl-define-keysym #xfee8 "Pointer_Button_Dflt") +(cl-define-keysym #xfee9 "Pointer_Button1") +(cl-define-keysym #xfeea "Pointer_Button2") +(cl-define-keysym #xfeeb "Pointer_Button3") +(cl-define-keysym #xfeec "Pointer_Button4") +(cl-define-keysym #xfeed "Pointer_Button5") +(cl-define-keysym #xfeee "Pointer_DblClick_Dflt") +(cl-define-keysym #xfeef "Pointer_DblClick1") +(cl-define-keysym #xfef0 "Pointer_DblClick2") +(cl-define-keysym #xfef1 "Pointer_DblClick3") +(cl-define-keysym #xfef2 "Pointer_DblClick4") +(cl-define-keysym #xfef3 "Pointer_DblClick5") +(cl-define-keysym #xfef4 "Pointer_Drag_Dflt") +(cl-define-keysym #xfef5 "Pointer_Drag1") +(cl-define-keysym #xfef6 "Pointer_Drag2") +(cl-define-keysym #xfef7 "Pointer_Drag3") +(cl-define-keysym #xfef8 "Pointer_Drag4") +(cl-define-keysym #xfefd "Pointer_Drag5") +(cl-define-keysym #xfef9 "Pointer_EnableKeys") +(cl-define-keysym #xfefa "Pointer_Accelerate") +(cl-define-keysym #xfefb "Pointer_DfltBtnNext") +(cl-define-keysym #xfefc "Pointer_DfltBtnPrev") +(cl-define-keysym #xfd01 "3270_Duplicate") +(cl-define-keysym #xfd02 "3270_FieldMark") +(cl-define-keysym #xfd03 "3270_Right2") +(cl-define-keysym #xfd04 "3270_Left2") +(cl-define-keysym #xfd05 "3270_BackTab") +(cl-define-keysym #xfd06 "3270_EraseEOF") +(cl-define-keysym #xfd07 "3270_EraseInput") +(cl-define-keysym #xfd08 "3270_Reset") +(cl-define-keysym #xfd09 "3270_Quit") +(cl-define-keysym #xfd0a "3270_PA1") +(cl-define-keysym #xfd0b "3270_PA2") +(cl-define-keysym #xfd0c "3270_PA3") +(cl-define-keysym #xfd0d "3270_Test") +(cl-define-keysym #xfd0e "3270_Attn") +(cl-define-keysym #xfd0f "3270_CursorBlink") +(cl-define-keysym #xfd10 "3270_AltCursor") +(cl-define-keysym #xfd11 "3270_KeyClick") +(cl-define-keysym #xfd12 "3270_Jump") +(cl-define-keysym #xfd13 "3270_Ident") +(cl-define-keysym #xfd14 "3270_Rule") +(cl-define-keysym #xfd15 "3270_Copy") +(cl-define-keysym #xfd16 "3270_Play") +(cl-define-keysym #xfd17 "3270_Setup") +(cl-define-keysym #xfd18 "3270_Record") +(cl-define-keysym #xfd19 "3270_ChangeScreen") +(cl-define-keysym #xfd1a "3270_DeleteWord") +(cl-define-keysym #xfd1b "3270_ExSelect") +(cl-define-keysym #xfd1c "3270_CursorSelect") +(cl-define-keysym #xfd1d "3270_PrintScreen") +(cl-define-keysym #xfd1e "3270_Enter") +(cl-define-keysym #x0020 "space") ;U+0020 SPACE +(cl-define-keysym #x0021 "exclam") ;U+0021 EXCLAMATION MARK +(cl-define-keysym #x0022 "quotedbl") ;U+0022 QUOTATION MARK +(cl-define-keysym #x0023 "numbersign") ;U+0023 NUMBER SIGN +(cl-define-keysym #x0024 "dollar") ;U+0024 DOLLAR SIGN +(cl-define-keysym #x0025 "percent") ;U+0025 PERCENT SIGN +(cl-define-keysym #x0026 "ampersand") ;U+0026 AMPERSAND +(cl-define-keysym #x0027 "apostrophe") ;U+0027 APOSTROPHE +(cl-define-keysym #x0027 "quoteright") ;deprecated +(cl-define-keysym #x0028 "parenleft") ;U+0028 LEFT PARENTHESIS +(cl-define-keysym #x0029 "parenright") ;U+0029 RIGHT PARENTHESIS +(cl-define-keysym #x002a "asterisk") ;U+002A ASTERISK +(cl-define-keysym #x002b "plus") ;U+002B PLUS SIGN +(cl-define-keysym #x002c "comma") ;U+002C COMMA +(cl-define-keysym #x002d "minus") ;U+002D HYPHEN-MINUS +(cl-define-keysym #x002e "period") ;U+002E FULL STOP +(cl-define-keysym #x002f "slash") ;U+002F SOLIDUS +(cl-define-keysym #x0030 "0") ;U+0030 DIGIT ZERO +(cl-define-keysym #x0031 "1") ;U+0031 DIGIT ONE +(cl-define-keysym #x0032 "2") ;U+0032 DIGIT TWO +(cl-define-keysym #x0033 "3") ;U+0033 DIGIT THREE +(cl-define-keysym #x0034 "4") ;U+0034 DIGIT FOUR +(cl-define-keysym #x0035 "5") ;U+0035 DIGIT FIVE +(cl-define-keysym #x0036 "6") ;U+0036 DIGIT SIX +(cl-define-keysym #x0037 "7") ;U+0037 DIGIT SEVEN +(cl-define-keysym #x0038 "8") ;U+0038 DIGIT EIGHT +(cl-define-keysym #x0039 "9") ;U+0039 DIGIT NINE +(cl-define-keysym #x003a "colon") ;U+003A COLON +(cl-define-keysym #x003b "semicolon") ;U+003B SEMICOLON +(cl-define-keysym #x003c "less") ;U+003C LESS-THAN SIGN +(cl-define-keysym #x003d "equal") ;U+003D EQUALS SIGN +(cl-define-keysym #x003e "greater") ;U+003E GREATER-THAN SIGN +(cl-define-keysym #x003f "question") ;U+003F QUESTION MARK +(cl-define-keysym #x0040 "at") ;U+0040 COMMERCIAL AT +(cl-define-keysym #x0041 "A") ;U+0041 LATIN CAPITAL LETTER A +(cl-define-keysym #x0042 "B") ;U+0042 LATIN CAPITAL LETTER B +(cl-define-keysym #x0043 "C") ;U+0043 LATIN CAPITAL LETTER C +(cl-define-keysym #x0044 "D") ;U+0044 LATIN CAPITAL LETTER D +(cl-define-keysym #x0045 "E") ;U+0045 LATIN CAPITAL LETTER E +(cl-define-keysym #x0046 "F") ;U+0046 LATIN CAPITAL LETTER F +(cl-define-keysym #x0047 "G") ;U+0047 LATIN CAPITAL LETTER G +(cl-define-keysym #x0048 "H") ;U+0048 LATIN CAPITAL LETTER H +(cl-define-keysym #x0049 "I") ;U+0049 LATIN CAPITAL LETTER I +(cl-define-keysym #x004a "J") ;U+004A LATIN CAPITAL LETTER J +(cl-define-keysym #x004b "K") ;U+004B LATIN CAPITAL LETTER K +(cl-define-keysym #x004c "L") ;U+004C LATIN CAPITAL LETTER L +(cl-define-keysym #x004d "M") ;U+004D LATIN CAPITAL LETTER M +(cl-define-keysym #x004e "N") ;U+004E LATIN CAPITAL LETTER N +(cl-define-keysym #x004f "O") ;U+004F LATIN CAPITAL LETTER O +(cl-define-keysym #x0050 "P") ;U+0050 LATIN CAPITAL LETTER P +(cl-define-keysym #x0051 "Q") ;U+0051 LATIN CAPITAL LETTER Q +(cl-define-keysym #x0052 "R") ;U+0052 LATIN CAPITAL LETTER R +(cl-define-keysym #x0053 "S") ;U+0053 LATIN CAPITAL LETTER S +(cl-define-keysym #x0054 "T") ;U+0054 LATIN CAPITAL LETTER T +(cl-define-keysym #x0055 "U") ;U+0055 LATIN CAPITAL LETTER U +(cl-define-keysym #x0056 "V") ;U+0056 LATIN CAPITAL LETTER V +(cl-define-keysym #x0057 "W") ;U+0057 LATIN CAPITAL LETTER W +(cl-define-keysym #x0058 "X") ;U+0058 LATIN CAPITAL LETTER X +(cl-define-keysym #x0059 "Y") ;U+0059 LATIN CAPITAL LETTER Y +(cl-define-keysym #x005a "Z") ;U+005A LATIN CAPITAL LETTER Z +(cl-define-keysym #x005b "bracketleft") ;U+005B LEFT SQUARE BRACKET +(cl-define-keysym #x005c "backslash") ;U+005C REVERSE SOLIDUS +(cl-define-keysym #x005d "bracketright") ;U+005D RIGHT SQUARE BRACKET +(cl-define-keysym #x005e "asciicircum") ;U+005E CIRCUMFLEX ACCENT +(cl-define-keysym #x005f "underscore") ;U+005F LOW LINE +(cl-define-keysym #x0060 "grave") ;U+0060 GRAVE ACCENT +(cl-define-keysym #x0060 "quoteleft") ;deprecated +(cl-define-keysym #x0061 "a") ;U+0061 LATIN SMALL LETTER A +(cl-define-keysym #x0062 "b") ;U+0062 LATIN SMALL LETTER B +(cl-define-keysym #x0063 "c") ;U+0063 LATIN SMALL LETTER C +(cl-define-keysym #x0064 "d") ;U+0064 LATIN SMALL LETTER D +(cl-define-keysym #x0065 "e") ;U+0065 LATIN SMALL LETTER E +(cl-define-keysym #x0066 "f") ;U+0066 LATIN SMALL LETTER F +(cl-define-keysym #x0067 "g") ;U+0067 LATIN SMALL LETTER G +(cl-define-keysym #x0068 "h") ;U+0068 LATIN SMALL LETTER H +(cl-define-keysym #x0069 "i") ;U+0069 LATIN SMALL LETTER I +(cl-define-keysym #x006a "j") ;U+006A LATIN SMALL LETTER J +(cl-define-keysym #x006b "k") ;U+006B LATIN SMALL LETTER K +(cl-define-keysym #x006c "l") ;U+006C LATIN SMALL LETTER L +(cl-define-keysym #x006d "m") ;U+006D LATIN SMALL LETTER M +(cl-define-keysym #x006e "n") ;U+006E LATIN SMALL LETTER N +(cl-define-keysym #x006f "o") ;U+006F LATIN SMALL LETTER O +(cl-define-keysym #x0070 "p") ;U+0070 LATIN SMALL LETTER P +(cl-define-keysym #x0071 "q") ;U+0071 LATIN SMALL LETTER Q +(cl-define-keysym #x0072 "r") ;U+0072 LATIN SMALL LETTER R +(cl-define-keysym #x0073 "s") ;U+0073 LATIN SMALL LETTER S +(cl-define-keysym #x0074 "t") ;U+0074 LATIN SMALL LETTER T +(cl-define-keysym #x0075 "u") ;U+0075 LATIN SMALL LETTER U +(cl-define-keysym #x0076 "v") ;U+0076 LATIN SMALL LETTER V +(cl-define-keysym #x0077 "w") ;U+0077 LATIN SMALL LETTER W +(cl-define-keysym #x0078 "x") ;U+0078 LATIN SMALL LETTER X +(cl-define-keysym #x0079 "y") ;U+0079 LATIN SMALL LETTER Y +(cl-define-keysym #x007a "z") ;U+007A LATIN SMALL LETTER Z +(cl-define-keysym #x007b "braceleft") ;U+007B LEFT CURLY BRACKET +(cl-define-keysym #x007c "bar") ;U+007C VERTICAL LINE +(cl-define-keysym #x007d "braceright") ;U+007D RIGHT CURLY BRACKET +(cl-define-keysym #x007e "asciitilde") ;U+007E TILDE +(cl-define-keysym #x00a0 "nobreakspace") ;U+00A0 NO-BREAK SPACE +(cl-define-keysym #x00a1 "exclamdown") ;U+00A1 INVERTED EXCLAMATION MARK +(cl-define-keysym #x00a2 "cent") ;U+00A2 CENT SIGN +(cl-define-keysym #x00a3 "sterling") ;U+00A3 POUND SIGN +(cl-define-keysym #x00a4 "currency") ;U+00A4 CURRENCY SIGN +(cl-define-keysym #x00a5 "yen") ;U+00A5 YEN SIGN +(cl-define-keysym #x00a6 "brokenbar") ;U+00A6 BROKEN BAR +(cl-define-keysym #x00a7 "section") ;U+00A7 SECTION SIGN +(cl-define-keysym #x00a8 "diaeresis") ;U+00A8 DIAERESIS +(cl-define-keysym #x00a9 "copyright") ;U+00A9 COPYRIGHT SIGN +(cl-define-keysym #x00aa "ordfeminine") ;U+00AA FEMININE ORDINAL INDICATOR +(cl-define-keysym #x00ab "guillemotleft") ;U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +(cl-define-keysym #x00ac "notsign") ;U+00AC NOT SIGN +(cl-define-keysym #x00ad "hyphen") ;U+00AD SOFT HYPHEN +(cl-define-keysym #x00ae "registered") ;U+00AE REGISTERED SIGN +(cl-define-keysym #x00af "macron") ;U+00AF MACRON +(cl-define-keysym #x00b0 "degree") ;U+00B0 DEGREE SIGN +(cl-define-keysym #x00b1 "plusminus") ;U+00B1 PLUS-MINUS SIGN +(cl-define-keysym #x00b2 "twosuperior") ;U+00B2 SUPERSCRIPT TWO +(cl-define-keysym #x00b3 "threesuperior") ;U+00B3 SUPERSCRIPT THREE +(cl-define-keysym #x00b4 "acute") ;U+00B4 ACUTE ACCENT +(cl-define-keysym #x00b5 "mu") ;U+00B5 MICRO SIGN +(cl-define-keysym #x00b6 "paragraph") ;U+00B6 PILCROW SIGN +(cl-define-keysym #x00b7 "periodcentered") ;U+00B7 MIDDLE DOT +(cl-define-keysym #x00b8 "cedilla") ;U+00B8 CEDILLA +(cl-define-keysym #x00b9 "onesuperior") ;U+00B9 SUPERSCRIPT ONE +(cl-define-keysym #x00ba "masculine") ;U+00BA MASCULINE ORDINAL INDICATOR +(cl-define-keysym #x00bb "guillemotright") ;U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +(cl-define-keysym #x00bc "onequarter") ;U+00BC VULGAR FRACTION ONE QUARTER +(cl-define-keysym #x00bd "onehalf") ;U+00BD VULGAR FRACTION ONE HALF +(cl-define-keysym #x00be "threequarters") ;U+00BE VULGAR FRACTION THREE QUARTERS +(cl-define-keysym #x00bf "questiondown") ;U+00BF INVERTED QUESTION MARK +(cl-define-keysym #x00c0 "Agrave") ;U+00C0 LATIN CAPITAL LETTER A WITH GRAVE +(cl-define-keysym #x00c1 "Aacute") ;U+00C1 LATIN CAPITAL LETTER A WITH ACUTE +(cl-define-keysym #x00c2 "Acircumflex") ;U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX +(cl-define-keysym #x00c3 "Atilde") ;U+00C3 LATIN CAPITAL LETTER A WITH TILDE +(cl-define-keysym #x00c4 "Adiaeresis") ;U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS +(cl-define-keysym #x00c5 "Aring") ;U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE +(cl-define-keysym #x00c6 "AE") ;U+00C6 LATIN CAPITAL LETTER AE +(cl-define-keysym #x00c7 "Ccedilla") ;U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA +(cl-define-keysym #x00c8 "Egrave") ;U+00C8 LATIN CAPITAL LETTER E WITH GRAVE +(cl-define-keysym #x00c9 "Eacute") ;U+00C9 LATIN CAPITAL LETTER E WITH ACUTE +(cl-define-keysym #x00ca "Ecircumflex") ;U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX +(cl-define-keysym #x00cb "Ediaeresis") ;U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS +(cl-define-keysym #x00cc "Igrave") ;U+00CC LATIN CAPITAL LETTER I WITH GRAVE +(cl-define-keysym #x00cd "Iacute") ;U+00CD LATIN CAPITAL LETTER I WITH ACUTE +(cl-define-keysym #x00ce "Icircumflex") ;U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX +(cl-define-keysym #x00cf "Idiaeresis") ;U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS +(cl-define-keysym #x00d0 "ETH") ;U+00D0 LATIN CAPITAL LETTER ETH +(cl-define-keysym #x00d0 "Eth") ;deprecated +(cl-define-keysym #x00d1 "Ntilde") ;U+00D1 LATIN CAPITAL LETTER N WITH TILDE +(cl-define-keysym #x00d2 "Ograve") ;U+00D2 LATIN CAPITAL LETTER O WITH GRAVE +(cl-define-keysym #x00d3 "Oacute") ;U+00D3 LATIN CAPITAL LETTER O WITH ACUTE +(cl-define-keysym #x00d4 "Ocircumflex") ;U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX +(cl-define-keysym #x00d5 "Otilde") ;U+00D5 LATIN CAPITAL LETTER O WITH TILDE +(cl-define-keysym #x00d6 "Odiaeresis") ;U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS +(cl-define-keysym #x00d7 "multiply") ;U+00D7 MULTIPLICATION SIGN +(cl-define-keysym #x00d8 "Oslash") ;U+00D8 LATIN CAPITAL LETTER O WITH STROKE +(cl-define-keysym #x00d8 "Ooblique") ;U+00D8 LATIN CAPITAL LETTER O WITH STROKE +(cl-define-keysym #x00d9 "Ugrave") ;U+00D9 LATIN CAPITAL LETTER U WITH GRAVE +(cl-define-keysym #x00da "Uacute") ;U+00DA LATIN CAPITAL LETTER U WITH ACUTE +(cl-define-keysym #x00db "Ucircumflex") ;U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX +(cl-define-keysym #x00dc "Udiaeresis") ;U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS +(cl-define-keysym #x00dd "Yacute") ;U+00DD LATIN CAPITAL LETTER Y WITH ACUTE +(cl-define-keysym #x00de "THORN") ;U+00DE LATIN CAPITAL LETTER THORN +(cl-define-keysym #x00de "Thorn") ;deprecated +(cl-define-keysym #x00df "ssharp") ;U+00DF LATIN SMALL LETTER SHARP S +(cl-define-keysym #x00e0 "agrave") ;U+00E0 LATIN SMALL LETTER A WITH GRAVE +(cl-define-keysym #x00e1 "aacute") ;U+00E1 LATIN SMALL LETTER A WITH ACUTE +(cl-define-keysym #x00e2 "acircumflex") ;U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX +(cl-define-keysym #x00e3 "atilde") ;U+00E3 LATIN SMALL LETTER A WITH TILDE +(cl-define-keysym #x00e4 "adiaeresis") ;U+00E4 LATIN SMALL LETTER A WITH DIAERESIS +(cl-define-keysym #x00e5 "aring") ;U+00E5 LATIN SMALL LETTER A WITH RING ABOVE +(cl-define-keysym #x00e6 "ae") ;U+00E6 LATIN SMALL LETTER AE +(cl-define-keysym #x00e7 "ccedilla") ;U+00E7 LATIN SMALL LETTER C WITH CEDILLA +(cl-define-keysym #x00e8 "egrave") ;U+00E8 LATIN SMALL LETTER E WITH GRAVE +(cl-define-keysym #x00e9 "eacute") ;U+00E9 LATIN SMALL LETTER E WITH ACUTE +(cl-define-keysym #x00ea "ecircumflex") ;U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX +(cl-define-keysym #x00eb "ediaeresis") ;U+00EB LATIN SMALL LETTER E WITH DIAERESIS +(cl-define-keysym #x00ec "igrave") ;U+00EC LATIN SMALL LETTER I WITH GRAVE +(cl-define-keysym #x00ed "iacute") ;U+00ED LATIN SMALL LETTER I WITH ACUTE +(cl-define-keysym #x00ee "icircumflex") ;U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX +(cl-define-keysym #x00ef "idiaeresis") ;U+00EF LATIN SMALL LETTER I WITH DIAERESIS +(cl-define-keysym #x00f0 "eth") ;U+00F0 LATIN SMALL LETTER ETH +(cl-define-keysym #x00f1 "ntilde") ;U+00F1 LATIN SMALL LETTER N WITH TILDE +(cl-define-keysym #x00f2 "ograve") ;U+00F2 LATIN SMALL LETTER O WITH GRAVE +(cl-define-keysym #x00f3 "oacute") ;U+00F3 LATIN SMALL LETTER O WITH ACUTE +(cl-define-keysym #x00f4 "ocircumflex") ;U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX +(cl-define-keysym #x00f5 "otilde") ;U+00F5 LATIN SMALL LETTER O WITH TILDE +(cl-define-keysym #x00f6 "odiaeresis") ;U+00F6 LATIN SMALL LETTER O WITH DIAERESIS +(cl-define-keysym #x00f7 "division") ;U+00F7 DIVISION SIGN +(cl-define-keysym #x00f8 "oslash") ;U+00F8 LATIN SMALL LETTER O WITH STROKE +(cl-define-keysym #x00f8 "ooblique") ;U+00F8 LATIN SMALL LETTER O WITH STROKE +(cl-define-keysym #x00f9 "ugrave") ;U+00F9 LATIN SMALL LETTER U WITH GRAVE +(cl-define-keysym #x00fa "uacute") ;U+00FA LATIN SMALL LETTER U WITH ACUTE +(cl-define-keysym #x00fb "ucircumflex") ;U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX +(cl-define-keysym #x00fc "udiaeresis") ;U+00FC LATIN SMALL LETTER U WITH DIAERESIS +(cl-define-keysym #x00fd "yacute") ;U+00FD LATIN SMALL LETTER Y WITH ACUTE +(cl-define-keysym #x00fe "thorn") ;U+00FE LATIN SMALL LETTER THORN +(cl-define-keysym #x00ff "ydiaeresis") ;U+00FF LATIN SMALL LETTER Y WITH DIAERESIS +(cl-define-keysym #x01a1 "Aogonek") ;U+0104 LATIN CAPITAL LETTER A WITH OGONEK +(cl-define-keysym #x01a2 "breve") ;U+02D8 BREVE +(cl-define-keysym #x01a3 "Lstroke") ;U+0141 LATIN CAPITAL LETTER L WITH STROKE +(cl-define-keysym #x01a5 "Lcaron") ;U+013D LATIN CAPITAL LETTER L WITH CARON +(cl-define-keysym #x01a6 "Sacute") ;U+015A LATIN CAPITAL LETTER S WITH ACUTE +(cl-define-keysym #x01a9 "Scaron") ;U+0160 LATIN CAPITAL LETTER S WITH CARON +(cl-define-keysym #x01aa "Scedilla") ;U+015E LATIN CAPITAL LETTER S WITH CEDILLA +(cl-define-keysym #x01ab "Tcaron") ;U+0164 LATIN CAPITAL LETTER T WITH CARON +(cl-define-keysym #x01ac "Zacute") ;U+0179 LATIN CAPITAL LETTER Z WITH ACUTE +(cl-define-keysym #x01ae "Zcaron") ;U+017D LATIN CAPITAL LETTER Z WITH CARON +(cl-define-keysym #x01af "Zabovedot") ;U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE +(cl-define-keysym #x01b1 "aogonek") ;U+0105 LATIN SMALL LETTER A WITH OGONEK +(cl-define-keysym #x01b2 "ogonek") ;U+02DB OGONEK +(cl-define-keysym #x01b3 "lstroke") ;U+0142 LATIN SMALL LETTER L WITH STROKE +(cl-define-keysym #x01b5 "lcaron") ;U+013E LATIN SMALL LETTER L WITH CARON +(cl-define-keysym #x01b6 "sacute") ;U+015B LATIN SMALL LETTER S WITH ACUTE +(cl-define-keysym #x01b7 "caron") ;U+02C7 CARON +(cl-define-keysym #x01b9 "scaron") ;U+0161 LATIN SMALL LETTER S WITH CARON +(cl-define-keysym #x01ba "scedilla") ;U+015F LATIN SMALL LETTER S WITH CEDILLA +(cl-define-keysym #x01bb "tcaron") ;U+0165 LATIN SMALL LETTER T WITH CARON +(cl-define-keysym #x01bc "zacute") ;U+017A LATIN SMALL LETTER Z WITH ACUTE +(cl-define-keysym #x01bd "doubleacute") ;U+02DD DOUBLE ACUTE ACCENT +(cl-define-keysym #x01be "zcaron") ;U+017E LATIN SMALL LETTER Z WITH CARON +(cl-define-keysym #x01bf "zabovedot") ;U+017C LATIN SMALL LETTER Z WITH DOT ABOVE +(cl-define-keysym #x01c0 "Racute") ;U+0154 LATIN CAPITAL LETTER R WITH ACUTE +(cl-define-keysym #x01c3 "Abreve") ;U+0102 LATIN CAPITAL LETTER A WITH BREVE +(cl-define-keysym #x01c5 "Lacute") ;U+0139 LATIN CAPITAL LETTER L WITH ACUTE +(cl-define-keysym #x01c6 "Cacute") ;U+0106 LATIN CAPITAL LETTER C WITH ACUTE +(cl-define-keysym #x01c8 "Ccaron") ;U+010C LATIN CAPITAL LETTER C WITH CARON +(cl-define-keysym #x01ca "Eogonek") ;U+0118 LATIN CAPITAL LETTER E WITH OGONEK +(cl-define-keysym #x01cc "Ecaron") ;U+011A LATIN CAPITAL LETTER E WITH CARON +(cl-define-keysym #x01cf "Dcaron") ;U+010E LATIN CAPITAL LETTER D WITH CARON +(cl-define-keysym #x01d0 "Dstroke") ;U+0110 LATIN CAPITAL LETTER D WITH STROKE +(cl-define-keysym #x01d1 "Nacute") ;U+0143 LATIN CAPITAL LETTER N WITH ACUTE +(cl-define-keysym #x01d2 "Ncaron") ;U+0147 LATIN CAPITAL LETTER N WITH CARON +(cl-define-keysym #x01d5 "Odoubleacute") ;U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +(cl-define-keysym #x01d8 "Rcaron") ;U+0158 LATIN CAPITAL LETTER R WITH CARON +(cl-define-keysym #x01d9 "Uring") ;U+016E LATIN CAPITAL LETTER U WITH RING ABOVE +(cl-define-keysym #x01db "Udoubleacute") ;U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +(cl-define-keysym #x01de "Tcedilla") ;U+0162 LATIN CAPITAL LETTER T WITH CEDILLA +(cl-define-keysym #x01e0 "racute") ;U+0155 LATIN SMALL LETTER R WITH ACUTE +(cl-define-keysym #x01e3 "abreve") ;U+0103 LATIN SMALL LETTER A WITH BREVE +(cl-define-keysym #x01e5 "lacute") ;U+013A LATIN SMALL LETTER L WITH ACUTE +(cl-define-keysym #x01e6 "cacute") ;U+0107 LATIN SMALL LETTER C WITH ACUTE +(cl-define-keysym #x01e8 "ccaron") ;U+010D LATIN SMALL LETTER C WITH CARON +(cl-define-keysym #x01ea "eogonek") ;U+0119 LATIN SMALL LETTER E WITH OGONEK +(cl-define-keysym #x01ec "ecaron") ;U+011B LATIN SMALL LETTER E WITH CARON +(cl-define-keysym #x01ef "dcaron") ;U+010F LATIN SMALL LETTER D WITH CARON +(cl-define-keysym #x01f0 "dstroke") ;U+0111 LATIN SMALL LETTER D WITH STROKE +(cl-define-keysym #x01f1 "nacute") ;U+0144 LATIN SMALL LETTER N WITH ACUTE +(cl-define-keysym #x01f2 "ncaron") ;U+0148 LATIN SMALL LETTER N WITH CARON +(cl-define-keysym #x01f5 "odoubleacute") ;U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE +(cl-define-keysym #x01fb "udoubleacute") ;U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE +(cl-define-keysym #x01f8 "rcaron") ;U+0159 LATIN SMALL LETTER R WITH CARON +(cl-define-keysym #x01f9 "uring") ;U+016F LATIN SMALL LETTER U WITH RING ABOVE +(cl-define-keysym #x01fe "tcedilla") ;U+0163 LATIN SMALL LETTER T WITH CEDILLA +(cl-define-keysym #x01ff "abovedot") ;U+02D9 DOT ABOVE +(cl-define-keysym #x02a1 "Hstroke") ;U+0126 LATIN CAPITAL LETTER H WITH STROKE +(cl-define-keysym #x02a6 "Hcircumflex") ;U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX +(cl-define-keysym #x02a9 "Iabovedot") ;U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE +(cl-define-keysym #x02ab "Gbreve") ;U+011E LATIN CAPITAL LETTER G WITH BREVE +(cl-define-keysym #x02ac "Jcircumflex") ;U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX +(cl-define-keysym #x02b1 "hstroke") ;U+0127 LATIN SMALL LETTER H WITH STROKE +(cl-define-keysym #x02b6 "hcircumflex") ;U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX +(cl-define-keysym #x02b9 "idotless") ;U+0131 LATIN SMALL LETTER DOTLESS I +(cl-define-keysym #x02bb "gbreve") ;U+011F LATIN SMALL LETTER G WITH BREVE +(cl-define-keysym #x02bc "jcircumflex") ;U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX +(cl-define-keysym #x02c5 "Cabovedot") ;U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE +(cl-define-keysym #x02c6 "Ccircumflex") ;U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX +(cl-define-keysym #x02d5 "Gabovedot") ;U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE +(cl-define-keysym #x02d8 "Gcircumflex") ;U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX +(cl-define-keysym #x02dd "Ubreve") ;U+016C LATIN CAPITAL LETTER U WITH BREVE +(cl-define-keysym #x02de "Scircumflex") ;U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX +(cl-define-keysym #x02e5 "cabovedot") ;U+010B LATIN SMALL LETTER C WITH DOT ABOVE +(cl-define-keysym #x02e6 "ccircumflex") ;U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX +(cl-define-keysym #x02f5 "gabovedot") ;U+0121 LATIN SMALL LETTER G WITH DOT ABOVE +(cl-define-keysym #x02f8 "gcircumflex") ;U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX +(cl-define-keysym #x02fd "ubreve") ;U+016D LATIN SMALL LETTER U WITH BREVE +(cl-define-keysym #x02fe "scircumflex") ;U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX +(cl-define-keysym #x03a2 "kra") ;U+0138 LATIN SMALL LETTER KRA +(cl-define-keysym #x03a2 "kappa") ;deprecated +(cl-define-keysym #x03a3 "Rcedilla") ;U+0156 LATIN CAPITAL LETTER R WITH CEDILLA +(cl-define-keysym #x03a5 "Itilde") ;U+0128 LATIN CAPITAL LETTER I WITH TILDE +(cl-define-keysym #x03a6 "Lcedilla") ;U+013B LATIN CAPITAL LETTER L WITH CEDILLA +(cl-define-keysym #x03aa "Emacron") ;U+0112 LATIN CAPITAL LETTER E WITH MACRON +(cl-define-keysym #x03ab "Gcedilla") ;U+0122 LATIN CAPITAL LETTER G WITH CEDILLA +(cl-define-keysym #x03ac "Tslash") ;U+0166 LATIN CAPITAL LETTER T WITH STROKE +(cl-define-keysym #x03b3 "rcedilla") ;U+0157 LATIN SMALL LETTER R WITH CEDILLA +(cl-define-keysym #x03b5 "itilde") ;U+0129 LATIN SMALL LETTER I WITH TILDE +(cl-define-keysym #x03b6 "lcedilla") ;U+013C LATIN SMALL LETTER L WITH CEDILLA +(cl-define-keysym #x03ba "emacron") ;U+0113 LATIN SMALL LETTER E WITH MACRON +(cl-define-keysym #x03bb "gcedilla") ;U+0123 LATIN SMALL LETTER G WITH CEDILLA +(cl-define-keysym #x03bc "tslash") ;U+0167 LATIN SMALL LETTER T WITH STROKE +(cl-define-keysym #x03bd "ENG") ;U+014A LATIN CAPITAL LETTER ENG +(cl-define-keysym #x03bf "eng") ;U+014B LATIN SMALL LETTER ENG +(cl-define-keysym #x03c0 "Amacron") ;U+0100 LATIN CAPITAL LETTER A WITH MACRON +(cl-define-keysym #x03c7 "Iogonek") ;U+012E LATIN CAPITAL LETTER I WITH OGONEK +(cl-define-keysym #x03cc "Eabovedot") ;U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE +(cl-define-keysym #x03cf "Imacron") ;U+012A LATIN CAPITAL LETTER I WITH MACRON +(cl-define-keysym #x03d1 "Ncedilla") ;U+0145 LATIN CAPITAL LETTER N WITH CEDILLA +(cl-define-keysym #x03d2 "Omacron") ;U+014C LATIN CAPITAL LETTER O WITH MACRON +(cl-define-keysym #x03d3 "Kcedilla") ;U+0136 LATIN CAPITAL LETTER K WITH CEDILLA +(cl-define-keysym #x03d9 "Uogonek") ;U+0172 LATIN CAPITAL LETTER U WITH OGONEK +(cl-define-keysym #x03dd "Utilde") ;U+0168 LATIN CAPITAL LETTER U WITH TILDE +(cl-define-keysym #x03de "Umacron") ;U+016A LATIN CAPITAL LETTER U WITH MACRON +(cl-define-keysym #x03e0 "amacron") ;U+0101 LATIN SMALL LETTER A WITH MACRON +(cl-define-keysym #x03e7 "iogonek") ;U+012F LATIN SMALL LETTER I WITH OGONEK +(cl-define-keysym #x03ec "eabovedot") ;U+0117 LATIN SMALL LETTER E WITH DOT ABOVE +(cl-define-keysym #x03ef "imacron") ;U+012B LATIN SMALL LETTER I WITH MACRON +(cl-define-keysym #x03f1 "ncedilla") ;U+0146 LATIN SMALL LETTER N WITH CEDILLA +(cl-define-keysym #x03f2 "omacron") ;U+014D LATIN SMALL LETTER O WITH MACRON +(cl-define-keysym #x03f3 "kcedilla") ;U+0137 LATIN SMALL LETTER K WITH CEDILLA +(cl-define-keysym #x03f9 "uogonek") ;U+0173 LATIN SMALL LETTER U WITH OGONEK +(cl-define-keysym #x03fd "utilde") ;U+0169 LATIN SMALL LETTER U WITH TILDE +(cl-define-keysym #x03fe "umacron") ;U+016B LATIN SMALL LETTER U WITH MACRON +(cl-define-keysym #x1001e02 "Babovedot") ;U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE +(cl-define-keysym #x1001e03 "babovedot") ;U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE +(cl-define-keysym #x1001e0a "Dabovedot") ;U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE +(cl-define-keysym #x1001e80 "Wgrave") ;U+1E80 LATIN CAPITAL LETTER W WITH GRAVE +(cl-define-keysym #x1001e82 "Wacute") ;U+1E82 LATIN CAPITAL LETTER W WITH ACUTE +(cl-define-keysym #x1001e0b "dabovedot") ;U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE +(cl-define-keysym #x1001ef2 "Ygrave") ;U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE +(cl-define-keysym #x1001e1e "Fabovedot") ;U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE +(cl-define-keysym #x1001e1f "fabovedot") ;U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE +(cl-define-keysym #x1001e40 "Mabovedot") ;U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE +(cl-define-keysym #x1001e41 "mabovedot") ;U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE +(cl-define-keysym #x1001e56 "Pabovedot") ;U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE +(cl-define-keysym #x1001e81 "wgrave") ;U+1E81 LATIN SMALL LETTER W WITH GRAVE +(cl-define-keysym #x1001e57 "pabovedot") ;U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE +(cl-define-keysym #x1001e83 "wacute") ;U+1E83 LATIN SMALL LETTER W WITH ACUTE +(cl-define-keysym #x1001e60 "Sabovedot") ;U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE +(cl-define-keysym #x1001ef3 "ygrave") ;U+1EF3 LATIN SMALL LETTER Y WITH GRAVE +(cl-define-keysym #x1001e84 "Wdiaeresis") ;U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS +(cl-define-keysym #x1001e85 "wdiaeresis") ;U+1E85 LATIN SMALL LETTER W WITH DIAERESIS +(cl-define-keysym #x1001e61 "sabovedot") ;U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE +(cl-define-keysym #x1000174 "Wcircumflex") ;U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX +(cl-define-keysym #x1001e6a "Tabovedot") ;U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE +(cl-define-keysym #x1000176 "Ycircumflex") ;U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +(cl-define-keysym #x1000175 "wcircumflex") ;U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX +(cl-define-keysym #x1001e6b "tabovedot") ;U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE +(cl-define-keysym #x1000177 "ycircumflex") ;U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX +(cl-define-keysym #x13bc "OE") ;U+0152 LATIN CAPITAL LIGATURE OE +(cl-define-keysym #x13bd "oe") ;U+0153 LATIN SMALL LIGATURE OE +(cl-define-keysym #x13be "Ydiaeresis") ;U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS +(cl-define-keysym #x047e "overline") ;U+203E OVERLINE +(cl-define-keysym #x04a1 "kana_fullstop") ;U+3002 IDEOGRAPHIC FULL STOP +(cl-define-keysym #x04a2 "kana_openingbracket") ;U+300C LEFT CORNER BRACKET +(cl-define-keysym #x04a3 "kana_closingbracket") ;U+300D RIGHT CORNER BRACKET +(cl-define-keysym #x04a4 "kana_comma") ;U+3001 IDEOGRAPHIC COMMA +(cl-define-keysym #x04a5 "kana_conjunctive") ;U+30FB KATAKANA MIDDLE DOT +(cl-define-keysym #x04a5 "kana_middledot") ;deprecated +(cl-define-keysym #x04a6 "kana_WO") ;U+30F2 KATAKANA LETTER WO +(cl-define-keysym #x04a7 "kana_a") ;U+30A1 KATAKANA LETTER SMALL A +(cl-define-keysym #x04a8 "kana_i") ;U+30A3 KATAKANA LETTER SMALL I +(cl-define-keysym #x04a9 "kana_u") ;U+30A5 KATAKANA LETTER SMALL U +(cl-define-keysym #x04aa "kana_e") ;U+30A7 KATAKANA LETTER SMALL E +(cl-define-keysym #x04ab "kana_o") ;U+30A9 KATAKANA LETTER SMALL O +(cl-define-keysym #x04ac "kana_ya") ;U+30E3 KATAKANA LETTER SMALL YA +(cl-define-keysym #x04ad "kana_yu") ;U+30E5 KATAKANA LETTER SMALL YU +(cl-define-keysym #x04ae "kana_yo") ;U+30E7 KATAKANA LETTER SMALL YO +(cl-define-keysym #x04af "kana_tsu") ;U+30C3 KATAKANA LETTER SMALL TU +(cl-define-keysym #x04af "kana_tu") ;deprecated +(cl-define-keysym #x04b0 "prolongedsound") ;U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK +(cl-define-keysym #x04b1 "kana_A") ;U+30A2 KATAKANA LETTER A +(cl-define-keysym #x04b2 "kana_I") ;U+30A4 KATAKANA LETTER I +(cl-define-keysym #x04b3 "kana_U") ;U+30A6 KATAKANA LETTER U +(cl-define-keysym #x04b4 "kana_E") ;U+30A8 KATAKANA LETTER E +(cl-define-keysym #x04b5 "kana_O") ;U+30AA KATAKANA LETTER O +(cl-define-keysym #x04b6 "kana_KA") ;U+30AB KATAKANA LETTER KA +(cl-define-keysym #x04b7 "kana_KI") ;U+30AD KATAKANA LETTER KI +(cl-define-keysym #x04b8 "kana_KU") ;U+30AF KATAKANA LETTER KU +(cl-define-keysym #x04b9 "kana_KE") ;U+30B1 KATAKANA LETTER KE +(cl-define-keysym #x04ba "kana_KO") ;U+30B3 KATAKANA LETTER KO +(cl-define-keysym #x04bb "kana_SA") ;U+30B5 KATAKANA LETTER SA +(cl-define-keysym #x04bc "kana_SHI") ;U+30B7 KATAKANA LETTER SI +(cl-define-keysym #x04bd "kana_SU") ;U+30B9 KATAKANA LETTER SU +(cl-define-keysym #x04be "kana_SE") ;U+30BB KATAKANA LETTER SE +(cl-define-keysym #x04bf "kana_SO") ;U+30BD KATAKANA LETTER SO +(cl-define-keysym #x04c0 "kana_TA") ;U+30BF KATAKANA LETTER TA +(cl-define-keysym #x04c1 "kana_CHI") ;U+30C1 KATAKANA LETTER TI +(cl-define-keysym #x04c1 "kana_TI") ;deprecated +(cl-define-keysym #x04c2 "kana_TSU") ;U+30C4 KATAKANA LETTER TU +(cl-define-keysym #x04c2 "kana_TU") ;deprecated +(cl-define-keysym #x04c3 "kana_TE") ;U+30C6 KATAKANA LETTER TE +(cl-define-keysym #x04c4 "kana_TO") ;U+30C8 KATAKANA LETTER TO +(cl-define-keysym #x04c5 "kana_NA") ;U+30CA KATAKANA LETTER NA +(cl-define-keysym #x04c6 "kana_NI") ;U+30CB KATAKANA LETTER NI +(cl-define-keysym #x04c7 "kana_NU") ;U+30CC KATAKANA LETTER NU +(cl-define-keysym #x04c8 "kana_NE") ;U+30CD KATAKANA LETTER NE +(cl-define-keysym #x04c9 "kana_NO") ;U+30CE KATAKANA LETTER NO +(cl-define-keysym #x04ca "kana_HA") ;U+30CF KATAKANA LETTER HA +(cl-define-keysym #x04cb "kana_HI") ;U+30D2 KATAKANA LETTER HI +(cl-define-keysym #x04cc "kana_FU") ;U+30D5 KATAKANA LETTER HU +(cl-define-keysym #x04cc "kana_HU") ;deprecated +(cl-define-keysym #x04cd "kana_HE") ;U+30D8 KATAKANA LETTER HE +(cl-define-keysym #x04ce "kana_HO") ;U+30DB KATAKANA LETTER HO +(cl-define-keysym #x04cf "kana_MA") ;U+30DE KATAKANA LETTER MA +(cl-define-keysym #x04d0 "kana_MI") ;U+30DF KATAKANA LETTER MI +(cl-define-keysym #x04d1 "kana_MU") ;U+30E0 KATAKANA LETTER MU +(cl-define-keysym #x04d2 "kana_ME") ;U+30E1 KATAKANA LETTER ME +(cl-define-keysym #x04d3 "kana_MO") ;U+30E2 KATAKANA LETTER MO +(cl-define-keysym #x04d4 "kana_YA") ;U+30E4 KATAKANA LETTER YA +(cl-define-keysym #x04d5 "kana_YU") ;U+30E6 KATAKANA LETTER YU +(cl-define-keysym #x04d6 "kana_YO") ;U+30E8 KATAKANA LETTER YO +(cl-define-keysym #x04d7 "kana_RA") ;U+30E9 KATAKANA LETTER RA +(cl-define-keysym #x04d8 "kana_RI") ;U+30EA KATAKANA LETTER RI +(cl-define-keysym #x04d9 "kana_RU") ;U+30EB KATAKANA LETTER RU +(cl-define-keysym #x04da "kana_RE") ;U+30EC KATAKANA LETTER RE +(cl-define-keysym #x04db "kana_RO") ;U+30ED KATAKANA LETTER RO +(cl-define-keysym #x04dc "kana_WA") ;U+30EF KATAKANA LETTER WA +(cl-define-keysym #x04dd "kana_N") ;U+30F3 KATAKANA LETTER N +(cl-define-keysym #x04de "voicedsound") ;U+309B KATAKANA-HIRAGANA VOICED SOUND MARK +(cl-define-keysym #x04df "semivoicedsound") ;U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +(cl-define-keysym #xff7e "kana_switch") ;Alias for mode_switch +(cl-define-keysym #x10006f0 "Farsi_0") ;U+06F0 EXTENDED ARABIC-INDIC DIGIT ZERO +(cl-define-keysym #x10006f1 "Farsi_1") ;U+06F1 EXTENDED ARABIC-INDIC DIGIT ONE +(cl-define-keysym #x10006f2 "Farsi_2") ;U+06F2 EXTENDED ARABIC-INDIC DIGIT TWO +(cl-define-keysym #x10006f3 "Farsi_3") ;U+06F3 EXTENDED ARABIC-INDIC DIGIT THREE +(cl-define-keysym #x10006f4 "Farsi_4") ;U+06F4 EXTENDED ARABIC-INDIC DIGIT FOUR +(cl-define-keysym #x10006f5 "Farsi_5") ;U+06F5 EXTENDED ARABIC-INDIC DIGIT FIVE +(cl-define-keysym #x10006f6 "Farsi_6") ;U+06F6 EXTENDED ARABIC-INDIC DIGIT SIX +(cl-define-keysym #x10006f7 "Farsi_7") ;U+06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN +(cl-define-keysym #x10006f8 "Farsi_8") ;U+06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT +(cl-define-keysym #x10006f9 "Farsi_9") ;U+06F9 EXTENDED ARABIC-INDIC DIGIT NINE +(cl-define-keysym #x100066a "Arabic_percent") ;U+066A ARABIC PERCENT SIGN +(cl-define-keysym #x1000670 "Arabic_superscript_alef") ;U+0670 ARABIC LETTER SUPERSCRIPT ALEF +(cl-define-keysym #x1000679 "Arabic_tteh") ;U+0679 ARABIC LETTER TTEH +(cl-define-keysym #x100067e "Arabic_peh") ;U+067E ARABIC LETTER PEH +(cl-define-keysym #x1000686 "Arabic_tcheh") ;U+0686 ARABIC LETTER TCHEH +(cl-define-keysym #x1000688 "Arabic_ddal") ;U+0688 ARABIC LETTER DDAL +(cl-define-keysym #x1000691 "Arabic_rreh") ;U+0691 ARABIC LETTER RREH +(cl-define-keysym #x05ac "Arabic_comma") ;U+060C ARABIC COMMA +(cl-define-keysym #x10006d4 "Arabic_fullstop") ;U+06D4 ARABIC FULL STOP +(cl-define-keysym #x1000660 "Arabic_0") ;U+0660 ARABIC-INDIC DIGIT ZERO +(cl-define-keysym #x1000661 "Arabic_1") ;U+0661 ARABIC-INDIC DIGIT ONE +(cl-define-keysym #x1000662 "Arabic_2") ;U+0662 ARABIC-INDIC DIGIT TWO +(cl-define-keysym #x1000663 "Arabic_3") ;U+0663 ARABIC-INDIC DIGIT THREE +(cl-define-keysym #x1000664 "Arabic_4") ;U+0664 ARABIC-INDIC DIGIT FOUR +(cl-define-keysym #x1000665 "Arabic_5") ;U+0665 ARABIC-INDIC DIGIT FIVE +(cl-define-keysym #x1000666 "Arabic_6") ;U+0666 ARABIC-INDIC DIGIT SIX +(cl-define-keysym #x1000667 "Arabic_7") ;U+0667 ARABIC-INDIC DIGIT SEVEN +(cl-define-keysym #x1000668 "Arabic_8") ;U+0668 ARABIC-INDIC DIGIT EIGHT +(cl-define-keysym #x1000669 "Arabic_9") ;U+0669 ARABIC-INDIC DIGIT NINE +(cl-define-keysym #x05bb "Arabic_semicolon") ;U+061B ARABIC SEMICOLON +(cl-define-keysym #x05bf "Arabic_question_mark") ;U+061F ARABIC QUESTION MARK +(cl-define-keysym #x05c1 "Arabic_hamza") ;U+0621 ARABIC LETTER HAMZA +(cl-define-keysym #x05c2 "Arabic_maddaonalef") ;U+0622 ARABIC LETTER ALEF WITH MADDA ABOVE +(cl-define-keysym #x05c3 "Arabic_hamzaonalef") ;U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE +(cl-define-keysym #x05c4 "Arabic_hamzaonwaw") ;U+0624 ARABIC LETTER WAW WITH HAMZA ABOVE +(cl-define-keysym #x05c5 "Arabic_hamzaunderalef") ;U+0625 ARABIC LETTER ALEF WITH HAMZA BELOW +(cl-define-keysym #x05c6 "Arabic_hamzaonyeh") ;U+0626 ARABIC LETTER YEH WITH HAMZA ABOVE +(cl-define-keysym #x05c7 "Arabic_alef") ;U+0627 ARABIC LETTER ALEF +(cl-define-keysym #x05c8 "Arabic_beh") ;U+0628 ARABIC LETTER BEH +(cl-define-keysym #x05c9 "Arabic_tehmarbuta") ;U+0629 ARABIC LETTER TEH MARBUTA +(cl-define-keysym #x05ca "Arabic_teh") ;U+062A ARABIC LETTER TEH +(cl-define-keysym #x05cb "Arabic_theh") ;U+062B ARABIC LETTER THEH +(cl-define-keysym #x05cc "Arabic_jeem") ;U+062C ARABIC LETTER JEEM +(cl-define-keysym #x05cd "Arabic_hah") ;U+062D ARABIC LETTER HAH +(cl-define-keysym #x05ce "Arabic_khah") ;U+062E ARABIC LETTER KHAH +(cl-define-keysym #x05cf "Arabic_dal") ;U+062F ARABIC LETTER DAL +(cl-define-keysym #x05d0 "Arabic_thal") ;U+0630 ARABIC LETTER THAL +(cl-define-keysym #x05d1 "Arabic_ra") ;U+0631 ARABIC LETTER REH +(cl-define-keysym #x05d2 "Arabic_zain") ;U+0632 ARABIC LETTER ZAIN +(cl-define-keysym #x05d3 "Arabic_seen") ;U+0633 ARABIC LETTER SEEN +(cl-define-keysym #x05d4 "Arabic_sheen") ;U+0634 ARABIC LETTER SHEEN +(cl-define-keysym #x05d5 "Arabic_sad") ;U+0635 ARABIC LETTER SAD +(cl-define-keysym #x05d6 "Arabic_dad") ;U+0636 ARABIC LETTER DAD +(cl-define-keysym #x05d7 "Arabic_tah") ;U+0637 ARABIC LETTER TAH +(cl-define-keysym #x05d8 "Arabic_zah") ;U+0638 ARABIC LETTER ZAH +(cl-define-keysym #x05d9 "Arabic_ain") ;U+0639 ARABIC LETTER AIN +(cl-define-keysym #x05da "Arabic_ghain") ;U+063A ARABIC LETTER GHAIN +(cl-define-keysym #x05e0 "Arabic_tatweel") ;U+0640 ARABIC TATWEEL +(cl-define-keysym #x05e1 "Arabic_feh") ;U+0641 ARABIC LETTER FEH +(cl-define-keysym #x05e2 "Arabic_qaf") ;U+0642 ARABIC LETTER QAF +(cl-define-keysym #x05e3 "Arabic_kaf") ;U+0643 ARABIC LETTER KAF +(cl-define-keysym #x05e4 "Arabic_lam") ;U+0644 ARABIC LETTER LAM +(cl-define-keysym #x05e5 "Arabic_meem") ;U+0645 ARABIC LETTER MEEM +(cl-define-keysym #x05e6 "Arabic_noon") ;U+0646 ARABIC LETTER NOON +(cl-define-keysym #x05e7 "Arabic_ha") ;U+0647 ARABIC LETTER HEH +(cl-define-keysym #x05e7 "Arabic_heh") ;deprecated +(cl-define-keysym #x05e8 "Arabic_waw") ;U+0648 ARABIC LETTER WAW +(cl-define-keysym #x05e9 "Arabic_alefmaksura") ;U+0649 ARABIC LETTER ALEF MAKSURA +(cl-define-keysym #x05ea "Arabic_yeh") ;U+064A ARABIC LETTER YEH +(cl-define-keysym #x05eb "Arabic_fathatan") ;U+064B ARABIC FATHATAN +(cl-define-keysym #x05ec "Arabic_dammatan") ;U+064C ARABIC DAMMATAN +(cl-define-keysym #x05ed "Arabic_kasratan") ;U+064D ARABIC KASRATAN +(cl-define-keysym #x05ee "Arabic_fatha") ;U+064E ARABIC FATHA +(cl-define-keysym #x05ef "Arabic_damma") ;U+064F ARABIC DAMMA +(cl-define-keysym #x05f0 "Arabic_kasra") ;U+0650 ARABIC KASRA +(cl-define-keysym #x05f1 "Arabic_shadda") ;U+0651 ARABIC SHADDA +(cl-define-keysym #x05f2 "Arabic_sukun") ;U+0652 ARABIC SUKUN +(cl-define-keysym #x1000653 "Arabic_madda_above") ;U+0653 ARABIC MADDAH ABOVE +(cl-define-keysym #x1000654 "Arabic_hamza_above") ;U+0654 ARABIC HAMZA ABOVE +(cl-define-keysym #x1000655 "Arabic_hamza_below") ;U+0655 ARABIC HAMZA BELOW +(cl-define-keysym #x1000698 "Arabic_jeh") ;U+0698 ARABIC LETTER JEH +(cl-define-keysym #x10006a4 "Arabic_veh") ;U+06A4 ARABIC LETTER VEH +(cl-define-keysym #x10006a9 "Arabic_keheh") ;U+06A9 ARABIC LETTER KEHEH +(cl-define-keysym #x10006af "Arabic_gaf") ;U+06AF ARABIC LETTER GAF +(cl-define-keysym #x10006ba "Arabic_noon_ghunna") ;U+06BA ARABIC LETTER NOON GHUNNA +(cl-define-keysym #x10006be "Arabic_heh_doachashmee") ;U+06BE ARABIC LETTER HEH DOACHASHMEE +(cl-define-keysym #x10006cc "Farsi_yeh") ;U+06CC ARABIC LETTER FARSI YEH +(cl-define-keysym #x10006cc "Arabic_farsi_yeh") ;U+06CC ARABIC LETTER FARSI YEH +(cl-define-keysym #x10006d2 "Arabic_yeh_baree") ;U+06D2 ARABIC LETTER YEH BARREE +(cl-define-keysym #x10006c1 "Arabic_heh_goal") ;U+06C1 ARABIC LETTER HEH GOAL +(cl-define-keysym #xff7e "Arabic_switch") ;Alias for mode_switch +(cl-define-keysym #x1000492 "Cyrillic_GHE_bar") ;U+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE +(cl-define-keysym #x1000493 "Cyrillic_ghe_bar") ;U+0493 CYRILLIC SMALL LETTER GHE WITH STROKE +(cl-define-keysym #x1000496 "Cyrillic_ZHE_descender") ;U+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER +(cl-define-keysym #x1000497 "Cyrillic_zhe_descender") ;U+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER +(cl-define-keysym #x100049a "Cyrillic_KA_descender") ;U+049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER +(cl-define-keysym #x100049b "Cyrillic_ka_descender") ;U+049B CYRILLIC SMALL LETTER KA WITH DESCENDER +(cl-define-keysym #x100049c "Cyrillic_KA_vertstroke") ;U+049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE +(cl-define-keysym #x100049d "Cyrillic_ka_vertstroke") ;U+049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE +(cl-define-keysym #x10004a2 "Cyrillic_EN_descender") ;U+04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER +(cl-define-keysym #x10004a3 "Cyrillic_en_descender") ;U+04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER +(cl-define-keysym #x10004ae "Cyrillic_U_straight") ;U+04AE CYRILLIC CAPITAL LETTER STRAIGHT U +(cl-define-keysym #x10004af "Cyrillic_u_straight") ;U+04AF CYRILLIC SMALL LETTER STRAIGHT U +(cl-define-keysym #x10004b0 "Cyrillic_U_straight_bar") ;U+04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE +(cl-define-keysym #x10004b1 "Cyrillic_u_straight_bar") ;U+04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE +(cl-define-keysym #x10004b2 "Cyrillic_HA_descender") ;U+04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER +(cl-define-keysym #x10004b3 "Cyrillic_ha_descender") ;U+04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER +(cl-define-keysym #x10004b6 "Cyrillic_CHE_descender") ;U+04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER +(cl-define-keysym #x10004b7 "Cyrillic_che_descender") ;U+04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER +(cl-define-keysym #x10004b8 "Cyrillic_CHE_vertstroke") ;U+04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE +(cl-define-keysym #x10004b9 "Cyrillic_che_vertstroke") ;U+04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE +(cl-define-keysym #x10004ba "Cyrillic_SHHA") ;U+04BA CYRILLIC CAPITAL LETTER SHHA +(cl-define-keysym #x10004bb "Cyrillic_shha") ;U+04BB CYRILLIC SMALL LETTER SHHA +(cl-define-keysym #x10004d8 "Cyrillic_SCHWA") ;U+04D8 CYRILLIC CAPITAL LETTER SCHWA +(cl-define-keysym #x10004d9 "Cyrillic_schwa") ;U+04D9 CYRILLIC SMALL LETTER SCHWA +(cl-define-keysym #x10004e2 "Cyrillic_I_macron") ;U+04E2 CYRILLIC CAPITAL LETTER I WITH MACRON +(cl-define-keysym #x10004e3 "Cyrillic_i_macron") ;U+04E3 CYRILLIC SMALL LETTER I WITH MACRON +(cl-define-keysym #x10004e8 "Cyrillic_O_bar") ;U+04E8 CYRILLIC CAPITAL LETTER BARRED O +(cl-define-keysym #x10004e9 "Cyrillic_o_bar") ;U+04E9 CYRILLIC SMALL LETTER BARRED O +(cl-define-keysym #x10004ee "Cyrillic_U_macron") ;U+04EE CYRILLIC CAPITAL LETTER U WITH MACRON +(cl-define-keysym #x10004ef "Cyrillic_u_macron") ;U+04EF CYRILLIC SMALL LETTER U WITH MACRON +(cl-define-keysym #x06a1 "Serbian_dje") ;U+0452 CYRILLIC SMALL LETTER DJE +(cl-define-keysym #x06a2 "Macedonia_gje") ;U+0453 CYRILLIC SMALL LETTER GJE +(cl-define-keysym #x06a3 "Cyrillic_io") ;U+0451 CYRILLIC SMALL LETTER IO +(cl-define-keysym #x06a4 "Ukrainian_ie") ;U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE +(cl-define-keysym #x06a4 "Ukranian_je") ;deprecated +(cl-define-keysym #x06a5 "Macedonia_dse") ;U+0455 CYRILLIC SMALL LETTER DZE +(cl-define-keysym #x06a6 "Ukrainian_i") ;U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +(cl-define-keysym #x06a6 "Ukranian_i") ;deprecated +(cl-define-keysym #x06a7 "Ukrainian_yi") ;U+0457 CYRILLIC SMALL LETTER YI +(cl-define-keysym #x06a7 "Ukranian_yi") ;deprecated +(cl-define-keysym #x06a8 "Cyrillic_je") ;U+0458 CYRILLIC SMALL LETTER JE +(cl-define-keysym #x06a8 "Serbian_je") ;deprecated +(cl-define-keysym #x06a9 "Cyrillic_lje") ;U+0459 CYRILLIC SMALL LETTER LJE +(cl-define-keysym #x06a9 "Serbian_lje") ;deprecated +(cl-define-keysym #x06aa "Cyrillic_nje") ;U+045A CYRILLIC SMALL LETTER NJE +(cl-define-keysym #x06aa "Serbian_nje") ;deprecated +(cl-define-keysym #x06ab "Serbian_tshe") ;U+045B CYRILLIC SMALL LETTER TSHE +(cl-define-keysym #x06ac "Macedonia_kje") ;U+045C CYRILLIC SMALL LETTER KJE +(cl-define-keysym #x06ad "Ukrainian_ghe_with_upturn") ;U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN +(cl-define-keysym #x06ae "Byelorussian_shortu") ;U+045E CYRILLIC SMALL LETTER SHORT U +(cl-define-keysym #x06af "Cyrillic_dzhe") ;U+045F CYRILLIC SMALL LETTER DZHE +(cl-define-keysym #x06af "Serbian_dze") ;deprecated +(cl-define-keysym #x06b0 "numerosign") ;U+2116 NUMERO SIGN +(cl-define-keysym #x06b1 "Serbian_DJE") ;U+0402 CYRILLIC CAPITAL LETTER DJE +(cl-define-keysym #x06b2 "Macedonia_GJE") ;U+0403 CYRILLIC CAPITAL LETTER GJE +(cl-define-keysym #x06b3 "Cyrillic_IO") ;U+0401 CYRILLIC CAPITAL LETTER IO +(cl-define-keysym #x06b4 "Ukrainian_IE") ;U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE +(cl-define-keysym #x06b4 "Ukranian_JE") ;deprecated +(cl-define-keysym #x06b5 "Macedonia_DSE") ;U+0405 CYRILLIC CAPITAL LETTER DZE +(cl-define-keysym #x06b6 "Ukrainian_I") ;U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +(cl-define-keysym #x06b6 "Ukranian_I") ;deprecated +(cl-define-keysym #x06b7 "Ukrainian_YI") ;U+0407 CYRILLIC CAPITAL LETTER YI +(cl-define-keysym #x06b7 "Ukranian_YI") ;deprecated +(cl-define-keysym #x06b8 "Cyrillic_JE") ;U+0408 CYRILLIC CAPITAL LETTER JE +(cl-define-keysym #x06b8 "Serbian_JE") ;deprecated +(cl-define-keysym #x06b9 "Cyrillic_LJE") ;U+0409 CYRILLIC CAPITAL LETTER LJE +(cl-define-keysym #x06b9 "Serbian_LJE") ;deprecated +(cl-define-keysym #x06ba "Cyrillic_NJE") ;U+040A CYRILLIC CAPITAL LETTER NJE +(cl-define-keysym #x06ba "Serbian_NJE") ;deprecated +(cl-define-keysym #x06bb "Serbian_TSHE") ;U+040B CYRILLIC CAPITAL LETTER TSHE +(cl-define-keysym #x06bc "Macedonia_KJE") ;U+040C CYRILLIC CAPITAL LETTER KJE +(cl-define-keysym #x06bd "Ukrainian_GHE_WITH_UPTURN") ;U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN +(cl-define-keysym #x06be "Byelorussian_SHORTU") ;U+040E CYRILLIC CAPITAL LETTER SHORT U +(cl-define-keysym #x06bf "Cyrillic_DZHE") ;U+040F CYRILLIC CAPITAL LETTER DZHE +(cl-define-keysym #x06bf "Serbian_DZE") ;deprecated +(cl-define-keysym #x06c0 "Cyrillic_yu") ;U+044E CYRILLIC SMALL LETTER YU +(cl-define-keysym #x06c1 "Cyrillic_a") ;U+0430 CYRILLIC SMALL LETTER A +(cl-define-keysym #x06c2 "Cyrillic_be") ;U+0431 CYRILLIC SMALL LETTER BE +(cl-define-keysym #x06c3 "Cyrillic_tse") ;U+0446 CYRILLIC SMALL LETTER TSE +(cl-define-keysym #x06c4 "Cyrillic_de") ;U+0434 CYRILLIC SMALL LETTER DE +(cl-define-keysym #x06c5 "Cyrillic_ie") ;U+0435 CYRILLIC SMALL LETTER IE +(cl-define-keysym #x06c6 "Cyrillic_ef") ;U+0444 CYRILLIC SMALL LETTER EF +(cl-define-keysym #x06c7 "Cyrillic_ghe") ;U+0433 CYRILLIC SMALL LETTER GHE +(cl-define-keysym #x06c8 "Cyrillic_ha") ;U+0445 CYRILLIC SMALL LETTER HA +(cl-define-keysym #x06c9 "Cyrillic_i") ;U+0438 CYRILLIC SMALL LETTER I +(cl-define-keysym #x06ca "Cyrillic_shorti") ;U+0439 CYRILLIC SMALL LETTER SHORT I +(cl-define-keysym #x06cb "Cyrillic_ka") ;U+043A CYRILLIC SMALL LETTER KA +(cl-define-keysym #x06cc "Cyrillic_el") ;U+043B CYRILLIC SMALL LETTER EL +(cl-define-keysym #x06cd "Cyrillic_em") ;U+043C CYRILLIC SMALL LETTER EM +(cl-define-keysym #x06ce "Cyrillic_en") ;U+043D CYRILLIC SMALL LETTER EN +(cl-define-keysym #x06cf "Cyrillic_o") ;U+043E CYRILLIC SMALL LETTER O +(cl-define-keysym #x06d0 "Cyrillic_pe") ;U+043F CYRILLIC SMALL LETTER PE +(cl-define-keysym #x06d1 "Cyrillic_ya") ;U+044F CYRILLIC SMALL LETTER YA +(cl-define-keysym #x06d2 "Cyrillic_er") ;U+0440 CYRILLIC SMALL LETTER ER +(cl-define-keysym #x06d3 "Cyrillic_es") ;U+0441 CYRILLIC SMALL LETTER ES +(cl-define-keysym #x06d4 "Cyrillic_te") ;U+0442 CYRILLIC SMALL LETTER TE +(cl-define-keysym #x06d5 "Cyrillic_u") ;U+0443 CYRILLIC SMALL LETTER U +(cl-define-keysym #x06d6 "Cyrillic_zhe") ;U+0436 CYRILLIC SMALL LETTER ZHE +(cl-define-keysym #x06d7 "Cyrillic_ve") ;U+0432 CYRILLIC SMALL LETTER VE +(cl-define-keysym #x06d8 "Cyrillic_softsign") ;U+044C CYRILLIC SMALL LETTER SOFT SIGN +(cl-define-keysym #x06d9 "Cyrillic_yeru") ;U+044B CYRILLIC SMALL LETTER YERU +(cl-define-keysym #x06da "Cyrillic_ze") ;U+0437 CYRILLIC SMALL LETTER ZE +(cl-define-keysym #x06db "Cyrillic_sha") ;U+0448 CYRILLIC SMALL LETTER SHA +(cl-define-keysym #x06dc "Cyrillic_e") ;U+044D CYRILLIC SMALL LETTER E +(cl-define-keysym #x06dd "Cyrillic_shcha") ;U+0449 CYRILLIC SMALL LETTER SHCHA +(cl-define-keysym #x06de "Cyrillic_che") ;U+0447 CYRILLIC SMALL LETTER CHE +(cl-define-keysym #x06df "Cyrillic_hardsign") ;U+044A CYRILLIC SMALL LETTER HARD SIGN +(cl-define-keysym #x06e0 "Cyrillic_YU") ;U+042E CYRILLIC CAPITAL LETTER YU +(cl-define-keysym #x06e1 "Cyrillic_A") ;U+0410 CYRILLIC CAPITAL LETTER A +(cl-define-keysym #x06e2 "Cyrillic_BE") ;U+0411 CYRILLIC CAPITAL LETTER BE +(cl-define-keysym #x06e3 "Cyrillic_TSE") ;U+0426 CYRILLIC CAPITAL LETTER TSE +(cl-define-keysym #x06e4 "Cyrillic_DE") ;U+0414 CYRILLIC CAPITAL LETTER DE +(cl-define-keysym #x06e5 "Cyrillic_IE") ;U+0415 CYRILLIC CAPITAL LETTER IE +(cl-define-keysym #x06e6 "Cyrillic_EF") ;U+0424 CYRILLIC CAPITAL LETTER EF +(cl-define-keysym #x06e7 "Cyrillic_GHE") ;U+0413 CYRILLIC CAPITAL LETTER GHE +(cl-define-keysym #x06e8 "Cyrillic_HA") ;U+0425 CYRILLIC CAPITAL LETTER HA +(cl-define-keysym #x06e9 "Cyrillic_I") ;U+0418 CYRILLIC CAPITAL LETTER I +(cl-define-keysym #x06ea "Cyrillic_SHORTI") ;U+0419 CYRILLIC CAPITAL LETTER SHORT I +(cl-define-keysym #x06eb "Cyrillic_KA") ;U+041A CYRILLIC CAPITAL LETTER KA +(cl-define-keysym #x06ec "Cyrillic_EL") ;U+041B CYRILLIC CAPITAL LETTER EL +(cl-define-keysym #x06ed "Cyrillic_EM") ;U+041C CYRILLIC CAPITAL LETTER EM +(cl-define-keysym #x06ee "Cyrillic_EN") ;U+041D CYRILLIC CAPITAL LETTER EN +(cl-define-keysym #x06ef "Cyrillic_O") ;U+041E CYRILLIC CAPITAL LETTER O +(cl-define-keysym #x06f0 "Cyrillic_PE") ;U+041F CYRILLIC CAPITAL LETTER PE +(cl-define-keysym #x06f1 "Cyrillic_YA") ;U+042F CYRILLIC CAPITAL LETTER YA +(cl-define-keysym #x06f2 "Cyrillic_ER") ;U+0420 CYRILLIC CAPITAL LETTER ER +(cl-define-keysym #x06f3 "Cyrillic_ES") ;U+0421 CYRILLIC CAPITAL LETTER ES +(cl-define-keysym #x06f4 "Cyrillic_TE") ;U+0422 CYRILLIC CAPITAL LETTER TE +(cl-define-keysym #x06f5 "Cyrillic_U") ;U+0423 CYRILLIC CAPITAL LETTER U +(cl-define-keysym #x06f6 "Cyrillic_ZHE") ;U+0416 CYRILLIC CAPITAL LETTER ZHE +(cl-define-keysym #x06f7 "Cyrillic_VE") ;U+0412 CYRILLIC CAPITAL LETTER VE +(cl-define-keysym #x06f8 "Cyrillic_SOFTSIGN") ;U+042C CYRILLIC CAPITAL LETTER SOFT SIGN +(cl-define-keysym #x06f9 "Cyrillic_YERU") ;U+042B CYRILLIC CAPITAL LETTER YERU +(cl-define-keysym #x06fa "Cyrillic_ZE") ;U+0417 CYRILLIC CAPITAL LETTER ZE +(cl-define-keysym #x06fb "Cyrillic_SHA") ;U+0428 CYRILLIC CAPITAL LETTER SHA +(cl-define-keysym #x06fc "Cyrillic_E") ;U+042D CYRILLIC CAPITAL LETTER E +(cl-define-keysym #x06fd "Cyrillic_SHCHA") ;U+0429 CYRILLIC CAPITAL LETTER SHCHA +(cl-define-keysym #x06fe "Cyrillic_CHE") ;U+0427 CYRILLIC CAPITAL LETTER CHE +(cl-define-keysym #x06ff "Cyrillic_HARDSIGN") ;U+042A CYRILLIC CAPITAL LETTER HARD SIGN +(cl-define-keysym #x07a1 "Greek_ALPHAaccent") ;U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS +(cl-define-keysym #x07a2 "Greek_EPSILONaccent") ;U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS +(cl-define-keysym #x07a3 "Greek_ETAaccent") ;U+0389 GREEK CAPITAL LETTER ETA WITH TONOS +(cl-define-keysym #x07a4 "Greek_IOTAaccent") ;U+038A GREEK CAPITAL LETTER IOTA WITH TONOS +(cl-define-keysym #x07a5 "Greek_IOTAdieresis") ;U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA +(cl-define-keysym #x07a5 "Greek_IOTAdiaeresis") ;old typo +(cl-define-keysym #x07a7 "Greek_OMICRONaccent") ;U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS +(cl-define-keysym #x07a8 "Greek_UPSILONaccent") ;U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS +(cl-define-keysym #x07a9 "Greek_UPSILONdieresis") ;U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA +(cl-define-keysym #x07ab "Greek_OMEGAaccent") ;U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS +(cl-define-keysym #x07ae "Greek_accentdieresis") ;U+0385 GREEK DIALYTIKA TONOS +(cl-define-keysym #x07af "Greek_horizbar") ;U+2015 HORIZONTAL BAR +(cl-define-keysym #x07b1 "Greek_alphaaccent") ;U+03AC GREEK SMALL LETTER ALPHA WITH TONOS +(cl-define-keysym #x07b2 "Greek_epsilonaccent") ;U+03AD GREEK SMALL LETTER EPSILON WITH TONOS +(cl-define-keysym #x07b3 "Greek_etaaccent") ;U+03AE GREEK SMALL LETTER ETA WITH TONOS +(cl-define-keysym #x07b4 "Greek_iotaaccent") ;U+03AF GREEK SMALL LETTER IOTA WITH TONOS +(cl-define-keysym #x07b5 "Greek_iotadieresis") ;U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA +(cl-define-keysym #x07b6 "Greek_iotaaccentdieresis") ;U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +(cl-define-keysym #x07b7 "Greek_omicronaccent") ;U+03CC GREEK SMALL LETTER OMICRON WITH TONOS +(cl-define-keysym #x07b8 "Greek_upsilonaccent") ;U+03CD GREEK SMALL LETTER UPSILON WITH TONOS +(cl-define-keysym #x07b9 "Greek_upsilondieresis") ;U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA +(cl-define-keysym #x07ba "Greek_upsilonaccentdieresis") ;U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +(cl-define-keysym #x07bb "Greek_omegaaccent") ;U+03CE GREEK SMALL LETTER OMEGA WITH TONOS +(cl-define-keysym #x07c1 "Greek_ALPHA") ;U+0391 GREEK CAPITAL LETTER ALPHA +(cl-define-keysym #x07c2 "Greek_BETA") ;U+0392 GREEK CAPITAL LETTER BETA +(cl-define-keysym #x07c3 "Greek_GAMMA") ;U+0393 GREEK CAPITAL LETTER GAMMA +(cl-define-keysym #x07c4 "Greek_DELTA") ;U+0394 GREEK CAPITAL LETTER DELTA +(cl-define-keysym #x07c5 "Greek_EPSILON") ;U+0395 GREEK CAPITAL LETTER EPSILON +(cl-define-keysym #x07c6 "Greek_ZETA") ;U+0396 GREEK CAPITAL LETTER ZETA +(cl-define-keysym #x07c7 "Greek_ETA") ;U+0397 GREEK CAPITAL LETTER ETA +(cl-define-keysym #x07c8 "Greek_THETA") ;U+0398 GREEK CAPITAL LETTER THETA +(cl-define-keysym #x07c9 "Greek_IOTA") ;U+0399 GREEK CAPITAL LETTER IOTA +(cl-define-keysym #x07ca "Greek_KAPPA") ;U+039A GREEK CAPITAL LETTER KAPPA +(cl-define-keysym #x07cb "Greek_LAMDA") ;U+039B GREEK CAPITAL LETTER LAMDA +(cl-define-keysym #x07cb "Greek_LAMBDA") ;U+039B GREEK CAPITAL LETTER LAMDA +(cl-define-keysym #x07cc "Greek_MU") ;U+039C GREEK CAPITAL LETTER MU +(cl-define-keysym #x07cd "Greek_NU") ;U+039D GREEK CAPITAL LETTER NU +(cl-define-keysym #x07ce "Greek_XI") ;U+039E GREEK CAPITAL LETTER XI +(cl-define-keysym #x07cf "Greek_OMICRON") ;U+039F GREEK CAPITAL LETTER OMICRON +(cl-define-keysym #x07d0 "Greek_PI") ;U+03A0 GREEK CAPITAL LETTER PI +(cl-define-keysym #x07d1 "Greek_RHO") ;U+03A1 GREEK CAPITAL LETTER RHO +(cl-define-keysym #x07d2 "Greek_SIGMA") ;U+03A3 GREEK CAPITAL LETTER SIGMA +(cl-define-keysym #x07d4 "Greek_TAU") ;U+03A4 GREEK CAPITAL LETTER TAU +(cl-define-keysym #x07d5 "Greek_UPSILON") ;U+03A5 GREEK CAPITAL LETTER UPSILON +(cl-define-keysym #x07d6 "Greek_PHI") ;U+03A6 GREEK CAPITAL LETTER PHI +(cl-define-keysym #x07d7 "Greek_CHI") ;U+03A7 GREEK CAPITAL LETTER CHI +(cl-define-keysym #x07d8 "Greek_PSI") ;U+03A8 GREEK CAPITAL LETTER PSI +(cl-define-keysym #x07d9 "Greek_OMEGA") ;U+03A9 GREEK CAPITAL LETTER OMEGA +(cl-define-keysym #x07e1 "Greek_alpha") ;U+03B1 GREEK SMALL LETTER ALPHA +(cl-define-keysym #x07e2 "Greek_beta") ;U+03B2 GREEK SMALL LETTER BETA +(cl-define-keysym #x07e3 "Greek_gamma") ;U+03B3 GREEK SMALL LETTER GAMMA +(cl-define-keysym #x07e4 "Greek_delta") ;U+03B4 GREEK SMALL LETTER DELTA +(cl-define-keysym #x07e5 "Greek_epsilon") ;U+03B5 GREEK SMALL LETTER EPSILON +(cl-define-keysym #x07e6 "Greek_zeta") ;U+03B6 GREEK SMALL LETTER ZETA +(cl-define-keysym #x07e7 "Greek_eta") ;U+03B7 GREEK SMALL LETTER ETA +(cl-define-keysym #x07e8 "Greek_theta") ;U+03B8 GREEK SMALL LETTER THETA +(cl-define-keysym #x07e9 "Greek_iota") ;U+03B9 GREEK SMALL LETTER IOTA +(cl-define-keysym #x07ea "Greek_kappa") ;U+03BA GREEK SMALL LETTER KAPPA +(cl-define-keysym #x07eb "Greek_lamda") ;U+03BB GREEK SMALL LETTER LAMDA +(cl-define-keysym #x07eb "Greek_lambda") ;U+03BB GREEK SMALL LETTER LAMDA +(cl-define-keysym #x07ec "Greek_mu") ;U+03BC GREEK SMALL LETTER MU +(cl-define-keysym #x07ed "Greek_nu") ;U+03BD GREEK SMALL LETTER NU +(cl-define-keysym #x07ee "Greek_xi") ;U+03BE GREEK SMALL LETTER XI +(cl-define-keysym #x07ef "Greek_omicron") ;U+03BF GREEK SMALL LETTER OMICRON +(cl-define-keysym #x07f0 "Greek_pi") ;U+03C0 GREEK SMALL LETTER PI +(cl-define-keysym #x07f1 "Greek_rho") ;U+03C1 GREEK SMALL LETTER RHO +(cl-define-keysym #x07f2 "Greek_sigma") ;U+03C3 GREEK SMALL LETTER SIGMA +(cl-define-keysym #x07f3 "Greek_finalsmallsigma") ;U+03C2 GREEK SMALL LETTER FINAL SIGMA +(cl-define-keysym #x07f4 "Greek_tau") ;U+03C4 GREEK SMALL LETTER TAU +(cl-define-keysym #x07f5 "Greek_upsilon") ;U+03C5 GREEK SMALL LETTER UPSILON +(cl-define-keysym #x07f6 "Greek_phi") ;U+03C6 GREEK SMALL LETTER PHI +(cl-define-keysym #x07f7 "Greek_chi") ;U+03C7 GREEK SMALL LETTER CHI +(cl-define-keysym #x07f8 "Greek_psi") ;U+03C8 GREEK SMALL LETTER PSI +(cl-define-keysym #x07f9 "Greek_omega") ;U+03C9 GREEK SMALL LETTER OMEGA +(cl-define-keysym #xff7e "Greek_switch") ;Alias for mode_switch +(cl-define-keysym #x08a1 "leftradical") ;U+23B7 RADICAL SYMBOL BOTTOM +(cl-define-keysym #x08a2 "topleftradical") ;(U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT) +(cl-define-keysym #x08a3 "horizconnector") ;(U+2500 BOX DRAWINGS LIGHT HORIZONTAL) +(cl-define-keysym #x08a4 "topintegral") ;U+2320 TOP HALF INTEGRAL +(cl-define-keysym #x08a5 "botintegral") ;U+2321 BOTTOM HALF INTEGRAL +(cl-define-keysym #x08a6 "vertconnector") ;(U+2502 BOX DRAWINGS LIGHT VERTICAL) +(cl-define-keysym #x08a7 "topleftsqbracket") ;U+23A1 LEFT SQUARE BRACKET UPPER CORNER +(cl-define-keysym #x08a8 "botleftsqbracket") ;U+23A3 LEFT SQUARE BRACKET LOWER CORNER +(cl-define-keysym #x08a9 "toprightsqbracket") ;U+23A4 RIGHT SQUARE BRACKET UPPER CORNER +(cl-define-keysym #x08aa "botrightsqbracket") ;U+23A6 RIGHT SQUARE BRACKET LOWER CORNER +(cl-define-keysym #x08ab "topleftparens") ;U+239B LEFT PARENTHESIS UPPER HOOK +(cl-define-keysym #x08ac "botleftparens") ;U+239D LEFT PARENTHESIS LOWER HOOK +(cl-define-keysym #x08ad "toprightparens") ;U+239E RIGHT PARENTHESIS UPPER HOOK +(cl-define-keysym #x08ae "botrightparens") ;U+23A0 RIGHT PARENTHESIS LOWER HOOK +(cl-define-keysym #x08af "leftmiddlecurlybrace") ;U+23A8 LEFT CURLY BRACKET MIDDLE PIECE +(cl-define-keysym #x08b0 "rightmiddlecurlybrace") ;U+23AC RIGHT CURLY BRACKET MIDDLE PIECE +(cl-define-keysym #x08b1 "topleftsummation") +(cl-define-keysym #x08b2 "botleftsummation") +(cl-define-keysym #x08b3 "topvertsummationconnector") +(cl-define-keysym #x08b4 "botvertsummationconnector") +(cl-define-keysym #x08b5 "toprightsummation") +(cl-define-keysym #x08b6 "botrightsummation") +(cl-define-keysym #x08b7 "rightmiddlesummation") +(cl-define-keysym #x08bc "lessthanequal") ;U+2264 LESS-THAN OR EQUAL TO +(cl-define-keysym #x08bd "notequal") ;U+2260 NOT EQUAL TO +(cl-define-keysym #x08be "greaterthanequal") ;U+2265 GREATER-THAN OR EQUAL TO +(cl-define-keysym #x08bf "integral") ;U+222B INTEGRAL +(cl-define-keysym #x08c0 "therefore") ;U+2234 THEREFORE +(cl-define-keysym #x08c1 "variation") ;U+221D PROPORTIONAL TO +(cl-define-keysym #x08c2 "infinity") ;U+221E INFINITY +(cl-define-keysym #x08c5 "nabla") ;U+2207 NABLA +(cl-define-keysym #x08c8 "approximate") ;U+223C TILDE OPERATOR +(cl-define-keysym #x08c9 "similarequal") ;U+2243 ASYMPTOTICALLY EQUAL TO +(cl-define-keysym #x08cd "ifonlyif") ;U+21D4 LEFT RIGHT DOUBLE ARROW +(cl-define-keysym #x08ce "implies") ;U+21D2 RIGHTWARDS DOUBLE ARROW +(cl-define-keysym #x08cf "identical") ;U+2261 IDENTICAL TO +(cl-define-keysym #x08d6 "radical") ;U+221A SQUARE ROOT +(cl-define-keysym #x08da "includedin") ;U+2282 SUBSET OF +(cl-define-keysym #x08db "includes") ;U+2283 SUPERSET OF +(cl-define-keysym #x08dc "intersection") ;U+2229 INTERSECTION +(cl-define-keysym #x08dd "union") ;U+222A UNION +(cl-define-keysym #x08de "logicaland") ;U+2227 LOGICAL AND +(cl-define-keysym #x08df "logicalor") ;U+2228 LOGICAL OR +(cl-define-keysym #x08ef "partialderivative") ;U+2202 PARTIAL DIFFERENTIAL +(cl-define-keysym #x08f6 "function") ;U+0192 LATIN SMALL LETTER F WITH HOOK +(cl-define-keysym #x08fb "leftarrow") ;U+2190 LEFTWARDS ARROW +(cl-define-keysym #x08fc "uparrow") ;U+2191 UPWARDS ARROW +(cl-define-keysym #x08fd "rightarrow") ;U+2192 RIGHTWARDS ARROW +(cl-define-keysym #x08fe "downarrow") ;U+2193 DOWNWARDS ARROW +(cl-define-keysym #x09df "blank") +(cl-define-keysym #x09e0 "soliddiamond") ;U+25C6 BLACK DIAMOND +(cl-define-keysym #x09e1 "checkerboard") ;U+2592 MEDIUM SHADE +(cl-define-keysym #x09e2 "ht") ;U+2409 SYMBOL FOR HORIZONTAL TABULATION +(cl-define-keysym #x09e3 "ff") ;U+240C SYMBOL FOR FORM FEED +(cl-define-keysym #x09e4 "cr") ;U+240D SYMBOL FOR CARRIAGE RETURN +(cl-define-keysym #x09e5 "lf") ;U+240A SYMBOL FOR LINE FEED +(cl-define-keysym #x09e8 "nl") ;U+2424 SYMBOL FOR NEWLINE +(cl-define-keysym #x09e9 "vt") ;U+240B SYMBOL FOR VERTICAL TABULATION +(cl-define-keysym #x09ea "lowrightcorner") ;U+2518 BOX DRAWINGS LIGHT UP AND LEFT +(cl-define-keysym #x09eb "uprightcorner") ;U+2510 BOX DRAWINGS LIGHT DOWN AND LEFT +(cl-define-keysym #x09ec "upleftcorner") ;U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT +(cl-define-keysym #x09ed "lowleftcorner") ;U+2514 BOX DRAWINGS LIGHT UP AND RIGHT +(cl-define-keysym #x09ee "crossinglines") ;U+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +(cl-define-keysym #x09ef "horizlinescan1") ;U+23BA HORIZONTAL SCAN LINE-1 +(cl-define-keysym #x09f0 "horizlinescan3") ;U+23BB HORIZONTAL SCAN LINE-3 +(cl-define-keysym #x09f1 "horizlinescan5") ;U+2500 BOX DRAWINGS LIGHT HORIZONTAL +(cl-define-keysym #x09f2 "horizlinescan7") ;U+23BC HORIZONTAL SCAN LINE-7 +(cl-define-keysym #x09f3 "horizlinescan9") ;U+23BD HORIZONTAL SCAN LINE-9 +(cl-define-keysym #x09f4 "leftt") ;U+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT +(cl-define-keysym #x09f5 "rightt") ;U+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT +(cl-define-keysym #x09f6 "bott") ;U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL +(cl-define-keysym #x09f7 "topt") ;U+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +(cl-define-keysym #x09f8 "vertbar") ;U+2502 BOX DRAWINGS LIGHT VERTICAL +(cl-define-keysym #x0aa1 "emspace") ;U+2003 EM SPACE +(cl-define-keysym #x0aa2 "enspace") ;U+2002 EN SPACE +(cl-define-keysym #x0aa3 "em3space") ;U+2004 THREE-PER-EM SPACE +(cl-define-keysym #x0aa4 "em4space") ;U+2005 FOUR-PER-EM SPACE +(cl-define-keysym #x0aa5 "digitspace") ;U+2007 FIGURE SPACE +(cl-define-keysym #x0aa6 "punctspace") ;U+2008 PUNCTUATION SPACE +(cl-define-keysym #x0aa7 "thinspace") ;U+2009 THIN SPACE +(cl-define-keysym #x0aa8 "hairspace") ;U+200A HAIR SPACE +(cl-define-keysym #x0aa9 "emdash") ;U+2014 EM DASH +(cl-define-keysym #x0aaa "endash") ;U+2013 EN DASH +(cl-define-keysym #x0aac "signifblank") ;(U+2423 OPEN BOX) +(cl-define-keysym #x0aae "ellipsis") ;U+2026 HORIZONTAL ELLIPSIS +(cl-define-keysym #x0aaf "doubbaselinedot") ;U+2025 TWO DOT LEADER +(cl-define-keysym #x0ab0 "onethird") ;U+2153 VULGAR FRACTION ONE THIRD +(cl-define-keysym #x0ab1 "twothirds") ;U+2154 VULGAR FRACTION TWO THIRDS +(cl-define-keysym #x0ab2 "onefifth") ;U+2155 VULGAR FRACTION ONE FIFTH +(cl-define-keysym #x0ab3 "twofifths") ;U+2156 VULGAR FRACTION TWO FIFTHS +(cl-define-keysym #x0ab4 "threefifths") ;U+2157 VULGAR FRACTION THREE FIFTHS +(cl-define-keysym #x0ab5 "fourfifths") ;U+2158 VULGAR FRACTION FOUR FIFTHS +(cl-define-keysym #x0ab6 "onesixth") ;U+2159 VULGAR FRACTION ONE SIXTH +(cl-define-keysym #x0ab7 "fivesixths") ;U+215A VULGAR FRACTION FIVE SIXTHS +(cl-define-keysym #x0ab8 "careof") ;U+2105 CARE OF +(cl-define-keysym #x0abb "figdash") ;U+2012 FIGURE DASH +(cl-define-keysym #x0abc "leftanglebracket") ;(U+27E8 MATHEMATICAL LEFT ANGLE BRACKET) +(cl-define-keysym #x0abd "decimalpoint") ;(U+002E FULL STOP) +(cl-define-keysym #x0abe "rightanglebracket") ;(U+27E9 MATHEMATICAL RIGHT ANGLE BRACKET) +(cl-define-keysym #x0abf "marker") +(cl-define-keysym #x0ac3 "oneeighth") ;U+215B VULGAR FRACTION ONE EIGHTH +(cl-define-keysym #x0ac4 "threeeighths") ;U+215C VULGAR FRACTION THREE EIGHTHS +(cl-define-keysym #x0ac5 "fiveeighths") ;U+215D VULGAR FRACTION FIVE EIGHTHS +(cl-define-keysym #x0ac6 "seveneighths") ;U+215E VULGAR FRACTION SEVEN EIGHTHS +(cl-define-keysym #x0ac9 "trademark") ;U+2122 TRADE MARK SIGN +(cl-define-keysym #x0aca "signaturemark") ;(U+2613 SALTIRE) +(cl-define-keysym #x0acb "trademarkincircle") +(cl-define-keysym #x0acc "leftopentriangle") ;(U+25C1 WHITE LEFT-POINTING TRIANGLE) +(cl-define-keysym #x0acd "rightopentriangle") ;(U+25B7 WHITE RIGHT-POINTING TRIANGLE) +(cl-define-keysym #x0ace "emopencircle") ;(U+25CB WHITE CIRCLE) +(cl-define-keysym #x0acf "emopenrectangle") ;(U+25AF WHITE VERTICAL RECTANGLE) +(cl-define-keysym #x0ad0 "leftsinglequotemark") ;U+2018 LEFT SINGLE QUOTATION MARK +(cl-define-keysym #x0ad1 "rightsinglequotemark") ;U+2019 RIGHT SINGLE QUOTATION MARK +(cl-define-keysym #x0ad2 "leftdoublequotemark") ;U+201C LEFT DOUBLE QUOTATION MARK +(cl-define-keysym #x0ad3 "rightdoublequotemark") ;U+201D RIGHT DOUBLE QUOTATION MARK +(cl-define-keysym #x0ad4 "prescription") ;U+211E PRESCRIPTION TAKE +(cl-define-keysym #x0ad6 "minutes") ;U+2032 PRIME +(cl-define-keysym #x0ad7 "seconds") ;U+2033 DOUBLE PRIME +(cl-define-keysym #x0ad9 "latincross") ;U+271D LATIN CROSS +(cl-define-keysym #x0ada "hexagram") +(cl-define-keysym #x0adb "filledrectbullet") ;(U+25AC BLACK RECTANGLE) +(cl-define-keysym #x0adc "filledlefttribullet") ;(U+25C0 BLACK LEFT-POINTING TRIANGLE) +(cl-define-keysym #x0add "filledrighttribullet") ;(U+25B6 BLACK RIGHT-POINTING TRIANGLE) +(cl-define-keysym #x0ade "emfilledcircle") ;(U+25CF BLACK CIRCLE) +(cl-define-keysym #x0adf "emfilledrect") ;(U+25AE BLACK VERTICAL RECTANGLE) +(cl-define-keysym #x0ae0 "enopencircbullet") ;(U+25E6 WHITE BULLET) +(cl-define-keysym #x0ae1 "enopensquarebullet") ;(U+25AB WHITE SMALL SQUARE) +(cl-define-keysym #x0ae2 "openrectbullet") ;(U+25AD WHITE RECTANGLE) +(cl-define-keysym #x0ae3 "opentribulletup") ;(U+25B3 WHITE UP-POINTING TRIANGLE) +(cl-define-keysym #x0ae4 "opentribulletdown") ;(U+25BD WHITE DOWN-POINTING TRIANGLE) +(cl-define-keysym #x0ae5 "openstar") ;(U+2606 WHITE STAR) +(cl-define-keysym #x0ae6 "enfilledcircbullet") ;(U+2022 BULLET) +(cl-define-keysym #x0ae7 "enfilledsqbullet") ;(U+25AA BLACK SMALL SQUARE) +(cl-define-keysym #x0ae8 "filledtribulletup") ;(U+25B2 BLACK UP-POINTING TRIANGLE) +(cl-define-keysym #x0ae9 "filledtribulletdown") ;(U+25BC BLACK DOWN-POINTING TRIANGLE) +(cl-define-keysym #x0aea "leftpointer") ;(U+261C WHITE LEFT POINTING INDEX) +(cl-define-keysym #x0aeb "rightpointer") ;(U+261E WHITE RIGHT POINTING INDEX) +(cl-define-keysym #x0aec "club") ;U+2663 BLACK CLUB SUIT +(cl-define-keysym #x0aed "diamond") ;U+2666 BLACK DIAMOND SUIT +(cl-define-keysym #x0aee "heart") ;U+2665 BLACK HEART SUIT +(cl-define-keysym #x0af0 "maltesecross") ;U+2720 MALTESE CROSS +(cl-define-keysym #x0af1 "dagger") ;U+2020 DAGGER +(cl-define-keysym #x0af2 "doubledagger") ;U+2021 DOUBLE DAGGER +(cl-define-keysym #x0af3 "checkmark") ;U+2713 CHECK MARK +(cl-define-keysym #x0af4 "ballotcross") ;U+2717 BALLOT X +(cl-define-keysym #x0af5 "musicalsharp") ;U+266F MUSIC SHARP SIGN +(cl-define-keysym #x0af6 "musicalflat") ;U+266D MUSIC FLAT SIGN +(cl-define-keysym #x0af7 "malesymbol") ;U+2642 MALE SIGN +(cl-define-keysym #x0af8 "femalesymbol") ;U+2640 FEMALE SIGN +(cl-define-keysym #x0af9 "telephone") ;U+260E BLACK TELEPHONE +(cl-define-keysym #x0afa "telephonerecorder") ;U+2315 TELEPHONE RECORDER +(cl-define-keysym #x0afb "phonographcopyright") ;U+2117 SOUND RECORDING COPYRIGHT +(cl-define-keysym #x0afc "caret") ;U+2038 CARET +(cl-define-keysym #x0afd "singlelowquotemark") ;U+201A SINGLE LOW-9 QUOTATION MARK +(cl-define-keysym #x0afe "doublelowquotemark") ;U+201E DOUBLE LOW-9 QUOTATION MARK +(cl-define-keysym #x0aff "cursor") +(cl-define-keysym #x0ba3 "leftcaret") ;(U+003C LESS-THAN SIGN) +(cl-define-keysym #x0ba6 "rightcaret") ;(U+003E GREATER-THAN SIGN) +(cl-define-keysym #x0ba8 "downcaret") ;(U+2228 LOGICAL OR) +(cl-define-keysym #x0ba9 "upcaret") ;(U+2227 LOGICAL AND) +(cl-define-keysym #x0bc0 "overbar") ;(U+00AF MACRON) +(cl-define-keysym #x0bc2 "downtack") ;U+22A5 UP TACK +(cl-define-keysym #x0bc3 "upshoe") ;(U+2229 INTERSECTION) +(cl-define-keysym #x0bc4 "downstile") ;U+230A LEFT FLOOR +(cl-define-keysym #x0bc6 "underbar") ;(U+005F LOW LINE) +(cl-define-keysym #x0bca "jot") ;U+2218 RING OPERATOR +(cl-define-keysym #x0bcc "quad") ;U+2395 APL FUNCTIONAL SYMBOL QUAD +(cl-define-keysym #x0bce "uptack") ;U+22A4 DOWN TACK +(cl-define-keysym #x0bcf "circle") ;U+25CB WHITE CIRCLE +(cl-define-keysym #x0bd3 "upstile") ;U+2308 LEFT CEILING +(cl-define-keysym #x0bd6 "downshoe") ;(U+222A UNION) +(cl-define-keysym #x0bd8 "rightshoe") ;(U+2283 SUPERSET OF) +(cl-define-keysym #x0bda "leftshoe") ;(U+2282 SUBSET OF) +(cl-define-keysym #x0bdc "lefttack") ;U+22A2 RIGHT TACK +(cl-define-keysym #x0bfc "righttack") ;U+22A3 LEFT TACK +(cl-define-keysym #x0cdf "hebrew_doublelowline") ;U+2017 DOUBLE LOW LINE +(cl-define-keysym #x0ce0 "hebrew_aleph") ;U+05D0 HEBREW LETTER ALEF +(cl-define-keysym #x0ce1 "hebrew_bet") ;U+05D1 HEBREW LETTER BET +(cl-define-keysym #x0ce1 "hebrew_beth") ;deprecated +(cl-define-keysym #x0ce2 "hebrew_gimel") ;U+05D2 HEBREW LETTER GIMEL +(cl-define-keysym #x0ce2 "hebrew_gimmel") ;deprecated +(cl-define-keysym #x0ce3 "hebrew_dalet") ;U+05D3 HEBREW LETTER DALET +(cl-define-keysym #x0ce3 "hebrew_daleth") ;deprecated +(cl-define-keysym #x0ce4 "hebrew_he") ;U+05D4 HEBREW LETTER HE +(cl-define-keysym #x0ce5 "hebrew_waw") ;U+05D5 HEBREW LETTER VAV +(cl-define-keysym #x0ce6 "hebrew_zain") ;U+05D6 HEBREW LETTER ZAYIN +(cl-define-keysym #x0ce6 "hebrew_zayin") ;deprecated +(cl-define-keysym #x0ce7 "hebrew_chet") ;U+05D7 HEBREW LETTER HET +(cl-define-keysym #x0ce7 "hebrew_het") ;deprecated +(cl-define-keysym #x0ce8 "hebrew_tet") ;U+05D8 HEBREW LETTER TET +(cl-define-keysym #x0ce8 "hebrew_teth") ;deprecated +(cl-define-keysym #x0ce9 "hebrew_yod") ;U+05D9 HEBREW LETTER YOD +(cl-define-keysym #x0cea "hebrew_finalkaph") ;U+05DA HEBREW LETTER FINAL KAF +(cl-define-keysym #x0ceb "hebrew_kaph") ;U+05DB HEBREW LETTER KAF +(cl-define-keysym #x0cec "hebrew_lamed") ;U+05DC HEBREW LETTER LAMED +(cl-define-keysym #x0ced "hebrew_finalmem") ;U+05DD HEBREW LETTER FINAL MEM +(cl-define-keysym #x0cee "hebrew_mem") ;U+05DE HEBREW LETTER MEM +(cl-define-keysym #x0cef "hebrew_finalnun") ;U+05DF HEBREW LETTER FINAL NUN +(cl-define-keysym #x0cf0 "hebrew_nun") ;U+05E0 HEBREW LETTER NUN +(cl-define-keysym #x0cf1 "hebrew_samech") ;U+05E1 HEBREW LETTER SAMEKH +(cl-define-keysym #x0cf1 "hebrew_samekh") ;deprecated +(cl-define-keysym #x0cf2 "hebrew_ayin") ;U+05E2 HEBREW LETTER AYIN +(cl-define-keysym #x0cf3 "hebrew_finalpe") ;U+05E3 HEBREW LETTER FINAL PE +(cl-define-keysym #x0cf4 "hebrew_pe") ;U+05E4 HEBREW LETTER PE +(cl-define-keysym #x0cf5 "hebrew_finalzade") ;U+05E5 HEBREW LETTER FINAL TSADI +(cl-define-keysym #x0cf5 "hebrew_finalzadi") ;deprecated +(cl-define-keysym #x0cf6 "hebrew_zade") ;U+05E6 HEBREW LETTER TSADI +(cl-define-keysym #x0cf6 "hebrew_zadi") ;deprecated +(cl-define-keysym #x0cf7 "hebrew_qoph") ;U+05E7 HEBREW LETTER QOF +(cl-define-keysym #x0cf7 "hebrew_kuf") ;deprecated +(cl-define-keysym #x0cf8 "hebrew_resh") ;U+05E8 HEBREW LETTER RESH +(cl-define-keysym #x0cf9 "hebrew_shin") ;U+05E9 HEBREW LETTER SHIN +(cl-define-keysym #x0cfa "hebrew_taw") ;U+05EA HEBREW LETTER TAV +(cl-define-keysym #x0cfa "hebrew_taf") ;deprecated +(cl-define-keysym #xff7e "Hebrew_switch") ;Alias for mode_switch +(cl-define-keysym #x0da1 "Thai_kokai") ;U+0E01 THAI CHARACTER KO KAI +(cl-define-keysym #x0da2 "Thai_khokhai") ;U+0E02 THAI CHARACTER KHO KHAI +(cl-define-keysym #x0da3 "Thai_khokhuat") ;U+0E03 THAI CHARACTER KHO KHUAT +(cl-define-keysym #x0da4 "Thai_khokhwai") ;U+0E04 THAI CHARACTER KHO KHWAI +(cl-define-keysym #x0da5 "Thai_khokhon") ;U+0E05 THAI CHARACTER KHO KHON +(cl-define-keysym #x0da6 "Thai_khorakhang") ;U+0E06 THAI CHARACTER KHO RAKHANG +(cl-define-keysym #x0da7 "Thai_ngongu") ;U+0E07 THAI CHARACTER NGO NGU +(cl-define-keysym #x0da8 "Thai_chochan") ;U+0E08 THAI CHARACTER CHO CHAN +(cl-define-keysym #x0da9 "Thai_choching") ;U+0E09 THAI CHARACTER CHO CHING +(cl-define-keysym #x0daa "Thai_chochang") ;U+0E0A THAI CHARACTER CHO CHANG +(cl-define-keysym #x0dab "Thai_soso") ;U+0E0B THAI CHARACTER SO SO +(cl-define-keysym #x0dac "Thai_chochoe") ;U+0E0C THAI CHARACTER CHO CHOE +(cl-define-keysym #x0dad "Thai_yoying") ;U+0E0D THAI CHARACTER YO YING +(cl-define-keysym #x0dae "Thai_dochada") ;U+0E0E THAI CHARACTER DO CHADA +(cl-define-keysym #x0daf "Thai_topatak") ;U+0E0F THAI CHARACTER TO PATAK +(cl-define-keysym #x0db0 "Thai_thothan") ;U+0E10 THAI CHARACTER THO THAN +(cl-define-keysym #x0db1 "Thai_thonangmontho") ;U+0E11 THAI CHARACTER THO NANGMONTHO +(cl-define-keysym #x0db2 "Thai_thophuthao") ;U+0E12 THAI CHARACTER THO PHUTHAO +(cl-define-keysym #x0db3 "Thai_nonen") ;U+0E13 THAI CHARACTER NO NEN +(cl-define-keysym #x0db4 "Thai_dodek") ;U+0E14 THAI CHARACTER DO DEK +(cl-define-keysym #x0db5 "Thai_totao") ;U+0E15 THAI CHARACTER TO TAO +(cl-define-keysym #x0db6 "Thai_thothung") ;U+0E16 THAI CHARACTER THO THUNG +(cl-define-keysym #x0db7 "Thai_thothahan") ;U+0E17 THAI CHARACTER THO THAHAN +(cl-define-keysym #x0db8 "Thai_thothong") ;U+0E18 THAI CHARACTER THO THONG +(cl-define-keysym #x0db9 "Thai_nonu") ;U+0E19 THAI CHARACTER NO NU +(cl-define-keysym #x0dba "Thai_bobaimai") ;U+0E1A THAI CHARACTER BO BAIMAI +(cl-define-keysym #x0dbb "Thai_popla") ;U+0E1B THAI CHARACTER PO PLA +(cl-define-keysym #x0dbc "Thai_phophung") ;U+0E1C THAI CHARACTER PHO PHUNG +(cl-define-keysym #x0dbd "Thai_fofa") ;U+0E1D THAI CHARACTER FO FA +(cl-define-keysym #x0dbe "Thai_phophan") ;U+0E1E THAI CHARACTER PHO PHAN +(cl-define-keysym #x0dbf "Thai_fofan") ;U+0E1F THAI CHARACTER FO FAN +(cl-define-keysym #x0dc0 "Thai_phosamphao") ;U+0E20 THAI CHARACTER PHO SAMPHAO +(cl-define-keysym #x0dc1 "Thai_moma") ;U+0E21 THAI CHARACTER MO MA +(cl-define-keysym #x0dc2 "Thai_yoyak") ;U+0E22 THAI CHARACTER YO YAK +(cl-define-keysym #x0dc3 "Thai_rorua") ;U+0E23 THAI CHARACTER RO RUA +(cl-define-keysym #x0dc4 "Thai_ru") ;U+0E24 THAI CHARACTER RU +(cl-define-keysym #x0dc5 "Thai_loling") ;U+0E25 THAI CHARACTER LO LING +(cl-define-keysym #x0dc6 "Thai_lu") ;U+0E26 THAI CHARACTER LU +(cl-define-keysym #x0dc7 "Thai_wowaen") ;U+0E27 THAI CHARACTER WO WAEN +(cl-define-keysym #x0dc8 "Thai_sosala") ;U+0E28 THAI CHARACTER SO SALA +(cl-define-keysym #x0dc9 "Thai_sorusi") ;U+0E29 THAI CHARACTER SO RUSI +(cl-define-keysym #x0dca "Thai_sosua") ;U+0E2A THAI CHARACTER SO SUA +(cl-define-keysym #x0dcb "Thai_hohip") ;U+0E2B THAI CHARACTER HO HIP +(cl-define-keysym #x0dcc "Thai_lochula") ;U+0E2C THAI CHARACTER LO CHULA +(cl-define-keysym #x0dcd "Thai_oang") ;U+0E2D THAI CHARACTER O ANG +(cl-define-keysym #x0dce "Thai_honokhuk") ;U+0E2E THAI CHARACTER HO NOKHUK +(cl-define-keysym #x0dcf "Thai_paiyannoi") ;U+0E2F THAI CHARACTER PAIYANNOI +(cl-define-keysym #x0dd0 "Thai_saraa") ;U+0E30 THAI CHARACTER SARA A +(cl-define-keysym #x0dd1 "Thai_maihanakat") ;U+0E31 THAI CHARACTER MAI HAN-AKAT +(cl-define-keysym #x0dd2 "Thai_saraaa") ;U+0E32 THAI CHARACTER SARA AA +(cl-define-keysym #x0dd3 "Thai_saraam") ;U+0E33 THAI CHARACTER SARA AM +(cl-define-keysym #x0dd4 "Thai_sarai") ;U+0E34 THAI CHARACTER SARA I +(cl-define-keysym #x0dd5 "Thai_saraii") ;U+0E35 THAI CHARACTER SARA II +(cl-define-keysym #x0dd6 "Thai_saraue") ;U+0E36 THAI CHARACTER SARA UE +(cl-define-keysym #x0dd7 "Thai_sarauee") ;U+0E37 THAI CHARACTER SARA UEE +(cl-define-keysym #x0dd8 "Thai_sarau") ;U+0E38 THAI CHARACTER SARA U +(cl-define-keysym #x0dd9 "Thai_sarauu") ;U+0E39 THAI CHARACTER SARA UU +(cl-define-keysym #x0dda "Thai_phinthu") ;U+0E3A THAI CHARACTER PHINTHU +(cl-define-keysym #x0dde "Thai_maihanakat_maitho") +(cl-define-keysym #x0ddf "Thai_baht") ;U+0E3F THAI CURRENCY SYMBOL BAHT +(cl-define-keysym #x0de0 "Thai_sarae") ;U+0E40 THAI CHARACTER SARA E +(cl-define-keysym #x0de1 "Thai_saraae") ;U+0E41 THAI CHARACTER SARA AE +(cl-define-keysym #x0de2 "Thai_sarao") ;U+0E42 THAI CHARACTER SARA O +(cl-define-keysym #x0de3 "Thai_saraaimaimuan") ;U+0E43 THAI CHARACTER SARA AI MAIMUAN +(cl-define-keysym #x0de4 "Thai_saraaimaimalai") ;U+0E44 THAI CHARACTER SARA AI MAIMALAI +(cl-define-keysym #x0de5 "Thai_lakkhangyao") ;U+0E45 THAI CHARACTER LAKKHANGYAO +(cl-define-keysym #x0de6 "Thai_maiyamok") ;U+0E46 THAI CHARACTER MAIYAMOK +(cl-define-keysym #x0de7 "Thai_maitaikhu") ;U+0E47 THAI CHARACTER MAITAIKHU +(cl-define-keysym #x0de8 "Thai_maiek") ;U+0E48 THAI CHARACTER MAI EK +(cl-define-keysym #x0de9 "Thai_maitho") ;U+0E49 THAI CHARACTER MAI THO +(cl-define-keysym #x0dea "Thai_maitri") ;U+0E4A THAI CHARACTER MAI TRI +(cl-define-keysym #x0deb "Thai_maichattawa") ;U+0E4B THAI CHARACTER MAI CHATTAWA +(cl-define-keysym #x0dec "Thai_thanthakhat") ;U+0E4C THAI CHARACTER THANTHAKHAT +(cl-define-keysym #x0ded "Thai_nikhahit") ;U+0E4D THAI CHARACTER NIKHAHIT +(cl-define-keysym #x0df0 "Thai_leksun") ;U+0E50 THAI DIGIT ZERO +(cl-define-keysym #x0df1 "Thai_leknung") ;U+0E51 THAI DIGIT ONE +(cl-define-keysym #x0df2 "Thai_leksong") ;U+0E52 THAI DIGIT TWO +(cl-define-keysym #x0df3 "Thai_leksam") ;U+0E53 THAI DIGIT THREE +(cl-define-keysym #x0df4 "Thai_leksi") ;U+0E54 THAI DIGIT FOUR +(cl-define-keysym #x0df5 "Thai_lekha") ;U+0E55 THAI DIGIT FIVE +(cl-define-keysym #x0df6 "Thai_lekhok") ;U+0E56 THAI DIGIT SIX +(cl-define-keysym #x0df7 "Thai_lekchet") ;U+0E57 THAI DIGIT SEVEN +(cl-define-keysym #x0df8 "Thai_lekpaet") ;U+0E58 THAI DIGIT EIGHT +(cl-define-keysym #x0df9 "Thai_lekkao") ;U+0E59 THAI DIGIT NINE +(cl-define-keysym #xff31 "Hangul") ;Hangul start/stop(toggle) +(cl-define-keysym #xff32 "Hangul_Start") ;Hangul start +(cl-define-keysym #xff33 "Hangul_End") ;Hangul end, English start +(cl-define-keysym #xff34 "Hangul_Hanja") ;Start Hangul->Hanja Conversion +(cl-define-keysym #xff35 "Hangul_Jamo") ;Hangul Jamo mode +(cl-define-keysym #xff36 "Hangul_Romaja") ;Hangul Romaja mode +(cl-define-keysym #xff37 "Hangul_Codeinput") ;Hangul code input mode +(cl-define-keysym #xff38 "Hangul_Jeonja") ;Jeonja mode +(cl-define-keysym #xff39 "Hangul_Banja") ;Banja mode +(cl-define-keysym #xff3a "Hangul_PreHanja") ;Pre Hanja conversion +(cl-define-keysym #xff3b "Hangul_PostHanja") ;Post Hanja conversion +(cl-define-keysym #xff3c "Hangul_SingleCandidate") ;Single candidate +(cl-define-keysym #xff3d "Hangul_MultipleCandidate") ;Multiple candidate +(cl-define-keysym #xff3e "Hangul_PreviousCandidate") ;Previous candidate +(cl-define-keysym #xff3f "Hangul_Special") ;Special symbols +(cl-define-keysym #xff7e "Hangul_switch") ;Alias for mode_switch +(cl-define-keysym #x0ea1 "Hangul_Kiyeog") +(cl-define-keysym #x0ea2 "Hangul_SsangKiyeog") +(cl-define-keysym #x0ea3 "Hangul_KiyeogSios") +(cl-define-keysym #x0ea4 "Hangul_Nieun") +(cl-define-keysym #x0ea5 "Hangul_NieunJieuj") +(cl-define-keysym #x0ea6 "Hangul_NieunHieuh") +(cl-define-keysym #x0ea7 "Hangul_Dikeud") +(cl-define-keysym #x0ea8 "Hangul_SsangDikeud") +(cl-define-keysym #x0ea9 "Hangul_Rieul") +(cl-define-keysym #x0eaa "Hangul_RieulKiyeog") +(cl-define-keysym #x0eab "Hangul_RieulMieum") +(cl-define-keysym #x0eac "Hangul_RieulPieub") +(cl-define-keysym #x0ead "Hangul_RieulSios") +(cl-define-keysym #x0eae "Hangul_RieulTieut") +(cl-define-keysym #x0eaf "Hangul_RieulPhieuf") +(cl-define-keysym #x0eb0 "Hangul_RieulHieuh") +(cl-define-keysym #x0eb1 "Hangul_Mieum") +(cl-define-keysym #x0eb2 "Hangul_Pieub") +(cl-define-keysym #x0eb3 "Hangul_SsangPieub") +(cl-define-keysym #x0eb4 "Hangul_PieubSios") +(cl-define-keysym #x0eb5 "Hangul_Sios") +(cl-define-keysym #x0eb6 "Hangul_SsangSios") +(cl-define-keysym #x0eb7 "Hangul_Ieung") +(cl-define-keysym #x0eb8 "Hangul_Jieuj") +(cl-define-keysym #x0eb9 "Hangul_SsangJieuj") +(cl-define-keysym #x0eba "Hangul_Cieuc") +(cl-define-keysym #x0ebb "Hangul_Khieuq") +(cl-define-keysym #x0ebc "Hangul_Tieut") +(cl-define-keysym #x0ebd "Hangul_Phieuf") +(cl-define-keysym #x0ebe "Hangul_Hieuh") +(cl-define-keysym #x0ebf "Hangul_A") +(cl-define-keysym #x0ec0 "Hangul_AE") +(cl-define-keysym #x0ec1 "Hangul_YA") +(cl-define-keysym #x0ec2 "Hangul_YAE") +(cl-define-keysym #x0ec3 "Hangul_EO") +(cl-define-keysym #x0ec4 "Hangul_E") +(cl-define-keysym #x0ec5 "Hangul_YEO") +(cl-define-keysym #x0ec6 "Hangul_YE") +(cl-define-keysym #x0ec7 "Hangul_O") +(cl-define-keysym #x0ec8 "Hangul_WA") +(cl-define-keysym #x0ec9 "Hangul_WAE") +(cl-define-keysym #x0eca "Hangul_OE") +(cl-define-keysym #x0ecb "Hangul_YO") +(cl-define-keysym #x0ecc "Hangul_U") +(cl-define-keysym #x0ecd "Hangul_WEO") +(cl-define-keysym #x0ece "Hangul_WE") +(cl-define-keysym #x0ecf "Hangul_WI") +(cl-define-keysym #x0ed0 "Hangul_YU") +(cl-define-keysym #x0ed1 "Hangul_EU") +(cl-define-keysym #x0ed2 "Hangul_YI") +(cl-define-keysym #x0ed3 "Hangul_I") +(cl-define-keysym #x0ed4 "Hangul_J_Kiyeog") +(cl-define-keysym #x0ed5 "Hangul_J_SsangKiyeog") +(cl-define-keysym #x0ed6 "Hangul_J_KiyeogSios") +(cl-define-keysym #x0ed7 "Hangul_J_Nieun") +(cl-define-keysym #x0ed8 "Hangul_J_NieunJieuj") +(cl-define-keysym #x0ed9 "Hangul_J_NieunHieuh") +(cl-define-keysym #x0eda "Hangul_J_Dikeud") +(cl-define-keysym #x0edb "Hangul_J_Rieul") +(cl-define-keysym #x0edc "Hangul_J_RieulKiyeog") +(cl-define-keysym #x0edd "Hangul_J_RieulMieum") +(cl-define-keysym #x0ede "Hangul_J_RieulPieub") +(cl-define-keysym #x0edf "Hangul_J_RieulSios") +(cl-define-keysym #x0ee0 "Hangul_J_RieulTieut") +(cl-define-keysym #x0ee1 "Hangul_J_RieulPhieuf") +(cl-define-keysym #x0ee2 "Hangul_J_RieulHieuh") +(cl-define-keysym #x0ee3 "Hangul_J_Mieum") +(cl-define-keysym #x0ee4 "Hangul_J_Pieub") +(cl-define-keysym #x0ee5 "Hangul_J_PieubSios") +(cl-define-keysym #x0ee6 "Hangul_J_Sios") +(cl-define-keysym #x0ee7 "Hangul_J_SsangSios") +(cl-define-keysym #x0ee8 "Hangul_J_Ieung") +(cl-define-keysym #x0ee9 "Hangul_J_Jieuj") +(cl-define-keysym #x0eea "Hangul_J_Cieuc") +(cl-define-keysym #x0eeb "Hangul_J_Khieuq") +(cl-define-keysym #x0eec "Hangul_J_Tieut") +(cl-define-keysym #x0eed "Hangul_J_Phieuf") +(cl-define-keysym #x0eee "Hangul_J_Hieuh") +(cl-define-keysym #x0eef "Hangul_RieulYeorinHieuh") +(cl-define-keysym #x0ef0 "Hangul_SunkyeongeumMieum") +(cl-define-keysym #x0ef1 "Hangul_SunkyeongeumPieub") +(cl-define-keysym #x0ef2 "Hangul_PanSios") +(cl-define-keysym #x0ef3 "Hangul_KkogjiDalrinIeung") +(cl-define-keysym #x0ef4 "Hangul_SunkyeongeumPhieuf") +(cl-define-keysym #x0ef5 "Hangul_YeorinHieuh") +(cl-define-keysym #x0ef6 "Hangul_AraeA") +(cl-define-keysym #x0ef7 "Hangul_AraeAE") +(cl-define-keysym #x0ef8 "Hangul_J_PanSios") +(cl-define-keysym #x0ef9 "Hangul_J_KkogjiDalrinIeung") +(cl-define-keysym #x0efa "Hangul_J_YeorinHieuh") +(cl-define-keysym #x0eff "Korean_Won") ;(U+20A9 WON SIGN) +(cl-define-keysym #x1000587 "Armenian_ligature_ew") ;U+0587 ARMENIAN SMALL LIGATURE ECH YIWN +(cl-define-keysym #x1000589 "Armenian_full_stop") ;U+0589 ARMENIAN FULL STOP +(cl-define-keysym #x1000589 "Armenian_verjaket") ;U+0589 ARMENIAN FULL STOP +(cl-define-keysym #x100055d "Armenian_separation_mark") ;U+055D ARMENIAN COMMA +(cl-define-keysym #x100055d "Armenian_but") ;U+055D ARMENIAN COMMA +(cl-define-keysym #x100058a "Armenian_hyphen") ;U+058A ARMENIAN HYPHEN +(cl-define-keysym #x100058a "Armenian_yentamna") ;U+058A ARMENIAN HYPHEN +(cl-define-keysym #x100055c "Armenian_exclam") ;U+055C ARMENIAN EXCLAMATION MARK +(cl-define-keysym #x100055c "Armenian_amanak") ;U+055C ARMENIAN EXCLAMATION MARK +(cl-define-keysym #x100055b "Armenian_accent") ;U+055B ARMENIAN EMPHASIS MARK +(cl-define-keysym #x100055b "Armenian_shesht") ;U+055B ARMENIAN EMPHASIS MARK +(cl-define-keysym #x100055e "Armenian_question") ;U+055E ARMENIAN QUESTION MARK +(cl-define-keysym #x100055e "Armenian_paruyk") ;U+055E ARMENIAN QUESTION MARK +(cl-define-keysym #x1000531 "Armenian_AYB") ;U+0531 ARMENIAN CAPITAL LETTER AYB +(cl-define-keysym #x1000561 "Armenian_ayb") ;U+0561 ARMENIAN SMALL LETTER AYB +(cl-define-keysym #x1000532 "Armenian_BEN") ;U+0532 ARMENIAN CAPITAL LETTER BEN +(cl-define-keysym #x1000562 "Armenian_ben") ;U+0562 ARMENIAN SMALL LETTER BEN +(cl-define-keysym #x1000533 "Armenian_GIM") ;U+0533 ARMENIAN CAPITAL LETTER GIM +(cl-define-keysym #x1000563 "Armenian_gim") ;U+0563 ARMENIAN SMALL LETTER GIM +(cl-define-keysym #x1000534 "Armenian_DA") ;U+0534 ARMENIAN CAPITAL LETTER DA +(cl-define-keysym #x1000564 "Armenian_da") ;U+0564 ARMENIAN SMALL LETTER DA +(cl-define-keysym #x1000535 "Armenian_YECH") ;U+0535 ARMENIAN CAPITAL LETTER ECH +(cl-define-keysym #x1000565 "Armenian_yech") ;U+0565 ARMENIAN SMALL LETTER ECH +(cl-define-keysym #x1000536 "Armenian_ZA") ;U+0536 ARMENIAN CAPITAL LETTER ZA +(cl-define-keysym #x1000566 "Armenian_za") ;U+0566 ARMENIAN SMALL LETTER ZA +(cl-define-keysym #x1000537 "Armenian_E") ;U+0537 ARMENIAN CAPITAL LETTER EH +(cl-define-keysym #x1000567 "Armenian_e") ;U+0567 ARMENIAN SMALL LETTER EH +(cl-define-keysym #x1000538 "Armenian_AT") ;U+0538 ARMENIAN CAPITAL LETTER ET +(cl-define-keysym #x1000568 "Armenian_at") ;U+0568 ARMENIAN SMALL LETTER ET +(cl-define-keysym #x1000539 "Armenian_TO") ;U+0539 ARMENIAN CAPITAL LETTER TO +(cl-define-keysym #x1000569 "Armenian_to") ;U+0569 ARMENIAN SMALL LETTER TO +(cl-define-keysym #x100053a "Armenian_ZHE") ;U+053A ARMENIAN CAPITAL LETTER ZHE +(cl-define-keysym #x100056a "Armenian_zhe") ;U+056A ARMENIAN SMALL LETTER ZHE +(cl-define-keysym #x100053b "Armenian_INI") ;U+053B ARMENIAN CAPITAL LETTER INI +(cl-define-keysym #x100056b "Armenian_ini") ;U+056B ARMENIAN SMALL LETTER INI +(cl-define-keysym #x100053c "Armenian_LYUN") ;U+053C ARMENIAN CAPITAL LETTER LIWN +(cl-define-keysym #x100056c "Armenian_lyun") ;U+056C ARMENIAN SMALL LETTER LIWN +(cl-define-keysym #x100053d "Armenian_KHE") ;U+053D ARMENIAN CAPITAL LETTER XEH +(cl-define-keysym #x100056d "Armenian_khe") ;U+056D ARMENIAN SMALL LETTER XEH +(cl-define-keysym #x100053e "Armenian_TSA") ;U+053E ARMENIAN CAPITAL LETTER CA +(cl-define-keysym #x100056e "Armenian_tsa") ;U+056E ARMENIAN SMALL LETTER CA +(cl-define-keysym #x100053f "Armenian_KEN") ;U+053F ARMENIAN CAPITAL LETTER KEN +(cl-define-keysym #x100056f "Armenian_ken") ;U+056F ARMENIAN SMALL LETTER KEN +(cl-define-keysym #x1000540 "Armenian_HO") ;U+0540 ARMENIAN CAPITAL LETTER HO +(cl-define-keysym #x1000570 "Armenian_ho") ;U+0570 ARMENIAN SMALL LETTER HO +(cl-define-keysym #x1000541 "Armenian_DZA") ;U+0541 ARMENIAN CAPITAL LETTER JA +(cl-define-keysym #x1000571 "Armenian_dza") ;U+0571 ARMENIAN SMALL LETTER JA +(cl-define-keysym #x1000542 "Armenian_GHAT") ;U+0542 ARMENIAN CAPITAL LETTER GHAD +(cl-define-keysym #x1000572 "Armenian_ghat") ;U+0572 ARMENIAN SMALL LETTER GHAD +(cl-define-keysym #x1000543 "Armenian_TCHE") ;U+0543 ARMENIAN CAPITAL LETTER CHEH +(cl-define-keysym #x1000573 "Armenian_tche") ;U+0573 ARMENIAN SMALL LETTER CHEH +(cl-define-keysym #x1000544 "Armenian_MEN") ;U+0544 ARMENIAN CAPITAL LETTER MEN +(cl-define-keysym #x1000574 "Armenian_men") ;U+0574 ARMENIAN SMALL LETTER MEN +(cl-define-keysym #x1000545 "Armenian_HI") ;U+0545 ARMENIAN CAPITAL LETTER YI +(cl-define-keysym #x1000575 "Armenian_hi") ;U+0575 ARMENIAN SMALL LETTER YI +(cl-define-keysym #x1000546 "Armenian_NU") ;U+0546 ARMENIAN CAPITAL LETTER NOW +(cl-define-keysym #x1000576 "Armenian_nu") ;U+0576 ARMENIAN SMALL LETTER NOW +(cl-define-keysym #x1000547 "Armenian_SHA") ;U+0547 ARMENIAN CAPITAL LETTER SHA +(cl-define-keysym #x1000577 "Armenian_sha") ;U+0577 ARMENIAN SMALL LETTER SHA +(cl-define-keysym #x1000548 "Armenian_VO") ;U+0548 ARMENIAN CAPITAL LETTER VO +(cl-define-keysym #x1000578 "Armenian_vo") ;U+0578 ARMENIAN SMALL LETTER VO +(cl-define-keysym #x1000549 "Armenian_CHA") ;U+0549 ARMENIAN CAPITAL LETTER CHA +(cl-define-keysym #x1000579 "Armenian_cha") ;U+0579 ARMENIAN SMALL LETTER CHA +(cl-define-keysym #x100054a "Armenian_PE") ;U+054A ARMENIAN CAPITAL LETTER PEH +(cl-define-keysym #x100057a "Armenian_pe") ;U+057A ARMENIAN SMALL LETTER PEH +(cl-define-keysym #x100054b "Armenian_JE") ;U+054B ARMENIAN CAPITAL LETTER JHEH +(cl-define-keysym #x100057b "Armenian_je") ;U+057B ARMENIAN SMALL LETTER JHEH +(cl-define-keysym #x100054c "Armenian_RA") ;U+054C ARMENIAN CAPITAL LETTER RA +(cl-define-keysym #x100057c "Armenian_ra") ;U+057C ARMENIAN SMALL LETTER RA +(cl-define-keysym #x100054d "Armenian_SE") ;U+054D ARMENIAN CAPITAL LETTER SEH +(cl-define-keysym #x100057d "Armenian_se") ;U+057D ARMENIAN SMALL LETTER SEH +(cl-define-keysym #x100054e "Armenian_VEV") ;U+054E ARMENIAN CAPITAL LETTER VEW +(cl-define-keysym #x100057e "Armenian_vev") ;U+057E ARMENIAN SMALL LETTER VEW +(cl-define-keysym #x100054f "Armenian_TYUN") ;U+054F ARMENIAN CAPITAL LETTER TIWN +(cl-define-keysym #x100057f "Armenian_tyun") ;U+057F ARMENIAN SMALL LETTER TIWN +(cl-define-keysym #x1000550 "Armenian_RE") ;U+0550 ARMENIAN CAPITAL LETTER REH +(cl-define-keysym #x1000580 "Armenian_re") ;U+0580 ARMENIAN SMALL LETTER REH +(cl-define-keysym #x1000551 "Armenian_TSO") ;U+0551 ARMENIAN CAPITAL LETTER CO +(cl-define-keysym #x1000581 "Armenian_tso") ;U+0581 ARMENIAN SMALL LETTER CO +(cl-define-keysym #x1000552 "Armenian_VYUN") ;U+0552 ARMENIAN CAPITAL LETTER YIWN +(cl-define-keysym #x1000582 "Armenian_vyun") ;U+0582 ARMENIAN SMALL LETTER YIWN +(cl-define-keysym #x1000553 "Armenian_PYUR") ;U+0553 ARMENIAN CAPITAL LETTER PIWR +(cl-define-keysym #x1000583 "Armenian_pyur") ;U+0583 ARMENIAN SMALL LETTER PIWR +(cl-define-keysym #x1000554 "Armenian_KE") ;U+0554 ARMENIAN CAPITAL LETTER KEH +(cl-define-keysym #x1000584 "Armenian_ke") ;U+0584 ARMENIAN SMALL LETTER KEH +(cl-define-keysym #x1000555 "Armenian_O") ;U+0555 ARMENIAN CAPITAL LETTER OH +(cl-define-keysym #x1000585 "Armenian_o") ;U+0585 ARMENIAN SMALL LETTER OH +(cl-define-keysym #x1000556 "Armenian_FE") ;U+0556 ARMENIAN CAPITAL LETTER FEH +(cl-define-keysym #x1000586 "Armenian_fe") ;U+0586 ARMENIAN SMALL LETTER FEH +(cl-define-keysym #x100055a "Armenian_apostrophe") ;U+055A ARMENIAN APOSTROPHE +(cl-define-keysym #x10010d0 "Georgian_an") ;U+10D0 GEORGIAN LETTER AN +(cl-define-keysym #x10010d1 "Georgian_ban") ;U+10D1 GEORGIAN LETTER BAN +(cl-define-keysym #x10010d2 "Georgian_gan") ;U+10D2 GEORGIAN LETTER GAN +(cl-define-keysym #x10010d3 "Georgian_don") ;U+10D3 GEORGIAN LETTER DON +(cl-define-keysym #x10010d4 "Georgian_en") ;U+10D4 GEORGIAN LETTER EN +(cl-define-keysym #x10010d5 "Georgian_vin") ;U+10D5 GEORGIAN LETTER VIN +(cl-define-keysym #x10010d6 "Georgian_zen") ;U+10D6 GEORGIAN LETTER ZEN +(cl-define-keysym #x10010d7 "Georgian_tan") ;U+10D7 GEORGIAN LETTER TAN +(cl-define-keysym #x10010d8 "Georgian_in") ;U+10D8 GEORGIAN LETTER IN +(cl-define-keysym #x10010d9 "Georgian_kan") ;U+10D9 GEORGIAN LETTER KAN +(cl-define-keysym #x10010da "Georgian_las") ;U+10DA GEORGIAN LETTER LAS +(cl-define-keysym #x10010db "Georgian_man") ;U+10DB GEORGIAN LETTER MAN +(cl-define-keysym #x10010dc "Georgian_nar") ;U+10DC GEORGIAN LETTER NAR +(cl-define-keysym #x10010dd "Georgian_on") ;U+10DD GEORGIAN LETTER ON +(cl-define-keysym #x10010de "Georgian_par") ;U+10DE GEORGIAN LETTER PAR +(cl-define-keysym #x10010df "Georgian_zhar") ;U+10DF GEORGIAN LETTER ZHAR +(cl-define-keysym #x10010e0 "Georgian_rae") ;U+10E0 GEORGIAN LETTER RAE +(cl-define-keysym #x10010e1 "Georgian_san") ;U+10E1 GEORGIAN LETTER SAN +(cl-define-keysym #x10010e2 "Georgian_tar") ;U+10E2 GEORGIAN LETTER TAR +(cl-define-keysym #x10010e3 "Georgian_un") ;U+10E3 GEORGIAN LETTER UN +(cl-define-keysym #x10010e4 "Georgian_phar") ;U+10E4 GEORGIAN LETTER PHAR +(cl-define-keysym #x10010e5 "Georgian_khar") ;U+10E5 GEORGIAN LETTER KHAR +(cl-define-keysym #x10010e6 "Georgian_ghan") ;U+10E6 GEORGIAN LETTER GHAN +(cl-define-keysym #x10010e7 "Georgian_qar") ;U+10E7 GEORGIAN LETTER QAR +(cl-define-keysym #x10010e8 "Georgian_shin") ;U+10E8 GEORGIAN LETTER SHIN +(cl-define-keysym #x10010e9 "Georgian_chin") ;U+10E9 GEORGIAN LETTER CHIN +(cl-define-keysym #x10010ea "Georgian_can") ;U+10EA GEORGIAN LETTER CAN +(cl-define-keysym #x10010eb "Georgian_jil") ;U+10EB GEORGIAN LETTER JIL +(cl-define-keysym #x10010ec "Georgian_cil") ;U+10EC GEORGIAN LETTER CIL +(cl-define-keysym #x10010ed "Georgian_char") ;U+10ED GEORGIAN LETTER CHAR +(cl-define-keysym #x10010ee "Georgian_xan") ;U+10EE GEORGIAN LETTER XAN +(cl-define-keysym #x10010ef "Georgian_jhan") ;U+10EF GEORGIAN LETTER JHAN +(cl-define-keysym #x10010f0 "Georgian_hae") ;U+10F0 GEORGIAN LETTER HAE +(cl-define-keysym #x10010f1 "Georgian_he") ;U+10F1 GEORGIAN LETTER HE +(cl-define-keysym #x10010f2 "Georgian_hie") ;U+10F2 GEORGIAN LETTER HIE +(cl-define-keysym #x10010f3 "Georgian_we") ;U+10F3 GEORGIAN LETTER WE +(cl-define-keysym #x10010f4 "Georgian_har") ;U+10F4 GEORGIAN LETTER HAR +(cl-define-keysym #x10010f5 "Georgian_hoe") ;U+10F5 GEORGIAN LETTER HOE +(cl-define-keysym #x10010f6 "Georgian_fi") ;U+10F6 GEORGIAN LETTER FI +(cl-define-keysym #x1001e8a "Xabovedot") ;U+1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE +(cl-define-keysym #x100012c "Ibreve") ;U+012C LATIN CAPITAL LETTER I WITH BREVE +(cl-define-keysym #x10001b5 "Zstroke") ;U+01B5 LATIN CAPITAL LETTER Z WITH STROKE +(cl-define-keysym #x10001e6 "Gcaron") ;U+01E6 LATIN CAPITAL LETTER G WITH CARON +(cl-define-keysym #x10001d1 "Ocaron") ;U+01D2 LATIN CAPITAL LETTER O WITH CARON +(cl-define-keysym #x100019f "Obarred") ;U+019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE +(cl-define-keysym #x1001e8b "xabovedot") ;U+1E8B LATIN SMALL LETTER X WITH DOT ABOVE +(cl-define-keysym #x100012d "ibreve") ;U+012D LATIN SMALL LETTER I WITH BREVE +(cl-define-keysym #x10001b6 "zstroke") ;U+01B6 LATIN SMALL LETTER Z WITH STROKE +(cl-define-keysym #x10001e7 "gcaron") ;U+01E7 LATIN SMALL LETTER G WITH CARON +(cl-define-keysym #x10001d2 "ocaron") ;U+01D2 LATIN SMALL LETTER O WITH CARON +(cl-define-keysym #x1000275 "obarred") ;U+0275 LATIN SMALL LETTER BARRED O +(cl-define-keysym #x100018f "SCHWA") ;U+018F LATIN CAPITAL LETTER SCHWA +(cl-define-keysym #x1000259 "schwa") ;U+0259 LATIN SMALL LETTER SCHWA +(cl-define-keysym #x1001e36 "Lbelowdot") ;U+1E36 LATIN CAPITAL LETTER L WITH DOT BELOW +(cl-define-keysym #x1001e37 "lbelowdot") ;U+1E37 LATIN SMALL LETTER L WITH DOT BELOW +(cl-define-keysym #x1001ea0 "Abelowdot") ;U+1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW +(cl-define-keysym #x1001ea1 "abelowdot") ;U+1EA1 LATIN SMALL LETTER A WITH DOT BELOW +(cl-define-keysym #x1001ea2 "Ahook") ;U+1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE +(cl-define-keysym #x1001ea3 "ahook") ;U+1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE +(cl-define-keysym #x1001ea4 "Acircumflexacute") ;U+1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +(cl-define-keysym #x1001ea5 "acircumflexacute") ;U+1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +(cl-define-keysym #x1001ea6 "Acircumflexgrave") ;U+1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +(cl-define-keysym #x1001ea7 "acircumflexgrave") ;U+1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +(cl-define-keysym #x1001ea8 "Acircumflexhook") ;U+1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +(cl-define-keysym #x1001ea9 "acircumflexhook") ;U+1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +(cl-define-keysym #x1001eaa "Acircumflextilde") ;U+1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +(cl-define-keysym #x1001eab "acircumflextilde") ;U+1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +(cl-define-keysym #x1001eac "Acircumflexbelowdot") ;U+1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +(cl-define-keysym #x1001ead "acircumflexbelowdot") ;U+1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +(cl-define-keysym #x1001eae "Abreveacute") ;U+1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +(cl-define-keysym #x1001eaf "abreveacute") ;U+1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE +(cl-define-keysym #x1001eb0 "Abrevegrave") ;U+1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +(cl-define-keysym #x1001eb1 "abrevegrave") ;U+1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE +(cl-define-keysym #x1001eb2 "Abrevehook") ;U+1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +(cl-define-keysym #x1001eb3 "abrevehook") ;U+1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +(cl-define-keysym #x1001eb4 "Abrevetilde") ;U+1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE +(cl-define-keysym #x1001eb5 "abrevetilde") ;U+1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE +(cl-define-keysym #x1001eb6 "Abrevebelowdot") ;U+1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +(cl-define-keysym #x1001eb7 "abrevebelowdot") ;U+1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +(cl-define-keysym #x1001eb8 "Ebelowdot") ;U+1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW +(cl-define-keysym #x1001eb9 "ebelowdot") ;U+1EB9 LATIN SMALL LETTER E WITH DOT BELOW +(cl-define-keysym #x1001eba "Ehook") ;U+1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE +(cl-define-keysym #x1001ebb "ehook") ;U+1EBB LATIN SMALL LETTER E WITH HOOK ABOVE +(cl-define-keysym #x1001ebc "Etilde") ;U+1EBC LATIN CAPITAL LETTER E WITH TILDE +(cl-define-keysym #x1001ebd "etilde") ;U+1EBD LATIN SMALL LETTER E WITH TILDE +(cl-define-keysym #x1001ebe "Ecircumflexacute") ;U+1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +(cl-define-keysym #x1001ebf "ecircumflexacute") ;U+1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +(cl-define-keysym #x1001ec0 "Ecircumflexgrave") ;U+1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +(cl-define-keysym #x1001ec1 "ecircumflexgrave") ;U+1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +(cl-define-keysym #x1001ec2 "Ecircumflexhook") ;U+1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +(cl-define-keysym #x1001ec3 "ecircumflexhook") ;U+1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +(cl-define-keysym #x1001ec4 "Ecircumflextilde") ;U+1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +(cl-define-keysym #x1001ec5 "ecircumflextilde") ;U+1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +(cl-define-keysym #x1001ec6 "Ecircumflexbelowdot") ;U+1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +(cl-define-keysym #x1001ec7 "ecircumflexbelowdot") ;U+1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +(cl-define-keysym #x1001ec8 "Ihook") ;U+1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE +(cl-define-keysym #x1001ec9 "ihook") ;U+1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE +(cl-define-keysym #x1001eca "Ibelowdot") ;U+1ECA LATIN CAPITAL LETTER I WITH DOT BELOW +(cl-define-keysym #x1001ecb "ibelowdot") ;U+1ECB LATIN SMALL LETTER I WITH DOT BELOW +(cl-define-keysym #x1001ecc "Obelowdot") ;U+1ECC LATIN CAPITAL LETTER O WITH DOT BELOW +(cl-define-keysym #x1001ecd "obelowdot") ;U+1ECD LATIN SMALL LETTER O WITH DOT BELOW +(cl-define-keysym #x1001ece "Ohook") ;U+1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE +(cl-define-keysym #x1001ecf "ohook") ;U+1ECF LATIN SMALL LETTER O WITH HOOK ABOVE +(cl-define-keysym #x1001ed0 "Ocircumflexacute") ;U+1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +(cl-define-keysym #x1001ed1 "ocircumflexacute") ;U+1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +(cl-define-keysym #x1001ed2 "Ocircumflexgrave") ;U+1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +(cl-define-keysym #x1001ed3 "ocircumflexgrave") ;U+1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +(cl-define-keysym #x1001ed4 "Ocircumflexhook") ;U+1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +(cl-define-keysym #x1001ed5 "ocircumflexhook") ;U+1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +(cl-define-keysym #x1001ed6 "Ocircumflextilde") ;U+1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +(cl-define-keysym #x1001ed7 "ocircumflextilde") ;U+1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +(cl-define-keysym #x1001ed8 "Ocircumflexbelowdot") ;U+1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +(cl-define-keysym #x1001ed9 "ocircumflexbelowdot") ;U+1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +(cl-define-keysym #x1001eda "Ohornacute") ;U+1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE +(cl-define-keysym #x1001edb "ohornacute") ;U+1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE +(cl-define-keysym #x1001edc "Ohorngrave") ;U+1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE +(cl-define-keysym #x1001edd "ohorngrave") ;U+1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE +(cl-define-keysym #x1001ede "Ohornhook") ;U+1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +(cl-define-keysym #x1001edf "ohornhook") ;U+1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE +(cl-define-keysym #x1001ee0 "Ohorntilde") ;U+1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE +(cl-define-keysym #x1001ee1 "ohorntilde") ;U+1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE +(cl-define-keysym #x1001ee2 "Ohornbelowdot") ;U+1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +(cl-define-keysym #x1001ee3 "ohornbelowdot") ;U+1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW +(cl-define-keysym #x1001ee4 "Ubelowdot") ;U+1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW +(cl-define-keysym #x1001ee5 "ubelowdot") ;U+1EE5 LATIN SMALL LETTER U WITH DOT BELOW +(cl-define-keysym #x1001ee6 "Uhook") ;U+1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE +(cl-define-keysym #x1001ee7 "uhook") ;U+1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE +(cl-define-keysym #x1001ee8 "Uhornacute") ;U+1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE +(cl-define-keysym #x1001ee9 "uhornacute") ;U+1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE +(cl-define-keysym #x1001eea "Uhorngrave") ;U+1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE +(cl-define-keysym #x1001eeb "uhorngrave") ;U+1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE +(cl-define-keysym #x1001eec "Uhornhook") ;U+1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +(cl-define-keysym #x1001eed "uhornhook") ;U+1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE +(cl-define-keysym #x1001eee "Uhorntilde") ;U+1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE +(cl-define-keysym #x1001eef "uhorntilde") ;U+1EEF LATIN SMALL LETTER U WITH HORN AND TILDE +(cl-define-keysym #x1001ef0 "Uhornbelowdot") ;U+1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +(cl-define-keysym #x1001ef1 "uhornbelowdot") ;U+1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW +(cl-define-keysym #x1001ef4 "Ybelowdot") ;U+1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW +(cl-define-keysym #x1001ef5 "ybelowdot") ;U+1EF5 LATIN SMALL LETTER Y WITH DOT BELOW +(cl-define-keysym #x1001ef6 "Yhook") ;U+1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE +(cl-define-keysym #x1001ef7 "yhook") ;U+1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE +(cl-define-keysym #x1001ef8 "Ytilde") ;U+1EF8 LATIN CAPITAL LETTER Y WITH TILDE +(cl-define-keysym #x1001ef9 "ytilde") ;U+1EF9 LATIN SMALL LETTER Y WITH TILDE +(cl-define-keysym #x10001a0 "Ohorn") ;U+01A0 LATIN CAPITAL LETTER O WITH HORN +(cl-define-keysym #x10001a1 "ohorn") ;U+01A1 LATIN SMALL LETTER O WITH HORN +(cl-define-keysym #x10001af "Uhorn") ;U+01AF LATIN CAPITAL LETTER U WITH HORN +(cl-define-keysym #x10001b0 "uhorn") ;U+01B0 LATIN SMALL LETTER U WITH HORN +(cl-define-keysym #x10020a0 "EcuSign") ;U+20A0 EURO-CURRENCY SIGN +(cl-define-keysym #x10020a1 "ColonSign") ;U+20A1 COLON SIGN +(cl-define-keysym #x10020a2 "CruzeiroSign") ;U+20A2 CRUZEIRO SIGN +(cl-define-keysym #x10020a3 "FFrancSign") ;U+20A3 FRENCH FRANC SIGN +(cl-define-keysym #x10020a4 "LiraSign") ;U+20A4 LIRA SIGN +(cl-define-keysym #x10020a5 "MillSign") ;U+20A5 MILL SIGN +(cl-define-keysym #x10020a6 "NairaSign") ;U+20A6 NAIRA SIGN +(cl-define-keysym #x10020a7 "PesetaSign") ;U+20A7 PESETA SIGN +(cl-define-keysym #x10020a8 "RupeeSign") ;U+20A8 RUPEE SIGN +(cl-define-keysym #x10020a9 "WonSign") ;U+20A9 WON SIGN +(cl-define-keysym #x10020aa "NewSheqelSign") ;U+20AA NEW SHEQEL SIGN +(cl-define-keysym #x10020ab "DongSign") ;U+20AB DONG SIGN +(cl-define-keysym #x20ac "EuroSign") ;U+20AC EURO SIGN +(cl-define-keysym #x1002070 "zerosuperior") ;U+2070 SUPERSCRIPT ZERO +(cl-define-keysym #x1002074 "foursuperior") ;U+2074 SUPERSCRIPT FOUR +(cl-define-keysym #x1002075 "fivesuperior") ;U+2075 SUPERSCRIPT FIVE +(cl-define-keysym #x1002076 "sixsuperior") ;U+2076 SUPERSCRIPT SIX +(cl-define-keysym #x1002077 "sevensuperior") ;U+2077 SUPERSCRIPT SEVEN +(cl-define-keysym #x1002078 "eightsuperior") ;U+2078 SUPERSCRIPT EIGHT +(cl-define-keysym #x1002079 "ninesuperior") ;U+2079 SUPERSCRIPT NINE +(cl-define-keysym #x1002080 "zerosubscript") ;U+2080 SUBSCRIPT ZERO +(cl-define-keysym #x1002081 "onesubscript") ;U+2081 SUBSCRIPT ONE +(cl-define-keysym #x1002082 "twosubscript") ;U+2082 SUBSCRIPT TWO +(cl-define-keysym #x1002083 "threesubscript") ;U+2083 SUBSCRIPT THREE +(cl-define-keysym #x1002084 "foursubscript") ;U+2084 SUBSCRIPT FOUR +(cl-define-keysym #x1002085 "fivesubscript") ;U+2085 SUBSCRIPT FIVE +(cl-define-keysym #x1002086 "sixsubscript") ;U+2086 SUBSCRIPT SIX +(cl-define-keysym #x1002087 "sevensubscript") ;U+2087 SUBSCRIPT SEVEN +(cl-define-keysym #x1002088 "eightsubscript") ;U+2088 SUBSCRIPT EIGHT +(cl-define-keysym #x1002089 "ninesubscript") ;U+2089 SUBSCRIPT NINE +(cl-define-keysym #x1002202 "partdifferential") ;U+2202 PARTIAL DIFFERENTIAL +(cl-define-keysym #x1002205 "emptyset") ;U+2205 NULL SET +(cl-define-keysym #x1002208 "elementof") ;U+2208 ELEMENT OF +(cl-define-keysym #x1002209 "notelementof") ;U+2209 NOT AN ELEMENT OF +(cl-define-keysym #x100220B "containsas") ;U+220B CONTAINS AS MEMBER +(cl-define-keysym #x100221A "squareroot") ;U+221A SQUARE ROOT +(cl-define-keysym #x100221B "cuberoot") ;U+221B CUBE ROOT +(cl-define-keysym #x100221C "fourthroot") ;U+221C FOURTH ROOT +(cl-define-keysym #x100222C "dintegral") ;U+222C DOUBLE INTEGRAL +(cl-define-keysym #x100222D "tintegral") ;U+222D TRIPLE INTEGRAL +(cl-define-keysym #x1002235 "because") ;U+2235 BECAUSE +(cl-define-keysym #x1002248 "approxeq") ;U+2245 ALMOST EQUAL TO +(cl-define-keysym #x1002247 "notapproxeq") ;U+2247 NOT ALMOST EQUAL TO +(cl-define-keysym #x1002262 "notidentical") ;U+2262 NOT IDENTICAL TO +(cl-define-keysym #x1002263 "stricteq") ;U+2263 STRICTLY EQUIVALENT TO Added: load.lisp ============================================================================== --- (empty file) +++ load.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,59 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Tue Feb 26 23:00:22 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: System loading functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + + +(defparameter *base-dir* (directory-namestring *load-truename*)) + +#+CMU +(setf ext:*gc-verbose* nil) + +#+CMU +(require :clx) + +#+SBCL +(require :asdf) + +#+SBCL +(require :sb-posix) + +#+SBCL +(require :clx) + +#-ASDF +(load (make-pathname :host (pathname-host *base-dir*) + :device (pathname-device *base-dir*) + :directory (pathname-directory *base-dir*) + :name "asdf" :type "lisp")) + +(push *base-dir* asdf:*central-registry*) + + +(asdf:oos 'asdf:load-op :clfswm) + +(in-package :clfswm) + +(clfswm:main ":0") Added: my-html.fas ============================================================================== --- (empty file) +++ my-html.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,140 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 30 (IN-PACKAGE :COMMON-LISP-USER)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("COMMON-LISP-USER" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|32 37 (DEFPACKAGE :MY-HTML (:USE :COMMON-LISP :TOOLS) ...)-2-1| + #18Y(00 00 00 00 00 00 00 00 00 01 DA 01 04 31 E1 3E 19 01) ("MY-HTML") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|32 37 (DEFPACKAGE :MY-HTML (:USE :COMMON-LISP :TOOLS) ...)-2-2| + #17Y(00 00 00 00 00 00 00 00 00 01 DA DB 31 DE 3E 19 01) + (("COMMON-LISP" "TOOLS") "MY-HTML") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|32 37 (DEFPACKAGE :MY-HTML (:USE :COMMON-LISP :TOOLS) ...)-2-3| + #19Y(00 00 00 00 00 00 00 00 00 01 DA DB 63 2D 03 02 3E 19 01) + (("INSERT-HTML-DOCTYPE" "PRODUCE-HTML" "WITH-HTML" "PRODUCE-HTML-STRING") + "MY-HTML" |SYSTEM|::|INTERN-EXPORT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|32 37 (DEFPACKAGE :MY-HTML (:USE :COMMON-LISP :TOOLS) ...)-2-4| + #15Y(00 00 00 00 00 00 00 00 00 01 DA 31 CE 19 01) ("MY-HTML") + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) +#Y(#:|39 39 (IN-PACKAGE :MY-HTML)-3| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("MY-HTML" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|42 44 (DEFUN INSERT-HTML-DOCTYPE NIL ...)-4| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|MY-HTML|::|INSERT-HTML-DOCTYPE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|MY-HTML|::|INSERT-HTML-DOCTYPE| + #13Y(00 00 00 00 00 00 00 00 06 01 C5 19 01) + ("") + |COMMON-LISP|::|NIL| () |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|48 61 (DEFUN PRODUCE-HTML (TREE &OPTIONAL # ...) ...)-5| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|MY-HTML|::|PRODUCE-HTML| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|MY-HTML|::|PRODUCE-HTML| + #115Y(00 00 00 00 01 00 02 00 06 0D 3B 02 02 C5 FA 3B 01 03 0E 01 F9 AF + 8E 0D 13 AE AE 30 02 AD B0 8E 09 80 4C CE 14 A2 14 2D 03 04 19 04 + AE AE 30 02 AD DD 94 05 2D 03 04 95 03 63 1B 1D 94 05 DA E1 94 08 + 38 06 72 60 32 46 1B 5C 87 01 00 14 DF B2 73 02 35 B1 28 FF B3 83 + 01 AD 8D 94 6D 16 02 AE AE 30 02 AD E0 94 05 8E 09 52 A2 5B 1B FF + B7 CD 1B FF B1) + (0. |COMMON-LISP|::|*STANDARD-OUTPUT*| |TOOLS|::|PRINT-SPACE| + #Y(|MY-HTML|::|PRODUCE-HTML-1| + #49Y(00 00 00 00 02 00 00 00 01 18 38 01 B0 71 92 72 76 DA AD 31 8A + AF AD 31 86 DB AD 31 8A AC 72 77 38 02 71 47 B1 38 02 31 8B 16 + 01 AF 31 8D 9E 19 04) + (#\< #\>) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|FORMAT| 2. + #Y(|MY-HTML|::|PRODUCE-HTML-2| + #51Y(00 00 00 00 02 00 00 00 01 18 38 01 B0 71 92 72 76 DA AD 38 02 + 31 8B AF AD 31 86 DB AD 31 8A AC 72 77 38 02 71 47 B1 38 02 31 + 8B 16 01 AF 31 8D 9E 19 04) + (") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + #\ "~A~%" "~(~A~)~%") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|MY-HTML|::|TREE| |COMMON-LISP|::|&OPTIONAL| (|MY-HTML|::|LEVEL| 0.) + (|COMMON-LISP|::|STREAM| |COMMON-LISP|::|*STANDARD-OUTPUT*|)) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|64 65 (DEFMACRO WITH-HTML (# &REST REST) ...)-6| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|MY-HTML|::|WITH-HTML| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|MY-HTML|::|WITH-HTML| + #67Y(00 00 00 00 02 00 00 00 00 03 AE DA 8B 01 1E 9F 5C 78 AC DD DE 2D + 03 01 1D 18 AC 92 00 22 02 14 A2 5C 79 E6 E7 9F 7A DD B0 61 04 19 + 07 AE 2F 02 19 03 DF E0 B1 E1 B0 E2 6F 09 E4 B3 E5 33 07 1E 5B 1B + 5C) + (2. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| 0. 1. |EXT|::|SOURCE-PROGRAM-ERROR| + :|FORM| :|DETAIL| "~S: ~S does not match lambda list element ~:S" + |SYSTEM|::|TEXT| |MY-HTML|::|WITH-HTML| + (|COMMON-LISP|::|&OPTIONAL| + (|COMMON-LISP|::|STREAM| |COMMON-LISP|::|T|)) + |MY-HTML|::|PRODUCE-HTML| |COMMON-LISP|::|QUOTE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|68 70 (DEFUN PRODUCE-HTML-STRING (TREE &OPTIONAL #) ...)-7| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|MY-HTML|::|PRODUCE-HTML-STRING| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|MY-HTML|::|PRODUCE-HTML-STRING| + #41Y(03 00 01 00 01 00 01 00 06 08 3B 01 02 C5 F9 DB 38 01 72 76 53 0A + B1 B1 B0 2D 03 02 AE 32 77 54 67 00 00 00 2F 03 55 19 04) + (0. |COMMON-LISP|::|CHARACTER| |MY-HTML|::|PRODUCE-HTML| + |COMMON-LISP|::|CLOSE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|MY-HTML|::|TREE| |COMMON-LISP|::|&OPTIONAL| (|MY-HTML|::|LEVEL| 0.)) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|75 87 (DEFUN TEST1 NIL ...)-8| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|MY-HTML|::|TEST1| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|MY-HTML|::|TEST1| + #48Y(00 00 00 00 00 00 00 00 06 01 DA DB DC DD DE DF E0 38 02 72 76 E1 + AD 38 02 31 8B E2 AD 31 86 AC 81 77 00 CE 5D 5D 5D 5D 5D 7A 7B 03 + 2F 0A 19 01) + (|MY-HTML|::|HTML| (|MY-HTML|::|HEAD| (|MY-HTML|::|TITLE| "Plop")) + |MY-HTML|::|BODY| (|MY-HTML|::|H1| "A title") (|MY-HTML|::|H2| "plop") + |MY-HTML|::|PLOP| 4. "Plip=" 8. + (("a href=\"index.html\"" |MY-HTML|::|INDEX|) + (|MY-HTML|::|UL| (|MY-HTML|::|LI| "toto") (|MY-HTML|::|LI| "klm"))) + |MY-HTML|::|PRODUCE-HTML|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|90 101 (DEFUN TEST2 NIL ...)-9| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|MY-HTML|::|TEST2| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|MY-HTML|::|TEST2| + #18Y(00 00 00 00 00 00 00 00 06 01 DA DB 64 2D 03 02 19 01) + ((|MY-HTML|::|HTML| (|MY-HTML|::|HEAD| (|MY-HTML|::|TITLE| "Plop")) + "" + (|MY-HTML|::|BODY| (|MY-HTML|::|H1| "Un titre") + (|MY-HTML|::|H2| "plop") + (|MY-HTML|::|UL| (|MY-HTML|::|LI| "toto") (|MY-HTML|::|LI| "klm")))) + 0. |MY-HTML|::|PRODUCE-HTML|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|104 118 (DEFUN TEST3 NIL ...)-10| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|MY-HTML|::|TEST3| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|MY-HTML|::|TEST3| + #49Y(00 00 00 00 00 00 00 00 06 01 DA DB DC DD DE DF E0 38 02 72 76 E1 + AD 38 02 31 8B E2 AD 31 86 AC 81 77 00 CE 5D 5D 5D 5D 5D 7A 7B 03 + E4 30 0B 19 01) + (|MY-HTML|::|HTML| (|MY-HTML|::|HEAD| (|MY-HTML|::|TITLE| "Plop")) + |MY-HTML|::|BODY| (|MY-HTML|::|H1| "A title") + (|MY-HTML|::|H2| |MY-HTML|::|PLOP|) |MY-HTML|::|PLOP| 4. "Plip=" 8. + (|MY-HTML|::|Foo Bar Baz| ("a href=\"index.html\"" |MY-HTML|::|INDEX|) + (|MY-HTML|::|UL| (|MY-HTML|::|LI| "toto") (|MY-HTML|::|LI| "klm"))) + 10. |MY-HTML|::|PRODUCE-HTML-STRING|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: my-html.fasl ============================================================================== Binary file. No diff available. Added: my-html.lib ============================================================================== --- (empty file) +++ my-html.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,59 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "COMMON-LISP-USER")) +(|SYSTEM|::|%IN-PACKAGE| "MY-HTML" :|NICKNAMES| '|COMMON-LISP|::|NIL| :|USE| + '|COMMON-LISP|::|NIL| :|CASE-SENSITIVE| |COMMON-LISP|::|NIL| :|CASE-INVERTED| + |COMMON-LISP|::|NIL|) +(|COMMON-LISP|::|USE-PACKAGE| '("COMMON-LISP" "TOOLS") "MY-HTML") +(|SYSTEM|::|INTERN-EXPORT| + '("INSERT-HTML-DOCTYPE" "PRODUCE-HTML" "WITH-HTML" "PRODUCE-HTML-STRING") + "MY-HTML" |COMMON-LISP|::|NIL|) +(|COMMON-LISP|::|FIND-PACKAGE| "MY-HTML") +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "MY-HTML")) +(|SYSTEM|::|C-DEFUN| '|MY-HTML|::|INSERT-HTML-DOCTYPE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|MY-HTML|::|PRODUCE-HTML| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|MY-HTML|::|TREE| |COMMON-LISP|::|&OPTIONAL| (|MY-HTML|::|LEVEL| 0.) + (|COMMON-LISP|::|STREAM| |COMMON-LISP|::|*STANDARD-OUTPUT*|)))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|MY-HTML|::|WITH-HTML|) +(|SYSTEM|::|%PUTD| '|MY-HTML|::|WITH-HTML| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |MY-HTML|::|WITH-HTML| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 2.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((#1=#:|G46914| (|COMMON-LISP|::|CADR| . #2=(|SYSTEM|::||))) + (#3=#:|G46915| + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| #1# 0. 1.)) + (|SYSTEM|::|ERROR-OF-TYPE| '|EXT|::|SOURCE-PROGRAM-ERROR| :|FORM| + |SYSTEM|::|| :|DETAIL| #1# + (|SYSTEM|::|TEXT| "~S: ~S does not match lambda list element ~:S") + '|MY-HTML|::|WITH-HTML| #1# + '(|COMMON-LISP|::|&OPTIONAL| + (|COMMON-LISP|::|STREAM| |COMMON-LISP|::|T|))) + #1#)) + (|COMMON-LISP|::|STREAM| + (|COMMON-LISP|::|IF| #3# (|COMMON-LISP|::|CAR| #3#) + |COMMON-LISP|::|T|)) + (|COMMON-LISP|::|REST| (|COMMON-LISP|::|CDDR| . #2#))) + (|COMMON-LISP|::|BLOCK| |MY-HTML|::|WITH-HTML| + `(|MY-HTML|::|PRODUCE-HTML| ',@|COMMON-LISP|::|REST| 0. + ,|COMMON-LISP|::|STREAM|)))))))) +(|SYSTEM|::|C-DEFUN| '|MY-HTML|::|PRODUCE-HTML-STRING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|MY-HTML|::|TREE| |COMMON-LISP|::|&OPTIONAL| (|MY-HTML|::|LEVEL| 0.)))) +(|SYSTEM|::|C-DEFUN| '|MY-HTML|::|TEST1| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|MY-HTML|::|TEST2| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|MY-HTML|::|TEST3| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) Added: my-html.lisp ============================================================================== --- (empty file) +++ my-html.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,123 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Fri Dec 21 23:00:35 2007 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Html generator helper +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + + + +(in-package :common-lisp-user) + +(defpackage :my-html + (:use :common-lisp :tools) + (:export :insert-html-doctype + :produce-html + :with-html + :produce-html-string)) + +(in-package :my-html) + + +(defun insert-html-doctype () + "") + + + +(defun produce-html (tree &optional (level 0) (stream *standard-output*)) + (cond ((listp tree) + (print-space level stream) + (format stream "~(<~A>~)~%" (first tree)) + (dolist (subtree (rest tree)) + (produce-html subtree (+ 2 level) stream)) + (print-space level stream) + (format stream "~(~)~%" + (if (stringp (first tree)) + (subseq (first tree) 0 (position #\Space (first tree))) + (first tree)))) + (t + (print-space level stream) + (format stream (if (stringp tree) "~A~%" "~(~A~)~%") tree)))) + + +(defmacro with-html ((&optional (stream t)) &rest rest) + `(produce-html ', at rest 0 ,stream)) + + +(defun produce-html-string (tree &optional (level 0)) + (with-output-to-string (str) + (produce-html tree level str))) + + + + +(defun test1 () + (produce-html `(html + (head + (title "Plop")) + (body + (h1 "A title") + (h2 "plop") + Plop ,(+ 2 2) + ,(format nil "Plip=~A" (+ 3 5)) + ("a href=\"index.html\"" index) + (ul + (li "toto") + (li "klm")))))) + + +(defun test2 () + (with-html () + (html + (head + (title "Plop")) + "" + (body + (h1 "Un titre") + (h2 "plop") + (ul + (li "toto") + (li "klm")))))) + + +(defun test3 () + (produce-html-string `(html + (head + (title "Plop")) + (body + (h1 "A title") + (h2 plop) + Plop ,(+ 2 2) + ,(format nil "Plip=~A" (+ 3 5)) + |Foo Bar Baz| + ("a href=\"index.html\"" Index) + (ul + (li "toto") + (li "klm")))) + 10)) + + + + + Added: netwm-util.fas ============================================================================== --- (empty file) +++ netwm-util.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,75 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 29 (IN-PACKAGE :CLFSWM)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CLFSWM" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|32 34 (DEFUN NETWM-SET-CLIENT-LIST (ID-LIST) ...)-2| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|NETWM-SET-CLIENT-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|NETWM-SET-CLIENT-LIST| + #21Y(00 00 00 00 01 00 00 00 06 02 6B 00 DB AF DC DD 2D 05 04 19 02) + (|CLFSWM|::|*ROOT*| :|_NET_CLIENT_LIST| :|WINDOW| 32. + |XLIB|::|CHANGE-PROPERTY|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|ID-LIST|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|36 37 (DEFUN NETWM-GET-CLIENT-LIST NIL ...)-3| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|NETWM-GET-CLIENT-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|NETWM-GET-CLIENT-LIST| + #17Y(00 00 00 00 00 00 00 00 06 01 6B 00 DB 30 02 19 01) + (|CLFSWM|::|*ROOT*| :|_NET_CLIENT_LIST| |XLIB|::|GET-PROPERTY|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|39 42 (DEFUN NETWM-ADD-IN-CLIENT-LIST (WINDOW) ...)-4| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|NETWM-ADD-IN-CLIENT-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|NETWM-ADD-IN-CLIENT-LIST| + #29Y(00 00 00 00 01 00 00 00 06 02 2E 00 14 DB AF DC 72 2F AD 38 03 80 + BA 00 14 2F 03 19 03) + (|CLFSWM|::|NETWM-GET-CLIENT-LIST| |XLIB|::|WINDOW| 1. + |CLFSWM|::|NETWM-SET-CLIENT-LIST|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|44 45 (DEFUN NETWM-REMOVE-IN-CLIENT-LIST (WINDOW) ...)-5| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|NETWM-REMOVE-IN-CLIENT-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|NETWM-REMOVE-IN-CLIENT-LIST| + #26Y(00 00 00 00 01 00 00 00 06 02 DA AE DB 72 2F 2E 02 14 38 07 72 4F + 2F 03 19 02) + (|XLIB|::|WINDOW| 1. |CLFSWM|::|NETWM-GET-CLIENT-LIST| + |CLFSWM|::|NETWM-SET-CLIENT-LIST|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|49 64 (DEFUN NETWM-UPDATE-DESKTOP-PROPERTY NIL)-6| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|NETWM-UPDATE-DESKTOP-PROPERTY| + |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|NETWM-UPDATE-DESKTOP-PROPERTY| + #13Y(00 00 00 00 00 00 00 00 06 01 00 19 01) () |COMMON-LISP|::|NIL| () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|69 90 (DEFUN NETWM-SET-PROPERTIES NIL ...)-7| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|NETWM-SET-PROPERTIES| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|NETWM-SET-PROPERTIES| + #101Y(00 00 00 00 00 00 00 00 06 01 6B 00 DB 63 6B 02 DD 6B 04 73 00 16 + 73 02 22 1B 0D 94 00 6B 05 AD 70 06 84 02 16 01 83 00 AC 8D 94 6F + 16 01 AC 80 A6 00 E1 E2 2D 05 09 6B 00 E4 6B 0B 7B 01 E6 E2 E7 99 + 0E 2D 07 09 6B 0B E4 6B 0B 7B 01 E6 E2 E7 99 0E 2D 07 09 6B 0B E9 + EA EB EC E7 99 13 2D 07 09 2E 14 19 01) + (|CLFSWM|::|*ROOT*| :|_NET_SUPPORTED| |CLFSWM|::|+NETWM-SUPPORTED+| + |COMMON-LISP|::|CAR| |CLFSWM|::|+NETWM-WINDOW-TYPES+| + |CLFSWM|::|*DISPLAY*| |XLIB|::|INTERN-ATOM| :|ATOM| 32. + |XLIB|::|CHANGE-PROPERTY| :|_NET_SUPPORTING_WM_CHECK| + |CLFSWM|::|*NO-FOCUS-WINDOW*| :|WINDOW| :|TRANSFORM| + |XLIB|::|DRAWABLE-ID| :|_NET_WM_NAME| "clfswm" :|STRING| 8. + |XLIB|::|CHAR->CARD8| |CLFSWM|::|NETWM-UPDATE-DESKTOP-PROPERTY|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Set NETWM properties on the root window of the specified screen. +FOCUS-WINDOW is an extra window used for _NET_SUPPORTING_WM_CHECK.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: netwm-util.fasl ============================================================================== Binary file. No diff available. Added: netwm-util.lib ============================================================================== --- (empty file) +++ netwm-util.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,15 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CLFSWM")) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|NETWM-SET-CLIENT-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|ID-LIST|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|NETWM-GET-CLIENT-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|NETWM-ADD-IN-CLIENT-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WINDOW|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|NETWM-REMOVE-IN-CLIENT-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WINDOW|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|NETWM-UPDATE-DESKTOP-PROPERTY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|NETWM-SET-PROPERTIES| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) Added: netwm-util.lisp ============================================================================== --- (empty file) +++ netwm-util.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,95 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Wed Feb 20 23:26:21 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: NetWM functions +;;; http://freedesktop.org/wiki/Specifications_2fwm_2dspec +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + +;;; Client List functions +(defun netwm-set-client-list (id-list) + (xlib:change-property *root* :_NET_CLIENT_LIST id-list :window 32)) + +(defun netwm-get-client-list () + (xlib:get-property *root* :_NET_CLIENT_LIST)) + +(defun netwm-add-in-client-list (window) + (let ((last-list (netwm-get-client-list))) + (pushnew (xlib:window-id window) last-list) + (netwm-set-client-list last-list))) + +(defun netwm-remove-in-client-list (window) + (netwm-set-client-list (remove (xlib:window-id window) (netwm-get-client-list)))) + + + +;;; Desktop functions ;; +PHIL +(defun netwm-update-desktop-property () + ;; (xlib:change-property *root* :_NET_NUMBER_OF_DESKTOPS + ;; (list (length *workspace-list*)) :cardinal 32) + ;; (xlib:change-property *root* :_NET_DESKTOP_GEOMETRY + ;; (list (xlib:screen-width *screen*) + ;; (xlib:screen-height *screen*)) + ;; :cardinal 32) + ;; (xlib:change-property *root* :_NET_DESKTOP_VIEWPORT + ;; (list 0 0) :cardinal 32) + ;; (xlib:change-property *root* :_NET_CURRENT_DESKTOP + ;; (list 1) :cardinal 32) +;;; TODO + ;;(xlib:change-property *root* :_NET_DESKTOP_NAMES + ;; (list "toto" "klm" "poi") :string 8 :transform #'xlib:char->card8)) + ) + + + + +;;; Taken from stumpwm (thanks) +(defun netwm-set-properties () + "Set NETWM properties on the root window of the specified screen. +FOCUS-WINDOW is an extra window used for _NET_SUPPORTING_WM_CHECK." + ;; _NET_SUPPORTED + (xlib:change-property *root* :_NET_SUPPORTED + (mapcar (lambda (a) + (xlib:intern-atom *display* a)) + (append +netwm-supported+ + (mapcar 'car +netwm-window-types+))) + :atom 32) + ;; _NET_SUPPORTING_WM_CHECK + (xlib:change-property *root* :_NET_SUPPORTING_WM_CHECK + (list *no-focus-window*) :window 32 + :transform #'xlib:drawable-id) + (xlib:change-property *no-focus-window* :_NET_SUPPORTING_WM_CHECK + (list *no-focus-window*) :window 32 + :transform #'xlib:drawable-id) + (xlib:change-property *no-focus-window* :_NET_WM_NAME + "clfswm" + :string 8 :transform #'xlib:char->card8) + (netwm-update-desktop-property)) + + + + + Added: package.fas ============================================================================== --- (empty file) +++ package.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,448 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 28 (IN-PACKAGE :CL-USER)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CL-USER" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|30 33 (DEFPACKAGE CLFSWM (:USE :COMMON-LISP :MY-HTML ...) ...)-2-1| + #18Y(00 00 00 00 00 00 00 00 00 01 DA 01 04 31 E1 3E 19 01) ("CLFSWM") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|30 33 (DEFPACKAGE CLFSWM (:USE :COMMON-LISP :MY-HTML ...) ...)-2-2| + #17Y(00 00 00 00 00 00 00 00 00 01 DA DB 31 DE 3E 19 01) + (("COMMON-LISP" "MY-HTML" "TOOLS") "CLFSWM") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|30 33 (DEFPACKAGE CLFSWM (:USE :COMMON-LISP :MY-HTML ...) ...)-2-3| + #19Y(00 00 00 00 00 00 00 00 00 01 DA DB 63 2D 03 02 3E 19 01) + (("MAIN") "CLFSWM" |SYSTEM|::|INTERN-EXPORT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|30 33 (DEFPACKAGE CLFSWM (:USE :COMMON-LISP :MY-HTML ...) ...)-2-4| + #15Y(00 00 00 00 00 00 00 00 00 01 DA 31 CE 19 01) ("CLFSWM") + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) +#Y(#:|35 35 (IN-PACKAGE :CLFSWM)-3| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CLFSWM" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|38 38 (DEFPARAMETER *DISPLAY* NIL)-4| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*DISPLAY*|) |CLFSWM|::|*DISPLAY*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|39 39 (DEFPARAMETER *SCREEN* NIL)-5| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SCREEN*|) |CLFSWM|::|*SCREEN*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|40 40 (DEFPARAMETER *ROOT* NIL)-6| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*ROOT*|) |CLFSWM|::|*ROOT*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|41 41 (DEFPARAMETER *NO-FOCUS-WINDOW* NIL)-7| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*NO-FOCUS-WINDOW*|) + |CLFSWM|::|*NO-FOCUS-WINDOW*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|42 42 (DEFPARAMETER *ROOT-GC* NIL)-8| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*ROOT-GC*|) |CLFSWM|::|*ROOT-GC*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|44 44 (DEFPARAMETER *DEFAULT-FONT* NIL)-9| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*DEFAULT-FONT*|) + |CLFSWM|::|*DEFAULT-FONT*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|45 46 (DEFPARAMETER *DEFAULT-FONT-STRING* "fixed")-10| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*DEFAULT-FONT-STRING*|) + |CLFSWM|::|*DEFAULT-FONT-STRING*| "fixed") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|49 49 (DEFPARAMETER *CHILD-SELECTION* NIL)-11| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*CHILD-SELECTION*|) + |CLFSWM|::|*CHILD-SELECTION*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|51 51 (DEFPARAMETER *LAYOUT-LIST* NIL)-12| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*LAYOUT-LIST*|) + |CLFSWM|::|*LAYOUT-LIST*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|54 78 (DEFCLASS GROUP NIL ...)-13| + #346Y(00 00 00 00 00 00 00 00 00 01 6B 00 99 01 DC DD 63 DE DF E0 E1 E2 E3 + E4 E5 E6 E7 63 E8 63 6F 0F 7B 0C DF EA E1 EB E3 EC E5 ED E7 EE E8 EE + 6F 0F 7B 0C DF EF E1 F0 E3 F1 E5 F2 E7 F3 E8 F3 6F 0F 7B 0C DF F4 E1 + F5 E3 F6 E5 F7 E7 F3 E8 F3 6F 0F 7B 0C DF 65 1E E1 65 1F E3 65 20 E5 + 65 21 E7 65 22 E8 65 22 6F 0F 7B 0C DF 65 23 E1 65 24 E3 65 25 E5 65 + 26 E7 65 22 E8 65 22 6F 0F 7B 0C DF 65 27 E1 65 28 E3 65 29 E5 65 2A + E7 EE E8 EE 6F 0F 7B 0C DF 65 2B E1 65 2C E3 65 2D E5 65 2E E7 EE E8 + EE 6F 0F 7B 0C DF 65 2F E1 65 30 E3 65 31 E5 65 32 E7 65 33 E8 65 33 + 6F 0F 7B 0C DF 65 34 E1 65 35 E3 65 36 E5 65 37 E7 65 38 E8 65 38 6F + 0F 7B 0C DF 65 39 E1 65 3A E3 65 3B E5 65 3C E7 63 E8 63 6F 0F 7B 0C + DF 65 3D E1 65 3E E3 65 3F E5 65 40 E7 63 E8 63 6F 0F 7B 0C DF 65 41 + E1 65 42 E3 65 43 E5 65 44 E7 63 E8 63 6F 0F 7B 0C DF 65 45 E1 65 46 + E3 65 47 E5 65 48 E7 63 E8 63 6F 0F 7B 0C DF 65 49 E1 65 4A E3 65 4B + E5 65 4C E7 65 4D E8 65 4E 65 4F 65 50 7B 0E 7B 0F 65 51 B3 65 52 65 + 53 63 65 4F 63 65 54 64 7B 06 33 02 22 37 07 16 01 DC 38 02 32 2A 19 + 01) + (|CLOS|::|| |CLOS|::|ENSURE-CLASS| |CLFSWM|::|GROUP| + :|DIRECT-SUPERCLASSES| :|DIRECT-SLOTS| :|NAME| |CLFSWM|::|NAME| :|READERS| + (|CLFSWM|::|GROUP-NAME|) :|WRITERS| + ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-NAME|)) :|INITARGS| (:|NAME|) + :|INITFORM| :|INITFUNCTION| |SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| + |COMMON-LISP|::|NUMBER| (|CLFSWM|::|GROUP-NUMBER|) + ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-NUMBER|)) (:|NUMBER|) 0. + |CLFSWM|::|X| (|CLFSWM|::|GROUP-X|) + ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-X|)) (:|X|) 0.1f0 |CLFSWM|::|Y| + (|CLFSWM|::|GROUP-Y|) ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-Y|)) (:|Y|) + |CLFSWM|::|W| (|CLFSWM|::|GROUP-W|) + ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-W|)) (:|W|) 0.8f0 |CLFSWM|::|H| + (|CLFSWM|::|GROUP-H|) ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-H|)) (:|H|) + |CLFSWM|::|RX| (|CLFSWM|::|GROUP-RX|) + ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-RX|)) (:|RX|) |CLFSWM|::|RY| + (|CLFSWM|::|GROUP-RY|) ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-RY|)) + (:|RY|) |CLFSWM|::|RW| (|CLFSWM|::|GROUP-RW|) + ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-RW|)) (:|RW|) 800. |CLFSWM|::|RH| + (|CLFSWM|::|GROUP-RH|) ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-RH|)) + (:|RH|) 600. |CLFSWM|::|LAYOUT| (|CLFSWM|::|GROUP-LAYOUT|) + ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-LAYOUT|)) (:|LAYOUT|) + |CLFSWM|::|WINDOW| (|CLFSWM|::|GROUP-WINDOW|) + ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-WINDOW|)) (:|WINDOW|) + |CLFSWM|::|GC| (|CLFSWM|::|GROUP-GC|) + ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-GC|)) (:|GC|) |CLFSWM|::|CHILD| + (|CLFSWM|::|GROUP-CHILD|) ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-CHILD|)) + (:|CHILD|) |CLFSWM|::|DATA| (|CLFSWM|::|GROUP-DATA|) + ((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-DATA|)) (:|DATA|) + (|COMMON-LISP|::|LIST| '#1=(:|TILE-SIZE| 0.8f0) + '#2=(:|TILE-SPACE-SIZE| 0.1f0)) + #Y(|CLFSWM|::|DEFAULT-DATA| + #16Y(00 00 00 00 00 00 00 00 06 01 DA DB 61 02 19 01) (#1# #2#) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + :|DOCUMENTATION| "An assoc list to store additional data" :|METACLASS| + (:|FIXED-SLOT-LOCATIONS| |COMMON-LISP|::|NIL|) :|DIRECT-DEFAULT-INITARGS| + :|GENERIC-ACCESSORS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|82 83 (DEFPARAMETER *ROOT-GROUP* NIL ...)-14| + #26Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 DB DC DD 2D 03 04 C6 + 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*ROOT-GROUP*|) + |CLFSWM|::|*ROOT-GROUP*| |COMMON-LISP|::|VARIABLE| + "Root of the root - ie the root group" |SYSTEM|::|%SET-DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|84 85 (DEFPARAMETER *CURRENT-ROOT* NIL ...)-15| + #26Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 DB DC DD 2D 03 04 C6 + 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*CURRENT-ROOT*|) + |CLFSWM|::|*CURRENT-ROOT*| |COMMON-LISP|::|VARIABLE| + "The current fullscreen maximized child" |SYSTEM|::|%SET-DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|86 87 (DEFPARAMETER *CURRENT-CHILD* NIL ...)-16| + #26Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 DB DC DD 2D 03 04 C6 + 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*CURRENT-CHILD*|) + |CLFSWM|::|*CURRENT-CHILD*| |COMMON-LISP|::|VARIABLE| + "The current child with the focus" |SYSTEM|::|%SET-DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|89 89 (DEFPARAMETER *SHOW-ROOT-GROUP-P* NIL)-17| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SHOW-ROOT-GROUP-P*|) + |CLFSWM|::|*SHOW-ROOT-GROUP-P*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|92 92 (DEFPARAMETER *MAIN-KEYS* (MAKE-HASH-TABLE :TEST 'EQUAL))-18| + #25Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 38 09 C7 FB 71 64 31 52 C6 19 + 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MAIN-KEYS*|) |CLFSWM|::|*MAIN-KEYS*| + |COMMON-LISP|::|EQUAL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|93 93 (DEFPARAMETER *SECOND-KEYS* (MAKE-HASH-TABLE :TEST 'EQUAL))-19| + #25Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 38 09 C7 FB 71 64 31 52 C6 19 + 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SECOND-KEYS*|) + |CLFSWM|::|*SECOND-KEYS*| |COMMON-LISP|::|EQUAL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|94 94 (DEFPARAMETER *MOUSE-ACTION* (MAKE-HASH-TABLE :TEST 'EQUAL))-20| + #25Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 38 09 C7 FB 71 64 31 52 C6 19 + 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MOUSE-ACTION*|) + |CLFSWM|::|*MOUSE-ACTION*| |COMMON-LISP|::|EQUAL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|95 95 (DEFPARAMETER *PAGER-KEYS* (MAKE-HASH-TABLE :TEST 'EQUAL))-21| + #25Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 38 09 C7 FB 71 64 31 52 C6 19 + 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-KEYS*|) + |CLFSWM|::|*PAGER-KEYS*| |COMMON-LISP|::|EQUAL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|96 96 (DEFPARAMETER *PAGER-MOUSE-ACTION* (MAKE-HASH-TABLE :TEST 'EQUAL))-22| + #25Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 38 09 C7 FB 71 64 31 52 C6 19 + 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-MOUSE-ACTION*|) + |CLFSWM|::|*PAGER-MOUSE-ACTION*| |COMMON-LISP|::|EQUAL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|97 97 (DEFPARAMETER *INFO-KEYS* (MAKE-HASH-TABLE :TEST 'EQUAL))-23| + #25Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 38 09 C7 FB 71 64 31 52 C6 19 + 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-KEYS*|) |CLFSWM|::|*INFO-KEYS*| + |COMMON-LISP|::|EQUAL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|98 98 (DEFPARAMETER *INFO-MOUSE-ACTION* (MAKE-HASH-TABLE :TEST 'EQUAL))-24| + #25Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 38 09 C7 FB 71 64 31 52 C6 19 + 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-MOUSE-ACTION*|) + |CLFSWM|::|*INFO-MOUSE-ACTION*| |COMMON-LISP|::|EQUAL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|101 103 (DEFPARAMETER *OPEN-NEXT-WINDOW-IN-NEW-WORKSPACE* NIL ...)-25| + #26Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 DB DC DD 2D 03 04 C6 + 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*OPEN-NEXT-WINDOW-IN-NEW-WORKSPACE*|) + |CLFSWM|::|*OPEN-NEXT-WINDOW-IN-NEW-WORKSPACE*| |COMMON-LISP|::|VARIABLE| + "Set to t to open the next window in a new workspace +or to a number to open in a numbered workspace" + |SYSTEM|::|%SET-DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|105 108 (DEFPARAMETER *OPEN-NEXT-WINDOW-IN-NEW-GROUP* NIL ...)-26| + #26Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 DB DC DD 2D 03 04 C6 + 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*OPEN-NEXT-WINDOW-IN-NEW-GROUP*|) + |CLFSWM|::|*OPEN-NEXT-WINDOW-IN-NEW-GROUP*| |COMMON-LISP|::|VARIABLE| + "Set to t to open the each next window in a new group +or set to :once open the next window in a new group and all +others in the same group" + |SYSTEM|::|%SET-DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|110 111 (DEFPARAMETER *ARROW-ACTION* NIL ...)-27| + #26Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 DB DC DD 2D 03 04 C6 + 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*ARROW-ACTION*|) + |CLFSWM|::|*ARROW-ACTION*| |COMMON-LISP|::|VARIABLE| + "Arrow action in the second mode" |SYSTEM|::|%SET-DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|113 114 (DEFPARAMETER *PAGER-ARROW-ACTION* NIL ...)-28| + #26Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 DB DC DD 2D 03 04 C6 + 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-ARROW-ACTION*|) + |CLFSWM|::|*PAGER-ARROW-ACTION*| |COMMON-LISP|::|VARIABLE| + "Arrow action in the pager mode" |SYSTEM|::|%SET-DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|118 129 (DEFPARAMETER *INIT-HOOK* NIL)-29| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INIT-HOOK*|) |CLFSWM|::|*INIT-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|131 132 (DEFPARAMETER *BUTTON-PRESS-HOOK* NIL)-30| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*BUTTON-PRESS-HOOK*|) + |CLFSWM|::|*BUTTON-PRESS-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|133 133 (DEFPARAMETER *BUTTON-MOTION-NOTIFY-HOOK* NIL)-31| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*BUTTON-MOTION-NOTIFY-HOOK*|) + |CLFSWM|::|*BUTTON-MOTION-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|134 134 (DEFPARAMETER *KEY-PRESS-HOOK* NIL)-32| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*KEY-PRESS-HOOK*|) + |CLFSWM|::|*KEY-PRESS-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|135 135 (DEFPARAMETER *CONFIGURE-REQUEST-HOOK* NIL)-33| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*CONFIGURE-REQUEST-HOOK*|) + |CLFSWM|::|*CONFIGURE-REQUEST-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|136 136 (DEFPARAMETER *CONFIGURE-NOTIFY-HOOK* NIL)-34| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*CONFIGURE-NOTIFY-HOOK*|) + |CLFSWM|::|*CONFIGURE-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|137 137 (DEFPARAMETER *CREATE-NOTIFY-HOOK* NIL)-35| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*CREATE-NOTIFY-HOOK*|) + |CLFSWM|::|*CREATE-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|138 138 (DEFPARAMETER *DESTROY-NOTIFY-HOOK* NIL)-36| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*DESTROY-NOTIFY-HOOK*|) + |CLFSWM|::|*DESTROY-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|139 139 (DEFPARAMETER *ENTER-NOTIFY-HOOK* NIL)-37| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*ENTER-NOTIFY-HOOK*|) + |CLFSWM|::|*ENTER-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|140 140 (DEFPARAMETER *EXPOSURE-HOOK* NIL)-38| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*EXPOSURE-HOOK*|) + |CLFSWM|::|*EXPOSURE-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|141 141 (DEFPARAMETER *MAP-REQUEST-HOOK* NIL)-39| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MAP-REQUEST-HOOK*|) + |CLFSWM|::|*MAP-REQUEST-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|142 142 (DEFPARAMETER *MAPPING-NOTIFY-HOOK* NIL)-40| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MAPPING-NOTIFY-HOOK*|) + |CLFSWM|::|*MAPPING-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|143 143 (DEFPARAMETER *PROPERTY-NOTIFY-HOOK* NIL)-41| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PROPERTY-NOTIFY-HOOK*|) + |CLFSWM|::|*PROPERTY-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|144 144 (DEFPARAMETER *UNMAP-NOTIFY-HOOK* NIL)-42| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*UNMAP-NOTIFY-HOOK*|) + |CLFSWM|::|*UNMAP-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|147 148 (DEFPARAMETER *SM-BUTTON-PRESS-HOOK* NIL)-43| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-BUTTON-PRESS-HOOK*|) + |CLFSWM|::|*SM-BUTTON-PRESS-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|149 149 (DEFPARAMETER *SM-BUTTON-RELEASE-HOOK* NIL)-44| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-BUTTON-RELEASE-HOOK*|) + |CLFSWM|::|*SM-BUTTON-RELEASE-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|150 150 (DEFPARAMETER *SM-MOTION-NOTIFY-HOOK* NIL)-45| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-MOTION-NOTIFY-HOOK*|) + |CLFSWM|::|*SM-MOTION-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|151 151 (DEFPARAMETER *SM-KEY-PRESS-HOOK* NIL)-46| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-KEY-PRESS-HOOK*|) + |CLFSWM|::|*SM-KEY-PRESS-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|152 152 (DEFPARAMETER *SM-CONFIGURE-REQUEST-HOOK* NIL)-47| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-CONFIGURE-REQUEST-HOOK*|) + |CLFSWM|::|*SM-CONFIGURE-REQUEST-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|153 153 (DEFPARAMETER *SM-CONFIGURE-NOTIFY-HOOK* NIL)-48| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-CONFIGURE-NOTIFY-HOOK*|) + |CLFSWM|::|*SM-CONFIGURE-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|154 154 (DEFPARAMETER *SM-MAP-REQUEST-HOOK* NIL)-49| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-MAP-REQUEST-HOOK*|) + |CLFSWM|::|*SM-MAP-REQUEST-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|155 155 (DEFPARAMETER *SM-UNMAP-NOTIFY-HOOK* NIL)-50| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-UNMAP-NOTIFY-HOOK*|) + |CLFSWM|::|*SM-UNMAP-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|156 156 (DEFPARAMETER *SM-DESTROY-NOTIFY-HOOK* NIL)-51| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-DESTROY-NOTIFY-HOOK*|) + |CLFSWM|::|*SM-DESTROY-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|157 157 (DEFPARAMETER *SM-MAPPING-NOTIFY-HOOK* NIL)-52| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-MAPPING-NOTIFY-HOOK*|) + |CLFSWM|::|*SM-MAPPING-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|158 158 (DEFPARAMETER *SM-PROPERTY-NOTIFY-HOOK* NIL)-53| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-PROPERTY-NOTIFY-HOOK*|) + |CLFSWM|::|*SM-PROPERTY-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|159 159 (DEFPARAMETER *SM-CREATE-NOTIFY-HOOK* NIL)-54| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-CREATE-NOTIFY-HOOK*|) + |CLFSWM|::|*SM-CREATE-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|160 160 (DEFPARAMETER *SM-ENTER-NOTIFY-HOOK* NIL)-55| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-ENTER-NOTIFY-HOOK*|) + |CLFSWM|::|*SM-ENTER-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|161 161 (DEFPARAMETER *SM-EXPOSURE-HOOK* NIL)-56| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-EXPOSURE-HOOK*|) + |CLFSWM|::|*SM-EXPOSURE-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|164 165 (DEFPARAMETER *PAGER-BUTTON-PRESS-HOOK* NIL)-57| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-BUTTON-PRESS-HOOK*|) + |CLFSWM|::|*PAGER-BUTTON-PRESS-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|166 166 (DEFPARAMETER *PAGER-BUTTON-RELEASE-HOOK* NIL)-58| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-BUTTON-RELEASE-HOOK*|) + |CLFSWM|::|*PAGER-BUTTON-RELEASE-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|167 167 (DEFPARAMETER *PAGER-MOTION-NOTIFY-HOOK* NIL)-59| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-MOTION-NOTIFY-HOOK*|) + |CLFSWM|::|*PAGER-MOTION-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|168 168 (DEFPARAMETER *PAGER-KEY-PRESS-HOOK* NIL)-60| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-KEY-PRESS-HOOK*|) + |CLFSWM|::|*PAGER-KEY-PRESS-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|169 169 (DEFPARAMETER *PAGER-CONFIGURE-REQUEST-HOOK* NIL)-61| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-CONFIGURE-REQUEST-HOOK*|) + |CLFSWM|::|*PAGER-CONFIGURE-REQUEST-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|170 170 (DEFPARAMETER *PAGER-MAP-REQUEST-HOOK* NIL)-62| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-MAP-REQUEST-HOOK*|) + |CLFSWM|::|*PAGER-MAP-REQUEST-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|171 171 (DEFPARAMETER *PAGER-UNMAP-NOTIFY-HOOK* NIL)-63| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-UNMAP-NOTIFY-HOOK*|) + |CLFSWM|::|*PAGER-UNMAP-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|172 172 (DEFPARAMETER *PAGER-DESTROY-NOTIFY-HOOK* NIL)-64| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-DESTROY-NOTIFY-HOOK*|) + |CLFSWM|::|*PAGER-DESTROY-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|173 173 (DEFPARAMETER *PAGER-MAPPING-NOTIFY-HOOK* NIL)-65| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-MAPPING-NOTIFY-HOOK*|) + |CLFSWM|::|*PAGER-MAPPING-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|174 174 (DEFPARAMETER *PAGER-PROPERTY-NOTIFY-HOOK* NIL)-66| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-PROPERTY-NOTIFY-HOOK*|) + |CLFSWM|::|*PAGER-PROPERTY-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|175 175 (DEFPARAMETER *PAGER-CREATE-NOTIFY-HOOK* NIL)-67| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-CREATE-NOTIFY-HOOK*|) + |CLFSWM|::|*PAGER-CREATE-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|176 176 (DEFPARAMETER *PAGER-ENTER-NOTIFY-HOOK* NIL)-68| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-ENTER-NOTIFY-HOOK*|) + |CLFSWM|::|*PAGER-ENTER-NOTIFY-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|177 177 (DEFPARAMETER *PAGER-EXPOSURE-HOOK* NIL)-69| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-EXPOSURE-HOOK*|) + |CLFSWM|::|*PAGER-EXPOSURE-HOOK*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|180 181 (DEFPARAMETER *MOTION-ACTION* NIL)-70| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MOTION-ACTION*|) + |CLFSWM|::|*MOTION-ACTION*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|182 182 (DEFPARAMETER *MOTION-OBJECT* NIL)-71| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MOTION-OBJECT*|) + |CLFSWM|::|*MOTION-OBJECT*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|183 183 (DEFPARAMETER *MOTION-START-GROUP* NIL)-72| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MOTION-START-GROUP*|) + |CLFSWM|::|*MOTION-START-GROUP*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|184 184 (DEFPARAMETER *MOTION-DX* NIL)-73| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MOTION-DX*|) |CLFSWM|::|*MOTION-DX*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|185 185 (DEFPARAMETER *MOTION-DY* NIL)-74| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 63 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MOTION-DY*|) |CLFSWM|::|*MOTION-DY*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: package.fasl ============================================================================== Binary file. No diff available. Added: package.lib ============================================================================== --- (empty file) +++ package.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,343 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CL-USER")) +(|SYSTEM|::|%IN-PACKAGE| "CLFSWM" :|NICKNAMES| '|COMMON-LISP|::|NIL| :|USE| + '|COMMON-LISP|::|NIL| :|CASE-SENSITIVE| |COMMON-LISP|::|NIL| :|CASE-INVERTED| + |COMMON-LISP|::|NIL|) +(|COMMON-LISP|::|USE-PACKAGE| '("COMMON-LISP" "MY-HTML" "TOOLS") "CLFSWM") +(|SYSTEM|::|INTERN-EXPORT| '("MAIN") "CLFSWM" |COMMON-LISP|::|NIL|) +(|COMMON-LISP|::|FIND-PACKAGE| "CLFSWM") +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CLFSWM")) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*DISPLAY*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SCREEN*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*ROOT*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*NO-FOCUS-WINDOW*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*ROOT-GC*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*DEFAULT-FONT*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*DEFAULT-FONT-STRING*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*CHILD-SELECTION*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*LAYOUT-LIST*|)) +(|COMMON-LISP|::|LET*| ((#1=#:|G46974| |CLOS|::||)) + (|COMMON-LISP|::|APPLY| #'|CLOS|::|ENSURE-CLASS| '|CLFSWM|::|GROUP| + :|DIRECT-SUPERCLASSES| (|COMMON-LISP|::|LIST|) :|DIRECT-SLOTS| + (|COMMON-LISP|::|LIST| + (|COMMON-LISP|::|LIST| :|NAME| '|CLFSWM|::|NAME| :|READERS| + '(|CLFSWM|::|GROUP-NAME|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-NAME|)) :|INITARGS| '(:|NAME|) + :|INITFORM| '|COMMON-LISP|::|NIL| :|INITFUNCTION| + (|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|LIST| :|NAME| '|COMMON-LISP|::|NUMBER| :|READERS| + '(|CLFSWM|::|GROUP-NUMBER|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-NUMBER|)) :|INITARGS| + '(:|NUMBER|) :|INITFORM| '0. :|INITFUNCTION| + (|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| 0.)) + (|COMMON-LISP|::|LIST| :|NAME| '|CLFSWM|::|X| :|READERS| + '(|CLFSWM|::|GROUP-X|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-X|)) :|INITARGS| '(:|X|) + :|INITFORM| '#2=0.1f0 :|INITFUNCTION| + (|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| #2#)) + (|COMMON-LISP|::|LIST| :|NAME| '|CLFSWM|::|Y| :|READERS| + '(|CLFSWM|::|GROUP-Y|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-Y|)) :|INITARGS| '(:|Y|) + :|INITFORM| '#3=0.1f0 :|INITFUNCTION| + (|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| #3#)) + (|COMMON-LISP|::|LIST| :|NAME| '|CLFSWM|::|W| :|READERS| + '(|CLFSWM|::|GROUP-W|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-W|)) :|INITARGS| '(:|W|) + :|INITFORM| '#4=0.8f0 :|INITFUNCTION| + (|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| #4#)) + (|COMMON-LISP|::|LIST| :|NAME| '|CLFSWM|::|H| :|READERS| + '(|CLFSWM|::|GROUP-H|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-H|)) :|INITARGS| '(:|H|) + :|INITFORM| '#5=0.8f0 :|INITFUNCTION| + (|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| #5#)) + (|COMMON-LISP|::|LIST| :|NAME| '|CLFSWM|::|RX| :|READERS| + '(|CLFSWM|::|GROUP-RX|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-RX|)) :|INITARGS| '(:|RX|) + :|INITFORM| '0. :|INITFUNCTION| + (|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| 0.)) + (|COMMON-LISP|::|LIST| :|NAME| '|CLFSWM|::|RY| :|READERS| + '(|CLFSWM|::|GROUP-RY|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-RY|)) :|INITARGS| '(:|RY|) + :|INITFORM| '0. :|INITFUNCTION| + (|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| 0.)) + (|COMMON-LISP|::|LIST| :|NAME| '|CLFSWM|::|RW| :|READERS| + '(|CLFSWM|::|GROUP-RW|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-RW|)) :|INITARGS| '(:|RW|) + :|INITFORM| '800. :|INITFUNCTION| + (|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| 800.)) + (|COMMON-LISP|::|LIST| :|NAME| '|CLFSWM|::|RH| :|READERS| + '(|CLFSWM|::|GROUP-RH|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-RH|)) :|INITARGS| '(:|RH|) + :|INITFORM| '600. :|INITFUNCTION| + (|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| 600.)) + (|COMMON-LISP|::|LIST| :|NAME| '|CLFSWM|::|LAYOUT| :|READERS| + '(|CLFSWM|::|GROUP-LAYOUT|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-LAYOUT|)) :|INITARGS| + '(:|LAYOUT|) :|INITFORM| '|COMMON-LISP|::|NIL| :|INITFUNCTION| + (|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|LIST| :|NAME| '|CLFSWM|::|WINDOW| :|READERS| + '(|CLFSWM|::|GROUP-WINDOW|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-WINDOW|)) :|INITARGS| + '(:|WINDOW|) :|INITFORM| '|COMMON-LISP|::|NIL| :|INITFUNCTION| + (|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|LIST| :|NAME| '|CLFSWM|::|GC| :|READERS| + '(|CLFSWM|::|GROUP-GC|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-GC|)) :|INITARGS| '(:|GC|) + :|INITFORM| '|COMMON-LISP|::|NIL| :|INITFUNCTION| + (|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|LIST| :|NAME| '|CLFSWM|::|CHILD| :|READERS| + '(|CLFSWM|::|GROUP-CHILD|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-CHILD|)) :|INITARGS| '(:|CHILD|) + :|INITFORM| '|COMMON-LISP|::|NIL| :|INITFUNCTION| + (|SYSTEM|::|MAKE-CONSTANT-INITFUNCTION| |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|LIST| :|NAME| '|CLFSWM|::|DATA| :|READERS| + '(|CLFSWM|::|GROUP-DATA|) :|WRITERS| + '((|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-DATA|)) :|INITARGS| '(:|DATA|) + :|INITFORM| + '#6=(|COMMON-LISP|::|LIST| '(:|TILE-SIZE| 0.8f0) + '(:|TILE-SPACE-SIZE| 0.1f0)) + :|INITFUNCTION| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|DEFAULT-DATA| + (|COMMON-LISP|::|LAMBDA| |COMMON-LISP|::|NIL| #6#)) + :|DOCUMENTATION| '"An assoc list to store additional data")) + :|METACLASS| #1# + (|COMMON-LISP|::|APPEND| '(:|FIXED-SLOT-LOCATIONS| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|LIST| :|DIRECT-DEFAULT-INITARGS| |COMMON-LISP|::|NIL| + :|DOCUMENTATION| |COMMON-LISP|::|NIL| :|GENERIC-ACCESSORS| + '|COMMON-LISP|::|T|)))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-NAME| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-NAME|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-NUMBER| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-NUMBER|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-X| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-X|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-Y| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-Y|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-W| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-W|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-H| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-H|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-RX| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-RX|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-RY| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-RY|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-RW| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-RW|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-RH| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-RH|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-LAYOUT| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-LAYOUT|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-WINDOW| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-WINDOW|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-GC| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-GC|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-CHILD| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-CHILD|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GROUP-DATA| + #(1. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |CLFSWM|::|GROUP-DATA|) + #(2. 0. |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + |COMMON-LISP|::|NIL|) + |COMMON-LISP|::|NIL| '|CLOS|::|DEFMETHOD|) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*ROOT-GROUP*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*CURRENT-ROOT*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*CURRENT-CHILD*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SHOW-ROOT-GROUP-P*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MAIN-KEYS*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SECOND-KEYS*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MOUSE-ACTION*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-KEYS*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-MOUSE-ACTION*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-KEYS*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INFO-MOUSE-ACTION*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*OPEN-NEXT-WINDOW-IN-NEW-WORKSPACE*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*OPEN-NEXT-WINDOW-IN-NEW-GROUP*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*ARROW-ACTION*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-ARROW-ACTION*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*INIT-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*BUTTON-PRESS-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*BUTTON-MOTION-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*KEY-PRESS-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*CONFIGURE-REQUEST-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*CONFIGURE-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*CREATE-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*DESTROY-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*ENTER-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*EXPOSURE-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MAP-REQUEST-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MAPPING-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PROPERTY-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*UNMAP-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-BUTTON-PRESS-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-BUTTON-RELEASE-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-MOTION-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-KEY-PRESS-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-CONFIGURE-REQUEST-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-CONFIGURE-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-MAP-REQUEST-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-UNMAP-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-DESTROY-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-MAPPING-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-PROPERTY-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-CREATE-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-ENTER-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*SM-EXPOSURE-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-BUTTON-PRESS-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-BUTTON-RELEASE-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-MOTION-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-KEY-PRESS-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-CONFIGURE-REQUEST-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-MAP-REQUEST-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-UNMAP-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-DESTROY-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-MAPPING-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-PROPERTY-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-CREATE-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-ENTER-NOTIFY-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*PAGER-EXPOSURE-HOOK*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MOTION-ACTION*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MOTION-OBJECT*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MOTION-START-GROUP*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MOTION-DX*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*MOTION-DY*|)) Added: package.lisp ============================================================================== --- (empty file) +++ package.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,203 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Mon Feb 25 21:33:22 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Package definition +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :cl-user) + +(defpackage clfswm + (:use :common-lisp :my-html :tools) + ;;(:shadow :defun) + (:export :main)) + +(in-package :clfswm) + + +(defparameter *display* nil) +(defparameter *screen* nil) +(defparameter *root* nil) +(defparameter *no-focus-window* nil) +(defparameter *root-gc* nil) + +(defparameter *default-font* nil) +;;(defparameter *default-font-string* "9x15") +(defparameter *default-font-string* "fixed") + + +(defparameter *child-selection* nil) + +(defparameter *layout-list* nil) + + +;;(defstruct group (number (incf *current-group-number*)) name +;; (x 0) (y 0) (w 1) (h 1) rx ry rw rh +;; layout window gc child) + +(defclass group () + ((name :initarg :name :accessor group-name :initform nil) + (number :initarg :number :accessor group-number :initform 0) + ;;; Float size between 0 and 1 - Manipulate only this variable and not real size + (x :initarg :x :accessor group-x :initform 0.1) + (y :initarg :y :accessor group-y :initform 0.1) + (w :initarg :w :accessor group-w :initform 0.8) + (h :initarg :h :accessor group-h :initform 0.8) + ;;; Real size (integer) in screen size - Don't set directly this variables + ;;; they may be recalculated by the layout manager. + (rx :initarg :rx :accessor group-rx :initform 0) + (ry :initarg :ry :accessor group-ry :initform 0) + (rw :initarg :rw :accessor group-rw :initform 800) + (rh :initarg :rh :accessor group-rh :initform 600) + (layout :initarg :layout :accessor group-layout :initform nil) + (window :initarg :window :accessor group-window :initform nil) + (gc :initarg :gc :accessor group-gc :initform nil) + (child :initarg :child :accessor group-child :initform nil) + (data :initarg :data :accessor group-data + :initform (list '(:tile-size 0.8) '(:tile-space-size 0.1)) + :documentation "An assoc list to store additional data"))) + + + +(defparameter *root-group* nil + "Root of the root - ie the root group") +(defparameter *current-root* nil + "The current fullscreen maximized child") +(defparameter *current-child* nil + "The current child with the focus") + +(defparameter *show-root-group-p* nil) + + +(defparameter *main-keys* (make-hash-table :test 'equal)) +(defparameter *second-keys* (make-hash-table :test 'equal)) +(defparameter *mouse-action* (make-hash-table :test 'equal)) +(defparameter *pager-keys* (make-hash-table :test 'equal)) +(defparameter *pager-mouse-action* (make-hash-table :test 'equal)) +(defparameter *info-keys* (make-hash-table :test 'equal)) +(defparameter *info-mouse-action* (make-hash-table :test 'equal)) + + +(defparameter *open-next-window-in-new-workspace* nil + "Set to t to open the next window in a new workspace +or to a number to open in a numbered workspace") + +(defparameter *open-next-window-in-new-group* nil + "Set to t to open the each next window in a new group +or set to :once open the next window in a new group and all +others in the same group") + +(defparameter *arrow-action* nil + "Arrow action in the second mode") + +(defparameter *pager-arrow-action* nil + "Arrow action in the pager mode") + + + +;;; Hook definitions +;;; +;;; A hook is a function, a symbol or a list of functions with a rest +;;; arguments. +;;; +;;; This hooks are set in clfswm.lisp, you can overwrite them or extend +;;; them with a hook list. +;;; +;;; See clfswm.lisp for hooks examples. + +;;; Init hook. This hook is run just after the first root group is created +(defparameter *init-hook* nil) + +;;; Main mode hooks (set in clfswm.lisp) +(defparameter *button-press-hook* nil) +(defparameter *button-motion-notify-hook* nil) +(defparameter *key-press-hook* nil) +(defparameter *configure-request-hook* nil) +(defparameter *configure-notify-hook* nil) +(defparameter *create-notify-hook* nil) +(defparameter *destroy-notify-hook* nil) +(defparameter *enter-notify-hook* nil) +(defparameter *exposure-hook* nil) +(defparameter *map-request-hook* nil) +(defparameter *mapping-notify-hook* nil) +(defparameter *property-notify-hook* nil) +(defparameter *unmap-notify-hook* nil) + + +;;; Second mode hooks (set in clfswm-second-mode.lisp) +(defparameter *sm-button-press-hook* nil) +(defparameter *sm-button-release-hook* nil) +(defparameter *sm-motion-notify-hook* nil) +(defparameter *sm-key-press-hook* nil) +(defparameter *sm-configure-request-hook* nil) +(defparameter *sm-configure-notify-hook* nil) +(defparameter *sm-map-request-hook* nil) +(defparameter *sm-unmap-notify-hook* nil) +(defparameter *sm-destroy-notify-hook* nil) +(defparameter *sm-mapping-notify-hook* nil) +(defparameter *sm-property-notify-hook* nil) +(defparameter *sm-create-notify-hook* nil) +(defparameter *sm-enter-notify-hook* nil) +(defparameter *sm-exposure-hook* nil) + + +;;; Pager mode hooks (set in clfswm-pager.lisp) +(defparameter *pager-button-press-hook* nil) +(defparameter *pager-button-release-hook* nil) +(defparameter *pager-motion-notify-hook* nil) +(defparameter *pager-key-press-hook* nil) +(defparameter *pager-configure-request-hook* nil) +(defparameter *pager-map-request-hook* nil) +(defparameter *pager-unmap-notify-hook* nil) +(defparameter *pager-destroy-notify-hook* nil) +(defparameter *pager-mapping-notify-hook* nil) +(defparameter *pager-property-notify-hook* nil) +(defparameter *pager-create-notify-hook* nil) +(defparameter *pager-enter-notify-hook* nil) +(defparameter *pager-exposure-hook* nil) + + +;;; Second mode global variables +(defparameter *motion-action* nil) +(defparameter *motion-object* nil) +(defparameter *motion-start-group* nil) +(defparameter *motion-dx* nil) +(defparameter *motion-dy* nil) + + +;; For debug - redefine defun +;;(shadow :defun) +;; +;;(defmacro defun (name args &body body) +;; `(progn +;; (format t "defun: ~A ~A~%" ',name ',args) +;; (force-output) +;; (cl:defun ,name ,args +;; (handler-case +;; (progn +;; , at body) +;; (error (c) +;; (format t "New defun: Error in ~A : ~A~%" ',name c) +;; (format t "Root tree=~A~%All windows=~A~%" +;; (xlib:query-tree *root*) (get-all-windows)) +;; (force-output)))))) Added: program ============================================================================== --- (empty file) +++ program Sat Mar 1 07:36:13 2008 @@ -0,0 +1,26 @@ + +Show clfswm help (Alt-F1) - Main mode, Second mode and Pager mode + +Show group creation on root window and pager usage + +Create new window with the shell or the ! clfswm command or apwal + (xterm, epiphany, abiword) + +Move groups, pack, rezise, fill and same things with the pager + +Swap two workspaces, renumber + +Show a Gimp usage. + +Show xmms and free windows + +Copy 3 times the same group and explode group (control+Y) and implode (control+shift+Y) + +Show eval application: larswm tile mode (y and Alt+Y) + -> enabled when switching groups "tile.lisp" + +Show live debugging: *workspace-list*, *screen*, (query-tree *root*), + wm-name, config.lisp... + + +And so on . Bye! \ No newline at end of file Added: sbcl-load.lisp ============================================================================== --- (empty file) +++ sbcl-load.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,7 @@ +(require :sb-posix) +(require :clx) +(require :clfswm) + +(in-package :clfswm) + +;;(clfswm:main ":1") Added: tools.fas ============================================================================== --- (empty file) +++ tools.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,799 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 29 (IN-PACKAGE :COMMON-LISP-USER)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("COMMON-LISP-USER" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|31 77 (DEFPACKAGE TOOLS (:USE COMMON-LISP) ...)-2-1| + #18Y(00 00 00 00 00 00 00 00 00 01 DA 01 04 31 E1 3E 19 01) ("TOOLS") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|31 77 (DEFPACKAGE TOOLS (:USE COMMON-LISP) ...)-2-2| + #17Y(00 00 00 00 00 00 00 00 00 01 DA DB 31 DE 3E 19 01) + (("COMMON-LISP") "TOOLS") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|31 77 (DEFPACKAGE TOOLS (:USE COMMON-LISP) ...)-2-3| + #19Y(00 00 00 00 00 00 00 00 00 01 DA DB 63 2D 03 02 3E 19 01) + (("IT" "AWHEN" "AIF" "DBG" "DBGNL" "SETF/=" "CREATE-SYMBOL" "SPLIT-STRING" + "EXPAND-NEWLINE" "ENSURE-LIST" "ENSURE-PRINTABLE" "FIND-ASSOC-WORD" + "PRINT-SPACE" "ESCAPE-STRING" "FIRST-POSITION" "FIND-FREE-NUMBER" + "DO-EXECUTE" "DO-SHELL" "GETENV" "UQUIT" "URUN-PROG" "USHELL" "USH" + "USHELL-LOOP" "CLDEBUG" "GET-COMMAND-LINE-WORDS" "STRING-TO-LIST" + "NEAR-POSITION" "STRING-TO-LIST-MULTICHAR" "LIST-TO-STRING" + "LIST-TO-STRING-LIST" "CLEAN-STRING" "ONE-IN-LIST" "EXCHANGE-ONE-IN-LIST" + "ROTATE-LIST" "ANTI-ROTATE-LIST" "APPEND-FORMATED-LIST" "SHUFFLE-LIST" + "PARSE-INTEGER-IN-LIST" "CONVERT-TO-NUMBER" "NEXT-IN-LIST" "PREV-IN-LIST" + "FIND-STRING" "FIND-ALL-STRINGS" "SUBST-STRINGS" "TEST-FIND-STRING") + "TOOLS" |SYSTEM|::|INTERN-EXPORT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|31 77 (DEFPACKAGE TOOLS (:USE COMMON-LISP) ...)-2-4| + #15Y(00 00 00 00 00 00 00 00 00 01 DA 31 CE 19 01) ("TOOLS") + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|)) +#Y(#:|80 80 (IN-PACKAGE :TOOLS)-3| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("TOOLS" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|83 83 (SETQ *RANDOM-STATE* (MAKE-RANDOM-STATE T))-4| + #17Y(00 00 00 00 00 00 00 00 00 01 64 32 DE 0F 00 19 01) + (|COMMON-LISP|::|*RANDOM-STATE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|87 90 (DEFMACRO AWHEN (TEST &BODY BODY) ...)-5| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|TOOLS|::|AWHEN| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|AWHEN| + #42Y(00 00 00 00 02 00 00 00 00 03 AE DA 8B 01 16 9F 5C 78 A0 5C 79 DD + DE AF 7B 02 7B 01 DF DE A1 5D 7A 61 03 19 05 AE 2F 02 19 03) + (2. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| |COMMON-LISP|::|LET| |TOOLS|::|IT| + |COMMON-LISP|::|WHEN|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|92 93 (DEFMACRO AIF (TEST THEN &OPTIONAL ...) ...)-6| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|TOOLS|::|AIF| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|AIF| + #52Y(00 00 00 00 02 00 00 00 00 03 AE DA DB 2D 03 02 1D 1D 9F 5C 78 A0 + 5C 5C 78 A1 5C 5C 5C 78 DE DF B0 7B 02 7B 01 E0 DF B1 B1 7B 04 61 + 03 19 06 AE 2F 03 19 03) + (3. 4. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| |COMMON-LISP|::|LET| |TOOLS|::|IT| + |COMMON-LISP|::|IF|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|96 99 (DEFVAR *%DBG-NAME%* "dbg")-7| + #24Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 8C 4F 04 DB DC 31 52 C6 19 + 01) + ((|COMMON-LISP|::|SPECIAL| |TOOLS|::|*%DBG-NAME%*|) |TOOLS|::|*%DBG-NAME%*| + "dbg") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|100 100 (DEFVAR *%DBG-COUNT%* 0)-8| + #24Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB 8C 4F 04 DB DC 31 52 C6 19 + 01) + ((|COMMON-LISP|::|SPECIAL| |TOOLS|::|*%DBG-COUNT%*|) + |TOOLS|::|*%DBG-COUNT%*| 0.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|103 118 (DEFMACRO DBG (&REST FORMS) ...)-9| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|TOOLS|::|DBG| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|DBG| + #126Y(00 00 00 00 02 00 00 00 00 03 AE 89 00 1B 95 02 DC 63 AE AC 8C 94 + 25 94 00 AC 8E 09 11 AC 8F 0A 11 DD CA 14 AE 61 03 1B 0A AE 2F 01 + 19 03 DD C9 1B 71 00 14 84 02 16 01 83 00 1B 57 16 01 AC 80 A6 00 + E0 63 B0 1B 1E 00 1B 14 94 00 AC 8E 09 77 AC 8E 0A 73 E1 64 E2 E3 + B0 7B 02 B0 61 05 14 84 02 16 01 83 00 AC 8D 94 61 16 01 AC 80 A6 + 00 E4 E5 A3 5D 7A 33 02 22 7A 33 02 22 5D 19 04) + (|EXT|::|PROPER-LIST-P| |SYSTEM|::|MACRO-CALL-ERROR| + |COMMON-LISP|::|PROGN| |COMMON-LISP|::|SETF| |TOOLS|::|*%DBG-NAME%*| + |TOOLS|::|*%DBG-COUNT%*| + (|COMMON-LISP|::|FORMAT| |COMMON-LISP|::|T| "~&DEBUG[~A - ~A] " + (|COMMON-LISP|::|INCF| |TOOLS|::|*%DBG-COUNT%*|) + |TOOLS|::|*%DBG-NAME%*|) + |COMMON-LISP|::|FORMAT| "~A=~S " |COMMON-LISP|::|QUOTE| + (|COMMON-LISP|::|FORMAT| |COMMON-LISP|::|T| "~%") + (|COMMON-LISP|::|FORCE-OUTPUT|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|120 134 (DEFMACRO DBGNL (&REST FORMS) ...)-10| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|TOOLS|::|DBGNL| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|DBGNL| + #124Y(00 00 00 00 02 00 00 00 00 03 AE 89 00 1B 95 02 DC 63 AE AC 8C 94 + 25 94 00 AC 8E 09 11 AC 8F 0A 11 DD CA 14 AE 61 03 1B 0A AE 2F 01 + 19 03 DD C9 1B 71 00 14 84 02 16 01 83 00 1B 57 16 01 AC 80 A6 00 + E0 63 B0 1B 1E 00 1B 14 94 00 AC 8E 09 77 AC 8E 0A 73 E1 64 E2 E3 + B0 7B 02 B0 61 05 14 84 02 16 01 83 00 AC 8D 94 61 16 01 AC 80 A6 + 00 E4 A2 7A 33 02 22 7A 33 02 22 5D 19 04) + (|EXT|::|PROPER-LIST-P| |SYSTEM|::|MACRO-CALL-ERROR| + |COMMON-LISP|::|PROGN| |COMMON-LISP|::|SETF| |TOOLS|::|*%DBG-NAME%*| + |TOOLS|::|*%DBG-COUNT%*| + (|COMMON-LISP|::|FORMAT| |COMMON-LISP|::|T| + "~&DEBUG[~A - ~A] --------------------~%" + (|COMMON-LISP|::|INCF| |TOOLS|::|*%DBG-COUNT%*|) + |TOOLS|::|*%DBG-NAME%*|) + |COMMON-LISP|::|FORMAT| " - ~A=~S~%" |COMMON-LISP|::|QUOTE| + (|COMMON-LISP|::|FORCE-OUTPUT|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|141 149 (DEFMACRO SETF/= (VAR VAL) ...)-11| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|TOOLS|::|SETF/=| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|SETF/=| + #58Y(00 00 00 00 02 00 00 00 00 03 AE DA DA 2D 03 01 1D 23 9F 5C 78 A0 + 5C 5C 78 38 01 72 90 DD AD AF 7B 02 7B 01 DE DF B2 B1 7B 03 E0 B3 + B2 7B 03 7B 03 61 03 19 06 AE 2F 02 19 03) + (3. |SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| + |SYSTEM|::|MACRO-CALL-ERROR| |COMMON-LISP|::|LET| |COMMON-LISP|::|WHEN| + |COMMON-LISP|::|/=| |COMMON-LISP|::|SETF|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|152 154 (DEFUN CREATE-SYMBOL (&REST NAMES) ...)-12| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|CREATE-SYMBOL| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|CREATE-SYMBOL| + #25Y(00 00 00 00 00 00 00 00 07 16 DA DB A0 77 01 38 02 71 46 38 01 31 + D6 19 02) + (#.#'|COMMON-LISP|::|CONCATENATE| |COMMON-LISP|::|STRING|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |TOOLS|::|NAMES|) + "Return a new symbol from names")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|157 163 (DEFUN SPLIT-STRING (STRING &OPTIONAL #) ...)-13| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|SPLIT-STRING| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|SPLIT-STRING| + #61Y(00 00 00 00 01 00 01 00 06 08 3B 01 02 C5 F9 01 04 C6 FB 1B 0A AD + 84 00 93 02 1D AE 81 97 03 B1 B3 38 06 A8 FC 81 60 02 B2 B0 B0 81 + 46 01 14 DC 38 04 8D 35 60 92 02 63 AC 31 A6 19 07) + (#\ 0. "") (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|STRING| |COMMON-LISP|::|&OPTIONAL| + (|TOOLS|::|SEPARATOR| #\ )) + "Return a list from a string splited at each separators")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|166 171 (DEFUN EXPAND-NEWLINE (LIST) ...)-14| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|EXPAND-NEWLINE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|EXPAND-NEWLINE| + #38Y(00 00 00 00 01 00 00 00 06 02 63 AE 63 1B 0E 87 01 00 AE AD DA 70 + 01 82 02 22 02 83 01 AD 8D 94 6E 16 02 15 19 02) + (#\Newline |TOOLS|::|SPLIT-STRING|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|LIST|) "Expand all newline in strings in list")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|173 177 (DEFUN ENSURE-LIST (OBJECT) ...)-15| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|ENSURE-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|ENSURE-LIST| + #22Y(00 00 00 00 01 00 00 00 06 02 AD 8E 0D 05 AD 61 01 19 02 9E 19 02) + () (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|TOOLS|::|OBJECT|) "Ensure an object is a list")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|180 182 (DEFUN ENSURE-PRINTABLE (STRING &OPTIONAL #) ...)-16| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|ENSURE-PRINTABLE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|ENSURE-PRINTABLE| + #24Y(00 00 00 00 01 00 01 00 06 08 3B 01 02 C5 F9 AD DB B0 38 05 32 59 + 19 03) + (#\? #.#'|COMMON-LISP|::|STANDARD-CHAR-P|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|STRING| |COMMON-LISP|::|&OPTIONAL| + (|TOOLS|::|NEW| #\?)) + "Ensure a string is printable in ascii")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|187 193 (DEFUN FIND-ASSOC-WORD (WORD LINE &OPTIONAL ...) ...)-17| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|FIND-ASSOC-WORD| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|FIND-ASSOC-WORD| + #65Y(00 00 00 00 02 00 01 00 06 09 3B 01 02 C5 F9 AF AF 38 08 72 67 AE + B0 38 06 92 08 01 C6 FC 72 60 AF B1 38 06 92 08 01 C6 14 81 97 04 + 72 60 9F 1F 0E 9E 1F 0B 9D 1F 08 B1 96 02 AE 32 46 19 07 19 07) + (#\" 0.) (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|WORD| |TOOLS|::|LINE| |COMMON-LISP|::|&OPTIONAL| + (|TOOLS|::|DELIM| #\")) + "Find a word pair")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|196 199 (DEFUN PRINT-SPACE (N &OPTIONAL #) ...)-18| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|PRINT-SPACE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|PRINT-SPACE| + #34Y(00 00 00 00 01 00 01 00 06 08 3B 01 03 0E 00 F9 DB 1B 06 DC AF 31 + 86 85 00 AC B0 91 01 32 74 00 19 04) + (|COMMON-LISP|::|*STANDARD-OUTPUT*| 0. #\ ) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|N| |COMMON-LISP|::|&OPTIONAL| + (|COMMON-LISP|::|STREAM| |COMMON-LISP|::|*STANDARD-OUTPUT*|)) + "Print n spaces on stream")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|202 206 (DEFUN ESCAPE-STRING (STRING &OPTIONAL # ...) ...)-19| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|ESCAPE-STRING| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|ESCAPE-STRING| + #44Y(00 00 00 00 01 00 02 00 06 0D 3B 02 02 C5 FA 3B 01 14 C6 F9 93 02 + 12 AD 94 03 B1 38 07 72 57 95 03 AF 29 03 07 64 92 02 6E A0 19 04) + (#1=(#\/ #\: #\) #\( #\ #\; #\,) #\_) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|STRING| |COMMON-LISP|::|&OPTIONAL| + (|TOOLS|::|ESCAPER| '#1#) (|COMMON-LISP|::|CHAR| #\_)) + "Replace in string all characters found in the escaper list")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|210 212 (DEFUN FIRST-POSITION (WORD STRING) ...)-20| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|FIRST-POSITION| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|FIRST-POSITION| + #23Y(00 00 00 00 02 00 00 00 06 03 AE AE 38 08 8E 67 01 C5 14 32 92 19 + 03) + (-1.) (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|WORD| |COMMON-LISP|::|STRING|) + "Return true only if word is at position 0 in string")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|215 227 (DEFUN FIND-FREE-NUMBER (L) ...)-21| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|FIND-FREE-NUMBER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|FIND-FREE-NUMBER| + #91Y(00 00 00 00 01 00 00 00 06 02 AD DA 38 03 72 68 DB AD 38 01 31 9E + 5B 1C 01 C6 14 01 02 A1 F9 1B 27 A0 16 04 1B 2F AD 38 01 31 9E 78 + 32 97 19 04 AD 38 01 31 9E 5B 1C 6E C6 19 04 87 01 00 AF AD 90 01 + 2E 5D 85 03 83 01 AF AF 90 01 30 04 AD 8D 94 69 00 16 04 14 93 00 + 57 19 04) + (#.#'|COMMON-LISP|::|<| 0.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|L|) "Return a number that is not in the list l.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|233 279 (DEFUN DO-EXECUTE (PROGRAM ARGS &OPTIONAL ...) ...)-22| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|DO-EXECUTE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|DO-EXECUTE| + #62Y(00 00 00 00 02 00 01 00 06 09 3D 01 AF AF 63 1B 11 E2 33 00 1D 87 + 01 00 DA AF DB AF 82 03 25 02 83 01 AD 8D 94 6F 16 02 B0 DC B1 DD + DE DF DE E0 92 0A 01 02 14 6E 09 07 93 00 56 15 19 05) + (|COMMON-LISP|::|STRING| " " :|ARGUMENTS| :|INPUT| :|STREAM| :|OUTPUT| + :|WAIT| |EXT|::|RUN-PROGRAM| "Cannot create process.") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|PROGRAM| |TOOLS|::|ARGS| |COMMON-LISP|::|&OPTIONAL| + (|TOOLS|::|WT| |COMMON-LISP|::|NIL|)) + "execute program with args a list containing the arguments passed to +the program if wt is non-nil, the function will wait for the execution +of the program to return. + returns a two way stream connected to stdin/stdout of the program")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|281 282 (DEFUN DO-SHELL (PROGRAM &OPTIONAL ARGS ...) ...)-23| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|DO-SHELL| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|DO-SHELL| + #26Y(00 00 00 00 01 00 02 00 06 0D 3D 02 3D 01 DA DB B1 A2 5D 7A AF 2D + 03 02 19 04) + ("/bin/sh" "-c" |TOOLS|::|DO-EXECUTE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|PROGRAM| |COMMON-LISP|::|&OPTIONAL| |TOOLS|::|ARGS| + (|TOOLS|::|WT| |COMMON-LISP|::|NIL|)) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|290 303 (DEFUN GETENV (VAR) ...)-24| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|GETENV| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|GETENV| + #17Y(00 00 00 00 01 00 00 00 06 02 AD 71 4B 2F 00 19 02) + (|EXT|::|GETENV|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|VAR|) "Return the value of the environment variable.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|306 322 (DEFUN (SETF GETENV) (VAL VAR) ...)-25| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C8 19 01) + (#.(|SYSTEM|::|GET-SETF-SYMBOL| '|TOOLS|::|GETENV|) + |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(#1=(|COMMON-LISP|::|SETF| |TOOLS|::|GETENV|) + #20Y(00 00 00 00 02 00 00 00 06 03 AD 71 4B AF 71 4B 30 00 19 03) + (|SYSTEM|::|SETENV|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|VAL| |TOOLS|::|VAR|) "Set an environment variable.") + #1#) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|330 336 (DEFUN UQUIT NIL ...)-26| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|UQUIT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|UQUIT| #14Y(00 00 00 00 00 00 00 00 06 01 2E 00 19 01) + (|EXT|::|QUIT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|341 350 (DEFUN REMOVE-PLIST (PLIST &REST KEYS) ...)-27| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|REMOVE-PLIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|REMOVE-PLIST| + #52Y(00 00 00 00 01 00 00 00 07 17 01 02 1B 14 94 04 83 05 84 01 94 04 + 83 05 84 01 B0 9E 23 70 A1 5C 5C FC B0 B0 32 87 42 03 15 16 02 F8 + 1C 6C AD B1 31 A5 19 05) + () (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|PLIST| |COMMON-LISP|::|&REST| |TOOLS|::|KEYS|) + "Remove the keys from the plist. +Useful for re-using the &REST arg after removing some options.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|355 376 (DEFUN URUN-PROG (PROG &REST OPTS ...) ...)-28| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|URUN-PROG| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|URUN-PROG| + #39Y(00 00 00 00 01 00 00 00 C7 00 02 00 00 00 3D 02 3B 01 02 7E 01 AF + DA DB 2D 03 02 FB 99 03 B1 DE B1 DB B2 A6 9B 05 05) + (:|ARGS| :|WAIT| |TOOLS|::|REMOVE-PLIST| |EXT|::|RUN-PROGRAM| + :|ARGUMENTS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|PROG| |COMMON-LISP|::|&REST| |TOOLS|::|OPTS| + |COMMON-LISP|::|&KEY| |TOOLS|::|ARGS| + (|TOOLS|::|WAIT| |COMMON-LISP|::|T|) + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|) + "Common interface to shell. Does not return anything useful.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|379 382 (DEFPARAMETER *SHELL-CMD* "/bin/sh")-29| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |TOOLS|::|*SHELL-CMD*|) |TOOLS|::|*SHELL-CMD*| + "/bin/sh") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|383 383 (DEFPARAMETER *SHELL-CMD-OPT* '("-c"))-30| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 C6 19 01) + ((|COMMON-LISP|::|SPECIAL| |TOOLS|::|*SHELL-CMD-OPT*|) + |TOOLS|::|*SHELL-CMD-OPT*| ("-c")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|385 390 (DEFUN USHELL (&REST STRINGS) ...)-31| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|USHELL| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|USHELL| + #24Y(00 00 00 00 00 00 00 00 07 16 6B 00 DB 6B 02 B0 73 02 22 2D 03 03 + 19 02) + (|TOOLS|::|*SHELL-CMD*| :|ARGS| |TOOLS|::|*SHELL-CMD-OPT*| + |TOOLS|::|URUN-PROG|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |TOOLS|::|STRINGS|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|392 393 (DEFUN USH (STRING) ...)-32| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|USH| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|USH| + #26Y(00 00 00 00 01 00 00 00 06 02 6B 00 DB 6B 02 B0 7B 01 73 02 22 2D + 03 03 19 02) + (|TOOLS|::|*SHELL-CMD*| :|ARGS| |TOOLS|::|*SHELL-CMD-OPT*| + |TOOLS|::|URUN-PROG|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|STRING|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|396 400 (DEFUN SET-SHELL-DISPATCH (&OPTIONAL #) ...)-33| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|SET-SHELL-DISPATCH| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|SET-SHELL-DISPATCH| + #33Y(00 00 00 00 00 00 01 00 06 07 00 2B 01 3B 02 01 C5 0B 00 00 AC 6D + 01 01 DC DC AE 38 01 31 74 19 04) + (|TOOLS|::|USHELL| + #Y(|TOOLS|::|SET-SHELL-DISPATCH-shell-reader| + #23Y(00 00 00 00 03 00 00 00 06 04 69 00 01 B0 64 63 64 71 76 61 02 + 19 04) + (|COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|STREAM| |TOOLS|::|SUBCHAR| |TOOLS|::|ARG|) + |COMMON-LISP|::|NIL|) + #\#) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&OPTIONAL| (|TOOLS|::|SHELL-FUN| '|TOOLS|::|USHELL|)) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|403 412 (DEFUN USHELL-LOOP (&OPTIONAL #) ...)-34| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|USHELL-LOOP| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|USHELL-LOOP| + #127Y(03 00 01 00 00 00 01 00 06 07 3B 01 80 4F 9A 00 01 1B 80 49 AE 68 + 01 00 E0 38 01 72 46 36 01 16 01 1B 3A 58 67 00 00 01 76 00 AD 36 + 01 18 03 01 19 02 DF 68 01 00 38 06 8E 60 01 C9 14 8E 92 54 E1 6B + 02 47 08 10 AE 6D 09 01 B2 6D 0A 01 57 0B B0 36 00 16 06 48 43 14 + 33 02 15 16 01 DB 6B 02 33 01 15 00 2B 01 38 04 31 79 0B 00 00 DD + 68 01 00 38 08 8E 67 01 C9 14 8F 92 FF B6 00 19 03) + (|TOOLS|::|USHELL| + #Y(|TOOLS|::|USHELL-LOOP-1| + #19Y(00 00 00 00 01 00 00 00 01 17 DA AF 38 02 31 8B 9E 19 03) + ("UNI-SHELL> ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|*STANDARD-OUTPUT*| "quit" -1. #\! 1. + #Y(|TOOLS|::|USHELL-LOOP-2| + #46Y(00 00 00 00 02 00 00 00 01 18 AE 1B 15 16 01 1B 17 94 00 83 01 + B1 31 86 AC 8C 94 71 DA B1 38 02 31 8B AC 8D 94 6B 16 01 AF 31 + 8D 9E 19 04) + (" ; +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|NIL| + #Y(|TOOLS|::|USHELL-LOOP-3| + #16Y(00 00 00 00 00 00 00 00 06 01 DA 2C 01 01 19 01) + (|COMMON-LISP|::|NIL| + #Y(|TOOLS|::|USHELL-LOOP-3-1| + #16Y(00 00 00 00 01 00 00 00 06 02 63 AE 40 02 49 00) + (|COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|TOOLS|::|USHELL-LOOP-4| + #21Y(00 00 00 00 00 00 00 00 06 01 69 00 01 38 05 71 80 31 5B 19 01) + (|COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#(|COMMON-LISP|::|ERROR| 25.) 2. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&OPTIONAL| (|TOOLS|::|SHELL-FUN| #'|TOOLS|::|USHELL|)) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|419 423 (DEFUN CLDEBUG (&REST REST) ...)-35| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|CLDEBUG| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|CLDEBUG| + #41Y(00 00 00 00 00 00 00 00 07 16 DA 38 01 31 86 AD 63 1B 0A 87 01 00 + 14 38 01 31 86 83 01 AD 8D 94 72 16 02 38 01 31 8D 19 02) + ("DEBUG: ") (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|&REST| |COMMON-LISP|::|REST|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|426 429 (DEFUN GET-COMMAND-LINE-WORDS NIL ...)-36| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|GET-COMMAND-LINE-WORDS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|GET-COMMAND-LINE-WORDS| + #14Y(00 00 00 00 00 00 00 00 06 01 0E 00 19 01) (|EXT|::|*ARGS*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|433 443 (DEFUN STRING-TO-LIST (STR &KEY #) ...)-37| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|STRING-TO-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|STRING-TO-LIST| + #86Y(00 00 00 00 01 00 00 00 86 1C 01 00 00 00 3B 01 02 C6 F9 DC AE B0 + 38 06 A5 FC 72 60 63 93 01 1D AE AE 91 01 2E 07 B1 AF AF 72 46 84 + 00 AD 81 97 02 B0 B2 38 06 A7 FC 81 60 01 92 01 63 B1 AF 38 01 72 + 46 DD 38 04 8C 35 08 B1 AF 38 01 72 46 84 00 AC 32 4A 19 06) + (:|SPLIT-CHAR| #\ 0. "") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|STR| |COMMON-LISP|::|&KEY| (|TOOLS|::|SPLIT-CHAR| #\ )) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|446 458 (DEFUN NEAR-POSITION (CHARS STR &KEY ...) ...)-38| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|NEAR-POSITION| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|NEAR-POSITION| + #72Y(00 00 00 00 02 00 00 00 86 1D 01 00 00 00 3B 01 02 C6 F9 AF 94 00 + B0 38 06 A7 FC 72 60 AC 93 02 12 83 02 78 B2 38 06 A9 FC 81 60 01 + 1C 14 9D F8 92 02 6E 15 19 06 9E 1B 76 AD AD 90 01 2F 77 9D 1B 6D + 92 00 74 9E 1B 67) + (:|START| 0.) (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|CHARS| |TOOLS|::|STR| |COMMON-LISP|::|&KEY| + (|TOOLS|::|START| 0.)) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|461 485 (DEFUN STRING-TO-LIST-MULTICHAR (STR &KEY # ...) ...)-39| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|STRING-TO-LIST-MULTICHAR| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|STRING-TO-LIST-MULTICHAR| + #99Y(00 00 00 00 01 00 00 00 86 1C 02 00 00 00 3B 02 02 C7 FA 3D 01 DD + AF B1 DE AF 6E 04 05 63 93 01 24 B2 AF 92 06 38 A0 14 72 46 AC E0 + 38 04 8C 35 03 AC 84 01 16 01 AD 81 97 02 B1 B3 DE B1 2D 04 05 F9 + 92 01 5C B2 AF 38 01 72 46 E1 38 04 8C 35 08 B2 AF 38 01 72 46 84 + 00 AC 32 4A 19 07 AF 32 97 1B 44) + (:|SPLIT-CHARS| :|PRESERVE| #1=(#\ ) 0. :|START| + |TOOLS|::|NEAR-POSITION| "" "") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|STR| |COMMON-LISP|::|&KEY| (|TOOLS|::|SPLIT-CHARS| '#1#) + (|TOOLS|::|PRESERVE| |COMMON-LISP|::|NIL|)) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|491 492 (DEFUN LIST-TO-STRING (LST) ...)-40| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|LIST-TO-STRING| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|LIST-TO-STRING| + #27Y(00 00 00 00 01 00 00 00 06 02 DA 38 02 72 76 AF AD 31 86 AC 81 77 + 00 30 01 19 02) + (" () " |COMMON-LISP|::|STRING-TRIM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|LST|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|496 499 (DEFUN CLEAN-STRING (STRING) ...)-41| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|CLEAN-STRING| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|CLEAN-STRING| + #20Y(00 00 00 00 01 00 00 00 06 02 DA AE 70 01 38 02 31 46 19 02) + ((#\Newline) |COMMON-LISP|::|STRING-RIGHT-TRIM|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|STRING|) "Remove Newline and upcase string")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|501 502 (DEFUN ONE-IN-LIST (LST) ...)-42| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|ONE-IN-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|ONE-IN-LIST| + #22Y(00 00 00 00 01 00 00 00 06 02 AD 72 48 38 01 72 DD AE 31 96 19 02) + () (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|LST|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|504 509 (DEFUN EXCHANGE-ONE-IN-LIST (LST1 LST2) ...)-43| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|EXCHANGE-ONE-IN-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|EXCHANGE-ONE-IN-LIST| + #48Y(00 00 00 00 02 00 00 00 06 03 AE 6F 00 AE 6F 00 AD B1 38 07 72 4F + AD 7B 01 82 02 22 04 AC B0 38 07 72 4F AE 7B 01 82 02 22 03 B0 B0 + 40 02 19 05) + (|TOOLS|::|ONE-IN-LIST|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|LST1| |TOOLS|::|LST2|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|512 514 (DEFUN ROTATE-LIST (LIST) ...)-44| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|ROTATE-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|ROTATE-LIST| + #25Y(00 00 00 00 01 00 00 00 06 02 9E 1F 0A 79 94 02 7B 01 33 02 22 19 + 02 19 02) + () (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|LIST|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|516 518 (DEFUN ANTI-ROTATE-LIST (LIST) ...)-45| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|ANTI-ROTATE-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|ANTI-ROTATE-LIST| + #30Y(00 00 00 00 01 00 00 00 06 02 9E 1F 0F 14 38 01 71 9E AE 38 01 71 + A7 33 02 22 19 02 19 02) + () (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|LIST|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|521 536 (DEFUN APPEND-FORMATED-LIST (BASE-STR LST &KEY ...) ...)-46| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|APPEND-FORMATED-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|APPEND-FORMATED-LIST| + #104Y(00 00 00 00 02 00 00 00 86 1D 03 00 00 00 3B 03 02 C8 FB 3B 02 02 + C9 FA 3B 01 02 CA F9 B1 64 B2 63 1B 35 CC 1B 17 E0 AE B1 33 02 25 + 19 08 87 01 00 B3 AD 36 01 1C 1F E0 B0 92 04 67 CD 14 38 02 72 76 + B6 B1 76 01 AC AE 31 86 16 01 AC 81 77 00 82 03 25 03 7D 02 83 01 + AD 8D 94 52 16 02 B3 AE 38 04 8C 35 41 9E 19 08) + (:|TEST-NOT-FUN| :|PRINT-FUN| :|DEFAULT-STR| + #Y(|TOOLS|::|APPEND-FORMATED-LIST-1| + #13Y(00 00 00 00 01 00 00 00 06 02 00 19 02) () + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|TOOLS|::|X|) |COMMON-LISP|::|NIL|) + #Y(|TOOLS|::|APPEND-FORMATED-LIST-2| + #13Y(00 00 00 00 01 00 00 00 06 02 9E 19 02) () + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|TOOLS|::|X|) |COMMON-LISP|::|NIL|) + #1="" |COMMON-LISP|::|STRING| "" ", ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|BASE-STR| |TOOLS|::|LST| |COMMON-LISP|::|&KEY| + (|TOOLS|::|TEST-NOT-FUN| + #'(|COMMON-LISP|::|LAMBDA| #2=(|TOOLS|::|X|) |TOOLS|::|X| + |COMMON-LISP|::|NIL|)) + (|TOOLS|::|PRINT-FUN| + #'(|COMMON-LISP|::|LAMBDA| #3=(|TOOLS|::|X|) |TOOLS|::|X|)) + (|TOOLS|::|DEFAULT-STR| #1#)) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|539 550 (DEFUN SHUFFLE-LIST (LIST &KEY #) ...)-47| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|SHUFFLE-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|SHUFFLE-LIST| + #77Y(00 00 00 00 01 00 00 00 86 1C 01 00 00 00 3B 01 02 C6 F9 AE 71 A0 + DC DC DC DC 1B 26 B0 72 48 38 01 81 DD 03 B0 72 48 38 01 81 DD 02 + AF B1 80 96 01 AF B1 B0 B3 71 96 2D 03 03 AE B1 AF 2D 03 03 85 00 + AC B3 91 01 32 54 16 01 A0 19 07) + (:|TIME| 1. 0. |SYSTEM|::|%SETNTH|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|LIST| |COMMON-LISP|::|&KEY| (|COMMON-LISP|::|TIME| 1.)) + "Shuffle a list by swapping elements time times")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|554 556 (DEFUN CONVERT-TO-NUMBER (STR) ...)-48| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|CONVERT-TO-NUMBER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|CONVERT-TO-NUMBER| + #32Y(00 00 00 00 01 00 00 00 06 02 AD 8E 09 07 AD 8E 0A 0B 00 19 02 AD + 38 03 64 31 81 19 02 9E 19 02) + () (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|TOOLS|::|STR|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|558 560 (DEFUN PARSE-INTEGER-IN-LIST (LST) ...)-49| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|PARSE-INTEGER-IN-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|PARSE-INTEGER-IN-LIST| + #36Y(00 00 00 00 01 00 00 00 06 02 63 AE 1B 0B 94 00 AC 6F 00 84 02 16 + 01 83 00 AC 8D 94 71 16 01 AC 31 A6 19 03) + (|TOOLS|::|CONVERT-TO-NUMBER|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|LST|) "Convert all integer string in lst to integer")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|564 568 (DEFUN NEXT-IN-LIST (ITEM LST) ...)-50| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|NEXT-IN-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|NEXT-IN-LIST| + #41Y(00 00 00 00 02 00 00 00 06 03 AD 93 00 18 AF 94 01 8F 04 0D 9D 5C + 5B 1C 04 9F 5B 19 04 9D 5C 1B 79 83 00 92 00 68 00 19 04) + () (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|ITEM| |TOOLS|::|LST|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|570 571 (DEFUN PREV-IN-LIST (ITEM LST) ...)-51| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|PREV-IN-LIST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|PREV-IN-LIST| + #18Y(00 00 00 00 02 00 00 00 06 03 AE AE 72 49 30 00 19 03) + (|TOOLS|::|NEXT-IN-LIST|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|ITEM| |TOOLS|::|LST|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|574 632 (DEFUN FIND-STRING (SUBSTR STR &KEY ...) ...)-52| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|FIND-STRING| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|FIND-STRING| + #142Y(00 00 00 00 02 00 00 00 86 1D 04 00 00 00 3B 04 02 C9 FC 3D 03 3D + 02 3B 01 0A 7D 01 93 03 0E 1B 06 00 19 07 93 03 06 B0 B0 90 01 32 + 74 97 04 63 B4 72 48 93 04 0C B4 38 02 80 46 08 B5 38 02 80 46 09 + 63 93 00 12 1B 3C 00 19 0B B2 B6 B1 B1 36 03 19 0B 7E 00 92 00 2C + B6 DE 73 01 01 B6 38 06 B7 81 97 04 04 0F FB 81 60 03 1D 5C B5 B7 + B1 B6 38 02 80 3A 02 1D 0A 14 B0 73 01 36 AE 90 01 2D 52 93 00 54 + B2 8E 1F 43 AF AF 40 02 19 0B) + (:|START| :|END| :|TEST| :|IGNORE-CASE| 0.) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|SUBSTR| |TOOLS|::|STR| |COMMON-LISP|::|&KEY| + (|TOOLS|::|START| 0.) (|TOOLS|::|END| |COMMON-LISP|::|NIL|) + (|TOOLS|::|TEST| |COMMON-LISP|::|NIL|) + (|TOOLS|::|IGNORE-CASE| |COMMON-LISP|::|NIL|)) + "Find substr in str. Return begin and end of substr in str as two values. +Start and end set the findinq region. Ignore-case make find-string case +insensitive. +Test (if needed) must be a function which take str pos1 pos2 and must return +new positions of the substr in str as two values")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|636 649 (DEFUN FIND-ALL-STRINGS (SUBSTR STR &KEY ...) ...)-53| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|FIND-ALL-STRINGS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|FIND-ALL-STRINGS| + #73Y(00 00 00 00 02 00 00 00 86 1D 04 00 00 00 3B 04 02 C9 FC 3D 03 3D + 02 3D 01 B2 B2 DA B3 DB B4 DC B5 DD B6 2D 0A 05 43 14 63 1B 14 AD + 84 00 B4 B4 DA A1 5C 78 DB B6 DC B7 DD B8 2D 0A 05 43 F9 AD E0 8F + 04 67 AC 32 4A 19 09) + (:|START| :|END| :|TEST| :|IGNORE-CASE| 0. |TOOLS|::|FIND-STRING| + (|COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|SUBSTR| |TOOLS|::|STR| |COMMON-LISP|::|&KEY| + (|TOOLS|::|START| 0.) (|TOOLS|::|END| |COMMON-LISP|::|NIL|) + (|TOOLS|::|TEST| |COMMON-LISP|::|NIL|) + (|TOOLS|::|IGNORE-CASE| |COMMON-LISP|::|NIL|)) + "Find all substr in str. Parameters are the same as find-string. +Return a list with all begin and end positions of substr in str +ie: '((pos1.1 pos1.2) (pos2.1 pos2.2))...")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|653 684 (DEFUN SUBST-STRINGS (NEW SUBSTR STR ...) ...)-54| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|SUBST-STRINGS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|SUBST-STRINGS| + #132Y(00 00 00 00 03 00 00 00 86 1E 04 00 00 00 3B 04 02 C9 FC 3D 03 3D + 02 3D 01 B1 DE B2 72 46 B1 DE DE 92 07 04 B5 81 48 07 63 92 00 80 + 54 B7 B7 DA B2 DB B9 DC BA DD BB 2D 0A 05 42 02 6A 02 6A 02 1D 2D + E0 B1 B8 B2 B2 72 46 BB 8E 1F 17 04 0F 14 82 03 25 04 93 01 06 14 + B5 90 01 31 0F A5 FB 93 00 4B 1B 1D BB BA B3 B3 36 03 1B 63 9E 1B + 6F E0 B1 B8 B2 38 01 72 46 82 02 25 04 7E 00 93 00 FF AC A1 19 0D) + (:|START| :|END| :|TEST| :|IGNORE-CASE| 0. |TOOLS|::|FIND-STRING| + |COMMON-LISP|::|STRING|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|NEW| |TOOLS|::|SUBSTR| |TOOLS|::|STR| |COMMON-LISP|::|&KEY| + (|TOOLS|::|START| 0.) (|TOOLS|::|END| |COMMON-LISP|::|NIL|) + (|TOOLS|::|TEST| |COMMON-LISP|::|NIL|) + (|TOOLS|::|IGNORE-CASE| |COMMON-LISP|::|NIL|)) + "Substitute all substr strings in str with new. +New must be a string or a function witch takes str pos1 pos2 +as parameters and return a string to replace substr")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|688 693 (DEFUN MY-FIND-STRING-TEST (STR POS1 POS2) ...)-55| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|MY-FIND-STRING-TEST| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|MY-FIND-STRING-TEST| + #25Y(00 00 00 00 03 00 00 00 06 04 DA B0 DB B0 2D 04 02 42 02 B0 AD 40 + 02 19 06) + ("=>" :|START| |TOOLS|::|FIND-STRING|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|STR| |TOOLS|::|POS1| |TOOLS|::|POS2|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|696 747 (DEFUN TEST-FIND-STRING NIL ...)-56| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|TOOLS|::|TEST-FIND-STRING| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|TOOLS|::|TEST-FIND-STRING| + #211Y(00 00 00 00 00 00 00 00 06 01 00 2B 01 C5 0B 00 00 DB 6B 02 DD 33 + 02 15 DE 6B 02 DF DD 30 06 43 14 33 02 15 E1 6B 02 E2 DD E3 E4 E5 + E6 2D 06 06 43 14 33 02 15 E7 6B 02 E8 DD E9 99 10 2D 04 06 42 02 + DD AE AE 32 46 16 01 F8 33 02 15 EB 6B 02 EC DD 70 13 33 02 15 EE + 6B 02 33 01 15 EF DD 70 13 63 1B 13 87 01 00 F0 6B 02 DD 94 03 A1 + 5C 78 72 46 33 02 15 83 01 AD 8D 94 69 16 02 F1 6B 02 33 01 15 F2 + DD E9 99 10 6E 04 13 63 1B 13 87 01 00 F3 6B 02 DD 94 03 A1 5C 78 + 72 46 33 02 15 83 01 AD 8D 94 69 16 02 F4 6B 02 F5 F6 DD E9 99 10 + 6E 05 1D 33 02 15 65 1E 6B 02 33 01 15 65 1F 6B 02 AE 6D 20 01 65 + 21 DD E9 65 22 6E 05 1D 33 02 15 19 02) + (0. + #Y(|TOOLS|::|TEST-FIND-STRING-1| + #30Y(00 00 00 00 02 00 00 00 01 18 DA B0 38 02 31 8B AE B0 31 86 AF + 01 02 DB 2D 04 02 9E 19 04) + ("Original: +" + 2. |SYSTEM|::|FORMAT-TERPRI|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |COMMON-LISP|::|*STANDARD-OUTPUT*| + "bla bla foo <= plop gloup => foo +baz bar <=klm poi => boo <=plop=> faz +lab totrs <= plip =>" + #Y(|TOOLS|::|TEST-FIND-STRING-2| + #26Y(00 00 00 00 02 00 00 00 01 18 DA B0 38 02 31 8B AE B0 31 86 AF + 31 8D 9E 19 04) + ("[1] Simple find on '<=': ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + "<=" |TOOLS|::|FIND-STRING| + #Y(|TOOLS|::|TEST-FIND-STRING-3| + #26Y(00 00 00 00 02 00 00 00 01 18 DA B0 38 02 31 8B AE B0 31 86 AF + 31 8D 9E 19 04) + ("[2] Find with start=15/end=50: ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + "<=" :|START| 15. :|END| 50. + #Y(|TOOLS|::|TEST-FIND-STRING-4| + #26Y(00 00 00 00 02 00 00 00 01 18 DA B0 38 02 31 8B AE B0 31 86 AF + 31 8D 9E 19 04) + ("[3] Find with test (ie '<=.*=>'): ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + "<=" :|TEST| |TOOLS|::|MY-FIND-STRING-TEST| + #Y(|TOOLS|::|TEST-FIND-STRING-5| + #26Y(00 00 00 00 02 00 00 00 01 18 DA B0 38 02 31 8B AE B0 31 86 AF + 31 8D 9E 19 04) + ("[4] Find all strings: ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + "<=" |TOOLS|::|FIND-ALL-STRINGS| + #Y(|TOOLS|::|TEST-FIND-STRING-6| + #19Y(00 00 00 00 01 00 00 00 01 17 DA AF 38 02 31 8B 9E 19 03) + ("[5] Find all strings: +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + "<=" + #Y(|TOOLS|::|TEST-FIND-STRING-7| + #26Y(00 00 00 00 02 00 00 00 01 18 DA B0 38 02 31 8B AE B0 31 86 AF + 31 8D 9E 19 04) + ("Found: ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + #Y(|TOOLS|::|TEST-FIND-STRING-8| + #19Y(00 00 00 00 01 00 00 00 01 17 DA AF 38 02 31 8B 9E 19 03) + ("[6] Find all strings with test: +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + "<=" + #Y(|TOOLS|::|TEST-FIND-STRING-9| + #26Y(00 00 00 00 02 00 00 00 01 18 DA B0 38 02 31 8B AE B0 31 86 AF + 31 8D 9E 19 04) + ("Found: ") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + #Y(|TOOLS|::|TEST-FIND-STRING-10| + #23Y(00 00 00 00 02 00 00 00 01 18 DA B0 38 02 31 8B AE B0 31 86 9E + 19 04) + ("[7] Modifie '<=.*=>' with TOTO: +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + "TOTO" "<=" |TOOLS|::|SUBST-STRINGS| + #Y(|TOOLS|::|TEST-FIND-STRING-11| + #16Y(00 00 00 00 01 00 00 00 01 17 AE 31 8D 9E 19 03) () + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + #Y(|TOOLS|::|TEST-FIND-STRING-12| + #26Y(00 00 00 00 02 00 00 00 01 18 DA B0 38 02 31 8B AE B0 31 86 AF + 31 8D 9E 19 04) + ("[8] Modifie '<=.*=>' with a complex expression: +") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + #Y(|TOOLS|::|TEST-FIND-STRING-13| + #83Y(00 00 00 00 03 00 00 00 06 04 DB B0 DC B1 73 02 35 DD B1 73 02 + 35 72 46 70 04 38 02 72 76 69 00 01 32 97 0C 00 01 14 AE 72 49 + DF AF 38 02 31 8B AD AF 31 86 E0 AF 31 8A AF AF 31 86 E1 AF 38 + 02 31 8B AC AF 31 86 E2 AF 38 02 31 8B 16 02 AC 32 77 19 06) + (|COMMON-LISP|::|NIL| " " 2. -2. |COMMON-LISP|::|STRING-TRIM| "<=" + #\: " (" ")=>") + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|STR| |TOOLS|::|POS1| |TOOLS|::|POS2|) + |COMMON-LISP|::|NIL|) + "<=" + #Y(|TOOLS|::|TEST-FIND-STRING-14| + #25Y(00 00 00 00 03 00 00 00 06 04 DA B0 DB B0 2D 04 02 42 02 B0 AD + 40 02 19 06) + ("=>" :|START| |TOOLS|::|FIND-STRING|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|TOOLS|::|STR| |TOOLS|::|POS1| |TOOLS|::|POS2|) + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: tools.fasl ============================================================================== Binary file. No diff available. Added: tools.lib ============================================================================== --- (empty file) +++ tools.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,301 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "COMMON-LISP-USER")) +(|SYSTEM|::|%IN-PACKAGE| "TOOLS" :|NICKNAMES| '|COMMON-LISP|::|NIL| :|USE| + '|COMMON-LISP|::|NIL| :|CASE-SENSITIVE| |COMMON-LISP|::|NIL| :|CASE-INVERTED| + |COMMON-LISP|::|NIL|) +(|COMMON-LISP|::|USE-PACKAGE| '("COMMON-LISP") "TOOLS") +(|SYSTEM|::|INTERN-EXPORT| + '("IT" "AWHEN" "AIF" "DBG" "DBGNL" "SETF/=" "CREATE-SYMBOL" "SPLIT-STRING" + "EXPAND-NEWLINE" "ENSURE-LIST" "ENSURE-PRINTABLE" "FIND-ASSOC-WORD" + "PRINT-SPACE" "ESCAPE-STRING" "FIRST-POSITION" "FIND-FREE-NUMBER" + "DO-EXECUTE" "DO-SHELL" "GETENV" "UQUIT" "URUN-PROG" "USHELL" "USH" + "USHELL-LOOP" "CLDEBUG" "GET-COMMAND-LINE-WORDS" "STRING-TO-LIST" + "NEAR-POSITION" "STRING-TO-LIST-MULTICHAR" "LIST-TO-STRING" + "LIST-TO-STRING-LIST" "CLEAN-STRING" "ONE-IN-LIST" "EXCHANGE-ONE-IN-LIST" + "ROTATE-LIST" "ANTI-ROTATE-LIST" "APPEND-FORMATED-LIST" "SHUFFLE-LIST" + "PARSE-INTEGER-IN-LIST" "CONVERT-TO-NUMBER" "NEXT-IN-LIST" "PREV-IN-LIST" + "FIND-STRING" "FIND-ALL-STRINGS" "SUBST-STRINGS" "TEST-FIND-STRING") + "TOOLS" |COMMON-LISP|::|NIL|) +(|COMMON-LISP|::|FIND-PACKAGE| "TOOLS") +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "TOOLS")) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|TOOLS|::|AWHEN|) +(|SYSTEM|::|%PUTD| '|TOOLS|::|AWHEN| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |TOOLS|::|AWHEN| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 2.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((|TOOLS|::|TEST| + (|COMMON-LISP|::|CADR| . #1=(|SYSTEM|::||))) + (|TOOLS|::|BODY| (|COMMON-LISP|::|CDDR| . #1#))) + (|COMMON-LISP|::|BLOCK| |TOOLS|::|AWHEN| + `(|COMMON-LISP|::|LET| ((|TOOLS|::|IT| ,|TOOLS|::|TEST|)) + (|COMMON-LISP|::|WHEN| |TOOLS|::|IT| ,@|TOOLS|::|BODY|))))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|TOOLS|::|AIF|) +(|SYSTEM|::|%PUTD| '|TOOLS|::|AIF| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |TOOLS|::|AIF| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 3. + 4.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((|TOOLS|::|TEST| + (|COMMON-LISP|::|CADR| . #1=(|SYSTEM|::||))) + (|TOOLS|::|THEN| (|COMMON-LISP|::|CADDR| . #1#)) + (|TOOLS|::|ELSE| (|COMMON-LISP|::|CADDDR| . #1#))) + (|COMMON-LISP|::|BLOCK| |TOOLS|::|AIF| + `(|COMMON-LISP|::|LET| ((|TOOLS|::|IT| ,|TOOLS|::|TEST|)) + (|COMMON-LISP|::|IF| |TOOLS|::|IT| ,|TOOLS|::|THEN| + ,|TOOLS|::|ELSE|))))))))) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |TOOLS|::|*%DBG-NAME%*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |TOOLS|::|*%DBG-COUNT%*|)) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|TOOLS|::|DBG|) +(|SYSTEM|::|%PUTD| '|TOOLS|::|DBG| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |TOOLS|::|DBG| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| (|EXT|::|PROPER-LIST-P| |SYSTEM|::||)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((|TOOLS|::|FORMS| (|COMMON-LISP|::|CDR| |SYSTEM|::||))) + (|COMMON-LISP|::|BLOCK| |TOOLS|::|DBG| + `(|COMMON-LISP|::|PROGN| + ,@(|COMMON-LISP|::|MAPCAR| + #'(|COMMON-LISP|::|LAMBDA| (|TOOLS|::|FORM|) + (|COMMON-LISP|::|TYPECASE| |TOOLS|::|FORM| + (|COMMON-LISP|::|STRING| + `(|COMMON-LISP|::|SETF| |TOOLS|::|*%DBG-NAME%*| + ,|TOOLS|::|FORM|)) + (|COMMON-LISP|::|NUMBER| + `(|COMMON-LISP|::|SETF| |TOOLS|::|*%DBG-COUNT%*| + ,|TOOLS|::|FORM|)))) + |TOOLS|::|FORMS|) + (|COMMON-LISP|::|FORMAT| |COMMON-LISP|::|T| "~&DEBUG[~A - ~A] " + (|COMMON-LISP|::|INCF| |TOOLS|::|*%DBG-COUNT%*|) + |TOOLS|::|*%DBG-NAME%*|) + ,@(|COMMON-LISP|::|MAPCAR| + #'(|COMMON-LISP|::|LAMBDA| (|TOOLS|::|FORM|) + (|COMMON-LISP|::|TYPECASE| |TOOLS|::|FORM| + ((|COMMON-LISP|::|OR| |COMMON-LISP|::|STRING| + |COMMON-LISP|::|NUMBER|) + |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| + `(|COMMON-LISP|::|FORMAT| |COMMON-LISP|::|T| "~A=~S " + ',|TOOLS|::|FORM| ,|TOOLS|::|FORM|)))) + |TOOLS|::|FORMS|) + (|COMMON-LISP|::|FORMAT| |COMMON-LISP|::|T| "~%") + (|COMMON-LISP|::|FORCE-OUTPUT|) ,@|TOOLS|::|FORMS|)))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|TOOLS|::|DBGNL|) +(|SYSTEM|::|%PUTD| '|TOOLS|::|DBGNL| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |TOOLS|::|DBGNL| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| (|EXT|::|PROPER-LIST-P| |SYSTEM|::||)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((|TOOLS|::|FORMS| (|COMMON-LISP|::|CDR| |SYSTEM|::||))) + (|COMMON-LISP|::|BLOCK| |TOOLS|::|DBGNL| + `(|COMMON-LISP|::|PROGN| + ,@(|COMMON-LISP|::|MAPCAR| + #'(|COMMON-LISP|::|LAMBDA| (|TOOLS|::|FORM|) + (|COMMON-LISP|::|TYPECASE| |TOOLS|::|FORM| + (|COMMON-LISP|::|STRING| + `(|COMMON-LISP|::|SETF| |TOOLS|::|*%DBG-NAME%*| + ,|TOOLS|::|FORM|)) + (|COMMON-LISP|::|NUMBER| + `(|COMMON-LISP|::|SETF| |TOOLS|::|*%DBG-COUNT%*| + ,|TOOLS|::|FORM|)))) + |TOOLS|::|FORMS|) + (|COMMON-LISP|::|FORMAT| |COMMON-LISP|::|T| + "~&DEBUG[~A - ~A] --------------------~%" + (|COMMON-LISP|::|INCF| |TOOLS|::|*%DBG-COUNT%*|) + |TOOLS|::|*%DBG-NAME%*|) + ,@(|COMMON-LISP|::|MAPCAR| + #'(|COMMON-LISP|::|LAMBDA| (|TOOLS|::|FORM|) + (|COMMON-LISP|::|TYPECASE| |TOOLS|::|FORM| + ((|COMMON-LISP|::|OR| |COMMON-LISP|::|STRING| + |COMMON-LISP|::|NUMBER|) + |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| + `(|COMMON-LISP|::|FORMAT| |COMMON-LISP|::|T| " - ~A=~S~%" + ',|TOOLS|::|FORM| ,|TOOLS|::|FORM|)))) + |TOOLS|::|FORMS|) + (|COMMON-LISP|::|FORCE-OUTPUT|) ,@|TOOLS|::|FORMS|)))))))) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|TOOLS|::|SETF/=|) +(|SYSTEM|::|%PUTD| '|TOOLS|::|SETF/=| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |TOOLS|::|SETF/=| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + "Set var to val only when var not equal to val" + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| + (|SYSTEM|::|PROPER-LIST-LENGTH-IN-BOUNDS-P| |SYSTEM|::|| 3. + 3.)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((|TOOLS|::|VAR| (|COMMON-LISP|::|CADR| . #1=(|SYSTEM|::||))) + (|TOOLS|::|VAL| (|COMMON-LISP|::|CADDR| . #1#))) + (|COMMON-LISP|::|BLOCK| |TOOLS|::|SETF/=| + (|COMMON-LISP|::|LET| ((|TOOLS|::|GVAL| (|COMMON-LISP|::|GENSYM|))) + `(|COMMON-LISP|::|LET| ((,|TOOLS|::|GVAL| ,|TOOLS|::|VAL|)) + (|COMMON-LISP|::|WHEN| + (|COMMON-LISP|::|/=| ,|TOOLS|::|VAR| ,|TOOLS|::|GVAL|) + (|COMMON-LISP|::|SETF| ,|TOOLS|::|VAR| ,|TOOLS|::|GVAL|))))))))))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|CREATE-SYMBOL| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |TOOLS|::|NAMES|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|SPLIT-STRING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|STRING| |COMMON-LISP|::|&OPTIONAL| + (|TOOLS|::|SEPARATOR| #\ )))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|EXPAND-NEWLINE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|COMMON-LISP|::|LIST|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|ENSURE-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|TOOLS|::|OBJECT|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|ENSURE-PRINTABLE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|STRING| |COMMON-LISP|::|&OPTIONAL| (|TOOLS|::|NEW| #\?)))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|FIND-ASSOC-WORD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|TOOLS|::|WORD| |TOOLS|::|LINE| |COMMON-LISP|::|&OPTIONAL| + (|TOOLS|::|DELIM| #\")))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|PRINT-SPACE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|TOOLS|::|N| |COMMON-LISP|::|&OPTIONAL| + (|COMMON-LISP|::|STREAM| |COMMON-LISP|::|*STANDARD-OUTPUT*|)))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|ESCAPE-STRING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|STRING| |COMMON-LISP|::|&OPTIONAL| + (|TOOLS|::|ESCAPER| '(#\/ #\: #\) #\( #\ #\; #\,)) + (|COMMON-LISP|::|CHAR| #\_)))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|FIRST-POSITION| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|TOOLS|::|WORD| |COMMON-LISP|::|STRING|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|FIND-FREE-NUMBER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|TOOLS|::|L|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|DO-EXECUTE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|TOOLS|::|PROGRAM| |TOOLS|::|ARGS| |COMMON-LISP|::|&OPTIONAL| + (|TOOLS|::|WT| |COMMON-LISP|::|NIL|)))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|DO-SHELL| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|TOOLS|::|PROGRAM| |COMMON-LISP|::|&OPTIONAL| |TOOLS|::|ARGS| + (|TOOLS|::|WT| |COMMON-LISP|::|NIL|)))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|GETENV| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|TOOLS|::|VAR|))) +(|SYSTEM|::|C-DEFUN| '(|COMMON-LISP|::|SETF| |TOOLS|::|GETENV|) + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|TOOLS|::|VAL| |TOOLS|::|VAR|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|UQUIT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|REMOVE-PLIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|TOOLS|::|PLIST| |COMMON-LISP|::|&REST| |TOOLS|::|KEYS|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|URUN-PROG| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|PROG| |COMMON-LISP|::|&REST| |TOOLS|::|OPTS| + |COMMON-LISP|::|&KEY| |TOOLS|::|ARGS| (|TOOLS|::|WAIT| |COMMON-LISP|::|T|) + |COMMON-LISP|::|&ALLOW-OTHER-KEYS|))) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |TOOLS|::|*SHELL-CMD*|)) +(|SYSTEM|::|C-PROCLAIM| '(|COMMON-LISP|::|SPECIAL| |TOOLS|::|*SHELL-CMD-OPT*|)) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|USHELL| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |TOOLS|::|STRINGS|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|USH| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|COMMON-LISP|::|STRING|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|SET-SHELL-DISPATCH| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&OPTIONAL| (|TOOLS|::|SHELL-FUN| '|TOOLS|::|USHELL|)))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|USHELL-LOOP| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&OPTIONAL| (|TOOLS|::|SHELL-FUN| #'|TOOLS|::|USHELL|)))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|CLDEBUG| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|&REST| |COMMON-LISP|::|REST|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|GET-COMMAND-LINE-WORDS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|STRING-TO-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|TOOLS|::|STR| |COMMON-LISP|::|&KEY| (|TOOLS|::|SPLIT-CHAR| #\ )))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|NEAR-POSITION| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|TOOLS|::|CHARS| |TOOLS|::|STR| |COMMON-LISP|::|&KEY| + (|TOOLS|::|START| 0.)))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|STRING-TO-LIST-MULTICHAR| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|TOOLS|::|STR| |COMMON-LISP|::|&KEY| (|TOOLS|::|SPLIT-CHARS| '(#\ )) + (|TOOLS|::|PRESERVE| |COMMON-LISP|::|NIL|)))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|LIST-TO-STRING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|TOOLS|::|LST|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|CLEAN-STRING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|COMMON-LISP|::|STRING|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|ONE-IN-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|TOOLS|::|LST|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|EXCHANGE-ONE-IN-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|TOOLS|::|LST1| |TOOLS|::|LST2|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|ROTATE-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|COMMON-LISP|::|LIST|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|ANTI-ROTATE-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|COMMON-LISP|::|LIST|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|APPEND-FORMATED-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|TOOLS|::|BASE-STR| |TOOLS|::|LST| |COMMON-LISP|::|&KEY| + (|TOOLS|::|TEST-NOT-FUN| + #'(|COMMON-LISP|::|LAMBDA| (|TOOLS|::|X|) |TOOLS|::|X| + |COMMON-LISP|::|NIL|)) + (|TOOLS|::|PRINT-FUN| + #'(|COMMON-LISP|::|LAMBDA| (|TOOLS|::|X|) |TOOLS|::|X|)) + (|TOOLS|::|DEFAULT-STR| "")))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|SHUFFLE-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|COMMON-LISP|::|LIST| |COMMON-LISP|::|&KEY| (|COMMON-LISP|::|TIME| 1.)))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|CONVERT-TO-NUMBER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|TOOLS|::|STR|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|PARSE-INTEGER-IN-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|TOOLS|::|LST|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|NEXT-IN-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|TOOLS|::|ITEM| |TOOLS|::|LST|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|PREV-IN-LIST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|TOOLS|::|ITEM| |TOOLS|::|LST|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|FIND-STRING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|TOOLS|::|SUBSTR| |TOOLS|::|STR| |COMMON-LISP|::|&KEY| + (|TOOLS|::|START| 0.) (|TOOLS|::|END| |COMMON-LISP|::|NIL|) + (|TOOLS|::|TEST| |COMMON-LISP|::|NIL|) + (|TOOLS|::|IGNORE-CASE| |COMMON-LISP|::|NIL|)))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|FIND-ALL-STRINGS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|TOOLS|::|SUBSTR| |TOOLS|::|STR| |COMMON-LISP|::|&KEY| + (|TOOLS|::|START| 0.) (|TOOLS|::|END| |COMMON-LISP|::|NIL|) + (|TOOLS|::|TEST| |COMMON-LISP|::|NIL|) + (|TOOLS|::|IGNORE-CASE| |COMMON-LISP|::|NIL|)))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|SUBST-STRINGS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|TOOLS|::|NEW| |TOOLS|::|SUBSTR| |TOOLS|::|STR| |COMMON-LISP|::|&KEY| + (|TOOLS|::|START| 0.) (|TOOLS|::|END| |COMMON-LISP|::|NIL|) + (|TOOLS|::|TEST| |COMMON-LISP|::|NIL|) + (|TOOLS|::|IGNORE-CASE| |COMMON-LISP|::|NIL|)))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|MY-FIND-STRING-TEST| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|TOOLS|::|STR| |TOOLS|::|POS1| |TOOLS|::|POS2|))) +(|SYSTEM|::|C-DEFUN| '|TOOLS|::|TEST-FIND-STRING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) Added: tools.lisp ============================================================================== --- (empty file) +++ tools.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,749 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Tue Feb 26 21:53:55 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: General tools +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + + +(in-package :common-lisp-user) + +(defpackage tools + (:use common-lisp) + (:export :it + :awhen + :aif + :dbg + :dbgnl + :setf/= + :create-symbol + :split-string + :expand-newline + :ensure-list + :ensure-printable + :find-assoc-word + :print-space + :escape-string + :first-position + :find-free-number + :do-execute + :do-shell + :getenv + :uquit + :urun-prog + :ushell + :ush + :ushell-loop + :cldebug + :get-command-line-words + :string-to-list + :near-position + :string-to-list-multichar + :list-to-string + :list-to-string-list + :clean-string + :one-in-list + :exchange-one-in-list + :rotate-list + :anti-rotate-list + :append-formated-list + :shuffle-list + :parse-integer-in-list + :convert-to-number + :next-in-list :prev-in-list + :find-string + :find-all-strings + :subst-strings + :test-find-string)) + + +(in-package :tools) + + +(setq *random-state* (make-random-state t)) + + + +(defmacro awhen (test &body body) + `(let ((it ,test)) + (when it + , at body))) + +(defmacro aif (test then &optional else) + `(let ((it ,test)) (if it ,then ,else))) + + +;;;,----- +;;;| Debuging tools +;;;`----- +(defvar *%dbg-name%* "dbg") +(defvar *%dbg-count%* 0) + + +(defmacro dbg (&rest forms) + `(progn + ,@(mapcar #'(lambda (form) + (typecase form + (string `(setf *%dbg-name%* ,form)) + (number `(setf *%dbg-count%* ,form)))) + forms) + (format t "~&DEBUG[~A - ~A] " (incf *%dbg-count%*) *%dbg-name%*) + ,@(mapcar #'(lambda (form) + (typecase form + ((or string number) nil) + (t `(format t "~A=~S " ',form ,form)))) + forms) + (format t "~%") + (force-output) + , at forms)) + +(defmacro dbgnl (&rest forms) + `(progn + ,@(mapcar #'(lambda (form) + (typecase form + (string `(setf *%dbg-name%* ,form)) + (number `(setf *%dbg-count%* ,form)))) + forms) + (format t "~&DEBUG[~A - ~A] --------------------~%" (incf *%dbg-count%*) *%dbg-name%*) + ,@(mapcar #'(lambda (form) + (typecase form + ((or string number) nil) + (t `(format t " - ~A=~S~%" ',form ,form)))) + forms) + (force-output) + , at forms)) + + + + + + +;;; Tools + + +(defmacro setf/= (var val) + "Set var to val only when var not equal to val" + (let ((gval (gensym))) + `(let ((,gval ,val)) + (when (/= ,var ,gval) + (setf ,var ,gval))))) + + +(defun create-symbol (&rest names) + "Return a new symbol from names" + (intern (string-upcase (apply #'concatenate 'string names)))) + + +(defun split-string (string &optional (separator #\Space)) + "Return a list from a string splited at each separators" + (loop for i = 0 then (1+ j) + as j = (position separator string :start i) + as sub = (subseq string i j) + unless (string= sub "") collect sub + while j)) + + +(defun expand-newline (list) + "Expand all newline in strings in list" + (let ((acc nil)) + (dolist (l list) + (setf acc (append acc (split-string l #\Newline)))) + acc)) + +(defun ensure-list (object) + "Ensure an object is a list" + (if (listp object) + object + (list object))) + + +(defun ensure-printable (string &optional (new #\?)) + "Ensure a string is printable in ascii" + (substitute-if-not new #'standard-char-p string)) + + + + +(defun find-assoc-word (word line &optional (delim #\")) + "Find a word pair" + (let* ((pos (search word line)) + (pos-1 (position delim line :start (or pos 0))) + (pos-2 (position delim line :start (1+ (or pos-1 0))))) + (when (and pos pos-1 pos-2) + (subseq line (1+ pos-1) pos-2)))) + + +(defun print-space (n &optional (stream *standard-output*)) + "Print n spaces on stream" + (dotimes (i n) + (princ #\Space stream))) + + +(defun escape-string (string &optional (escaper '(#\/ #\: #\) #\( #\Space #\; #\,)) (char #\_)) + "Replace in string all characters found in the escaper list" + (if escaper + (escape-string (substitute char (car escaper) string) (cdr escaper) char) + string)) + + + +(defun first-position (word string) + "Return true only if word is at position 0 in string" + (zerop (or (search word string) -1))) + + +(defun find-free-number (l) ; stolen from stumpwm - thanks + "Return a number that is not in the list l." + (let* ((nums (sort l #'<)) + (new-num (loop for n from 0 to (or (car (last nums)) 0) + for i in nums + when (/= n i) + do (return n)))) + (if new-num + new-num + ;; there was no space between the numbers, so use the last + 1 + (if (car (last nums)) + (1+ (car (last nums))) + 0)))) + + + + + +;;; Shell part (taken from ltk) +(defun do-execute (program args &optional (wt nil)) + "execute program with args a list containing the arguments passed to +the program if wt is non-nil, the function will wait for the execution +of the program to return. + returns a two way stream connected to stdin/stdout of the program" + (let ((fullstring program)) + (dolist (a args) + (setf fullstring (concatenate 'string fullstring " " a))) + #+:cmu (let ((proc (ext:run-program program args :input :stream + :output :stream :wait wt))) + (unless proc + (error "Cannot create process.")) + (make-two-way-stream + (ext:process-output proc) + (ext:process-input proc))) + #+:clisp (let ((proc (ext:run-program program :arguments args + :input :stream :output + :stream :wait (or wt t)))) + (unless proc + (error "Cannot create process.")) + proc) + #+:sbcl (let ((proc (sb-ext:run-program program args :input + :stream :output + :stream :wait wt))) + (unless proc + (error "Cannot create process.")) + (make-two-way-stream + (sb-ext:process-output proc) + (sb-ext:process-input proc))) + #+:lispworks (system:open-pipe fullstring :direction :io) + #+:allegro (let ((proc (excl:run-shell-command + (apply #'vector program program args) + :input :stream :output :stream :wait wt))) + (unless proc + (error "Cannot create process.")) + proc) + #+:ecl(ext:run-program program args :input :stream :output :stream + :error :output) + #+:openmcl (let ((proc (ccl:run-program program args :input + :stream :output + :stream :wait wt))) + (unless proc + (error "Cannot create process.")) + (make-two-way-stream + (ccl:external-process-output-stream proc) + (ccl:external-process-input-stream proc))))) + +(defun do-shell (program &optional args (wt nil)) + (do-execute "/bin/sh" `("-c" ,program , at args) wt)) + + + + + + + +(defun getenv (var) + "Return the value of the environment variable." + #+allegro (sys::getenv (string var)) + #+clisp (ext:getenv (string var)) + #+(or cmu scl) + (cdr (assoc (string var) ext:*environment-list* :test #'equalp + :key #'string)) + #+gcl (si:getenv (string var)) + #+lispworks (lw:environment-variable (string var)) + #+lucid (lcl:environment-variable (string var)) + #+mcl (ccl::getenv var) + #+sbcl (sb-posix:getenv (string var)) + #-(or allegro clisp cmu gcl lispworks lucid mcl sbcl scl) + (error 'not-implemented :proc (list 'getenv var))) + + +(defun (setf getenv) (val var) + "Set an environment variable." + #+allegro (setf (sys::getenv (string var)) (string val)) + #+clisp (setf (ext:getenv (string var)) (string val)) + #+(or cmu scl) + (let ((cell (assoc (string var) ext:*environment-list* :test #'equalp + :key #'string))) + (if cell + (setf (cdr cell) (string val)) + (push (cons (intern (string var) "KEYWORD") (string val)) + ext:*environment-list*))) + #+gcl (si:setenv (string var) (string val)) + #+lispworks (setf (lw:environment-variable (string var)) (string val)) + #+lucid (setf (lcl:environment-variable (string var)) (string val)) + #+sbcl (sb-posix:putenv (format nil "~A=~A" (string var) (string val))) + #-(or allegro clisp cmu gcl lispworks lucid sbcl scl) + (error 'not-implemented :proc (list '(setf getenv) var))) + + + + + + + +(defun uquit () + #+(or clisp cmu) (ext:quit) + #+sbcl (sb-ext:quit) + #+ecl (si:quit) + #+gcl (lisp:quit) + #+lispworks (lw:quit) + #+(or allegro-cl allegro-cl-trial) (excl:exit)) + + + + +(defun remove-plist (plist &rest keys) + "Remove the keys from the plist. +Useful for re-using the &REST arg after removing some options." + (do (copy rest) + ((null (setq rest (nth-value 2 (get-properties plist keys)))) + (nreconc copy plist)) + (do () ((eq plist rest)) + (push (pop plist) copy) + (push (pop plist) copy)) + (setq plist (cddr plist)))) + + + + +(defun urun-prog (prog &rest opts &key args (wait t) &allow-other-keys) + "Common interface to shell. Does not return anything useful." + #+gcl (declare (ignore wait)) + (setq opts (remove-plist opts :args :wait)) + #+allegro (apply #'excl:run-shell-command (apply #'vector prog prog args) + :wait wait opts) + #+(and clisp lisp=cl) + (apply #'ext:run-program prog :arguments args :wait wait opts) + #+(and clisp (not lisp=cl)) + (if wait + (apply #'lisp:run-program prog :arguments args opts) + (lisp:shell (format nil "~a~{ '~a'~} &" prog args))) + #+cmu (apply #'ext:run-program prog args :wait wait :output *standard-output* opts) + #+gcl (apply #'si:run-process prog args) + #+liquid (apply #'lcl:run-program prog args) + #+lispworks (apply #'sys::call-system-showing-output + (format nil "~a~{ '~a'~}~@[ &~]" prog args (not wait)) + opts) + #+lucid (apply #'lcl:run-program prog :wait wait :arguments args opts) + #+sbcl (apply #'sb-ext:run-program prog args :wait wait :output *standard-output* opts) + #-(or allegro clisp cmu gcl liquid lispworks lucid sbcl) + (error 'not-implemented :proc (list 'run-prog prog opts))) + + +;;(defparameter *shell-cmd* "/usr/bin/env") +;;(defparameter *shell-cmd-opt* nil) + +#+UNIX (defparameter *shell-cmd* "/bin/sh") +#+UNIX (defparameter *shell-cmd-opt* '("-c")) + +#+WIN32 (defparameter *shell-cmd* "cmd.exe") +#+WIN32 (defparameter *shell-cmd-opt* '("/C")) + + +(defun ushell (&rest strings) + (urun-prog *shell-cmd* :args (append *shell-cmd-opt* strings))) + +(defun ush (string) + (urun-prog *shell-cmd* :args (append *shell-cmd-opt* (list string)))) + + +(defun set-shell-dispatch (&optional (shell-fun 'ushell)) + (labels ((|shell-reader| (stream subchar arg) + (declare (ignore subchar arg)) + (list shell-fun (read stream t nil t)))) + (set-dispatch-macro-character #\# #\# #'|shell-reader|))) + + +(defun ushell-loop (&optional (shell-fun #'ushell)) + (loop + (format t "UNI-SHELL> ") + (let* ((line (read-line))) + (cond ((zerop (or (search "quit" line) -1)) (return)) + ((zerop (or (position #\! line) -1)) + (funcall shell-fun (subseq line 1))) + (t (format t "~{~A~^ ;~%~}~%" + (multiple-value-list + (ignore-errors (eval (read-from-string line)))))))))) + + + + + + +(defun cldebug (&rest rest) + (princ "DEBUG: ") + (dolist (i rest) + (princ i)) + (terpri)) + + +(defun get-command-line-words () + #+CLISP ext:*args* + #+CMU (nthcdr 3 extensions:*command-line-strings*) + #+SBCL sb-ext:*posix-argv*) + + + +(defun string-to-list (str &key (split-char #\space)) + (do* ((start 0 (1+ index)) + (index (position split-char str :start start) + (position split-char str :start start)) + (accum nil)) + ((null index) + (unless (string= (subseq str start) "") + (push (subseq str start) accum)) + (nreverse accum)) + (when (/= start index) + (push (subseq str start index) accum)))) + + +(defun near-position (chars str &key (start 0)) + (do* ((char chars (cdr char)) + (pos (position (car char) str :start start) + (position (car char) str :start start)) + (ret (when pos pos) + (if pos + (if ret + (if (< pos ret) + pos + ret) + pos) + ret))) + ((null char) ret))) + + +;;;(defun near-position2 (chars str &key (start 0)) +;;; (loop for i in chars +;;; minimize (position i str :start start))) + +;;(format t "~S~%" (near-position '(#\! #\. #\Space #\;) "klmsqk ppii;dsdsqkl.jldfksj lkm" :start 0)) +;;(format t "~S~%" (near-position '(#\Space) "klmsqk ppii;dsdsqkl.jldfksj lkm" :start 0)) +;;(format t "~S~%" (near-position '(#\; #\l #\m) "klmsqk ppii;dsdsqkl.jldfksj lkm" :start 0)) +;;(format t "result=~S~%" (string-to-list-multichar "klmsqk ppii;dsdsqkl.jldfksj lkm" :preserve t)) +;;(format t "result=~S~%" (string-to-list-multichar "klmsqk ppii;dsd!sqkl.jldfksj lkm" +;; :split-chars '(#\k #\! #\. #\; #\m) +;; :preserve nil)) + + +(defun string-to-list-multichar (str &key (split-chars '(#\space)) (preserve nil)) + (do* ((start 0 (1+ index)) + (index (near-position split-chars str :start start) + (near-position split-chars str :start start)) + (accum nil)) + ((null index) + (unless (string= (subseq str start) "") + (push (subseq str start) accum)) + (nreverse accum)) + (let ((retstr (subseq str start (if preserve (1+ index) index)))) + (unless (string= retstr "") + (push retstr accum))))) + + + + + +(defun list-to-string (lst) + (string-trim " () " (format nil "~A" lst))) + + + +(defun clean-string (string) + "Remove Newline and upcase string" + (string-upcase + (string-right-trim '(#\Newline) string))) + +(defun one-in-list (lst) + (nth (random (length lst)) lst)) + +(defun exchange-one-in-list (lst1 lst2) + (let ((elem1 (one-in-list lst1)) + (elem2 (one-in-list lst2))) + (setf lst1 (append (remove elem1 lst1) (list elem2))) + (setf lst2 (append (remove elem2 lst2) (list elem1))) + (values lst1 lst2))) + + +(defun rotate-list (list) + (when list + (append (cdr list) (list (car list))))) + +(defun anti-rotate-list (list) + (when list + (append (last list) (butlast list)))) + + +(defun append-formated-list (base-str + lst + &key (test-not-fun #'(lambda (x) x nil)) + (print-fun #'(lambda (x) x)) + (default-str "")) + (let ((str base-str) (first t)) + (dolist (i lst) + (cond ((funcall test-not-fun i) nil) + (t (setq str + (concatenate 'string str + (if first "" ", ") + (format nil "~A" + (funcall print-fun i)))) + (setq first nil)))) + (if (string= base-str str) + (concatenate 'string str default-str) str))) + + +(defun shuffle-list (list &key (time 1)) + "Shuffle a list by swapping elements time times" + (let ((result (copy-list list)) + (ind1 0) (ind2 0) (swap 0)) + (dotimes (i time) + (setf ind1 (random (length result))) + (setf ind2 (random (length result))) + + (setf swap (nth ind1 result)) + (setf (nth ind1 result) (nth ind2 result)) + (setf (nth ind2 result) swap)) + result)) + + + +(defun convert-to-number (str) + (cond ((stringp str) (parse-integer str :junk-allowed t)) + ((numberp str) str))) + +(defun parse-integer-in-list (lst) + "Convert all integer string in lst to integer" + (mapcar #'(lambda (x) (convert-to-number x)) lst)) + + + +(defun next-in-list (item lst) + (do ((x lst (cdr x))) + ((null x)) + (when (equal item (car x)) + (return (if (cadr x) (cadr x) (car lst)))))) + +(defun prev-in-list (item lst) + (next-in-list item (reverse lst))) + + +;;(defun transfert-stream (in out length &key (bufsize 4096)) +;;;; (ignore-errors +;; (do* ((data (make-array bufsize +;; :element-type (stream-element-type in))) +;; (len 0 (read-sequence data in +;; :start 0 +;; :end (if (> (+ wlen bufsize) length) +;; (- length wlen) +;; bufsize))) +;; (wlen 0 (+ wlen len))) +;; ((>= wlen length) (write-sequence data out :start 0 :end len)) +;; (write-sequence data out :start 0 :end len)));) +;; +;; +;; +;; +;; +;;(defun my-copy-file (in-name out-name) +;; (with-open-file +;; (in in-name :direction :input :element-type '(unsigned-byte 8)) +;; (with-open-file +;; (out out-name :direction :output +;; :if-exists :supersede +;; :element-type '(unsigned-byte 8)) +;; (transfert-stream in out (file-length in))))) + + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ;; +;; Find String part. ;; +;; ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defun find-string (substr str &key (start 0) (end nil) + (test nil) (ignore-case nil)) + "Find substr in str. Return begin and end of substr in str as two values. +Start and end set the findinq region. Ignore-case make find-string case +insensitive. +Test (if needed) must be a function which take str pos1 pos2 and must return +new positions of the substr in str as two values" + (when (and end (>= start end)) + (return-from find-string nil)) + (let ((pos1 (- start 1)) + (pos2 nil) + (len (length substr))) + (when ignore-case + (setq str (string-upcase str) + substr (string-upcase substr))) + (do ((done nil)) + (done (if (functionp test) + (funcall test str pos1 pos2) + (values pos1 pos2))) + (setq pos1 (position (aref substr 0) str :start (+ pos1 1) :end end)) + (unless pos1 + (return-from find-string nil)) + (setq pos2 (string>= str substr :start1 pos1 :end1 end)) + (when (and pos2 (= (- pos2 pos1) len)) + (setq done t))))) + + + +(defun find-all-strings (substr str &key (start 0) (end nil) + (test nil) (ignore-case nil)) + "Find all substr in str. Parameters are the same as find-string. +Return a list with all begin and end positions of substr in str +ie: '((pos1.1 pos1.2) (pos2.1 pos2.2))..." + (do ((pos (multiple-value-list + (find-string substr str :start start :end end + :test test :ignore-case ignore-case)) + (multiple-value-list + (find-string substr str :start (second pos) :end end + :test test :ignore-case ignore-case))) + (accum nil)) + ((equal pos '(nil)) (nreverse accum)) + (push pos accum))) + + + +(defun subst-strings (new substr str &key (start 0) (end nil) + (test nil) (ignore-case nil)) + "Substitute all substr strings in str with new. +New must be a string or a function witch takes str pos1 pos2 +as parameters and return a string to replace substr" + (let ((outstr (subseq str 0 start)) + (pos1 start) + (pos2 0) + (newpos 0)) + (unless end + (setq end (length str))) + (do ((done nil)) + (done outstr) + (multiple-value-setq + (pos2 newpos) + (find-string substr str :start pos1 :end end + :test test :ignore-case ignore-case)) + (if pos2 + (progn + (setq outstr (concatenate 'string + outstr + (subseq str pos1 pos2) + (if (functionp new) + (funcall new str pos2 newpos) + new))) + (setq pos1 (if (and newpos (<= newpos end)) + newpos + end))) + (progn + (setq outstr (concatenate 'string + outstr (subseq str pos1))) + (setq done t)))))) + + + +(defun my-find-string-test (str pos1 pos2) + (multiple-value-bind + (npos1 npos2) + (find-string "=>" str :start pos2) + (declare (ignore npos1)) + (values pos1 npos2))) + + +(defun test-find-string () + (let ((count 0) + (str "bla bla foo <= plop gloup => foo +baz bar <=klm poi => boo <=plop=> faz +lab totrs <= plip =>")) + + (format t "Original:~%~A~2%" str) + (format t "[1] Simple find on '<=': ~A~%" + (multiple-value-list + (find-string "<=" str))) + (format t "[2] Find with start=15/end=50: ~A~%" + (multiple-value-list + (find-string "<=" str :start 15 :end 50))) + + (format t "[3] Find with test (ie '<=.*=>'): ~A~%" + (multiple-value-bind + (pos1 pos2) + (find-string "<=" str :test #'my-find-string-test) + (subseq str pos1 pos2))) + + (format t "[4] Find all strings: ~A~%" + (find-all-strings "<=" str)) + + (format t "[5] Find all strings:~%") + (dolist (pos (find-all-strings "<=" str)) + (format t "Found: ~A~%" + (subseq str (car pos) (second pos)))) + + (format t "[6] Find all strings with test:~%") + (dolist (pos (find-all-strings "<=" str :test #'my-find-string-test)) + (format t "Found: ~A~%" (subseq str (car pos) (second pos)))) + + (format t "[7] Modifie '<=.*=>' with TOTO:~%~A" + (subst-strings "TOTO" "<=" str + :test #'my-find-string-test)) + (format t "~%") + (format t "[8] Modifie '<=.*=>' with a complex expression:~%~A~%" + (subst-strings + #'(lambda (str pos1 pos2) + (let ((repl (string-trim " " + (subseq str (+ pos1 2) (- pos2 2))))) + (format nil "<=~A:~A (~A)=>" + (incf count) + repl + (reverse repl)))) + "<=" str + :test #'(lambda (str pos1 pos2) + (multiple-value-bind + (npos1 npos2) + (find-string "=>" str :start pos2) + (declare (ignore npos1)) + (values pos1 npos2))))))) + + Added: xlib-util.fas ============================================================================== --- (empty file) +++ xlib-util.fas Sat Mar 1 07:36:13 2008 @@ -0,0 +1,576 @@ +(|SYSTEM|::|VERSION| '(20060802.)) +#0Y |CHARSET|::|UTF-8| +#Y(#:|1 28 (IN-PACKAGE :CLFSWM)-1| + #17Y(00 00 00 00 00 00 00 00 00 01 DA 31 E6 0F 01 19 01) + ("CLFSWM" |COMMON-LISP|::|*PACKAGE*|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|31 32 (DEFCONSTANT +WITHDRAWN-STATE+ 0)-2| + #34Y(00 00 00 00 00 00 00 00 00 01 DA 38 01 8D 5E 0B DB DA 71 4E 8E 03 04 DA + DC 30 03 DA DB 32 84 C5 19 01) + (|CLFSWM|::|+WITHDRAWN-STATE+| 0. + (|COMMON-LISP|::|DEFCONSTANT| |CLFSWM|::|+WITHDRAWN-STATE+| 0.) + |SYSTEM|::|CONSTANT-WARNING|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|33 33 (DEFCONSTANT +NORMAL-STATE+ 1)-3| + #34Y(00 00 00 00 00 00 00 00 00 01 DA 38 01 8D 5E 0B DB DA 71 4E 8E 03 04 DA + DC 30 03 DA DB 32 84 C5 19 01) + (|CLFSWM|::|+NORMAL-STATE+| 1. + (|COMMON-LISP|::|DEFCONSTANT| |CLFSWM|::|+NORMAL-STATE+| 1.) + |SYSTEM|::|CONSTANT-WARNING|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|34 34 (DEFCONSTANT +ICONIC-STATE+ 3)-4| + #34Y(00 00 00 00 00 00 00 00 00 01 DA 38 01 8D 5E 0B DB DA 71 4E 8E 03 04 DA + DC 30 03 DA DB 32 84 C5 19 01) + (|CLFSWM|::|+ICONIC-STATE+| 3. + (|COMMON-LISP|::|DEFCONSTANT| |CLFSWM|::|+ICONIC-STATE+| 3.) + |SYSTEM|::|CONSTANT-WARNING|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|37 45 (DEFPARAMETER *WINDOW-EVENTS* '(:STRUCTURE-NOTIFY :PROPERTY-CHANGE :COLORMAP-CHANGE ...) ...)-5| + #26Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 DB DD DE 2D 03 05 C6 + 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*WINDOW-EVENTS*|) + |CLFSWM|::|*WINDOW-EVENTS*| + (:|STRUCTURE-NOTIFY| :|PROPERTY-CHANGE| :|COLORMAP-CHANGE| :|FOCUS-CHANGE| + :|ENTER-WINDOW| :|EXPOSURE|) + |COMMON-LISP|::|VARIABLE| "The events to listen for on managed windows." + |SYSTEM|::|%SET-DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|48 57 (DEFPARAMETER +NETWM-SUPPORTED+ '(:_NET_SUPPORTING_WM_CHECK :_NET_NUMBER_OF_DESKTOPS :_NET_DESKTOP_GEOMETRY ...) ...)-6| + #26Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 DB DD DE 2D 03 05 C6 + 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|+NETWM-SUPPORTED+|) + |CLFSWM|::|+NETWM-SUPPORTED+| + (:|_NET_SUPPORTING_WM_CHECK| :|_NET_NUMBER_OF_DESKTOPS| + :|_NET_DESKTOP_GEOMETRY| :|_NET_DESKTOP_VIEWPORT| :|_NET_CURRENT_DESKTOP| + :|_NET_WM_WINDOW_TYPE| :|_NET_CLIENT_LIST|) + |COMMON-LISP|::|VARIABLE| + "Supported NETWM properties. +Window types are in +WINDOW-TYPES+." + |SYSTEM|::|%SET-DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|59 68 (DEFPARAMETER +NETWM-WINDOW-TYPES+ '(# # # ...) ...)-7| + #26Y(00 00 00 00 00 00 00 00 00 01 DA 31 5A DB DC 31 52 DB DD DE 2D 03 05 C6 + 19 01) + ((|COMMON-LISP|::|SPECIAL| |CLFSWM|::|+NETWM-WINDOW-TYPES+|) + |CLFSWM|::|+NETWM-WINDOW-TYPES+| + ((:|_NET_WM_WINDOW_TYPE_DESKTOP| . :|DESKTOP|) + (:|_NET_WM_WINDOW_TYPE_DOCK| . :|DOCK|) + (:|_NET_WM_WINDOW_TYPE_TOOLBAR| . :|TOOLBAR|) + (:|_NET_WM_WINDOW_TYPE_MENU| . :|MENU|) + (:|_NET_WM_WINDOW_TYPE_UTILITY| . :|UTILITY|) + (:|_NET_WM_WINDOW_TYPE_SPLASH| . :|SPLASH|) + (:|_NET_WM_WINDOW_TYPE_DIALOG| . :|DIALOG|) + (:|_NET_WM_WINDOW_TYPE_NORMAL| . :|NORMAL|)) + |COMMON-LISP|::|VARIABLE| "Alist mapping NETWM window types to keywords." + |SYSTEM|::|%SET-DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|71 77 (DEFMACRO WITH-XLIB-PROTECT (&BODY BODY) ...)-8| + #22Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 6F 03 32 83 C5 19 01) + (|CLFSWM|::|WITH-XLIB-PROTECT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|WITH-XLIB-PROTECT| + #30Y(00 00 00 00 02 00 00 00 00 03 AE 89 00 0B 95 02 DC DD 9F 7A C9 5D + 5D 19 04 AE 2F 01 19 03) + (|EXT|::|PROPER-LIST-P| |SYSTEM|::|MACRO-CALL-ERROR| + |COMMON-LISP|::|HANDLER-CASE| |COMMON-LISP|::|PROGN| + (((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| |XLIB|::|WINDOW-ERROR| + |XLIB|::|DRAWABLE-ERROR|) + (|CLFSWM|::|C|) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |CLFSWM|::|C|))))) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) + |SYSTEM|::|MAKE-MACRO|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|81 88 (DEFUN PARSE-DISPLAY-STRING (DISPLAY) ...)-9| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|PARSE-DISPLAY-STRING| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|PARSE-DISPLAY-STRING| + #49Y(00 00 00 00 01 00 00 00 06 02 DA AE 38 06 72 60 AE DB AE 72 46 AF + 96 02 38 01 72 46 DC AD 38 06 72 60 AD DB AE 72 46 38 04 71 81 AF + AD 40 02 19 07) + (#\: 0. #\.) (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|DISPLAY|) + "Parse an X11 DISPLAY string and return the host and display from it.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|91 95 (DEFUN BANISH-POINTER NIL ...)-10| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|BANISH-POINTER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|BANISH-POINTER| + #37Y(00 00 00 00 00 00 00 00 06 01 6B 00 6B 01 DC AD DD 81 2F 00 72 98 + 6B 01 DC AD DE 81 2F 00 72 98 2D 03 05 19 01) + (|CLFSWM|::|*ROOT*| |CLFSWM|::|*SCREEN*| |XLIB|::|SCREEN| 2. 3. + |XLIB|::|WARP-POINTER|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Move the pointer to the lower right corner of the screen")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|101 103 (DEFUN WINDOW-STATE (WIN) ...)-11| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|WINDOW-STATE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|WINDOW-STATE| + #17Y(00 00 00 00 01 00 00 00 06 02 AD DA 30 01 5B 19 02) + (:|WM_STATE| |XLIB|::|GET-PROPERTY|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WIN|) + "Get the state (iconic, normal, withdraw of a window.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|106 112 (DEFUN SET-WINDOW-STATE (WIN STATE) ...)-12| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SET-WINDOW-STATE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SET-WINDOW-STATE| + #22Y(00 00 00 00 02 00 00 00 06 03 AE DA AF 7B 01 DA DB 2D 05 02 19 03) + (:|WM_STATE| 32. |XLIB|::|CHANGE-PROPERTY|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WIN| |CLFSWM|::|STATE|) + "Set the state (iconic, normal, withdrawn) of a window.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|114 114 (DEFSETF WINDOW-STATE SET-WINDOW-STATE)-13| + #42Y(00 00 00 00 00 00 00 00 00 01 DA DB 32 8A DA DC DA DD 38 01 8F 85 01 C8 + 14 2D 03 04 DA DD DF 32 89 DA E0 63 2D 03 07 C5 19 01) + (|CLFSWM|::|WINDOW-STATE| |SYSTEM|::|DEFSTRUCT-WRITER| + |COMMON-LISP|::|DEFSETF| |SYSTEM|::|SETF-EXPANDER| + |SYSTEM|::|CHECK-REDEFINITION| |CLFSWM|::|SET-WINDOW-STATE| + |COMMON-LISP|::|SETF| |SYSTEM|::|%SET-DOCUMENTATION|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|118 119 (DEFUN WINDOW-HIDDEN-P (WINDOW) ...)-14| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|WINDOW-HIDDEN-P| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|WINDOW-HIDDEN-P| + #17Y(00 00 00 00 01 00 00 00 06 02 AD 6F 00 C6 5A 19 02) + (|CLFSWM|::|WINDOW-STATE| #.|CLFSWM|::|+ICONIC-STATE+|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|123 128 (DEFUN UNHIDE-WINDOW (WINDOW) ...)-15| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|UNHIDE-WINDOW| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNHIDE-WINDOW| + #68Y(02 00 01 00 01 00 00 00 06 02 00 2B 01 7F 02 00 00 1F 2F 9D 2B 01 + 00 0B 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 57 03 B0 36 00 16 + 06 1B 10 58 67 00 00 01 76 00 AD 36 01 18 02 01 19 02 00 4D 19 04 + 19 03) + (#(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|UNHIDE-WINDOW-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|UNHIDE-WINDOW-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|UNHIDE-WINDOW-2| + #37Y(00 00 00 00 00 00 00 00 06 01 69 01 01 2F 01 69 01 01 DC 30 03 + 69 01 01 6B 04 AD DF AE 6F 06 2D 03 07 15 19 02) + (|COMMON-LISP|::|NIL| |XLIB|::|MAP-WINDOW| + #.|CLFSWM|::|+NORMAL-STATE+| |CLFSWM|::|SET-WINDOW-STATE| + |CLFSWM|::|*WINDOW-EVENTS*| 11. |XLIB|::|ENCODE-EVENT-MASK| + |XLIB|::|CHANGE-WINDOW-ATTRIBUTE|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| |XLIB|::|WINDOW-ERROR| + |XLIB|::|DRAWABLE-ERROR|) + 37.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|143 250 (DEFUN HIDE-WINDOW (WINDOW) ...)-16| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|HIDE-WINDOW| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|HIDE-WINDOW| + #68Y(02 00 01 00 01 00 00 00 06 02 00 2B 01 7F 02 00 00 1F 2F 9D 2B 01 + 00 0B 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 57 03 B0 36 00 16 + 06 1B 10 58 67 00 00 01 76 00 AD 36 01 18 02 01 19 02 00 4D 19 04 + 19 03) + (#(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|HIDE-WINDOW-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|HIDE-WINDOW-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|HIDE-WINDOW-2| + #57Y(00 00 00 00 00 00 00 00 06 01 69 01 01 DB 30 02 69 01 01 DD 6B + 04 38 07 72 4F AD DF AE 6F 06 2D 03 07 16 02 69 01 01 2F 08 69 + 01 01 6B 04 AD DF AE 6F 06 2D 03 07 15 19 02) + (|COMMON-LISP|::|NIL| #.|CLFSWM|::|+ICONIC-STATE+| + |CLFSWM|::|SET-WINDOW-STATE| :|STRUCTURE-NOTIFY| + |CLFSWM|::|*WINDOW-EVENTS*| 11. |XLIB|::|ENCODE-EVENT-MASK| + |XLIB|::|CHANGE-WINDOW-ATTRIBUTE| |XLIB|::|UNMAP-WINDOW|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| |XLIB|::|WINDOW-ERROR| + |XLIB|::|DRAWABLE-ERROR|) + 37.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|254 270 (DEFUN WINDOW-TYPE (WINDOW) ...)-17| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|WINDOW-TYPE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|WINDOW-TYPE| + #127Y(00 00 00 00 01 00 00 00 06 02 AD 6F 00 93 00 12 DB AD DC 8E 2F 0C + DB AD DD 8E 2F 06 DB AD DE 8F 2F 19 16 01 1C 1E AD E1 70 08 92 00 + 1A 16 01 1E 80 4B AD E6 8A 08 80 42 D3 19 02 DB AD DF 32 2F 16 01 + 1D 62 CB 19 02 14 63 1B 23 6B 09 AD 70 0A 6B 0B 38 03 31 BD 5C 16 + 03 1E 22 1B 55 87 01 00 6B 09 AD 70 0A 6B 0B 38 03 8C BD 5F 83 01 + AD 8D 94 6B 00 16 03 1E 06 1B FF B8 D2 19 02 19 02) + (|XLIB|::|WM-NORMAL-HINTS| |XLIB|::|WM-SIZE-HINTS| 9. 10. 13. 14. + :|MAXSIZE| :|_NET_WM_WINDOW_TYPE| |XLIB|::|GET-PROPERTY| + |CLFSWM|::|*DISPLAY*| |XLIB|::|ATOM-NAME| + |CLFSWM|::|+NETWM-WINDOW-TYPES+| :|WM_TRANSIENT_FOR| :|TRANSIENT| + :|NORMAL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW|) + "Return one of :desktop, :dock, :toolbar, :utility, :splash, +:dialog, :transient, :maxsize and :normal.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|276 290 (DEFUN SEND-CONFIGURATION-NOTIFY (WINDOW) ...)-18| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SEND-CONFIGURATION-NOTIFY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SEND-CONFIGURATION-NOTIFY| + #55Y(00 00 00 00 01 00 00 00 06 02 AD DA DA B0 6F 01 2D 04 02 42 02 AF + DD DE 6F 05 E0 B3 E1 B5 E2 B5 E3 B6 E4 63 E5 BD 6F 0C E7 BF 6F 0E + E9 C1 6F 10 EB 63 2D 15 12 19 04) + (0. |XLIB|::|DRAWABLE-ROOT| |XLIB|::|TRANSLATE-COORDINATES| + :|CONFIGURE-NOTIFY| :|STRUCTURE-NOTIFY| |XLIB|::|MAKE-EVENT-MASK| + :|EVENT-WINDOW| :|WINDOW| :|X| :|Y| :|OVERRIDE-REDIRECT-P| + :|BORDER-WIDTH| |XLIB|::|DRAWABLE-BORDER-WIDTH| :|WIDTH| + |XLIB|::|DRAWABLE-WIDTH| :|HEIGHT| |XLIB|::|DRAWABLE-HEIGHT| + :|PROPAGATE-P| |XLIB|::|SEND-EVENT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW|) + "Send a synthetic configure notify event to the given window (ICCCM 4.1.5)")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|293 300 (DEFUN SEND-CLIENT-MESSAGE (WINDOW TYPE &REST ...) ...)-19| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|SEND-CLIENT-MESSAGE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|SEND-CLIENT-MESSAGE| + #26Y(00 00 00 00 02 00 00 00 07 18 AF DA 63 DB B3 DC B4 DD DE DF B7 2D + 0B 06 19 04) + (:|CLIENT-MESSAGE| :|WINDOW| :|TYPE| :|FORMAT| 32. :|DATA| + |XLIB|::|SEND-EVENT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW| |COMMON-LISP|::|TYPE| |COMMON-LISP|::|&REST| + |CLFSWM|::|DATA|) + "Send a client message to a client's window.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|306 312 (DEFUN RAISE-WINDOW (WINDOW) ...)-20| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|RAISE-WINDOW| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|RAISE-WINDOW| + #68Y(02 00 01 00 01 00 00 00 06 02 00 2B 01 7F 02 00 00 1F 2F 9D 2B 01 + 00 0B 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 57 03 B0 36 00 16 + 06 1B 10 58 67 00 00 01 76 00 AD 36 01 18 02 01 19 02 00 4D 19 04 + 19 03) + (#(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|RAISE-WINDOW-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|RAISE-WINDOW-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|RAISE-WINDOW-2| + #32Y(00 00 00 00 00 00 00 00 06 01 69 01 01 89 01 05 69 01 01 2F 02 + 69 01 01 DD AD 63 2D 03 04 19 02) + (|COMMON-LISP|::|NIL| |CLFSWM|::|WINDOW-HIDDEN-P| + |CLFSWM|::|UNHIDE-WINDOW| :|TOP-IF| |XLIB|::|SET-WINDOW-PRIORITY|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| |XLIB|::|WINDOW-ERROR| + |XLIB|::|DRAWABLE-ERROR|) + 37.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW|) + "Map the window if needed and bring it to the top of the stack. Does not affect focus.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|314 319 (DEFUN FOCUS-WINDOW (WINDOW) ...)-21| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|FOCUS-WINDOW| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|FOCUS-WINDOW| + #68Y(02 00 01 00 01 00 00 00 06 02 00 2B 01 7F 02 00 00 1F 2F 9D 2B 01 + 00 0B 00 00 4B 00 21 B0 AF 6D 01 02 B1 6D 02 01 57 03 B0 36 00 16 + 06 1B 10 58 67 00 00 01 76 00 AD 36 01 18 02 01 19 02 00 4D 19 04 + 19 03) + (#(|COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|FOCUS-WINDOW-1| + #18Y(00 00 00 00 00 00 00 00 06 01 2A 14 DB 2C 02 02 19 01) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| + #Y(|CLFSWM|::|FOCUS-WINDOW-1-1| + #17Y(00 00 00 00 01 00 00 00 06 02 9E 0C 00 01 4E 01 00) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CONDITION|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + #Y(|CLFSWM|::|FOCUS-WINDOW-2| + #26Y(00 00 00 00 00 00 00 00 06 01 69 01 01 2F 01 6B 02 69 01 01 DD + 2D 03 04 19 01) + (|COMMON-LISP|::|NIL| |CLFSWM|::|RAISE-WINDOW| |CLFSWM|::|*DISPLAY*| + :|PARENT| |XLIB|::|SET-INPUT-FOCUS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + (#((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| |XLIB|::|WINDOW-ERROR| + |XLIB|::|DRAWABLE-ERROR|) + 37.) + 1. . 1.)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW|) "Give the window focus.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|320 329 (DEFUN NO-FOCUS NIL ...)-22| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|NO-FOCUS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|NO-FOCUS| + #20Y(00 00 00 00 00 00 00 00 06 01 6B 00 6B 01 DC 2D 03 03 19 01) + (|CLFSWM|::|*DISPLAY*| |CLFSWM|::|*NO-FOCUS-WINDOW*| :|POINTER-ROOT| + |XLIB|::|SET-INPUT-FOCUS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "don't focus any window but still read keyboard events.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|334 372 (LET (# # #) (LABELS # # ...))-23| + #76Y(00 00 00 00 00 00 00 00 00 01 00 2B 03 00 0B 00 00 0B 00 01 0B 00 02 9D + 2B 01 AC 2C 00 01 0B 00 00 DB 2F 02 DB AD 6D 03 01 32 83 DE 2F 02 DE AD + 6D 05 01 32 83 E0 2F 02 E0 AD 6D 07 01 32 83 E2 2F 02 E2 AD 6D 09 01 32 + 83 CD 19 03) + (#Y(|CLFSWM|::|FREE-GRAB-POINTER| + #45Y(00 00 00 00 00 00 00 00 06 01 07 01 02 1C 0E 07 01 01 1F 17 14 2F + 02 00 0C 01 01 19 01 14 2F 01 00 0C 01 02 07 01 01 1F 02 1B 69 19 + 01) + (|COMMON-LISP|::|NIL| |XLIB|::|FREE-CURSOR| |XLIB|::|CLOSE-FONT|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + |CLFSWM|::|XGRAB-INIT-POINTER| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|XGRAB-INIT-POINTER| + #16Y(00 00 00 00 00 00 00 00 06 01 00 0C 01 03 19 01) + (|COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + |CLFSWM|::|XGRAB-POINTER-P| + #Y(|CLFSWM|::|XGRAB-POINTER-P| + #15Y(00 00 00 00 00 00 00 00 06 01 07 01 03 19 01) + (|COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + |CLFSWM|::|XGRAB-POINTER| + #Y(|CLFSWM|::|XGRAB-POINTER| + #90Y(00 00 00 00 03 00 02 00 06 0F 3B 02 02 C6 FA 3D 01 07 00 01 34 02 + 0C 01 03 DC DD DE DD DF DD 6E 06 06 DC E1 DE E1 DF E1 6E 06 06 6B + 08 E3 30 0A 0C 01 01 E5 69 01 01 E6 B5 E7 69 01 01 E8 B8 E9 B5 EA + B8 2D 0C 11 0C 01 02 B3 B1 EC B2 ED 63 EE 63 EF 69 01 02 2D 0A 16 + 19 08) + (|COMMON-LISP|::|NIL| + #1=(:|ENTER-WINDOW| :|POINTER-MOTION| :|BUTTON-PRESS| + :|BUTTON-RELEASE|) + :|RED| 1.0f0 :|GREEN| :|BLUE| |XLIB|::|MAKE-COLOR| 0.0f0 + |CLFSWM|::|*DISPLAY*| "cursor" |XLIB|::|OPEN-FONT| :|SOURCE-FONT| + :|SOURCE-CHAR| :|MASK-FONT| :|MASK-CHAR| :|FOREGROUND| :|BACKGROUND| + |XLIB|::|CREATE-GLYPH-CURSOR| :|OWNER-P| :|SYNC-KEYBOARD-P| + :|SYNC-POINTER-P| :|CURSOR| |XLIB|::|GRAB-POINTER|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|ROOT| |CLFSWM|::|CURSOR-CHAR| |CLFSWM|::|CURSOR-MASK-CHAR| + |COMMON-LISP|::|&OPTIONAL| (|CLFSWM|::|POINTER-MASK| '#1#) + |CLFSWM|::|OWNER-P|) + "Grab the pointer and set the pointer shape.") + |CLFSWM|::|XUNGRAB-POINTER| + #Y(|CLFSWM|::|XUNGRAB-POINTER| + #24Y(00 00 00 00 00 00 00 00 06 01 00 0C 01 03 6B 01 2F 02 07 00 01 34 + 19 01) + (|COMMON-LISP|::|NIL| |CLFSWM|::|*DISPLAY*| |XLIB|::|UNGRAB-POINTER|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + "Remove the grab on the cursor and restore the cursor shape.")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|375 388 (LET (#) (DEFUN XGRAB-INIT-KEYBOARD NIL ...) ...)-24| + #60Y(00 00 00 00 00 00 00 00 00 01 00 2B 01 00 0B 00 00 DA 2F 01 DA AD 6D 02 + 01 32 83 DD 2F 01 DD AD 6D 04 01 32 83 DF 2F 01 DF AD 6D 06 01 32 83 E1 + 2F 01 E1 AD 6D 08 01 32 83 CC 19 02) + (|CLFSWM|::|XGRAB-INIT-KEYBOARD| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|XGRAB-INIT-KEYBOARD| + #16Y(00 00 00 00 00 00 00 00 06 01 00 0C 00 01 19 01) + (|COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|NIL| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|) + |CLFSWM|::|XGRAB-KEYBOARD-P| + #Y(|CLFSWM|::|XGRAB-KEYBOARD-P| + #15Y(00 00 00 00 00 00 00 00 06 01 07 00 01 19 01) + (|COMMON-LISP|::|NIL|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|NIL| |COMMON-LISP|::|NIL|) () + |COMMON-LISP|::|NIL|) + |CLFSWM|::|XGRAB-KEYBOARD| + #Y(|CLFSWM|::|XGRAB-KEYBOARD| + #26Y(00 00 00 00 01 00 00 00 06 02 02 0C 00 01 AD DB 63 DC 63 DD 63 2D + 07 04 19 02) + (|COMMON-LISP|::|NIL| :|OWNER-P| :|SYNC-KEYBOARD-P| :|SYNC-POINTER-P| + |XLIB|::|GRAB-KEYBOARD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|ROOT|) |COMMON-LISP|::|NIL|) + |CLFSWM|::|XUNGRAB-KEYBOARD| + #Y(|CLFSWM|::|XUNGRAB-KEYBOARD| + #20Y(00 00 00 00 00 00 00 00 06 01 00 0C 00 01 6B 01 2F 02 19 01) + (|COMMON-LISP|::|NIL| |CLFSWM|::|*DISPLAY*| |XLIB|::|UNGRAB-KEYBOARD|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|393 394 (DEFUN STOP-BUTTON-EVENT NIL ...)-25| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|STOP-BUTTON-EVENT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|STOP-BUTTON-EVENT| + #17Y(00 00 00 00 00 00 00 00 06 01 6B 00 DB 30 02 19 01) + (|CLFSWM|::|*DISPLAY*| :|SYNC-POINTER| |XLIB|::|ALLOW-EVENTS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|396 397 (DEFUN REPLAY-BUTTON-EVENT NIL ...)-26| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|REPLAY-BUTTON-EVENT| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|REPLAY-BUTTON-EVENT| + #17Y(00 00 00 00 00 00 00 00 06 01 6B 00 DB 30 02 19 01) + (|CLFSWM|::|*DISPLAY*| :|REPLAY-POINTER| |XLIB|::|ALLOW-EVENTS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|400 401 (DEFUN UNGRAB-ALL-BUTTONS (WINDOW) ...)-27| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|UNGRAB-ALL-BUTTONS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|UNGRAB-ALL-BUTTONS| + #19Y(00 00 00 00 01 00 00 00 06 02 AD DA DB DA 2D 04 02 19 02) + (:|ANY| :|MODIFIERS| |XLIB|::|UNGRAB-BUTTON|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|403 409 (DEFUN GRAB-ALL-BUTTONS (WINDOW) ...)-28| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GRAB-ALL-BUTTONS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GRAB-ALL-BUTTONS| + #29Y(00 00 00 00 01 00 00 00 06 02 AD 2F 00 AD DB DC DD DB DE 63 DF 64 + E0 63 2D 0B 07 19 02) + (|CLFSWM|::|UNGRAB-ALL-BUTTONS| :|ANY| (:|BUTTON-PRESS|) :|MODIFIERS| + :|OWNER-P| :|SYNC-POINTER-P| :|SYNC-KEYBOARD-P| |XLIB|::|GRAB-BUTTON|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|WINDOW|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|413 414 (DEFUN GET-COLOR (COLOR) ...)-29| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|GET-COLOR| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|GET-COLOR| + #23Y(00 00 00 00 01 00 00 00 06 02 6B 00 DB AD DC 81 2F 00 AE 30 03 19 + 02) + (|CLFSWM|::|*SCREEN*| |XLIB|::|SCREEN| 9. |XLIB|::|ALLOC-COLOR|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|COLOR|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|419 450 (DEFUN MY-CHARACTER->KEYSYMS (CH) ...)-30| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|MY-CHARACTER->KEYSYMS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|MY-CHARACTER->KEYSYMS| + #108Y(00 00 00 00 01 00 00 00 06 02 DA 8D 50 03 AD 2F 00 9E 26 01 80 44 + C7 1B 80 4D C8 1B 80 49 C9 1B 80 45 CA 1B 80 41 CB 1B 3E CC 1B 3B + CD 1B 38 CE 1B 35 CF 1B 32 D0 1B 2F D1 1B 2C D2 1B 29 D3 1B 26 D4 + 1B 23 D5 1B 20 ED AE 33 01 1D EB AE 71 28 EC 91 02 2F 72 AD 31 28 + 1B 0D AD 8E 1E 6E AD EE EF 70 16 F1 2D 03 18 14 61 01 19 02) + (|XLIB|::|CHARACTER->KEYSYMS| + #S(|COMMON-LISP|::|HASH-TABLE| :|TEST| |EXT|::|STABLEHASH-EQ| + (:|RIGHT-HYPER| . 48.) (:|LEFT-HYPER| . 45.) (:|RIGHT-SUPER| . 42.) + (:|LEFT-SUPER| . 39.) (:|RIGHT-ALT| . 36.) (:|LEFT-ALT| . 33.) + (:|RIGHT-META| . 30.) (:|LEFT-META| . 27.) (:|SHIFT-LOCK| . 24.) + (:|CAPS-LOCK| . 21.) (:|RIGHT-CONTROL| . 18.) + (:|LEFT-CONTROL| . 14.) (:|RIGHT-SHIFT| . 10.) (:|LEFT-SHIFT| . 6.) + (:|CHARACTER-SET-SWITCH| . 2.)) + 65406. 65505. 65506. 65507. 65508. 65509. 65510. 65511. 65512. 65513. + 65514. 65515. 65516. 65517. 65518. 31. 256. + "Don't know how to get keysym from ~A" |CLFSWM|::|CH| + (|COMMON-LISP|::|CHARACTER|) |SYSTEM|::|TYPECASE-ERROR-STRING| + (|COMMON-LISP|::|OR| |COMMON-LISP|::|CHARACTER|) + |SYSTEM|::|ETYPECASE-FAILED|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CH|) "Convert a char to a keysym")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|454 456 (DEFUN CHAR->KEYCODE (CHAR) ...)-31| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|CHAR->KEYCODE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|CHAR->KEYCODE| + #20Y(00 00 00 00 01 00 00 00 06 02 6B 00 AE 2F 01 78 30 02 19 02) + (|CLFSWM|::|*DISPLAY*| |CLFSWM|::|MY-CHARACTER->KEYSYMS| + |XLIB|::|KEYSYM->KEYCODES|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|COMMON-LISP|::|CHAR|) "Convert a character to a keycode")) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|459 460 (DEFUN KEYCODE->CHAR (CODE STATE) ...)-32| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|KEYCODE->CHAR| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|KEYCODE->CHAR| + #25Y(00 00 00 00 02 00 00 00 06 03 6B 00 6B 00 B0 DB 6E 03 02 AF 2D 03 + 03 19 03) + (|CLFSWM|::|*DISPLAY*| 0. |XLIB|::|KEYCODE->KEYSYM| + |XLIB|::|KEYSYM->CHARACTER|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|CODE| |CLFSWM|::|STATE|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|462 463 (DEFUN MODIFIERS->STATE (MODIFIER-LIST) ...)-33| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|MODIFIERS->STATE| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|MODIFIERS->STATE| + #16Y(00 00 00 00 01 00 00 00 06 02 99 00 9F 9B 00 02) + (|XLIB|::|MAKE-STATE-MASK|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|MODIFIER-LIST|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|465 466 (DEFUN STATE->MODIFIERS (STATE) ...)-34| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|STATE->MODIFIERS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|STATE->MODIFIERS| + #15Y(00 00 00 00 01 00 00 00 06 02 AD 2F 00 19 02) + (|XLIB|::|MAKE-STATE-KEYS|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) + (|CLFSWM|::|STATE|) |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|471 483 (DEFUN WAIT-NO-KEY-OR-BUTTON-PRESS NIL ...)-35| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|WAIT-NO-KEY-OR-BUTTON-PRESS| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|WAIT-NO-KEY-OR-BUTTON-PRESS| + #205Y(04 00 01 00 00 00 00 00 06 01 6B 00 6F 01 DC 63 1B 80 79 02 16 03 + 1B 80 7E 00 16 02 1B 80 A2 6B 00 AC 2F 05 42 04 AF A0 13 67 00 00 + 04 DC 64 67 00 00 01 2D 04 06 42 02 93 01 5E 64 53 23 6B 07 E2 B2 + E3 32 2F 5F 14 9D 26 0A 80 64 67 02 01 04 2F 0B 02 16 01 56 16 03 + 1B 80 66 16 02 7D 02 3E 54 67 03 00 04 67 00 00 02 64 67 03 00 01 + 67 03 00 00 67 00 00 00 2D 06 0C 55 16 03 1B FF AA AE AE 82 01 01 + 00 14 8F 92 FF 89 85 01 AD AF 72 48 91 01 32 6B 00 16 03 14 6B 03 + 2F 04 42 05 15 16 03 F8 72 93 92 01 04 93 00 FF 74 16 02 1B FF 5A + 63 93 00 FF A6 67 02 01 04 2F 0B 15 16 01 56 16 03 11 18 01 00 16 + 05 1C FF 55 00 19 03) + (|CLFSWM|::|*DISPLAY*| |XLIB|::|QUERY-KEYMAP| 0. |CLFSWM|::|*ROOT*| + |XLIB|::|QUERY-POINTER| |XLIB|::|EVENT-LOOP-SETUP| + |XLIB|::|EVENT-LOOP-STEP-BEFORE| |XLIB|::|*EVENT-KEY-VECTOR*| + |XLIB|::|REPLY-BUFFER| 1. + #S(|COMMON-LISP|::|HASH-TABLE| :|TEST| |EXT|::|STABLEHASH-EQ| + (:|BUTTON-RELEASE| . 2.) (:|BUTTON-PRESS| . 2.) (:|KEY-PRESS| . 2.) + (:|MOTION-NOTIFY| . 2.)) + |XLIB|::|DISCARD-CURRENT-EVENT| |XLIB|::|EVENT-LOOP-STEP-AFTER|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) +#Y(#:|487 490 (DEFUN COMPRESS-MOTION-NOTIFY NIL ...)-36| + #20Y(00 00 00 00 00 00 00 00 00 01 DA 2F 01 DA DC 32 83 C5 19 01) + (|CLFSWM|::|COMPRESS-MOTION-NOTIFY| |SYSTEM|::|REMOVE-OLD-DEFINITIONS| + #Y(|CLFSWM|::|COMPRESS-MOTION-NOTIFY| + #118Y(04 00 01 00 00 00 00 00 06 01 0E 00 1F 80 65 6B 01 AC 2F 02 42 04 + AF A0 13 1B 2A 63 AD 40 02 16 02 1B 80 4A 16 01 7D 02 3E 54 67 03 + 00 04 67 00 00 02 63 67 03 00 01 67 03 00 00 67 00 00 00 2D 06 0A + 55 16 03 67 00 00 04 DD 64 67 00 00 01 2D 04 04 42 02 93 01 44 64 + 53 50 6B 05 E0 B2 E1 32 2F 5F 14 AC 25 08 FF BC 02 16 01 56 16 03 + 11 18 01 00 19 06 19 01) + (|CLFSWM|::|*HAVE-TO-COMPRESS-NOTIFY*| |CLFSWM|::|*DISPLAY*| + |XLIB|::|EVENT-LOOP-SETUP| 0. |XLIB|::|EVENT-LOOP-STEP-BEFORE| + |XLIB|::|*EVENT-KEY-VECTOR*| |XLIB|::|REPLY-BUFFER| 1. :|MOTION-NOTIFY| + |XLIB|::|DISCARD-CURRENT-EVENT| |XLIB|::|EVENT-LOOP-STEP-AFTER|) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|) () + |COMMON-LISP|::|NIL|)) + (|COMMON-LISP|::|T| |COMMON-LISP|::|T| |COMMON-LISP|::|T|)) Added: xlib-util.fasl ============================================================================== Binary file. No diff available. Added: xlib-util.lib ============================================================================== --- (empty file) +++ xlib-util.lib Sat Mar 1 07:36:13 2008 @@ -0,0 +1,119 @@ +#0Y |CHARSET|::|UTF-8| +(|COMMON-LISP|::|SETQ| |COMMON-LISP|::|*PACKAGE*| + (|SYSTEM|::|%FIND-PACKAGE| "CLFSWM")) +(|SYSTEM|::|C-PROCLAIM-CONSTANT| '|CLFSWM|::|+WITHDRAWN-STATE+| '0.) +(|SYSTEM|::|C-PROCLAIM-CONSTANT| '|CLFSWM|::|+NORMAL-STATE+| '1.) +(|SYSTEM|::|C-PROCLAIM-CONSTANT| '|CLFSWM|::|+ICONIC-STATE+| '3.) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|*WINDOW-EVENTS*|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|+NETWM-SUPPORTED+|)) +(|SYSTEM|::|C-PROCLAIM| + '(|COMMON-LISP|::|SPECIAL| |CLFSWM|::|+NETWM-WINDOW-TYPES+|)) +(|SYSTEM|::|REMOVE-OLD-DEFINITIONS| '|CLFSWM|::|WITH-XLIB-PROTECT|) +(|SYSTEM|::|%PUTD| '|CLFSWM|::|WITH-XLIB-PROTECT| + (|SYSTEM|::|MAKE-MACRO| + (|COMMON-LISP|::|FUNCTION| |CLFSWM|::|WITH-XLIB-PROTECT| + (|COMMON-LISP|::|LAMBDA| (|SYSTEM|::|| |SYSTEM|::||) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|CONS| |SYSTEM|::||)) + (|COMMON-LISP|::|DECLARE| (|COMMON-LISP|::|IGNORE| |SYSTEM|::||)) + "Prevent Xlib errors" + (|COMMON-LISP|::|IF| + (|COMMON-LISP|::|NOT| (|EXT|::|PROPER-LIST-P| |SYSTEM|::||)) + (|SYSTEM|::|MACRO-CALL-ERROR| |SYSTEM|::||) + (|COMMON-LISP|::|LET*| + ((|CLFSWM|::|BODY| (|COMMON-LISP|::|CDR| |SYSTEM|::||))) + (|COMMON-LISP|::|BLOCK| |CLFSWM|::|WITH-XLIB-PROTECT| + `(|COMMON-LISP|::|HANDLER-CASE| + (|COMMON-LISP|::|PROGN| ,@|CLFSWM|::|BODY|) + ((|COMMON-LISP|::|OR| |XLIB|::|MATCH-ERROR| |XLIB|::|WINDOW-ERROR| + |XLIB|::|DRAWABLE-ERROR|) + (|CLFSWM|::|C|) + (|COMMON-LISP|::|DECLARE| + (|COMMON-LISP|::|IGNORE| |CLFSWM|::|C|))))))))))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|PARSE-DISPLAY-STRING| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|DISPLAY|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|BANISH-POINTER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|WINDOW-STATE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WIN|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SET-WINDOW-STATE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WIN| |CLFSWM|::|STATE|))) +(|COMMON-LISP|::|LET| |COMMON-LISP|::|NIL| + (|COMMON-LISP|::|REMPROP| '|CLFSWM|::|WINDOW-STATE| + '|SYSTEM|::|DEFSTRUCT-WRITER|) + (|SYSTEM|::|CHECK-REDEFINITION| '|CLFSWM|::|WINDOW-STATE| + '|COMMON-LISP|::|DEFSETF| + (|COMMON-LISP|::|AND| + (|COMMON-LISP|::|GET| '|CLFSWM|::|WINDOW-STATE| '|SYSTEM|::|SETF-EXPANDER|) + '|SYSTEM|::|SETF-EXPANDER|)) + (|SYSTEM|::|%PUT| '|CLFSWM|::|WINDOW-STATE| '|SYSTEM|::|SETF-EXPANDER| + '|CLFSWM|::|SET-WINDOW-STATE|) + (|SYSTEM|::|%SET-DOCUMENTATION| '|CLFSWM|::|WINDOW-STATE| + '|COMMON-LISP|::|SETF| |COMMON-LISP|::|NIL|) + '|CLFSWM|::|WINDOW-STATE|) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|WINDOW-HIDDEN-P| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WINDOW|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|UNHIDE-WINDOW| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WINDOW|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|HIDE-WINDOW| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WINDOW|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|WINDOW-TYPE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WINDOW|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SEND-CONFIGURATION-NOTIFY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WINDOW|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|SEND-CLIENT-MESSAGE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|WINDOW| |COMMON-LISP|::|TYPE| |COMMON-LISP|::|&REST| + |CLFSWM|::|DATA|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|RAISE-WINDOW| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WINDOW|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|FOCUS-WINDOW| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WINDOW|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|NO-FOCUS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|XGRAB-INIT-POINTER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|XGRAB-POINTER-P| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|XGRAB-POINTER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| + '(|CLFSWM|::|ROOT| |CLFSWM|::|CURSOR-CHAR| |CLFSWM|::|CURSOR-MASK-CHAR| + |COMMON-LISP|::|&OPTIONAL| + (|CLFSWM|::|POINTER-MASK| + '(:|ENTER-WINDOW| :|POINTER-MOTION| :|BUTTON-PRESS| :|BUTTON-RELEASE|)) + |CLFSWM|::|OWNER-P|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|XUNGRAB-POINTER| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|XGRAB-INIT-KEYBOARD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|XGRAB-KEYBOARD-P| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|XGRAB-KEYBOARD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|ROOT|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|XUNGRAB-KEYBOARD| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|STOP-BUTTON-EVENT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|REPLAY-BUTTON-EVENT| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|UNGRAB-ALL-BUTTONS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WINDOW|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GRAB-ALL-BUTTONS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|WINDOW|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|GET-COLOR| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|COLOR|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|MY-CHARACTER->KEYSYMS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|CH|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|CHAR->KEYCODE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|COMMON-LISP|::|CHAR|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|KEYCODE->CHAR| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|CODE| |CLFSWM|::|STATE|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|MODIFIERS->STATE| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|MODIFIER-LIST|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|STATE->MODIFIERS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '(|CLFSWM|::|STATE|))) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|WAIT-NO-KEY-OR-BUTTON-PRESS| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) +(|SYSTEM|::|C-DEFUN| '|CLFSWM|::|COMPRESS-MOTION-NOTIFY| + (|SYSTEM|::|LAMBDA-LIST-TO-SIGNATURE| '|COMMON-LISP|::|NIL|)) Added: xlib-util.lisp ============================================================================== --- (empty file) +++ xlib-util.lisp Sat Mar 1 07:36:13 2008 @@ -0,0 +1,491 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Thu Feb 28 21:55:00 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Utility functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + +;; Window states +(defconstant +withdrawn-state+ 0) +(defconstant +normal-state+ 1) +(defconstant +iconic-state+ 3) + + +(defparameter *window-events* '(:structure-notify + :property-change + :colormap-change + :focus-change + :enter-window + :exposure) + ;;:button-press + ;;:button-release) + "The events to listen for on managed windows.") + + +(defparameter +netwm-supported+ + '(:_NET_SUPPORTING_WM_CHECK + :_NET_NUMBER_OF_DESKTOPS + :_NET_DESKTOP_GEOMETRY + :_NET_DESKTOP_VIEWPORT + :_NET_CURRENT_DESKTOP + :_NET_WM_WINDOW_TYPE + :_NET_CLIENT_LIST) + "Supported NETWM properties. +Window types are in +WINDOW-TYPES+.") + +(defparameter +netwm-window-types+ + '((:_NET_WM_WINDOW_TYPE_DESKTOP . :desktop) + (:_NET_WM_WINDOW_TYPE_DOCK . :dock) + (:_NET_WM_WINDOW_TYPE_TOOLBAR . :toolbar) + (:_NET_WM_WINDOW_TYPE_MENU . :menu) + (:_NET_WM_WINDOW_TYPE_UTILITY . :utility) + (:_NET_WM_WINDOW_TYPE_SPLASH . :splash) + (:_NET_WM_WINDOW_TYPE_DIALOG . :dialog) + (:_NET_WM_WINDOW_TYPE_NORMAL . :normal)) + "Alist mapping NETWM window types to keywords.") + + +(defmacro with-xlib-protect (&body body) + "Prevent Xlib errors" + `(handler-case + (progn + , at body) + ((or xlib:match-error xlib:window-error xlib:drawable-error) (c) + (declare (ignore c))))) + + + +(defun parse-display-string (display) + "Parse an X11 DISPLAY string and return the host and display from it." + (let* ((colon (position #\: display)) + (host (subseq display 0 colon)) + (rest (subseq display (1+ colon))) + (dot (position #\. rest)) + (num (parse-integer (subseq rest 0 dot)))) + (values host num))) + + +(defun banish-pointer () + "Move the pointer to the lower right corner of the screen" + (xlib:warp-pointer *root* + (1- (xlib:screen-width *screen*)) + (1- (xlib:screen-height *screen*)))) + + + + + +(defun window-state (win) + "Get the state (iconic, normal, withdraw of a window." + (first (xlib:get-property win :WM_STATE))) + + +(defun set-window-state (win state) + "Set the state (iconic, normal, withdrawn) of a window." + (xlib:change-property win + :WM_STATE + (list state) + :WM_STATE + 32)) + +(defsetf window-state set-window-state) + + + +(defun window-hidden-p (window) + (eql (window-state window) +iconic-state+)) + + + +(defun unhide-window (window) + (when window + (with-xlib-protect + (xlib:map-window window) + (setf (window-state window) +normal-state+ + (xlib:window-event-mask window) *window-events*)))) + + + + + + + + + + + + + + +;;(defconstant +exwm-atoms+ +;; (list "_NET_SUPPORTED" "_NET_CLIENT_LIST" +;; "_NET_CLIENT_LIST_STACKING" "_NET_NUMBER_OF_DESKTOPS" +;; "_NET_CURRENT_DESKTOP" "_NET_DESKTOP_GEOMETRY" +;; "_NET_DESKTOP_VIEWPORT" "_NET_DESKTOP_NAMES" +;; "_NET_ACTIVE_WINDOW" "_NET_WORKAREA" +;; "_NET_SUPPORTING_WM_CHECK" "_NET_VIRTUAL_ROOTS" +;; "_NET_DESKTOP_LAYOUT" +;; +;; "_NET_RESTACK_WINDOW" "_NET_REQUEST_FRAME_EXTENTS" +;; "_NET_MOVERESIZE_WINDOW" "_NET_CLOSE_WINDOW" +;; "_NET_WM_MOVERESIZE" +;; +;; "_NET_WM_SYNC_REQUEST" "_NET_WM_PING" +;; +;; "_NET_WM_NAME" "_NET_WM_VISIBLE_NAME" +;; "_NET_WM_ICON_NAME" "_NET_WM_VISIBLE_ICON_NAME" +;; "_NET_WM_DESKTOP" "_NET_WM_WINDOW_TYPE" +;; "_NET_WM_STATE" "_NET_WM_STRUT" +;; "_NET_WM_ICON_GEOMETRY" "_NET_WM_ICON" +;; "_NET_WM_PID" "_NET_WM_HANDLED_ICONS" +;; "_NET_WM_USER_TIME" "_NET_FRAME_EXTENTS" +;; ;; "_NET_WM_MOVE_ACTIONS" +;; +;; "_NET_WM_WINDOW_TYPE_DESKTOP" "_NET_WM_STATE_MODAL" +;; "_NET_WM_WINDOW_TYPE_DOCK" "_NET_WM_STATE_STICKY" +;; "_NET_WM_WINDOW_TYPE_TOOLBAR" "_NET_WM_STATE_MAXIMIZED_VERT" +;; "_NET_WM_WINDOW_TYPE_MENU" "_NET_WM_STATE_MAXIMIZED_HORZ" +;; "_NET_WM_WINDOW_TYPE_UTILITY" "_NET_WM_STATE_SHADED" +;; "_NET_WM_WINDOW_TYPE_SPLASH" "_NET_WM_STATE_SKIP_TASKBAR" +;; "_NET_WM_WINDOW_TYPE_DIALOG" "_NET_WM_STATE_SKIP_PAGER" +;; "_NET_WM_WINDOW_TYPE_NORMAL" "_NET_WM_STATE_HIDDEN" +;; "_NET_WM_STATE_FULLSCREEN" +;; "_NET_WM_STATE_ABOVE" +;; "_NET_WM_STATE_BELOW" +;; "_NET_WM_STATE_DEMANDS_ATTENTION" +;; +;; "_NET_WM_ALLOWED_ACTIONS" +;; "_NET_WM_ACTION_MOVE" +;; "_NET_WM_ACTION_RESIZE" +;; "_NET_WM_ACTION_SHADE" +;; "_NET_WM_ACTION_STICK" +;; "_NET_WM_ACTION_MAXIMIZE_HORZ" +;; "_NET_WM_ACTION_MAXIMIZE_VERT" +;; "_NET_WM_ACTION_FULLSCREEN" +;; "_NET_WM_ACTION_CHANGE_DESKTOP" +;; "_NET_WM_ACTION_CLOSE" +;; +;; )) +;; +;; +;;(defun intern-atoms (display) +;; (declare (type xlib:display display)) +;; (mapcar #'(lambda (atom-name) (xlib:intern-atom display atom-name)) +;; +exwm-atoms+) +;; (values)) +;; +;; +;; +;;(defun get-atoms-property (window property-atom atom-list-p) +;; "Returns a list of atom-name (if atom-list-p is t) otherwise returns +;; a list of atom-id." +;; (xlib:get-property window property-atom +;; :transform (when atom-list-p +;; (lambda (id) +;; (xlib:atom-name (xlib:drawable-display window) id))))) +;; +;;(defun set-atoms-property (window atoms property-atom &key (mode :replace)) +;; "Sets the property designates by `property-atom'. ATOMS is a list of atom-id +;; or a list of keyword atom-names." +;; (xlib:change-property window property-atom atoms :ATOM 32 +;; :mode mode +;; :transform (unless (integerp (car atoms)) +;; (lambda (atom-key) +;; (xlib:find-atom (xlib:drawable-display window) atom-key))))) +;; +;; +;; +;; +;;(defun net-wm-state (window) +;; (get-atoms-property window :_NET_WM_STATE t)) +;; +;;(defsetf net-wm-state (window &key (mode :replace)) (states) +;; `(set-atoms-property ,window ,states :_NET_WM_STATE :mode ,mode)) +;; +;; +;; +;;(defun hide-window (window) +;; (when window +;; (with-xlib-protect +;; (let ((net-wm-state (net-wm-state window))) +;; (dbg net-wm-state) +;; (pushnew :_net_wm_state_hidden net-wm-state) +;; (setf (net-wm-state window) net-wm-state) +;; (dbg (net-wm-state window))) +;; (setf (window-state window) +iconic-state+ +;; (xlib:window-event-mask window) (remove :structure-notify *window-events*)) +;; (xlib:unmap-window window) +;; (setf (xlib:window-event-mask window) *window-events*)))) + + +(defun hide-window (window) + (when window + (with-xlib-protect + (setf (window-state window) +iconic-state+ + (xlib:window-event-mask window) (remove :structure-notify *window-events*)) + (xlib:unmap-window window) + (setf (xlib:window-event-mask window) *window-events*)))) + + + +(defun window-type (window) + "Return one of :desktop, :dock, :toolbar, :utility, :splash, +:dialog, :transient, :maxsize and :normal." + (or (and (let ((hints (xlib:wm-normal-hints window))) + (and hints (or (xlib:wm-size-hints-max-width hints) + (xlib:wm-size-hints-max-height hints) + (xlib:wm-size-hints-min-aspect hints) + (xlib:wm-size-hints-max-aspect hints)))) + :maxsize) + (let ((net-wm-window-type (xlib:get-property window :_NET_WM_WINDOW_TYPE))) + (when net-wm-window-type + (dolist (type-atom net-wm-window-type) + (when (assoc (xlib:atom-name *display* type-atom) +netwm-window-types+) + (return (cdr (assoc (xlib:atom-name *display* type-atom) +netwm-window-types+))))))) + (and (xlib:get-property window :WM_TRANSIENT_FOR) + :transient) + :normal)) + + + + + +;; Stolen from Eclipse +(defun send-configuration-notify (window) + "Send a synthetic configure notify event to the given window (ICCCM 4.1.5)" + (multiple-value-bind (x y) + (xlib:translate-coordinates window 0 0 (xlib:drawable-root window)) + (xlib:send-event window + :configure-notify + (xlib:make-event-mask :structure-notify) + :event-window window :window window + :x x :y y + :override-redirect-p nil + :border-width (xlib:drawable-border-width window) + :width (xlib:drawable-width window) + :height (xlib:drawable-height window) + :propagate-p nil))) + + +(defun send-client-message (window type &rest data) + "Send a client message to a client's window." + (xlib:send-event window + :client-message nil + :window window + :type type + :format 32 + :data data)) + + + + + +(defun raise-window (window) + "Map the window if needed and bring it to the top of the stack. Does not affect focus." + (when window + (with-xlib-protect + (when (window-hidden-p window) + (unhide-window window)) + (setf (xlib:window-priority window) :top-if)))) + +(defun focus-window (window) + "Give the window focus." + (when window + (with-xlib-protect + (raise-window window) + (xlib:set-input-focus *display* window :parent)))) + ;;(xlib:set-input-focus *display* :pointer-root :pointer-root)) ;;PHIL + + + + + + +(defun no-focus () + "don't focus any window but still read keyboard events." + (xlib:set-input-focus *display* *no-focus-window* :pointer-root)) + + + + +(let ((cursor-font nil) + (cursor nil) + (pointer-grabbed nil)) + (labels ((free-grab-pointer () + (when cursor + (xlib:free-cursor cursor) + (setf cursor nil)) + (when cursor-font + (xlib:close-font cursor-font) + (setf cursor-font nil)))) + (defun xgrab-init-pointer () + (setf pointer-grabbed nil)) + + (defun xgrab-pointer-p () + pointer-grabbed) + + (defun xgrab-pointer (root cursor-char cursor-mask-char + &optional (pointer-mask '(:enter-window :pointer-motion + :button-press :button-release)) owner-p) + "Grab the pointer and set the pointer shape." + (free-grab-pointer) + (setf pointer-grabbed t) + (let* ((white (xlib:make-color :red 1.0 :green 1.0 :blue 1.0)) + (black (xlib:make-color :red 0.0 :green 0.0 :blue 0.0))) + (setf cursor-font (xlib:open-font *display* "cursor") + cursor (xlib:create-glyph-cursor :source-font cursor-font + :source-char cursor-char + :mask-font cursor-font + :mask-char cursor-mask-char + :foreground black + :background white)) + (xlib:grab-pointer root pointer-mask + :owner-p owner-p :sync-keyboard-p nil :sync-pointer-p nil :cursor cursor))) + + (defun xungrab-pointer () + "Remove the grab on the cursor and restore the cursor shape." + (setf pointer-grabbed nil) + (xlib:ungrab-pointer *display*) + (free-grab-pointer)))) + + +(let ((keyboard-grabbed nil)) + (defun xgrab-init-keyboard () + (setf keyboard-grabbed nil)) + + (defun xgrab-keyboard-p () + keyboard-grabbed) + + (defun xgrab-keyboard (root) + (setf keyboard-grabbed t) + (xlib:grab-keyboard root :owner-p nil :sync-keyboard-p nil :sync-pointer-p nil)) + + (defun xungrab-keyboard () + (setf keyboard-grabbed nil) + (xlib:ungrab-keyboard *display*))) + + + + +(defun stop-button-event () + (xlib:allow-events *display* :sync-pointer)) + +(defun replay-button-event () + (xlib:allow-events *display* :replay-pointer)) + + +(defun ungrab-all-buttons (window) + (xlib:ungrab-button window :any :modifiers :any)) + +(defun grab-all-buttons (window) + (ungrab-all-buttons window) + (xlib:grab-button window :any '(:button-press) + :modifiers :any + :owner-p nil + :sync-pointer-p t + :sync-keyboard-p nil)) + + + +(defun get-color (color) + (xlib:alloc-color (xlib:screen-default-colormap *screen*) color)) + + + + +(defun my-character->keysyms (ch) + "Convert a char to a keysym" + ;; XLIB:CHARACTER->KEYSYMS should probably be implemented in NEW-CLX + ;; some day. Or just copied from MIT-CLX or some other CLX + ;; implementation (see translate.lisp and keysyms.lisp). For now, + ;; we do like this. It suffices for modifiers and ASCII symbols. + (if (fboundp 'xlib:character->keysyms) + (xlib:character->keysyms ch)) + (list + (case ch + (:character-set-switch #xFF7E) + (:left-shift #xFFE1) + (:right-shift #xFFE2) + (:left-control #xFFE3) + (:right-control #xFFE4) + (:caps-lock #xFFE5) + (:shift-lock #xFFE6) + (:left-meta #xFFE7) + (:right-meta #xFFE8) + (:left-alt #xFFE9) + (:right-alt #xFFEA) + (:left-super #xFFEB) + (:right-super #xFFEC) + (:left-hyper #xFFED) + (:right-hyper #xFFEE) + (t + (etypecase ch + (character + ;; Latin-1 characters have their own value as keysym + (if (< 31 (char-code ch) 256) + (char-code ch) + (error "Don't know how to get keysym from ~A" ch)))))))) + + + +(defun char->keycode (char) + "Convert a character to a keycode" + (xlib:keysym->keycodes *display* (first (my-character->keysyms char)))) + + +(defun keycode->char (code state) + (xlib:keysym->character *display* (xlib:keycode->keysym *display* code 0) state)) + +(defun modifiers->state (modifier-list) + (apply #'xlib:make-state-mask modifier-list)) + +(defun state->modifiers (state) + (xlib:make-state-keys state)) + + + + +(defun wait-no-key-or-button-press () + (loop + (let ((key (loop for k across (xlib:query-keymap *display*) + unless (zerop k) return t)) + (button (plusp (nth-value 4 (xlib:query-pointer *root*))))) + (when (and (not key) (not button)) + (loop while (xlib:event-case (*display* :discard-p t :peek-p nil :timeout 0) + (:motion-notify () t) + (:key-press () t) + (:button-press () t) + (:button-release () t) + (t nil))) + (return-from wait-no-key-or-button-press nil))))) + + + +(defun compress-motion-notify () + (when *have-to-compress-notify* + (xlib:event-case (*display* :discard-p nil :peek-p t :timeout 0) + (:motion-notify () t)))) + From pbrochard at common-lisp.net Sat Mar 1 12:42:56 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sat, 1 Mar 2008 07:42:56 -0500 (EST) Subject: [clfswm-cvs] r2 - Message-ID: <20080301124256.D753028090@common-lisp.net> Author: pbrochard Date: Sat Mar 1 07:42:56 2008 New Revision: 2 Removed: AUTHORS Log: del From pbrochard at common-lisp.net Sat Mar 1 12:43:47 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sat, 1 Mar 2008 07:43:47 -0500 (EST) Subject: [clfswm-cvs] r3 - CVS Message-ID: <20080301124347.BEA042D1A0@common-lisp.net> Author: pbrochard Date: Sat Mar 1 07:43:47 2008 New Revision: 3 Removed: COPYING CVS/ ChangeLog README TAGS asdf.lisp bindings-pager.lisp bindings-second-mode.fas bindings-second-mode.fasl bindings-second-mode.lib bindings-second-mode.lisp bindings-second-mode.lisp.bak bindings.fas bindings.fasl bindings.lib bindings.lisp check-diff.sh clfswm-info.fas clfswm-info.fasl clfswm-info.lib clfswm-info.lisp clfswm-internal.fas clfswm-internal.fasl clfswm-internal.lib clfswm-internal.lisp clfswm-internal.lisp.bak clfswm-keys.fas clfswm-keys.fasl clfswm-keys.lib clfswm-keys.lisp clfswm-layout.fas clfswm-layout.fasl clfswm-layout.lib clfswm-layout.lisp clfswm-pack.lisp clfswm-second-mode.fas clfswm-second-mode.fasl clfswm-second-mode.lib clfswm-second-mode.lisp clfswm-util.fas clfswm-util.fasl clfswm-util.lib clfswm-util.lisp clfswm.asd clfswm.fas clfswm.fasl clfswm.lib clfswm.lisp clisp-load.lisp config.fas config.fasl config.lib config.lisp dot-clfswmrc keys.html keys.txt keysyms.fas keysyms.fasl keysyms.lib keysyms.lisp load.lisp my-html.fas my-html.fasl my-html.lib my-html.lisp netwm-util.fas netwm-util.fasl netwm-util.lib netwm-util.lisp package.fas package.fasl package.lib package.lisp program sbcl-load.lisp tools.fas tools.fasl tools.lib tools.lisp xlib-util.fas xlib-util.fasl xlib-util.lib xlib-util.lisp Log: del From pbrochard at common-lisp.net Sat Mar 1 12:47:46 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sat, 1 Mar 2008 07:47:46 -0500 (EST) Subject: [clfswm-cvs] r4 - clfswm Message-ID: <20080301124746.3F4B05D169@common-lisp.net> Author: pbrochard Date: Sat Mar 1 07:47:45 2008 New Revision: 4 Added: clfswm/ Log: first commit From pbrochard at common-lisp.net Sat Mar 1 12:49:59 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sat, 1 Mar 2008 07:49:59 -0500 (EST) Subject: [clfswm-cvs] r5 - clfswm Message-ID: <20080301124959.BC8DF5F062@common-lisp.net> Author: pbrochard Date: Sat Mar 1 07:49:46 2008 New Revision: 5 Added: clfswm/AUTHORS clfswm/COPYING clfswm/ChangeLog clfswm/README clfswm/asdf.lisp clfswm/bindings-second-mode.lisp clfswm/bindings.lisp clfswm/check-diff.sh (contents, props changed) clfswm/clfswm-info.lisp clfswm/clfswm-internal.lisp clfswm/clfswm-keys.lisp clfswm/clfswm-layout.lisp clfswm/clfswm-pack.lisp clfswm/clfswm-second-mode.lisp clfswm/clfswm-util.lisp clfswm/clfswm.asd clfswm/clfswm.lisp clfswm/clisp-load.lisp clfswm/config.lisp clfswm/dot-clfswmrc clfswm/keys.html clfswm/keys.txt clfswm/keysyms.lisp clfswm/load.lisp clfswm/my-html.lisp clfswm/netwm-util.lisp clfswm/package.lisp clfswm/program clfswm/sbcl-load.lisp clfswm/tools.lisp clfswm/xlib-util.lisp Log: first commit Added: clfswm/AUTHORS ============================================================================== --- (empty file) +++ clfswm/AUTHORS Sat Mar 1 07:49:46 2008 @@ -0,0 +1,14 @@ +CLFSWM - A(nother) Common Lisp FullScreen Window Manager +--------------------------------------------------------- + +Philippe Brochard hocwp at free dot fr + + +----------------------------------- + +Some of the CLFSWM code is based on + +tinywm: http://incise.org/index.cgi/TinyWM + +And on the excellent Shawn Betts (sabetts at vcn bc ca) +Stumpwm: http://www.nongnu.org/stumpwm/ Added: clfswm/COPYING ============================================================================== --- (empty file) +++ clfswm/COPYING Sat Mar 1 07:49:46 2008 @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + 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 +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program 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, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU 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 Lesser General +Public License instead of this License. But first, please read +. Added: clfswm/ChangeLog ============================================================================== --- (empty file) +++ clfswm/ChangeLog Sat Mar 1 07:49:46 2008 @@ -0,0 +1,427 @@ +2008-02-27 Philippe Brochard + + * clfswm-layout.lisp (*-layout): Add an optional raise-p + parameter in each layout. + +2008-02-26 Philippe Brochard + + * clfswm-util.lisp (copy/cut-current-child): Does not affect the + root group. + (copy/move-current-child-by-name/number): new functions + (focus-group-by-name/number): new functions + (delete-group-by-name/number): new functions + +2008-02-24 Philippe Brochard + + * *: Major update - No more reference to workspaces. The main + structure is a tree of groups or application windows. + +2008-02-07 Philippe Brochard + + * clfswm.lisp (read-conf-file): Read configuration in + $HOME/.clfswmrc or in /etc/clfswmrc or in + $XDG_CONFIG_HOME/clfswm/clfswmrc. + (xdg-config-home): Return the content of $XDG-CONFIG-HOME (default + to $HOME/.config/). + +2008-01-18 Philippe Brochard + + * clfswm-internal.lisp (show-all-group): Use *root* and *root-gc* + by default. + +2008-01-03 Philippe Brochard + + * clfswm-internal.lisp (find-window-group): New function. + + * clfswm*: Change to make clfswm run with clisp/new-clx. + +2008-01-01 Philippe Brochard + + * clfswm-util.lisp (query-show-paren): Add show parent matching in + query string. + (query-string): Bind control+k to delete end of line. + + * clfswm-second-mode.lisp (draw-second-mode-window): Display + the action on mouse motion in second mode. + + * clfswm.lisp (handle-exposure): Redisplay groups on exposure + event but do not clear the root window. + (handle-configure-request): Adjust unmanaged window from there + request. + + * clfswm-internal.lisp (process-new-window): Adjust new window + with the specified hints (max/min/base width/height). + +2007-12-31 Philippe Brochard + + * clfswm.lisp (handle-configure-request): Send an Configuration + Notify event. This solve a bug with xterm and rxvt who takes some + times to be mapped. Now there is no delay. + + * bindings-second-mode.lisp (define-shell): Run programs after + living the second mode. + +2007-12-30 Philippe Brochard + + * clfswm-internal.lisp (process-new-window): Do not crop transient + window to group size. + (adapt-window-to-group): Do not crop transient window to group + size. + + * clfswm.lisp (handle-configure-request): Adapt just the window to + its group and don't take care of the configure request. Remove the + bug with the Gimp outside the group and speed up the window + manipulation. + (handle-exposure): Remove show-all-group on exposure event + -> Speed up. + +2007-12-29 Philippe Brochard + + * clfswm-util.lisp (circulate-group-up-copy-window) + (circulate-group-down-copy-window) + (circulate-workspace-up-copy-group) + (circulate-workspace-down-copy-group): Prevent the copy of the + same window in the same workspace. + + * bindings-second-mode.lisp (release-copy-selected-window) + (release-copy-selected-group): Prevent the copy of the same window + in the same workspace. + + * clfswm-pager.lisp (generic-pager-move-window-on-previous-line) + (generic-pager-move-window-on-next-line): Remove the copy + property. + (generic-pager-move-group-on-next-workspace) + (generic-pager-move-group-on-previous-workspace): Prevent the copy + of the same window in the same workspace. + + * bindings-pager.lisp (mouse-pager-copy-selected-window-release) + (mouse-pager-copy-selected-group-release): Prevent the copy of the + same window in the same workspace. + + * tools.lisp (setf/=): new macro to set a variable only when + necessary. + + * clfswm-internal.lisp (adapt-window-to-group): use set/= to set + x, y... only when necessary. + +2007-12-28 Philippe Brochard + + * clfswm.lisp (handle-configure-notify, *configure-notify-hook*): + new function and hook: force windows to stay in its group (solve a + bug with the Gimp). + +2007-12-25 Philippe Brochard + + * bindings-second-mode.lisp (mouse-motion): use hide-group to have + less flickering when moving/resizing groups. + + * clfswm-internal.lisp (hide-group): new function. + (show-all-group): clear-all: new parameter. + +2007-12-22 Philippe Brochard + + * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new + macro. + * clfswm*: Color change for the pager. Typo or better description + in bindings definitions. Define bindings for a qwerty keyboard by + default. dot-clfswmrc show examples to switch to an azerty + keyboard. + License change to GPL v3. + * config.lisp: new file - group all globals variables in this + file. + +2007-08-26 Philippe Brochard + + * xlib-util.lisp (hide-window): Remove structure-notivy events + when hidding a window. + +2007-05-16 Philippe Brochard + + * package.lisp (*sm-property-notify-hook*): Readded + property-notify-hook in second mode. + +2007-05-15 Philippe Brochard + + * clfswm-keys.lisp (produce-doc-html): Better clean up for strings. + +2007-05-13 Philippe Brochard + + * clfswm-pack.lisp (tile-current-workspace-to/right/left/top/bottom): + Tile the current workspace with the current window on one side and + others on the other (this emulate the larswm, dwm, wmii way). See + the default configuration file to enable this mode by default. + + * clfswm-pager.lisp (pager-tile-current-workspace-to): idem for + the pager. + +2007-05-12 Philippe Brochard + + * clfswm-pager.lisp (pager-draw-window-in-group): Add + ensure-printable to print windows name even with non-ascii + characters. + +2007-05-11 Philippe Brochard + + * clfswm-pager.lisp (pager-explode-current-group): Create a new + group for each window in group. + (pager-implode-current-group): Move all windows in workspace to + one group and remove other groups. + + * clfswm-pack.lisp (explode-group): Create a new group for each + window in group. + (implode-group): Move all windows in workspace to one group and + remove other groups. + + * clfswm-util.lisp (identify-key): Remove local configuration + variables and made them available for configuration from + package.lisp. + (query-string): idem. + +2007-04-29 Philippe Brochard + + * netwm-util.lisp: Start of NetWM compliance. + Add a Netwm client list gestion. + +2007-04-28 Philippe Brochard + + * clfswm-internal.lisp (create-group-on-request): open a new group + only when the current group is not empty. + + * bindings-second-mode.lisp (define-second-key-#\o-control): Fix a + bug with null workspace. + + * clfswm-pager.lisp (pager-handle-event): Add a hook + system. This hooks can be changed in the user configuration file. + + * package.lisp: All colors and font variables are set in + package.lisp and can be configured in the user configuration + file. + Note: If you have configured some less ugly colors (esp. for the + pager) don't hesitate to let me know :) + + * clfswm-second-mode.lisp (sm-handle-event): Add a hook + system. This hooks can be changed in the user configuration file. + + * clfswm.lisp (handle-event): Add a hook system. This hooks can be + changed in the user configuration file (~/.clfswmrc) + +2007-04-25 Philippe Brochard + + * clfswm-util.lisp (stop-all-pending-actions): new function: reset + arrow action, open next window in new workspace/group. + + * bindings.lisp (stop-all-pending-actions): new binding. + (open-next-window-in-new-group-once): Open the next windows in a + new group (only once) or open all new windows in a new group (like + others windows managers). + +2007-04-22 Philippe Brochard + + * clfswm.lisp (read-conf-file): New function to read a lisp + configuration file at startup. + (focus-group-under-mouse): Check if group isn't the current group + ( prevent a bug with unclutter ). + +2007-03-02 Philippe Brochard + + * bindings.lisp (run-program-from-query-string): A program can be + launch from a input query window. + +2007-03-01 Philippe Brochard + + * clfswm-info.lisp: Fix a bug with banish pointer in info mode. + +2007-02-28 Philippe Brochard + + * clfswm.lisp (process-new-window): One can now open the next + window in a workspace called by its number. + + * clfswm-util.lisp (query-font-string): Minimal editing + capabilities. + (eval-from-string): And an REPL in the window manager... :) + +2007-02-26 Philippe Brochard + + * clfswm.lisp (process-new-window): One can now open the next + window in a new workspace or a new group. + + * clfswm-pager.lisp (pager-mode): Display the next arrow action + with the hidden windows. + + * clfswm.lisp (second-key-mode): Display the current workspace + number and the next arrow action in the state window. + + * clfswm-pager.lisp (pager-mode): Hide all windows before leaving + the pager mode and then redisplay only the current workspace. + +2007-02-25 Philippe Brochard + + * clfswm.lisp (add-workspace): Workspaces are now numbered. So + they can be focused with a keypress, sorted or renumbered. + +2007-02-24 Philippe Brochard + + * clfswm-pager.lisp (pager-mode): Remove multiple silly + pager-draw-display. This prevent a lot of flickering in the + pager. + + * clfswm.lisp: Remove all display-force-output and replace them + with only one display-finish-output in the event loop. + +2006-11-06 Philippe Brochard + + * clfswm-pager.lisp (pager-center-group): New function - center a + group at the middle of the screen. + + * clfswm-pack.lisp (center-group): New function - center a group + at the middle of the screen. + + * clfswm.lisp (show-group): Add a cross line under the group. + (show-group): Group are showned even if fullscreened. + (init-display): Add an exposure event on the root window. + +2006-11-05 Philippe Brochard + + * package.lisp (*default-group*): Default group is the same size + of a fullscreened group. + + * bindings*: Use shift to move, control+shift to copy. + + * *.lisp: Add comments for configuration or alternatives. So grep + for CONFIG to see where you can configure clfswm. And grep for + Alternative to use some commented code. + + * clfswm.lisp (second-key-mode): Use a single window to show the + second mode. See for alternatives at the end of this file. + +2006-11-03 Philippe Brochard + + * clfswm-keys.lisp (define-define-key/mouse): Factorisation in a + macro of key and mouse definitions. + (define-define-key/mouse): Use state instead of modifiers list + this fix a bug when the modifiers list is not in the rigth order. + + * clfswm.lisp (second-key-mode): Add a colored border in second mode. + +2006-11-02 Philippe Brochard + + * clfswm-info.lisp (info-mode): Add an info mode. + +2006-11-01 Philippe Brochard + + * clfswm.lisp (process-new-window): Change border size for + transient windows. + (show-all-windows-in-workspace): Unhide all windows even when the + current group is in fullscreen mode. + +2006-10-26 Philippe Brochard + + * clfswm-util.lisp (identify-key): Add an exposure handle-event to + redisplay the identify window after a terminal switch. + + * clfswm-pager.lisp (pager-mode): Add an exposure handle-event to + redisplay the pager after a terminal switch. + +2006-10-24 Philippe Brochard + + * clfswm-util.lisp (identify-key): Add a window to display + the keys to identify on screen. + + * bindings.lisp, bindings-pager.lisp: Define same keys to + move/copy groups/windows in second mode and in pager. + + * clfswm.lisp (handle-event*): Same version in all clfswm (fix some + drawing lags). + (show-all-windows-in-workspace): unhide window before adapting it + to group. + +2006-10-23 Philippe Brochard + + * clfswm.lisp (handle-event): Revert to an older version. + +2006-10-18 Philippe Brochard + + * clfswm-util.lisp (force-window-in-group) + (force-window-center-in-group): New functions for transient windows. + + * clfswm-pager.lisp (pager-remove-current-workspace/group): + bugfix: hide all windows before removing group or workspace. + +2006-10-17 Philippe Brochard + + * bindings-pager.lisp (mouse-pager-move-selected-group) + (mouse-pager-copy-selected-group) + (mouse-pager-move-selected-window) + (mouse-pager-copy-selected-window, mouse-pager-rotate-window-up) + (mouse-pager-rotate-window-down): New functions to have mouse in + pager mode. + + * clfswm-pager.lisp (pager-swap-window) + (pager-copy-group-on-next/previous-workspace) + (pager-copy-window-on-next/previous-line): New functions + +2006-10-15 Philippe Brochard + + * clfswm-pager.lisp (pager-move-window-on-next/previous-line, + (pager-move-group-on-next/previous-workspace): new functions. + + * clfswm-pack.lisp (resize-half-x-x-current-group): resize group + to its half size (new functions). + +2006-10-11 Philippe Brochard + + * clfswm-pager.lisp: workspaces, groups and windows can now be + selectionned with the keyboard or the mouse. + +2006-10-09 Philippe Brochard + + * clfswm-pager.lisp (pager-select-workspace-right/left): + workspaces can now be selectionned with the keyboard. + +2006-10-08 Philippe Brochard + + * clfswm-keys.lisp (undefine-main-key, undefine-second-key, undefine-mouse-action): + new function to remove a previous defined key or mouse combination. + +2006-10-07 Philippe Brochard + + * clfswm.lisp (main): Check for access error in init-display. + + * clfswm-keys.lisp (define-ungrab/grab): check for keysym and + keycode before grabbing. + + * bindings.lisp: Remove nlambda and use defun to keep the function + documentation with clisp. + (define-shell): new macro to define shell command for the second + mode. + +2006-10-06 Philippe Brochard + + * clfswm-keys.lisp (define-ungrab/grab): use a cond instead of a + boggus typecase. + +2006-10-05 Philippe Brochard + + * bindings.lisp (accept-motion): Move group bugfix in upper mouse + workspace circulation. + + * clfswm-util.lisp (absorb-orphan-window): new function. + + * clfswm-keys.lisp: Keysyms support. + +2006-10-02 Philippe Brochard + + * clfswm.lisp (show-group): Use one gc for all groups and not one + per group. + +2006-10-01 Philippe Brochard + + * bindings.lisp (define-second-key (#\l :mod-1)): fix a typo. + + * clfswm.lisp (adapt-window-to-group): Adapt only windows with + width and height outside group. + +2006-09-28 Philippe Brochard + + * clfswm.lisp: First public release. + Added: clfswm/README ============================================================================== --- (empty file) +++ clfswm/README Sat Mar 1 07:49:46 2008 @@ -0,0 +1,83 @@ + CLFSWM - A(nother) Common Lisp FullScreen Window Manager + + CLFSWM is a 100% Common Lisp X11 window manager (based on [1]Tinywm + and [2]Stumpwm. Many thanks to them). + It can be driven only with the keyboard or with the mouse. + + A display is divided in workspaces, groups and windows. Windows are + packed together in groups. + By default a group is fullscreen maximized (no decorations, no buttons, + no menus: nothing, just the application fullscreen!). + When not maximized, a group of windows can be moved, resized, tiled, + packed or filled to others groups edges. + + For its binding, CLFSWM has two modes. + A main mode with minimal keys and no mouse grabbing to avoid conflict + with others applications. + And a second mode with more keys and mouse actions. + For details of its usage, have a look at the files keys.txt or + keys.html + + +* Installation + +Boot up a common lisp implementation. I develop it with sbcl, I've +tested it with cmucl and I use it with clisp (you need the clx/xlib +package). + +To use CLFSWM, load the load.lisp file. It loads the ASDF package, +build the system and start the main loop. + +Another way is to do something like this: +$ cd /in/the/directory/of/clfswm/ +$ clisp/cmucl/sbcl/... # start a lisp + > (load "asdf.lisp") ; asdf for clisp or cmucl +or> (require :asdf) ; asdf for sbcl + > (require :clx) ; clx for cmucl + > (asdf:oos 'asdf:load-op :clfswm) ; compile and load the system + > (in-package :clfswm) ; go in the clfswm package + > (clfswm:main) ; start the main loop + + +* Tweaking + +To change the default keybinding, have a look at the bindings*.lisp +files and at the config.lisp file for global variables. + +All variables can be overwritten in a user configuration file +(/etc/clfswmrc or $HOME/.clfswmrc). It's a standard lisp file loaded at +startup. There is an example in the clfswm source (see dot-clfswmrc). + +If you want to add workspaces or groups at startup, tell this to +clfswm in the init-display function in clfswm.lisp (there is already a +default workspace and a default group created). + +In all cases, you can grep the source with 'CONFIG' and 'Alternative' +keywords to find where you can simply customize clfswm. + + + +* Lisp implementation note + +If you are using clisp/new-clx, be sure to use the last version (at +least 2.43). Older versions are a little bit bogus. +If you are using clisp/mit-clx or an other clx than clisp/new-clx, you +may find a speed up with the compress notify event. See the variable +*have-to-compress-notify* in the configuration file. + + + +* License + + CLFSWM is under the GNU General Public License - GPL license. + You can find more information in the files COPYING. or on the + [3]Free Software Foundation site. + + +Philippe Brochard . + +R?f?rences + + 1. http://incise.org/index.cgi/TinyWM + 2. http://www.nongnu.org/stumpwm/ + 3. http://www.gnu.org/ Added: clfswm/asdf.lisp ============================================================================== --- (empty file) +++ clfswm/asdf.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,1102 @@ +;;; This is asdf: Another System Definition Facility. $Revision: 1.1 $ +;;; +;;; Feedback, bug reports, and patches are all welcome: please mail to +;;; . But note first that the canonical +;;; source for asdf is presently the cCLan CVS repository at +;;; +;;; +;;; If you obtained this copy from anywhere else, and you experience +;;; trouble using it, or find bugs, you may want to check at the +;;; location above for a more recent version (and for documentation +;;; and test files, if your copy came without them) before reporting +;;; bugs. There are usually two "supported" revisions - the CVS HEAD +;;; is the latest development version, whereas the revision tagged +;;; RELEASE may be slightly older but is considered `stable' + +;;; Copyright (c) 2001-2003 Daniel Barlow and contributors +;;; +;;; Permission is hereby granted, free of charge, to any person obtaining +;;; a copy of this software and associated documentation files (the +;;; "Software"), to deal in the Software without restriction, including +;;; without limitation the rights to use, copy, modify, merge, publish, +;;; distribute, sublicense, and/or sell copies of the Software, and to +;;; permit persons to whom the Software is furnished to do so, subject to +;;; the following conditions: +;;; +;;; The above copyright notice and this permission notice shall be +;;; included in all copies or substantial portions of the Software. +;;; +;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +;;; LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +;;; OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +;;; WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +;;; the problem with writing a defsystem replacement is bootstrapping: +;;; we can't use defsystem to compile it. Hence, all in one file + +(defpackage #:asdf + (:export #:defsystem #:oos #:operate #:find-system #:run-shell-command + #:system-definition-pathname #:find-component ; miscellaneous + #:hyperdocumentation #:hyperdoc + + #:compile-op #:load-op #:load-source-op #:test-system-version + #:test-op + #:operation ; operations + #:feature ; sort-of operation + #:version ; metaphorically sort-of an operation + + #:input-files #:output-files #:perform ; operation methods + #:operation-done-p #:explain + + #:component #:source-file + #:c-source-file #:cl-source-file #:java-source-file + #:static-file + #:doc-file + #:html-file + #:text-file + #:source-file-type + #:module ; components + #:system + #:unix-dso + + #:module-components ; component accessors + #:component-pathname + #:component-relative-pathname + #:component-name + #:component-version + #:component-parent + #:component-property + #:component-system + + #:component-depends-on + + #:system-description + #:system-long-description + #:system-author + #:system-maintainer + #:system-license + + #:operation-on-warnings + #:operation-on-failure + + ;#:*component-parent-pathname* + #:*system-definition-search-functions* + #:*central-registry* ; variables + #:*compile-file-warnings-behaviour* + #:*compile-file-failure-behaviour* + #:*asdf-revision* + + #:operation-error #:compile-failed #:compile-warned #:compile-error + #:error-component #:error-operation + #:system-definition-error + #:missing-component + #:missing-dependency + #:circular-dependency ; errors + + #:retry + #:accept ; restarts + + ) + (:use :cl)) + +#+nil +(error "The author of this file habitually uses #+nil to comment out forms. But don't worry, it was unlikely to work in the New Implementation of Lisp anyway") + + +(in-package #:asdf) + +(defvar *asdf-revision* (let* ((v "$Revision: 1.1 $") + (colon (or (position #\: v) -1)) + (dot (position #\. v))) + (and v colon dot + (list (parse-integer v :start (1+ colon) + :junk-allowed t) + (parse-integer v :start (1+ dot) + :junk-allowed t))))) + +(defvar *compile-file-warnings-behaviour* :warn) +(defvar *compile-file-failure-behaviour* #+sbcl :error #-sbcl :warn) + +(defvar *verbose-out* nil) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; utility stuff + +(defmacro aif (test then &optional else) + `(let ((it ,test)) (if it ,then ,else))) + +(defun pathname-sans-name+type (pathname) + "Returns a new pathname with same HOST, DEVICE, DIRECTORY as PATHNAME, +and NIL NAME and TYPE components" + (make-pathname :name nil :type nil :defaults pathname)) + +(define-modify-macro appendf (&rest args) + append "Append onto list") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; classes, condiitons + +(define-condition system-definition-error (error) () + ;; [this use of :report should be redundant, but unfortunately it's not. + ;; cmucl's lisp::output-instance prefers the kernel:slot-class-print-function + ;; over print-object; this is always conditions::%print-condition for + ;; condition objects, which in turn does inheritance of :report options at + ;; run-time. fortunately, inheritance means we only need this kludge here in + ;; order to fix all conditions that build on it. -- rgr, 28-Jul-02.] + #+cmu (:report print-object)) + +(define-condition formatted-system-definition-error (system-definition-error) + ((format-control :initarg :format-control :reader format-control) + (format-arguments :initarg :format-arguments :reader format-arguments)) + (:report (lambda (c s) + (apply #'format s (format-control c) (format-arguments c))))) + +(define-condition circular-dependency (system-definition-error) + ((components :initarg :components :reader circular-dependency-components))) + +(define-condition missing-component (system-definition-error) + ((requires :initform "(unnamed)" :reader missing-requires :initarg :requires) + (version :initform nil :reader missing-version :initarg :version) + (parent :initform nil :reader missing-parent :initarg :parent))) + +(define-condition missing-dependency (missing-component) + ((required-by :initarg :required-by :reader missing-required-by))) + +(define-condition operation-error (error) + ((component :reader error-component :initarg :component) + (operation :reader error-operation :initarg :operation)) + (:report (lambda (c s) + (format s "~@" + (error-operation c) (error-component c))))) +(define-condition compile-error (operation-error) ()) +(define-condition compile-failed (compile-error) ()) +(define-condition compile-warned (compile-error) ()) + +(defclass component () + ((name :accessor component-name :initarg :name :documentation + "Component name: designator for a string composed of portable pathname characters") + (version :accessor component-version :initarg :version) + (in-order-to :initform nil :initarg :in-order-to) + ;;; XXX crap name + (do-first :initform nil :initarg :do-first) + ;; methods defined using the "inline" style inside a defsystem form: + ;; need to store them somewhere so we can delete them when the system + ;; is re-evaluated + (inline-methods :accessor component-inline-methods :initform nil) + (parent :initarg :parent :initform nil :reader component-parent) + ;; no direct accessor for pathname, we do this as a method to allow + ;; it to default in funky ways if not supplied + (relative-pathname :initarg :pathname) + (operation-times :initform (make-hash-table ) + :accessor component-operation-times) + ;; XXX we should provide some atomic interface for updating the + ;; component properties + (properties :accessor component-properties :initarg :properties + :initform nil))) + +;;;; methods: conditions + +(defmethod print-object ((c missing-dependency) s) + (format s "~@<~A, required by ~A~@:>" + (call-next-method c nil) (missing-required-by c))) + +(defun sysdef-error (format &rest arguments) + (error 'formatted-system-definition-error :format-control format :format-arguments arguments)) + +;;;; methods: components + +(defmethod print-object ((c missing-component) s) + (format s "~@" + (missing-requires c) + (missing-version c) + (when (missing-parent c) + (component-name (missing-parent c))))) + +(defgeneric component-system (component) + (:documentation "Find the top-level system containing COMPONENT")) + +(defmethod component-system ((component component)) + (aif (component-parent component) + (component-system it) + component)) + +(defmethod print-object ((c component) stream) + (print-unreadable-object (c stream :type t :identity t) + (ignore-errors + (prin1 (component-name c) stream)))) + +(defclass module (component) + ((components :initform nil :accessor module-components :initarg :components) + ;; what to do if we can't satisfy a dependency of one of this module's + ;; components. This allows a limited form of conditional processing + (if-component-dep-fails :initform :fail + :accessor module-if-component-dep-fails + :initarg :if-component-dep-fails) + (default-component-class :accessor module-default-component-class + :initform 'cl-source-file :initarg :default-component-class))) + +(defgeneric component-pathname (component) + (:documentation "Extracts the pathname applicable for a particular component.")) + +(defun component-parent-pathname (component) + (aif (component-parent component) + (component-pathname it) + *default-pathname-defaults*)) + +(defgeneric component-relative-pathname (component) + (:documentation "Extracts the relative pathname applicable for a particular component.")) + +(defmethod component-relative-pathname ((component module)) + (or (slot-value component 'relative-pathname) + (make-pathname + :directory `(:relative ,(component-name component)) + :host (pathname-host (component-parent-pathname component))))) + +(defmethod component-pathname ((component component)) + (let ((*default-pathname-defaults* (component-parent-pathname component))) + (merge-pathnames (component-relative-pathname component)))) + +(defgeneric component-property (component property)) + +(defmethod component-property ((c component) property) + (cdr (assoc property (slot-value c 'properties) :test #'equal))) + +(defgeneric (setf component-property) (new-value component property)) + +(defmethod (setf component-property) (new-value (c component) property) + (let ((a (assoc property (slot-value c 'properties) :test #'equal))) + (if a + (setf (cdr a) new-value) + (setf (slot-value c 'properties) + (acons property new-value (slot-value c 'properties)))))) + +(defclass system (module) + ((description :accessor system-description :initarg :description) + (long-description + :accessor system-long-description :initarg :long-description) + (author :accessor system-author :initarg :author) + (maintainer :accessor system-maintainer :initarg :maintainer) + (licence :accessor system-licence :initarg :licence))) + +;;; version-satisfies + +;;; with apologies to christophe rhodes ... +(defun split (string &optional max (ws '(#\Space #\Tab))) + (flet ((is-ws (char) (find char ws))) + (nreverse + (let ((list nil) (start 0) (words 0) end) + (loop + (when (and max (>= words (1- max))) + (return (cons (subseq string start) list))) + (setf end (position-if #'is-ws string :start start)) + (push (subseq string start end) list) + (incf words) + (unless end (return list)) + (setf start (1+ end))))))) + +(defgeneric version-satisfies (component version)) + +(defmethod version-satisfies ((c component) version) + (unless (and version (slot-boundp c 'version)) + (return-from version-satisfies t)) + (let ((x (mapcar #'parse-integer + (split (component-version c) nil '(#\.)))) + (y (mapcar #'parse-integer + (split version nil '(#\.))))) + (labels ((bigger (x y) + (cond ((not y) t) + ((not x) nil) + ((> (car x) (car y)) t) + ((= (car x) (car y)) + (bigger (cdr x) (cdr y)))))) + (and (= (car x) (car y)) + (or (not (cdr y)) (bigger (cdr x) (cdr y))))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; finding systems + +(defvar *defined-systems* (make-hash-table :test 'equal)) +(defun coerce-name (name) + (typecase name + (component (component-name name)) + (symbol (string-downcase (symbol-name name))) + (string name) + (t (sysdef-error "~@" name)))) + +;;; for the sake of keeping things reasonably neat, we adopt a +;;; convention that functions in this list are prefixed SYSDEF- + +(defvar *system-definition-search-functions* + '(sysdef-central-registry-search)) + +(defun system-definition-pathname (system) + (some (lambda (x) (funcall x system)) + *system-definition-search-functions*)) + +(defvar *central-registry* + '(*default-pathname-defaults* + #+nil "/home/dan/src/sourceforge/cclan/asdf/systems/" + #+nil "telent:asdf;systems;")) + +(defun sysdef-central-registry-search (system) + (let ((name (coerce-name system))) + (block nil + (dolist (dir *central-registry*) + (let* ((defaults (eval dir)) + (file (and defaults + (make-pathname + :defaults defaults :version :newest + :name name :type "asd" :case :local)))) + (if (and file (probe-file file)) + (return file))))))) + + +(defun find-system (name &optional (error-p t)) + (let* ((name (coerce-name name)) + (in-memory (gethash name *defined-systems*)) + (on-disk (system-definition-pathname name))) + (when (and on-disk + (or (not in-memory) + (< (car in-memory) (file-write-date on-disk)))) + (let ((*package* (make-package (gensym #.(package-name *package*)) + :use '(:cl :asdf)))) + (format *verbose-out* + "~&~@<; ~@;loading system definition from ~A into ~A~@:>~%" + ;; FIXME: This wants to be (ENOUGH-NAMESTRING + ;; ON-DISK), but CMUCL barfs on that. + on-disk + *package*) + (load on-disk))) + (let ((in-memory (gethash name *defined-systems*))) + (if in-memory + (progn (if on-disk (setf (car in-memory) (file-write-date on-disk))) + (cdr in-memory)) + (if error-p (error 'missing-component :requires name)))))) + +(defun register-system (name system) + (format *verbose-out* "~&~@<; ~@;registering ~A as ~A~@:>~%" system name) + (setf (gethash (coerce-name name) *defined-systems*) + (cons (get-universal-time) system))) + +(defun system-registered-p (name) + (gethash (coerce-name name) *defined-systems*)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; finding components + +(defgeneric find-component (module name &optional version) + (:documentation "Finds the component with name NAME present in the +MODULE module; if MODULE is nil, then the component is assumed to be a +system.")) + +(defmethod find-component ((module module) name &optional version) + (if (slot-boundp module 'components) + (let ((m (find name (module-components module) + :test #'equal :key #'component-name))) + (if (and m (version-satisfies m version)) m)))) + + +;;; a component with no parent is a system +(defmethod find-component ((module (eql nil)) name &optional version) + (let ((m (find-system name nil))) + (if (and m (version-satisfies m version)) m))) + +;;; component subclasses + +(defclass source-file (component) ()) + +(defclass cl-source-file (source-file) ()) +(defclass c-source-file (source-file) ()) +(defclass java-source-file (source-file) ()) +(defclass static-file (source-file) ()) +(defclass doc-file (static-file) ()) +(defclass html-file (doc-file) ()) + +(defgeneric source-file-type (component system)) +(defmethod source-file-type ((c cl-source-file) (s module)) "lisp") +(defmethod source-file-type ((c c-source-file) (s module)) "c") +(defmethod source-file-type ((c java-source-file) (s module)) "java") +(defmethod source-file-type ((c html-file) (s module)) "html") +(defmethod source-file-type ((c static-file) (s module)) nil) + +(defmethod component-relative-pathname ((component source-file)) + (let* ((*default-pathname-defaults* (component-parent-pathname component)) + (name-type + (make-pathname + :name (component-name component) + :type (source-file-type component + (component-system component))))) + (if (slot-value component 'relative-pathname) + (merge-pathnames + (slot-value component 'relative-pathname) + name-type) + name-type))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; operations + +;;; one of these is instantiated whenever (operate ) is called + +(defclass operation () + ((forced :initform nil :initarg :force :accessor operation-forced) + (original-initargs :initform nil :initarg :original-initargs + :accessor operation-original-initargs) + (visited-nodes :initform nil :accessor operation-visited-nodes) + (visiting-nodes :initform nil :accessor operation-visiting-nodes) + (parent :initform nil :initarg :parent :accessor operation-parent))) + +(defmethod print-object ((o operation) stream) + (print-unreadable-object (o stream :type t :identity t) + (ignore-errors + (prin1 (operation-original-initargs o) stream)))) + +(defmethod shared-initialize :after ((operation operation) slot-names + &key force + &allow-other-keys) + (declare (ignore slot-names force)) + ;; empty method to disable initarg validity checking + ) + +(defgeneric perform (operation component)) +(defgeneric operation-done-p (operation component)) +(defgeneric explain (operation component)) +(defgeneric output-files (operation component)) +(defgeneric input-files (operation component)) + +(defun node-for (o c) + (cons (class-name (class-of o)) c)) + +(defgeneric operation-ancestor (operation) + (:documentation "Recursively chase the operation's parent pointer until we get to the head of the tree")) + +(defmethod operation-ancestor ((operation operation)) + (aif (operation-parent operation) + (operation-ancestor it) + operation)) + + +(defun make-sub-operation (c o dep-c dep-o) + (let* ((args (copy-list (operation-original-initargs o))) + (force-p (getf args :force))) + ;; note explicit comparison with T: any other non-NIL force value + ;; (e.g. :recursive) will pass through + (cond ((and (null (component-parent c)) + (null (component-parent dep-c)) + (not (eql c dep-c))) + (when (eql force-p t) + (setf (getf args :force) nil)) + (apply #'make-instance dep-o + :parent o + :original-initargs args args)) + ((subtypep (type-of o) dep-o) + o) + (t + (apply #'make-instance dep-o + :parent o :original-initargs args args))))) + + +(defgeneric visit-component (operation component data)) + +(defmethod visit-component ((o operation) (c component) data) + (unless (component-visited-p o c) + (push (cons (node-for o c) data) + (operation-visited-nodes (operation-ancestor o))))) + +(defgeneric component-visited-p (operation component)) + +(defmethod component-visited-p ((o operation) (c component)) + (assoc (node-for o c) + (operation-visited-nodes (operation-ancestor o)) + :test 'equal)) + +(defgeneric (setf visiting-component) (new-value operation component)) + +(defmethod (setf visiting-component) (new-value operation component) + ;; MCL complains about unused lexical variables + (declare (ignorable new-value operation component))) + +(defmethod (setf visiting-component) (new-value (o operation) (c component)) + (let ((node (node-for o c)) + (a (operation-ancestor o))) + (if new-value + (pushnew node (operation-visiting-nodes a) :test 'equal) + (setf (operation-visiting-nodes a) + (remove node (operation-visiting-nodes a) :test 'equal))))) + +(defgeneric component-visiting-p (operation component)) + +(defmethod component-visiting-p ((o operation) (c component)) + (let ((node (cons o c))) + (member node (operation-visiting-nodes (operation-ancestor o)) + :test 'equal))) + +(defgeneric component-depends-on (operation component)) + +(defmethod component-depends-on ((o operation) (c component)) + (cdr (assoc (class-name (class-of o)) + (slot-value c 'in-order-to)))) + +(defgeneric component-self-dependencies (operation component)) + +(defmethod component-self-dependencies ((o operation) (c component)) + (let ((all-deps (component-depends-on o c))) + (remove-if-not (lambda (x) + (member (component-name c) (cdr x) :test #'string=)) + all-deps))) + +(defmethod input-files ((operation operation) (c component)) + (let ((parent (component-parent c)) + (self-deps (component-self-dependencies operation c))) + (if self-deps + (mapcan (lambda (dep) + (destructuring-bind (op name) dep + (output-files (make-instance op) + (find-component parent name)))) + self-deps) + ;; no previous operations needed? I guess we work with the + ;; original source file, then + (list (component-pathname c))))) + +(defmethod input-files ((operation operation) (c module)) nil) + +(defmethod operation-done-p ((o operation) (c component)) + (let ((out-files (output-files o c)) + (in-files (input-files o c))) + (cond ((and (not in-files) (not out-files)) + ;; arbitrary decision: an operation that uses nothing to + ;; produce nothing probably isn't doing much + t) + ((not out-files) + (let ((op-done + (gethash (type-of o) + (component-operation-times c)))) + (and op-done + (>= op-done + (or (apply #'max + (mapcar #'file-write-date in-files)) 0))))) + ((not in-files) nil) + (t + (and + (every #'probe-file out-files) + (> (apply #'min (mapcar #'file-write-date out-files)) + (apply #'max (mapcar #'file-write-date in-files)) )))))) + +;;; So you look at this code and think "why isn't it a bunch of +;;; methods". And the answer is, because standard method combination +;;; runs :before methods most->least-specific, which is back to front +;;; for our purposes. And CLISP doesn't have non-standard method +;;; combinations, so let's keep it simple and aspire to portability + +(defgeneric traverse (operation component)) +(defmethod traverse ((operation operation) (c component)) + (let ((forced nil)) + (labels ((do-one-dep (required-op required-c required-v) + (let* ((dep-c (or (find-component + (component-parent c) + ;; XXX tacky. really we should build the + ;; in-order-to slot with canonicalized + ;; names instead of coercing this late + (coerce-name required-c) required-v) + (error 'missing-dependency :required-by c + :version required-v + :requires required-c))) + (op (make-sub-operation c operation dep-c required-op))) + (traverse op dep-c))) + (do-dep (op dep) + (cond ((eq op 'feature) + (or (member (car dep) *features*) + (error 'missing-dependency :required-by c + :requires (car dep) :version nil))) + (t + (dolist (d dep) + (cond ((consp d) + (assert (string-equal + (symbol-name (first d)) + "VERSION")) + (appendf forced + (do-one-dep op (second d) (third d)))) + (t + (appendf forced (do-one-dep op d nil))))))))) + (aif (component-visited-p operation c) + (return-from traverse + (if (cdr it) (list (cons 'pruned-op c)) nil))) + ;; dependencies + (if (component-visiting-p operation c) + (error 'circular-dependency :components (list c))) + (setf (visiting-component operation c) t) + (loop for (required-op . deps) in (component-depends-on operation c) + do (do-dep required-op deps)) + ;; constituent bits + (let ((module-ops + (when (typep c 'module) + (let ((at-least-one nil) + (forced nil) + (error nil)) + (loop for kid in (module-components c) + do (handler-case + (appendf forced (traverse operation kid )) + (missing-dependency (condition) + (if (eq (module-if-component-dep-fails c) :fail) + (error condition)) + (setf error condition)) + (:no-error (c) + (declare (ignore c)) + (setf at-least-one t)))) + (when (and (eq (module-if-component-dep-fails c) :try-next) + (not at-least-one)) + (error error)) + forced)))) + ;; now the thing itself + (when (or forced module-ops + (not (operation-done-p operation c)) + (let ((f (operation-forced (operation-ancestor operation)))) + (and f (or (not (consp f)) + (member (component-name + (operation-ancestor operation)) + (mapcar #'coerce-name f) + :test #'string=))))) + (let ((do-first (cdr (assoc (class-name (class-of operation)) + (slot-value c 'do-first))))) + (loop for (required-op . deps) in do-first + do (do-dep required-op deps))) + (setf forced (append (delete 'pruned-op forced :key #'car) + (delete 'pruned-op module-ops :key #'car) + (list (cons operation c)))))) + (setf (visiting-component operation c) nil) + (visit-component operation c (and forced t)) + forced))) + + +(defmethod perform ((operation operation) (c source-file)) + (sysdef-error + "~@" + (class-of operation) (class-of c))) + +(defmethod perform ((operation operation) (c module)) + nil) + +(defmethod explain ((operation operation) (component component)) + (format *verbose-out* "~&;;; ~A on ~A~%" operation component)) + +;;; compile-op + +(defclass compile-op (operation) + ((proclamations :initarg :proclamations :accessor compile-op-proclamations :initform nil) + (on-warnings :initarg :on-warnings :accessor operation-on-warnings + :initform *compile-file-warnings-behaviour*) + (on-failure :initarg :on-failure :accessor operation-on-failure + :initform *compile-file-failure-behaviour*))) + +(defmethod perform :before ((operation compile-op) (c source-file)) + (map nil #'ensure-directories-exist (output-files operation c))) + +(defmethod perform :after ((operation operation) (c component)) + (setf (gethash (type-of operation) (component-operation-times c)) + (get-universal-time))) + +;;; perform is required to check output-files to find out where to put +;;; its answers, in case it has been overridden for site policy +(defmethod perform ((operation compile-op) (c cl-source-file)) + #-:broken-fasl-loader + (let ((source-file (component-pathname c)) + (output-file (car (output-files operation c)))) + (multiple-value-bind (output warnings-p failure-p) + (compile-file source-file + :output-file output-file) + ;(declare (ignore output)) + (when warnings-p + (case (operation-on-warnings operation) + (:warn (warn + "~@" + operation c)) + (:error (error 'compile-warned :component c :operation operation)) + (:ignore nil))) + (when failure-p + (case (operation-on-failure operation) + (:warn (warn + "~@" + operation c)) + (:error (error 'compile-failed :component c :operation operation)) + (:ignore nil))) + (unless output + (error 'compile-error :component c :operation operation))))) + +(defmethod output-files ((operation compile-op) (c cl-source-file)) + #-:broken-fasl-loader (list (compile-file-pathname (component-pathname c))) + #+:broken-fasl-loader (list (component-pathname c))) + +(defmethod perform ((operation compile-op) (c static-file)) + nil) + +(defmethod output-files ((operation compile-op) (c static-file)) + nil) + +;;; load-op + +(defclass load-op (operation) ()) + +(defmethod perform ((o load-op) (c cl-source-file)) + (mapcar #'load (input-files o c))) + +(defmethod perform ((operation load-op) (c static-file)) + nil) +(defmethod operation-done-p ((operation load-op) (c static-file)) + t) + +(defmethod output-files ((o operation) (c component)) + nil) + +(defmethod component-depends-on ((operation load-op) (c component)) + (cons (list 'compile-op (component-name c)) + (call-next-method))) + +;;; load-source-op + +(defclass load-source-op (operation) ()) + +(defmethod perform ((o load-source-op) (c cl-source-file)) + (let ((source (component-pathname c))) + (setf (component-property c 'last-loaded-as-source) + (and (load source) + (get-universal-time))))) + +(defmethod perform ((operation load-source-op) (c static-file)) + nil) + +(defmethod output-files ((operation load-source-op) (c component)) + nil) + +;;; FIXME: we simply copy load-op's dependencies. this is Just Not Right. +(defmethod component-depends-on ((o load-source-op) (c component)) + (let ((what-would-load-op-do (cdr (assoc 'load-op + (slot-value c 'in-order-to))))) + (mapcar (lambda (dep) + (if (eq (car dep) 'load-op) + (cons 'load-source-op (cdr dep)) + dep)) + what-would-load-op-do))) + +(defmethod operation-done-p ((o load-source-op) (c source-file)) + (if (or (not (component-property c 'last-loaded-as-source)) + (> (file-write-date (component-pathname c)) + (component-property c 'last-loaded-as-source))) + nil t)) + +(defclass test-op (operation) ()) + +(defmethod perform ((operation test-op) (c component)) + nil) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; invoking operations + +(defun operate (operation-class system &rest args) + (let* ((op (apply #'make-instance operation-class + :original-initargs args args)) + (*verbose-out* + (if (getf args :verbose t) + *trace-output* + (make-broadcast-stream))) + (system (if (typep system 'component) system (find-system system))) + (steps (traverse op system))) + (with-compilation-unit () + (loop for (op . component) in steps do + (loop + (restart-case + (progn (perform op component) + (return)) + (retry () + :report + (lambda (s) + (format s "~@" + op component))) + (accept () + :report + (lambda (s) + (format s + "~@" + op component)) + (setf (gethash (type-of op) + (component-operation-times component)) + (get-universal-time)) + (return)))))))) + +(defun oos (&rest args) + "Alias of OPERATE function" + (apply #'operate args)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; syntax + +(defun remove-keyword (key arglist) + (labels ((aux (key arglist) + (cond ((null arglist) nil) + ((eq key (car arglist)) (cddr arglist)) + (t (cons (car arglist) (cons (cadr arglist) + (remove-keyword + key (cddr arglist)))))))) + (aux key arglist))) + +(defmacro defsystem (name &body options) + (destructuring-bind (&key pathname (class 'system) &allow-other-keys) options + (let ((component-options (remove-keyword :class options))) + `(progn + ;; system must be registered before we parse the body, otherwise + ;; we recur when trying to find an existing system of the same name + ;; to reuse options (e.g. pathname) from + (let ((s (system-registered-p ',name))) + (cond ((and s (eq (type-of (cdr s)) ',class)) + (setf (car s) (get-universal-time))) + (s + #+clisp + (sysdef-error "Cannot redefine the existing system ~A with a different class" s) + #-clisp + (change-class (cdr s) ',class)) + (t + (register-system (quote ,name) + (make-instance ',class :name ',name))))) + (parse-component-form nil (apply + #'list + :module (coerce-name ',name) + :pathname + (or ,pathname + (pathname-sans-name+type + (resolve-symlinks *load-truename*)) + *default-pathname-defaults*) + ',component-options)))))) + + +(defun class-for-type (parent type) + (let ((class + (find-class + (or (find-symbol (symbol-name type) *package*) + (find-symbol (symbol-name type) #.(package-name *package*))) + nil))) + (or class + (and (eq type :file) + (or (module-default-component-class parent) + (find-class 'cl-source-file))) + (sysdef-error "~@" type)))) + +(defun maybe-add-tree (tree op1 op2 c) + "Add the node C at /OP1/OP2 in TREE, unless it's there already. +Returns the new tree (which probably shares structure with the old one)" + (let ((first-op-tree (assoc op1 tree))) + (if first-op-tree + (progn + (aif (assoc op2 (cdr first-op-tree)) + (if (find c (cdr it)) + nil + (setf (cdr it) (cons c (cdr it)))) + (setf (cdr first-op-tree) + (acons op2 (list c) (cdr first-op-tree)))) + tree) + (acons op1 (list (list op2 c)) tree)))) + +(defun union-of-dependencies (&rest deps) + (let ((new-tree nil)) + (dolist (dep deps) + (dolist (op-tree dep) + (dolist (op (cdr op-tree)) + (dolist (c (cdr op)) + (setf new-tree + (maybe-add-tree new-tree (car op-tree) (car op) c)))))) + new-tree)) + + +(defun remove-keys (key-names args) + (loop for ( name val ) on args by #'cddr + unless (member (symbol-name name) key-names + :key #'symbol-name :test 'equal) + append (list name val))) + +(defvar *serial-depends-on*) + +(defun parse-component-form (parent options) + (destructuring-bind + (type name &rest rest &key + ;; the following list of keywords is reproduced below in the + ;; remove-keys form. important to keep them in sync + components pathname default-component-class + perform explain output-files operation-done-p + depends-on serial in-order-to + ;; list ends + &allow-other-keys) options + (check-component-input type name depends-on components in-order-to) + (let* ((other-args (remove-keys + '(components pathname default-component-class + perform explain output-files operation-done-p + depends-on serial in-order-to) + rest)) + (ret + (or (find-component parent name) + (make-instance (class-for-type parent type))))) + (when (boundp '*serial-depends-on*) + (setf depends-on + (concatenate 'list *serial-depends-on* depends-on))) + (apply #'reinitialize-instance + ret + :name (coerce-name name) + :pathname pathname + :parent parent + other-args) + (when (typep ret 'module) + (setf (module-default-component-class ret) + (or default-component-class + (and (typep parent 'module) + (module-default-component-class parent)))) + (let ((*serial-depends-on* nil)) + (setf (module-components ret) + (loop for c-form in components + for c = (parse-component-form ret c-form) + collect c + if serial + do (push (component-name c) *serial-depends-on*))))) + + (setf (slot-value ret 'in-order-to) + (union-of-dependencies + in-order-to + `((compile-op (compile-op , at depends-on)) + (load-op (load-op , at depends-on)))) + (slot-value ret 'do-first) `((compile-op (load-op , at depends-on)))) + + (loop for (n v) in `((perform ,perform) (explain ,explain) + (output-files ,output-files) + (operation-done-p ,operation-done-p)) + do (map 'nil + ;; this is inefficient as most of the stored + ;; methods will not be for this particular gf n + ;; But this is hardly performance-critical + (lambda (m) (remove-method (symbol-function n) m)) + (component-inline-methods ret)) + when v + do (destructuring-bind (op qual (o c) &body body) v + (pushnew + (eval `(defmethod ,n ,qual ((,o ,op) (,c (eql ,ret))) + , at body)) + (component-inline-methods ret)))) + ret))) + +(defun check-component-input (type name depends-on components in-order-to) + "A partial test of the values of a component." + (unless (listp depends-on) + (sysdef-error-component ":depends-on must be a list." + type name depends-on)) + (unless (listp components) + (sysdef-error-component ":components must be NIL or a list of components." + type name components)) + (unless (and (listp in-order-to) (listp (car in-order-to))) + (sysdef-error-component ":in-order-to must be NIL or a list of components." + type name in-order-to))) + +(defun sysdef-error-component (msg type name value) + (sysdef-error (concatenate 'string msg + "~&The value specified for ~(~A~) ~A is ~W") + type name value)) + +(defun resolve-symlinks (path) + #-allegro (truename path) + #+allegro (excl:pathname-resolve-symbolic-links path) + ) + +;;; optional extras + +;;; run-shell-command functions for other lisp implementations will be +;;; gratefully accepted, if they do the same thing. If the docstring +;;; is ambiguous, send a bug report + +(defun run-shell-command (control-string &rest args) + "Interpolate ARGS into CONTROL-STRING as if by FORMAT, and +synchronously execute the result using a Bourne-compatible shell, with +output to *verbose-out*. Returns the shell's exit code." + (let ((command (apply #'format nil control-string args))) + (format *verbose-out* "; $ ~A~%" command) + #+sbcl + (sb-impl::process-exit-code + (sb-ext:run-program + "/bin/sh" + (list "-c" command) + :input nil :output *verbose-out*)) + + #+(or cmu scl) + (ext:process-exit-code + (ext:run-program + "/bin/sh" + (list "-c" command) + :input nil :output *verbose-out*)) + + #+allegro + (excl:run-shell-command command :input nil :output *verbose-out*) + + #+lispworks + (system:call-system-showing-output + command + :shell-type "/bin/sh" + :output-stream *verbose-out*) + + #+clisp ;XXX not exactly *verbose-out*, I know + (ext:run-shell-command command :output :terminal :wait t) + + #+openmcl + (nth-value 1 + (ccl:external-process-status + (ccl:run-program "/bin/sh" (list "-c" command) + :input nil :output *verbose-out* + :wait t))) + #+ecl ;; courtesy of Juan Jose Garcia Ripoll + (si:system command) + #-(or openmcl clisp lispworks allegro scl cmu sbcl ecl) + (error "RUN-SHELL-PROGRAM not implemented for this Lisp") + )) + + +(defgeneric hyperdocumentation (package name doc-type)) +(defmethod hyperdocumentation ((package symbol) name doc-type) + (hyperdocumentation (find-package package) name doc-type)) + +(defun hyperdoc (name doc-type) + (hyperdocumentation (symbol-package name) name doc-type)) + + +(pushnew :asdf *features*) + +#+sbcl +(eval-when (:compile-toplevel :load-toplevel :execute) + (when (sb-ext:posix-getenv "SBCL_BUILDING_CONTRIB") + (pushnew :sbcl-hooks-require *features*))) + +#+(and sbcl sbcl-hooks-require) +(progn + (defun module-provide-asdf (name) + (handler-bind ((style-warning #'muffle-warning)) + (let* ((*verbose-out* (make-broadcast-stream)) + (system (asdf:find-system name nil))) + (when system + (asdf:operate 'asdf:load-op name) + t)))) + + (pushnew + '(merge-pathnames "systems/" + (truename (sb-ext:posix-getenv "SBCL_HOME"))) + *central-registry*) + + (pushnew + '(merge-pathnames "site-systems/" + (truename (sb-ext:posix-getenv "SBCL_HOME"))) + *central-registry*) + + (pushnew + '(merge-pathnames ".sbcl/systems/" + (user-homedir-pathname)) + *central-registry*) + + (pushnew 'module-provide-asdf sb-ext:*module-provider-functions*)) + +(provide 'asdf) Added: clfswm/bindings-second-mode.lisp ============================================================================== --- (empty file) +++ clfswm/bindings-second-mode.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,731 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Thu Feb 28 21:38:00 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Bindings keys and mouse for second mode +;;; +;;; Note: Mod-1 is the Alt or Meta key, Mod-2 is the Numlock key. +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +;;;,----- +;;;| Second keys +;;;| +;;;| CONFIG - Second mode bindings +;;;`----- + + + +;;;;;;;;;;;;;;; +;; Menu entry +;;;;;;;;;;;;;;; +(defun group-adding-menu () + "Adding group menu" + (info-mode-menu '((#\a add-default-group) + (#\p add-placed-group)))) + +(defun group-layout-menu () + "Group layout menu" + (info-mode-menu (loop for l in *layout-list* + for i from 0 + collect (list (code-char (+ (char-code #\a) i)) l)))) + + + + + +(defun group-pack-menu () + "Group pack menu" + (info-mode-menu '(("Up" group-pack-up) + ("Down" group-pack-down)))) + + +(defun group-movement-menu () + "Group movement menu" + (info-mode-menu '((#\p group-pack-menu) + (#\f group-fill-menu) + (#\r group-resize-menu)))) + + +(defun group-pack-up () + "Pack group up" + (print 'pack-up) + (group-movement-menu)) + +(defun group-pack-down () + "Pack group down" + (print 'pack-down) + (group-movement-menu)) + + + + + + + +(defun action-by-name-menu () + "Actions by name menu" + (info-mode-menu '((#\f focus-group-by-name) + (#\o open-group-by-name) + (#\d delete-group-by-name) + (#\m move-current-child-by-name) + (#\c copy-current-child-by-name)))) + +(defun action-by-number-menu () + "Actions by number menu" + (info-mode-menu '((#\f focus-group-by-number) + (#\o open-group-by-number) + (#\d delete-group-by-number) + (#\m move-current-child-by-number) + (#\c copy-current-child-by-number)))) + + +(defun group-menu () + "Group menu" + (info-mode-menu '((#\a group-adding-menu) + (#\l group-layout-menu) + (#\m group-movement-menu)))) + + + +(defun selection-menu () + "Selection menu" + (info-mode-menu '((#\x cut-current-child) + (#\c copy-current-child) + (#\v paste-selection) + (#\p paste-selection-no-clear) + ("Delete" remove-current-child) + (#\z clear-selection)))) + + +(defun utility-menu () + "Utility menu" + (info-mode-menu '((#\i identify-key) + (#\: eval-from-query-string) + (#\! run-program-from-query-string)))) + +(defun main-menu () + "Open the main menu" + (info-mode-menu '((#\g group-menu) + ;;(#\w window-menu) + (#\s selection-menu) + (#\n action-by-name-menu) + (#\u action-by-number-menu) + (#\y utility-menu)))) + + + + + + +(define-second-key ("F1" :mod-1) 'help-on-second-mode) + +(define-second-key ("m") 'main-menu) +(define-second-key ("g") 'group-menu) +(define-second-key ("n") 'action-by-name-menu) +(define-second-key ("u") 'action-by-number-menu) + + +;;(define-second-key (#\g :control) 'stop-all-pending-actions) + +(define-second-key (#\i) 'identify-key) +(define-second-key (#\:) 'eval-from-query-string) + +(define-second-key (#\!) 'run-program-from-query-string) + + +(define-second-key (#\t) 'leave-second-mode) +(define-second-key ("Return") 'leave-second-mode) +(define-second-key ("Escape") 'leave-second-mode) + + +(define-second-key (#\< :control) 'leave-second-mode) + + + + +(define-second-key ("Home" :mod-1 :control :shift) 'quit-clfswm) + +(define-second-key ("Right" :mod-1) 'select-next-brother) +(define-second-key ("Left" :mod-1) 'select-previous-brother) + +(define-second-key ("Down" :mod-1) 'select-next-level) +(define-second-key ("Up" :mod-1) 'select-previous-level) + +(define-second-key ("Tab" :mod-1) 'select-next-child) +(define-second-key ("Tab" :mod-1 :shift) 'select-previous-child) + +(define-second-key ("Return" :mod-1) 'enter-group) +(define-second-key ("Return" :mod-1 :shift) 'leave-group) + +(define-second-key ("Home" :mod-1) 'switch-to-root-group) +(define-second-key ("Home" :mod-1 :shift) 'switch-and-select-root-group) + +(define-second-key ("Menu") 'toggle-show-root-group) + +(define-second-key (#\b :mod-1) 'banish-pointer) + + +;;;; Escape +(define-second-key ("Escape" :control :shift) 'delete-focus-window) +(define-second-key ("Escape" :mod-1 :control :shift) 'destroy-focus-window) +(define-second-key ("Escape" :control) 'remove-focus-window) +(define-second-key ("Escape" :shift) 'unhide-all-windows-in-current-child) + + +;;; Selection +(define-second-key ("x" :control) 'cut-current-child) +(define-second-key ("x" :control :mod-1) 'clear-selection) +(define-second-key ("c" :control) 'copy-current-child) +(define-second-key ("v" :control) 'paste-selection) +(define-second-key ("v" :control :shift) 'paste-selection-no-clear) +(define-second-key ("Delete") 'remove-current-child) + + + + + +(defun sm-handle-click-to-focus (root-x root-y) + "Give the focus to the clicked child" + (let ((win (find-child-under-mouse root-x root-y))) + (handle-click-to-focus win))) + +(define-mouse-action (1) 'sm-handle-click-to-focus) + + + + + + +;;;; Escape +;;(define-second-key ("Escape" :control :shift) 'delete-current-window) +;;(define-second-key ("Escape" :mod-1 :control :shift) 'destroy-current-window) +;;(define-second-key ("Escape" :control) 'remove-current-window) +;;(define-second-key ("Escape" :shift) 'unhide-all-windows-in-current-group) +;; +;; +;;;; Up +;;(define-second-key ("Up" :mod-1) 'circulate-group-up) +;;(define-second-key ("Up" :mod-1 :shift) 'circulate-group-up-move-window) +;;(define-second-key ("Up" :mod-1 :shift :control) 'circulate-group-up-copy-window) +;; +;; +;;;; Down +;;(define-second-key ("Down" :mod-1) 'circulate-group-down) +;;(define-second-key ("Down" :mod-1 :shift) 'circulate-group-down-move-window) +;;(define-second-key ("Down" :mod-1 :shift :control) 'circulate-group-down-copy-window) +;; +;; +;;;; Right +;;(define-second-key ("Right" :mod-1) 'circulate-workspace-up) +;;(define-second-key ("Right" :mod-1 :shift) 'circulate-workspace-up-move-group) +;;(define-second-key ("Right" :mod-1 :shift :control) 'circulate-workspace-up-copy-group) +;; +;; +;;;; Left +;;(define-second-key ("Left" :mod-1) 'circulate-workspace-down) +;;(define-second-key ("Left" :mod-1 :shift) 'circulate-workspace-down-move-group) +;;(define-second-key ("Left" :mod-1 :shift :control) 'circulate-workspace-down-copy-group) +;; +;; +;;(defmacro define-second-focus-workspace-by-number (key number) +;; "Define a second key to focus a workspace by its number" +;; `(define-second-key ,key +;; (defun ,(create-symbol (format nil "b-second-focus-workspace-~A" number)) () +;; ,(format nil "Focus workspace ~A" number) +;; (circulate-workspace-by-number ,number)))) +;; +;;(define-second-focus-workspace-by-number (#\1 :mod-1) 1) +;;(define-second-focus-workspace-by-number (#\2 :mod-1) 2) +;;(define-second-focus-workspace-by-number (#\3 :mod-1) 3) +;;(define-second-focus-workspace-by-number (#\4 :mod-1) 4) +;;(define-second-focus-workspace-by-number (#\5 :mod-1) 5) +;;(define-second-focus-workspace-by-number (#\6 :mod-1) 6) +;;(define-second-focus-workspace-by-number (#\7 :mod-1) 7) +;;(define-second-focus-workspace-by-number (#\8 :mod-1) 8) +;;(define-second-focus-workspace-by-number (#\9 :mod-1) 9) +;;(define-second-focus-workspace-by-number (#\0 :mod-1) 10) +;; +;;(define-second-key (#\1 :control :mod-1) 'renumber-workspaces) +;;(define-second-key (#\2 :control :mod-1) 'sort-workspaces) +;; +;; +;; +;; +;; +;;(define-second-key ("Tab" :mod-1) 'rotate-window-up) +;;(define-second-key ("Tab" :mod-1 :shift) 'rotate-window-down) +;; +;;(define-second-key (#\b) 'banish-pointer) +;; +;;(define-second-key (#\b :mod-1) 'toggle-maximize-current-group) +;; +;;(define-second-key (#\x) 'pager-mode) +;; +;; +;;(define-second-key (#\k :mod-1) 'destroy-current-window) +;;(define-second-key (#\k) 'remove-current-window) +;; +;; +;;(define-second-key (#\g) 'create-new-default-group) +;;(define-second-key (#\g :mod-1) 'remove-current-group) +;; +;;(define-second-key (#\w) 'create-new-default-workspace) +;;(define-second-key (#\w :mod-1) 'remove-current-workspace) +;; +;;(define-second-key (#\o) +;; (defun b-open-next-window-in-new-workspace () +;; "Open the next window in a new workspace" +;; (setf *open-next-window-in-new-workspace* t) +;; (leave-second-mode))) +;; +;;(define-second-key (#\o :control) +;; (defun b-open-next-window-in-workspace-numbered () +;; "Open the next window in a numbered workspace" +;; (let ((number (parse-integer (or (query-string "Open next window in workspace:") "") +;; :junk-allowed t))) +;; (when (numberp number) +;; (setf *open-next-window-in-new-workspace* number))) +;; (leave-second-mode))) +;; +;; +;;(define-second-key (#\o :mod-1) +;; (defun b-open-next-window-in-new-group-once () +;; "Open the next window in a new group and all others in the same group" +;; (setf *open-next-window-in-new-group* :once) +;; (leave-second-mode))) +;; +;;(define-second-key (#\o :mod-1 :control) +;; (defun b-open-next-window-in-new-group () +;; "Open each next window in a new group" +;; (setf *open-next-window-in-new-group* t) +;; (leave-second-mode))) +;; +;; +;; +;;(defmacro define-shell (key name docstring cmd) +;; "Define a second key to start a shell command" +;; `(define-second-key ,key +;; (defun ,name () +;; ,docstring +;; (setf *second-mode-program* ,cmd) +;; (leave-second-mode)))) +;; +;;(define-shell (#\c) b-start-xterm "start an xterm" "exec xterm") +;;(define-shell (#\e) b-start-emacs "start emacs" "exec emacs") +;;(define-shell (#\e :control) b-start-emacsremote +;; "start an emacs for another user" +;; "exec emacsremote-Eterm") +;;(define-shell (#\h) b-start-xclock "start an xclock" "exec xclock -d") +;; +;; +;;(define-second-key (#\a) 'force-window-center-in-group) +;;(define-second-key (#\a :mod-1) 'force-window-in-group) +;; +;; +;;(define-second-key (#\d :mod-1) +;; (defun b-show-debuging-info () +;; "Show debuging info" +;; (dbg *workspace-list*) +;; (dbg *screen*) +;; (dbg (xlib:query-tree *root*)))) +;; +;;(define-second-key (#\t :control) 'tile-current-workspace-vertically) +;;(define-second-key (#\t :shift :control) 'tile-current-workspace-horizontally) +;; +;;(define-second-key (#\y) 'tile-current-workspace-to) +;;(define-second-key (#\y :mod-1) 'reconfigure-tile-workspace) +;;(define-second-key (#\y :control) 'explode-current-group) +;;(define-second-key (#\y :control :shift) 'implode-current-group) +;; +;;;;;,----- +;;;;;| Moving/Resizing groups +;;;;;`----- +;;(define-second-key (#\p) +;; (defun b-pack-group-on-next-arrow () +;; "Pack group on next arrow action" +;; (setf *arrow-action* :pack))) +;; +;; +;;(defun fill-group-in-all-directions () +;; "Fill group in all directions" +;; (fill-current-group-up) +;; (fill-current-group-left) +;; (fill-current-group-right) +;; (fill-current-group-down)) +;; +;; +;;(define-second-key (#\f) +;; (defun b-fill-group () +;; "Fill group on next arrow action (fill in all directions on second f keypress)" +;; (case *arrow-action* +;; (:fill (fill-group-in-all-directions) +;; (setf *arrow-action* nil)) +;; (t (setf *arrow-action* :fill))))) +;; +;;(define-second-key (#\f :mod-1) 'fill-group-in-all-directions) +;; +;;(define-second-key (#\f :shift) +;; (defun b-fill-group-vert () +;; "Fill group vertically" +;; (fill-current-group-up) +;; (fill-current-group-down))) +;; +;;(define-second-key (#\f :control) +;; (defun b-fill-group-horiz () +;; "Fill group horizontally" +;; (fill-current-group-left) +;; (fill-current-group-right))) +;; +;; +;;(define-second-key (#\r) +;; (defun b-resize-half () +;; "Resize group to its half width or heigth on next arraw action" +;; (setf *arrow-action* :resize-half))) +;; +;; +;;(define-second-key (#\l) 'resize-minimal-current-group) +;;(define-second-key (#\l :mod-1) 'resize-down-current-group) +;; +;; +;;(define-second-key (#\m) 'center-current-group) +;; +;; +;;(define-second-key ("Up") +;; (defun b-move-or-pack-up () +;; "Move, pack, fill or resize group up" +;; (case *arrow-action* +;; (:pack (pack-current-group-up)) +;; (:fill (fill-current-group-up)) +;; (:resize-half (resize-half-height-up-current-group)) +;; (t (move-group (current-group) 0 -10))) +;; (setf *arrow-action* nil))) +;; +;;(define-second-key ("Down") +;; (defun b-move-or-pack-down () +;; "Move, pack, fill or resize group down" +;; (case *arrow-action* +;; (:pack (pack-current-group-down)) +;; (:fill (fill-current-group-down)) +;; (:resize-half (resize-half-height-down-current-group)) +;; (t (move-group (current-group) 0 +10))) +;; (setf *arrow-action* nil))) +;; +;;(define-second-key ("Right") +;; (defun b-move-or-pack-right () +;; "Move, pack, fill or resize group right" +;; (case *arrow-action* +;; (:pack (pack-current-group-right)) +;; (:fill (fill-current-group-right)) +;; (:resize-half (resize-half-width-right-current-group)) +;; (t (move-group (current-group) +10 0))) +;; (setf *arrow-action* nil))) +;; +;;(define-second-key ("Left") +;; (defun b-move-or-pack-left () +;; "Move, pack, fill or resize group left" +;; (case *arrow-action* +;; (:pack (pack-current-group-left)) +;; (:fill (fill-current-group-left)) +;; (:resize-half (resize-half-width-left-current-group)) +;; (t (move-group (current-group) -10 0))) +;; (setf *arrow-action* nil))) +;; +;; +;;(define-second-key ("Up" :shift) +;; (defun b-resize-up () +;; "Resize group up" +;; (resize-group (current-group) 0 -10))) +;; +;;(define-second-key ("Down" :shift) +;; (defun b-resize-down () +;; "Resize group down" +;; (resize-group (current-group) 0 +10))) +;; +;;(define-second-key ("Right" :shift) +;; (defun b-resize-right () +;; "Resize group right" +;; (resize-group (current-group) +10 0))) +;; +;;(define-second-key ("Left" :shift) +;; (defun b-resize-left () +;; "Resize group left" +;; (resize-group (current-group) -10 0))) +;; +;; +;;;;;,----- +;;;;;| Mouse second mode functions +;;;;;`----- +;;(defun select-group-under-mouse (root-x root-y) +;; (let ((group (find-group-under-mouse root-x root-y))) +;; (when group +;; (no-focus) +;; (focus-group group (current-workspace)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace) nil)))) +;; +;;(defun mouse-leave-second-mode-maximize (root-x root-y) +;; "Leave second mode and maximize current group" +;; (select-group-under-mouse root-x root-y) +;; (maximize-group (current-group)) +;; (show-all-windows-in-workspace (current-workspace)) +;; (throw 'exit-second-loop nil)) +;; +;;(defun mouse-leave-second-mode (root-x root-y) +;; "Leave second mode" +;; (select-group-under-mouse root-x root-y) +;; (show-all-windows-in-workspace (current-workspace)) +;; (throw 'exit-second-loop nil)) +;; +;; +;; +;; +;;(defun mouse-circulate-window-up (root-x root-y) +;; "Rotate window up" +;; (declare (ignore root-x root-y)) +;; (rotate-window-up)) +;; +;; +;;(defun mouse-circulate-window-down (root-x root-y) +;; "Rotate window down" +;; (declare (ignore root-x root-y)) +;; (rotate-window-down)) +;; +;; +;; +;;(defun mouse-circulate-workspace-up (root-x root-y) +;; "Circulate up in workspaces" +;; (declare (ignore root-x root-y)) +;; (circulate-workspace-up)) +;; +;; +;;(defun mouse-circulate-workspace-down (root-x root-y) +;; "Circulate down in workspaces" +;; (declare (ignore root-x root-y)) +;; (circulate-workspace-down)) +;; +;; +;; +;; +;;(defun init-motion-vars () +;; (setf *motion-action* nil +;; *motion-object* nil +;; *motion-start-group* nil +;; *motion-dx* nil +;; *motion-dy* nil)) +;; +;; +;;(let ((accept-motion t) +;; (selected-group nil)) +;; (defun mouse-motion (root-x root-y) +;; "Move or resize group. Move window from a group to another. +;;Go to top left or rigth corner to change workspaces." +;; (let ((group (find-group-under-mouse root-x root-y))) +;; (unless (equal selected-group group) +;; (select-group-under-mouse root-x root-y) +;; (setf selected-group group))) +;; (if (<= root-y 5) +;; (cond ((and accept-motion (<= root-x 5)) +;; (case *motion-action* +;; (:move-group +;; (remove-group-in-workspace *motion-object* (current-workspace)))) +;; (circulate-workspace-down) +;; (minimize-group (current-group)) +;; (case *motion-action* +;; (:move-group +;; (add-group-in-workspace *motion-object* (current-workspace)))) +;; (warp-pointer *root* (1- (xlib:screen-width *screen*)) 100) +;; (setf accept-motion nil)) +;; ((and accept-motion (>= root-x (- (xlib:screen-width *screen*) 5))) +;; (case *motion-action* +;; (:move-group +;; (remove-group-in-workspace *motion-object* (current-workspace)))) +;; (circulate-workspace-up) +;; (minimize-group (current-group)) +;; (case *motion-action* +;; (:move-group +;; (add-group-in-workspace *motion-object* (current-workspace)))) +;; (warp-pointer *root* 0 100) +;; (setf accept-motion nil)) +;; (t (setf accept-motion t))) +;; (setf accept-motion t)) +;; (case *motion-action* +;; (:move-group +;; (hide-group *root* *motion-object*) +;; (setf (group-x *motion-object*) (+ root-x *motion-dx*) +;; (group-y *motion-object*) (+ root-y *motion-dy*)) +;; (show-group *root* *root-gc* *motion-object*) +;; (adapt-all-window-in-group *motion-object*) +;; (show-all-group (current-workspace) nil)) +;; (:resize-group +;; (hide-group *root* *motion-object*) +;; (setf (group-width *motion-object*) (max (+ (group-width *motion-object*) (- root-x *motion-dx*)) 100) +;; (group-height *motion-object*) (max (+ (group-height *motion-object*) (- root-y *motion-dy*)) 100) +;; *motion-dx* root-x *motion-dy* root-y) +;; (show-group *root* *root-gc* *motion-object*) +;; (adapt-all-window-in-group *motion-object*) +;; (show-all-group (current-workspace) nil))))) +;; +;; +;; +;;(defun move-selected-group (root-x root-y) +;; "Move selected group or create a new group on the root window" +;; (select-group-under-mouse root-x root-y) +;; (setf *motion-object* (find-group-under-mouse root-x root-y)) +;; (if *motion-object* +;; (setf *motion-action* :move-group +;; *motion-dx* (- (group-x *motion-object*) root-x) +;; *motion-dy* (- (group-y *motion-object*) root-y)) +;; (progn +;; (setf *motion-object* (make-group :x root-x :y root-y :width 100 :height 100 :fullscreenp nil)) +;; (warp-pointer *root* (+ root-x 100) (+ root-y 100)) +;; (add-group-in-workspace *motion-object* (current-workspace)) +;; (show-all-group (current-workspace)) +;; (setf *motion-action* :resize-group +;; *motion-dx* (+ root-x 100) +;; *motion-dy* (+ root-y 100))))) +;; +;; +;; +;;(defun copy-selected-group (root-x root-y) +;; "Copy selected group" +;; (xgrab-pointer *root* 50 51) +;; (select-group-under-mouse root-x root-y) +;; (setf *motion-object* (find-group-under-mouse root-x root-y)) +;; (when *motion-object* +;; (setf *motion-action* :copy-group +;; *motion-object* (copy-group *motion-object*) +;; *motion-dx* (- (group-x *motion-object*) root-x) +;; *motion-dy* (- (group-y *motion-object*) root-y)))) +;;;; (add-group-in-workspace *motion-object* (current-workspace)))) +;; +;; +;; +;;(defun release-move-selected-group (root-x root-y) +;; "Release button" +;; (when *motion-object* +;; (case *motion-action* +;; (:move-group +;; (move-group-to *motion-object* (+ root-x *motion-dx*) (+ root-y *motion-dy*))) +;; (:resize-group +;; (resize-group *motion-object* 0 0)))) +;; (init-motion-vars) +;; (select-group-under-mouse root-x root-y)) +;; +;; +;;(defun release-copy-selected-group (root-x root-y) +;; "Release button" +;; (xgrab-pointer *root* 66 67) +;; (when *motion-object* +;; (unless (group-windows-already-in-workspace *motion-object* (current-workspace)) +;; (add-group-in-workspace *motion-object* (current-workspace)) +;; (move-group-to *motion-object* (+ root-x *motion-dx*) (+ root-y *motion-dy*)))) +;; (init-motion-vars) +;; (select-group-under-mouse root-x root-y) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;; +;;(defun resize-selected-group (root-x root-y) +;; "Resize selected group" +;; (select-group-under-mouse root-x root-y) +;; (setf *motion-object* (find-group-under-mouse root-x root-y)) +;; (when *motion-object* +;; (setf *motion-action* :resize-group +;; *motion-dx* root-x +;; *motion-dy* root-y))) +;; +;; +;;(defun release-resize-selected-group (root-x root-y) +;; "Release button" +;; (when *motion-object* +;; (resize-group *motion-object* 0 0)) +;; (init-motion-vars) +;; (select-group-under-mouse root-x root-y)) +;; +;; +;; +;;(defun move-selected-window (root-x root-y) +;; "Move selected window" +;; (xgrab-pointer *root* 50 51) +;; (select-group-under-mouse root-x root-y) +;; (setf *motion-object* (current-window) +;; *motion-action* :move-window) +;; (when *motion-object* +;; (setf *motion-start-group* (current-group)))) +;; +;; +;;(defun release-move-selected-window (root-x root-y) +;; "Release button" +;; (xgrab-pointer *root* 66 67) +;; (select-group-under-mouse root-x root-y) +;; (when *motion-object* +;; (remove-window-in-group *motion-object* *motion-start-group*) +;; (add-window-in-group *motion-object* (current-group))) +;; (init-motion-vars) +;; (select-group-under-mouse root-x root-y) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;; +;;(defun copy-selected-window (root-x root-y) +;; "Copy selected window" +;; (move-selected-window root-x root-y) +;; (setf *motion-action* :copy-window)) +;; +;;(defun release-copy-selected-window (root-x root-y) +;; "Release button" +;; (xgrab-pointer *root* 66 67) +;; (select-group-under-mouse root-x root-y) +;; (when *motion-object* +;; (unless (window-already-in-workspace *motion-object* (current-workspace)) +;; (add-window-in-group *motion-object* (current-group)))) +;; (init-motion-vars) +;; (select-group-under-mouse root-x root-y) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;; +;; +;; +;; +;;(define-mouse-action (1) 'move-selected-group 'release-move-selected-group) +;;(define-mouse-action (1 :mod-1) 'resize-selected-group 'release-resize-selected-group) +;;(define-mouse-action (1 :control) 'copy-selected-group 'release-copy-selected-group) +;; +;;(define-mouse-action (2) nil 'mouse-leave-second-mode-maximize) +;;(define-mouse-action (2 :control) nil 'mouse-leave-second-mode) +;; +;;(define-mouse-action (3) 'move-selected-window 'release-move-selected-window) +;;(define-mouse-action (3 :control) 'copy-selected-window 'release-copy-selected-window) +;; +;; +;;(define-mouse-action (4) 'mouse-circulate-window-up nil) +;;(define-mouse-action (5) 'mouse-circulate-window-down nil) +;; +;;(define-mouse-action (4 :mod-1) 'mouse-circulate-workspace-up nil) +;;(define-mouse-action (5 :mod-1) 'mouse-circulate-workspace-down nil) +;; +;;(define-mouse-action ('Motion) 'mouse-motion nil) + Added: clfswm/bindings.lisp ============================================================================== --- (empty file) +++ clfswm/bindings.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,173 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Sun Feb 24 21:34:48 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Bindings keys and mouse +;;; +;;; Note: Mod-1 is the Alt or Meta key, Mod-2 is the Numlock key. +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +;;;,----- +;;;| CONFIG - Bindings main mode +;;;`----- + + +(define-main-key ("F1" :mod-1) 'help-on-clfswm) + +(defun quit-clfswm () + "Quit clfswm" + (throw 'exit-main-loop nil)) + +(define-main-key ("Home" :mod-1 :control :shift) 'quit-clfswm) + +(define-main-key ("Right" :mod-1) 'select-next-brother) +(define-main-key ("Left" :mod-1) 'select-previous-brother) + +(define-main-key ("Down" :mod-1) 'select-next-level) +(define-main-key ("Up" :mod-1) 'select-previous-level) + +(define-main-key ("Tab" :mod-1) 'select-next-child) +(define-main-key ("Tab" :mod-1 :shift) 'select-previous-child) + +(define-main-key ("Return" :mod-1) 'enter-group) +(define-main-key ("Return" :mod-1 :shift) 'leave-group) + +(define-main-key ("Home" :mod-1) 'switch-to-root-group) +(define-main-key ("Home" :mod-1 :shift) 'switch-and-select-root-group) + +(define-main-key ("Menu") 'toggle-show-root-group) + +(define-main-key (#\b :mod-1) 'banish-pointer) + + +;;;; Escape +(define-main-key ("Escape" :control :shift) 'delete-focus-window) +(define-main-key ("Escape" :mod-1 :control :shift) 'destroy-focus-window) +(define-main-key ("Escape" :control) 'remove-focus-window) +(define-main-key ("Escape" :shift) 'unhide-all-windows-in-current-child) + + +(define-main-key (#\t :mod-1) 'second-key-mode) +(define-main-key ("less" :control) 'second-key-mode) + + +;;(define-main-key ("a") (lambda () +;; (dbg 'key-a) +;; (show-all-childs *root-group*))) +;; +;;(define-main-key ("b") (lambda () +;; (dbg 'key-b) +;; (let* ((window (xlib:create-window :parent *root* +;; :x 300 +;; :y 200 +;; :width 400 +;; :height 300 +;; :background (get-color "Black") +;; :colormap (xlib:screen-default-colormap *screen*) +;; :border-width 1 +;; :border (get-color "Red") +;; :class :input-output +;; :event-mask '(:exposure))) +;; (gc (xlib:create-gcontext :drawable window +;; :foreground (get-color "Green") +;; :background (get-color "Red") +;; :font *default-font* +;; :line-style :solid))) +;; (xlib:map-window window) +;; (draw-line window gc 10 10 200 200) +;; (xlib:display-finish-output *display*) +;; (xlib:draw-glyphs window gc 10 10 (format nil "~A" 10)) +;; (dbg 'ici)))) +;; +;; +;;;;(define-main-key ("F1" :mod-1) 'help-on-clfswm) +;;;; +;;(defun quit-clfswm () +;; "Quit clfswm" +;; (throw 'exit-main-loop nil)) +;; +;; +;; +;;(define-main-key ("Home" :mod-1 :control :shift) 'quit-clfswm) +;; +;;(define-main-key (#\t :mod-1) 'second-key-mode) +;;(define-main-key ("less" :control) 'second-key-mode) +;; +;;(define-main-key ("Tab" :mod-1) 'rotate-window-up) +;;(define-main-key ("Tab" :mod-1 :shift) 'rotate-window-down) +;; +;;(define-main-key (#\b :mod-1) 'banish-pointer) +;;(define-main-key (#\b :mod-1 :control) 'toggle-maximize-current-group) +;; +;;;; Escape +;;(define-main-key ("Escape" :control :shift) 'delete-current-window) +;;(define-main-key ("Escape" :mod-1 :control :shift) 'destroy-current-window) +;;(define-main-key ("Escape" :control) 'remove-current-window) +;;(define-main-key ("Escape" :shift) 'unhide-all-windows-in-current-group) +;; +;; +;;;; Up +;;(define-main-key ("Up" :mod-1) 'circulate-group-up) +;;(define-main-key ("Up" :mod-1 :shift) 'circulate-group-up-move-window) +;;(define-main-key ("Up" :mod-1 :shift :control) 'circulate-group-up-copy-window) +;; +;; +;;;; Down +;;(define-main-key ("Down" :mod-1) 'circulate-group-down) +;;(define-main-key ("Down" :mod-1 :shift) 'circulate-group-down-move-window) +;;(define-main-key ("Down" :mod-1 :shift :control) 'circulate-group-down-copy-window) +;; +;; +;;;; Right +;;(define-main-key ("Right" :mod-1) 'circulate-workspace-up) +;;(define-main-key ("Right" :mod-1 :shift) 'circulate-workspace-up-move-group) +;;(define-main-key ("Right" :mod-1 :shift :control) 'circulate-workspace-up-copy-group) +;; +;; +;;;; Left +;;(define-main-key ("Left" :mod-1) 'circulate-workspace-down) +;;(define-main-key ("Left" :mod-1 :shift) 'circulate-workspace-down-move-group) +;;(define-main-key ("Left" :mod-1 :shift :control) 'circulate-workspace-down-copy-group) +;; +;; +;; +;;(defmacro define-main-focus-workspace-by-number (key number) +;; "Define a main key to focus a workspace by its number" +;; `(define-main-key ,key +;; (defun ,(create-symbol (format nil "b-main-focus-workspace-~A" number)) () +;; ,(format nil "Focus workspace ~A" number) +;; (circulate-workspace-by-number ,number)))) +;; +;;(define-main-focus-workspace-by-number (#\1 :mod-1) 1) +;;(define-main-focus-workspace-by-number (#\2 :mod-1) 2) +;;(define-main-focus-workspace-by-number (#\3 :mod-1) 3) +;;(define-main-focus-workspace-by-number (#\4 :mod-1) 4) +;;(define-main-focus-workspace-by-number (#\5 :mod-1) 5) +;;(define-main-focus-workspace-by-number (#\6 :mod-1) 6) +;;(define-main-focus-workspace-by-number (#\7 :mod-1) 7) +;;(define-main-focus-workspace-by-number (#\8 :mod-1) 8) +;;(define-main-focus-workspace-by-number (#\9 :mod-1) 9) +;;(define-main-focus-workspace-by-number (#\0 :mod-1) 10) + Added: clfswm/check-diff.sh ============================================================================== --- (empty file) +++ clfswm/check-diff.sh Sat Mar 1 07:49:46 2008 @@ -0,0 +1,12 @@ +#!/bin/sh + +DIR=../clfswm2 + +for i in * +do + diff $i $DIR/$i > /dev/null + if [ $? = 1 ]; then + echo $i + #cp $DIR/$i . + fi +done Added: clfswm/clfswm-info.lisp ============================================================================== --- (empty file) +++ clfswm/clfswm-info.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,444 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Tue Feb 19 21:43:15 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Info function (see the end of this file for user definition +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +(defstruct info window gc font list ilw ilh x y) + + +(defun leave-info-mode (info) + "Leave the info mode" + (declare (ignore info)) + (throw 'exit-info-loop nil)) + +(defun mouse-leave-info-mode (root-x root-y info) + "Leave the info mode" + (declare (ignore root-x root-y info)) + (throw 'exit-info-loop nil)) + + + +(defun draw-info-window (info) + (xlib:clear-area (info-window info)) + (setf (xlib:gcontext-foreground (info-gc info)) (get-color *info-foreground*)) + (loop for line in (info-list info) + for y from 0 do + (xlib:draw-image-glyphs (info-window info) (info-gc info) + (- (info-ilw info) (info-x info)) + (- (+ (* (info-ilh info) y) (info-ilh info)) (info-y info)) + (format nil "~A" line)))) + + +(defun draw-info-window-partial (info) + (let ((last-y (info-y info))) + (setf (xlib:gcontext-foreground (info-gc info)) (get-color *info-background*)) + (xlib:draw-rectangle (info-window info) (info-gc info) 0 0 + (xlib:drawable-width (info-window info)) + (max (+ (- (info-y info)) (xlib:max-char-ascent (info-font info))) 0) t) + (loop for line in (info-list info) + for y from 0 do + (setf last-y (- (+ (* (info-ilh info) y) (info-ilh info)) (info-y info))) + (setf (xlib:gcontext-foreground (info-gc info)) (get-color *info-background*)) + (xlib:draw-rectangle (info-window info) (info-gc info) + 0 (+ last-y (- (info-ilh info)) (xlib:max-char-descent (info-font info))) + (xlib:drawable-width (info-window info)) (info-ilh info) t) + (setf (xlib:gcontext-foreground (info-gc info)) (get-color *info-foreground*)) + (xlib:draw-image-glyphs (info-window info) (info-gc info) + (- (info-ilw info) (info-x info)) + last-y + (format nil "~A" line))) + (setf (xlib:gcontext-foreground (info-gc info)) (get-color *info-background*)) + (xlib:draw-rectangle (info-window info) (info-gc info) 0 last-y + (xlib:drawable-width (info-window info)) + (xlib:drawable-height (info-window info)) + t))) + + +;;;,----- +;;;| Key binding +;;;`----- + +(define-info-key (#\q) 'leave-info-mode) +(define-info-key ("Return") 'leave-info-mode) +(define-info-key ("Escape") 'leave-info-mode) +(define-info-key (#\Space) 'leave-info-mode) + +(define-info-key ("twosuperior") + (defun info-banish-pointer (info) + "Move the pointer to the lower right corner of the screen" + (declare (ignore info)) + (banish-pointer))) + +(define-info-key ("Down") + (defun info-next-line (info) + "Move one line down" + (incf (info-y info) (info-ilh info)) + (draw-info-window info))) + +(define-info-key ("Up") + (defun info-previous-line (info) + "Move one line up" + (decf (info-y info) (info-ilh info)) + (draw-info-window info))) + +(define-info-key ("Left") + (defun info-previous-char (info) + "Move one char left" + (decf (info-x info) (info-ilw info)) + (draw-info-window info))) + +(define-info-key ("Right") + (defun info-next-char (info) + "Move one char right" + (incf (info-x info) (info-ilw info)) + (draw-info-window info))) + + +(define-info-key ("Home") + (defun info-first-line (info) + "Move to first line" + (setf (info-x info) 0 + (info-y info) 0) + (draw-info-window info))) + +(define-info-key ("End") + (defun info-end-line (info) + "Move to last line" + (setf (info-x info) 0 + (info-y info) (- (* (length (info-list info)) (info-ilh info)) (xlib:drawable-height (info-window info)))) + (draw-info-window info))) + + +(define-info-key ("Page_Down") + (defun info-next-ten-lines (info) + "Move ten lines down" + (incf (info-y info) (* (info-ilh info) 10)) + (draw-info-window info))) + +(define-info-key ("Page_Up") + (defun info-previous-ten-lines (info) + "Move ten lines up" + (decf (info-y info) (* (info-ilh info) 10)) + (draw-info-window info))) + + + + +(defparameter *info-start-grab-x* nil) +(defparameter *info-start-grab-y* nil) + + +(defun info-begin-grab (root-x root-y info) + "Begin grab text" + (setf *info-start-grab-x* (+ root-x (info-x info)) + *info-start-grab-y* (+ root-y (info-y info))) + (draw-info-window info)) + +(defun info-end-grab (root-x root-y info) + "End grab" + (setf (info-x info) (- *info-start-grab-x* root-x) + (info-y info) (- *info-start-grab-y* root-y) + *info-start-grab-x* nil + *info-start-grab-y* nil) + (draw-info-window info)) + +(defun info-mouse-next-line (root-x root-y info) + "Move one line down" + (declare (ignore root-x root-y)) + (incf (info-y info) (info-ilh info)) + (draw-info-window info)) + +(defun info-mouse-previous-line (root-x root-y info) + "Move one line up" + (declare (ignore root-x root-y)) + (decf (info-y info) (info-ilh info)) + (draw-info-window info)) + + +(defun info-mouse-motion (root-x root-y info) + "Grab text" + (when (and *info-start-grab-x* *info-start-grab-y*) + (setf (info-x info) (- *info-start-grab-x* root-x) + (info-y info) (- *info-start-grab-y* root-y)) + (draw-info-window-partial info))) + + + + + +(define-info-mouse-action (1) 'info-begin-grab 'info-end-grab) +(define-info-mouse-action (2) 'mouse-leave-info-mode) +(define-info-mouse-action (4) 'info-mouse-previous-line) +(define-info-mouse-action (5) 'info-mouse-next-line) +(define-info-mouse-action ('Motion) 'info-mouse-motion nil) + + +;;;,----- +;;;| Main mode +;;;`----- + +(defun info-mode (info-list &key (x 0) (y 0) (width nil) (height nil)) + "Open the info mode. Info-list is a list of info: One string per line" + (when info-list + (let* ((pointer-grabbed (xgrab-pointer-p)) + (keyboard-grabbed (xgrab-keyboard-p)) + (font (xlib:open-font *display* *info-font-string*)) + (ilw (xlib:max-char-width font)) + (ilh (+ (xlib:max-char-ascent font) (xlib:max-char-descent font) 1)) + (window (xlib:create-window :parent *root* + :x x :y y + :width (or width + (min (* (+ (loop for l in info-list maximize (length l)) 2) ilw) + (- (xlib:screen-width *screen*) 2 x))) + :height (or height + (min (+ (* (length info-list) ilh) (/ ilh 2)) + (- (xlib:screen-height *screen*) 2 y))) + :background (get-color *info-background*) + :colormap (xlib:screen-default-colormap *screen*) + :border-width 1 + :border (get-color *info-border*) + :event-mask '(:exposure))) + (gc (xlib:create-gcontext :drawable window + :foreground (get-color *info-foreground*) + :background (get-color *info-background*) + :font font + :line-style :solid)) + (info (make-info :window window :gc gc :x 0 :y 0 :list info-list + :font font :ilw ilw :ilh ilh))) + (labels ((handle-key (&rest event-slots &key root code state &allow-other-keys) + (declare (ignore event-slots root)) + (funcall-key-from-code *info-keys* code state info)) + (handle-motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) + (declare (ignore event-slots)) + (unless (xlib:event-case (*display* :discard-p nil :peek-p t :timeout 0) + (:motion-notify () t)) + (funcall-button-from-code *info-mouse-action* 'motion 0 root-x root-y #'first info))) + (handle-button-press (&rest event-slots &key root-x root-y code state &allow-other-keys) + (declare (ignore event-slots)) + (funcall-button-from-code *info-mouse-action* code state root-x root-y #'first info)) + (handle-button-release (&rest event-slots &key root-x root-y code state &allow-other-keys) + (declare (ignore event-slots)) + (funcall-button-from-code *info-mouse-action* code state root-x root-y #'third info)) + (info-handle-unmap-notify (&rest event-slots) + (apply #'handle-unmap-notify event-slots) + (draw-info-window info)) + (info-handle-destroy-notify (&rest event-slots) + (apply #'handle-destroy-notify event-slots) + (draw-info-window info)) + (handle-events (&rest event-slots &key display event-key &allow-other-keys) + (declare (ignore display)) + (case event-key + (:key-press (apply #'handle-key event-slots) t) + (:button-press (apply #'handle-button-press event-slots) t) + (:button-release (apply #'handle-button-release event-slots) t) + (:motion-notify (apply #'handle-motion-notify event-slots) t) + (:map-request nil) + (:unmap-notify (apply #'info-handle-unmap-notify event-slots) t) + (:destroy-notify (apply #'info-handle-destroy-notify event-slots) t) + (:mapping-notify nil) + (:property-notify nil) + (:create-notify nil) + (:enter-notify nil) + (:exposure (draw-info-window info))) + t)) + (xlib:map-window window) + (draw-info-window info) + (xgrab-pointer *root* 68 69) + (unless keyboard-grabbed + (xgrab-keyboard *root*)) + (unwind-protect + (catch 'exit-info-loop + (loop + (xlib:display-finish-output *display*) + (xlib:process-event *display* :handler #'handle-events))) + (if pointer-grabbed + (xgrab-pointer *root* 66 67) + (xungrab-pointer)) + (unless keyboard-grabbed + (xungrab-keyboard)) + (xlib:free-gcontext gc) + (xlib:destroy-window window) + (xlib:close-font font) + (show-all-childs) + (wait-no-key-or-button-press)))))) + + + + + + +(defun info-mode-menu (item-list &key (x 0) (y 0) (width nil) (height nil)) + "Open an info help menu. +Item-list is: '((key function) (key function)) +key is a character, a keycode or a keysym" + (let ((info-list nil) + (action nil)) + (dolist (item item-list) + (destructuring-bind (key function) item + (push (format nil "~A: ~A" key (documentation function 'function)) + info-list) + (define-info-key-fun (list key 0) + (lambda (&optional args) + (declare (ignore args)) + (setf action function) + (throw 'exit-info-loop nil))))) + (info-mode (nreverse info-list) :x x :y y :width width :height height) + (dolist (item item-list) + (let ((key (first item))) + (undefine-info-key-fun (list key 0)))) + (when (fboundp action) + (funcall action)))) + + + + + +;;;,----- +;;;| CONFIG - Info mode functions +;;;`----- +(defun append-space (string) + "Append spaces before Newline on each line" + (with-output-to-string (stream) + (loop for c across string do + (when (equal c #\Newline) + (princ " " stream)) + (princ c stream)))) + + +(defun show-key-binding (&rest hash-table-key) + "Show the binding of each hash-table-key" + (info-mode (split-string (append-space (with-output-to-string (stream) + (produce-doc hash-table-key + stream))) + #\Newline))) + + +(defun show-global-key-binding () + "Show all key binding" + (show-key-binding *main-keys* *second-keys* *mouse-action* + *info-keys* *info-mouse-action*)) + +(defun show-main-mode-key-binding () + "Show the main mode binding" + (show-key-binding *main-keys*)) + +(defun show-second-mode-key-binding () + "Show the second mode key binding" + (show-key-binding *second-keys* *mouse-action*)) + + +(let ((days '("Lundi" "Mardi" "Mercredi" "Jeudi" "Vendredi" "Samedi" "Dimanche")) + (months '("Janvier" "Fevrier" "Mars" "Avril" "Mai" "Juin" "Juillet" + "Aout" "Septembre" "Octobre" "Novembre" "Decembre"))) + (defun date-string () + (multiple-value-bind (second minute hour date month year day) + (get-decoded-time) + (format nil " ~2,'0D:~2,'0D:~2,'0D ~A ~2,'0D ~A ~A " + hour minute second + (nth day days) date (nth (1- month) months) year)))) + + +(defun show-date () + "Show the current time and date" + (info-mode (list (date-string)))) + + + + + + +(defun info-on-shell (program) + (let ((lines (do-shell program nil t))) + (info-mode (loop for line = (read-line lines nil nil) + while line + collect line)))) + + +(defun show-cpu-proc () + "Show current processes sorted by CPU usage" + (info-on-shell "ps --cols=1000 --sort='-%cpu,uid,pgid,ppid,pid' -e -o user,pid,stime,pcpu,pmem,args")) + +(defun show-mem-proc () + "Show current processes sorted by memory usage" + (info-on-shell "ps --cols=1000 --sort='-vsz,uid,pgid,ppid,pid' -e -o user,pid,stime,pcpu,pmem,args")) + +(defun show-xmms-status () + "Show the current xmms status" + (info-on-shell "xmms-shell -e status")) + +(defun show-xmms-playlist () + "Show the current xmms playlist" + (info-on-shell "xmms-shell -e list")) + + +(defun xmms-info-menu () + "Open the xmms menu" + (info-mode-menu '((#\s show-xmms-status) + (#\l show-xmms-playlist)))) + + + +(defun show-cd-info () + "Show the current CD track" + (info-on-shell "pcd i")) + +(defun show-cd-playlist () + "Show the current CD playlist" + (info-on-shell "pcd mi")) + +(defun info-on-cd-menu () + "Open the CD info menu" + (info-mode-menu '((#\i show-cd-info) + (#\l show-cd-playlist)))) + + + +(defun help-on-clfswm () + "Open the help and info window" + (info-mode-menu '((#\h show-global-key-binding) + (#\b show-main-mode-key-binding) + (#\t show-date) + (#\c show-cpu-proc) + (#\m show-mem-proc) + (#\x xmms-info-menu) + (#\d info-on-cd-menu)))) + + +(defun help-on-second-mode () + "Open the help and info window" + (info-mode-menu '((#\h show-global-key-binding) + (#\b show-second-mode-key-binding) + (#\t show-date) + (#\c show-cpu-proc) + (#\m show-mem-proc) + (#\x xmms-info-menu) + (#\d info-on-cd-menu)))) + + + + + Added: clfswm/clfswm-internal.lisp ============================================================================== --- (empty file) +++ clfswm/clfswm-internal.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,642 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Sat Mar 1 00:03:14 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Main functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + +;;; Minimal hook +(defun call-hook (hook &optional args) + "Call a hook (a function, a symbol or a list of function)" + (typecase hook + (list (dolist (h hook) + (apply 'call-hook (list h args)))) + (t (apply hook args)))) + + +;;; Group data manipulation functions +(defun group-data-slot (group slot) + "Return the value associated to data slot" + (when (group-p group) + (second (assoc slot (group-data group))))) + +(defun set-group-data-slot (group slot value) + "Set the value associated to data slot" + (when (group-p group) + (with-slots (data) group + (setf data (remove (assoc slot data) data)) + (push (list slot value) data)) + value)) + +(defsetf group-data-slot set-group-data-slot) + + + +(defgeneric group-p (group)) +(defmethod group-p ((group group)) + (declare (ignore group)) + t) +(defmethod group-p (group) + (declare (ignore group)) + nil) + + + +(defgeneric child-name (child)) + +(defmethod child-name ((child xlib:window)) + (xlib:wm-name child)) + +(defmethod child-name ((child group)) + (group-name child)) + +(defmethod child-name (child) + (declare (ignore child)) + "???") + + + +;; (with-all-childs (*root-group* child) (typecase child (xlib:window (print child)) (group (print (group-number child))))) +(defmacro with-all-childs ((root child) &body body) + (let ((rec (gensym)) + (sub-child (gensym))) + `(labels ((,rec (,child) + , at body + (when (group-p ,child) + (dolist (,sub-child (group-child ,child)) + (,rec ,sub-child))))) + (,rec ,root)))) + + +;; (with-all-group (*root-group* group) (print (group-number group))) +(defmacro with-all-groups ((root group) &body body) + (let ((rec (gensym)) + (child (gensym))) + `(labels ((,rec (,group) + (when (group-p ,group) + , at body + (dolist (,child (group-child ,group)) + (,rec ,child))))) + (,rec ,root)))) + + +;; (with-all-windows (*root-group* window) (print window)) +(defmacro with-all-windows ((root window) &body body) + (let ((rec (gensym)) + (child (gensym))) + `(labels ((,rec (,window) + (when (xlib:window-p ,window) + , at body) + (when (group-p ,window) + (dolist (,child (group-child ,window)) + (,rec ,child))))) + (,rec ,root)))) + + + +;; (with-all-groups-windows (*root-group* child) (print child) (print (group-number child))) +(defmacro with-all-windows-groups ((root child) body-window body-group) + (let ((rec (gensym)) + (sub-child (gensym))) + `(labels ((,rec (,child) + (typecase ,child + (xlib:window ,body-window) + (group ,body-group + (dolist (,sub-child (group-child ,child)) + (,rec ,sub-child)))))) + (,rec ,root)))) + + + +(defun group-find-free-number () + (let ((all-numbers nil)) + (with-all-groups (*root-group* group) + (push (group-number group) all-numbers)) + (find-free-number all-numbers))) + + + +(defun create-group (&key name (number (group-find-free-number)) (x 0.1) (y 0.1) (w 0.8) (h 0.8) layout) + (let* ((window (xlib:create-window :parent *root* + :x 0 + :y 0 + :width 200 + :height 200 + :background (get-color "Black") + :colormap (xlib:screen-default-colormap *screen*) + :border-width 1 + :border (get-color "Red") + :event-mask '(:exposure :button-press))) + (gc (xlib:create-gcontext :drawable window + :foreground (get-color "Green") + :background (get-color "Black") + :font *default-font* + :line-style :solid))) + (make-instance 'group :name name :number number + :x x :y y :w w :h h :window window :gc gc :layout layout))) + + +(defun add-group (group father) + (push group (group-child father))) + + + + + + +(defun get-current-child () + "Return the current focused child" + (unless (equal *current-child* *root-group*) + (typecase *current-child* + (xlib:window *current-child*) + (group (if (xlib:window-p (first (group-child *current-child*))) + (first (group-child *current-child*)) + *current-child*))))) + + +(defun find-child (to-find root) + "Find to-find in root or in its childs" + (with-all-childs (root child) + (when (equal child to-find) + (return-from find-child t)))) + + + +(defun find-father-group (to-find &optional (root *root-group*)) + "Return the father group of to-find" + (with-all-groups (root group) + (when (member to-find (group-child group)) + (return-from find-father-group group)))) + + + +(defun find-group-window (window &optional (root *root-group*)) + "Return the group with the window window" + (with-all-groups (root group) + (when (xlib:window-equal window (group-window group)) + (return-from find-group-window group)))) + + +(defun find-group-by-name (name) + "Find a group from its name" + (when name + (with-all-groups (*root-group* group) + (when (string-equal name (group-name group)) + (return-from find-group-by-name group))))) + +(defun find-group-by-number (number) + "Find a group from its number" + (when (numberp number) + (with-all-groups (*root-group* group) + (when (= number (group-number group)) + (return-from find-group-by-number group))))) + + + + +(defun get-all-windows (&optional (root *root-group*)) + "Return all windows in root and in its childs" + (let ((acc nil)) + (with-all-windows (root window) + (push window acc)) + acc)) + + +(defun get-hidden-windows () + "Return all hiddens windows" + (let ((all-windows (get-all-windows)) + (hidden-windows (remove-if-not #'window-hidden-p + (copy-list (xlib:query-tree *root*))))) + (set-difference hidden-windows all-windows))) + + + + +(defun display-group-info (group) + (let ((dy (+ (xlib:max-char-ascent *default-font*) (xlib:max-char-descent *default-font*)))) + (with-slots (name number gc window child) group + (when (equal group *current-root*) + (xlib:clear-area window)) + (xlib:with-gcontext (gc :foreground (get-color (if (and (equal group *current-root*) + (equal group *current-child*)) + "Red" "Green"))) + (xlib:draw-image-glyphs window gc 5 dy + (format nil "Group: ~A~A " + number + (if name (format nil " - ~A" name) ""))) + (let ((pos dy)) + (when (equal group *current-root*) + (xlib:draw-image-glyphs window gc 5 (incf pos dy) + (format nil "~A hidden windows " (length (get-hidden-windows)))) + (when *child-selection* + (xlib:draw-image-glyphs window gc 5 (incf pos dy) + (with-output-to-string (str) + (format str "Selection: ") + (dolist (child *child-selection*) + (typecase child + (xlib:window (format str "~A " (xlib:wm-name child))) + (group (format str "group:~A[~A] " (group-number child) + (aif (group-name child) it ""))))) + (format str " "))))) + (dolist (ch child) + (when (xlib:window-p ch) + (xlib:draw-glyphs window gc 5 (incf pos dy) (ensure-printable (xlib:wm-name ch)))))))))) + + + + + + + + + + +(defun get-father-layout (child father) + (if (group-p father) + (aif (group-layout father) + (funcall it child father) + (no-layout child father)) + (get-fullscreen-size))) + + +(defgeneric adapt-child-to-father (child father)) + +(defmethod adapt-child-to-father ((window xlib:window) father) + (with-xlib-protect + (multiple-value-bind (nx ny nw nh raise-p) + (get-father-layout window father) + (setf (xlib:drawable-x window) nx + (xlib:drawable-y window) ny + (xlib:drawable-width window) nw + (xlib:drawable-height window) nh) + raise-p))) + +(defmethod adapt-child-to-father ((group group) father) + (with-xlib-protect + (multiple-value-bind (nx ny nw nh raise-p) + (get-father-layout group father) + (with-slots (rx ry rw rh window) group + (setf rx nx ry ny rw nw rh nh) + (setf (xlib:drawable-x window) rx + (xlib:drawable-y window) ry + (xlib:drawable-width window) rw + (xlib:drawable-height window) rh) + raise-p)))) + + + +(defgeneric show-child (child father)) +(defgeneric hide-child (child)) + +(defmethod show-child ((group group) father) + (with-xlib-protect + (with-slots (window) group + (let ((raise-p (adapt-child-to-father group father))) + (when (or *show-root-group-p* (not (equal group *current-root*))) + (setf (xlib:window-background window) (get-color "Black")) + (xlib:map-window window) + (when raise-p + (raise-window window)) + (display-group-info group)))))) + + +(defmethod hide-child ((group group)) + (with-xlib-protect + (with-slots (window) group + (xlib:unmap-window window)))) + + +(defmethod show-child ((window xlib:window) father) + (with-xlib-protect + (let ((raise-p nil)) + (when (eql (window-type window) :normal) + (setf raise-p (adapt-child-to-father window father))) + (xlib:map-window window) + (when raise-p + (raise-window window))))) + +(defmethod hide-child ((window xlib:window)) + (hide-window window)) + + + + + + +(defgeneric select-child (child selected)) + +(defmethod select-child ((group group) selected) + (with-xlib-protect + (when (and (group-p group) (group-window group)) + (setf (xlib:window-border (group-window group)) + (get-color (cond ((equal selected :maybe) *color-maybe-selected*) + ((equal selected nil) *color-unselected*) + (selected *color-selected*))))))) + +(defmethod select-child ((window xlib:window) selected) + (with-xlib-protect + (setf (xlib:window-border window) + (get-color (cond ((equal selected :maybe) *color-maybe-selected*) + ((equal selected nil) *color-unselected*) + (selected *color-selected*)))))) + +(defun select-current-group (selected) + (select-child *current-child* selected)) + + + +(defun set-focus-to-current-child () + (no-focus) + (when (group-p *current-child*) + (when (xlib:window-p (first (group-child *current-child*))) + (focus-window (first (group-child *current-child*))))) + (when (xlib:window-p *current-child*) + (focus-window *current-child*))) + + + + + +(defun show-all-childs () + "Show all childs from *current-root*" + (labels ((rec (root father first-p) + (show-child root father) + (select-child root (if (equal root *current-child*) t + (if first-p :maybe nil))) + (when (group-p root) + (let ((first-child (first (group-child root)))) + (dolist (child (reverse (group-child root))) + (rec child root (and first-p (equal child first-child)))))))) + (rec *current-root* nil t) + (set-focus-to-current-child))) + + + + +(defun hide-all-childs (root) + (hide-child root) + (when (group-p root) + (dolist (child (group-child root)) + (hide-all-childs child)))) + + + + +(defun select-next/previous-brother (fun-rotate) + "Select the next/previous brother group" + (let ((group-is-root? (and (equal *current-root* *current-child*) + (not (equal *current-root* *root-group*))))) + (if group-is-root? + (hide-all-childs *current-root*) + (select-current-group nil)) + (let ((father (find-father-group *current-child*))) + (when (group-p father) + (with-slots (child) father + (setf child (funcall fun-rotate child)) + (setf *current-child* (first child))))) + (when group-is-root? + (setf *current-root* *current-child*)) + (show-all-childs))) + + +(defun select-next-brother () + "Select the next brother group" + (select-next/previous-brother #'anti-rotate-list)) + +(defun select-previous-brother () + "Select the previous brother group" + (select-next/previous-brother #'rotate-list)) + + +(defun select-next-level () + "Select the next level in group" + (select-current-group nil) + (when (group-p *current-child*) + (awhen (first (group-child *current-child*)) + (setf *current-child* it))) + (show-all-childs)) + +(defun select-previous-level () + "Select the previous level in group" + (unless (equal *current-child* *current-root*) + (select-current-group nil) + (awhen (find-father-group *current-child*) + (setf *current-child* it)) + (show-all-childs))) + + +(defun select-next/previous-child (fun-rotate) + "Select the next/previous child" + (when (group-p *current-child*) + (with-slots (child) *current-child* + (setf child (funcall fun-rotate child))) + (show-all-childs))) + + +(defun select-next-child () + "Select the next child" + (select-next/previous-child #'anti-rotate-list)) + +(defun select-previous-child () + "Select the previous child" + (select-next/previous-child #'rotate-list)) + + + +(defun enter-group () + "Enter in the selected group - ie make it the root group" + (hide-all-childs *current-root*) + (setf *current-root* *current-child*) + (show-all-childs)) + +(defun leave-group () + "Leave the selected group - ie make its father the root group" + (hide-all-childs *current-root*) + (awhen (find-father-group *current-root*) + (when (group-p it) + (setf *current-root* it))) + (show-all-childs)) + + +(defun switch-to-root-group () + "Switch to the root group" + (hide-all-childs *current-root*) + (setf *current-root* *root-group*) + (show-all-childs)) + +(defun switch-and-select-root-group () + "Switch and select the root group" + (hide-all-childs *current-root*) + (setf *current-root* *root-group*) + (setf *current-child* *current-root*) + (show-all-childs)) + + +(defun toggle-show-root-group () + "Show/Hide the root group" + (hide-all-childs *current-root*) + (setf *show-root-group-p* (not *show-root-group-p*)) + (show-all-childs)) + + +(defun focus-child (child father) + "Focus child - Return true if something has change" + (when (and (group-p father) + (member child (group-child father))) + (when (not (equal child (first (group-child father)))) + (loop until (equal child (first (group-child father))) + do (setf (group-child father) (rotate-list (group-child father)))) + t))) + +(defun focus-child-rec (child father) + "Focus child and its fathers - Return true if something has change" + (let ((change nil)) + (labels ((rec (child father) + (when (focus-child child father) + (setf change t)) + (when father + (rec father (find-father-group father))))) + (rec child father)) + change)) + +(defun set-current-child (child father) + "Set *current-child* to child - Return t if something has change" + (cond ((and (group-p child) (not (equal *current-child* child))) + (setf *current-child* child) + t) + ((and (group-p father) (not (equal *current-child* father))) + (setf *current-child* father) + t))) + +(defun set-current-root (father) + "Set current root if father is not in current root" + (unless (find-child father *current-root*) + (setf *current-root* father))) + + +(defun focus-all-childs (child father) + "Focus child and its fathers - Set current group to father" + (let ((new-focus (focus-child-rec child father)) + (new-current-child (set-current-child child father)) + (new-root (set-current-root father))) + (or new-focus new-current-child new-root))) + + + +(defun remove-child-in-group (child group) + "Remove the child in group" + (when (group-p group) + (setf (group-child group) (remove child (group-child group) :test #'equal)))) + +(defun remove-child-in-groups (child root) + "Remove child in the group root and in all its childs" + (with-all-groups (root group) + (remove-child-in-group child group)) + (when (xlib:window-p child) + (netwm-remove-in-client-list child))) + + + +(defun remove-child-in-all-groups (child) + "Remove child in all groups from *root-group*" + (when (equal child *current-root*) + (setf *current-root* (find-father-group child))) + (when (equal child *current-child*) + (setf *current-child* *current-root*)) + (remove-child-in-groups child *root-group*)) + + + + + + +(defun process-new-window (window) + "When a new window is created (or when we are scanning initial +windows), this function dresses the window up and gets it ready to be +managed." + ;; Listen for events + ;;(create-workspace-on-request) + ;;(create-group-on-request) + ;; PHIL: TODO: add a hook here + (with-xlib-protect + (setf (xlib:window-event-mask window) *window-events*) + (set-window-state window +normal-state+) + (setf (xlib:drawable-border-width window) (case (window-type window) + (:normal 1) + (:maxsize 1) + (:transient 1) + (t 0))) + (grab-all-buttons window) + (when (xlib:window-p *current-child*) + (leave-group) + (select-previous-level)) + ;;(unless (eql (window-type window) :maxsize) ;; PHIL: this is sufficient for the ROX panel + (pushnew window (group-child *current-child*)) ;) + (unhide-window window) + ;;(dbg (xlib:wm-name window) (xlib:get-wm-class window) (window-type window)) ;;; PHIL + (case (window-type window) + (:normal (adapt-child-to-father window *current-child*)) + (t (let* ((hints (xlib:wm-normal-hints window)) + (min-width (or (and hints (xlib:wm-size-hints-min-width hints)) 0)) + (min-height (or (and hints (xlib:wm-size-hints-min-height hints)) 0)) + (max-width (or (and hints (xlib:wm-size-hints-max-width hints)) (xlib:drawable-width *root*))) + (max-height (or (and hints (xlib:wm-size-hints-max-height hints)) (xlib:drawable-height *root*))) + (rwidth (or (and hints (or (xlib:wm-size-hints-width hints) (xlib:wm-size-hints-base-width hints))) + (xlib:drawable-width window))) + (rheight (or (and hints (or (xlib:wm-size-hints-height hints) (xlib:wm-size-hints-base-height hints))) + (xlib:drawable-height window)))) + (setf (xlib:drawable-width window) (min (max min-width rwidth) max-width) + (xlib:drawable-height window) (min (max min-height rheight) max-height)) + (setf (xlib:drawable-x window) (truncate (+ (group-rx *current-child*) (/ (- (group-rw *current-child*) (xlib:drawable-width window)) 2))) + (xlib:drawable-y window) (truncate (+ (group-ry *current-child*) (/ (- (group-rh *current-child*) (xlib:drawable-height window)) 2))))))) + (netwm-add-in-client-list window))) + + + + +;;(defun hide-existing-windows (screen) +;; "Hide all existing windows in screen" +;; (dolist (win (xlib:query-tree (xlib:screen-root screen))) +;; (hide-window win))) + +(defun process-existing-windows (screen) + "Windows present when clfswm starts up must be absorbed by clfswm." + (let ((id-list nil) + (all-windows (get-all-windows))) + (dolist (win (xlib:query-tree (xlib:screen-root screen))) + (unless (member win all-windows) + (let ((map-state (xlib:window-map-state win)) + (wm-state (window-state win))) + (unless (or (eql (xlib:window-override-redirect win) :on) + (eql win *no-focus-window*)) + (when (or (eql map-state :viewable) + (eql wm-state +iconic-state+)) + (format t "Processing ~S: type=~A ~S~%" (xlib:wm-name win) (window-type win)win) + ;; (unhide-window win) + (process-new-window win) + (xlib:map-window win) + (pushnew (xlib:window-id win) id-list)))))) + (netwm-set-client-list id-list))) Added: clfswm/clfswm-keys.lisp ============================================================================== --- (empty file) +++ clfswm/clfswm-keys.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,276 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Tue Feb 12 19:23:14 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Keys functions definition +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +(defun define-hash-table-key-name (hash-table name) + (setf (gethash 'name hash-table) name)) + +;;; CONFIG - Key mode names + +(define-hash-table-key-name *main-keys* "Main mode keys") +(define-hash-table-key-name *second-keys* "Second mode keys") +(define-hash-table-key-name *mouse-action* "Mouse buttons actions in second mode") +(define-hash-table-key-name *pager-keys* "Pager mode keys") +(define-hash-table-key-name *pager-mouse-action* "Mouse buttons actions in pager mode") +(define-hash-table-key-name *info-keys* "Info mode keys") +(define-hash-table-key-name *info-mouse-action* "Mouse buttons actions in info mode") + + +(defmacro define-define-key (name hashtable) + (let ((name-key-fun (create-symbol "define-" name "-key-fun")) + (name-key (create-symbol "define-" name "-key")) + (undefine-name (create-symbol "undefine-" name "-key")) + (undefine-multi-name (create-symbol "undefine-" name "-multi-keys"))) + `(progn + (defun ,name-key-fun (key function &optional keystring) + "Define a new key, a key is '(char '(modifier list))" + (setf (gethash key ,hashtable) (list function keystring))) + + (defmacro ,name-key ((key &rest modifiers) function &optional keystring) + `(,',name-key-fun (list ,key ,(modifiers->state modifiers)) ,function ,keystring)) + + (defmacro ,undefine-name ((key &rest modifiers)) + `(remhash (list ,key ,(modifiers->state modifiers)) ,',hashtable)) + + (defmacro ,undefine-multi-name (&rest keys) + `(progn + ,@(loop for k in keys + collect `(,',undefine-name ,k))))))) + + +(defmacro define-define-mouse (name hashtable) + (let ((name-mouse-fun (create-symbol "define-" name "-fun")) + (name-mouse (create-symbol "define-" name)) + (undefine-name (create-symbol "undefine-" name))) + `(progn + (defun ,name-mouse-fun (button function-press &optional keystring function-release) + "Define a new mouse button action, a button is '(button number '(modifier list))" + (setf (gethash button ,hashtable) (list function-press keystring function-release))) + + (defmacro ,name-mouse ((button &rest modifiers) function-press &optional function-release keystring) + `(,',name-mouse-fun (list ,button ,(modifiers->state modifiers)) ,function-press ,keystring ,function-release)) + + (defmacro ,undefine-name ((key &rest modifiers)) + `(remhash (list ,key ,(modifiers->state modifiers)) ,',hashtable))))) + + + +(define-define-key "main" *main-keys*) +(define-define-key "second" *second-keys*) +(define-define-key "pager" *pager-keys*) +(define-define-key "info" *info-keys*) + + + + +;;(defun undefine-main-keys (&rest keys) +;; (dolist (k keys) +;; (undefine-main-key k))) + +(defun undefine-info-key-fun (key) + (remhash key *info-keys*)) + +(define-define-mouse "mouse-action" *mouse-action*) +(define-define-mouse "pager-mouse-action" *pager-mouse-action*) +(define-define-mouse "info-mouse-action" *info-mouse-action*) + + + + + +(defmacro define-ungrab/grab (name function hashtable) + `(defun ,name () + (maphash #'(lambda (k v) + (declare (ignore v)) + (when (consp k) + (handler-case + (let* ((key (first k)) + (keycode (typecase key + (character (char->keycode key)) + (number key) + (string (let ((keysym (keysym-name->keysym key))) + (and keysym (xlib:keysym->keycodes *display* keysym))))))) + (if keycode + (,function *root* keycode :modifiers (second k)) + (format t "~&Grabbing error: Can't find key '~A'~%" key))) + (error (c) + ;;(declare (ignore c)) + (format t "~&Grabbing error: Can't grab key '~A' (~A)~%" k c))) + (force-output))) + ,hashtable))) + +(define-ungrab/grab grab-main-keys xlib:grab-key *main-keys*) +(define-ungrab/grab ungrab-main-keys xlib:ungrab-key *main-keys*) + + + + + + + + + + + + + + +(defun funcall-key-from-code (hash-table-key code state &optional args) + (labels ((funcall-from (key) + (multiple-value-bind (function foundp) + (gethash (list key state) hash-table-key) + (when (and foundp (first function)) + (if args + (funcall (first function) args) + (funcall (first function))) + t))) + (from-code () + (funcall-from code)) + (from-char () + (let ((char (keycode->char code state))) + (funcall-from char))) + (from-string () + (let ((string (keysym->keysym-name (xlib:keycode->keysym *display* code 0)))) + (funcall-from string)))) + (cond ((from-code)) + ((from-char)) + ((from-string))))) + + + +(defun funcall-button-from-code (hash-table-key code state root-x root-y + &optional (action #'first) args) + "Action: first=press third=release" + (let ((state (modifiers->state (set-difference (state->modifiers state) + '(:button-1 :button-2 :button-3 :button-4 :button-5))))) + (multiple-value-bind (function foundp) + (gethash (list code state) hash-table-key) + (if (and foundp (funcall action function)) + (if args + (funcall (funcall action function) root-x root-y args) + (funcall (funcall action function) root-x root-y)) + t)))) + + + + +;;;,----- +;;;| Auto documentation tools +;;;`----- + +(defun produce-doc-html (hash-table-key-list &optional (stream t)) + "Produce an html doc from a hash-table key" + (labels ((clean-string (str) + (cond ((string-equal str "#\\:") ":") + ((string-equal str "#\\#") "#") + ((string-equal str "#\\\\") "\\") + (t (substitute #\Space #\# + (substitute #\Space #\\ + (substitute #\Space #\: str)))))) + (produce-keys (hk) + `("table class=\"ex\" cellspacing=\"5\" border=\"0\" width=\"100%\"" + (tr ("th align=\"right\" width=\"10%\"" "Modifiers") + ("th align=\"center\" width=\"10%\"" "Key/Button") + ("th align=\"left\"" "Function")) + ,@(let ((acc nil)) + (maphash #'(lambda (k v) + (when (consp k) + (push `(tr + ("td align=\"right\" style=\"color:#FF0000\" nowrap" + ,(clean-string (format nil "~{~@(~S ~)~}" (state->modifiers (second k))))) + ("td align=\"center\" nowrap" + ,(clean-string (format nil "~@(~S~)" + (or (second v) + (and (stringp (first k)) + (intern (string-upcase (first k)))) + (first k))))) + ("td style=\"color:#0000FF\" nowrap" ,(documentation (or (first v) (third v)) 'function))) + acc))) + hk) + (nreverse acc))))) + (produce-html + `(html + (head + (title "CLFSWM Keys")) + (body + (h1 "CLFSWM Keys") + (p (small "Note: Mod-1 is the Meta or Alt key")) + ,@(let ((acc nil)) + (dolist (hk hash-table-key-list) + (push `(h3 (u ,(gethash 'name hk))) acc) + (push (produce-keys hk) acc)) + (nreverse acc)))) + 0 stream))) + + +(defun produce-doc-html-in-file (filename) + (with-open-file (stream filename :direction :output + :if-exists :supersede :if-does-not-exist :create) + (produce-doc-html (list *main-keys* *second-keys* *mouse-action* *pager-keys* *pager-mouse-action* + *info-keys* *info-mouse-action*) + stream))) + + + +(defun produce-doc (hash-table-key-list &optional (stream t)) + "Produce a text doc from a hash-table key" + (format stream " * CLFSWM Keys *~%") + (format stream " -----------~%") + (format stream "~%Note: Mod-1 is the Meta or Alt key~%") + (dolist (hk hash-table-key-list) + (format stream "~2&~A:~%" (gethash 'name hk)) + (dotimes (i (length (gethash 'name hk))) + (format stream "-")) + (format stream "~2%") + (maphash #'(lambda (k v) + (when (consp k) + (format stream "~&~20@<~{~@(~A~) ~}~> ~13@<~@(~A~)~> ~A~%" + (state->modifiers (second k)) + (remove #\# (remove #\\ (format nil "~S" (or (second v) + (and (stringp (first k)) + (intern (string-upcase (first k)))) + (first k))))) + (documentation (or (first v) (third v)) 'function)))) + hk) + (format stream "~2&"))) + + + +(defun produce-doc-in-file (filename) + (with-open-file (stream filename :direction :output + :if-exists :supersede :if-does-not-exist :create) + (produce-doc (list *main-keys* *second-keys* *mouse-action* *pager-keys* *pager-mouse-action* + *info-keys* *info-mouse-action*) + stream))) + + +(defun produce-all-docs () + "Produce all docs in keys.html and keys.txt" + (produce-doc-in-file "keys.txt") + (produce-doc-html-in-file "keys.html")) + Added: clfswm/clfswm-layout.lisp ============================================================================== --- (empty file) +++ clfswm/clfswm-layout.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,284 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Wed Feb 27 22:19:57 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Layout functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + +;;; CONFIG - Layout menu +;;; +;;; To add a new layout: +;;; 1- define your own layout: a method returning the real size of the +;;; child in screen size (integer) as 5 values (rx, ry, rw, rh, raise-p). +;;; This method can use the float size of the child (x, y ,w , h). +;;; It can be specialised for xlib:window or group +;;; 2- Define a seter function for your layout +;;; 3- Register your new layout with register-layout. + + + + +;;; Generic functions +(defun set-layout (layout) + "Set the layout of the current child" + (when (group-p *current-child*) + (setf (group-layout *current-child*) layout) + (leave-second-mode))) + ;;(show-all-childs))) + +(defun get-managed-child (father) + "Return only window in normal mode who can be tiled" + (when (group-p father) + (remove-if #'(lambda (x) + (and (xlib:window-p x) (not (eql (window-type x) :normal)))) + (group-child father)))) + +(defun register-layout (layout) + (setf *layout-list* (append *layout-list* (list layout)))) + + + +;;; No layout +(defgeneric no-layout (child father) + (:documentation "Maximize windows in there group - leave group to there size")) + +(defmethod no-layout ((child xlib:window) father) + (with-slots (rx ry rw rh) father + (values (1+ rx) (1+ ry) (- rw 2) (- rh 2) nil))) + +(defmethod no-layout ((child group) father) + (with-slots ((cx x) (cy y) (cw w) (ch h)) child + (with-slots ((frx rx) (fry ry) (frw rw) (frh rh)) father + (values (round (+ (* cx frw) frx)) + (round (+ (* cy frh) fry)) + (round (* cw frw)) + (round (* ch frh)) + t)))) + +(defun set-no-layout () + "Maximize windows in there group - leave group to there size" + (set-layout #'no-layout)) + +(register-layout 'set-no-layout) + + + + +;;; Tile layout +(defgeneric tile-layout (child father) + (:documentation "Tile child in its group")) + +(defmethod tile-layout (child father) + (let* ((managed-childs (get-managed-child father)) + (pos (position child managed-childs)) + (len (length managed-childs)) + (n (ceiling (sqrt len))) + (dx (/ (group-rw father) n)) + (dy (/ (group-rh father) (ceiling (/ len n))))) + (values (round (+ (group-rx father) (truncate (* (mod pos n) dx)) 1)) + (round (+ (group-ry father) (truncate (* (truncate (/ pos n)) dy)) 1)) + (round (- dx 2)) + (round (- dy 2)) + nil))) + +(defun set-tile-layout () + "Tile child in its group" + (set-layout #'tile-layout)) + +(register-layout 'set-tile-layout) + + +;;; Tile Left +(defun layout-ask-size (msg slot &optional (min 80)) + (when (group-p *current-child*) + (let ((new-size (/ (or (query-number msg) min) 100))) + (when (<= 0 new-size 1) + (setf (group-data-slot *current-child* slot) new-size))))) + + + + +(defgeneric tile-left-layout (child father) + (:documentation "Tile Left: main child on left and others on right")) + +(defmethod tile-left-layout (child father) + (with-slots (rx ry rw rh) father + (let* ((managed-childs (get-managed-child father)) + (pos (position child managed-childs)) + (len (max (1- (length managed-childs)) 1)) + (dy (/ rh len)) + (size (or (group-data-slot father :tile-size) 0.8))) + (if (= pos 0) + (values (1+ rx) + (1+ ry) + (- (round (* rw size)) 2) + (- rh 2) + nil) + (values (1+ (round (+ rx (* rw size)))) + (1+ (round (+ ry (* dy (1- pos))))) + (- (round (* rw (- 1 size))) 2) + (- (round dy) 2) + nil))))) + + +(defun set-tile-left-layout () + "Tile Left: main child on left and others on right" + (layout-ask-size "Tile size in percent (%)" :tile-size) + (set-layout #'tile-left-layout)) + +(register-layout 'set-tile-left-layout) + + + +;;; Tile right +(defgeneric tile-right-layout (child father) + (:documentation "Tile Right: main child on right and others on left")) + +(defmethod tile-right-layout (child father) + (with-slots (rx ry rw rh) father + (let* ((managed-childs (get-managed-child father)) + (pos (position child managed-childs)) + (len (max (1- (length managed-childs)) 1)) + (dy (/ rh len)) + (size (or (group-data-slot father :tile-size) 0.8))) + (if (= pos 0) + (values (1+ (round (+ rx (* rw (- 1 size))))) + (1+ ry) + (- (round (* rw size)) 2) + (- rh 2) + nil) + (values (1+ rx) + (1+ (round (+ ry (* dy (1- pos))))) + (- (round (* rw (- 1 size))) 2) + (- (round dy) 2) + nil))))) + + +(defun set-tile-right-layout () + "Tile Right: main child on right and others on left" + (layout-ask-size "Tile size in percent (%)" :tile-size) + (set-layout #'tile-right-layout)) + + +(register-layout 'set-tile-right-layout) + + + + +;;; Tile Top +(defgeneric tile-top-layout (child father) + (:documentation "Tile Top: main child on top and others on bottom")) + +(defmethod tile-top-layout (child father) + (with-slots (rx ry rw rh) father + (let* ((managed-childs (get-managed-child father)) + (pos (position child managed-childs)) + (len (max (1- (length managed-childs)) 1)) + (dx (/ rw len)) + (size (or (group-data-slot father :tile-size) 0.8))) + (if (= pos 0) + (values (1+ rx) + (1+ ry) + (- rw 2) + (- (round (* rh size)) 2) + nil) + (values (1+ (round (+ rx (* dx (1- pos))))) + (1+ (round (+ ry (* rh size)))) + (- (round dx) 2) + (- (round (* rh (- 1 size))) 2) + nil))))) + + +(defun set-tile-top-layout () + "Tile Top: main child on top and others on bottom" + (layout-ask-size "Tile size in percent (%)" :tile-size) + (set-layout #'tile-top-layout)) + +(register-layout 'set-tile-top-layout) + + + +;;; Tile Bottom +(defgeneric tile-bottom-layout (child father) + (:documentation "Tile Bottom: main child on bottom and others on top")) + +(defmethod tile-bottom-layout (child father) + (with-slots (rx ry rw rh) father + (let* ((managed-childs (get-managed-child father)) + (pos (position child managed-childs)) + (len (max (1- (length managed-childs)) 1)) + (dx (/ rw len)) + (size (or (group-data-slot father :tile-size) 0.8))) + (if (= pos 0) + (values (1+ rx) + (1+ (round (+ ry (* rh (- 1 size))))) + (- rw 2) + (- (round (* rh size)) 2)) + (values (1+ (round (+ rx (* dx (1- pos))))) + (1+ ry) + (- (round dx) 2) + (- (round (* rh (- 1 size))) 2)))))) + + + +(defun set-tile-bottom-layout () + "Tile Bottom: main child on bottom and others on top" + (layout-ask-size "Tile size in percent (%)" :tile-size) + (set-layout #'tile-bottom-layout)) + + +(register-layout 'set-tile-bottom-layout) + + + + + +;;; Space layout +(defgeneric tile-space-layout (child father) + (:documentation "Tile Space: tile child in its group leaving spaces between them")) + +(defmethod tile-space-layout (child father) + (with-slots (rx ry rw rh) father + (let* ((managed-childs (get-managed-child father)) + (pos (position child managed-childs)) + (len (length managed-childs)) + (n (ceiling (sqrt len))) + (dx (/ rw n)) + (dy (/ rh (ceiling (/ len n)))) + (size (or (group-data-slot father :tile-space-size) 0.1))) + (when (> size 0.5) (setf size 0.45)) + (values (round (+ rx (truncate (* (mod pos n) dx)) (* dx size) 1)) + (round (+ ry (truncate (* (truncate (/ pos n)) dy)) (* dy size) 1)) + (round (- dx (* dx size 2) 2)) + (round (- dy (* dy size 2) 2)) + nil)))) + +(defun set-space-tile-layout () + "Tile Space: tile child in its group leaving spaces between them" + (layout-ask-size "Space size in percent (%)" :tile-space-size 10) + (set-layout #'tile-space-layout)) + +(register-layout 'set-space-tile-layout) Added: clfswm/clfswm-pack.lisp ============================================================================== --- (empty file) +++ clfswm/clfswm-pack.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,479 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Tue Feb 12 14:02:45 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Tile, pack and fill functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +;;;,----- +;;;| Tile functions +;;;`----- +(defun tile-workspace-vertically (workspace) + "Tile a workspace vertically" + (let* ((len (max (length (workspace-group-list workspace)) 1)) + (n (ceiling (sqrt len))) + (dx (/ (xlib:screen-width *screen*) n)) + (dy (/ (xlib:screen-height *screen*) (ceiling (/ len n))))) + (loop for group in (workspace-group-list workspace) + for i from 0 do + (setf (group-x group) (1+ (truncate (* (mod i n) dx))) + (group-y group) (1+ (truncate (* (truncate (/ i n)) dy))) + (group-width group) (- (truncate dx) 2) + (group-height group) (- (truncate dy) 2))))) + + +(defun tile-current-workspace-vertically () + "Tile the current workspace vertically" + (minimize-group (current-group)) + (tile-workspace-vertically (current-workspace)) + (show-all-windows-in-workspace (current-workspace))) + + + +(defun tile-workspace-horizontally (workspace) + "Tile a workspace horizontally" + (let* ((len (max (length (workspace-group-list workspace)) 1)) + (n (ceiling (sqrt len))) + (dx (/ (xlib:screen-width *screen*) (ceiling (/ len n)))) + (dy (/ (xlib:screen-height *screen*) n))) + (loop for group in (workspace-group-list workspace) + for i from 0 do + (setf (group-x group) (1+ (truncate (* (truncate (/ i n)) dx))) + (group-y group) (1+ (truncate (* (mod i n) dy))) + (group-width group) (- (truncate dx) 2) + (group-height group) (- (truncate dy) 2))))) + + +(defun tile-current-workspace-horizontally () + "Tile the current workspace horizontally" + (minimize-group (current-group)) + (tile-workspace-horizontally (current-workspace)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun tile-workspace-right (workspace) + "Tile workspace with the current window on the left and others on the right" + (let ((len (length (workspace-group-list workspace))) + (group (first (workspace-group-list workspace)))) + (if (<= len 1) + (setf (group-x group) 0 + (group-y group) 0 + (group-width group) (xlib:screen-width *screen*) + (group-height group) (xlib:screen-height *screen*)) + (let ((dy (/ (xlib:screen-height *screen*) (1- len)))) + (setf (group-x group) 1 + (group-y group) 1 + (group-width group) (- (xlib:screen-width *screen*) *tile-border-size* 1) + (group-height group) (- (xlib:screen-height *screen*) 1)) + (loop :for i :from 0 + :for g :in (rest (workspace-group-list workspace)) + :do (setf (group-x g) (- (xlib:screen-width *screen*) *tile-border-size* -1) + (group-y g) (truncate (* i dy)) + (group-width g) (- *tile-border-size* 2) + (group-height g) (truncate (- dy 1)))))))) + +(defun tile-workspace-left (workspace) + "Tile workspace with the current window on the right and others on the left" + (let ((len (length (workspace-group-list workspace))) + (group (first (workspace-group-list workspace)))) + (if (<= len 1) + (setf (group-x group) 0 + (group-y group) 0 + (group-width group) (xlib:screen-width *screen*) + (group-height group) (xlib:screen-height *screen*)) + (let ((dy (/ (xlib:screen-height *screen*) (1- len)))) + (setf (group-x group) *tile-border-size* + (group-y group) 1 + (group-width group) (- (xlib:screen-width *screen*) *tile-border-size* 1) + (group-height group) (- (xlib:screen-height *screen*) 1)) + (loop :for i :from 0 + :for g :in (rest (workspace-group-list workspace)) + :do (setf (group-x g) 0 + (group-y g) (truncate (* i dy)) + (group-width g) (- *tile-border-size* 2) + (group-height g) (truncate (- dy 1)))))))) + + +(defun tile-workspace-top (workspace) + "Tile workspace with the current window on the bottom and others on the top" + (let ((len (length (workspace-group-list workspace))) + (group (first (workspace-group-list workspace)))) + (if (<= len 1) + (setf (group-x group) 0 + (group-y group) 0 + (group-width group) (xlib:screen-width *screen*) + (group-height group) (xlib:screen-height *screen*)) + (let ((dx (/ (xlib:screen-width *screen*) (1- len)))) + (setf (group-x group) 1 + (group-y group) *tile-border-size* + (group-width group) (- (xlib:screen-width *screen*) 1) + (group-height group) (- (xlib:screen-height *screen*) *tile-border-size* 1)) + (loop :for i :from 0 + :for g :in (rest (workspace-group-list workspace)) + :do (setf (group-x g) (truncate (* i dx)) + (group-y g) 0 + (group-width g) (truncate (- dx 1)) + (group-height g) (- *tile-border-size* 2))))))) + +(defun tile-workspace-bottom (workspace) + "Tile workspace with the current window on the top and others on the bottom" + (let ((len (length (workspace-group-list workspace))) + (group (first (workspace-group-list workspace)))) + (if (<= len 1) + (setf (group-x group) 0 + (group-y group) 0 + (group-width group) (xlib:screen-width *screen*) + (group-height group) (xlib:screen-height *screen*)) + (let ((dx (/ (xlib:screen-width *screen*) (1- len)))) + (setf (group-x group) 1 + (group-y group) 1 + (group-width group) (- (xlib:screen-width *screen*) 1) + (group-height group) (- (xlib:screen-height *screen*) *tile-border-size* 1)) + (loop :for i :from 0 + :for g :in (rest (workspace-group-list workspace)) + :do (setf (group-x g) (truncate (* i dx)) + (group-y g) (- (xlib:screen-height *screen*) *tile-border-size* -1) + (group-width g) (truncate (- dx 1)) + (group-height g) (- *tile-border-size* 2))))))) + + +(defun tile-current-workspace-to () + "Tile the current workspace with the current window on one side and others on the other" + (funcall *tile-workspace-function* (current-workspace)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun reconfigure-tile-workspace () + "Reconfigure the workspace tiling for the current session" + (let ((method (loop :for m = (intern (string-upcase + (query-string "Workspace tiling method (R)ight, (L)eft, (T)op, (B)ottom:")) + :keyword) + :when (member m '(:r :l :t :b)) :return m)) + (size (loop :for s = (parse-integer (query-string "Workspace tiling border size" + (format nil "~A" *tile-border-size*)) + :junk-allowed t) + :when (numberp s) :return s))) + (setf *tile-workspace-function* (case method + (:r 'tile-workspace-right) + (:l 'tile-workspace-left) + (:t 'tile-workspace-top) + (:b 'tile-workspace-bottom)) + *tile-border-size* size))) + + + + +;;;,----- +;;;| Edges functions +;;;`----- +(defun group-x2 (group) + (+ (group-x group) (group-width group))) + +(defun group-y2 (group) + (+ (group-y group) (group-height group))) + + +(defun find-edge-up (current-group workspace) + (let ((y-found 0)) + (dolist (group (workspace-group-list workspace)) + (when (and (not (equal group current-group)) + (<= (group-y2 group) (group-y current-group)) + (>= (group-x2 group) (group-x current-group)) + (<= (group-x group) (group-x2 current-group))) + (setf y-found (max y-found (+ (group-y2 group) 2))))) + y-found)) + +(defun find-edge-down (current-group workspace) + (let ((y-found (xlib:screen-height *screen*))) + (dolist (group (workspace-group-list workspace)) + (when (and (not (equal group current-group)) + (>= (group-y group) (group-y2 current-group)) + (>= (group-x2 group) (group-x current-group)) + (<= (group-x group) (group-x2 current-group))) + (setf y-found (min y-found (- (group-y group) 2))))) + y-found)) + +(defun find-edge-right (current-group workspace) + (let ((x-found (xlib:screen-width *screen*))) + (dolist (group (workspace-group-list workspace)) + (when (and (not (equal group current-group)) + (>= (group-x group) (group-x2 current-group)) + (>= (group-y2 group) (group-y current-group)) + (<= (group-y group) (group-y2 current-group))) + (setf x-found (min x-found (- (group-x group) 2))))) + x-found)) + + +(defun find-edge-left (current-group workspace) + (let ((x-found 0)) + (dolist (group (workspace-group-list workspace)) + (when (and (not (equal group current-group)) + (<= (group-x2 group) (group-x current-group)) + (>= (group-y2 group) (group-y current-group)) + (<= (group-y group) (group-y2 current-group))) + (setf x-found (max x-found (+ (group-x2 group) 2))))) + x-found)) + + + +;;;,----- +;;;| Pack functions +;;;`----- + + + +(defun pack-group-up (workspace group) + "Pack group to up" + (let ((y-found (find-edge-up group workspace))) + (setf (group-y group) y-found))) + + +(defun pack-group-down (workspace group) + "Pack group to down" + (let ((y-found (find-edge-down group workspace))) + (setf (group-y group) (- y-found (group-height group))))) + +(defun pack-group-right (workspace group) + "Pack group to right" + (let ((x-found (find-edge-right group workspace))) + (setf (group-x group) (- x-found (group-width group))))) + + +(defun pack-group-left (workspace group) + "Pack group to left" + (let ((x-found (find-edge-left group workspace))) + (setf (group-x group) x-found))) + + + + +(defun pack-current-group-up () + "Pack current group to up" + (pack-group-up (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun pack-current-group-down () + "Pack current group to down" + (pack-group-down (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + +(defun pack-current-group-right () + "Pack current group to right" + (pack-group-right (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun pack-current-group-left () + "Pack current group to left" + (pack-group-left (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun center-group (group) + "Center group" + (setf (group-x group) (truncate (/ (- (xlib:screen-width *screen*) (group-width group)) 2)) + (group-y group) (truncate (/ (- (xlib:screen-height *screen*) (group-height group)) 2)))) + +(defun center-current-group () + "Center the current group" + (center-group (current-group)) + (show-all-windows-in-workspace (current-workspace))) + +;;;,----- +;;;| Fill functions +;;;`----- + + +(defun fill-group-up (workspace group) + "Fill a group up" + (let* ((y-found (find-edge-up group workspace)) + (dy (- (group-y group) y-found))) + (setf (group-y group) y-found + (group-height group) (+ (group-height group) dy)))) + +(defun fill-group-down (workspace group) + "Fill a group down" + (let* ((y-found (find-edge-down group workspace)) + (dy (- y-found (group-y2 group)))) + (setf (group-height group) (+ (group-height group) dy)))) + + +(defun fill-group-left (workspace group) + "Fill a group left" + (let* ((x-found (find-edge-left group workspace)) + (dx (- (group-x group) x-found))) + (setf (group-x group) x-found + (group-width group) (+ (group-width group) dx)))) + +(defun fill-group-right (workspace group) + "Fill a group rigth" + (let* ((x-found (find-edge-right group workspace)) + (dx (- x-found (group-x2 group)))) + (setf (group-width group) (+ (group-width group) dx)))) + + +(defun fill-current-group-up () + "Fill the current group up" + (fill-group-up (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + +(defun fill-current-group-down () + "Fill the current group down" + (fill-group-down (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun fill-current-group-left () + "Fill the current group left" + (fill-group-left (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + +(defun fill-current-group-right () + "Fill the current group rigth" + (fill-group-right (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + + +;;;,----- +;;;| Lower functions +;;;`----- + +(defun resize-down-group (group) + "Resize down a group" + (when (> (group-width group) 100) + (setf (group-x group) (+ (group-x group) 10) + (group-width group) (max (- (group-width group) 20)))) + (when (> (group-height group) 100) + (setf (group-y group) (+ (group-y group) 10) + (group-height group) (max (- (group-height group) 20))))) + + +(defun resize-minimal-group (group) + "Resize down a group to its minimal size" + (loop while (> (group-width group) 100) do + (setf (group-x group) (+ (group-x group) 10) + (group-width group) (max (- (group-width group) 20)))) + (loop while (> (group-height group) 100) do + (setf (group-y group) (+ (group-y group) 10) + (group-height group) (max (- (group-height group) 20))))) + + + +(defun resize-down-current-group () + "Resize down the current group" + (resize-down-group (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun resize-minimal-current-group () + "Resize down the current group to its minimal size" + (resize-minimal-group (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + + + +(defun resize-half-width-left (group) + (setf (group-width group) + (max (truncate (/ (group-width group) 2)) + 100))) + +(defun resize-half-width-right (group) + (let* ((new-size (max (truncate (/ (group-width group) 2)) 100)) + (dx (- (group-width group) new-size))) + (setf (group-width group) new-size) + (incf (group-x group) (max dx 0)))) + + +(defun resize-half-height-up (group) + (setf (group-height group) + (max (truncate (/ (group-height group) 2)) + 100))) + +(defun resize-half-height-down (group) + (let* ((new-size (max (truncate (/ (group-height group) 2)) 100)) + (dy (- (group-height group) new-size))) + (setf (group-height group) new-size) + (incf (group-y group) (max dy 0)))) + + + + +(defun resize-half-width-left-current-group () + "Resize the current group to its half width to left" + (resize-half-width-left (current-group)) + (show-all-windows-in-workspace (current-workspace))) + +(defun resize-half-width-right-current-group () + "Resize the current group to its half width to right" + (resize-half-width-right (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun resize-half-height-up-current-group () + "Resize the current group to its half height to up" + (resize-half-height-up (current-group)) + (show-all-windows-in-workspace (current-workspace))) + +(defun resize-half-height-down-current-group () + "Resize the current group to its half height to down" + (resize-half-height-down (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + + +;;;,----- +;;;| Explode/Implode functions +;;;`----- +(defun explode-group (workspace group) + "Create a new group for each window in group" + (dolist (w (rest (group-window-list group))) + (add-group-in-workspace (copy-group *default-group*) workspace) + (add-window-in-group w (first (workspace-group-list workspace))) + (remove-window-in-group w group))) + +(defun implode-group (workspace) + "Move all windows in workspace to one group and remove other groups" + (dolist (g (rest (workspace-group-list workspace))) + (dolist (w (group-window-list g)) + (add-window-in-group w (first (workspace-group-list workspace))) + (remove-window-in-group w g)) + (remove-group-in-workspace g workspace))) + + + +(defun explode-current-group () + "Create a new group for each window in the current group" + (explode-group (current-workspace) (current-group)) + (show-all-windows-in-workspace (current-workspace))) + + +(defun implode-current-group () + "Move all windows in the current workspace to one group and remove other groups" + (implode-group (current-workspace)) + (show-all-windows-in-workspace (current-workspace))) + Added: clfswm/clfswm-second-mode.lisp ============================================================================== --- (empty file) +++ clfswm/clfswm-second-mode.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,222 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Fri Feb 22 21:38:53 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Second mode functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +(defparameter *sm-window* nil) +(defparameter *sm-font* nil) +(defparameter *sm-gc* nil) + +(defparameter *second-mode-program* nil + "Execute the program string if not nil") + + +;;(defun draw-second-mode-window () +;; (xlib:clear-area *sm-window*) +;; (let* ((text (format nil "Workspace ~A ~:(~A~) ~A ~A ~A" +;; (workspace-number (current-workspace)) +;; (if *arrow-action* *arrow-action* "") +;; (if *motion-action* *motion-action* "") +;; (cond ((numberp *open-next-window-in-new-workspace*) +;; (format nil ">W:~A" *open-next-window-in-new-workspace*)) +;; (*open-next-window-in-new-workspace* ">W") +;; (t "")) +;; (cond ((equal *open-next-window-in-new-group* :once) ">G") +;; (*open-next-window-in-new-group* ">G+") +;; (t "")))) +;; (len (length text))) +;; (xlib:draw-image-glyphs *sm-window* *sm-gc* +;; (truncate (/ (- *sm-width* (* (xlib:max-char-width *sm-font*) len)) 2)) +;; (truncate (/ (+ *sm-height* (- (font-ascent *sm-font*) (font-descent *sm-font*))) 2)) +;; text))) + + +(defun draw-second-mode-window () + (xlib:clear-area *sm-window*) + (let* ((text (format nil "Second mode")) + (len (length text))) + (xlib:draw-image-glyphs *sm-window* *sm-gc* + (truncate (/ (- *sm-width* (* (xlib:max-char-width *sm-font*) len)) 2)) + (truncate (/ (+ *sm-height* (- (xlib:font-ascent *sm-font*) (xlib:font-descent *sm-font*))) 2)) + text))) + + + + +;;; Second mode hooks +(defun sm-handle-key-press (&rest event-slots &key root code state &allow-other-keys) + (declare (ignore event-slots root)) + (funcall-key-from-code *second-keys* code state) + (draw-second-mode-window)) + +(defun sm-handle-enter-notify (&rest event-slots &key root-x root-y &allow-other-keys) + (declare (ignore event-slots root-x root-y)) + ;; (focus-group-under-mouse root-x root-y) + (draw-second-mode-window)) + +(defun sm-handle-motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) + (declare (ignore event-slots)) + (unless (compress-motion-notify) + (funcall-button-from-code *mouse-action* 'motion 0 root-x root-y #'first))) + +(defun sm-handle-button-press (&rest event-slots &key root-x root-y code state &allow-other-keys) + (declare (ignore event-slots)) + (funcall-button-from-code *mouse-action* code state root-x root-y #'first) + (draw-second-mode-window)) + +(defun sm-handle-button-release (&rest event-slots &key root-x root-y code state &allow-other-keys) + (declare (ignore event-slots)) + (funcall-button-from-code *mouse-action* code state root-x root-y #'third) + (draw-second-mode-window)) + +(defun sm-handle-configure-request (&rest event-slots) + (apply #'handle-configure-request event-slots) + (draw-second-mode-window)) + + +(defun sm-handle-configure-notify (&rest event-slots) + (apply #'handle-configure-notify event-slots) + (draw-second-mode-window)) + + +(defun sm-handle-destroy-notify (&rest event-slots) + (apply #'handle-destroy-notify event-slots) + (draw-second-mode-window)) + +(defun sm-handle-map-request (&rest event-slots) + (apply #'handle-map-request event-slots) + (draw-second-mode-window)) + +(defun sm-handle-unmap-notify (&rest event-slots) + (apply #'handle-unmap-notify event-slots) + (draw-second-mode-window)) + +(defun sm-handle-exposure (&rest event-slots) + (apply #'handle-exposure event-slots) + (draw-second-mode-window)) + + + +;;(defun sm-handle-property-notify (&rest event-slots &key window &allow-other-keys) +;; ;;(dbg (xlib:wm-name window)) +;; (draw-second-mode-window)) + + +;;; CONFIG: Second mode hooks +(setf *sm-button-press-hook* #'sm-handle-button-press + *sm-button-release-hook* #'sm-handle-button-release + *sm-motion-notify-hook* #'sm-handle-motion-notify + *sm-key-press-hook* #'sm-handle-key-press + *sm-configure-request-hook* #'sm-handle-configure-request + *sm-configure-notify-hook* #'sm-handle-configure-notify + *sm-destroy-notify-hook* #'sm-handle-destroy-notify + *sm-enter-notify-hook* #'sm-handle-enter-notify + *sm-exposure-hook* #'sm-handle-exposure + *sm-map-request-hook* #'sm-handle-map-request + *sm-unmap-notify-hook* #'sm-handle-unmap-notify) + + + + + +(defun sm-handle-event (&rest event-slots &key display event-key &allow-other-keys) + (declare (ignore display)) + ;;(dbg event-key) + (with-xlib-protect + (case event-key + (:button-press (call-hook *sm-button-press-hook* event-slots)) + (:button-release (call-hook *sm-button-release-hook* event-slots)) + (:motion-notify (call-hook *sm-motion-notify-hook* event-slots)) + (:key-press (call-hook *sm-key-press-hook* event-slots)) + (:configure-request (call-hook *sm-configure-request-hook* event-slots)) + (:configure-notify (call-hook *sm-configure-notify-hook* event-slots)) + (:map-request (call-hook *sm-map-request-hook* event-slots)) + (:unmap-notify (call-hook *sm-unmap-notify-hook* event-slots)) + (:destroy-notify (call-hook *sm-destroy-notify-hook* event-slots)) + (:mapping-notify (call-hook *sm-mapping-notify-hook* event-slots)) + (:property-notify (call-hook *sm-property-notify-hook* event-slots)) + (:create-notify (call-hook *sm-create-notify-hook* event-slots)) + (:enter-notify (call-hook *sm-enter-notify-hook* event-slots)) + (:exposure (call-hook *sm-exposure-hook* event-slots)))) + ;;(dbg "Ignore handle event" c event-slots))) + t) + + + +(defun second-key-mode () + "Switch to editing mode" + ;;(dbg "Second key ignore" c))))) + (setf *sm-window* (xlib:create-window :parent *root* + :x (truncate (/ (- (xlib:screen-width *screen*) *sm-width*) 2)) + :y 0 + :width *sm-width* :height *sm-height* + :background (get-color *sm-background-color*) + :border-width 1 + :border (get-color *sm-border-color*) + :colormap (xlib:screen-default-colormap *screen*) + :event-mask '(:exposure)) + *sm-font* (xlib:open-font *display* *sm-font-string*) + *sm-gc* (xlib:create-gcontext :drawable *sm-window* + :foreground (get-color *sm-foreground-color*) + :background (get-color *sm-background-color*) + :font *sm-font* + :line-style :solid)) + (xlib:map-window *sm-window*) + (draw-second-mode-window) + (no-focus) + (ungrab-main-keys) + (xgrab-keyboard *root*) + (xgrab-pointer *root* 66 67) + (unwind-protect + (catch 'exit-second-loop + (loop + (raise-window *sm-window*) + (xlib:display-finish-output *display*) + (xlib:process-event *display* :handler #'sm-handle-event) + (xlib:display-finish-output *display*))) + (xlib:free-gcontext *sm-gc*) + (xlib:close-font *sm-font*) + (xlib:destroy-window *sm-window*) + (xungrab-keyboard) + (xungrab-pointer) + (grab-main-keys) + (show-all-childs)) + (wait-no-key-or-button-press) + (when *second-mode-program* + (do-shell *second-mode-program*) + (setf *second-mode-program* nil))) + + + +(defun leave-second-mode () + "Leave second mode" + (banish-pointer) + (throw 'exit-second-loop nil)) + + + + Added: clfswm/clfswm-util.lisp ============================================================================== --- (empty file) +++ clfswm/clfswm-util.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,925 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Sat Mar 1 00:03:08 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Utility +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + + +(defun add-default-group () + "Add a default group" + (when (group-p *current-child*) + (let ((name (query-string "Group name"))) + (push (create-group :name name) (group-child *current-child*)))) + (leave-second-mode)) + + +(defun add-placed-group () + "Add a placed group" + (when (group-p *current-child*) + (let ((name (query-string "Group name")) + (x (/ (query-number "Group x in percent (%)") 100)) + (y (/ (query-number "Group y in percent (%)") 100)) + (w (/ (query-number "Group width in percent (%)") 100)) + (h (/ (query-number "Group height in percent (%)") 100))) + (push (create-group :name name :x x :y y :w w :h h) + (group-child *current-child*)))) + (leave-second-mode)) + + + +(defun delete-focus-window () + "Delete the focus window in all groups and workspaces" + (let ((window (xlib:input-focus *display*))) + (when (and window (not (xlib:window-equal window *no-focus-window*))) + (setf *current-child* *current-root*) + (remove-child-in-all-groups window) + (send-client-message window :WM_PROTOCOLS + (xlib:intern-atom *display* "WM_DELETE_WINDOW")) + (show-all-childs)))) + +(defun destroy-focus-window () + "Destroy the focus window in all groups and workspaces" + (let ((window (xlib:input-focus *display*))) + (when (and window (not (xlib:window-equal window *no-focus-window*))) + (setf *current-child* *current-root*) + (remove-child-in-all-groups window) + (xlib:kill-client *display* (xlib:window-id window)) + (show-all-childs)))) + +(defun remove-focus-window () + "Remove the focus window in the current group" + (let ((window (xlib:input-focus *display*))) + (when (and window (not (xlib:window-equal window *no-focus-window*))) + (setf *current-child* *current-root*) + (hide-child window) + (remove-child-in-group window (find-father-group window)) + (show-all-childs)))) + + +(defun unhide-all-windows-in-current-child () + "Unhide all hidden windows into the current child" + (with-xlib-protect + (dolist (window (get-hidden-windows)) + (unhide-window window) + (process-new-window window) + (xlib:map-window window))) + (show-all-childs)) + + + + +(defun find-child-under-mouse (x y) + "Return the child window under the mouse" + (with-xlib-protect + (let ((win nil)) + (with-all-windows-groups (*current-root* child) + (when (and (<= (xlib:drawable-x child) x (+ (xlib:drawable-x child) (xlib:drawable-width child))) + (<= (xlib:drawable-y child) y (+ (xlib:drawable-y child) (xlib:drawable-height child)))) + (setf win child)) + (when (and (<= (group-rx child) x (+ (group-rx child) (group-rw child))) + (<= (group-ry child) y (+ (group-ry child) (group-rh child)))) + (setf win (group-window child)))) + win))) + + + + + +;;; Selection functions +(defun clear-selection () + "Clear the current selection" + (setf *child-selection* nil) + (display-group-info *current-root*)) + +(defun copy-current-child () + "Copy the current child to the selection" + (pushnew *current-child* *child-selection*) + (display-group-info *current-root*)) + + +(defun cut-current-child () + "Cut the current child to the selection" + (copy-current-child) + (hide-all-childs *current-child*) + (remove-child-in-group *current-child* (find-father-group *current-child* *current-root*)) + (setf *current-child* *current-root*) + (show-all-childs)) + +(defun remove-current-child () + "Remove the current child from its father group" + (hide-all-childs *current-child*) + (remove-child-in-group *current-child* (find-father-group *current-child* *current-root*)) + (setf *current-child* *current-root*) + (leave-second-mode)) + + +(defun paste-selection-no-clear () + "Paste the selection in the current group - Do not clear the selection after paste" + (let ((group-dest (typecase *current-child* + (xlib:window (find-father-group *current-child* *current-root*)) + (group *current-child*)))) + (when group-dest + (dolist (child *child-selection*) + (pushnew child (group-child group-dest))) + (show-all-childs)))) + +(defun paste-selection () + "Paste the selection in the current group" + (paste-selection-no-clear) + (setf *child-selection* nil) + (display-group-info *current-root*)) + + + + + + + +;;; CONFIG - Identify mode +(defun identify-key () + "Identify a key" + (let* ((done nil) + (font (xlib:open-font *display* *identify-font-string*)) + (window (xlib:create-window :parent *root* + :x 0 :y 0 + :width (- (xlib:screen-width *screen*) 2) + :height (* 3 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) + :background (get-color *identify-background*) + :border-width 1 + :border (get-color *identify-border*) + :colormap (xlib:screen-default-colormap *screen*) + :event-mask '(:exposure))) + (gc (xlib:create-gcontext :drawable window + :foreground (get-color *identify-foreground*) + :background (get-color *identify-background*) + :font font + :line-style :solid))) + (labels ((print-key (code keysym key modifiers) + (xlib:clear-area window) + (setf (xlib:gcontext-foreground gc) (get-color *identify-foreground*)) + (xlib:draw-image-glyphs window gc 5 (+ (xlib:max-char-ascent font) 5) + (format nil "Press a key to identify. Press 'q' to stop the identify loop.")) + (when code + (xlib:draw-image-glyphs window gc 10 (+ (* 2 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) 5) + (format nil "Code=~A KeySym=~A Key=~S Modifiers=~A" + code keysym key modifiers)))) + (handle-identify-key (&rest event-slots &key root code state &allow-other-keys) + (declare (ignore event-slots root)) + (let* ((modifiers (xlib:make-state-keys state)) + (key (keycode->char code state)) + (keysym (keysym->keysym-name (xlib:keycode->keysym *display* code 0)))) + (setf done (and (equal key #\q) (null modifiers))) + (dbg code keysym key modifiers) + (print-key code keysym key modifiers) + (force-output))) + (handle-identify (&rest event-slots &key display event-key &allow-other-keys) + (declare (ignore display)) + (case event-key + (:key-press (apply #'handle-identify-key event-slots) t) + (:exposure (print-key nil nil nil nil))) + t)) + (xgrab-pointer *root* 92 93) + (xlib:map-window window) + (format t "~&Press 'q' to stop the identify loop~%") + (print-key nil nil nil nil) + (force-output) + (unwind-protect + (loop until done do + (xlib:display-finish-output *display*) + (xlib:process-event *display* :handler #'handle-identify)) + (xlib:destroy-window window) + (xlib:close-font font) + (xgrab-pointer *root* 66 67))))) + + + +(defun query-show-paren (orig-string pos) + "Replace matching parentheses with brackets" + (let ((string (copy-seq orig-string))) + (labels ((have-to-find-right? () + (and (< pos (length string)) (char= (aref string pos) #\())) + (have-to-find-left? () + (and (> (1- pos) 0) (char= (aref string (1- pos)) #\)))) + (pos-right () + (loop :for p :from (1+ pos) :below (length string) + :with level = 1 :for c = (aref string p) + :do (when (char= c #\() (incf level)) + (when (char= c #\)) (decf level)) + (when (= level 0) (return p)))) + (pos-left () + (loop :for p :from (- pos 2) :downto 0 + :with level = 1 :for c = (aref string p) + :do (when (char= c #\() (decf level)) + (when (char= c #\)) (incf level)) + (when (= level 0) (return p))))) + (when (have-to-find-right?) + (let ((p (pos-right))) + (when p (setf (aref string p) #\])))) + (when (have-to-find-left?) + (let ((p (pos-left))) + (when p (setf (aref string p) #\[)))) + string))) + + +;;; CONFIG - Query string mode +(let ((history nil)) + (defun clear-history () + "Clear the query-string history" + (setf history nil)) + + (defun query-string (msg &optional (default "")) + "Query a string from the keyboard. Display msg as prompt" + (let* ((done nil) + (font (xlib:open-font *display* *query-font-string*)) + (window (xlib:create-window :parent *root* + :x 0 :y 0 + :width (- (xlib:screen-width *screen*) 2) + :height (* 3 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) + :background (get-color *query-background*) + :border-width 1 + :border (get-color *query-border*) + :colormap (xlib:screen-default-colormap *screen*) + :event-mask '(:exposure))) + (gc (xlib:create-gcontext :drawable window + :foreground (get-color *query-foreground*) + :background (get-color *query-background*) + :font font + :line-style :solid)) + (result-string default) + (pos (length default)) + (local-history history)) + (labels ((add-cursor (string) + (concatenate 'string (subseq string 0 pos) "|" (subseq string pos))) + (print-string () + (xlib:clear-area window) + (setf (xlib:gcontext-foreground gc) (get-color *query-foreground*)) + (xlib:draw-image-glyphs window gc 5 (+ (xlib:max-char-ascent font) 5) msg) + (when (< pos 0) (setf pos 0)) + (when (> pos (length result-string)) (setf pos (length result-string))) + (xlib:draw-image-glyphs window gc 10 (+ (* 2 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) 5) + (add-cursor (query-show-paren result-string pos)))) + (call-backspace (modifiers) + (let ((del-pos (if (member :control modifiers) + (or (position #\Space result-string :from-end t :end pos) 0) + (1- pos)))) + (when (>= del-pos 0) + (setf result-string (concatenate 'string + (subseq result-string 0 del-pos) + (subseq result-string pos)) + pos del-pos)))) + (call-delete (modifiers) + (let ((del-pos (if (member :control modifiers) + (1+ (or (position #\Space result-string :start pos) (1- (length result-string)))) + (1+ pos)))) + (if (<= del-pos (length result-string)) + (setf result-string (concatenate 'string + (subseq result-string 0 pos) + (subseq result-string del-pos)))))) + (call-delete-eof () + (setf result-string (subseq result-string 0 pos))) + (handle-query-key (&rest event-slots &key root code state &allow-other-keys) + (declare (ignore event-slots root)) + (let* ((modifiers (xlib:make-state-keys state)) + (keysym (xlib:keycode->keysym *display* code (cond ((member :shift modifiers) 1) + ((member :mod-5 modifiers) 2) + (t 0)))) + (char (xlib:keysym->character *display* keysym)) + (keysym-name (keysym->keysym-name keysym))) + (setf done (cond ((string-equal keysym-name "Return") :Return) + ((string-equal keysym-name "Tab") :Complet) + ((string-equal keysym-name "Escape") :Escape) + (t nil))) + (cond ((string-equal keysym-name "Left") + (when (> pos 0) + (setf pos (if (member :control modifiers) + (let ((p (position #\Space result-string + :end (min (1- pos) (length result-string)) + :from-end t))) + (if p p 0)) + (1- pos))))) + ((string-equal keysym-name "Right") + (when (< pos (length result-string)) + (setf pos (if (member :control modifiers) + (let ((p (position #\Space result-string + :start (min (1+ pos) (length result-string))))) + (if p p (length result-string))) + (1+ pos))))) + ((string-equal keysym-name "Up") + (setf result-string (first local-history) + pos (length result-string) + local-history (rotate-list local-history))) + ((string-equal keysym-name "Down") + (setf result-string (first local-history) + pos (length result-string) + local-history (anti-rotate-list local-history))) + ((string-equal keysym-name "Home") (setf pos 0)) + ((string-equal keysym-name "End") (setf pos (length result-string))) + ((string-equal keysym-name "Backspace") (call-backspace modifiers)) + ((string-equal keysym-name "Delete") (call-delete modifiers)) + ((and (string-equal keysym-name "k") (member :control modifiers)) + (call-delete-eof)) + ((and (characterp char) (standard-char-p char)) + (setf result-string (concatenate 'string + (when (<= pos (length result-string)) + (subseq result-string 0 pos)) + (string char) + (when (< pos (length result-string)) + (subseq result-string pos)))) + (incf pos))) + (print-string))) + (handle-query (&rest event-slots &key display event-key &allow-other-keys) + (declare (ignore display)) + (case event-key + (:key-press (apply #'handle-query-key event-slots) t) + (:exposure (print-string))) + t)) + (xgrab-pointer *root* 92 93) + (xlib:map-window window) + (print-string) + (wait-no-key-or-button-press) + (unwind-protect + (loop until (member done '(:Return :Escape :Complet)) do + (xlib:display-finish-output *display*) + (xlib:process-event *display* :handler #'handle-query)) + (xlib:destroy-window window) + (xlib:close-font font) + (xgrab-pointer *root* 66 67))) + (values (when (member done '(:Return :Complet)) + (push result-string history) + result-string) + done)))) + + + +(defun query-number (msg) + "Query a number from the query input" + (parse-integer (or (query-string msg) "") :junk-allowed t)) + + + +(defun eval-from-query-string () + "Eval a lisp form from the query input" + (let ((form (query-string "Eval:")) + (result nil)) + (when (and form (not (equal form ""))) + (let ((printed-result + (with-output-to-string (*standard-output*) + (setf result (handler-case + (loop for i in (multiple-value-list + (eval (read-from-string form))) + collect (format nil "~S" i)) + (error (condition) + (format nil "~A" condition))))))) + (info-mode (expand-newline (append (ensure-list (format nil "> ~A" form)) + (ensure-list printed-result) + (ensure-list result))) + :width (- (xlib:screen-width *screen*) 2)) + (eval-from-query-string))))) + + + + +(defun run-program-from-query-string () + "Run a program from the query input" + (let ((program (query-string "Run:"))) + (when (and program (not (equal program ""))) + (setf *second-mode-program* program) + (leave-second-mode)))) + + + + +;;; Group name actions +;;;(loop :for str :in '("The Gimp" "The klm" "klm" "abc") ;; Test +;;; :when (zerop (or (search "ThE" str :test #'string-equal) -1)) +;;; :collect str) +(defun ask-group-name (msg) + "Ask a group name" + (let ((all-group-name nil) + (name "")) + (with-all-groups (*root-group* group) + (awhen (group-name group) (push it all-group-name))) + (labels ((selected-names () + (loop :for str :in all-group-name + :when (zerop (or (search name str :test #'string-equal) -1)) + :collect str)) + (complet-alone (req sel) + (if (= 1 (length sel)) (first sel) req)) + (ask () + (let* ((selected (selected-names)) + (default (complet-alone name selected))) + (multiple-value-bind (str done) + (query-string (format nil "~A: ~{~A~^, ~}" msg selected) default) + (setf name str) + (when (or (not (string-equal name default)) (eql done :complet)) + (ask)))))) + (ask)) + name)) + + + +;;; Focus by functions +(defun focus-group-by (group) + (when (group-p group) + (focus-all-childs group (or (find-father-group group *current-root*) + (find-father-group group) + *root-group*)))) + + +(defun focus-group-by-name () + "Focus a group by name" + (focus-group-by (find-group-by-name (ask-group-name "Focus group"))) + (leave-second-mode)) + +(defun focus-group-by-number () + "Focus a group by number" + (focus-group-by (find-group-by-number (query-number "Focus group by number:"))) + (leave-second-mode)) + + +;;; Open by functions +(defun open-group-by (group) + (when (group-p group) + (push (create-group :name (query-string "Group name")) (group-child group)))) + + + +(defun open-group-by-name () + "Open a new group in a named group" + (open-group-by (find-group-by-name (ask-group-name "Open a new group in"))) + (leave-second-mode)) + +(defun open-group-by-number () + "Open a new group in a numbered group" + (open-group-by (find-group-by-name (ask-group-name "Open a new group in the grou numbered:"))) + (leave-second-mode)) + + +;;; Delete by functions +(defun delete-group-by (group) + (unless (equal group *root-group*) + (when (equal group *current-root*) + (setf *current-root* *root-group*)) + (when (equal group *current-child*) + (setf *current-child* *current-root*)) + (remove-child-in-group group (find-father-group group)))) + + +(defun delete-group-by-name () + "Delete a group by name" + (delete-group-by (find-group-by-name (ask-group-name "Delete group"))) + (leave-second-mode)) + +(defun delete-group-by-number () + "Delete a group by number" + (delete-group-by (find-group-by-number (query-number "Delete group by number:"))) + (leave-second-mode)) + + +;;; Move by function +(defun move-current-child-by (child group-dest) + (when (and child (group-p group-dest)) + (remove-child-in-group child (find-father-group child)) + (pushnew child (group-child group-dest)) + (focus-all-childs child group-dest))) + +(defun move-current-child-by-name () + "Move current child in a named group" + (move-current-child-by *current-child* + (find-group-by-name + (ask-group-name (format nil "Move '~A' to group" (child-name *current-child*))))) + (leave-second-mode)) + +(defun move-current-child-by-number () + "Move current child in a numbered group" + (move-current-child-by *current-child* + (find-group-by-number + (query-number (format nil "Move '~A' to group numbered:" (child-name *current-child*))))) + (leave-second-mode)) + + +;;; Copy by function +(defun copy-current-child-by (child group-dest) + (when (and child (group-p group-dest)) + (pushnew child (group-child group-dest)) + (focus-all-childs child group-dest))) + +(defun copy-current-child-by-name () + "Copy current child in a named group" + (copy-current-child-by *current-child* + (find-group-by-name + (ask-group-name (format nil "Copy '~A' to group" (child-name *current-child*))))) + (leave-second-mode)) + +(defun copy-current-child-by-number () + "Copy current child in a numbered group" + (copy-current-child-by *current-child* + (find-group-by-number + (query-number (format nil "Copy '~A' to group numbered:" (child-name *current-child*))))) + (leave-second-mode)) + + + + + + +;;;;;,----- +;;;;;| Various definitions +;;;;;`----- +;;(defun stop-all-pending-actions () +;; "Stop all pending actions (actions like open in new workspace/group)" +;; (setf *open-next-window-in-new-workspace* nil +;; *open-next-window-in-new-group* nil +;; *arrow-action* nil +;; *pager-arrow-action* nil)) +;; +;;(defun rotate-window-up () +;; "Rotate up windows in the current group" +;; (setf (group-window-list (current-group)) +;; (rotate-list (group-window-list (current-group)))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;;(defun rotate-window-down () +;; "Rotate down windows in the current group" +;; (setf (group-window-list (current-group)) +;; (anti-rotate-list (group-window-list (current-group)))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;; +;;(defun maximize-group (group) +;; "Maximize the group" +;; (when group +;; (unless (group-fullscreenp group) +;; (setf (group-fullscreenp group) t) +;; (show-all-windows-in-workspace (current-workspace))))) +;; +;;(defun minimize-group (group) +;; "Minimize the group" +;; (when group +;; (when (group-fullscreenp group) +;; (setf (group-fullscreenp group) nil) +;; (show-all-windows-in-workspace (current-workspace))))) +;; +;;(defun toggle-maximize-group (group) +;; "Maximize/minimize a group" +;; (if (group-fullscreenp group) +;; (minimize-group group) +;; (maximize-group group))) +;; +;; +;;(defun toggle-maximize-current-group () +;; "Maximize/minimize the current group" +;; (toggle-maximize-group (current-group))) +;; +;; +;;(defun renumber-workspaces () +;; "Reset workspaces numbers (1 for current workspace, 2 for the second...) " +;; (hide-all-windows-in-workspace (current-workspace)) +;; (setf *current-workspace-number* 0) +;; (loop for workspace in *workspace-list* do +;; (setf (workspace-number workspace) (incf *current-workspace-number*))) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;;(defun sort-workspaces () +;; "Sort workspaces by numbers" +;; (hide-all-windows-in-workspace (current-workspace)) +;; (setf *workspace-list* (sort *workspace-list* +;; #'(lambda (x y) +;; (< (workspace-number x) (workspace-number y))))) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;; +;; +;;(defun circulate-group-up () +;; "Circulate up in group" +;; (banish-pointer) +;; (minimize-group (current-group)) +;; (no-focus) +;; (setf (workspace-group-list (current-workspace)) +;; (rotate-list (workspace-group-list (current-workspace)))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;; +;;(defun circulate-group-up-move-window () +;; "Circulate up in group moving the current window in the next group" +;; (banish-pointer) +;; (minimize-group (current-group)) +;; (no-focus) +;; (let ((window (current-window))) +;; (remove-window-in-group window (current-group)) +;; (focus-window (current-window)) +;; (setf (workspace-group-list (current-workspace)) +;; (rotate-list (workspace-group-list (current-workspace)))) +;; (add-window-in-group window (current-group))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;;(defun circulate-group-up-copy-window () +;; "Circulate up in group copying the current window in the next group" +;; (banish-pointer) +;; (minimize-group (current-group)) +;; (no-focus) +;; (let ((window (current-window))) +;; (setf (workspace-group-list (current-workspace)) +;; (rotate-list (workspace-group-list (current-workspace)))) +;; (unless (window-already-in-workspace window (current-workspace)) +;; (add-window-in-group window (current-group)))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;; +;; +;;(defun circulate-group-down () +;; "Circulate down in group" +;; (banish-pointer) +;; (minimize-group (current-group)) +;; (no-focus) +;; (setf (workspace-group-list (current-workspace)) +;; (anti-rotate-list (workspace-group-list (current-workspace)))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;;(defun circulate-group-down-move-window () +;; "Circulate down in group moving the current window in the next group" +;; (banish-pointer) +;; (minimize-group (current-group)) +;; (no-focus) +;; (let ((window (current-window))) +;; (remove-window-in-group window (current-group)) +;; (focus-window (current-window)) +;; (setf (workspace-group-list (current-workspace)) +;; (anti-rotate-list (workspace-group-list (current-workspace)))) +;; (add-window-in-group window (current-group))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;;(defun circulate-group-down-copy-window () +;; "Circulate down in group copying the current window in the next group" +;; (banish-pointer) +;; (minimize-group (current-group)) +;; (no-focus) +;; (let ((window (current-window))) +;; (setf (workspace-group-list (current-workspace)) +;; (anti-rotate-list (workspace-group-list (current-workspace)))) +;; (unless (window-already-in-workspace window (current-workspace)) +;; (add-window-in-group window (current-group)))) +;; (adapt-window-to-group (current-window) (current-group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;; +;; +;; +;; +;;(defun circulate-workspace-by-number (number) +;; "Focus a workspace given its number" +;; (no-focus) +;; (hide-all-windows-in-workspace (current-workspace)) +;; (dotimes (i (length *workspace-list*)) +;; (when (= (workspace-number (current-workspace)) number) +;; (return)) +;; (setf *workspace-list* (rotate-list *workspace-list*))) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;;(defun circulate-workspace-up () +;; "Circulate up in workspace" +;; (no-focus) +;; (hide-all-windows-in-workspace (current-workspace)) +;; (setf *workspace-list* (rotate-list *workspace-list*)) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;;(defun circulate-workspace-up-move-group () +;; "Circulate up in workspace moving current group in the next workspace" +;; (no-focus) +;; (hide-all-windows-in-workspace (current-workspace)) +;; (let ((group (current-group))) +;; (remove-group-in-workspace group (current-workspace)) +;; (setf *workspace-list* (rotate-list *workspace-list*)) +;; (add-group-in-workspace (copy-group group) (current-workspace))) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;;(defun circulate-workspace-up-copy-group () +;; "Circulate up in workspace copying current group in the next workspace" +;; (no-focus) +;; (hide-all-windows-in-workspace (current-workspace)) +;; (let ((group (current-group))) +;; (setf *workspace-list* (rotate-list *workspace-list*)) +;; (unless (group-windows-already-in-workspace group (current-workspace)) +;; (add-group-in-workspace (copy-group group) (current-workspace)))) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;; +;;(defun circulate-workspace-down () +;; "Circulate down in workspace" +;; (no-focus) +;; (hide-all-windows-in-workspace (current-workspace)) +;; (setf *workspace-list* (anti-rotate-list *workspace-list*)) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;;(defun circulate-workspace-down-move-group () +;; "Circulate down in workspace moving current group in the next workspace" +;; (no-focus) +;; (hide-all-windows-in-workspace (current-workspace)) +;; (let ((group (current-group))) +;; (remove-group-in-workspace group (current-workspace)) +;; (setf *workspace-list* (anti-rotate-list *workspace-list*)) +;; (add-group-in-workspace (copy-group group) (current-workspace))) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;;(defun circulate-workspace-down-copy-group () +;; "Circulate down in workspace copying current group in the next workspace" +;; (no-focus) +;; (hide-all-windows-in-workspace (current-workspace)) +;; (let ((group (current-group))) +;; (setf *workspace-list* (anti-rotate-list *workspace-list*)) +;; (unless (group-windows-already-in-workspace group (current-workspace)) +;; (add-group-in-workspace (copy-group group) (current-workspace)))) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;; +;;(defun delete-current-window () +;; "Delete the current window in all groups and workspaces" +;; (let ((window (current-window))) +;; (when window +;; (no-focus) +;; (remove-window-in-all-workspace window) +;; (send-client-message window :WM_PROTOCOLS +;; (intern-atom *display* "WM_DELETE_WINDOW")))) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;; +;;(defun destroy-current-window () +;; "Destroy the current window in all groups and workspaces" +;; (let ((window (current-window))) +;; (when window +;; (no-focus) +;; (remove-window-in-all-workspace window) +;; (kill-client *display* (xlib:window-id window)))) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;;(defun remove-current-window () +;; "Remove the current window in the current group" +;; (let ((window (current-window))) +;; (when window +;; (no-focus) +;; (hide-window window) +;; (remove-window-in-group (current-window) (current-group)))) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;;(defun remove-current-group () +;; "Remove the current group in the current workspace" +;; (minimize-group (current-group)) +;; (let ((group (current-group))) +;; (when group +;; (no-focus) +;; (dolist (window (group-window-list group)) +;; (when window +;; (hide-window window))) +;; (remove-group-in-workspace group (current-workspace)))) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;;(defun remove-current-workspace () +;; "Remove the current workspace" +;; (let ((workspace (current-workspace))) +;; (when workspace +;; (hide-all-windows-in-workspace workspace) +;; (remove-workspace workspace) +;; (show-all-windows-in-workspace (current-workspace))))) +;; +;; +;;(defun unhide-all-windows-in-current-group () +;; "Unhide all hidden windows into the current group" +;; (let ((all-windows (get-all-windows)) +;; (hidden-windows (remove-if-not #'window-hidden-p +;; (copy-list (xlib:query-tree *root*)))) +;; (current-group (current-group))) +;; (dolist (window (set-difference hidden-windows all-windows)) +;; (unhide-window window) +;; (process-new-window window) +;; (xlib:map-window window) +;; (adapt-window-to-group window current-group))) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;; +;; +;; +;;(defun create-new-default-group () +;; "Create a new default group" +;; (minimize-group (current-group)) +;; (add-group-in-workspace (copy-group *default-group*) +;; (current-workspace)) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;;(defun create-new-default-workspace () +;; "Create a new default workspace" +;; (hide-all-windows-in-workspace (current-workspace)) +;; (add-workspace (create-default-workspace)) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;; +;; +;;;;;,----- +;;;;;| Group moving +;;;;;`----- +;;(defun move-group (group dx dy) +;; "Move group" +;; (setf (group-x group) (+ (group-x group) dx) +;; (group-y group) (+ (group-y group) dy)) +;; (dolist (window (group-window-list group)) +;; (adapt-window-to-group window group)) +;; (show-all-group (current-workspace))) +;; +;;(defun move-group-to (group x y) +;; "Move group to" +;; (setf (group-x group) x +;; (group-y group) y) +;; (dolist (window (group-window-list group)) +;; (adapt-window-to-group window group)) +;; (focus-window (current-window)) +;; (show-all-group (current-workspace))) +;; +;; +;;(defun resize-group (group dx dy) +;; "Resize group" +;; (setf (group-width group) (max (+ (group-width group) dx) 100) +;; (group-height group) (max (+ (group-height group) dy) 100)) +;; (dolist (window (group-window-list group)) +;; (adapt-window-to-group window group)) +;; (show-all-group (current-workspace))) +;; +;;(defun force-window-in-group () +;; "Force the current window to move in the group (Useful only for transient windows)" +;; (let ((group (current-group)) +;; (window (current-window))) +;; (when window +;; (setf (xlib:drawable-x window) (group-x group) +;; (xlib:drawable-y window) (group-y group)) +;; (show-all-windows-in-workspace (current-workspace))))) +;; +;;(defun force-window-center-in-group () +;; "Force the current window to move in the center of the group (Useful only for transient windows)" +;; (let ((group (current-group)) +;; (window (current-window))) +;; (when window +;; (setf (xlib:drawable-x window) (truncate (+ (group-x group) +;; (/ (- (group-width group) (xlib:drawable-width window)) 2))) +;; (xlib:drawable-y window) (truncate (+ (group-y group) +;; (/ (- (group-height group) (xlib:drawable-height window)) 2)))) +;; (show-all-windows-in-workspace (current-workspace))))) +;; +;; +;; +;; +;; +;;(defun show-help (&optional (browser "dillo") (tempfile "/tmp/clfswm.html")) +;; "Show current keys and buttons bindings" +;; (ignore-errors +;; (produce-doc-html-in-file tempfile)) +;; (sleep 1) +;; (do-shell (format nil "~A ~A" browser tempfile))) Added: clfswm/clfswm.asd ============================================================================== --- (empty file) +++ clfswm/clfswm.asd Sat Mar 1 07:49:46 2008 @@ -0,0 +1,50 @@ +;;;; -*- Mode: Lisp -*- +;;;; Author: Philippe Brochard +;;;; ASDF System Definition +;;; +;;; #date#: Fri Feb 22 21:39:37 2008 + +(in-package #:asdf) + +(defsystem clfswm + :description "CLFSWM: Fullscreen Window Manager" + :version "Please, see the package date (something between 0.5 and 1.5)" + :author "Philippe Brochard " + :licence "GNU Public License (GPL)" + :components ((:file "tools") + (:file "my-html" + :depends-on ("tools")) + (:file "package" + :depends-on ("my-html" "tools")) + (:file "config" + :depends-on ("package")) + (:file "keysyms" + :depends-on ("package")) + (:file "xlib-util" + :depends-on ("package" "keysyms" "config")) + (:file "netwm-util" + :depends-on ("package" "xlib-util")) + (:file "clfswm-keys" + :depends-on ("package" "config" "xlib-util" "keysyms")) + (:file "clfswm-internal" + :depends-on ("xlib-util" "clfswm-keys" "netwm-util" "tools")) + (:file "clfswm" + :depends-on ("xlib-util" "netwm-util" "clfswm-keys" "config" + "clfswm-internal" "tools")) + (:file "clfswm-second-mode" + :depends-on ("package" "clfswm-internal")) + (:file "clfswm-info" + :depends-on ("package" "xlib-util" "config" "clfswm-keys" "clfswm" "clfswm-internal")) + (:file "clfswm-util" + :depends-on ("clfswm" "keysyms" "clfswm-info" "clfswm-second-mode")) + (:file "clfswm-layout" + :depends-on ("package" "clfswm-util" "clfswm-info")) + (:file "bindings" + :depends-on ("clfswm" "clfswm-internal")) + (:file "bindings-second-mode" + :depends-on ("clfswm" "clfswm-util")))) + + + + + Added: clfswm/clfswm.lisp ============================================================================== --- (empty file) +++ clfswm/clfswm.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,308 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Sat Mar 1 00:02:34 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Main functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + + + + +;;; Main mode hooks +(defun handle-key-press (&rest event-slots &key root code state &allow-other-keys) + (declare (ignore event-slots root)) + (funcall-key-from-code *main-keys* code state)) + + + + +(defun handle-configure-request (&rest event-slots &key stack-mode #|parent|# window #|above-sibling|# + x y width height border-width value-mask &allow-other-keys) + (declare (ignore event-slots)) + (labels ((has-x (mask) (= 1 (logand mask 1))) + (has-y (mask) (= 2 (logand mask 2))) + (has-w (mask) (= 4 (logand mask 4))) + (has-h (mask) (= 8 (logand mask 8))) + (has-bw (mask) (= 16 (logand mask 16))) + (has-stackmode (mask) (= 64 (logand mask 64))) + (adjust-from-request () + (when (has-x value-mask) (setf (xlib:drawable-x window) x)) + (when (has-y value-mask) (setf (xlib:drawable-y window) y)) + (when (has-h value-mask) (setf (xlib:drawable-height window) height)) + (when (has-w value-mask) (setf (xlib:drawable-width window) width)))) + (with-xlib-protect + (xlib:with-state (window) + (when (has-bw value-mask) + (setf (xlib:drawable-border-width window) border-width)) + (if (find-child window *current-root*) + (case (window-type window) + (:normal (adapt-child-to-father window (find-father-group window *current-root*)) + (send-configuration-notify window)) + (t (adjust-from-request))) + (adjust-from-request)) + (when (has-stackmode value-mask) + (case stack-mode + (:above (raise-window window)))))))) + + + + +(defun handle-configure-notify (&rest event-slots) + (declare (ignore event-slots))) + + + + +(defun handle-map-request (&rest event-slots &key window send-event-p &allow-other-keys) + (declare (ignore event-slots)) + (unless send-event-p + ;; (unhide-window window) + (process-new-window window) + (xlib:map-window window) + ;; (focus-window window) + (show-all-childs))) + + +(defun handle-unmap-notify (&rest event-slots &key send-event-p event-window window &allow-other-keys) + (declare (ignore event-slots)) + (unless (and (not send-event-p) + (not (xlib:window-equal window event-window))) + (when (find-child window *root-group*) + (remove-child-in-all-groups window) + (show-all-childs)))) + + +(defun handle-destroy-notify (&rest event-slots &key send-event-p event-window window &allow-other-keys) + (declare (ignore event-slots)) + (unless (or send-event-p + (xlib:window-equal window event-window)) + (when (find-child window *root-group*) + (remove-child-in-all-groups window) + (show-all-childs)))) + + + +(defun handle-enter-notify (&rest event-slots &key root-x root-y &allow-other-keys) + (declare (ignore event-slots root-x root-y))) + + + +(defun handle-exposure (&rest event-slots &key window &allow-other-keys) + (declare (ignore event-slots)) + (awhen (find-group-window window *current-root*) + (display-group-info it))) + + +(defun handle-create-notify (&rest event-slots) + (declare (ignore event-slots))) + + + +;; PHIL: TODO: focus-policy par group +;; :click, :sloppy, :nofocus +(defun handle-click-to-focus (window) + (let ((to-replay t) + (child window) + (father (find-father-group window *current-root*))) + (unless father + (setf child (find-group-window window *current-root*) + father (find-father-group child *current-root*))) + (when (and child father (focus-all-childs child father)) + (show-all-childs) + (setf to-replay nil)) + (if to-replay (replay-button-event) (stop-button-event)))) + + +(defun handle-button-press (&rest event-slots &key code state window &allow-other-keys) + (declare (ignore event-slots)) + (if (and (= code 1) (= state 0)) + (handle-click-to-focus window) + (replay-button-event))) + + + + + + +;;; CONFIG: Main mode hooks +(setf *key-press-hook* #'handle-key-press + *configure-request-hook* #'handle-configure-request + *configure-notify-hook* #'handle-configure-notify + *destroy-notify-hook* 'handle-destroy-notify + *enter-notify-hook* #'handle-enter-notify + *exposure-hook* 'handle-exposure + *map-request-hook* #'handle-map-request + *unmap-notify-hook* 'handle-unmap-notify + *create-notify-hook* #'handle-create-notify + *button-press-hook* 'handle-button-press) + + + + +(defun handle-event (&rest event-slots &key display event-key &allow-other-keys) + (declare (ignore display)) + ;;(dbg event-key) + (with-xlib-protect + (case event-key + (:button-press (call-hook *button-press-hook* event-slots)) + (:motion-notify (call-hook *button-motion-notify-hook* event-slots)) + (:key-press (call-hook *key-press-hook* event-slots)) + (:configure-request (call-hook *configure-request-hook* event-slots)) + (:configure-notify (call-hook *configure-notify-hook* event-slots)) + (:map-request (call-hook *map-request-hook* event-slots)) + (:unmap-notify (call-hook *unmap-notify-hook* event-slots)) + (:destroy-notify (call-hook *destroy-notify-hook* event-slots)) + (:mapping-notify (call-hook *mapping-notify-hook* event-slots)) + (:property-notify (call-hook *property-notify-hook* event-slots)) + (:create-notify (call-hook *create-notify-hook* event-slots)) + (:enter-notify (call-hook *enter-notify-hook* event-slots)) + (:exposure (call-hook *exposure-hook* event-slots)))) + t) + + + +(defun main-loop () + (loop + (with-xlib-protect + (xlib:display-finish-output *display*) + (xlib:process-event *display* :handler #'handle-event)))) +;;(dbg "Main loop finish" c))))) + + +(defun open-display (display-str protocol) + (multiple-value-bind (host display-num) (parse-display-string display-str) + (setf *display* (xlib:open-display host :display display-num :protocol protocol) + (getenv "DISPLAY") display-str))) + + +(defun init-display () + (setf *screen* (first (xlib:display-roots *display*)) + *root* (xlib:screen-root *screen*) + *no-focus-window* (xlib:create-window :parent *root* :x 0 :y 0 :width 1 :height 1) + *root-gc* (xlib:create-gcontext :drawable *root* + :foreground (get-color *color-unselected*) + :background (get-color "Black") + :line-style :solid) + *default-font* (xlib:open-font *display* *default-font-string*)) + (xgrab-init-pointer) + (xgrab-init-keyboard) + ;;(xgrab-pointer *root* 66 67 '(:enter-window :button-press :button-release) t) ;; PHIL + ;;(grab-pointer *root* '(:button-press :button-release) + ;; :owner-p t :sync-keyboard-p nil :sync-pointer-p nil) + ;;(grab-button *root* 1 nil ;;'(:button-press :button-release) + ;; :owner-p nil :sync-keyboard-p nil :sync-pointer-p nil) + ;;(xlib:grab-pointer *root* nil :owner-p nil) + (xlib:map-window *no-focus-window*) + (dbg *display*) + (setf (xlib:window-event-mask *root*) (xlib:make-event-mask :substructure-redirect + :substructure-notify + :property-change + :exposure + :button-press)) + ;;(intern-atoms *display*) + (netwm-set-properties) + (xlib:display-force-output *display*) + (setf *child-selection* nil) + (setf *root-group* (create-group :name "Root" :number 0 :layout #'tile-space-layout) + *current-root* *root-group* + *current-child* *current-root*) + (call-hook *init-hook*) + (process-existing-windows *screen*) + (show-all-childs) + (grab-main-keys) + (xlib:display-finish-output *display*)) + + + +(defun xdg-config-home () + (pathname-directory (concatenate 'string (or (getenv "XDG_CONFIG_HOME") + (getenv "HOME")) + "/"))) + + +(defun read-conf-file () + (let* ((user-conf (probe-file (merge-pathnames (user-homedir-pathname) #p".clfswmrc"))) + (etc-conf (probe-file #p"/etc/clfswmrc")) + (config-user-conf (probe-file (make-pathname :directory (append (xdg-config-home) '("clfswm")) + :name "clfswmrc"))) + (conf (or user-conf etc-conf config-user-conf))) + (if conf + (handler-case (load conf) + (error (c) + (format t "~2%*** Error loading configurtion file: ~A ***~&~A~%" conf c) + (values nil (format nil "~s" c) conf)) + (:no-error (&rest args) + (declare (ignore args)) + (values t nil conf))) + (values t nil nil)))) + + + +(defun main (&optional (display-str (or (getenv "DISPLAY") ":0")) protocol) + (read-conf-file) + (handler-case + (open-display display-str protocol) + (xlib:access-error (c) + (format t "~&~A~&Maybe another window manager is running.~%" c) + (force-output) + (return-from main 'init-display-error))) + (handler-case + (init-display) + (xlib:access-error (c) + (ungrab-main-keys) + (xlib:destroy-window *no-focus-window*) + (xlib:close-display *display*) + (format t "~&~A~&Maybe another window manager is running.~%" c) + (force-output) + (return-from main 'init-display-error))) + (unwind-protect + (catch 'exit-main-loop + (main-loop)) + (ungrab-main-keys) + (xlib:destroy-window *no-focus-window*) + (xlib:close-display *display*))) + + + + +;;(defun perform-click (type code state time) +;; "Send a button-{press, release} event for button-number. The type of the +;; sent event will be determined according to the type of the ev event +;; argument: if type key-press then send button-press, if key-release then +;; button-release is sent. The destination window will be retreived in the +;; ev event argument." +;; (flet ((my-query (win) (multiple-value-list (xlib:query-pointer win)))) +;; (loop with window = *root* +;; for (x y ssp child nil root-x root-y root) = (my-query window) +;; while child do (setf window child) +;; finally +;; (progn +;; (dbg window) +;; (xlib:send-event window type nil +;; :x x :y y :root-x root-x :root-y root-y +;; :state state :code code +;; :window window :event-window window :root root :child child +;; :same-screen-p ssp :time time))))) Added: clfswm/clisp-load.lisp ============================================================================== --- (empty file) +++ clfswm/clisp-load.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,59 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Tue Feb 26 23:00:50 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: System loading functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + + +(defparameter *base-dir* (directory-namestring *load-truename*)) + +#+CMU +(setf ext:*gc-verbose* nil) + +#+CMU +(require :clx) + +#+SBCL +(require :asdf) + +#+SBCL +(require :sb-posix) + +#+SBCL +(require :clx) + +#-ASDF +(load (make-pathname :host (pathname-host *base-dir*) + :device (pathname-device *base-dir*) + :directory (pathname-directory *base-dir*) + :name "asdf" :type "lisp")) + +(push *base-dir* asdf:*central-registry*) + + +(asdf:oos 'asdf:load-op :clfswm) + +(in-package :clfswm) + +(clfswm:main ":1") Added: clfswm/config.lisp ============================================================================== --- (empty file) +++ clfswm/config.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,122 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Wed Feb 27 22:15:01 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Configuration file +;;; +;;; Change this file to your own needs or update some of this variables in +;;; your ~/.clfswmrc +;;; Some simple hack can be done in the code begining with the word CONFIG +;;; (you can do a 'grep CONFIG *.lisp' to see what you can configure) +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + +;;; CONFIG - Compress motion notify ? +(defparameter *have-to-compress-notify* nil + "This variable may be useful to speed up some slow version of CLX. +It is particulary useful with CLISP/MIT-CLX.") + + + +;;; CONFIG - Screen size +(defun get-fullscreen-size () + "Return the size of root child (values rx ry rw rh raise-p) +You can tweak this to what you want" + (values -1 -1 (xlib:screen-width *screen*) (xlib:screen-height *screen*) nil)) +;; (values -1 -1 1024 768)) +;; (values 100 100 800 600)) + + + + + + +;;; CONFIG: Main mode colors +(defparameter *color-selected* "Red") +(defparameter *color-unselected* "Blue") +(defparameter *color-maybe-selected* "Yellow") + +;;; CONFIG: Second mode colors and fonts +(defparameter *sm-border-color* "Green") +(defparameter *sm-background-color* "Black") +(defparameter *sm-foreground-color* "Red") +(defparameter *sm-font-string* "9x15bold") +(defparameter *sm-width* 300) +(defparameter *sm-height* 25) + + +;;; CONFIG - Pager mode colors and fonts +(defparameter *pager-background* "black") +(defparameter *pager-workspace-border* "blue") +(defparameter *pager-workspace-background* "black") +(defparameter *pager-group-border* "yellow") +(defparameter *pager-group-border-selected* "red") +(defparameter *pager-group-background* "grey10") + +(defparameter *pager-window-selected* "Green") +(defparameter *pager-window-deselected* "Yellow") +(defparameter *pager-window-hidden* "Green") +(defparameter *pager-window-hidden-1* "Red") + +(defparameter *pager-window-separator* "blue") + +(defparameter *pager-workspace-cursor* "black") +(defparameter *pager-line-cursor* "blue") +(defparameter *pager-group-cursor* "white") +(defparameter *pager-group-background-cursor* "grey35") + + +(defparameter *pager-font-string* "9x15bold") + +(defparameter *pager-workspace-height* 200) + + + +;;; CONFIG - Identify key colors +(defparameter *identify-font-string* "9x15") +(defparameter *identify-background* "black") +(defparameter *identify-foreground* "green") +(defparameter *identify-border* "red") + +;;; CONFIG - Query string colors +(defparameter *query-font-string* "9x15") +(defparameter *query-background* "black") +(defparameter *query-foreground* "green") +(defparameter *query-border* "red") + + +;;; CONFIG - Info mode + +(defparameter *info-background* "black") +(defparameter *info-foreground* "green") +(defparameter *info-border* "red") +(defparameter *info-line-cursor* "white") +(defparameter *info-font-string* "9x15") + + + +;;; Tiling to side parameters +(defparameter *tile-workspace-function* 'tile-workspace-top) +(defparameter *tile-border-size* 200) Added: clfswm/dot-clfswmrc ============================================================================== --- (empty file) +++ clfswm/dot-clfswmrc Sat Mar 1 07:49:46 2008 @@ -0,0 +1,272 @@ +;;; -*- lisp -*- +;;; +;;; CLFSWM configuration file example +;;; +;;; Send me your configuration file at hocwp _at_ free -dot- fr if +;;; you want to share it with others. + +(in-package :clfswm) + + +;;;; Uncomment the line above if you want to enable the notify event compression. +;;;; This variable may be useful to speed up some slow version of CLX +;;;; It is particulary useful with CLISP/MIT-CLX. +;; (setf *have-to-compress-notify* t) + + +;;; Color configuration example +;;; +;;; See in package.lisp for all variables +(setf *color-unselected* "Blue") + + +;;(defparameter *fullscreen* '(0 4 800 570)) +(defparameter *fullscreen* '(0 0 1024 750)) + + + +;;; Binding example: Undefine Control-F1 and define Control-F5 as a +;;; new binding in main mode +;;; +;;; See bindings.lisp, bindings-second-mode.lisp and bindings-pager.lisp +;;; for all default bindings definitions. +(undefine-main-key ("F1" :mod-1)) +(define-main-key ("F5" :mod-1) 'help-on-clfswm) + + + +;;; Binding example for apwal +(define-second-key (#\Space) + (defun tpm-apwal () + "Run Apwal" + (do-shell "exec apwal") + (show-all-windows-in-workspace (current-workspace)) + (throw 'exit-second-loop nil))) + + + + + +;;;; Reloading example +(defun reload-clfswm () + "Reload clfswm" + (format t "RELOADING... ") + (ungrab-main-keys) + (setf *main-keys* (make-hash-table :test 'equal)) + (asdf:oos 'asdf:load-op :clfswm) + (grab-main-keys) + (format t "Done!~%")) + + +(define-main-key ("F2" :mod-1) 'reload-clfswm) + +(define-main-key ("F3" :mod-1) (lambda () + (do-shell "rxvt"))) + + + +;;; Hook example +;;; +;;; See in package.lisp and clfswm.lisp, clfswm-second-mode.lisp +;;; or clfswm-pager.lisp for hook examples +(setf *key-press-hook* (list (lambda (&rest args) ; function 1 + (format t "Keyp press (before): ~A~%" args) + (force-output)) + #'handle-key-press ; function 2 (default) + (lambda (&rest args) ; function 3 + (declare (ignore args)) + (format t "Keyp press (after)~%") + (force-output)))) + + + +;;; A more complex example I use to record my desktop and show +;;; documentation associated to each key press. +(defun documentation-key-from-code (hash-key code state) + (labels ((doc-from (key) + (multiple-value-bind (function foundp) + (gethash (list key state) hash-key) + (when (and foundp (first function)) + (documentation (first function) 'function)))) + (from-code () + (doc-from code)) + (from-char () + (let ((char (keycode->char code state))) + (doc-from char))) + (from-string () + (let ((string (keysym->keysym-name (keycode->keysym *display* code 0)))) + (doc-from string)))) + (cond ((from-code)) + ((from-char)) + ((from-string))))) + + +(defun key-string (hash-key code state) + (let* ((modifiers (make-state-keys state)) + (keysym (keysym->keysym-name (keycode->keysym *display* code 0))) + (doc (documentation-key-from-code hash-key code state))) + (values (format nil "~:(~{~A+~}~A~) : ~S" modifiers keysym doc) + doc))) + +(defun display-doc (hash-key code state) + (multiple-value-bind (str doc) + (key-string hash-key code state) + (when doc + (do-shell "pkill osd_cat") + (do-shell (format nil "echo ~A | osd_cat -d 3 -p bottom -o -45 -f -*-fixed-*-*-*-*-12-*-*-*-*-*-*-1" str)) + (force-output)))) + +(defun display-key-osd-main (&rest event-slots &key code state &allow-other-keys) + (display-doc *main-keys* code state)) + +(defun display-key-osd-second (&rest event-slots &key code state &allow-other-keys) + (display-doc *second-keys* code state)) + +(defun display-key-pager (&rest event-slots &key code state &allow-other-keys) + (setf (gcontext-background *pager-gc*) (get-color "Black")) + (setf (gcontext-foreground *pager-gc*) (get-color "Red")) + (multiple-value-bind (str doc) + (key-string *pager-keys* code state) + (when doc + (draw-image-glyphs *pager-window* *pager-gc* 20 570 + (format nil "~A " str))) + (display-finish-output *display*))) + +;; Define new hook or add to precedent one +(if (consp *key-press-hook*) + (push #'display-key-osd-main *key-press-hook*) + (setf *key-press-hook* (list #'display-key-osd-main #'handle-key-press))) +(setf *sm-key-press-hook* (list #'display-key-osd-second #'sm-handle-key-press)) +(setf *pager-key-press-hook* (list #'pager-handle-key-press #'display-key-pager)) + +;;; -- Doc example end -- + + + +;;;; Uncomment the lines below if you want to enable the larswm, +;;;; dwm, wmii... cycling style. +;;;; +;;;; This leave the main window in one side of the screen and tile others +;;;; on the other side. It can be configured in the rc file or interactively +;;;; with the function 'reconfigure-tile-workspace'. +;;;; +(defun circulate-group-up () + "Circulate up in group - larswm, dwm, wmii style" + (banish-pointer) + (minimize-group (current-group)) + (no-focus) + (setf (workspace-group-list (current-workspace)) + (rotate-list (workspace-group-list (current-workspace)))) + (funcall *tile-workspace-function* (current-workspace)) + (show-all-windows-in-workspace (current-workspace))) + +(defun circulate-group-down () + "Circulate down in group - larswm, dwm, wmii style" + (banish-pointer) + (minimize-group (current-group)) + (no-focus) + (setf (workspace-group-list (current-workspace)) + (anti-rotate-list (workspace-group-list (current-workspace)))) + (funcall *tile-workspace-function* (current-workspace)) + (show-all-windows-in-workspace (current-workspace))) + +;;; -- Lasrwm style end -- + + + +;;; Azerty keyboard configuration (first remove keys, then rebind) +;; Main mode +;;(undefine-main-key (#\t :mod-1)) +;;(undefine-main-key (#\b :mod-1)) +;;(undefine-main-key (#\b :mod-1 :control)) +;;(undefine-main-key ("1" :mod-1)) +;;(undefine-main-key ("2" :mod-1)) +;;(undefine-main-key ("3" :mod-1)) +;;(undefine-main-key ("4" :mod-1)) +;;(undefine-main-key ("5" :mod-1)) +;;(undefine-main-key ("6" :mod-1)) +;;(undefine-main-key ("7" :mod-1)) +;;(undefine-main-key ("8" :mod-1)) +;;(undefine-main-key ("9" :mod-1)) +;;(undefine-main-key ("0" :mod-1)) +;; Or better: +(undefine-main-multi-keys (#\t :mod-1) (#\b :mod-1) (#\b :mod-1 :control) + (#\1 :mod-1) (#\2 :mod-1) (#\3 :mod-1) + (#\4 :mod-1) (#\5 :mod-1) (#\6 :mod-1) + (#\7 :mod-1) (#\8 :mod-1) (#\9 :mod-1) (#\0 :mod-1)) + +(define-main-key (#\< :control) 'second-key-mode) + +(define-main-key ("twosuperior") 'banish-pointer) +(define-main-key ("twosuperior" :mod-1) 'toggle-maximize-current-group) + +(define-main-key ("ampersand" :mod-1) 'b-main-focus-workspace-1) +(define-main-key ("eacute" :mod-1) 'b-main-focus-workspace-2) +(define-main-key ("quotedbl" :mod-1) 'b-main-focus-workspace-3) +(define-main-key ("quoteright" :mod-1) 'b-main-focus-workspace-4) +(define-main-key ("parenleft" :mod-1) 'b-main-focus-workspace-5) +(define-main-key ("minus" :mod-1) 'b-main-focus-workspace-6) +(define-main-key ("egrave" :mod-1) 'b-main-focus-workspace-7) +(define-main-key ("underscore" :mod-1) 'b-main-focus-workspace-8) +(define-main-key ("ccedilla" :mod-1) 'b-main-focus-workspace-9) +(define-main-key ("agrave" :mod-1) 'b-main-focus-workspace-10) + +;; Second mode +(undefine-second-multi-keys (#\t) (#\b) (#\b :mod-1) + (#\1 :mod-1) (#\2 :mod-1) (#\3 :mod-1) + (#\4 :mod-1) (#\5 :mod-1) (#\6 :mod-1) + (#\7 :mod-1) (#\8 :mod-1) (#\9 :mod-1) (#\0 :mod-1) + (#\1 :control :mod-1) (#\2 :control :mod-1)) + +(define-second-key (#\<) 'leave-second-mode-maximize) + + +(define-second-key ("ampersand" :mod-1) 'b-second-focus-workspace-1) +(define-second-key ("eacute" :mod-1) 'b-second-focus-workspace-2) +(define-second-key ("quotedbl" :mod-1) 'b-second-focus-workspace-3) +(define-second-key ("quoteright" :mod-1) 'b-second-focus-workspace-4) +(define-second-key ("parenleft" :mod-1) 'b-second-focus-workspace-5) +(define-second-key ("minus" :mod-1) 'b-second-focus-workspace-6) +(define-second-key ("egrave" :mod-1) 'b-second-focus-workspace-7) +(define-second-key ("underscore" :mod-1) 'b-second-focus-workspace-8) +(define-second-key ("ccedilla" :mod-1) 'b-second-focus-workspace-9) +(define-second-key ("agrave" :mod-1) 'b-second-focus-workspace-10) + +(define-second-key ("ampersand" :control :mod-1) 'renumber-workspaces) +(define-second-key ("eacute" :control :mod-1) 'sort-workspaces) + + +(define-second-key ("twosuperior") 'banish-pointer) +(define-second-key ("twosuperior" :mod-1) 'toggle-maximize-current-group) + +(define-second-key (#\t) 'tile-current-workspace-vertically) +(define-second-key (#\t :shift) 'tile-current-workspace-horizontally) + + +;; Pager mode +(undefine-pager-multi-keys (#\b) + (#\1 :mod-1) (#\2 :mod-1) (#\3 :mod-1) + (#\4 :mod-1) (#\5 :mod-1) (#\6 :mod-1) + (#\7 :mod-1) (#\8 :mod-1) (#\9 :mod-1) (#\0 :mod-1) + (#\1 :control :mod-1) (#\2 :control :mod-1)) + +(define-pager-key ("twosuperior") 'banish-pointer) + +(define-pager-key ("ampersand" :mod-1) 'b-pager-focus-workspace-1) +(define-pager-key ("eacute" :mod-1) 'b-pager-focus-workspace-2) +(define-pager-key ("quotedbl" :mod-1) 'b-pager-focus-workspace-3) +(define-pager-key ("quoteright" :mod-1) 'b-pager-focus-workspace-4) +(define-pager-key ("parenleft" :mod-1) 'b-pager-focus-workspace-5) +(define-pager-key ("minus" :mod-1) 'b-pager-focus-workspace-6) +(define-pager-key ("egrave" :mod-1) 'b-pager-focus-workspace-7) +(define-pager-key ("underscore" :mod-1) 'b-pager-focus-workspace-8) +(define-pager-key ("ccedilla" :mod-1) 'b-pager-focus-workspace-9) +(define-pager-key ("agrave" :mod-1) 'b-pager-focus-workspace-10) + +(define-pager-key ("ampersand" :control :mod-1) 'pager-renumber-workspaces) +(define-pager-key ("eacute" :control :mod-1) 'pager-sort-workspaces) + +;;; -- Azerty configuration end -- + + + Added: clfswm/keys.html ============================================================================== --- (empty file) +++ clfswm/keys.html Sat Mar 1 07:49:46 2008 @@ -0,0 +1,2576 @@ + + + + CLFSWM Keys + + + +

+ CLFSWM Keys +

+

+ + Note: Mod-1 is the Meta or Alt key + +

+

+ + Main mode keys + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Modifiers + + Key/Button + + Function +
+ Mod-1 + + 0 + + Focus workspace 10 +
+ Mod-1 + + 9 + + Focus workspace 9 +
+ Mod-1 + + 8 + + Focus workspace 8 +
+ Mod-1 + + 7 + + Focus workspace 7 +
+ Mod-1 + + 6 + + Focus workspace 6 +
+ Mod-1 + + 5 + + Focus workspace 5 +
+ Mod-1 + + 4 + + Focus workspace 4 +
+ Mod-1 + + 3 + + Focus workspace 3 +
+ Mod-1 + + 2 + + Focus workspace 2 +
+ Mod-1 + + 1 + + Focus workspace 1 +
+ Mod-1 Control Shift + + Left + + Circulate down in workspace copying current group in the next workspace +
+ Mod-1 Shift + + Left + + Circulate down in workspace moving current group in the next workspace +
+ Mod-1 + + Left + + Circulate down in workspace +
+ Mod-1 Control Shift + + Right + + Circulate up in workspace copying current group in the next workspace +
+ Mod-1 Shift + + Right + + Circulate up in workspace moving current group in the next workspace +
+ Mod-1 + + Right + + Circulate up in workspace +
+ Mod-1 Control Shift + + Down + + Circulate down in group copying the current window in the next group +
+ Mod-1 Shift + + Down + + Circulate down in group moving the current window in the next group +
+ Mod-1 + + Down + + Circulate down in group +
+ Mod-1 Control Shift + + Up + + Circulate up in group copying the current window in the next group +
+ Mod-1 Shift + + Up + + Circulate up in group moving the current window in the next group +
+ Mod-1 + + Up + + Circulate up in group +
+ Shift + + Escape + + Unhide all hidden windows into the current group +
+ Control + + Escape + + Remove the current window in the current group +
+ Mod-1 Control Shift + + Escape + + Destroy the current window in all groups and workspaces +
+ Control Shift + + Escape + + Delete the current window in all groups and workspaces +
+ Mod-1 Control + + B + + Maximize/minimize the current group +
+ Mod-1 + + B + + Move the pointer to the lower right corner of the screen and redraw all groups +
+ Mod-1 Shift + + Tab + + Rotate down windows in the current group +
+ Mod-1 + + Tab + + Rotate up windows in the current group +
+ Control + + Less + + Switch to editing mode +
+ Mod-1 + + T + + Switch to editing mode +
+ Mod-1 Control Shift + + Home + + Quit clfswm +
+ Mod-1 + + F1 + + Open the help and info window +
+

+ + Second mode keys + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Modifiers + + Key/Button + + Function +
+ Shift + + Left + + Resize group left +
+ Shift + + Right + + Resize group right +
+ Shift + + Down + + Resize group down +
+ Shift + + Up + + Resize group up +
+ + + Left + + Move, pack, fill or resize group left +
+ + + Right + + Move, pack, fill or resize group right +
+ + + Down + + Move, pack, fill or resize group down +
+ + + Up + + Move, pack, fill or resize group up +
+ + + M + + Center the current group +
+ Mod-1 + + L + + Resize down the current group +
+ + + L + + Resize down the current group to its minimal size +
+ + + R + + Resize group to its half width or heigth on next arraw action +
+ Control + + F + + Fill group horizontally +
+ Shift + + F + + Fill group vertically +
+ Mod-1 + + F + + Fill group in all directions +
+ + + F + + Fill group on next arrow action (fill in all directions on second f keypress) +
+ + + P + + Pack group on next arrow action +
+ Control Shift + + Y + + Move all windows in the current workspace to one group and remove other groups +
+ Control + + Y + + Create a new group for each window in the current group +
+ Mod-1 + + Y + + Reconfigure the workspace tiling for the current session +
+ + + Y + + Tile the current workspace with the current window on one side and others on the other +
+ Control Shift + + T + + Tile the current workspace horizontally +
+ Control + + T + + Tile the current workspace vertically +
+ Mod-1 + + D + + Show debuging info +
+ Mod-1 + + A + + Force the current window to move in the group (Useful only for transient windows) +
+ + + A + + Force the current window to move in the center of the group (Useful only for transient windows) +
+ + + H + + start an xclock +
+ Control + + E + + start an emacs for another user +
+ + + E + + start emacs +
+ + + C + + start an xterm +
+ Mod-1 Control + + O + + Open each next window in a new group +
+ Mod-1 + + O + + Open the next window in a new group and all others in the same group +
+ Control + + O + + Open the next window in a numbered workspace +
+ + + O + + Open the next window in a new workspace +
+ Mod-1 + + W + + Remove the current workspace +
+ + + W + + Create a new default workspace +
+ Mod-1 + + G + + Remove the current group in the current workspace +
+ + + G + + Create a new default group +
+ + + K + + Remove the current window in the current group +
+ Mod-1 + + K + + Destroy the current window in all groups and workspaces +
+ + + X + + Open the fullscreen pager +
+ Mod-1 + + B + + Maximize/minimize the current group +
+ + + B + + Move the pointer to the lower right corner of the screen and redraw all groups +
+ Mod-1 Shift + + Tab + + Rotate down windows in the current group +
+ Mod-1 + + Tab + + Rotate up windows in the current group +
+ Mod-1 Control + + 2 + + Sort workspaces by numbers +
+ Mod-1 Control + + 1 + + Reset workspaces numbers (1 for current workspace, 2 for the second...) +
+ Mod-1 + + 0 + + Focus workspace 10 +
+ Mod-1 + + 9 + + Focus workspace 9 +
+ Mod-1 + + 8 + + Focus workspace 8 +
+ Mod-1 + + 7 + + Focus workspace 7 +
+ Mod-1 + + 6 + + Focus workspace 6 +
+ Mod-1 + + 5 + + Focus workspace 5 +
+ Mod-1 + + 4 + + Focus workspace 4 +
+ Mod-1 + + 3 + + Focus workspace 3 +
+ Mod-1 + + 2 + + Focus workspace 2 +
+ Mod-1 + + 1 + + Focus workspace 1 +
+ Mod-1 Control Shift + + Left + + Circulate down in workspace copying current group in the next workspace +
+ Mod-1 Shift + + Left + + Circulate down in workspace moving current group in the next workspace +
+ Mod-1 + + Left + + Circulate down in workspace +
+ Mod-1 Control Shift + + Right + + Circulate up in workspace copying current group in the next workspace +
+ Mod-1 Shift + + Right + + Circulate up in workspace moving current group in the next workspace +
+ Mod-1 + + Right + + Circulate up in workspace +
+ Mod-1 Control Shift + + Down + + Circulate down in group copying the current window in the next group +
+ Mod-1 Shift + + Down + + Circulate down in group moving the current window in the next group +
+ Mod-1 + + Down + + Circulate down in group +
+ Mod-1 Control Shift + + Up + + Circulate up in group copying the current window in the next group +
+ Mod-1 Shift + + Up + + Circulate up in group moving the current window in the next group +
+ Mod-1 + + Up + + Circulate up in group +
+ Shift + + Escape + + Unhide all hidden windows into the current group +
+ Control + + Escape + + Remove the current window in the current group +
+ Mod-1 Control Shift + + Escape + + Destroy the current window in all groups and workspaces +
+ Control Shift + + Escape + + Delete the current window in all groups and workspaces +
+ Control + + Return + + Leave second mode +
+ Control + + < + + Leave second mode +
+ + + Escape + + Leave second mode +
+ + + Return + + Leave second mode and maximize current group +
+ + + T + + Leave second mode and maximize current group +
+ + + ! + + Run a program from the query input +
+ + + : + + Eval a lisp form from the query input +
+ + + I + + Identify a key +
+ Control + + G + + Stop all pending actions (actions like open in new workspace/group) +
+ Mod-1 + + F1 + + Open the help and info window +
+

+ + Mouse buttons actions in second mode + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Modifiers + + Key/Button + + Function +
+ + + Motion + + +Move or resize group. Move window from a group to another. +Go to top left or rigth corner to change workspaces. +
+ Mod-1 + + 5 + + Circulate down in workspaces +
+ Mod-1 + + 4 + + Circulate up in workspaces +
+ + + 5 + + Rotate window down +
+ + + 4 + + Rotate window up +
+ Control + + 3 + + Copy selected window +
+ + + 3 + + Move selected window +
+ Control + + 2 + + Leave second mode +
+ + + 2 + + Leave second mode and maximize current group +
+ Control + + 1 + + Copy selected group +
+ Mod-1 + + 1 + + Resize selected group +
+ + + 1 + + Move selected group or create a new group on the root window +
+

+ + Pager mode keys + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Modifiers + + Key/Button + + Function +
+ Mod-1 Control + + 2 + + Sort workspaces by numbers +
+ Mod-1 Control + + 1 + + Reset workspaces numbers (1 for current workspace, 2 for the second...) +
+ Mod-1 + + 0 + + Focus workspace 10 +
+ Mod-1 + + 9 + + Focus workspace 9 +
+ Mod-1 + + 8 + + Focus workspace 8 +
+ Mod-1 + + 7 + + Focus workspace 7 +
+ Mod-1 + + 6 + + Focus workspace 6 +
+ Mod-1 + + 5 + + Focus workspace 5 +
+ Mod-1 + + 4 + + Focus workspace 4 +
+ Mod-1 + + 3 + + Focus workspace 3 +
+ Mod-1 + + 2 + + Focus workspace 2 +
+ Mod-1 + + 1 + + Focus workspace 1 +
+ Control Shift + + Right + + Copy the current group to the next workspace +
+ Control Shift + + Left + + Copy the current group to the previous workspace +
+ Shift + + Up + + Move the current window to the previous line +
+ Shift + + Down + + Move the current window to the next line +
+ Shift + + Right + + Move the current group to the next workspace +
+ Shift + + Left + + Move the current group to the previous workspace +
+ Mod-1 Control + + Left + + Resize group left +
+ Mod-1 Control + + Right + + Resize group right +
+ Mod-1 Control + + Down + + Resize group down +
+ Mod-1 Control + + Up + + Resize group up +
+ Mod-1 + + Left + + Move group left +
+ Mod-1 + + Right + + Move group right +
+ Mod-1 + + Down + + Move group down +
+ Mod-1 + + Up + + Move group up +
+ + + M + + Center the current group +
+ + + Left + + Move cursor, pack, fill or resize group left +
+ + + Right + + Move cursor, pack, fill or resize group right +
+ + + Down + + Move cursor, pack, fill or resize group down +
+ + + Up + + Move cursor, pack, fill or resize group up +
+ Mod-1 + + L + + Resize down the current group +
+ + + L + + Resize down the current group to its minimal size +
+ Control + + F + + Fill group horizontally +
+ Shift + + F + + Fill group vertically +
+ Mod-1 + + F + + Fill group in all directions +
+ + + F + + Fill group on next arrow action (fill in all directions on second f keypress) +
+ Shift + + R + + Resize group on next arrow action +
+ + + R + + Resize group to its half width or heigth on next arrow action +
+ Shift + + M + + Move group on next arrow action +
+ + + P + + Pack group on next arrow action +
+ Control Shift + + Y + + Move all windows in the current workspace to one group and remove other groups +
+ Control + + Y + + Create a new group for each window in the current group +
+ + + Y + + Tile the current workspace with the current window on one side and others on the other +
+ Shift + + T + + Tile the current workspace horizontally +
+ + + T + + Tile the current workspace vertically +
+ Mod-1 + + X + + Swap the current window with the next window +
+ Control + + X + + Swap the current group with the next group +
+ + + X + + Swap the current workspace with the next workspace +
+ Mod-1 + + W + + Remove the current workspace +
+ + + W + + Create a new default workspace +
+ Mod-1 + + G + + Remove the current group in the current workspace +
+ + + G + + Create a new default group +
+ Shift + + Escape + + Unhide all hidden windows into the current group +
+ Control + + Escape + + Remove the current window in the current group +
+ Mod-1 Control Shift + + Escape + + Destroy the current window in all groups and workspaces +
+ Control Shift + + Escape + + Delete the current window in all groups and workspaces +
+ Mod-1 Shift + + Tab + + Rotate down windows in the current group +
+ Mod-1 + + Tab + + Rotate up windows in the current group +
+ + + End + + Select the last workspace +
+ + + Home + + Select the first workspace +
+ + + B + + Move the pointer to the lower right corner of the screen and redraw all groups +
+ + + Escape + + Leave the pager mode +
+ + + Return + + Leave the pager mode +
+ Control + + G + + Stop all pending actions (actions like open in new workspace/group) +
+ Mod-1 + + F1 + + Open the help and info window +
+

+ + Mouse buttons actions in pager mode + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Modifiers + + Key/Button + + Function +
+ + + Motion + + Select workspaces +
+ + + 5 + + Rotate down windows in selected group +
+ + + 4 + + Rotate up windows in selected group +
+ Control + + 3 + + Copy selected window +
+ + + 3 + + Move selected window +
+ + + 2 + + Leave the pager mode +
+ Control + + 1 + + Copy selected group +
+ + + 1 + + Move selected group +
+

+ + Info mode keys + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Modifiers + + Key/Button + + Function +
+ + + Page_up + + Move ten lines up +
+ + + Page_down + + Move ten lines down +
+ + + End + + Move to last line +
+ + + Home + + Move to first line +
+ + + Right + + Move one char right +
+ + + Left + + Move one char left +
+ + + Up + + Move one line up +
+ + + Down + + Move one line down +
+ + + Twosuperior + + Move the pointer to the lower right corner of the screen +
+ + + + + Leave the info mode +
+ + + Escape + + Leave the info mode +
+ + + Return + + Leave the info mode +
+ + + Q + + Leave the info mode +
+

+ + Mouse buttons actions in info mode + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Modifiers + + Key/Button + + Function +
+ + + Motion + + Grab text +
+ + + 5 + + Move one line down +
+ + + 4 + + Move one line up +
+ + + 2 + + Leave the info mode +
+ + + 1 + + Begin grab text +
+ + Added: clfswm/keys.txt ============================================================================== --- (empty file) +++ clfswm/keys.txt Sat Mar 1 07:49:46 2008 @@ -0,0 +1,262 @@ + * CLFSWM Keys * + ----------- + +Note: Mod-1 is the Meta or Alt key + +Main mode keys: +-------------- + +Mod-1 0 Focus workspace 10 +Mod-1 9 Focus workspace 9 +Mod-1 8 Focus workspace 8 +Mod-1 7 Focus workspace 7 +Mod-1 6 Focus workspace 6 +Mod-1 5 Focus workspace 5 +Mod-1 4 Focus workspace 4 +Mod-1 3 Focus workspace 3 +Mod-1 2 Focus workspace 2 +Mod-1 1 Focus workspace 1 +Mod-1 Control Shift Left Circulate down in workspace copying current group in the next workspace +Mod-1 Shift Left Circulate down in workspace moving current group in the next workspace +Mod-1 Left Circulate down in workspace +Mod-1 Control Shift Right Circulate up in workspace copying current group in the next workspace +Mod-1 Shift Right Circulate up in workspace moving current group in the next workspace +Mod-1 Right Circulate up in workspace +Mod-1 Control Shift Down Circulate down in group copying the current window in the next group +Mod-1 Shift Down Circulate down in group moving the current window in the next group +Mod-1 Down Circulate down in group +Mod-1 Control Shift Up Circulate up in group copying the current window in the next group +Mod-1 Shift Up Circulate up in group moving the current window in the next group +Mod-1 Up Circulate up in group +Shift Escape Unhide all hidden windows into the current group +Control Escape Remove the current window in the current group +Mod-1 Control Shift Escape Destroy the current window in all groups and workspaces +Control Shift Escape Delete the current window in all groups and workspaces +Mod-1 Control B Maximize/minimize the current group +Mod-1 B Move the pointer to the lower right corner of the screen and redraw all groups +Mod-1 Shift Tab Rotate down windows in the current group +Mod-1 Tab Rotate up windows in the current group +Control Less Switch to editing mode +Mod-1 T Switch to editing mode +Mod-1 Control Shift Home Quit clfswm +Mod-1 F1 Open the help and info window + + +Second mode keys: +---------------- + +Shift Left Resize group left +Shift Right Resize group right +Shift Down Resize group down +Shift Up Resize group up + Left Move, pack, fill or resize group left + Right Move, pack, fill or resize group right + Down Move, pack, fill or resize group down + Up Move, pack, fill or resize group up + M Center the current group +Mod-1 L Resize down the current group + L Resize down the current group to its minimal size + R Resize group to its half width or heigth on next arraw action +Control F Fill group horizontally +Shift F Fill group vertically +Mod-1 F Fill group in all directions + F Fill group on next arrow action (fill in all directions on second f keypress) + P Pack group on next arrow action +Control Shift Y Move all windows in the current workspace to one group and remove other groups +Control Y Create a new group for each window in the current group +Mod-1 Y Reconfigure the workspace tiling for the current session + Y Tile the current workspace with the current window on one side and others on the other +Control Shift T Tile the current workspace horizontally +Control T Tile the current workspace vertically +Mod-1 D Show debuging info +Mod-1 A Force the current window to move in the group (Useful only for transient windows) + A Force the current window to move in the center of the group (Useful only for transient windows) + H start an xclock +Control E start an emacs for another user + E start emacs + C start an xterm +Mod-1 Control O Open each next window in a new group +Mod-1 O Open the next window in a new group and all others in the same group +Control O Open the next window in a numbered workspace + O Open the next window in a new workspace +Mod-1 W Remove the current workspace + W Create a new default workspace +Mod-1 G Remove the current group in the current workspace + G Create a new default group + K Remove the current window in the current group +Mod-1 K Destroy the current window in all groups and workspaces + X Open the fullscreen pager +Mod-1 B Maximize/minimize the current group + B Move the pointer to the lower right corner of the screen and redraw all groups +Mod-1 Shift Tab Rotate down windows in the current group +Mod-1 Tab Rotate up windows in the current group +Mod-1 Control 2 Sort workspaces by numbers +Mod-1 Control 1 Reset workspaces numbers (1 for current workspace, 2 for the second...) +Mod-1 0 Focus workspace 10 +Mod-1 9 Focus workspace 9 +Mod-1 8 Focus workspace 8 +Mod-1 7 Focus workspace 7 +Mod-1 6 Focus workspace 6 +Mod-1 5 Focus workspace 5 +Mod-1 4 Focus workspace 4 +Mod-1 3 Focus workspace 3 +Mod-1 2 Focus workspace 2 +Mod-1 1 Focus workspace 1 +Mod-1 Control Shift Left Circulate down in workspace copying current group in the next workspace +Mod-1 Shift Left Circulate down in workspace moving current group in the next workspace +Mod-1 Left Circulate down in workspace +Mod-1 Control Shift Right Circulate up in workspace copying current group in the next workspace +Mod-1 Shift Right Circulate up in workspace moving current group in the next workspace +Mod-1 Right Circulate up in workspace +Mod-1 Control Shift Down Circulate down in group copying the current window in the next group +Mod-1 Shift Down Circulate down in group moving the current window in the next group +Mod-1 Down Circulate down in group +Mod-1 Control Shift Up Circulate up in group copying the current window in the next group +Mod-1 Shift Up Circulate up in group moving the current window in the next group +Mod-1 Up Circulate up in group +Shift Escape Unhide all hidden windows into the current group +Control Escape Remove the current window in the current group +Mod-1 Control Shift Escape Destroy the current window in all groups and workspaces +Control Shift Escape Delete the current window in all groups and workspaces +Control Return Leave second mode +Control < Leave second mode + Escape Leave second mode + Return Leave second mode and maximize current group + T Leave second mode and maximize current group + ! Run a program from the query input + : Eval a lisp form from the query input + I Identify a key +Control G Stop all pending actions (actions like open in new workspace/group) +Mod-1 F1 Open the help and info window + + +Mouse buttons actions in second mode: +------------------------------------ + + Motion +Move or resize group. Move window from a group to another. +Go to top left or rigth corner to change workspaces. +Mod-1 5 Circulate down in workspaces +Mod-1 4 Circulate up in workspaces + 5 Rotate window down + 4 Rotate window up +Control 3 Copy selected window + 3 Move selected window +Control 2 Leave second mode + 2 Leave second mode and maximize current group +Control 1 Copy selected group +Mod-1 1 Resize selected group + 1 Move selected group or create a new group on the root window + + +Pager mode keys: +--------------- + +Mod-1 Control 2 Sort workspaces by numbers +Mod-1 Control 1 Reset workspaces numbers (1 for current workspace, 2 for the second...) +Mod-1 0 Focus workspace 10 +Mod-1 9 Focus workspace 9 +Mod-1 8 Focus workspace 8 +Mod-1 7 Focus workspace 7 +Mod-1 6 Focus workspace 6 +Mod-1 5 Focus workspace 5 +Mod-1 4 Focus workspace 4 +Mod-1 3 Focus workspace 3 +Mod-1 2 Focus workspace 2 +Mod-1 1 Focus workspace 1 +Control Shift Right Copy the current group to the next workspace +Control Shift Left Copy the current group to the previous workspace +Shift Up Move the current window to the previous line +Shift Down Move the current window to the next line +Shift Right Move the current group to the next workspace +Shift Left Move the current group to the previous workspace +Mod-1 Control Left Resize group left +Mod-1 Control Right Resize group right +Mod-1 Control Down Resize group down +Mod-1 Control Up Resize group up +Mod-1 Left Move group left +Mod-1 Right Move group right +Mod-1 Down Move group down +Mod-1 Up Move group up + M Center the current group + Left Move cursor, pack, fill or resize group left + Right Move cursor, pack, fill or resize group right + Down Move cursor, pack, fill or resize group down + Up Move cursor, pack, fill or resize group up +Mod-1 L Resize down the current group + L Resize down the current group to its minimal size +Control F Fill group horizontally +Shift F Fill group vertically +Mod-1 F Fill group in all directions + F Fill group on next arrow action (fill in all directions on second f keypress) +Shift R Resize group on next arrow action + R Resize group to its half width or heigth on next arrow action +Shift M Move group on next arrow action + P Pack group on next arrow action +Control Shift Y Move all windows in the current workspace to one group and remove other groups +Control Y Create a new group for each window in the current group + Y Tile the current workspace with the current window on one side and others on the other +Shift T Tile the current workspace horizontally + T Tile the current workspace vertically +Mod-1 X Swap the current window with the next window +Control X Swap the current group with the next group + X Swap the current workspace with the next workspace +Mod-1 W Remove the current workspace + W Create a new default workspace +Mod-1 G Remove the current group in the current workspace + G Create a new default group +Shift Escape Unhide all hidden windows into the current group +Control Escape Remove the current window in the current group +Mod-1 Control Shift Escape Destroy the current window in all groups and workspaces +Control Shift Escape Delete the current window in all groups and workspaces +Mod-1 Shift Tab Rotate down windows in the current group +Mod-1 Tab Rotate up windows in the current group + End Select the last workspace + Home Select the first workspace + B Move the pointer to the lower right corner of the screen and redraw all groups + Escape Leave the pager mode + Return Leave the pager mode +Control G Stop all pending actions (actions like open in new workspace/group) +Mod-1 F1 Open the help and info window + + +Mouse buttons actions in pager mode: +----------------------------------- + + Motion Select workspaces + 5 Rotate down windows in selected group + 4 Rotate up windows in selected group +Control 3 Copy selected window + 3 Move selected window + 2 Leave the pager mode +Control 1 Copy selected group + 1 Move selected group + + +Info mode keys: +-------------- + + Page_up Move ten lines up + Page_down Move ten lines down + End Move to last line + Home Move to first line + Right Move one char right + Left Move one char left + Up Move one line up + Down Move one line down + Twosuperior Move the pointer to the lower right corner of the screen + Leave the info mode + Escape Leave the info mode + Return Leave the info mode + Q Leave the info mode + + +Mouse buttons actions in info mode: +---------------------------------- + + Motion Grab text + 5 Move one line down + 4 Move one line up + 2 Leave the info mode + 1 Begin grab text + Added: clfswm/keysyms.lisp ============================================================================== --- (empty file) +++ clfswm/keysyms.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,1759 @@ +;; Copyright (C) 2006 Matthew Kennedy +;; +;; This file is part of stumpwm. +;; +;; stumpwm 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, or (at your option) +;; any later version. + +;; stumpwm 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 software; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330, +;; Boston, MA 02111-1307 USA + +;; Commentary: +;; +;; Mapping a keysym to a name is a client side activity in X11. Some +;; of the code here was taken from the CMUCL Hemlocks code base. The +;; actual mappings were taken from Xorg's keysymdefs.h. +;; +;; Code: + +(in-package :clfswm) + +(defvar *keysym-name-translations* (make-hash-table)) +(defvar *name-keysym-translations* (make-hash-table :test #'equal)) + +(defun cl-define-keysym (keysym name) + "Define a mapping from a keysym name to a keysym." + (setf (gethash keysym *keysym-name-translations*) name + (gethash name *name-keysym-translations*) keysym)) + +(defun keysym-name->keysym (name) + "Return the keysym corresponding to NAME." + (multiple-value-bind (value present-p) + (gethash name *name-keysym-translations*) + (declare (ignore present-p)) + value)) + +(defun keysym->keysym-name (keysym) + "Return the name corresponding to KEYSYM." + (multiple-value-bind (value present-p) + (gethash keysym *keysym-name-translations*) + (declare (ignore present-p)) + value)) + +(cl-define-keysym #xffffff "VoidSymbol") ;Void symbol +(cl-define-keysym #xff08 "BackSpace") ;Back space, back char +(cl-define-keysym #xff09 "Tab") +(cl-define-keysym #xff0a "Linefeed") ;Linefeed, LF +(cl-define-keysym #xff0b "Clear") +(cl-define-keysym #xff0d "Return") ;Return, enter +(cl-define-keysym #xff13 "Pause") ;Pause, hold +(cl-define-keysym #xff14 "Scroll_Lock") +(cl-define-keysym #xff15 "Sys_Req") +(cl-define-keysym #xff1b "Escape") +(cl-define-keysym #xffff "Delete") ;Delete, rubout +(cl-define-keysym #xff20 "Multi_key") ;Multi-key character compose +(cl-define-keysym #xff37 "Codeinput") +(cl-define-keysym #xff3c "SingleCandidate") +(cl-define-keysym #xff3d "MultipleCandidate") +(cl-define-keysym #xff3e "PreviousCandidate") +(cl-define-keysym #xff21 "Kanji") ;Kanji, Kanji convert +(cl-define-keysym #xff22 "Muhenkan") ;Cancel Conversion +(cl-define-keysym #xff23 "Henkan_Mode") ;Start/Stop Conversion +(cl-define-keysym #xff23 "Henkan") ;Alias for Henkan_Mode +(cl-define-keysym #xff24 "Romaji") ;to Romaji +(cl-define-keysym #xff25 "Hiragana") ;to Hiragana +(cl-define-keysym #xff26 "Katakana") ;to Katakana +(cl-define-keysym #xff27 "Hiragana_Katakana") ;Hiragana/Katakana toggle +(cl-define-keysym #xff28 "Zenkaku") ;to Zenkaku +(cl-define-keysym #xff29 "Hankaku") ;to Hankaku +(cl-define-keysym #xff2a "Zenkaku_Hankaku") ;Zenkaku/Hankaku toggle +(cl-define-keysym #xff2b "Touroku") ;Add to Dictionary +(cl-define-keysym #xff2c "Massyo") ;Delete from Dictionary +(cl-define-keysym #xff2d "Kana_Lock") ;Kana Lock +(cl-define-keysym #xff2e "Kana_Shift") ;Kana Shift +(cl-define-keysym #xff2f "Eisu_Shift") ;Alphanumeric Shift +(cl-define-keysym #xff30 "Eisu_toggle") ;Alphanumeric toggle +(cl-define-keysym #xff37 "Kanji_Bangou") ;Codeinput +(cl-define-keysym #xff3d "Zen_Koho") ;Multiple/All Candidate(s) +(cl-define-keysym #xff3e "Mae_Koho") ;Previous Candidate +(cl-define-keysym #xff50 "Home") +(cl-define-keysym #xff51 "Left") ;Move left, left arrow +(cl-define-keysym #xff52 "Up") ;Move up, up arrow +(cl-define-keysym #xff53 "Right") ;Move right, right arrow +(cl-define-keysym #xff54 "Down") ;Move down, down arrow +(cl-define-keysym #xff55 "Prior") ;Prior, previous +(cl-define-keysym #xff55 "Page_Up") +(cl-define-keysym #xff56 "Next") ;Next +(cl-define-keysym #xff56 "Page_Down") +(cl-define-keysym #xff57 "End") ;EOL +(cl-define-keysym #xff58 "Begin") ;BOL +(cl-define-keysym #xff60 "Select") ;Select, mark +(cl-define-keysym #xff61 "Print") +(cl-define-keysym #xff62 "Execute") ;Execute, run, do +(cl-define-keysym #xff63 "Insert") ;Insert, insert here +(cl-define-keysym #xff65 "Undo") +(cl-define-keysym #xff66 "Redo") ;Redo, again +(cl-define-keysym #xff67 "Menu") +(cl-define-keysym #xff68 "Find") ;Find, search +(cl-define-keysym #xff69 "Cancel") ;Cancel, stop, abort, exit +(cl-define-keysym #xff6a "Help") ;Help +(cl-define-keysym #xff6b "Break") +(cl-define-keysym #xff7e "Mode_switch") ;Character set switch +(cl-define-keysym #xff7e "script_switch") ;Alias for mode_switch +(cl-define-keysym #xff7f "Num_Lock") +(cl-define-keysym #xff80 "KP_Space") ;Space +(cl-define-keysym #xff89 "KP_Tab") +(cl-define-keysym #xff8d "KP_Enter") ;Enter +(cl-define-keysym #xff91 "KP_F1") ;PF1, KP_A, ... +(cl-define-keysym #xff92 "KP_F2") +(cl-define-keysym #xff93 "KP_F3") +(cl-define-keysym #xff94 "KP_F4") +(cl-define-keysym #xff95 "KP_Home") +(cl-define-keysym #xff96 "KP_Left") +(cl-define-keysym #xff97 "KP_Up") +(cl-define-keysym #xff98 "KP_Right") +(cl-define-keysym #xff99 "KP_Down") +(cl-define-keysym #xff9a "KP_Prior") +(cl-define-keysym #xff9a "KP_Page_Up") +(cl-define-keysym #xff9b "KP_Next") +(cl-define-keysym #xff9b "KP_Page_Down") +(cl-define-keysym #xff9c "KP_End") +(cl-define-keysym #xff9d "KP_Begin") +(cl-define-keysym #xff9e "KP_Insert") +(cl-define-keysym #xff9f "KP_Delete") +(cl-define-keysym #xffbd "KP_Equal") ;Equals +(cl-define-keysym #xffaa "KP_Multiply") +(cl-define-keysym #xffab "KP_Add") +(cl-define-keysym #xffac "KP_Separator") ;Separator, often comma +(cl-define-keysym #xffad "KP_Subtract") +(cl-define-keysym #xffae "KP_Decimal") +(cl-define-keysym #xffaf "KP_Divide") +(cl-define-keysym #xffb0 "KP_0") +(cl-define-keysym #xffb1 "KP_1") +(cl-define-keysym #xffb2 "KP_2") +(cl-define-keysym #xffb3 "KP_3") +(cl-define-keysym #xffb4 "KP_4") +(cl-define-keysym #xffb5 "KP_5") +(cl-define-keysym #xffb6 "KP_6") +(cl-define-keysym #xffb7 "KP_7") +(cl-define-keysym #xffb8 "KP_8") +(cl-define-keysym #xffb9 "KP_9") +(cl-define-keysym #xffbe "F1") +(cl-define-keysym #xffbf "F2") +(cl-define-keysym #xffc0 "F3") +(cl-define-keysym #xffc1 "F4") +(cl-define-keysym #xffc2 "F5") +(cl-define-keysym #xffc3 "F6") +(cl-define-keysym #xffc4 "F7") +(cl-define-keysym #xffc5 "F8") +(cl-define-keysym #xffc6 "F9") +(cl-define-keysym #xffc7 "F10") +(cl-define-keysym #xffc8 "F11") +(cl-define-keysym #xffc8 "L1") +(cl-define-keysym #xffc9 "F12") +(cl-define-keysym #xffc9 "L2") +(cl-define-keysym #xffca "F13") +(cl-define-keysym #xffca "L3") +(cl-define-keysym #xffcb "F14") +(cl-define-keysym #xffcb "L4") +(cl-define-keysym #xffcc "F15") +(cl-define-keysym #xffcc "L5") +(cl-define-keysym #xffcd "F16") +(cl-define-keysym #xffcd "L6") +(cl-define-keysym #xffce "F17") +(cl-define-keysym #xffce "L7") +(cl-define-keysym #xffcf "F18") +(cl-define-keysym #xffcf "L8") +(cl-define-keysym #xffd0 "F19") +(cl-define-keysym #xffd0 "L9") +(cl-define-keysym #xffd1 "F20") +(cl-define-keysym #xffd1 "L10") +(cl-define-keysym #xffd2 "F21") +(cl-define-keysym #xffd2 "R1") +(cl-define-keysym #xffd3 "F22") +(cl-define-keysym #xffd3 "R2") +(cl-define-keysym #xffd4 "F23") +(cl-define-keysym #xffd4 "R3") +(cl-define-keysym #xffd5 "F24") +(cl-define-keysym #xffd5 "R4") +(cl-define-keysym #xffd6 "F25") +(cl-define-keysym #xffd6 "R5") +(cl-define-keysym #xffd7 "F26") +(cl-define-keysym #xffd7 "R6") +(cl-define-keysym #xffd8 "F27") +(cl-define-keysym #xffd8 "R7") +(cl-define-keysym #xffd9 "F28") +(cl-define-keysym #xffd9 "R8") +(cl-define-keysym #xffda "F29") +(cl-define-keysym #xffda "R9") +(cl-define-keysym #xffdb "F30") +(cl-define-keysym #xffdb "R10") +(cl-define-keysym #xffdc "F31") +(cl-define-keysym #xffdc "R11") +(cl-define-keysym #xffdd "F32") +(cl-define-keysym #xffdd "R12") +(cl-define-keysym #xffde "F33") +(cl-define-keysym #xffde "R13") +(cl-define-keysym #xffdf "F34") +(cl-define-keysym #xffdf "R14") +(cl-define-keysym #xffe0 "F35") +(cl-define-keysym #xffe0 "R15") +(cl-define-keysym #xffe1 "Shift_L") ;Left shift +(cl-define-keysym #xffe2 "Shift_R") ;Right shift +(cl-define-keysym #xffe3 "Control_L") ;Left control +(cl-define-keysym #xffe4 "Control_R") ;Right control +(cl-define-keysym #xffe5 "Caps_Lock") ;Caps lock +(cl-define-keysym #xffe6 "Shift_Lock") ;Shift lock +(cl-define-keysym #xffe7 "Meta_L") ;Left meta +(cl-define-keysym #xffe8 "Meta_R") ;Right meta +(cl-define-keysym #xffe9 "Alt_L") ;Left alt +(cl-define-keysym #xffea "Alt_R") ;Right alt +(cl-define-keysym #xffeb "Super_L") ;Left super +(cl-define-keysym #xffec "Super_R") ;Right super +(cl-define-keysym #xffed "Hyper_L") ;Left hyper +(cl-define-keysym #xffee "Hyper_R") ;Right hyper +(cl-define-keysym #xfe01 "ISO_Lock") +(cl-define-keysym #xfe02 "ISO_Level2_Latch") +(cl-define-keysym #xfe03 "ISO_Level3_Shift") +(cl-define-keysym #xfe04 "ISO_Level3_Latch") +(cl-define-keysym #xfe05 "ISO_Level3_Lock") +(cl-define-keysym #xff7e "ISO_Group_Shift") ;Alias for mode_switch +(cl-define-keysym #xfe06 "ISO_Group_Latch") +(cl-define-keysym #xfe07 "ISO_Group_Lock") +(cl-define-keysym #xfe08 "ISO_Next_Group") +(cl-define-keysym #xfe09 "ISO_Next_Group_Lock") +(cl-define-keysym #xfe0a "ISO_Prev_Group") +(cl-define-keysym #xfe0b "ISO_Prev_Group_Lock") +(cl-define-keysym #xfe0c "ISO_First_Group") +(cl-define-keysym #xfe0d "ISO_First_Group_Lock") +(cl-define-keysym #xfe0e "ISO_Last_Group") +(cl-define-keysym #xfe0f "ISO_Last_Group_Lock") +(cl-define-keysym #xfe20 "ISO_Left_Tab") +(cl-define-keysym #xfe21 "ISO_Move_Line_Up") +(cl-define-keysym #xfe22 "ISO_Move_Line_Down") +(cl-define-keysym #xfe23 "ISO_Partial_Line_Up") +(cl-define-keysym #xfe24 "ISO_Partial_Line_Down") +(cl-define-keysym #xfe25 "ISO_Partial_Space_Left") +(cl-define-keysym #xfe26 "ISO_Partial_Space_Right") +(cl-define-keysym #xfe27 "ISO_Set_Margin_Left") +(cl-define-keysym #xfe28 "ISO_Set_Margin_Right") +(cl-define-keysym #xfe29 "ISO_Release_Margin_Left") +(cl-define-keysym #xfe2a "ISO_Release_Margin_Right") +(cl-define-keysym #xfe2b "ISO_Release_Both_Margins") +(cl-define-keysym #xfe2c "ISO_Fast_Cursor_Left") +(cl-define-keysym #xfe2d "ISO_Fast_Cursor_Right") +(cl-define-keysym #xfe2e "ISO_Fast_Cursor_Up") +(cl-define-keysym #xfe2f "ISO_Fast_Cursor_Down") +(cl-define-keysym #xfe30 "ISO_Continuous_Underline") +(cl-define-keysym #xfe31 "ISO_Discontinuous_Underline") +(cl-define-keysym #xfe32 "ISO_Emphasize") +(cl-define-keysym #xfe33 "ISO_Center_Object") +(cl-define-keysym #xfe34 "ISO_Enter") +(cl-define-keysym #xfe50 "dead_grave") +(cl-define-keysym #xfe51 "dead_acute") +(cl-define-keysym #xfe52 "dead_circumflex") +(cl-define-keysym #xfe53 "dead_tilde") +(cl-define-keysym #xfe54 "dead_macron") +(cl-define-keysym #xfe55 "dead_breve") +(cl-define-keysym #xfe56 "dead_abovedot") +(cl-define-keysym #xfe57 "dead_diaeresis") +(cl-define-keysym #xfe58 "dead_abovering") +(cl-define-keysym #xfe59 "dead_doubleacute") +(cl-define-keysym #xfe5a "dead_caron") +(cl-define-keysym #xfe5b "dead_cedilla") +(cl-define-keysym #xfe5c "dead_ogonek") +(cl-define-keysym #xfe5d "dead_iota") +(cl-define-keysym #xfe5e "dead_voiced_sound") +(cl-define-keysym #xfe5f "dead_semivoiced_sound") +(cl-define-keysym #xfe60 "dead_belowdot") +(cl-define-keysym #xfe61 "dead_hook") +(cl-define-keysym #xfe62 "dead_horn") +(cl-define-keysym #xfed0 "First_Virtual_Screen") +(cl-define-keysym #xfed1 "Prev_Virtual_Screen") +(cl-define-keysym #xfed2 "Next_Virtual_Screen") +(cl-define-keysym #xfed4 "Last_Virtual_Screen") +(cl-define-keysym #xfed5 "Terminate_Server") +(cl-define-keysym #xfe70 "AccessX_Enable") +(cl-define-keysym #xfe71 "AccessX_Feedback_Enable") +(cl-define-keysym #xfe72 "RepeatKeys_Enable") +(cl-define-keysym #xfe73 "SlowKeys_Enable") +(cl-define-keysym #xfe74 "BounceKeys_Enable") +(cl-define-keysym #xfe75 "StickyKeys_Enable") +(cl-define-keysym #xfe76 "MouseKeys_Enable") +(cl-define-keysym #xfe77 "MouseKeys_Accel_Enable") +(cl-define-keysym #xfe78 "Overlay1_Enable") +(cl-define-keysym #xfe79 "Overlay2_Enable") +(cl-define-keysym #xfe7a "AudibleBell_Enable") +(cl-define-keysym #xfee0 "Pointer_Left") +(cl-define-keysym #xfee1 "Pointer_Right") +(cl-define-keysym #xfee2 "Pointer_Up") +(cl-define-keysym #xfee3 "Pointer_Down") +(cl-define-keysym #xfee4 "Pointer_UpLeft") +(cl-define-keysym #xfee5 "Pointer_UpRight") +(cl-define-keysym #xfee6 "Pointer_DownLeft") +(cl-define-keysym #xfee7 "Pointer_DownRight") +(cl-define-keysym #xfee8 "Pointer_Button_Dflt") +(cl-define-keysym #xfee9 "Pointer_Button1") +(cl-define-keysym #xfeea "Pointer_Button2") +(cl-define-keysym #xfeeb "Pointer_Button3") +(cl-define-keysym #xfeec "Pointer_Button4") +(cl-define-keysym #xfeed "Pointer_Button5") +(cl-define-keysym #xfeee "Pointer_DblClick_Dflt") +(cl-define-keysym #xfeef "Pointer_DblClick1") +(cl-define-keysym #xfef0 "Pointer_DblClick2") +(cl-define-keysym #xfef1 "Pointer_DblClick3") +(cl-define-keysym #xfef2 "Pointer_DblClick4") +(cl-define-keysym #xfef3 "Pointer_DblClick5") +(cl-define-keysym #xfef4 "Pointer_Drag_Dflt") +(cl-define-keysym #xfef5 "Pointer_Drag1") +(cl-define-keysym #xfef6 "Pointer_Drag2") +(cl-define-keysym #xfef7 "Pointer_Drag3") +(cl-define-keysym #xfef8 "Pointer_Drag4") +(cl-define-keysym #xfefd "Pointer_Drag5") +(cl-define-keysym #xfef9 "Pointer_EnableKeys") +(cl-define-keysym #xfefa "Pointer_Accelerate") +(cl-define-keysym #xfefb "Pointer_DfltBtnNext") +(cl-define-keysym #xfefc "Pointer_DfltBtnPrev") +(cl-define-keysym #xfd01 "3270_Duplicate") +(cl-define-keysym #xfd02 "3270_FieldMark") +(cl-define-keysym #xfd03 "3270_Right2") +(cl-define-keysym #xfd04 "3270_Left2") +(cl-define-keysym #xfd05 "3270_BackTab") +(cl-define-keysym #xfd06 "3270_EraseEOF") +(cl-define-keysym #xfd07 "3270_EraseInput") +(cl-define-keysym #xfd08 "3270_Reset") +(cl-define-keysym #xfd09 "3270_Quit") +(cl-define-keysym #xfd0a "3270_PA1") +(cl-define-keysym #xfd0b "3270_PA2") +(cl-define-keysym #xfd0c "3270_PA3") +(cl-define-keysym #xfd0d "3270_Test") +(cl-define-keysym #xfd0e "3270_Attn") +(cl-define-keysym #xfd0f "3270_CursorBlink") +(cl-define-keysym #xfd10 "3270_AltCursor") +(cl-define-keysym #xfd11 "3270_KeyClick") +(cl-define-keysym #xfd12 "3270_Jump") +(cl-define-keysym #xfd13 "3270_Ident") +(cl-define-keysym #xfd14 "3270_Rule") +(cl-define-keysym #xfd15 "3270_Copy") +(cl-define-keysym #xfd16 "3270_Play") +(cl-define-keysym #xfd17 "3270_Setup") +(cl-define-keysym #xfd18 "3270_Record") +(cl-define-keysym #xfd19 "3270_ChangeScreen") +(cl-define-keysym #xfd1a "3270_DeleteWord") +(cl-define-keysym #xfd1b "3270_ExSelect") +(cl-define-keysym #xfd1c "3270_CursorSelect") +(cl-define-keysym #xfd1d "3270_PrintScreen") +(cl-define-keysym #xfd1e "3270_Enter") +(cl-define-keysym #x0020 "space") ;U+0020 SPACE +(cl-define-keysym #x0021 "exclam") ;U+0021 EXCLAMATION MARK +(cl-define-keysym #x0022 "quotedbl") ;U+0022 QUOTATION MARK +(cl-define-keysym #x0023 "numbersign") ;U+0023 NUMBER SIGN +(cl-define-keysym #x0024 "dollar") ;U+0024 DOLLAR SIGN +(cl-define-keysym #x0025 "percent") ;U+0025 PERCENT SIGN +(cl-define-keysym #x0026 "ampersand") ;U+0026 AMPERSAND +(cl-define-keysym #x0027 "apostrophe") ;U+0027 APOSTROPHE +(cl-define-keysym #x0027 "quoteright") ;deprecated +(cl-define-keysym #x0028 "parenleft") ;U+0028 LEFT PARENTHESIS +(cl-define-keysym #x0029 "parenright") ;U+0029 RIGHT PARENTHESIS +(cl-define-keysym #x002a "asterisk") ;U+002A ASTERISK +(cl-define-keysym #x002b "plus") ;U+002B PLUS SIGN +(cl-define-keysym #x002c "comma") ;U+002C COMMA +(cl-define-keysym #x002d "minus") ;U+002D HYPHEN-MINUS +(cl-define-keysym #x002e "period") ;U+002E FULL STOP +(cl-define-keysym #x002f "slash") ;U+002F SOLIDUS +(cl-define-keysym #x0030 "0") ;U+0030 DIGIT ZERO +(cl-define-keysym #x0031 "1") ;U+0031 DIGIT ONE +(cl-define-keysym #x0032 "2") ;U+0032 DIGIT TWO +(cl-define-keysym #x0033 "3") ;U+0033 DIGIT THREE +(cl-define-keysym #x0034 "4") ;U+0034 DIGIT FOUR +(cl-define-keysym #x0035 "5") ;U+0035 DIGIT FIVE +(cl-define-keysym #x0036 "6") ;U+0036 DIGIT SIX +(cl-define-keysym #x0037 "7") ;U+0037 DIGIT SEVEN +(cl-define-keysym #x0038 "8") ;U+0038 DIGIT EIGHT +(cl-define-keysym #x0039 "9") ;U+0039 DIGIT NINE +(cl-define-keysym #x003a "colon") ;U+003A COLON +(cl-define-keysym #x003b "semicolon") ;U+003B SEMICOLON +(cl-define-keysym #x003c "less") ;U+003C LESS-THAN SIGN +(cl-define-keysym #x003d "equal") ;U+003D EQUALS SIGN +(cl-define-keysym #x003e "greater") ;U+003E GREATER-THAN SIGN +(cl-define-keysym #x003f "question") ;U+003F QUESTION MARK +(cl-define-keysym #x0040 "at") ;U+0040 COMMERCIAL AT +(cl-define-keysym #x0041 "A") ;U+0041 LATIN CAPITAL LETTER A +(cl-define-keysym #x0042 "B") ;U+0042 LATIN CAPITAL LETTER B +(cl-define-keysym #x0043 "C") ;U+0043 LATIN CAPITAL LETTER C +(cl-define-keysym #x0044 "D") ;U+0044 LATIN CAPITAL LETTER D +(cl-define-keysym #x0045 "E") ;U+0045 LATIN CAPITAL LETTER E +(cl-define-keysym #x0046 "F") ;U+0046 LATIN CAPITAL LETTER F +(cl-define-keysym #x0047 "G") ;U+0047 LATIN CAPITAL LETTER G +(cl-define-keysym #x0048 "H") ;U+0048 LATIN CAPITAL LETTER H +(cl-define-keysym #x0049 "I") ;U+0049 LATIN CAPITAL LETTER I +(cl-define-keysym #x004a "J") ;U+004A LATIN CAPITAL LETTER J +(cl-define-keysym #x004b "K") ;U+004B LATIN CAPITAL LETTER K +(cl-define-keysym #x004c "L") ;U+004C LATIN CAPITAL LETTER L +(cl-define-keysym #x004d "M") ;U+004D LATIN CAPITAL LETTER M +(cl-define-keysym #x004e "N") ;U+004E LATIN CAPITAL LETTER N +(cl-define-keysym #x004f "O") ;U+004F LATIN CAPITAL LETTER O +(cl-define-keysym #x0050 "P") ;U+0050 LATIN CAPITAL LETTER P +(cl-define-keysym #x0051 "Q") ;U+0051 LATIN CAPITAL LETTER Q +(cl-define-keysym #x0052 "R") ;U+0052 LATIN CAPITAL LETTER R +(cl-define-keysym #x0053 "S") ;U+0053 LATIN CAPITAL LETTER S +(cl-define-keysym #x0054 "T") ;U+0054 LATIN CAPITAL LETTER T +(cl-define-keysym #x0055 "U") ;U+0055 LATIN CAPITAL LETTER U +(cl-define-keysym #x0056 "V") ;U+0056 LATIN CAPITAL LETTER V +(cl-define-keysym #x0057 "W") ;U+0057 LATIN CAPITAL LETTER W +(cl-define-keysym #x0058 "X") ;U+0058 LATIN CAPITAL LETTER X +(cl-define-keysym #x0059 "Y") ;U+0059 LATIN CAPITAL LETTER Y +(cl-define-keysym #x005a "Z") ;U+005A LATIN CAPITAL LETTER Z +(cl-define-keysym #x005b "bracketleft") ;U+005B LEFT SQUARE BRACKET +(cl-define-keysym #x005c "backslash") ;U+005C REVERSE SOLIDUS +(cl-define-keysym #x005d "bracketright") ;U+005D RIGHT SQUARE BRACKET +(cl-define-keysym #x005e "asciicircum") ;U+005E CIRCUMFLEX ACCENT +(cl-define-keysym #x005f "underscore") ;U+005F LOW LINE +(cl-define-keysym #x0060 "grave") ;U+0060 GRAVE ACCENT +(cl-define-keysym #x0060 "quoteleft") ;deprecated +(cl-define-keysym #x0061 "a") ;U+0061 LATIN SMALL LETTER A +(cl-define-keysym #x0062 "b") ;U+0062 LATIN SMALL LETTER B +(cl-define-keysym #x0063 "c") ;U+0063 LATIN SMALL LETTER C +(cl-define-keysym #x0064 "d") ;U+0064 LATIN SMALL LETTER D +(cl-define-keysym #x0065 "e") ;U+0065 LATIN SMALL LETTER E +(cl-define-keysym #x0066 "f") ;U+0066 LATIN SMALL LETTER F +(cl-define-keysym #x0067 "g") ;U+0067 LATIN SMALL LETTER G +(cl-define-keysym #x0068 "h") ;U+0068 LATIN SMALL LETTER H +(cl-define-keysym #x0069 "i") ;U+0069 LATIN SMALL LETTER I +(cl-define-keysym #x006a "j") ;U+006A LATIN SMALL LETTER J +(cl-define-keysym #x006b "k") ;U+006B LATIN SMALL LETTER K +(cl-define-keysym #x006c "l") ;U+006C LATIN SMALL LETTER L +(cl-define-keysym #x006d "m") ;U+006D LATIN SMALL LETTER M +(cl-define-keysym #x006e "n") ;U+006E LATIN SMALL LETTER N +(cl-define-keysym #x006f "o") ;U+006F LATIN SMALL LETTER O +(cl-define-keysym #x0070 "p") ;U+0070 LATIN SMALL LETTER P +(cl-define-keysym #x0071 "q") ;U+0071 LATIN SMALL LETTER Q +(cl-define-keysym #x0072 "r") ;U+0072 LATIN SMALL LETTER R +(cl-define-keysym #x0073 "s") ;U+0073 LATIN SMALL LETTER S +(cl-define-keysym #x0074 "t") ;U+0074 LATIN SMALL LETTER T +(cl-define-keysym #x0075 "u") ;U+0075 LATIN SMALL LETTER U +(cl-define-keysym #x0076 "v") ;U+0076 LATIN SMALL LETTER V +(cl-define-keysym #x0077 "w") ;U+0077 LATIN SMALL LETTER W +(cl-define-keysym #x0078 "x") ;U+0078 LATIN SMALL LETTER X +(cl-define-keysym #x0079 "y") ;U+0079 LATIN SMALL LETTER Y +(cl-define-keysym #x007a "z") ;U+007A LATIN SMALL LETTER Z +(cl-define-keysym #x007b "braceleft") ;U+007B LEFT CURLY BRACKET +(cl-define-keysym #x007c "bar") ;U+007C VERTICAL LINE +(cl-define-keysym #x007d "braceright") ;U+007D RIGHT CURLY BRACKET +(cl-define-keysym #x007e "asciitilde") ;U+007E TILDE +(cl-define-keysym #x00a0 "nobreakspace") ;U+00A0 NO-BREAK SPACE +(cl-define-keysym #x00a1 "exclamdown") ;U+00A1 INVERTED EXCLAMATION MARK +(cl-define-keysym #x00a2 "cent") ;U+00A2 CENT SIGN +(cl-define-keysym #x00a3 "sterling") ;U+00A3 POUND SIGN +(cl-define-keysym #x00a4 "currency") ;U+00A4 CURRENCY SIGN +(cl-define-keysym #x00a5 "yen") ;U+00A5 YEN SIGN +(cl-define-keysym #x00a6 "brokenbar") ;U+00A6 BROKEN BAR +(cl-define-keysym #x00a7 "section") ;U+00A7 SECTION SIGN +(cl-define-keysym #x00a8 "diaeresis") ;U+00A8 DIAERESIS +(cl-define-keysym #x00a9 "copyright") ;U+00A9 COPYRIGHT SIGN +(cl-define-keysym #x00aa "ordfeminine") ;U+00AA FEMININE ORDINAL INDICATOR +(cl-define-keysym #x00ab "guillemotleft") ;U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +(cl-define-keysym #x00ac "notsign") ;U+00AC NOT SIGN +(cl-define-keysym #x00ad "hyphen") ;U+00AD SOFT HYPHEN +(cl-define-keysym #x00ae "registered") ;U+00AE REGISTERED SIGN +(cl-define-keysym #x00af "macron") ;U+00AF MACRON +(cl-define-keysym #x00b0 "degree") ;U+00B0 DEGREE SIGN +(cl-define-keysym #x00b1 "plusminus") ;U+00B1 PLUS-MINUS SIGN +(cl-define-keysym #x00b2 "twosuperior") ;U+00B2 SUPERSCRIPT TWO +(cl-define-keysym #x00b3 "threesuperior") ;U+00B3 SUPERSCRIPT THREE +(cl-define-keysym #x00b4 "acute") ;U+00B4 ACUTE ACCENT +(cl-define-keysym #x00b5 "mu") ;U+00B5 MICRO SIGN +(cl-define-keysym #x00b6 "paragraph") ;U+00B6 PILCROW SIGN +(cl-define-keysym #x00b7 "periodcentered") ;U+00B7 MIDDLE DOT +(cl-define-keysym #x00b8 "cedilla") ;U+00B8 CEDILLA +(cl-define-keysym #x00b9 "onesuperior") ;U+00B9 SUPERSCRIPT ONE +(cl-define-keysym #x00ba "masculine") ;U+00BA MASCULINE ORDINAL INDICATOR +(cl-define-keysym #x00bb "guillemotright") ;U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +(cl-define-keysym #x00bc "onequarter") ;U+00BC VULGAR FRACTION ONE QUARTER +(cl-define-keysym #x00bd "onehalf") ;U+00BD VULGAR FRACTION ONE HALF +(cl-define-keysym #x00be "threequarters") ;U+00BE VULGAR FRACTION THREE QUARTERS +(cl-define-keysym #x00bf "questiondown") ;U+00BF INVERTED QUESTION MARK +(cl-define-keysym #x00c0 "Agrave") ;U+00C0 LATIN CAPITAL LETTER A WITH GRAVE +(cl-define-keysym #x00c1 "Aacute") ;U+00C1 LATIN CAPITAL LETTER A WITH ACUTE +(cl-define-keysym #x00c2 "Acircumflex") ;U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX +(cl-define-keysym #x00c3 "Atilde") ;U+00C3 LATIN CAPITAL LETTER A WITH TILDE +(cl-define-keysym #x00c4 "Adiaeresis") ;U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS +(cl-define-keysym #x00c5 "Aring") ;U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE +(cl-define-keysym #x00c6 "AE") ;U+00C6 LATIN CAPITAL LETTER AE +(cl-define-keysym #x00c7 "Ccedilla") ;U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA +(cl-define-keysym #x00c8 "Egrave") ;U+00C8 LATIN CAPITAL LETTER E WITH GRAVE +(cl-define-keysym #x00c9 "Eacute") ;U+00C9 LATIN CAPITAL LETTER E WITH ACUTE +(cl-define-keysym #x00ca "Ecircumflex") ;U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX +(cl-define-keysym #x00cb "Ediaeresis") ;U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS +(cl-define-keysym #x00cc "Igrave") ;U+00CC LATIN CAPITAL LETTER I WITH GRAVE +(cl-define-keysym #x00cd "Iacute") ;U+00CD LATIN CAPITAL LETTER I WITH ACUTE +(cl-define-keysym #x00ce "Icircumflex") ;U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX +(cl-define-keysym #x00cf "Idiaeresis") ;U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS +(cl-define-keysym #x00d0 "ETH") ;U+00D0 LATIN CAPITAL LETTER ETH +(cl-define-keysym #x00d0 "Eth") ;deprecated +(cl-define-keysym #x00d1 "Ntilde") ;U+00D1 LATIN CAPITAL LETTER N WITH TILDE +(cl-define-keysym #x00d2 "Ograve") ;U+00D2 LATIN CAPITAL LETTER O WITH GRAVE +(cl-define-keysym #x00d3 "Oacute") ;U+00D3 LATIN CAPITAL LETTER O WITH ACUTE +(cl-define-keysym #x00d4 "Ocircumflex") ;U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX +(cl-define-keysym #x00d5 "Otilde") ;U+00D5 LATIN CAPITAL LETTER O WITH TILDE +(cl-define-keysym #x00d6 "Odiaeresis") ;U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS +(cl-define-keysym #x00d7 "multiply") ;U+00D7 MULTIPLICATION SIGN +(cl-define-keysym #x00d8 "Oslash") ;U+00D8 LATIN CAPITAL LETTER O WITH STROKE +(cl-define-keysym #x00d8 "Ooblique") ;U+00D8 LATIN CAPITAL LETTER O WITH STROKE +(cl-define-keysym #x00d9 "Ugrave") ;U+00D9 LATIN CAPITAL LETTER U WITH GRAVE +(cl-define-keysym #x00da "Uacute") ;U+00DA LATIN CAPITAL LETTER U WITH ACUTE +(cl-define-keysym #x00db "Ucircumflex") ;U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX +(cl-define-keysym #x00dc "Udiaeresis") ;U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS +(cl-define-keysym #x00dd "Yacute") ;U+00DD LATIN CAPITAL LETTER Y WITH ACUTE +(cl-define-keysym #x00de "THORN") ;U+00DE LATIN CAPITAL LETTER THORN +(cl-define-keysym #x00de "Thorn") ;deprecated +(cl-define-keysym #x00df "ssharp") ;U+00DF LATIN SMALL LETTER SHARP S +(cl-define-keysym #x00e0 "agrave") ;U+00E0 LATIN SMALL LETTER A WITH GRAVE +(cl-define-keysym #x00e1 "aacute") ;U+00E1 LATIN SMALL LETTER A WITH ACUTE +(cl-define-keysym #x00e2 "acircumflex") ;U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX +(cl-define-keysym #x00e3 "atilde") ;U+00E3 LATIN SMALL LETTER A WITH TILDE +(cl-define-keysym #x00e4 "adiaeresis") ;U+00E4 LATIN SMALL LETTER A WITH DIAERESIS +(cl-define-keysym #x00e5 "aring") ;U+00E5 LATIN SMALL LETTER A WITH RING ABOVE +(cl-define-keysym #x00e6 "ae") ;U+00E6 LATIN SMALL LETTER AE +(cl-define-keysym #x00e7 "ccedilla") ;U+00E7 LATIN SMALL LETTER C WITH CEDILLA +(cl-define-keysym #x00e8 "egrave") ;U+00E8 LATIN SMALL LETTER E WITH GRAVE +(cl-define-keysym #x00e9 "eacute") ;U+00E9 LATIN SMALL LETTER E WITH ACUTE +(cl-define-keysym #x00ea "ecircumflex") ;U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX +(cl-define-keysym #x00eb "ediaeresis") ;U+00EB LATIN SMALL LETTER E WITH DIAERESIS +(cl-define-keysym #x00ec "igrave") ;U+00EC LATIN SMALL LETTER I WITH GRAVE +(cl-define-keysym #x00ed "iacute") ;U+00ED LATIN SMALL LETTER I WITH ACUTE +(cl-define-keysym #x00ee "icircumflex") ;U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX +(cl-define-keysym #x00ef "idiaeresis") ;U+00EF LATIN SMALL LETTER I WITH DIAERESIS +(cl-define-keysym #x00f0 "eth") ;U+00F0 LATIN SMALL LETTER ETH +(cl-define-keysym #x00f1 "ntilde") ;U+00F1 LATIN SMALL LETTER N WITH TILDE +(cl-define-keysym #x00f2 "ograve") ;U+00F2 LATIN SMALL LETTER O WITH GRAVE +(cl-define-keysym #x00f3 "oacute") ;U+00F3 LATIN SMALL LETTER O WITH ACUTE +(cl-define-keysym #x00f4 "ocircumflex") ;U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX +(cl-define-keysym #x00f5 "otilde") ;U+00F5 LATIN SMALL LETTER O WITH TILDE +(cl-define-keysym #x00f6 "odiaeresis") ;U+00F6 LATIN SMALL LETTER O WITH DIAERESIS +(cl-define-keysym #x00f7 "division") ;U+00F7 DIVISION SIGN +(cl-define-keysym #x00f8 "oslash") ;U+00F8 LATIN SMALL LETTER O WITH STROKE +(cl-define-keysym #x00f8 "ooblique") ;U+00F8 LATIN SMALL LETTER O WITH STROKE +(cl-define-keysym #x00f9 "ugrave") ;U+00F9 LATIN SMALL LETTER U WITH GRAVE +(cl-define-keysym #x00fa "uacute") ;U+00FA LATIN SMALL LETTER U WITH ACUTE +(cl-define-keysym #x00fb "ucircumflex") ;U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX +(cl-define-keysym #x00fc "udiaeresis") ;U+00FC LATIN SMALL LETTER U WITH DIAERESIS +(cl-define-keysym #x00fd "yacute") ;U+00FD LATIN SMALL LETTER Y WITH ACUTE +(cl-define-keysym #x00fe "thorn") ;U+00FE LATIN SMALL LETTER THORN +(cl-define-keysym #x00ff "ydiaeresis") ;U+00FF LATIN SMALL LETTER Y WITH DIAERESIS +(cl-define-keysym #x01a1 "Aogonek") ;U+0104 LATIN CAPITAL LETTER A WITH OGONEK +(cl-define-keysym #x01a2 "breve") ;U+02D8 BREVE +(cl-define-keysym #x01a3 "Lstroke") ;U+0141 LATIN CAPITAL LETTER L WITH STROKE +(cl-define-keysym #x01a5 "Lcaron") ;U+013D LATIN CAPITAL LETTER L WITH CARON +(cl-define-keysym #x01a6 "Sacute") ;U+015A LATIN CAPITAL LETTER S WITH ACUTE +(cl-define-keysym #x01a9 "Scaron") ;U+0160 LATIN CAPITAL LETTER S WITH CARON +(cl-define-keysym #x01aa "Scedilla") ;U+015E LATIN CAPITAL LETTER S WITH CEDILLA +(cl-define-keysym #x01ab "Tcaron") ;U+0164 LATIN CAPITAL LETTER T WITH CARON +(cl-define-keysym #x01ac "Zacute") ;U+0179 LATIN CAPITAL LETTER Z WITH ACUTE +(cl-define-keysym #x01ae "Zcaron") ;U+017D LATIN CAPITAL LETTER Z WITH CARON +(cl-define-keysym #x01af "Zabovedot") ;U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE +(cl-define-keysym #x01b1 "aogonek") ;U+0105 LATIN SMALL LETTER A WITH OGONEK +(cl-define-keysym #x01b2 "ogonek") ;U+02DB OGONEK +(cl-define-keysym #x01b3 "lstroke") ;U+0142 LATIN SMALL LETTER L WITH STROKE +(cl-define-keysym #x01b5 "lcaron") ;U+013E LATIN SMALL LETTER L WITH CARON +(cl-define-keysym #x01b6 "sacute") ;U+015B LATIN SMALL LETTER S WITH ACUTE +(cl-define-keysym #x01b7 "caron") ;U+02C7 CARON +(cl-define-keysym #x01b9 "scaron") ;U+0161 LATIN SMALL LETTER S WITH CARON +(cl-define-keysym #x01ba "scedilla") ;U+015F LATIN SMALL LETTER S WITH CEDILLA +(cl-define-keysym #x01bb "tcaron") ;U+0165 LATIN SMALL LETTER T WITH CARON +(cl-define-keysym #x01bc "zacute") ;U+017A LATIN SMALL LETTER Z WITH ACUTE +(cl-define-keysym #x01bd "doubleacute") ;U+02DD DOUBLE ACUTE ACCENT +(cl-define-keysym #x01be "zcaron") ;U+017E LATIN SMALL LETTER Z WITH CARON +(cl-define-keysym #x01bf "zabovedot") ;U+017C LATIN SMALL LETTER Z WITH DOT ABOVE +(cl-define-keysym #x01c0 "Racute") ;U+0154 LATIN CAPITAL LETTER R WITH ACUTE +(cl-define-keysym #x01c3 "Abreve") ;U+0102 LATIN CAPITAL LETTER A WITH BREVE +(cl-define-keysym #x01c5 "Lacute") ;U+0139 LATIN CAPITAL LETTER L WITH ACUTE +(cl-define-keysym #x01c6 "Cacute") ;U+0106 LATIN CAPITAL LETTER C WITH ACUTE +(cl-define-keysym #x01c8 "Ccaron") ;U+010C LATIN CAPITAL LETTER C WITH CARON +(cl-define-keysym #x01ca "Eogonek") ;U+0118 LATIN CAPITAL LETTER E WITH OGONEK +(cl-define-keysym #x01cc "Ecaron") ;U+011A LATIN CAPITAL LETTER E WITH CARON +(cl-define-keysym #x01cf "Dcaron") ;U+010E LATIN CAPITAL LETTER D WITH CARON +(cl-define-keysym #x01d0 "Dstroke") ;U+0110 LATIN CAPITAL LETTER D WITH STROKE +(cl-define-keysym #x01d1 "Nacute") ;U+0143 LATIN CAPITAL LETTER N WITH ACUTE +(cl-define-keysym #x01d2 "Ncaron") ;U+0147 LATIN CAPITAL LETTER N WITH CARON +(cl-define-keysym #x01d5 "Odoubleacute") ;U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +(cl-define-keysym #x01d8 "Rcaron") ;U+0158 LATIN CAPITAL LETTER R WITH CARON +(cl-define-keysym #x01d9 "Uring") ;U+016E LATIN CAPITAL LETTER U WITH RING ABOVE +(cl-define-keysym #x01db "Udoubleacute") ;U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +(cl-define-keysym #x01de "Tcedilla") ;U+0162 LATIN CAPITAL LETTER T WITH CEDILLA +(cl-define-keysym #x01e0 "racute") ;U+0155 LATIN SMALL LETTER R WITH ACUTE +(cl-define-keysym #x01e3 "abreve") ;U+0103 LATIN SMALL LETTER A WITH BREVE +(cl-define-keysym #x01e5 "lacute") ;U+013A LATIN SMALL LETTER L WITH ACUTE +(cl-define-keysym #x01e6 "cacute") ;U+0107 LATIN SMALL LETTER C WITH ACUTE +(cl-define-keysym #x01e8 "ccaron") ;U+010D LATIN SMALL LETTER C WITH CARON +(cl-define-keysym #x01ea "eogonek") ;U+0119 LATIN SMALL LETTER E WITH OGONEK +(cl-define-keysym #x01ec "ecaron") ;U+011B LATIN SMALL LETTER E WITH CARON +(cl-define-keysym #x01ef "dcaron") ;U+010F LATIN SMALL LETTER D WITH CARON +(cl-define-keysym #x01f0 "dstroke") ;U+0111 LATIN SMALL LETTER D WITH STROKE +(cl-define-keysym #x01f1 "nacute") ;U+0144 LATIN SMALL LETTER N WITH ACUTE +(cl-define-keysym #x01f2 "ncaron") ;U+0148 LATIN SMALL LETTER N WITH CARON +(cl-define-keysym #x01f5 "odoubleacute") ;U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE +(cl-define-keysym #x01fb "udoubleacute") ;U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE +(cl-define-keysym #x01f8 "rcaron") ;U+0159 LATIN SMALL LETTER R WITH CARON +(cl-define-keysym #x01f9 "uring") ;U+016F LATIN SMALL LETTER U WITH RING ABOVE +(cl-define-keysym #x01fe "tcedilla") ;U+0163 LATIN SMALL LETTER T WITH CEDILLA +(cl-define-keysym #x01ff "abovedot") ;U+02D9 DOT ABOVE +(cl-define-keysym #x02a1 "Hstroke") ;U+0126 LATIN CAPITAL LETTER H WITH STROKE +(cl-define-keysym #x02a6 "Hcircumflex") ;U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX +(cl-define-keysym #x02a9 "Iabovedot") ;U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE +(cl-define-keysym #x02ab "Gbreve") ;U+011E LATIN CAPITAL LETTER G WITH BREVE +(cl-define-keysym #x02ac "Jcircumflex") ;U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX +(cl-define-keysym #x02b1 "hstroke") ;U+0127 LATIN SMALL LETTER H WITH STROKE +(cl-define-keysym #x02b6 "hcircumflex") ;U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX +(cl-define-keysym #x02b9 "idotless") ;U+0131 LATIN SMALL LETTER DOTLESS I +(cl-define-keysym #x02bb "gbreve") ;U+011F LATIN SMALL LETTER G WITH BREVE +(cl-define-keysym #x02bc "jcircumflex") ;U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX +(cl-define-keysym #x02c5 "Cabovedot") ;U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE +(cl-define-keysym #x02c6 "Ccircumflex") ;U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX +(cl-define-keysym #x02d5 "Gabovedot") ;U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE +(cl-define-keysym #x02d8 "Gcircumflex") ;U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX +(cl-define-keysym #x02dd "Ubreve") ;U+016C LATIN CAPITAL LETTER U WITH BREVE +(cl-define-keysym #x02de "Scircumflex") ;U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX +(cl-define-keysym #x02e5 "cabovedot") ;U+010B LATIN SMALL LETTER C WITH DOT ABOVE +(cl-define-keysym #x02e6 "ccircumflex") ;U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX +(cl-define-keysym #x02f5 "gabovedot") ;U+0121 LATIN SMALL LETTER G WITH DOT ABOVE +(cl-define-keysym #x02f8 "gcircumflex") ;U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX +(cl-define-keysym #x02fd "ubreve") ;U+016D LATIN SMALL LETTER U WITH BREVE +(cl-define-keysym #x02fe "scircumflex") ;U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX +(cl-define-keysym #x03a2 "kra") ;U+0138 LATIN SMALL LETTER KRA +(cl-define-keysym #x03a2 "kappa") ;deprecated +(cl-define-keysym #x03a3 "Rcedilla") ;U+0156 LATIN CAPITAL LETTER R WITH CEDILLA +(cl-define-keysym #x03a5 "Itilde") ;U+0128 LATIN CAPITAL LETTER I WITH TILDE +(cl-define-keysym #x03a6 "Lcedilla") ;U+013B LATIN CAPITAL LETTER L WITH CEDILLA +(cl-define-keysym #x03aa "Emacron") ;U+0112 LATIN CAPITAL LETTER E WITH MACRON +(cl-define-keysym #x03ab "Gcedilla") ;U+0122 LATIN CAPITAL LETTER G WITH CEDILLA +(cl-define-keysym #x03ac "Tslash") ;U+0166 LATIN CAPITAL LETTER T WITH STROKE +(cl-define-keysym #x03b3 "rcedilla") ;U+0157 LATIN SMALL LETTER R WITH CEDILLA +(cl-define-keysym #x03b5 "itilde") ;U+0129 LATIN SMALL LETTER I WITH TILDE +(cl-define-keysym #x03b6 "lcedilla") ;U+013C LATIN SMALL LETTER L WITH CEDILLA +(cl-define-keysym #x03ba "emacron") ;U+0113 LATIN SMALL LETTER E WITH MACRON +(cl-define-keysym #x03bb "gcedilla") ;U+0123 LATIN SMALL LETTER G WITH CEDILLA +(cl-define-keysym #x03bc "tslash") ;U+0167 LATIN SMALL LETTER T WITH STROKE +(cl-define-keysym #x03bd "ENG") ;U+014A LATIN CAPITAL LETTER ENG +(cl-define-keysym #x03bf "eng") ;U+014B LATIN SMALL LETTER ENG +(cl-define-keysym #x03c0 "Amacron") ;U+0100 LATIN CAPITAL LETTER A WITH MACRON +(cl-define-keysym #x03c7 "Iogonek") ;U+012E LATIN CAPITAL LETTER I WITH OGONEK +(cl-define-keysym #x03cc "Eabovedot") ;U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE +(cl-define-keysym #x03cf "Imacron") ;U+012A LATIN CAPITAL LETTER I WITH MACRON +(cl-define-keysym #x03d1 "Ncedilla") ;U+0145 LATIN CAPITAL LETTER N WITH CEDILLA +(cl-define-keysym #x03d2 "Omacron") ;U+014C LATIN CAPITAL LETTER O WITH MACRON +(cl-define-keysym #x03d3 "Kcedilla") ;U+0136 LATIN CAPITAL LETTER K WITH CEDILLA +(cl-define-keysym #x03d9 "Uogonek") ;U+0172 LATIN CAPITAL LETTER U WITH OGONEK +(cl-define-keysym #x03dd "Utilde") ;U+0168 LATIN CAPITAL LETTER U WITH TILDE +(cl-define-keysym #x03de "Umacron") ;U+016A LATIN CAPITAL LETTER U WITH MACRON +(cl-define-keysym #x03e0 "amacron") ;U+0101 LATIN SMALL LETTER A WITH MACRON +(cl-define-keysym #x03e7 "iogonek") ;U+012F LATIN SMALL LETTER I WITH OGONEK +(cl-define-keysym #x03ec "eabovedot") ;U+0117 LATIN SMALL LETTER E WITH DOT ABOVE +(cl-define-keysym #x03ef "imacron") ;U+012B LATIN SMALL LETTER I WITH MACRON +(cl-define-keysym #x03f1 "ncedilla") ;U+0146 LATIN SMALL LETTER N WITH CEDILLA +(cl-define-keysym #x03f2 "omacron") ;U+014D LATIN SMALL LETTER O WITH MACRON +(cl-define-keysym #x03f3 "kcedilla") ;U+0137 LATIN SMALL LETTER K WITH CEDILLA +(cl-define-keysym #x03f9 "uogonek") ;U+0173 LATIN SMALL LETTER U WITH OGONEK +(cl-define-keysym #x03fd "utilde") ;U+0169 LATIN SMALL LETTER U WITH TILDE +(cl-define-keysym #x03fe "umacron") ;U+016B LATIN SMALL LETTER U WITH MACRON +(cl-define-keysym #x1001e02 "Babovedot") ;U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE +(cl-define-keysym #x1001e03 "babovedot") ;U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE +(cl-define-keysym #x1001e0a "Dabovedot") ;U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE +(cl-define-keysym #x1001e80 "Wgrave") ;U+1E80 LATIN CAPITAL LETTER W WITH GRAVE +(cl-define-keysym #x1001e82 "Wacute") ;U+1E82 LATIN CAPITAL LETTER W WITH ACUTE +(cl-define-keysym #x1001e0b "dabovedot") ;U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE +(cl-define-keysym #x1001ef2 "Ygrave") ;U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE +(cl-define-keysym #x1001e1e "Fabovedot") ;U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE +(cl-define-keysym #x1001e1f "fabovedot") ;U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE +(cl-define-keysym #x1001e40 "Mabovedot") ;U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE +(cl-define-keysym #x1001e41 "mabovedot") ;U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE +(cl-define-keysym #x1001e56 "Pabovedot") ;U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE +(cl-define-keysym #x1001e81 "wgrave") ;U+1E81 LATIN SMALL LETTER W WITH GRAVE +(cl-define-keysym #x1001e57 "pabovedot") ;U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE +(cl-define-keysym #x1001e83 "wacute") ;U+1E83 LATIN SMALL LETTER W WITH ACUTE +(cl-define-keysym #x1001e60 "Sabovedot") ;U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE +(cl-define-keysym #x1001ef3 "ygrave") ;U+1EF3 LATIN SMALL LETTER Y WITH GRAVE +(cl-define-keysym #x1001e84 "Wdiaeresis") ;U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS +(cl-define-keysym #x1001e85 "wdiaeresis") ;U+1E85 LATIN SMALL LETTER W WITH DIAERESIS +(cl-define-keysym #x1001e61 "sabovedot") ;U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE +(cl-define-keysym #x1000174 "Wcircumflex") ;U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX +(cl-define-keysym #x1001e6a "Tabovedot") ;U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE +(cl-define-keysym #x1000176 "Ycircumflex") ;U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +(cl-define-keysym #x1000175 "wcircumflex") ;U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX +(cl-define-keysym #x1001e6b "tabovedot") ;U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE +(cl-define-keysym #x1000177 "ycircumflex") ;U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX +(cl-define-keysym #x13bc "OE") ;U+0152 LATIN CAPITAL LIGATURE OE +(cl-define-keysym #x13bd "oe") ;U+0153 LATIN SMALL LIGATURE OE +(cl-define-keysym #x13be "Ydiaeresis") ;U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS +(cl-define-keysym #x047e "overline") ;U+203E OVERLINE +(cl-define-keysym #x04a1 "kana_fullstop") ;U+3002 IDEOGRAPHIC FULL STOP +(cl-define-keysym #x04a2 "kana_openingbracket") ;U+300C LEFT CORNER BRACKET +(cl-define-keysym #x04a3 "kana_closingbracket") ;U+300D RIGHT CORNER BRACKET +(cl-define-keysym #x04a4 "kana_comma") ;U+3001 IDEOGRAPHIC COMMA +(cl-define-keysym #x04a5 "kana_conjunctive") ;U+30FB KATAKANA MIDDLE DOT +(cl-define-keysym #x04a5 "kana_middledot") ;deprecated +(cl-define-keysym #x04a6 "kana_WO") ;U+30F2 KATAKANA LETTER WO +(cl-define-keysym #x04a7 "kana_a") ;U+30A1 KATAKANA LETTER SMALL A +(cl-define-keysym #x04a8 "kana_i") ;U+30A3 KATAKANA LETTER SMALL I +(cl-define-keysym #x04a9 "kana_u") ;U+30A5 KATAKANA LETTER SMALL U +(cl-define-keysym #x04aa "kana_e") ;U+30A7 KATAKANA LETTER SMALL E +(cl-define-keysym #x04ab "kana_o") ;U+30A9 KATAKANA LETTER SMALL O +(cl-define-keysym #x04ac "kana_ya") ;U+30E3 KATAKANA LETTER SMALL YA +(cl-define-keysym #x04ad "kana_yu") ;U+30E5 KATAKANA LETTER SMALL YU +(cl-define-keysym #x04ae "kana_yo") ;U+30E7 KATAKANA LETTER SMALL YO +(cl-define-keysym #x04af "kana_tsu") ;U+30C3 KATAKANA LETTER SMALL TU +(cl-define-keysym #x04af "kana_tu") ;deprecated +(cl-define-keysym #x04b0 "prolongedsound") ;U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK +(cl-define-keysym #x04b1 "kana_A") ;U+30A2 KATAKANA LETTER A +(cl-define-keysym #x04b2 "kana_I") ;U+30A4 KATAKANA LETTER I +(cl-define-keysym #x04b3 "kana_U") ;U+30A6 KATAKANA LETTER U +(cl-define-keysym #x04b4 "kana_E") ;U+30A8 KATAKANA LETTER E +(cl-define-keysym #x04b5 "kana_O") ;U+30AA KATAKANA LETTER O +(cl-define-keysym #x04b6 "kana_KA") ;U+30AB KATAKANA LETTER KA +(cl-define-keysym #x04b7 "kana_KI") ;U+30AD KATAKANA LETTER KI +(cl-define-keysym #x04b8 "kana_KU") ;U+30AF KATAKANA LETTER KU +(cl-define-keysym #x04b9 "kana_KE") ;U+30B1 KATAKANA LETTER KE +(cl-define-keysym #x04ba "kana_KO") ;U+30B3 KATAKANA LETTER KO +(cl-define-keysym #x04bb "kana_SA") ;U+30B5 KATAKANA LETTER SA +(cl-define-keysym #x04bc "kana_SHI") ;U+30B7 KATAKANA LETTER SI +(cl-define-keysym #x04bd "kana_SU") ;U+30B9 KATAKANA LETTER SU +(cl-define-keysym #x04be "kana_SE") ;U+30BB KATAKANA LETTER SE +(cl-define-keysym #x04bf "kana_SO") ;U+30BD KATAKANA LETTER SO +(cl-define-keysym #x04c0 "kana_TA") ;U+30BF KATAKANA LETTER TA +(cl-define-keysym #x04c1 "kana_CHI") ;U+30C1 KATAKANA LETTER TI +(cl-define-keysym #x04c1 "kana_TI") ;deprecated +(cl-define-keysym #x04c2 "kana_TSU") ;U+30C4 KATAKANA LETTER TU +(cl-define-keysym #x04c2 "kana_TU") ;deprecated +(cl-define-keysym #x04c3 "kana_TE") ;U+30C6 KATAKANA LETTER TE +(cl-define-keysym #x04c4 "kana_TO") ;U+30C8 KATAKANA LETTER TO +(cl-define-keysym #x04c5 "kana_NA") ;U+30CA KATAKANA LETTER NA +(cl-define-keysym #x04c6 "kana_NI") ;U+30CB KATAKANA LETTER NI +(cl-define-keysym #x04c7 "kana_NU") ;U+30CC KATAKANA LETTER NU +(cl-define-keysym #x04c8 "kana_NE") ;U+30CD KATAKANA LETTER NE +(cl-define-keysym #x04c9 "kana_NO") ;U+30CE KATAKANA LETTER NO +(cl-define-keysym #x04ca "kana_HA") ;U+30CF KATAKANA LETTER HA +(cl-define-keysym #x04cb "kana_HI") ;U+30D2 KATAKANA LETTER HI +(cl-define-keysym #x04cc "kana_FU") ;U+30D5 KATAKANA LETTER HU +(cl-define-keysym #x04cc "kana_HU") ;deprecated +(cl-define-keysym #x04cd "kana_HE") ;U+30D8 KATAKANA LETTER HE +(cl-define-keysym #x04ce "kana_HO") ;U+30DB KATAKANA LETTER HO +(cl-define-keysym #x04cf "kana_MA") ;U+30DE KATAKANA LETTER MA +(cl-define-keysym #x04d0 "kana_MI") ;U+30DF KATAKANA LETTER MI +(cl-define-keysym #x04d1 "kana_MU") ;U+30E0 KATAKANA LETTER MU +(cl-define-keysym #x04d2 "kana_ME") ;U+30E1 KATAKANA LETTER ME +(cl-define-keysym #x04d3 "kana_MO") ;U+30E2 KATAKANA LETTER MO +(cl-define-keysym #x04d4 "kana_YA") ;U+30E4 KATAKANA LETTER YA +(cl-define-keysym #x04d5 "kana_YU") ;U+30E6 KATAKANA LETTER YU +(cl-define-keysym #x04d6 "kana_YO") ;U+30E8 KATAKANA LETTER YO +(cl-define-keysym #x04d7 "kana_RA") ;U+30E9 KATAKANA LETTER RA +(cl-define-keysym #x04d8 "kana_RI") ;U+30EA KATAKANA LETTER RI +(cl-define-keysym #x04d9 "kana_RU") ;U+30EB KATAKANA LETTER RU +(cl-define-keysym #x04da "kana_RE") ;U+30EC KATAKANA LETTER RE +(cl-define-keysym #x04db "kana_RO") ;U+30ED KATAKANA LETTER RO +(cl-define-keysym #x04dc "kana_WA") ;U+30EF KATAKANA LETTER WA +(cl-define-keysym #x04dd "kana_N") ;U+30F3 KATAKANA LETTER N +(cl-define-keysym #x04de "voicedsound") ;U+309B KATAKANA-HIRAGANA VOICED SOUND MARK +(cl-define-keysym #x04df "semivoicedsound") ;U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +(cl-define-keysym #xff7e "kana_switch") ;Alias for mode_switch +(cl-define-keysym #x10006f0 "Farsi_0") ;U+06F0 EXTENDED ARABIC-INDIC DIGIT ZERO +(cl-define-keysym #x10006f1 "Farsi_1") ;U+06F1 EXTENDED ARABIC-INDIC DIGIT ONE +(cl-define-keysym #x10006f2 "Farsi_2") ;U+06F2 EXTENDED ARABIC-INDIC DIGIT TWO +(cl-define-keysym #x10006f3 "Farsi_3") ;U+06F3 EXTENDED ARABIC-INDIC DIGIT THREE +(cl-define-keysym #x10006f4 "Farsi_4") ;U+06F4 EXTENDED ARABIC-INDIC DIGIT FOUR +(cl-define-keysym #x10006f5 "Farsi_5") ;U+06F5 EXTENDED ARABIC-INDIC DIGIT FIVE +(cl-define-keysym #x10006f6 "Farsi_6") ;U+06F6 EXTENDED ARABIC-INDIC DIGIT SIX +(cl-define-keysym #x10006f7 "Farsi_7") ;U+06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN +(cl-define-keysym #x10006f8 "Farsi_8") ;U+06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT +(cl-define-keysym #x10006f9 "Farsi_9") ;U+06F9 EXTENDED ARABIC-INDIC DIGIT NINE +(cl-define-keysym #x100066a "Arabic_percent") ;U+066A ARABIC PERCENT SIGN +(cl-define-keysym #x1000670 "Arabic_superscript_alef") ;U+0670 ARABIC LETTER SUPERSCRIPT ALEF +(cl-define-keysym #x1000679 "Arabic_tteh") ;U+0679 ARABIC LETTER TTEH +(cl-define-keysym #x100067e "Arabic_peh") ;U+067E ARABIC LETTER PEH +(cl-define-keysym #x1000686 "Arabic_tcheh") ;U+0686 ARABIC LETTER TCHEH +(cl-define-keysym #x1000688 "Arabic_ddal") ;U+0688 ARABIC LETTER DDAL +(cl-define-keysym #x1000691 "Arabic_rreh") ;U+0691 ARABIC LETTER RREH +(cl-define-keysym #x05ac "Arabic_comma") ;U+060C ARABIC COMMA +(cl-define-keysym #x10006d4 "Arabic_fullstop") ;U+06D4 ARABIC FULL STOP +(cl-define-keysym #x1000660 "Arabic_0") ;U+0660 ARABIC-INDIC DIGIT ZERO +(cl-define-keysym #x1000661 "Arabic_1") ;U+0661 ARABIC-INDIC DIGIT ONE +(cl-define-keysym #x1000662 "Arabic_2") ;U+0662 ARABIC-INDIC DIGIT TWO +(cl-define-keysym #x1000663 "Arabic_3") ;U+0663 ARABIC-INDIC DIGIT THREE +(cl-define-keysym #x1000664 "Arabic_4") ;U+0664 ARABIC-INDIC DIGIT FOUR +(cl-define-keysym #x1000665 "Arabic_5") ;U+0665 ARABIC-INDIC DIGIT FIVE +(cl-define-keysym #x1000666 "Arabic_6") ;U+0666 ARABIC-INDIC DIGIT SIX +(cl-define-keysym #x1000667 "Arabic_7") ;U+0667 ARABIC-INDIC DIGIT SEVEN +(cl-define-keysym #x1000668 "Arabic_8") ;U+0668 ARABIC-INDIC DIGIT EIGHT +(cl-define-keysym #x1000669 "Arabic_9") ;U+0669 ARABIC-INDIC DIGIT NINE +(cl-define-keysym #x05bb "Arabic_semicolon") ;U+061B ARABIC SEMICOLON +(cl-define-keysym #x05bf "Arabic_question_mark") ;U+061F ARABIC QUESTION MARK +(cl-define-keysym #x05c1 "Arabic_hamza") ;U+0621 ARABIC LETTER HAMZA +(cl-define-keysym #x05c2 "Arabic_maddaonalef") ;U+0622 ARABIC LETTER ALEF WITH MADDA ABOVE +(cl-define-keysym #x05c3 "Arabic_hamzaonalef") ;U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE +(cl-define-keysym #x05c4 "Arabic_hamzaonwaw") ;U+0624 ARABIC LETTER WAW WITH HAMZA ABOVE +(cl-define-keysym #x05c5 "Arabic_hamzaunderalef") ;U+0625 ARABIC LETTER ALEF WITH HAMZA BELOW +(cl-define-keysym #x05c6 "Arabic_hamzaonyeh") ;U+0626 ARABIC LETTER YEH WITH HAMZA ABOVE +(cl-define-keysym #x05c7 "Arabic_alef") ;U+0627 ARABIC LETTER ALEF +(cl-define-keysym #x05c8 "Arabic_beh") ;U+0628 ARABIC LETTER BEH +(cl-define-keysym #x05c9 "Arabic_tehmarbuta") ;U+0629 ARABIC LETTER TEH MARBUTA +(cl-define-keysym #x05ca "Arabic_teh") ;U+062A ARABIC LETTER TEH +(cl-define-keysym #x05cb "Arabic_theh") ;U+062B ARABIC LETTER THEH +(cl-define-keysym #x05cc "Arabic_jeem") ;U+062C ARABIC LETTER JEEM +(cl-define-keysym #x05cd "Arabic_hah") ;U+062D ARABIC LETTER HAH +(cl-define-keysym #x05ce "Arabic_khah") ;U+062E ARABIC LETTER KHAH +(cl-define-keysym #x05cf "Arabic_dal") ;U+062F ARABIC LETTER DAL +(cl-define-keysym #x05d0 "Arabic_thal") ;U+0630 ARABIC LETTER THAL +(cl-define-keysym #x05d1 "Arabic_ra") ;U+0631 ARABIC LETTER REH +(cl-define-keysym #x05d2 "Arabic_zain") ;U+0632 ARABIC LETTER ZAIN +(cl-define-keysym #x05d3 "Arabic_seen") ;U+0633 ARABIC LETTER SEEN +(cl-define-keysym #x05d4 "Arabic_sheen") ;U+0634 ARABIC LETTER SHEEN +(cl-define-keysym #x05d5 "Arabic_sad") ;U+0635 ARABIC LETTER SAD +(cl-define-keysym #x05d6 "Arabic_dad") ;U+0636 ARABIC LETTER DAD +(cl-define-keysym #x05d7 "Arabic_tah") ;U+0637 ARABIC LETTER TAH +(cl-define-keysym #x05d8 "Arabic_zah") ;U+0638 ARABIC LETTER ZAH +(cl-define-keysym #x05d9 "Arabic_ain") ;U+0639 ARABIC LETTER AIN +(cl-define-keysym #x05da "Arabic_ghain") ;U+063A ARABIC LETTER GHAIN +(cl-define-keysym #x05e0 "Arabic_tatweel") ;U+0640 ARABIC TATWEEL +(cl-define-keysym #x05e1 "Arabic_feh") ;U+0641 ARABIC LETTER FEH +(cl-define-keysym #x05e2 "Arabic_qaf") ;U+0642 ARABIC LETTER QAF +(cl-define-keysym #x05e3 "Arabic_kaf") ;U+0643 ARABIC LETTER KAF +(cl-define-keysym #x05e4 "Arabic_lam") ;U+0644 ARABIC LETTER LAM +(cl-define-keysym #x05e5 "Arabic_meem") ;U+0645 ARABIC LETTER MEEM +(cl-define-keysym #x05e6 "Arabic_noon") ;U+0646 ARABIC LETTER NOON +(cl-define-keysym #x05e7 "Arabic_ha") ;U+0647 ARABIC LETTER HEH +(cl-define-keysym #x05e7 "Arabic_heh") ;deprecated +(cl-define-keysym #x05e8 "Arabic_waw") ;U+0648 ARABIC LETTER WAW +(cl-define-keysym #x05e9 "Arabic_alefmaksura") ;U+0649 ARABIC LETTER ALEF MAKSURA +(cl-define-keysym #x05ea "Arabic_yeh") ;U+064A ARABIC LETTER YEH +(cl-define-keysym #x05eb "Arabic_fathatan") ;U+064B ARABIC FATHATAN +(cl-define-keysym #x05ec "Arabic_dammatan") ;U+064C ARABIC DAMMATAN +(cl-define-keysym #x05ed "Arabic_kasratan") ;U+064D ARABIC KASRATAN +(cl-define-keysym #x05ee "Arabic_fatha") ;U+064E ARABIC FATHA +(cl-define-keysym #x05ef "Arabic_damma") ;U+064F ARABIC DAMMA +(cl-define-keysym #x05f0 "Arabic_kasra") ;U+0650 ARABIC KASRA +(cl-define-keysym #x05f1 "Arabic_shadda") ;U+0651 ARABIC SHADDA +(cl-define-keysym #x05f2 "Arabic_sukun") ;U+0652 ARABIC SUKUN +(cl-define-keysym #x1000653 "Arabic_madda_above") ;U+0653 ARABIC MADDAH ABOVE +(cl-define-keysym #x1000654 "Arabic_hamza_above") ;U+0654 ARABIC HAMZA ABOVE +(cl-define-keysym #x1000655 "Arabic_hamza_below") ;U+0655 ARABIC HAMZA BELOW +(cl-define-keysym #x1000698 "Arabic_jeh") ;U+0698 ARABIC LETTER JEH +(cl-define-keysym #x10006a4 "Arabic_veh") ;U+06A4 ARABIC LETTER VEH +(cl-define-keysym #x10006a9 "Arabic_keheh") ;U+06A9 ARABIC LETTER KEHEH +(cl-define-keysym #x10006af "Arabic_gaf") ;U+06AF ARABIC LETTER GAF +(cl-define-keysym #x10006ba "Arabic_noon_ghunna") ;U+06BA ARABIC LETTER NOON GHUNNA +(cl-define-keysym #x10006be "Arabic_heh_doachashmee") ;U+06BE ARABIC LETTER HEH DOACHASHMEE +(cl-define-keysym #x10006cc "Farsi_yeh") ;U+06CC ARABIC LETTER FARSI YEH +(cl-define-keysym #x10006cc "Arabic_farsi_yeh") ;U+06CC ARABIC LETTER FARSI YEH +(cl-define-keysym #x10006d2 "Arabic_yeh_baree") ;U+06D2 ARABIC LETTER YEH BARREE +(cl-define-keysym #x10006c1 "Arabic_heh_goal") ;U+06C1 ARABIC LETTER HEH GOAL +(cl-define-keysym #xff7e "Arabic_switch") ;Alias for mode_switch +(cl-define-keysym #x1000492 "Cyrillic_GHE_bar") ;U+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE +(cl-define-keysym #x1000493 "Cyrillic_ghe_bar") ;U+0493 CYRILLIC SMALL LETTER GHE WITH STROKE +(cl-define-keysym #x1000496 "Cyrillic_ZHE_descender") ;U+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER +(cl-define-keysym #x1000497 "Cyrillic_zhe_descender") ;U+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER +(cl-define-keysym #x100049a "Cyrillic_KA_descender") ;U+049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER +(cl-define-keysym #x100049b "Cyrillic_ka_descender") ;U+049B CYRILLIC SMALL LETTER KA WITH DESCENDER +(cl-define-keysym #x100049c "Cyrillic_KA_vertstroke") ;U+049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE +(cl-define-keysym #x100049d "Cyrillic_ka_vertstroke") ;U+049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE +(cl-define-keysym #x10004a2 "Cyrillic_EN_descender") ;U+04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER +(cl-define-keysym #x10004a3 "Cyrillic_en_descender") ;U+04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER +(cl-define-keysym #x10004ae "Cyrillic_U_straight") ;U+04AE CYRILLIC CAPITAL LETTER STRAIGHT U +(cl-define-keysym #x10004af "Cyrillic_u_straight") ;U+04AF CYRILLIC SMALL LETTER STRAIGHT U +(cl-define-keysym #x10004b0 "Cyrillic_U_straight_bar") ;U+04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE +(cl-define-keysym #x10004b1 "Cyrillic_u_straight_bar") ;U+04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE +(cl-define-keysym #x10004b2 "Cyrillic_HA_descender") ;U+04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER +(cl-define-keysym #x10004b3 "Cyrillic_ha_descender") ;U+04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER +(cl-define-keysym #x10004b6 "Cyrillic_CHE_descender") ;U+04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER +(cl-define-keysym #x10004b7 "Cyrillic_che_descender") ;U+04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER +(cl-define-keysym #x10004b8 "Cyrillic_CHE_vertstroke") ;U+04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE +(cl-define-keysym #x10004b9 "Cyrillic_che_vertstroke") ;U+04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE +(cl-define-keysym #x10004ba "Cyrillic_SHHA") ;U+04BA CYRILLIC CAPITAL LETTER SHHA +(cl-define-keysym #x10004bb "Cyrillic_shha") ;U+04BB CYRILLIC SMALL LETTER SHHA +(cl-define-keysym #x10004d8 "Cyrillic_SCHWA") ;U+04D8 CYRILLIC CAPITAL LETTER SCHWA +(cl-define-keysym #x10004d9 "Cyrillic_schwa") ;U+04D9 CYRILLIC SMALL LETTER SCHWA +(cl-define-keysym #x10004e2 "Cyrillic_I_macron") ;U+04E2 CYRILLIC CAPITAL LETTER I WITH MACRON +(cl-define-keysym #x10004e3 "Cyrillic_i_macron") ;U+04E3 CYRILLIC SMALL LETTER I WITH MACRON +(cl-define-keysym #x10004e8 "Cyrillic_O_bar") ;U+04E8 CYRILLIC CAPITAL LETTER BARRED O +(cl-define-keysym #x10004e9 "Cyrillic_o_bar") ;U+04E9 CYRILLIC SMALL LETTER BARRED O +(cl-define-keysym #x10004ee "Cyrillic_U_macron") ;U+04EE CYRILLIC CAPITAL LETTER U WITH MACRON +(cl-define-keysym #x10004ef "Cyrillic_u_macron") ;U+04EF CYRILLIC SMALL LETTER U WITH MACRON +(cl-define-keysym #x06a1 "Serbian_dje") ;U+0452 CYRILLIC SMALL LETTER DJE +(cl-define-keysym #x06a2 "Macedonia_gje") ;U+0453 CYRILLIC SMALL LETTER GJE +(cl-define-keysym #x06a3 "Cyrillic_io") ;U+0451 CYRILLIC SMALL LETTER IO +(cl-define-keysym #x06a4 "Ukrainian_ie") ;U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE +(cl-define-keysym #x06a4 "Ukranian_je") ;deprecated +(cl-define-keysym #x06a5 "Macedonia_dse") ;U+0455 CYRILLIC SMALL LETTER DZE +(cl-define-keysym #x06a6 "Ukrainian_i") ;U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +(cl-define-keysym #x06a6 "Ukranian_i") ;deprecated +(cl-define-keysym #x06a7 "Ukrainian_yi") ;U+0457 CYRILLIC SMALL LETTER YI +(cl-define-keysym #x06a7 "Ukranian_yi") ;deprecated +(cl-define-keysym #x06a8 "Cyrillic_je") ;U+0458 CYRILLIC SMALL LETTER JE +(cl-define-keysym #x06a8 "Serbian_je") ;deprecated +(cl-define-keysym #x06a9 "Cyrillic_lje") ;U+0459 CYRILLIC SMALL LETTER LJE +(cl-define-keysym #x06a9 "Serbian_lje") ;deprecated +(cl-define-keysym #x06aa "Cyrillic_nje") ;U+045A CYRILLIC SMALL LETTER NJE +(cl-define-keysym #x06aa "Serbian_nje") ;deprecated +(cl-define-keysym #x06ab "Serbian_tshe") ;U+045B CYRILLIC SMALL LETTER TSHE +(cl-define-keysym #x06ac "Macedonia_kje") ;U+045C CYRILLIC SMALL LETTER KJE +(cl-define-keysym #x06ad "Ukrainian_ghe_with_upturn") ;U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN +(cl-define-keysym #x06ae "Byelorussian_shortu") ;U+045E CYRILLIC SMALL LETTER SHORT U +(cl-define-keysym #x06af "Cyrillic_dzhe") ;U+045F CYRILLIC SMALL LETTER DZHE +(cl-define-keysym #x06af "Serbian_dze") ;deprecated +(cl-define-keysym #x06b0 "numerosign") ;U+2116 NUMERO SIGN +(cl-define-keysym #x06b1 "Serbian_DJE") ;U+0402 CYRILLIC CAPITAL LETTER DJE +(cl-define-keysym #x06b2 "Macedonia_GJE") ;U+0403 CYRILLIC CAPITAL LETTER GJE +(cl-define-keysym #x06b3 "Cyrillic_IO") ;U+0401 CYRILLIC CAPITAL LETTER IO +(cl-define-keysym #x06b4 "Ukrainian_IE") ;U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE +(cl-define-keysym #x06b4 "Ukranian_JE") ;deprecated +(cl-define-keysym #x06b5 "Macedonia_DSE") ;U+0405 CYRILLIC CAPITAL LETTER DZE +(cl-define-keysym #x06b6 "Ukrainian_I") ;U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +(cl-define-keysym #x06b6 "Ukranian_I") ;deprecated +(cl-define-keysym #x06b7 "Ukrainian_YI") ;U+0407 CYRILLIC CAPITAL LETTER YI +(cl-define-keysym #x06b7 "Ukranian_YI") ;deprecated +(cl-define-keysym #x06b8 "Cyrillic_JE") ;U+0408 CYRILLIC CAPITAL LETTER JE +(cl-define-keysym #x06b8 "Serbian_JE") ;deprecated +(cl-define-keysym #x06b9 "Cyrillic_LJE") ;U+0409 CYRILLIC CAPITAL LETTER LJE +(cl-define-keysym #x06b9 "Serbian_LJE") ;deprecated +(cl-define-keysym #x06ba "Cyrillic_NJE") ;U+040A CYRILLIC CAPITAL LETTER NJE +(cl-define-keysym #x06ba "Serbian_NJE") ;deprecated +(cl-define-keysym #x06bb "Serbian_TSHE") ;U+040B CYRILLIC CAPITAL LETTER TSHE +(cl-define-keysym #x06bc "Macedonia_KJE") ;U+040C CYRILLIC CAPITAL LETTER KJE +(cl-define-keysym #x06bd "Ukrainian_GHE_WITH_UPTURN") ;U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN +(cl-define-keysym #x06be "Byelorussian_SHORTU") ;U+040E CYRILLIC CAPITAL LETTER SHORT U +(cl-define-keysym #x06bf "Cyrillic_DZHE") ;U+040F CYRILLIC CAPITAL LETTER DZHE +(cl-define-keysym #x06bf "Serbian_DZE") ;deprecated +(cl-define-keysym #x06c0 "Cyrillic_yu") ;U+044E CYRILLIC SMALL LETTER YU +(cl-define-keysym #x06c1 "Cyrillic_a") ;U+0430 CYRILLIC SMALL LETTER A +(cl-define-keysym #x06c2 "Cyrillic_be") ;U+0431 CYRILLIC SMALL LETTER BE +(cl-define-keysym #x06c3 "Cyrillic_tse") ;U+0446 CYRILLIC SMALL LETTER TSE +(cl-define-keysym #x06c4 "Cyrillic_de") ;U+0434 CYRILLIC SMALL LETTER DE +(cl-define-keysym #x06c5 "Cyrillic_ie") ;U+0435 CYRILLIC SMALL LETTER IE +(cl-define-keysym #x06c6 "Cyrillic_ef") ;U+0444 CYRILLIC SMALL LETTER EF +(cl-define-keysym #x06c7 "Cyrillic_ghe") ;U+0433 CYRILLIC SMALL LETTER GHE +(cl-define-keysym #x06c8 "Cyrillic_ha") ;U+0445 CYRILLIC SMALL LETTER HA +(cl-define-keysym #x06c9 "Cyrillic_i") ;U+0438 CYRILLIC SMALL LETTER I +(cl-define-keysym #x06ca "Cyrillic_shorti") ;U+0439 CYRILLIC SMALL LETTER SHORT I +(cl-define-keysym #x06cb "Cyrillic_ka") ;U+043A CYRILLIC SMALL LETTER KA +(cl-define-keysym #x06cc "Cyrillic_el") ;U+043B CYRILLIC SMALL LETTER EL +(cl-define-keysym #x06cd "Cyrillic_em") ;U+043C CYRILLIC SMALL LETTER EM +(cl-define-keysym #x06ce "Cyrillic_en") ;U+043D CYRILLIC SMALL LETTER EN +(cl-define-keysym #x06cf "Cyrillic_o") ;U+043E CYRILLIC SMALL LETTER O +(cl-define-keysym #x06d0 "Cyrillic_pe") ;U+043F CYRILLIC SMALL LETTER PE +(cl-define-keysym #x06d1 "Cyrillic_ya") ;U+044F CYRILLIC SMALL LETTER YA +(cl-define-keysym #x06d2 "Cyrillic_er") ;U+0440 CYRILLIC SMALL LETTER ER +(cl-define-keysym #x06d3 "Cyrillic_es") ;U+0441 CYRILLIC SMALL LETTER ES +(cl-define-keysym #x06d4 "Cyrillic_te") ;U+0442 CYRILLIC SMALL LETTER TE +(cl-define-keysym #x06d5 "Cyrillic_u") ;U+0443 CYRILLIC SMALL LETTER U +(cl-define-keysym #x06d6 "Cyrillic_zhe") ;U+0436 CYRILLIC SMALL LETTER ZHE +(cl-define-keysym #x06d7 "Cyrillic_ve") ;U+0432 CYRILLIC SMALL LETTER VE +(cl-define-keysym #x06d8 "Cyrillic_softsign") ;U+044C CYRILLIC SMALL LETTER SOFT SIGN +(cl-define-keysym #x06d9 "Cyrillic_yeru") ;U+044B CYRILLIC SMALL LETTER YERU +(cl-define-keysym #x06da "Cyrillic_ze") ;U+0437 CYRILLIC SMALL LETTER ZE +(cl-define-keysym #x06db "Cyrillic_sha") ;U+0448 CYRILLIC SMALL LETTER SHA +(cl-define-keysym #x06dc "Cyrillic_e") ;U+044D CYRILLIC SMALL LETTER E +(cl-define-keysym #x06dd "Cyrillic_shcha") ;U+0449 CYRILLIC SMALL LETTER SHCHA +(cl-define-keysym #x06de "Cyrillic_che") ;U+0447 CYRILLIC SMALL LETTER CHE +(cl-define-keysym #x06df "Cyrillic_hardsign") ;U+044A CYRILLIC SMALL LETTER HARD SIGN +(cl-define-keysym #x06e0 "Cyrillic_YU") ;U+042E CYRILLIC CAPITAL LETTER YU +(cl-define-keysym #x06e1 "Cyrillic_A") ;U+0410 CYRILLIC CAPITAL LETTER A +(cl-define-keysym #x06e2 "Cyrillic_BE") ;U+0411 CYRILLIC CAPITAL LETTER BE +(cl-define-keysym #x06e3 "Cyrillic_TSE") ;U+0426 CYRILLIC CAPITAL LETTER TSE +(cl-define-keysym #x06e4 "Cyrillic_DE") ;U+0414 CYRILLIC CAPITAL LETTER DE +(cl-define-keysym #x06e5 "Cyrillic_IE") ;U+0415 CYRILLIC CAPITAL LETTER IE +(cl-define-keysym #x06e6 "Cyrillic_EF") ;U+0424 CYRILLIC CAPITAL LETTER EF +(cl-define-keysym #x06e7 "Cyrillic_GHE") ;U+0413 CYRILLIC CAPITAL LETTER GHE +(cl-define-keysym #x06e8 "Cyrillic_HA") ;U+0425 CYRILLIC CAPITAL LETTER HA +(cl-define-keysym #x06e9 "Cyrillic_I") ;U+0418 CYRILLIC CAPITAL LETTER I +(cl-define-keysym #x06ea "Cyrillic_SHORTI") ;U+0419 CYRILLIC CAPITAL LETTER SHORT I +(cl-define-keysym #x06eb "Cyrillic_KA") ;U+041A CYRILLIC CAPITAL LETTER KA +(cl-define-keysym #x06ec "Cyrillic_EL") ;U+041B CYRILLIC CAPITAL LETTER EL +(cl-define-keysym #x06ed "Cyrillic_EM") ;U+041C CYRILLIC CAPITAL LETTER EM +(cl-define-keysym #x06ee "Cyrillic_EN") ;U+041D CYRILLIC CAPITAL LETTER EN +(cl-define-keysym #x06ef "Cyrillic_O") ;U+041E CYRILLIC CAPITAL LETTER O +(cl-define-keysym #x06f0 "Cyrillic_PE") ;U+041F CYRILLIC CAPITAL LETTER PE +(cl-define-keysym #x06f1 "Cyrillic_YA") ;U+042F CYRILLIC CAPITAL LETTER YA +(cl-define-keysym #x06f2 "Cyrillic_ER") ;U+0420 CYRILLIC CAPITAL LETTER ER +(cl-define-keysym #x06f3 "Cyrillic_ES") ;U+0421 CYRILLIC CAPITAL LETTER ES +(cl-define-keysym #x06f4 "Cyrillic_TE") ;U+0422 CYRILLIC CAPITAL LETTER TE +(cl-define-keysym #x06f5 "Cyrillic_U") ;U+0423 CYRILLIC CAPITAL LETTER U +(cl-define-keysym #x06f6 "Cyrillic_ZHE") ;U+0416 CYRILLIC CAPITAL LETTER ZHE +(cl-define-keysym #x06f7 "Cyrillic_VE") ;U+0412 CYRILLIC CAPITAL LETTER VE +(cl-define-keysym #x06f8 "Cyrillic_SOFTSIGN") ;U+042C CYRILLIC CAPITAL LETTER SOFT SIGN +(cl-define-keysym #x06f9 "Cyrillic_YERU") ;U+042B CYRILLIC CAPITAL LETTER YERU +(cl-define-keysym #x06fa "Cyrillic_ZE") ;U+0417 CYRILLIC CAPITAL LETTER ZE +(cl-define-keysym #x06fb "Cyrillic_SHA") ;U+0428 CYRILLIC CAPITAL LETTER SHA +(cl-define-keysym #x06fc "Cyrillic_E") ;U+042D CYRILLIC CAPITAL LETTER E +(cl-define-keysym #x06fd "Cyrillic_SHCHA") ;U+0429 CYRILLIC CAPITAL LETTER SHCHA +(cl-define-keysym #x06fe "Cyrillic_CHE") ;U+0427 CYRILLIC CAPITAL LETTER CHE +(cl-define-keysym #x06ff "Cyrillic_HARDSIGN") ;U+042A CYRILLIC CAPITAL LETTER HARD SIGN +(cl-define-keysym #x07a1 "Greek_ALPHAaccent") ;U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS +(cl-define-keysym #x07a2 "Greek_EPSILONaccent") ;U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS +(cl-define-keysym #x07a3 "Greek_ETAaccent") ;U+0389 GREEK CAPITAL LETTER ETA WITH TONOS +(cl-define-keysym #x07a4 "Greek_IOTAaccent") ;U+038A GREEK CAPITAL LETTER IOTA WITH TONOS +(cl-define-keysym #x07a5 "Greek_IOTAdieresis") ;U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA +(cl-define-keysym #x07a5 "Greek_IOTAdiaeresis") ;old typo +(cl-define-keysym #x07a7 "Greek_OMICRONaccent") ;U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS +(cl-define-keysym #x07a8 "Greek_UPSILONaccent") ;U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS +(cl-define-keysym #x07a9 "Greek_UPSILONdieresis") ;U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA +(cl-define-keysym #x07ab "Greek_OMEGAaccent") ;U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS +(cl-define-keysym #x07ae "Greek_accentdieresis") ;U+0385 GREEK DIALYTIKA TONOS +(cl-define-keysym #x07af "Greek_horizbar") ;U+2015 HORIZONTAL BAR +(cl-define-keysym #x07b1 "Greek_alphaaccent") ;U+03AC GREEK SMALL LETTER ALPHA WITH TONOS +(cl-define-keysym #x07b2 "Greek_epsilonaccent") ;U+03AD GREEK SMALL LETTER EPSILON WITH TONOS +(cl-define-keysym #x07b3 "Greek_etaaccent") ;U+03AE GREEK SMALL LETTER ETA WITH TONOS +(cl-define-keysym #x07b4 "Greek_iotaaccent") ;U+03AF GREEK SMALL LETTER IOTA WITH TONOS +(cl-define-keysym #x07b5 "Greek_iotadieresis") ;U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA +(cl-define-keysym #x07b6 "Greek_iotaaccentdieresis") ;U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +(cl-define-keysym #x07b7 "Greek_omicronaccent") ;U+03CC GREEK SMALL LETTER OMICRON WITH TONOS +(cl-define-keysym #x07b8 "Greek_upsilonaccent") ;U+03CD GREEK SMALL LETTER UPSILON WITH TONOS +(cl-define-keysym #x07b9 "Greek_upsilondieresis") ;U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA +(cl-define-keysym #x07ba "Greek_upsilonaccentdieresis") ;U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +(cl-define-keysym #x07bb "Greek_omegaaccent") ;U+03CE GREEK SMALL LETTER OMEGA WITH TONOS +(cl-define-keysym #x07c1 "Greek_ALPHA") ;U+0391 GREEK CAPITAL LETTER ALPHA +(cl-define-keysym #x07c2 "Greek_BETA") ;U+0392 GREEK CAPITAL LETTER BETA +(cl-define-keysym #x07c3 "Greek_GAMMA") ;U+0393 GREEK CAPITAL LETTER GAMMA +(cl-define-keysym #x07c4 "Greek_DELTA") ;U+0394 GREEK CAPITAL LETTER DELTA +(cl-define-keysym #x07c5 "Greek_EPSILON") ;U+0395 GREEK CAPITAL LETTER EPSILON +(cl-define-keysym #x07c6 "Greek_ZETA") ;U+0396 GREEK CAPITAL LETTER ZETA +(cl-define-keysym #x07c7 "Greek_ETA") ;U+0397 GREEK CAPITAL LETTER ETA +(cl-define-keysym #x07c8 "Greek_THETA") ;U+0398 GREEK CAPITAL LETTER THETA +(cl-define-keysym #x07c9 "Greek_IOTA") ;U+0399 GREEK CAPITAL LETTER IOTA +(cl-define-keysym #x07ca "Greek_KAPPA") ;U+039A GREEK CAPITAL LETTER KAPPA +(cl-define-keysym #x07cb "Greek_LAMDA") ;U+039B GREEK CAPITAL LETTER LAMDA +(cl-define-keysym #x07cb "Greek_LAMBDA") ;U+039B GREEK CAPITAL LETTER LAMDA +(cl-define-keysym #x07cc "Greek_MU") ;U+039C GREEK CAPITAL LETTER MU +(cl-define-keysym #x07cd "Greek_NU") ;U+039D GREEK CAPITAL LETTER NU +(cl-define-keysym #x07ce "Greek_XI") ;U+039E GREEK CAPITAL LETTER XI +(cl-define-keysym #x07cf "Greek_OMICRON") ;U+039F GREEK CAPITAL LETTER OMICRON +(cl-define-keysym #x07d0 "Greek_PI") ;U+03A0 GREEK CAPITAL LETTER PI +(cl-define-keysym #x07d1 "Greek_RHO") ;U+03A1 GREEK CAPITAL LETTER RHO +(cl-define-keysym #x07d2 "Greek_SIGMA") ;U+03A3 GREEK CAPITAL LETTER SIGMA +(cl-define-keysym #x07d4 "Greek_TAU") ;U+03A4 GREEK CAPITAL LETTER TAU +(cl-define-keysym #x07d5 "Greek_UPSILON") ;U+03A5 GREEK CAPITAL LETTER UPSILON +(cl-define-keysym #x07d6 "Greek_PHI") ;U+03A6 GREEK CAPITAL LETTER PHI +(cl-define-keysym #x07d7 "Greek_CHI") ;U+03A7 GREEK CAPITAL LETTER CHI +(cl-define-keysym #x07d8 "Greek_PSI") ;U+03A8 GREEK CAPITAL LETTER PSI +(cl-define-keysym #x07d9 "Greek_OMEGA") ;U+03A9 GREEK CAPITAL LETTER OMEGA +(cl-define-keysym #x07e1 "Greek_alpha") ;U+03B1 GREEK SMALL LETTER ALPHA +(cl-define-keysym #x07e2 "Greek_beta") ;U+03B2 GREEK SMALL LETTER BETA +(cl-define-keysym #x07e3 "Greek_gamma") ;U+03B3 GREEK SMALL LETTER GAMMA +(cl-define-keysym #x07e4 "Greek_delta") ;U+03B4 GREEK SMALL LETTER DELTA +(cl-define-keysym #x07e5 "Greek_epsilon") ;U+03B5 GREEK SMALL LETTER EPSILON +(cl-define-keysym #x07e6 "Greek_zeta") ;U+03B6 GREEK SMALL LETTER ZETA +(cl-define-keysym #x07e7 "Greek_eta") ;U+03B7 GREEK SMALL LETTER ETA +(cl-define-keysym #x07e8 "Greek_theta") ;U+03B8 GREEK SMALL LETTER THETA +(cl-define-keysym #x07e9 "Greek_iota") ;U+03B9 GREEK SMALL LETTER IOTA +(cl-define-keysym #x07ea "Greek_kappa") ;U+03BA GREEK SMALL LETTER KAPPA +(cl-define-keysym #x07eb "Greek_lamda") ;U+03BB GREEK SMALL LETTER LAMDA +(cl-define-keysym #x07eb "Greek_lambda") ;U+03BB GREEK SMALL LETTER LAMDA +(cl-define-keysym #x07ec "Greek_mu") ;U+03BC GREEK SMALL LETTER MU +(cl-define-keysym #x07ed "Greek_nu") ;U+03BD GREEK SMALL LETTER NU +(cl-define-keysym #x07ee "Greek_xi") ;U+03BE GREEK SMALL LETTER XI +(cl-define-keysym #x07ef "Greek_omicron") ;U+03BF GREEK SMALL LETTER OMICRON +(cl-define-keysym #x07f0 "Greek_pi") ;U+03C0 GREEK SMALL LETTER PI +(cl-define-keysym #x07f1 "Greek_rho") ;U+03C1 GREEK SMALL LETTER RHO +(cl-define-keysym #x07f2 "Greek_sigma") ;U+03C3 GREEK SMALL LETTER SIGMA +(cl-define-keysym #x07f3 "Greek_finalsmallsigma") ;U+03C2 GREEK SMALL LETTER FINAL SIGMA +(cl-define-keysym #x07f4 "Greek_tau") ;U+03C4 GREEK SMALL LETTER TAU +(cl-define-keysym #x07f5 "Greek_upsilon") ;U+03C5 GREEK SMALL LETTER UPSILON +(cl-define-keysym #x07f6 "Greek_phi") ;U+03C6 GREEK SMALL LETTER PHI +(cl-define-keysym #x07f7 "Greek_chi") ;U+03C7 GREEK SMALL LETTER CHI +(cl-define-keysym #x07f8 "Greek_psi") ;U+03C8 GREEK SMALL LETTER PSI +(cl-define-keysym #x07f9 "Greek_omega") ;U+03C9 GREEK SMALL LETTER OMEGA +(cl-define-keysym #xff7e "Greek_switch") ;Alias for mode_switch +(cl-define-keysym #x08a1 "leftradical") ;U+23B7 RADICAL SYMBOL BOTTOM +(cl-define-keysym #x08a2 "topleftradical") ;(U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT) +(cl-define-keysym #x08a3 "horizconnector") ;(U+2500 BOX DRAWINGS LIGHT HORIZONTAL) +(cl-define-keysym #x08a4 "topintegral") ;U+2320 TOP HALF INTEGRAL +(cl-define-keysym #x08a5 "botintegral") ;U+2321 BOTTOM HALF INTEGRAL +(cl-define-keysym #x08a6 "vertconnector") ;(U+2502 BOX DRAWINGS LIGHT VERTICAL) +(cl-define-keysym #x08a7 "topleftsqbracket") ;U+23A1 LEFT SQUARE BRACKET UPPER CORNER +(cl-define-keysym #x08a8 "botleftsqbracket") ;U+23A3 LEFT SQUARE BRACKET LOWER CORNER +(cl-define-keysym #x08a9 "toprightsqbracket") ;U+23A4 RIGHT SQUARE BRACKET UPPER CORNER +(cl-define-keysym #x08aa "botrightsqbracket") ;U+23A6 RIGHT SQUARE BRACKET LOWER CORNER +(cl-define-keysym #x08ab "topleftparens") ;U+239B LEFT PARENTHESIS UPPER HOOK +(cl-define-keysym #x08ac "botleftparens") ;U+239D LEFT PARENTHESIS LOWER HOOK +(cl-define-keysym #x08ad "toprightparens") ;U+239E RIGHT PARENTHESIS UPPER HOOK +(cl-define-keysym #x08ae "botrightparens") ;U+23A0 RIGHT PARENTHESIS LOWER HOOK +(cl-define-keysym #x08af "leftmiddlecurlybrace") ;U+23A8 LEFT CURLY BRACKET MIDDLE PIECE +(cl-define-keysym #x08b0 "rightmiddlecurlybrace") ;U+23AC RIGHT CURLY BRACKET MIDDLE PIECE +(cl-define-keysym #x08b1 "topleftsummation") +(cl-define-keysym #x08b2 "botleftsummation") +(cl-define-keysym #x08b3 "topvertsummationconnector") +(cl-define-keysym #x08b4 "botvertsummationconnector") +(cl-define-keysym #x08b5 "toprightsummation") +(cl-define-keysym #x08b6 "botrightsummation") +(cl-define-keysym #x08b7 "rightmiddlesummation") +(cl-define-keysym #x08bc "lessthanequal") ;U+2264 LESS-THAN OR EQUAL TO +(cl-define-keysym #x08bd "notequal") ;U+2260 NOT EQUAL TO +(cl-define-keysym #x08be "greaterthanequal") ;U+2265 GREATER-THAN OR EQUAL TO +(cl-define-keysym #x08bf "integral") ;U+222B INTEGRAL +(cl-define-keysym #x08c0 "therefore") ;U+2234 THEREFORE +(cl-define-keysym #x08c1 "variation") ;U+221D PROPORTIONAL TO +(cl-define-keysym #x08c2 "infinity") ;U+221E INFINITY +(cl-define-keysym #x08c5 "nabla") ;U+2207 NABLA +(cl-define-keysym #x08c8 "approximate") ;U+223C TILDE OPERATOR +(cl-define-keysym #x08c9 "similarequal") ;U+2243 ASYMPTOTICALLY EQUAL TO +(cl-define-keysym #x08cd "ifonlyif") ;U+21D4 LEFT RIGHT DOUBLE ARROW +(cl-define-keysym #x08ce "implies") ;U+21D2 RIGHTWARDS DOUBLE ARROW +(cl-define-keysym #x08cf "identical") ;U+2261 IDENTICAL TO +(cl-define-keysym #x08d6 "radical") ;U+221A SQUARE ROOT +(cl-define-keysym #x08da "includedin") ;U+2282 SUBSET OF +(cl-define-keysym #x08db "includes") ;U+2283 SUPERSET OF +(cl-define-keysym #x08dc "intersection") ;U+2229 INTERSECTION +(cl-define-keysym #x08dd "union") ;U+222A UNION +(cl-define-keysym #x08de "logicaland") ;U+2227 LOGICAL AND +(cl-define-keysym #x08df "logicalor") ;U+2228 LOGICAL OR +(cl-define-keysym #x08ef "partialderivative") ;U+2202 PARTIAL DIFFERENTIAL +(cl-define-keysym #x08f6 "function") ;U+0192 LATIN SMALL LETTER F WITH HOOK +(cl-define-keysym #x08fb "leftarrow") ;U+2190 LEFTWARDS ARROW +(cl-define-keysym #x08fc "uparrow") ;U+2191 UPWARDS ARROW +(cl-define-keysym #x08fd "rightarrow") ;U+2192 RIGHTWARDS ARROW +(cl-define-keysym #x08fe "downarrow") ;U+2193 DOWNWARDS ARROW +(cl-define-keysym #x09df "blank") +(cl-define-keysym #x09e0 "soliddiamond") ;U+25C6 BLACK DIAMOND +(cl-define-keysym #x09e1 "checkerboard") ;U+2592 MEDIUM SHADE +(cl-define-keysym #x09e2 "ht") ;U+2409 SYMBOL FOR HORIZONTAL TABULATION +(cl-define-keysym #x09e3 "ff") ;U+240C SYMBOL FOR FORM FEED +(cl-define-keysym #x09e4 "cr") ;U+240D SYMBOL FOR CARRIAGE RETURN +(cl-define-keysym #x09e5 "lf") ;U+240A SYMBOL FOR LINE FEED +(cl-define-keysym #x09e8 "nl") ;U+2424 SYMBOL FOR NEWLINE +(cl-define-keysym #x09e9 "vt") ;U+240B SYMBOL FOR VERTICAL TABULATION +(cl-define-keysym #x09ea "lowrightcorner") ;U+2518 BOX DRAWINGS LIGHT UP AND LEFT +(cl-define-keysym #x09eb "uprightcorner") ;U+2510 BOX DRAWINGS LIGHT DOWN AND LEFT +(cl-define-keysym #x09ec "upleftcorner") ;U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT +(cl-define-keysym #x09ed "lowleftcorner") ;U+2514 BOX DRAWINGS LIGHT UP AND RIGHT +(cl-define-keysym #x09ee "crossinglines") ;U+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +(cl-define-keysym #x09ef "horizlinescan1") ;U+23BA HORIZONTAL SCAN LINE-1 +(cl-define-keysym #x09f0 "horizlinescan3") ;U+23BB HORIZONTAL SCAN LINE-3 +(cl-define-keysym #x09f1 "horizlinescan5") ;U+2500 BOX DRAWINGS LIGHT HORIZONTAL +(cl-define-keysym #x09f2 "horizlinescan7") ;U+23BC HORIZONTAL SCAN LINE-7 +(cl-define-keysym #x09f3 "horizlinescan9") ;U+23BD HORIZONTAL SCAN LINE-9 +(cl-define-keysym #x09f4 "leftt") ;U+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT +(cl-define-keysym #x09f5 "rightt") ;U+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT +(cl-define-keysym #x09f6 "bott") ;U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL +(cl-define-keysym #x09f7 "topt") ;U+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +(cl-define-keysym #x09f8 "vertbar") ;U+2502 BOX DRAWINGS LIGHT VERTICAL +(cl-define-keysym #x0aa1 "emspace") ;U+2003 EM SPACE +(cl-define-keysym #x0aa2 "enspace") ;U+2002 EN SPACE +(cl-define-keysym #x0aa3 "em3space") ;U+2004 THREE-PER-EM SPACE +(cl-define-keysym #x0aa4 "em4space") ;U+2005 FOUR-PER-EM SPACE +(cl-define-keysym #x0aa5 "digitspace") ;U+2007 FIGURE SPACE +(cl-define-keysym #x0aa6 "punctspace") ;U+2008 PUNCTUATION SPACE +(cl-define-keysym #x0aa7 "thinspace") ;U+2009 THIN SPACE +(cl-define-keysym #x0aa8 "hairspace") ;U+200A HAIR SPACE +(cl-define-keysym #x0aa9 "emdash") ;U+2014 EM DASH +(cl-define-keysym #x0aaa "endash") ;U+2013 EN DASH +(cl-define-keysym #x0aac "signifblank") ;(U+2423 OPEN BOX) +(cl-define-keysym #x0aae "ellipsis") ;U+2026 HORIZONTAL ELLIPSIS +(cl-define-keysym #x0aaf "doubbaselinedot") ;U+2025 TWO DOT LEADER +(cl-define-keysym #x0ab0 "onethird") ;U+2153 VULGAR FRACTION ONE THIRD +(cl-define-keysym #x0ab1 "twothirds") ;U+2154 VULGAR FRACTION TWO THIRDS +(cl-define-keysym #x0ab2 "onefifth") ;U+2155 VULGAR FRACTION ONE FIFTH +(cl-define-keysym #x0ab3 "twofifths") ;U+2156 VULGAR FRACTION TWO FIFTHS +(cl-define-keysym #x0ab4 "threefifths") ;U+2157 VULGAR FRACTION THREE FIFTHS +(cl-define-keysym #x0ab5 "fourfifths") ;U+2158 VULGAR FRACTION FOUR FIFTHS +(cl-define-keysym #x0ab6 "onesixth") ;U+2159 VULGAR FRACTION ONE SIXTH +(cl-define-keysym #x0ab7 "fivesixths") ;U+215A VULGAR FRACTION FIVE SIXTHS +(cl-define-keysym #x0ab8 "careof") ;U+2105 CARE OF +(cl-define-keysym #x0abb "figdash") ;U+2012 FIGURE DASH +(cl-define-keysym #x0abc "leftanglebracket") ;(U+27E8 MATHEMATICAL LEFT ANGLE BRACKET) +(cl-define-keysym #x0abd "decimalpoint") ;(U+002E FULL STOP) +(cl-define-keysym #x0abe "rightanglebracket") ;(U+27E9 MATHEMATICAL RIGHT ANGLE BRACKET) +(cl-define-keysym #x0abf "marker") +(cl-define-keysym #x0ac3 "oneeighth") ;U+215B VULGAR FRACTION ONE EIGHTH +(cl-define-keysym #x0ac4 "threeeighths") ;U+215C VULGAR FRACTION THREE EIGHTHS +(cl-define-keysym #x0ac5 "fiveeighths") ;U+215D VULGAR FRACTION FIVE EIGHTHS +(cl-define-keysym #x0ac6 "seveneighths") ;U+215E VULGAR FRACTION SEVEN EIGHTHS +(cl-define-keysym #x0ac9 "trademark") ;U+2122 TRADE MARK SIGN +(cl-define-keysym #x0aca "signaturemark") ;(U+2613 SALTIRE) +(cl-define-keysym #x0acb "trademarkincircle") +(cl-define-keysym #x0acc "leftopentriangle") ;(U+25C1 WHITE LEFT-POINTING TRIANGLE) +(cl-define-keysym #x0acd "rightopentriangle") ;(U+25B7 WHITE RIGHT-POINTING TRIANGLE) +(cl-define-keysym #x0ace "emopencircle") ;(U+25CB WHITE CIRCLE) +(cl-define-keysym #x0acf "emopenrectangle") ;(U+25AF WHITE VERTICAL RECTANGLE) +(cl-define-keysym #x0ad0 "leftsinglequotemark") ;U+2018 LEFT SINGLE QUOTATION MARK +(cl-define-keysym #x0ad1 "rightsinglequotemark") ;U+2019 RIGHT SINGLE QUOTATION MARK +(cl-define-keysym #x0ad2 "leftdoublequotemark") ;U+201C LEFT DOUBLE QUOTATION MARK +(cl-define-keysym #x0ad3 "rightdoublequotemark") ;U+201D RIGHT DOUBLE QUOTATION MARK +(cl-define-keysym #x0ad4 "prescription") ;U+211E PRESCRIPTION TAKE +(cl-define-keysym #x0ad6 "minutes") ;U+2032 PRIME +(cl-define-keysym #x0ad7 "seconds") ;U+2033 DOUBLE PRIME +(cl-define-keysym #x0ad9 "latincross") ;U+271D LATIN CROSS +(cl-define-keysym #x0ada "hexagram") +(cl-define-keysym #x0adb "filledrectbullet") ;(U+25AC BLACK RECTANGLE) +(cl-define-keysym #x0adc "filledlefttribullet") ;(U+25C0 BLACK LEFT-POINTING TRIANGLE) +(cl-define-keysym #x0add "filledrighttribullet") ;(U+25B6 BLACK RIGHT-POINTING TRIANGLE) +(cl-define-keysym #x0ade "emfilledcircle") ;(U+25CF BLACK CIRCLE) +(cl-define-keysym #x0adf "emfilledrect") ;(U+25AE BLACK VERTICAL RECTANGLE) +(cl-define-keysym #x0ae0 "enopencircbullet") ;(U+25E6 WHITE BULLET) +(cl-define-keysym #x0ae1 "enopensquarebullet") ;(U+25AB WHITE SMALL SQUARE) +(cl-define-keysym #x0ae2 "openrectbullet") ;(U+25AD WHITE RECTANGLE) +(cl-define-keysym #x0ae3 "opentribulletup") ;(U+25B3 WHITE UP-POINTING TRIANGLE) +(cl-define-keysym #x0ae4 "opentribulletdown") ;(U+25BD WHITE DOWN-POINTING TRIANGLE) +(cl-define-keysym #x0ae5 "openstar") ;(U+2606 WHITE STAR) +(cl-define-keysym #x0ae6 "enfilledcircbullet") ;(U+2022 BULLET) +(cl-define-keysym #x0ae7 "enfilledsqbullet") ;(U+25AA BLACK SMALL SQUARE) +(cl-define-keysym #x0ae8 "filledtribulletup") ;(U+25B2 BLACK UP-POINTING TRIANGLE) +(cl-define-keysym #x0ae9 "filledtribulletdown") ;(U+25BC BLACK DOWN-POINTING TRIANGLE) +(cl-define-keysym #x0aea "leftpointer") ;(U+261C WHITE LEFT POINTING INDEX) +(cl-define-keysym #x0aeb "rightpointer") ;(U+261E WHITE RIGHT POINTING INDEX) +(cl-define-keysym #x0aec "club") ;U+2663 BLACK CLUB SUIT +(cl-define-keysym #x0aed "diamond") ;U+2666 BLACK DIAMOND SUIT +(cl-define-keysym #x0aee "heart") ;U+2665 BLACK HEART SUIT +(cl-define-keysym #x0af0 "maltesecross") ;U+2720 MALTESE CROSS +(cl-define-keysym #x0af1 "dagger") ;U+2020 DAGGER +(cl-define-keysym #x0af2 "doubledagger") ;U+2021 DOUBLE DAGGER +(cl-define-keysym #x0af3 "checkmark") ;U+2713 CHECK MARK +(cl-define-keysym #x0af4 "ballotcross") ;U+2717 BALLOT X +(cl-define-keysym #x0af5 "musicalsharp") ;U+266F MUSIC SHARP SIGN +(cl-define-keysym #x0af6 "musicalflat") ;U+266D MUSIC FLAT SIGN +(cl-define-keysym #x0af7 "malesymbol") ;U+2642 MALE SIGN +(cl-define-keysym #x0af8 "femalesymbol") ;U+2640 FEMALE SIGN +(cl-define-keysym #x0af9 "telephone") ;U+260E BLACK TELEPHONE +(cl-define-keysym #x0afa "telephonerecorder") ;U+2315 TELEPHONE RECORDER +(cl-define-keysym #x0afb "phonographcopyright") ;U+2117 SOUND RECORDING COPYRIGHT +(cl-define-keysym #x0afc "caret") ;U+2038 CARET +(cl-define-keysym #x0afd "singlelowquotemark") ;U+201A SINGLE LOW-9 QUOTATION MARK +(cl-define-keysym #x0afe "doublelowquotemark") ;U+201E DOUBLE LOW-9 QUOTATION MARK +(cl-define-keysym #x0aff "cursor") +(cl-define-keysym #x0ba3 "leftcaret") ;(U+003C LESS-THAN SIGN) +(cl-define-keysym #x0ba6 "rightcaret") ;(U+003E GREATER-THAN SIGN) +(cl-define-keysym #x0ba8 "downcaret") ;(U+2228 LOGICAL OR) +(cl-define-keysym #x0ba9 "upcaret") ;(U+2227 LOGICAL AND) +(cl-define-keysym #x0bc0 "overbar") ;(U+00AF MACRON) +(cl-define-keysym #x0bc2 "downtack") ;U+22A5 UP TACK +(cl-define-keysym #x0bc3 "upshoe") ;(U+2229 INTERSECTION) +(cl-define-keysym #x0bc4 "downstile") ;U+230A LEFT FLOOR +(cl-define-keysym #x0bc6 "underbar") ;(U+005F LOW LINE) +(cl-define-keysym #x0bca "jot") ;U+2218 RING OPERATOR +(cl-define-keysym #x0bcc "quad") ;U+2395 APL FUNCTIONAL SYMBOL QUAD +(cl-define-keysym #x0bce "uptack") ;U+22A4 DOWN TACK +(cl-define-keysym #x0bcf "circle") ;U+25CB WHITE CIRCLE +(cl-define-keysym #x0bd3 "upstile") ;U+2308 LEFT CEILING +(cl-define-keysym #x0bd6 "downshoe") ;(U+222A UNION) +(cl-define-keysym #x0bd8 "rightshoe") ;(U+2283 SUPERSET OF) +(cl-define-keysym #x0bda "leftshoe") ;(U+2282 SUBSET OF) +(cl-define-keysym #x0bdc "lefttack") ;U+22A2 RIGHT TACK +(cl-define-keysym #x0bfc "righttack") ;U+22A3 LEFT TACK +(cl-define-keysym #x0cdf "hebrew_doublelowline") ;U+2017 DOUBLE LOW LINE +(cl-define-keysym #x0ce0 "hebrew_aleph") ;U+05D0 HEBREW LETTER ALEF +(cl-define-keysym #x0ce1 "hebrew_bet") ;U+05D1 HEBREW LETTER BET +(cl-define-keysym #x0ce1 "hebrew_beth") ;deprecated +(cl-define-keysym #x0ce2 "hebrew_gimel") ;U+05D2 HEBREW LETTER GIMEL +(cl-define-keysym #x0ce2 "hebrew_gimmel") ;deprecated +(cl-define-keysym #x0ce3 "hebrew_dalet") ;U+05D3 HEBREW LETTER DALET +(cl-define-keysym #x0ce3 "hebrew_daleth") ;deprecated +(cl-define-keysym #x0ce4 "hebrew_he") ;U+05D4 HEBREW LETTER HE +(cl-define-keysym #x0ce5 "hebrew_waw") ;U+05D5 HEBREW LETTER VAV +(cl-define-keysym #x0ce6 "hebrew_zain") ;U+05D6 HEBREW LETTER ZAYIN +(cl-define-keysym #x0ce6 "hebrew_zayin") ;deprecated +(cl-define-keysym #x0ce7 "hebrew_chet") ;U+05D7 HEBREW LETTER HET +(cl-define-keysym #x0ce7 "hebrew_het") ;deprecated +(cl-define-keysym #x0ce8 "hebrew_tet") ;U+05D8 HEBREW LETTER TET +(cl-define-keysym #x0ce8 "hebrew_teth") ;deprecated +(cl-define-keysym #x0ce9 "hebrew_yod") ;U+05D9 HEBREW LETTER YOD +(cl-define-keysym #x0cea "hebrew_finalkaph") ;U+05DA HEBREW LETTER FINAL KAF +(cl-define-keysym #x0ceb "hebrew_kaph") ;U+05DB HEBREW LETTER KAF +(cl-define-keysym #x0cec "hebrew_lamed") ;U+05DC HEBREW LETTER LAMED +(cl-define-keysym #x0ced "hebrew_finalmem") ;U+05DD HEBREW LETTER FINAL MEM +(cl-define-keysym #x0cee "hebrew_mem") ;U+05DE HEBREW LETTER MEM +(cl-define-keysym #x0cef "hebrew_finalnun") ;U+05DF HEBREW LETTER FINAL NUN +(cl-define-keysym #x0cf0 "hebrew_nun") ;U+05E0 HEBREW LETTER NUN +(cl-define-keysym #x0cf1 "hebrew_samech") ;U+05E1 HEBREW LETTER SAMEKH +(cl-define-keysym #x0cf1 "hebrew_samekh") ;deprecated +(cl-define-keysym #x0cf2 "hebrew_ayin") ;U+05E2 HEBREW LETTER AYIN +(cl-define-keysym #x0cf3 "hebrew_finalpe") ;U+05E3 HEBREW LETTER FINAL PE +(cl-define-keysym #x0cf4 "hebrew_pe") ;U+05E4 HEBREW LETTER PE +(cl-define-keysym #x0cf5 "hebrew_finalzade") ;U+05E5 HEBREW LETTER FINAL TSADI +(cl-define-keysym #x0cf5 "hebrew_finalzadi") ;deprecated +(cl-define-keysym #x0cf6 "hebrew_zade") ;U+05E6 HEBREW LETTER TSADI +(cl-define-keysym #x0cf6 "hebrew_zadi") ;deprecated +(cl-define-keysym #x0cf7 "hebrew_qoph") ;U+05E7 HEBREW LETTER QOF +(cl-define-keysym #x0cf7 "hebrew_kuf") ;deprecated +(cl-define-keysym #x0cf8 "hebrew_resh") ;U+05E8 HEBREW LETTER RESH +(cl-define-keysym #x0cf9 "hebrew_shin") ;U+05E9 HEBREW LETTER SHIN +(cl-define-keysym #x0cfa "hebrew_taw") ;U+05EA HEBREW LETTER TAV +(cl-define-keysym #x0cfa "hebrew_taf") ;deprecated +(cl-define-keysym #xff7e "Hebrew_switch") ;Alias for mode_switch +(cl-define-keysym #x0da1 "Thai_kokai") ;U+0E01 THAI CHARACTER KO KAI +(cl-define-keysym #x0da2 "Thai_khokhai") ;U+0E02 THAI CHARACTER KHO KHAI +(cl-define-keysym #x0da3 "Thai_khokhuat") ;U+0E03 THAI CHARACTER KHO KHUAT +(cl-define-keysym #x0da4 "Thai_khokhwai") ;U+0E04 THAI CHARACTER KHO KHWAI +(cl-define-keysym #x0da5 "Thai_khokhon") ;U+0E05 THAI CHARACTER KHO KHON +(cl-define-keysym #x0da6 "Thai_khorakhang") ;U+0E06 THAI CHARACTER KHO RAKHANG +(cl-define-keysym #x0da7 "Thai_ngongu") ;U+0E07 THAI CHARACTER NGO NGU +(cl-define-keysym #x0da8 "Thai_chochan") ;U+0E08 THAI CHARACTER CHO CHAN +(cl-define-keysym #x0da9 "Thai_choching") ;U+0E09 THAI CHARACTER CHO CHING +(cl-define-keysym #x0daa "Thai_chochang") ;U+0E0A THAI CHARACTER CHO CHANG +(cl-define-keysym #x0dab "Thai_soso") ;U+0E0B THAI CHARACTER SO SO +(cl-define-keysym #x0dac "Thai_chochoe") ;U+0E0C THAI CHARACTER CHO CHOE +(cl-define-keysym #x0dad "Thai_yoying") ;U+0E0D THAI CHARACTER YO YING +(cl-define-keysym #x0dae "Thai_dochada") ;U+0E0E THAI CHARACTER DO CHADA +(cl-define-keysym #x0daf "Thai_topatak") ;U+0E0F THAI CHARACTER TO PATAK +(cl-define-keysym #x0db0 "Thai_thothan") ;U+0E10 THAI CHARACTER THO THAN +(cl-define-keysym #x0db1 "Thai_thonangmontho") ;U+0E11 THAI CHARACTER THO NANGMONTHO +(cl-define-keysym #x0db2 "Thai_thophuthao") ;U+0E12 THAI CHARACTER THO PHUTHAO +(cl-define-keysym #x0db3 "Thai_nonen") ;U+0E13 THAI CHARACTER NO NEN +(cl-define-keysym #x0db4 "Thai_dodek") ;U+0E14 THAI CHARACTER DO DEK +(cl-define-keysym #x0db5 "Thai_totao") ;U+0E15 THAI CHARACTER TO TAO +(cl-define-keysym #x0db6 "Thai_thothung") ;U+0E16 THAI CHARACTER THO THUNG +(cl-define-keysym #x0db7 "Thai_thothahan") ;U+0E17 THAI CHARACTER THO THAHAN +(cl-define-keysym #x0db8 "Thai_thothong") ;U+0E18 THAI CHARACTER THO THONG +(cl-define-keysym #x0db9 "Thai_nonu") ;U+0E19 THAI CHARACTER NO NU +(cl-define-keysym #x0dba "Thai_bobaimai") ;U+0E1A THAI CHARACTER BO BAIMAI +(cl-define-keysym #x0dbb "Thai_popla") ;U+0E1B THAI CHARACTER PO PLA +(cl-define-keysym #x0dbc "Thai_phophung") ;U+0E1C THAI CHARACTER PHO PHUNG +(cl-define-keysym #x0dbd "Thai_fofa") ;U+0E1D THAI CHARACTER FO FA +(cl-define-keysym #x0dbe "Thai_phophan") ;U+0E1E THAI CHARACTER PHO PHAN +(cl-define-keysym #x0dbf "Thai_fofan") ;U+0E1F THAI CHARACTER FO FAN +(cl-define-keysym #x0dc0 "Thai_phosamphao") ;U+0E20 THAI CHARACTER PHO SAMPHAO +(cl-define-keysym #x0dc1 "Thai_moma") ;U+0E21 THAI CHARACTER MO MA +(cl-define-keysym #x0dc2 "Thai_yoyak") ;U+0E22 THAI CHARACTER YO YAK +(cl-define-keysym #x0dc3 "Thai_rorua") ;U+0E23 THAI CHARACTER RO RUA +(cl-define-keysym #x0dc4 "Thai_ru") ;U+0E24 THAI CHARACTER RU +(cl-define-keysym #x0dc5 "Thai_loling") ;U+0E25 THAI CHARACTER LO LING +(cl-define-keysym #x0dc6 "Thai_lu") ;U+0E26 THAI CHARACTER LU +(cl-define-keysym #x0dc7 "Thai_wowaen") ;U+0E27 THAI CHARACTER WO WAEN +(cl-define-keysym #x0dc8 "Thai_sosala") ;U+0E28 THAI CHARACTER SO SALA +(cl-define-keysym #x0dc9 "Thai_sorusi") ;U+0E29 THAI CHARACTER SO RUSI +(cl-define-keysym #x0dca "Thai_sosua") ;U+0E2A THAI CHARACTER SO SUA +(cl-define-keysym #x0dcb "Thai_hohip") ;U+0E2B THAI CHARACTER HO HIP +(cl-define-keysym #x0dcc "Thai_lochula") ;U+0E2C THAI CHARACTER LO CHULA +(cl-define-keysym #x0dcd "Thai_oang") ;U+0E2D THAI CHARACTER O ANG +(cl-define-keysym #x0dce "Thai_honokhuk") ;U+0E2E THAI CHARACTER HO NOKHUK +(cl-define-keysym #x0dcf "Thai_paiyannoi") ;U+0E2F THAI CHARACTER PAIYANNOI +(cl-define-keysym #x0dd0 "Thai_saraa") ;U+0E30 THAI CHARACTER SARA A +(cl-define-keysym #x0dd1 "Thai_maihanakat") ;U+0E31 THAI CHARACTER MAI HAN-AKAT +(cl-define-keysym #x0dd2 "Thai_saraaa") ;U+0E32 THAI CHARACTER SARA AA +(cl-define-keysym #x0dd3 "Thai_saraam") ;U+0E33 THAI CHARACTER SARA AM +(cl-define-keysym #x0dd4 "Thai_sarai") ;U+0E34 THAI CHARACTER SARA I +(cl-define-keysym #x0dd5 "Thai_saraii") ;U+0E35 THAI CHARACTER SARA II +(cl-define-keysym #x0dd6 "Thai_saraue") ;U+0E36 THAI CHARACTER SARA UE +(cl-define-keysym #x0dd7 "Thai_sarauee") ;U+0E37 THAI CHARACTER SARA UEE +(cl-define-keysym #x0dd8 "Thai_sarau") ;U+0E38 THAI CHARACTER SARA U +(cl-define-keysym #x0dd9 "Thai_sarauu") ;U+0E39 THAI CHARACTER SARA UU +(cl-define-keysym #x0dda "Thai_phinthu") ;U+0E3A THAI CHARACTER PHINTHU +(cl-define-keysym #x0dde "Thai_maihanakat_maitho") +(cl-define-keysym #x0ddf "Thai_baht") ;U+0E3F THAI CURRENCY SYMBOL BAHT +(cl-define-keysym #x0de0 "Thai_sarae") ;U+0E40 THAI CHARACTER SARA E +(cl-define-keysym #x0de1 "Thai_saraae") ;U+0E41 THAI CHARACTER SARA AE +(cl-define-keysym #x0de2 "Thai_sarao") ;U+0E42 THAI CHARACTER SARA O +(cl-define-keysym #x0de3 "Thai_saraaimaimuan") ;U+0E43 THAI CHARACTER SARA AI MAIMUAN +(cl-define-keysym #x0de4 "Thai_saraaimaimalai") ;U+0E44 THAI CHARACTER SARA AI MAIMALAI +(cl-define-keysym #x0de5 "Thai_lakkhangyao") ;U+0E45 THAI CHARACTER LAKKHANGYAO +(cl-define-keysym #x0de6 "Thai_maiyamok") ;U+0E46 THAI CHARACTER MAIYAMOK +(cl-define-keysym #x0de7 "Thai_maitaikhu") ;U+0E47 THAI CHARACTER MAITAIKHU +(cl-define-keysym #x0de8 "Thai_maiek") ;U+0E48 THAI CHARACTER MAI EK +(cl-define-keysym #x0de9 "Thai_maitho") ;U+0E49 THAI CHARACTER MAI THO +(cl-define-keysym #x0dea "Thai_maitri") ;U+0E4A THAI CHARACTER MAI TRI +(cl-define-keysym #x0deb "Thai_maichattawa") ;U+0E4B THAI CHARACTER MAI CHATTAWA +(cl-define-keysym #x0dec "Thai_thanthakhat") ;U+0E4C THAI CHARACTER THANTHAKHAT +(cl-define-keysym #x0ded "Thai_nikhahit") ;U+0E4D THAI CHARACTER NIKHAHIT +(cl-define-keysym #x0df0 "Thai_leksun") ;U+0E50 THAI DIGIT ZERO +(cl-define-keysym #x0df1 "Thai_leknung") ;U+0E51 THAI DIGIT ONE +(cl-define-keysym #x0df2 "Thai_leksong") ;U+0E52 THAI DIGIT TWO +(cl-define-keysym #x0df3 "Thai_leksam") ;U+0E53 THAI DIGIT THREE +(cl-define-keysym #x0df4 "Thai_leksi") ;U+0E54 THAI DIGIT FOUR +(cl-define-keysym #x0df5 "Thai_lekha") ;U+0E55 THAI DIGIT FIVE +(cl-define-keysym #x0df6 "Thai_lekhok") ;U+0E56 THAI DIGIT SIX +(cl-define-keysym #x0df7 "Thai_lekchet") ;U+0E57 THAI DIGIT SEVEN +(cl-define-keysym #x0df8 "Thai_lekpaet") ;U+0E58 THAI DIGIT EIGHT +(cl-define-keysym #x0df9 "Thai_lekkao") ;U+0E59 THAI DIGIT NINE +(cl-define-keysym #xff31 "Hangul") ;Hangul start/stop(toggle) +(cl-define-keysym #xff32 "Hangul_Start") ;Hangul start +(cl-define-keysym #xff33 "Hangul_End") ;Hangul end, English start +(cl-define-keysym #xff34 "Hangul_Hanja") ;Start Hangul->Hanja Conversion +(cl-define-keysym #xff35 "Hangul_Jamo") ;Hangul Jamo mode +(cl-define-keysym #xff36 "Hangul_Romaja") ;Hangul Romaja mode +(cl-define-keysym #xff37 "Hangul_Codeinput") ;Hangul code input mode +(cl-define-keysym #xff38 "Hangul_Jeonja") ;Jeonja mode +(cl-define-keysym #xff39 "Hangul_Banja") ;Banja mode +(cl-define-keysym #xff3a "Hangul_PreHanja") ;Pre Hanja conversion +(cl-define-keysym #xff3b "Hangul_PostHanja") ;Post Hanja conversion +(cl-define-keysym #xff3c "Hangul_SingleCandidate") ;Single candidate +(cl-define-keysym #xff3d "Hangul_MultipleCandidate") ;Multiple candidate +(cl-define-keysym #xff3e "Hangul_PreviousCandidate") ;Previous candidate +(cl-define-keysym #xff3f "Hangul_Special") ;Special symbols +(cl-define-keysym #xff7e "Hangul_switch") ;Alias for mode_switch +(cl-define-keysym #x0ea1 "Hangul_Kiyeog") +(cl-define-keysym #x0ea2 "Hangul_SsangKiyeog") +(cl-define-keysym #x0ea3 "Hangul_KiyeogSios") +(cl-define-keysym #x0ea4 "Hangul_Nieun") +(cl-define-keysym #x0ea5 "Hangul_NieunJieuj") +(cl-define-keysym #x0ea6 "Hangul_NieunHieuh") +(cl-define-keysym #x0ea7 "Hangul_Dikeud") +(cl-define-keysym #x0ea8 "Hangul_SsangDikeud") +(cl-define-keysym #x0ea9 "Hangul_Rieul") +(cl-define-keysym #x0eaa "Hangul_RieulKiyeog") +(cl-define-keysym #x0eab "Hangul_RieulMieum") +(cl-define-keysym #x0eac "Hangul_RieulPieub") +(cl-define-keysym #x0ead "Hangul_RieulSios") +(cl-define-keysym #x0eae "Hangul_RieulTieut") +(cl-define-keysym #x0eaf "Hangul_RieulPhieuf") +(cl-define-keysym #x0eb0 "Hangul_RieulHieuh") +(cl-define-keysym #x0eb1 "Hangul_Mieum") +(cl-define-keysym #x0eb2 "Hangul_Pieub") +(cl-define-keysym #x0eb3 "Hangul_SsangPieub") +(cl-define-keysym #x0eb4 "Hangul_PieubSios") +(cl-define-keysym #x0eb5 "Hangul_Sios") +(cl-define-keysym #x0eb6 "Hangul_SsangSios") +(cl-define-keysym #x0eb7 "Hangul_Ieung") +(cl-define-keysym #x0eb8 "Hangul_Jieuj") +(cl-define-keysym #x0eb9 "Hangul_SsangJieuj") +(cl-define-keysym #x0eba "Hangul_Cieuc") +(cl-define-keysym #x0ebb "Hangul_Khieuq") +(cl-define-keysym #x0ebc "Hangul_Tieut") +(cl-define-keysym #x0ebd "Hangul_Phieuf") +(cl-define-keysym #x0ebe "Hangul_Hieuh") +(cl-define-keysym #x0ebf "Hangul_A") +(cl-define-keysym #x0ec0 "Hangul_AE") +(cl-define-keysym #x0ec1 "Hangul_YA") +(cl-define-keysym #x0ec2 "Hangul_YAE") +(cl-define-keysym #x0ec3 "Hangul_EO") +(cl-define-keysym #x0ec4 "Hangul_E") +(cl-define-keysym #x0ec5 "Hangul_YEO") +(cl-define-keysym #x0ec6 "Hangul_YE") +(cl-define-keysym #x0ec7 "Hangul_O") +(cl-define-keysym #x0ec8 "Hangul_WA") +(cl-define-keysym #x0ec9 "Hangul_WAE") +(cl-define-keysym #x0eca "Hangul_OE") +(cl-define-keysym #x0ecb "Hangul_YO") +(cl-define-keysym #x0ecc "Hangul_U") +(cl-define-keysym #x0ecd "Hangul_WEO") +(cl-define-keysym #x0ece "Hangul_WE") +(cl-define-keysym #x0ecf "Hangul_WI") +(cl-define-keysym #x0ed0 "Hangul_YU") +(cl-define-keysym #x0ed1 "Hangul_EU") +(cl-define-keysym #x0ed2 "Hangul_YI") +(cl-define-keysym #x0ed3 "Hangul_I") +(cl-define-keysym #x0ed4 "Hangul_J_Kiyeog") +(cl-define-keysym #x0ed5 "Hangul_J_SsangKiyeog") +(cl-define-keysym #x0ed6 "Hangul_J_KiyeogSios") +(cl-define-keysym #x0ed7 "Hangul_J_Nieun") +(cl-define-keysym #x0ed8 "Hangul_J_NieunJieuj") +(cl-define-keysym #x0ed9 "Hangul_J_NieunHieuh") +(cl-define-keysym #x0eda "Hangul_J_Dikeud") +(cl-define-keysym #x0edb "Hangul_J_Rieul") +(cl-define-keysym #x0edc "Hangul_J_RieulKiyeog") +(cl-define-keysym #x0edd "Hangul_J_RieulMieum") +(cl-define-keysym #x0ede "Hangul_J_RieulPieub") +(cl-define-keysym #x0edf "Hangul_J_RieulSios") +(cl-define-keysym #x0ee0 "Hangul_J_RieulTieut") +(cl-define-keysym #x0ee1 "Hangul_J_RieulPhieuf") +(cl-define-keysym #x0ee2 "Hangul_J_RieulHieuh") +(cl-define-keysym #x0ee3 "Hangul_J_Mieum") +(cl-define-keysym #x0ee4 "Hangul_J_Pieub") +(cl-define-keysym #x0ee5 "Hangul_J_PieubSios") +(cl-define-keysym #x0ee6 "Hangul_J_Sios") +(cl-define-keysym #x0ee7 "Hangul_J_SsangSios") +(cl-define-keysym #x0ee8 "Hangul_J_Ieung") +(cl-define-keysym #x0ee9 "Hangul_J_Jieuj") +(cl-define-keysym #x0eea "Hangul_J_Cieuc") +(cl-define-keysym #x0eeb "Hangul_J_Khieuq") +(cl-define-keysym #x0eec "Hangul_J_Tieut") +(cl-define-keysym #x0eed "Hangul_J_Phieuf") +(cl-define-keysym #x0eee "Hangul_J_Hieuh") +(cl-define-keysym #x0eef "Hangul_RieulYeorinHieuh") +(cl-define-keysym #x0ef0 "Hangul_SunkyeongeumMieum") +(cl-define-keysym #x0ef1 "Hangul_SunkyeongeumPieub") +(cl-define-keysym #x0ef2 "Hangul_PanSios") +(cl-define-keysym #x0ef3 "Hangul_KkogjiDalrinIeung") +(cl-define-keysym #x0ef4 "Hangul_SunkyeongeumPhieuf") +(cl-define-keysym #x0ef5 "Hangul_YeorinHieuh") +(cl-define-keysym #x0ef6 "Hangul_AraeA") +(cl-define-keysym #x0ef7 "Hangul_AraeAE") +(cl-define-keysym #x0ef8 "Hangul_J_PanSios") +(cl-define-keysym #x0ef9 "Hangul_J_KkogjiDalrinIeung") +(cl-define-keysym #x0efa "Hangul_J_YeorinHieuh") +(cl-define-keysym #x0eff "Korean_Won") ;(U+20A9 WON SIGN) +(cl-define-keysym #x1000587 "Armenian_ligature_ew") ;U+0587 ARMENIAN SMALL LIGATURE ECH YIWN +(cl-define-keysym #x1000589 "Armenian_full_stop") ;U+0589 ARMENIAN FULL STOP +(cl-define-keysym #x1000589 "Armenian_verjaket") ;U+0589 ARMENIAN FULL STOP +(cl-define-keysym #x100055d "Armenian_separation_mark") ;U+055D ARMENIAN COMMA +(cl-define-keysym #x100055d "Armenian_but") ;U+055D ARMENIAN COMMA +(cl-define-keysym #x100058a "Armenian_hyphen") ;U+058A ARMENIAN HYPHEN +(cl-define-keysym #x100058a "Armenian_yentamna") ;U+058A ARMENIAN HYPHEN +(cl-define-keysym #x100055c "Armenian_exclam") ;U+055C ARMENIAN EXCLAMATION MARK +(cl-define-keysym #x100055c "Armenian_amanak") ;U+055C ARMENIAN EXCLAMATION MARK +(cl-define-keysym #x100055b "Armenian_accent") ;U+055B ARMENIAN EMPHASIS MARK +(cl-define-keysym #x100055b "Armenian_shesht") ;U+055B ARMENIAN EMPHASIS MARK +(cl-define-keysym #x100055e "Armenian_question") ;U+055E ARMENIAN QUESTION MARK +(cl-define-keysym #x100055e "Armenian_paruyk") ;U+055E ARMENIAN QUESTION MARK +(cl-define-keysym #x1000531 "Armenian_AYB") ;U+0531 ARMENIAN CAPITAL LETTER AYB +(cl-define-keysym #x1000561 "Armenian_ayb") ;U+0561 ARMENIAN SMALL LETTER AYB +(cl-define-keysym #x1000532 "Armenian_BEN") ;U+0532 ARMENIAN CAPITAL LETTER BEN +(cl-define-keysym #x1000562 "Armenian_ben") ;U+0562 ARMENIAN SMALL LETTER BEN +(cl-define-keysym #x1000533 "Armenian_GIM") ;U+0533 ARMENIAN CAPITAL LETTER GIM +(cl-define-keysym #x1000563 "Armenian_gim") ;U+0563 ARMENIAN SMALL LETTER GIM +(cl-define-keysym #x1000534 "Armenian_DA") ;U+0534 ARMENIAN CAPITAL LETTER DA +(cl-define-keysym #x1000564 "Armenian_da") ;U+0564 ARMENIAN SMALL LETTER DA +(cl-define-keysym #x1000535 "Armenian_YECH") ;U+0535 ARMENIAN CAPITAL LETTER ECH +(cl-define-keysym #x1000565 "Armenian_yech") ;U+0565 ARMENIAN SMALL LETTER ECH +(cl-define-keysym #x1000536 "Armenian_ZA") ;U+0536 ARMENIAN CAPITAL LETTER ZA +(cl-define-keysym #x1000566 "Armenian_za") ;U+0566 ARMENIAN SMALL LETTER ZA +(cl-define-keysym #x1000537 "Armenian_E") ;U+0537 ARMENIAN CAPITAL LETTER EH +(cl-define-keysym #x1000567 "Armenian_e") ;U+0567 ARMENIAN SMALL LETTER EH +(cl-define-keysym #x1000538 "Armenian_AT") ;U+0538 ARMENIAN CAPITAL LETTER ET +(cl-define-keysym #x1000568 "Armenian_at") ;U+0568 ARMENIAN SMALL LETTER ET +(cl-define-keysym #x1000539 "Armenian_TO") ;U+0539 ARMENIAN CAPITAL LETTER TO +(cl-define-keysym #x1000569 "Armenian_to") ;U+0569 ARMENIAN SMALL LETTER TO +(cl-define-keysym #x100053a "Armenian_ZHE") ;U+053A ARMENIAN CAPITAL LETTER ZHE +(cl-define-keysym #x100056a "Armenian_zhe") ;U+056A ARMENIAN SMALL LETTER ZHE +(cl-define-keysym #x100053b "Armenian_INI") ;U+053B ARMENIAN CAPITAL LETTER INI +(cl-define-keysym #x100056b "Armenian_ini") ;U+056B ARMENIAN SMALL LETTER INI +(cl-define-keysym #x100053c "Armenian_LYUN") ;U+053C ARMENIAN CAPITAL LETTER LIWN +(cl-define-keysym #x100056c "Armenian_lyun") ;U+056C ARMENIAN SMALL LETTER LIWN +(cl-define-keysym #x100053d "Armenian_KHE") ;U+053D ARMENIAN CAPITAL LETTER XEH +(cl-define-keysym #x100056d "Armenian_khe") ;U+056D ARMENIAN SMALL LETTER XEH +(cl-define-keysym #x100053e "Armenian_TSA") ;U+053E ARMENIAN CAPITAL LETTER CA +(cl-define-keysym #x100056e "Armenian_tsa") ;U+056E ARMENIAN SMALL LETTER CA +(cl-define-keysym #x100053f "Armenian_KEN") ;U+053F ARMENIAN CAPITAL LETTER KEN +(cl-define-keysym #x100056f "Armenian_ken") ;U+056F ARMENIAN SMALL LETTER KEN +(cl-define-keysym #x1000540 "Armenian_HO") ;U+0540 ARMENIAN CAPITAL LETTER HO +(cl-define-keysym #x1000570 "Armenian_ho") ;U+0570 ARMENIAN SMALL LETTER HO +(cl-define-keysym #x1000541 "Armenian_DZA") ;U+0541 ARMENIAN CAPITAL LETTER JA +(cl-define-keysym #x1000571 "Armenian_dza") ;U+0571 ARMENIAN SMALL LETTER JA +(cl-define-keysym #x1000542 "Armenian_GHAT") ;U+0542 ARMENIAN CAPITAL LETTER GHAD +(cl-define-keysym #x1000572 "Armenian_ghat") ;U+0572 ARMENIAN SMALL LETTER GHAD +(cl-define-keysym #x1000543 "Armenian_TCHE") ;U+0543 ARMENIAN CAPITAL LETTER CHEH +(cl-define-keysym #x1000573 "Armenian_tche") ;U+0573 ARMENIAN SMALL LETTER CHEH +(cl-define-keysym #x1000544 "Armenian_MEN") ;U+0544 ARMENIAN CAPITAL LETTER MEN +(cl-define-keysym #x1000574 "Armenian_men") ;U+0574 ARMENIAN SMALL LETTER MEN +(cl-define-keysym #x1000545 "Armenian_HI") ;U+0545 ARMENIAN CAPITAL LETTER YI +(cl-define-keysym #x1000575 "Armenian_hi") ;U+0575 ARMENIAN SMALL LETTER YI +(cl-define-keysym #x1000546 "Armenian_NU") ;U+0546 ARMENIAN CAPITAL LETTER NOW +(cl-define-keysym #x1000576 "Armenian_nu") ;U+0576 ARMENIAN SMALL LETTER NOW +(cl-define-keysym #x1000547 "Armenian_SHA") ;U+0547 ARMENIAN CAPITAL LETTER SHA +(cl-define-keysym #x1000577 "Armenian_sha") ;U+0577 ARMENIAN SMALL LETTER SHA +(cl-define-keysym #x1000548 "Armenian_VO") ;U+0548 ARMENIAN CAPITAL LETTER VO +(cl-define-keysym #x1000578 "Armenian_vo") ;U+0578 ARMENIAN SMALL LETTER VO +(cl-define-keysym #x1000549 "Armenian_CHA") ;U+0549 ARMENIAN CAPITAL LETTER CHA +(cl-define-keysym #x1000579 "Armenian_cha") ;U+0579 ARMENIAN SMALL LETTER CHA +(cl-define-keysym #x100054a "Armenian_PE") ;U+054A ARMENIAN CAPITAL LETTER PEH +(cl-define-keysym #x100057a "Armenian_pe") ;U+057A ARMENIAN SMALL LETTER PEH +(cl-define-keysym #x100054b "Armenian_JE") ;U+054B ARMENIAN CAPITAL LETTER JHEH +(cl-define-keysym #x100057b "Armenian_je") ;U+057B ARMENIAN SMALL LETTER JHEH +(cl-define-keysym #x100054c "Armenian_RA") ;U+054C ARMENIAN CAPITAL LETTER RA +(cl-define-keysym #x100057c "Armenian_ra") ;U+057C ARMENIAN SMALL LETTER RA +(cl-define-keysym #x100054d "Armenian_SE") ;U+054D ARMENIAN CAPITAL LETTER SEH +(cl-define-keysym #x100057d "Armenian_se") ;U+057D ARMENIAN SMALL LETTER SEH +(cl-define-keysym #x100054e "Armenian_VEV") ;U+054E ARMENIAN CAPITAL LETTER VEW +(cl-define-keysym #x100057e "Armenian_vev") ;U+057E ARMENIAN SMALL LETTER VEW +(cl-define-keysym #x100054f "Armenian_TYUN") ;U+054F ARMENIAN CAPITAL LETTER TIWN +(cl-define-keysym #x100057f "Armenian_tyun") ;U+057F ARMENIAN SMALL LETTER TIWN +(cl-define-keysym #x1000550 "Armenian_RE") ;U+0550 ARMENIAN CAPITAL LETTER REH +(cl-define-keysym #x1000580 "Armenian_re") ;U+0580 ARMENIAN SMALL LETTER REH +(cl-define-keysym #x1000551 "Armenian_TSO") ;U+0551 ARMENIAN CAPITAL LETTER CO +(cl-define-keysym #x1000581 "Armenian_tso") ;U+0581 ARMENIAN SMALL LETTER CO +(cl-define-keysym #x1000552 "Armenian_VYUN") ;U+0552 ARMENIAN CAPITAL LETTER YIWN +(cl-define-keysym #x1000582 "Armenian_vyun") ;U+0582 ARMENIAN SMALL LETTER YIWN +(cl-define-keysym #x1000553 "Armenian_PYUR") ;U+0553 ARMENIAN CAPITAL LETTER PIWR +(cl-define-keysym #x1000583 "Armenian_pyur") ;U+0583 ARMENIAN SMALL LETTER PIWR +(cl-define-keysym #x1000554 "Armenian_KE") ;U+0554 ARMENIAN CAPITAL LETTER KEH +(cl-define-keysym #x1000584 "Armenian_ke") ;U+0584 ARMENIAN SMALL LETTER KEH +(cl-define-keysym #x1000555 "Armenian_O") ;U+0555 ARMENIAN CAPITAL LETTER OH +(cl-define-keysym #x1000585 "Armenian_o") ;U+0585 ARMENIAN SMALL LETTER OH +(cl-define-keysym #x1000556 "Armenian_FE") ;U+0556 ARMENIAN CAPITAL LETTER FEH +(cl-define-keysym #x1000586 "Armenian_fe") ;U+0586 ARMENIAN SMALL LETTER FEH +(cl-define-keysym #x100055a "Armenian_apostrophe") ;U+055A ARMENIAN APOSTROPHE +(cl-define-keysym #x10010d0 "Georgian_an") ;U+10D0 GEORGIAN LETTER AN +(cl-define-keysym #x10010d1 "Georgian_ban") ;U+10D1 GEORGIAN LETTER BAN +(cl-define-keysym #x10010d2 "Georgian_gan") ;U+10D2 GEORGIAN LETTER GAN +(cl-define-keysym #x10010d3 "Georgian_don") ;U+10D3 GEORGIAN LETTER DON +(cl-define-keysym #x10010d4 "Georgian_en") ;U+10D4 GEORGIAN LETTER EN +(cl-define-keysym #x10010d5 "Georgian_vin") ;U+10D5 GEORGIAN LETTER VIN +(cl-define-keysym #x10010d6 "Georgian_zen") ;U+10D6 GEORGIAN LETTER ZEN +(cl-define-keysym #x10010d7 "Georgian_tan") ;U+10D7 GEORGIAN LETTER TAN +(cl-define-keysym #x10010d8 "Georgian_in") ;U+10D8 GEORGIAN LETTER IN +(cl-define-keysym #x10010d9 "Georgian_kan") ;U+10D9 GEORGIAN LETTER KAN +(cl-define-keysym #x10010da "Georgian_las") ;U+10DA GEORGIAN LETTER LAS +(cl-define-keysym #x10010db "Georgian_man") ;U+10DB GEORGIAN LETTER MAN +(cl-define-keysym #x10010dc "Georgian_nar") ;U+10DC GEORGIAN LETTER NAR +(cl-define-keysym #x10010dd "Georgian_on") ;U+10DD GEORGIAN LETTER ON +(cl-define-keysym #x10010de "Georgian_par") ;U+10DE GEORGIAN LETTER PAR +(cl-define-keysym #x10010df "Georgian_zhar") ;U+10DF GEORGIAN LETTER ZHAR +(cl-define-keysym #x10010e0 "Georgian_rae") ;U+10E0 GEORGIAN LETTER RAE +(cl-define-keysym #x10010e1 "Georgian_san") ;U+10E1 GEORGIAN LETTER SAN +(cl-define-keysym #x10010e2 "Georgian_tar") ;U+10E2 GEORGIAN LETTER TAR +(cl-define-keysym #x10010e3 "Georgian_un") ;U+10E3 GEORGIAN LETTER UN +(cl-define-keysym #x10010e4 "Georgian_phar") ;U+10E4 GEORGIAN LETTER PHAR +(cl-define-keysym #x10010e5 "Georgian_khar") ;U+10E5 GEORGIAN LETTER KHAR +(cl-define-keysym #x10010e6 "Georgian_ghan") ;U+10E6 GEORGIAN LETTER GHAN +(cl-define-keysym #x10010e7 "Georgian_qar") ;U+10E7 GEORGIAN LETTER QAR +(cl-define-keysym #x10010e8 "Georgian_shin") ;U+10E8 GEORGIAN LETTER SHIN +(cl-define-keysym #x10010e9 "Georgian_chin") ;U+10E9 GEORGIAN LETTER CHIN +(cl-define-keysym #x10010ea "Georgian_can") ;U+10EA GEORGIAN LETTER CAN +(cl-define-keysym #x10010eb "Georgian_jil") ;U+10EB GEORGIAN LETTER JIL +(cl-define-keysym #x10010ec "Georgian_cil") ;U+10EC GEORGIAN LETTER CIL +(cl-define-keysym #x10010ed "Georgian_char") ;U+10ED GEORGIAN LETTER CHAR +(cl-define-keysym #x10010ee "Georgian_xan") ;U+10EE GEORGIAN LETTER XAN +(cl-define-keysym #x10010ef "Georgian_jhan") ;U+10EF GEORGIAN LETTER JHAN +(cl-define-keysym #x10010f0 "Georgian_hae") ;U+10F0 GEORGIAN LETTER HAE +(cl-define-keysym #x10010f1 "Georgian_he") ;U+10F1 GEORGIAN LETTER HE +(cl-define-keysym #x10010f2 "Georgian_hie") ;U+10F2 GEORGIAN LETTER HIE +(cl-define-keysym #x10010f3 "Georgian_we") ;U+10F3 GEORGIAN LETTER WE +(cl-define-keysym #x10010f4 "Georgian_har") ;U+10F4 GEORGIAN LETTER HAR +(cl-define-keysym #x10010f5 "Georgian_hoe") ;U+10F5 GEORGIAN LETTER HOE +(cl-define-keysym #x10010f6 "Georgian_fi") ;U+10F6 GEORGIAN LETTER FI +(cl-define-keysym #x1001e8a "Xabovedot") ;U+1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE +(cl-define-keysym #x100012c "Ibreve") ;U+012C LATIN CAPITAL LETTER I WITH BREVE +(cl-define-keysym #x10001b5 "Zstroke") ;U+01B5 LATIN CAPITAL LETTER Z WITH STROKE +(cl-define-keysym #x10001e6 "Gcaron") ;U+01E6 LATIN CAPITAL LETTER G WITH CARON +(cl-define-keysym #x10001d1 "Ocaron") ;U+01D2 LATIN CAPITAL LETTER O WITH CARON +(cl-define-keysym #x100019f "Obarred") ;U+019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE +(cl-define-keysym #x1001e8b "xabovedot") ;U+1E8B LATIN SMALL LETTER X WITH DOT ABOVE +(cl-define-keysym #x100012d "ibreve") ;U+012D LATIN SMALL LETTER I WITH BREVE +(cl-define-keysym #x10001b6 "zstroke") ;U+01B6 LATIN SMALL LETTER Z WITH STROKE +(cl-define-keysym #x10001e7 "gcaron") ;U+01E7 LATIN SMALL LETTER G WITH CARON +(cl-define-keysym #x10001d2 "ocaron") ;U+01D2 LATIN SMALL LETTER O WITH CARON +(cl-define-keysym #x1000275 "obarred") ;U+0275 LATIN SMALL LETTER BARRED O +(cl-define-keysym #x100018f "SCHWA") ;U+018F LATIN CAPITAL LETTER SCHWA +(cl-define-keysym #x1000259 "schwa") ;U+0259 LATIN SMALL LETTER SCHWA +(cl-define-keysym #x1001e36 "Lbelowdot") ;U+1E36 LATIN CAPITAL LETTER L WITH DOT BELOW +(cl-define-keysym #x1001e37 "lbelowdot") ;U+1E37 LATIN SMALL LETTER L WITH DOT BELOW +(cl-define-keysym #x1001ea0 "Abelowdot") ;U+1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW +(cl-define-keysym #x1001ea1 "abelowdot") ;U+1EA1 LATIN SMALL LETTER A WITH DOT BELOW +(cl-define-keysym #x1001ea2 "Ahook") ;U+1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE +(cl-define-keysym #x1001ea3 "ahook") ;U+1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE +(cl-define-keysym #x1001ea4 "Acircumflexacute") ;U+1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +(cl-define-keysym #x1001ea5 "acircumflexacute") ;U+1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +(cl-define-keysym #x1001ea6 "Acircumflexgrave") ;U+1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +(cl-define-keysym #x1001ea7 "acircumflexgrave") ;U+1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +(cl-define-keysym #x1001ea8 "Acircumflexhook") ;U+1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +(cl-define-keysym #x1001ea9 "acircumflexhook") ;U+1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +(cl-define-keysym #x1001eaa "Acircumflextilde") ;U+1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +(cl-define-keysym #x1001eab "acircumflextilde") ;U+1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +(cl-define-keysym #x1001eac "Acircumflexbelowdot") ;U+1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +(cl-define-keysym #x1001ead "acircumflexbelowdot") ;U+1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +(cl-define-keysym #x1001eae "Abreveacute") ;U+1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +(cl-define-keysym #x1001eaf "abreveacute") ;U+1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE +(cl-define-keysym #x1001eb0 "Abrevegrave") ;U+1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +(cl-define-keysym #x1001eb1 "abrevegrave") ;U+1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE +(cl-define-keysym #x1001eb2 "Abrevehook") ;U+1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +(cl-define-keysym #x1001eb3 "abrevehook") ;U+1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +(cl-define-keysym #x1001eb4 "Abrevetilde") ;U+1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE +(cl-define-keysym #x1001eb5 "abrevetilde") ;U+1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE +(cl-define-keysym #x1001eb6 "Abrevebelowdot") ;U+1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +(cl-define-keysym #x1001eb7 "abrevebelowdot") ;U+1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +(cl-define-keysym #x1001eb8 "Ebelowdot") ;U+1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW +(cl-define-keysym #x1001eb9 "ebelowdot") ;U+1EB9 LATIN SMALL LETTER E WITH DOT BELOW +(cl-define-keysym #x1001eba "Ehook") ;U+1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE +(cl-define-keysym #x1001ebb "ehook") ;U+1EBB LATIN SMALL LETTER E WITH HOOK ABOVE +(cl-define-keysym #x1001ebc "Etilde") ;U+1EBC LATIN CAPITAL LETTER E WITH TILDE +(cl-define-keysym #x1001ebd "etilde") ;U+1EBD LATIN SMALL LETTER E WITH TILDE +(cl-define-keysym #x1001ebe "Ecircumflexacute") ;U+1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +(cl-define-keysym #x1001ebf "ecircumflexacute") ;U+1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +(cl-define-keysym #x1001ec0 "Ecircumflexgrave") ;U+1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +(cl-define-keysym #x1001ec1 "ecircumflexgrave") ;U+1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +(cl-define-keysym #x1001ec2 "Ecircumflexhook") ;U+1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +(cl-define-keysym #x1001ec3 "ecircumflexhook") ;U+1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +(cl-define-keysym #x1001ec4 "Ecircumflextilde") ;U+1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +(cl-define-keysym #x1001ec5 "ecircumflextilde") ;U+1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +(cl-define-keysym #x1001ec6 "Ecircumflexbelowdot") ;U+1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +(cl-define-keysym #x1001ec7 "ecircumflexbelowdot") ;U+1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +(cl-define-keysym #x1001ec8 "Ihook") ;U+1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE +(cl-define-keysym #x1001ec9 "ihook") ;U+1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE +(cl-define-keysym #x1001eca "Ibelowdot") ;U+1ECA LATIN CAPITAL LETTER I WITH DOT BELOW +(cl-define-keysym #x1001ecb "ibelowdot") ;U+1ECB LATIN SMALL LETTER I WITH DOT BELOW +(cl-define-keysym #x1001ecc "Obelowdot") ;U+1ECC LATIN CAPITAL LETTER O WITH DOT BELOW +(cl-define-keysym #x1001ecd "obelowdot") ;U+1ECD LATIN SMALL LETTER O WITH DOT BELOW +(cl-define-keysym #x1001ece "Ohook") ;U+1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE +(cl-define-keysym #x1001ecf "ohook") ;U+1ECF LATIN SMALL LETTER O WITH HOOK ABOVE +(cl-define-keysym #x1001ed0 "Ocircumflexacute") ;U+1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +(cl-define-keysym #x1001ed1 "ocircumflexacute") ;U+1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +(cl-define-keysym #x1001ed2 "Ocircumflexgrave") ;U+1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +(cl-define-keysym #x1001ed3 "ocircumflexgrave") ;U+1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +(cl-define-keysym #x1001ed4 "Ocircumflexhook") ;U+1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +(cl-define-keysym #x1001ed5 "ocircumflexhook") ;U+1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +(cl-define-keysym #x1001ed6 "Ocircumflextilde") ;U+1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +(cl-define-keysym #x1001ed7 "ocircumflextilde") ;U+1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +(cl-define-keysym #x1001ed8 "Ocircumflexbelowdot") ;U+1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +(cl-define-keysym #x1001ed9 "ocircumflexbelowdot") ;U+1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +(cl-define-keysym #x1001eda "Ohornacute") ;U+1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE +(cl-define-keysym #x1001edb "ohornacute") ;U+1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE +(cl-define-keysym #x1001edc "Ohorngrave") ;U+1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE +(cl-define-keysym #x1001edd "ohorngrave") ;U+1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE +(cl-define-keysym #x1001ede "Ohornhook") ;U+1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +(cl-define-keysym #x1001edf "ohornhook") ;U+1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE +(cl-define-keysym #x1001ee0 "Ohorntilde") ;U+1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE +(cl-define-keysym #x1001ee1 "ohorntilde") ;U+1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE +(cl-define-keysym #x1001ee2 "Ohornbelowdot") ;U+1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +(cl-define-keysym #x1001ee3 "ohornbelowdot") ;U+1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW +(cl-define-keysym #x1001ee4 "Ubelowdot") ;U+1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW +(cl-define-keysym #x1001ee5 "ubelowdot") ;U+1EE5 LATIN SMALL LETTER U WITH DOT BELOW +(cl-define-keysym #x1001ee6 "Uhook") ;U+1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE +(cl-define-keysym #x1001ee7 "uhook") ;U+1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE +(cl-define-keysym #x1001ee8 "Uhornacute") ;U+1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE +(cl-define-keysym #x1001ee9 "uhornacute") ;U+1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE +(cl-define-keysym #x1001eea "Uhorngrave") ;U+1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE +(cl-define-keysym #x1001eeb "uhorngrave") ;U+1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE +(cl-define-keysym #x1001eec "Uhornhook") ;U+1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +(cl-define-keysym #x1001eed "uhornhook") ;U+1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE +(cl-define-keysym #x1001eee "Uhorntilde") ;U+1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE +(cl-define-keysym #x1001eef "uhorntilde") ;U+1EEF LATIN SMALL LETTER U WITH HORN AND TILDE +(cl-define-keysym #x1001ef0 "Uhornbelowdot") ;U+1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +(cl-define-keysym #x1001ef1 "uhornbelowdot") ;U+1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW +(cl-define-keysym #x1001ef4 "Ybelowdot") ;U+1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW +(cl-define-keysym #x1001ef5 "ybelowdot") ;U+1EF5 LATIN SMALL LETTER Y WITH DOT BELOW +(cl-define-keysym #x1001ef6 "Yhook") ;U+1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE +(cl-define-keysym #x1001ef7 "yhook") ;U+1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE +(cl-define-keysym #x1001ef8 "Ytilde") ;U+1EF8 LATIN CAPITAL LETTER Y WITH TILDE +(cl-define-keysym #x1001ef9 "ytilde") ;U+1EF9 LATIN SMALL LETTER Y WITH TILDE +(cl-define-keysym #x10001a0 "Ohorn") ;U+01A0 LATIN CAPITAL LETTER O WITH HORN +(cl-define-keysym #x10001a1 "ohorn") ;U+01A1 LATIN SMALL LETTER O WITH HORN +(cl-define-keysym #x10001af "Uhorn") ;U+01AF LATIN CAPITAL LETTER U WITH HORN +(cl-define-keysym #x10001b0 "uhorn") ;U+01B0 LATIN SMALL LETTER U WITH HORN +(cl-define-keysym #x10020a0 "EcuSign") ;U+20A0 EURO-CURRENCY SIGN +(cl-define-keysym #x10020a1 "ColonSign") ;U+20A1 COLON SIGN +(cl-define-keysym #x10020a2 "CruzeiroSign") ;U+20A2 CRUZEIRO SIGN +(cl-define-keysym #x10020a3 "FFrancSign") ;U+20A3 FRENCH FRANC SIGN +(cl-define-keysym #x10020a4 "LiraSign") ;U+20A4 LIRA SIGN +(cl-define-keysym #x10020a5 "MillSign") ;U+20A5 MILL SIGN +(cl-define-keysym #x10020a6 "NairaSign") ;U+20A6 NAIRA SIGN +(cl-define-keysym #x10020a7 "PesetaSign") ;U+20A7 PESETA SIGN +(cl-define-keysym #x10020a8 "RupeeSign") ;U+20A8 RUPEE SIGN +(cl-define-keysym #x10020a9 "WonSign") ;U+20A9 WON SIGN +(cl-define-keysym #x10020aa "NewSheqelSign") ;U+20AA NEW SHEQEL SIGN +(cl-define-keysym #x10020ab "DongSign") ;U+20AB DONG SIGN +(cl-define-keysym #x20ac "EuroSign") ;U+20AC EURO SIGN +(cl-define-keysym #x1002070 "zerosuperior") ;U+2070 SUPERSCRIPT ZERO +(cl-define-keysym #x1002074 "foursuperior") ;U+2074 SUPERSCRIPT FOUR +(cl-define-keysym #x1002075 "fivesuperior") ;U+2075 SUPERSCRIPT FIVE +(cl-define-keysym #x1002076 "sixsuperior") ;U+2076 SUPERSCRIPT SIX +(cl-define-keysym #x1002077 "sevensuperior") ;U+2077 SUPERSCRIPT SEVEN +(cl-define-keysym #x1002078 "eightsuperior") ;U+2078 SUPERSCRIPT EIGHT +(cl-define-keysym #x1002079 "ninesuperior") ;U+2079 SUPERSCRIPT NINE +(cl-define-keysym #x1002080 "zerosubscript") ;U+2080 SUBSCRIPT ZERO +(cl-define-keysym #x1002081 "onesubscript") ;U+2081 SUBSCRIPT ONE +(cl-define-keysym #x1002082 "twosubscript") ;U+2082 SUBSCRIPT TWO +(cl-define-keysym #x1002083 "threesubscript") ;U+2083 SUBSCRIPT THREE +(cl-define-keysym #x1002084 "foursubscript") ;U+2084 SUBSCRIPT FOUR +(cl-define-keysym #x1002085 "fivesubscript") ;U+2085 SUBSCRIPT FIVE +(cl-define-keysym #x1002086 "sixsubscript") ;U+2086 SUBSCRIPT SIX +(cl-define-keysym #x1002087 "sevensubscript") ;U+2087 SUBSCRIPT SEVEN +(cl-define-keysym #x1002088 "eightsubscript") ;U+2088 SUBSCRIPT EIGHT +(cl-define-keysym #x1002089 "ninesubscript") ;U+2089 SUBSCRIPT NINE +(cl-define-keysym #x1002202 "partdifferential") ;U+2202 PARTIAL DIFFERENTIAL +(cl-define-keysym #x1002205 "emptyset") ;U+2205 NULL SET +(cl-define-keysym #x1002208 "elementof") ;U+2208 ELEMENT OF +(cl-define-keysym #x1002209 "notelementof") ;U+2209 NOT AN ELEMENT OF +(cl-define-keysym #x100220B "containsas") ;U+220B CONTAINS AS MEMBER +(cl-define-keysym #x100221A "squareroot") ;U+221A SQUARE ROOT +(cl-define-keysym #x100221B "cuberoot") ;U+221B CUBE ROOT +(cl-define-keysym #x100221C "fourthroot") ;U+221C FOURTH ROOT +(cl-define-keysym #x100222C "dintegral") ;U+222C DOUBLE INTEGRAL +(cl-define-keysym #x100222D "tintegral") ;U+222D TRIPLE INTEGRAL +(cl-define-keysym #x1002235 "because") ;U+2235 BECAUSE +(cl-define-keysym #x1002248 "approxeq") ;U+2245 ALMOST EQUAL TO +(cl-define-keysym #x1002247 "notapproxeq") ;U+2247 NOT ALMOST EQUAL TO +(cl-define-keysym #x1002262 "notidentical") ;U+2262 NOT IDENTICAL TO +(cl-define-keysym #x1002263 "stricteq") ;U+2263 STRICTLY EQUIVALENT TO Added: clfswm/load.lisp ============================================================================== --- (empty file) +++ clfswm/load.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,59 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Tue Feb 26 23:00:22 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: System loading functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + + +(defparameter *base-dir* (directory-namestring *load-truename*)) + +#+CMU +(setf ext:*gc-verbose* nil) + +#+CMU +(require :clx) + +#+SBCL +(require :asdf) + +#+SBCL +(require :sb-posix) + +#+SBCL +(require :clx) + +#-ASDF +(load (make-pathname :host (pathname-host *base-dir*) + :device (pathname-device *base-dir*) + :directory (pathname-directory *base-dir*) + :name "asdf" :type "lisp")) + +(push *base-dir* asdf:*central-registry*) + + +(asdf:oos 'asdf:load-op :clfswm) + +(in-package :clfswm) + +(clfswm:main ":0") Added: clfswm/my-html.lisp ============================================================================== --- (empty file) +++ clfswm/my-html.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,123 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Fri Dec 21 23:00:35 2007 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Html generator helper +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + + + +(in-package :common-lisp-user) + +(defpackage :my-html + (:use :common-lisp :tools) + (:export :insert-html-doctype + :produce-html + :with-html + :produce-html-string)) + +(in-package :my-html) + + +(defun insert-html-doctype () + "") + + + +(defun produce-html (tree &optional (level 0) (stream *standard-output*)) + (cond ((listp tree) + (print-space level stream) + (format stream "~(<~A>~)~%" (first tree)) + (dolist (subtree (rest tree)) + (produce-html subtree (+ 2 level) stream)) + (print-space level stream) + (format stream "~(~)~%" + (if (stringp (first tree)) + (subseq (first tree) 0 (position #\Space (first tree))) + (first tree)))) + (t + (print-space level stream) + (format stream (if (stringp tree) "~A~%" "~(~A~)~%") tree)))) + + +(defmacro with-html ((&optional (stream t)) &rest rest) + `(produce-html ', at rest 0 ,stream)) + + +(defun produce-html-string (tree &optional (level 0)) + (with-output-to-string (str) + (produce-html tree level str))) + + + + +(defun test1 () + (produce-html `(html + (head + (title "Plop")) + (body + (h1 "A title") + (h2 "plop") + Plop ,(+ 2 2) + ,(format nil "Plip=~A" (+ 3 5)) + ("a href=\"index.html\"" index) + (ul + (li "toto") + (li "klm")))))) + + +(defun test2 () + (with-html () + (html + (head + (title "Plop")) + "" + (body + (h1 "Un titre") + (h2 "plop") + (ul + (li "toto") + (li "klm")))))) + + +(defun test3 () + (produce-html-string `(html + (head + (title "Plop")) + (body + (h1 "A title") + (h2 plop) + Plop ,(+ 2 2) + ,(format nil "Plip=~A" (+ 3 5)) + |Foo Bar Baz| + ("a href=\"index.html\"" Index) + (ul + (li "toto") + (li "klm")))) + 10)) + + + + + Added: clfswm/netwm-util.lisp ============================================================================== --- (empty file) +++ clfswm/netwm-util.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,95 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Wed Feb 20 23:26:21 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: NetWM functions +;;; http://freedesktop.org/wiki/Specifications_2fwm_2dspec +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + +;;; Client List functions +(defun netwm-set-client-list (id-list) + (xlib:change-property *root* :_NET_CLIENT_LIST id-list :window 32)) + +(defun netwm-get-client-list () + (xlib:get-property *root* :_NET_CLIENT_LIST)) + +(defun netwm-add-in-client-list (window) + (let ((last-list (netwm-get-client-list))) + (pushnew (xlib:window-id window) last-list) + (netwm-set-client-list last-list))) + +(defun netwm-remove-in-client-list (window) + (netwm-set-client-list (remove (xlib:window-id window) (netwm-get-client-list)))) + + + +;;; Desktop functions ;; +PHIL +(defun netwm-update-desktop-property () + ;; (xlib:change-property *root* :_NET_NUMBER_OF_DESKTOPS + ;; (list (length *workspace-list*)) :cardinal 32) + ;; (xlib:change-property *root* :_NET_DESKTOP_GEOMETRY + ;; (list (xlib:screen-width *screen*) + ;; (xlib:screen-height *screen*)) + ;; :cardinal 32) + ;; (xlib:change-property *root* :_NET_DESKTOP_VIEWPORT + ;; (list 0 0) :cardinal 32) + ;; (xlib:change-property *root* :_NET_CURRENT_DESKTOP + ;; (list 1) :cardinal 32) +;;; TODO + ;;(xlib:change-property *root* :_NET_DESKTOP_NAMES + ;; (list "toto" "klm" "poi") :string 8 :transform #'xlib:char->card8)) + ) + + + + +;;; Taken from stumpwm (thanks) +(defun netwm-set-properties () + "Set NETWM properties on the root window of the specified screen. +FOCUS-WINDOW is an extra window used for _NET_SUPPORTING_WM_CHECK." + ;; _NET_SUPPORTED + (xlib:change-property *root* :_NET_SUPPORTED + (mapcar (lambda (a) + (xlib:intern-atom *display* a)) + (append +netwm-supported+ + (mapcar 'car +netwm-window-types+))) + :atom 32) + ;; _NET_SUPPORTING_WM_CHECK + (xlib:change-property *root* :_NET_SUPPORTING_WM_CHECK + (list *no-focus-window*) :window 32 + :transform #'xlib:drawable-id) + (xlib:change-property *no-focus-window* :_NET_SUPPORTING_WM_CHECK + (list *no-focus-window*) :window 32 + :transform #'xlib:drawable-id) + (xlib:change-property *no-focus-window* :_NET_WM_NAME + "clfswm" + :string 8 :transform #'xlib:char->card8) + (netwm-update-desktop-property)) + + + + + Added: clfswm/package.lisp ============================================================================== --- (empty file) +++ clfswm/package.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,203 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Mon Feb 25 21:33:22 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Package definition +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :cl-user) + +(defpackage clfswm + (:use :common-lisp :my-html :tools) + ;;(:shadow :defun) + (:export :main)) + +(in-package :clfswm) + + +(defparameter *display* nil) +(defparameter *screen* nil) +(defparameter *root* nil) +(defparameter *no-focus-window* nil) +(defparameter *root-gc* nil) + +(defparameter *default-font* nil) +;;(defparameter *default-font-string* "9x15") +(defparameter *default-font-string* "fixed") + + +(defparameter *child-selection* nil) + +(defparameter *layout-list* nil) + + +;;(defstruct group (number (incf *current-group-number*)) name +;; (x 0) (y 0) (w 1) (h 1) rx ry rw rh +;; layout window gc child) + +(defclass group () + ((name :initarg :name :accessor group-name :initform nil) + (number :initarg :number :accessor group-number :initform 0) + ;;; Float size between 0 and 1 - Manipulate only this variable and not real size + (x :initarg :x :accessor group-x :initform 0.1) + (y :initarg :y :accessor group-y :initform 0.1) + (w :initarg :w :accessor group-w :initform 0.8) + (h :initarg :h :accessor group-h :initform 0.8) + ;;; Real size (integer) in screen size - Don't set directly this variables + ;;; they may be recalculated by the layout manager. + (rx :initarg :rx :accessor group-rx :initform 0) + (ry :initarg :ry :accessor group-ry :initform 0) + (rw :initarg :rw :accessor group-rw :initform 800) + (rh :initarg :rh :accessor group-rh :initform 600) + (layout :initarg :layout :accessor group-layout :initform nil) + (window :initarg :window :accessor group-window :initform nil) + (gc :initarg :gc :accessor group-gc :initform nil) + (child :initarg :child :accessor group-child :initform nil) + (data :initarg :data :accessor group-data + :initform (list '(:tile-size 0.8) '(:tile-space-size 0.1)) + :documentation "An assoc list to store additional data"))) + + + +(defparameter *root-group* nil + "Root of the root - ie the root group") +(defparameter *current-root* nil + "The current fullscreen maximized child") +(defparameter *current-child* nil + "The current child with the focus") + +(defparameter *show-root-group-p* nil) + + +(defparameter *main-keys* (make-hash-table :test 'equal)) +(defparameter *second-keys* (make-hash-table :test 'equal)) +(defparameter *mouse-action* (make-hash-table :test 'equal)) +(defparameter *pager-keys* (make-hash-table :test 'equal)) +(defparameter *pager-mouse-action* (make-hash-table :test 'equal)) +(defparameter *info-keys* (make-hash-table :test 'equal)) +(defparameter *info-mouse-action* (make-hash-table :test 'equal)) + + +(defparameter *open-next-window-in-new-workspace* nil + "Set to t to open the next window in a new workspace +or to a number to open in a numbered workspace") + +(defparameter *open-next-window-in-new-group* nil + "Set to t to open the each next window in a new group +or set to :once open the next window in a new group and all +others in the same group") + +(defparameter *arrow-action* nil + "Arrow action in the second mode") + +(defparameter *pager-arrow-action* nil + "Arrow action in the pager mode") + + + +;;; Hook definitions +;;; +;;; A hook is a function, a symbol or a list of functions with a rest +;;; arguments. +;;; +;;; This hooks are set in clfswm.lisp, you can overwrite them or extend +;;; them with a hook list. +;;; +;;; See clfswm.lisp for hooks examples. + +;;; Init hook. This hook is run just after the first root group is created +(defparameter *init-hook* nil) + +;;; Main mode hooks (set in clfswm.lisp) +(defparameter *button-press-hook* nil) +(defparameter *button-motion-notify-hook* nil) +(defparameter *key-press-hook* nil) +(defparameter *configure-request-hook* nil) +(defparameter *configure-notify-hook* nil) +(defparameter *create-notify-hook* nil) +(defparameter *destroy-notify-hook* nil) +(defparameter *enter-notify-hook* nil) +(defparameter *exposure-hook* nil) +(defparameter *map-request-hook* nil) +(defparameter *mapping-notify-hook* nil) +(defparameter *property-notify-hook* nil) +(defparameter *unmap-notify-hook* nil) + + +;;; Second mode hooks (set in clfswm-second-mode.lisp) +(defparameter *sm-button-press-hook* nil) +(defparameter *sm-button-release-hook* nil) +(defparameter *sm-motion-notify-hook* nil) +(defparameter *sm-key-press-hook* nil) +(defparameter *sm-configure-request-hook* nil) +(defparameter *sm-configure-notify-hook* nil) +(defparameter *sm-map-request-hook* nil) +(defparameter *sm-unmap-notify-hook* nil) +(defparameter *sm-destroy-notify-hook* nil) +(defparameter *sm-mapping-notify-hook* nil) +(defparameter *sm-property-notify-hook* nil) +(defparameter *sm-create-notify-hook* nil) +(defparameter *sm-enter-notify-hook* nil) +(defparameter *sm-exposure-hook* nil) + + +;;; Pager mode hooks (set in clfswm-pager.lisp) +(defparameter *pager-button-press-hook* nil) +(defparameter *pager-button-release-hook* nil) +(defparameter *pager-motion-notify-hook* nil) +(defparameter *pager-key-press-hook* nil) +(defparameter *pager-configure-request-hook* nil) +(defparameter *pager-map-request-hook* nil) +(defparameter *pager-unmap-notify-hook* nil) +(defparameter *pager-destroy-notify-hook* nil) +(defparameter *pager-mapping-notify-hook* nil) +(defparameter *pager-property-notify-hook* nil) +(defparameter *pager-create-notify-hook* nil) +(defparameter *pager-enter-notify-hook* nil) +(defparameter *pager-exposure-hook* nil) + + +;;; Second mode global variables +(defparameter *motion-action* nil) +(defparameter *motion-object* nil) +(defparameter *motion-start-group* nil) +(defparameter *motion-dx* nil) +(defparameter *motion-dy* nil) + + +;; For debug - redefine defun +;;(shadow :defun) +;; +;;(defmacro defun (name args &body body) +;; `(progn +;; (format t "defun: ~A ~A~%" ',name ',args) +;; (force-output) +;; (cl:defun ,name ,args +;; (handler-case +;; (progn +;; , at body) +;; (error (c) +;; (format t "New defun: Error in ~A : ~A~%" ',name c) +;; (format t "Root tree=~A~%All windows=~A~%" +;; (xlib:query-tree *root*) (get-all-windows)) +;; (force-output)))))) Added: clfswm/program ============================================================================== --- (empty file) +++ clfswm/program Sat Mar 1 07:49:46 2008 @@ -0,0 +1,26 @@ + +Show clfswm help (Alt-F1) - Main mode, Second mode and Pager mode + +Show group creation on root window and pager usage + +Create new window with the shell or the ! clfswm command or apwal + (xterm, epiphany, abiword) + +Move groups, pack, rezise, fill and same things with the pager + +Swap two workspaces, renumber + +Show a Gimp usage. + +Show xmms and free windows + +Copy 3 times the same group and explode group (control+Y) and implode (control+shift+Y) + +Show eval application: larswm tile mode (y and Alt+Y) + -> enabled when switching groups "tile.lisp" + +Show live debugging: *workspace-list*, *screen*, (query-tree *root*), + wm-name, config.lisp... + + +And so on . Bye! \ No newline at end of file Added: clfswm/sbcl-load.lisp ============================================================================== --- (empty file) +++ clfswm/sbcl-load.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,7 @@ +(require :sb-posix) +(require :clx) +(require :clfswm) + +(in-package :clfswm) + +;;(clfswm:main ":1") Added: clfswm/tools.lisp ============================================================================== --- (empty file) +++ clfswm/tools.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,749 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Tue Feb 26 21:53:55 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: General tools +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + + +(in-package :common-lisp-user) + +(defpackage tools + (:use common-lisp) + (:export :it + :awhen + :aif + :dbg + :dbgnl + :setf/= + :create-symbol + :split-string + :expand-newline + :ensure-list + :ensure-printable + :find-assoc-word + :print-space + :escape-string + :first-position + :find-free-number + :do-execute + :do-shell + :getenv + :uquit + :urun-prog + :ushell + :ush + :ushell-loop + :cldebug + :get-command-line-words + :string-to-list + :near-position + :string-to-list-multichar + :list-to-string + :list-to-string-list + :clean-string + :one-in-list + :exchange-one-in-list + :rotate-list + :anti-rotate-list + :append-formated-list + :shuffle-list + :parse-integer-in-list + :convert-to-number + :next-in-list :prev-in-list + :find-string + :find-all-strings + :subst-strings + :test-find-string)) + + +(in-package :tools) + + +(setq *random-state* (make-random-state t)) + + + +(defmacro awhen (test &body body) + `(let ((it ,test)) + (when it + , at body))) + +(defmacro aif (test then &optional else) + `(let ((it ,test)) (if it ,then ,else))) + + +;;;,----- +;;;| Debuging tools +;;;`----- +(defvar *%dbg-name%* "dbg") +(defvar *%dbg-count%* 0) + + +(defmacro dbg (&rest forms) + `(progn + ,@(mapcar #'(lambda (form) + (typecase form + (string `(setf *%dbg-name%* ,form)) + (number `(setf *%dbg-count%* ,form)))) + forms) + (format t "~&DEBUG[~A - ~A] " (incf *%dbg-count%*) *%dbg-name%*) + ,@(mapcar #'(lambda (form) + (typecase form + ((or string number) nil) + (t `(format t "~A=~S " ',form ,form)))) + forms) + (format t "~%") + (force-output) + , at forms)) + +(defmacro dbgnl (&rest forms) + `(progn + ,@(mapcar #'(lambda (form) + (typecase form + (string `(setf *%dbg-name%* ,form)) + (number `(setf *%dbg-count%* ,form)))) + forms) + (format t "~&DEBUG[~A - ~A] --------------------~%" (incf *%dbg-count%*) *%dbg-name%*) + ,@(mapcar #'(lambda (form) + (typecase form + ((or string number) nil) + (t `(format t " - ~A=~S~%" ',form ,form)))) + forms) + (force-output) + , at forms)) + + + + + + +;;; Tools + + +(defmacro setf/= (var val) + "Set var to val only when var not equal to val" + (let ((gval (gensym))) + `(let ((,gval ,val)) + (when (/= ,var ,gval) + (setf ,var ,gval))))) + + +(defun create-symbol (&rest names) + "Return a new symbol from names" + (intern (string-upcase (apply #'concatenate 'string names)))) + + +(defun split-string (string &optional (separator #\Space)) + "Return a list from a string splited at each separators" + (loop for i = 0 then (1+ j) + as j = (position separator string :start i) + as sub = (subseq string i j) + unless (string= sub "") collect sub + while j)) + + +(defun expand-newline (list) + "Expand all newline in strings in list" + (let ((acc nil)) + (dolist (l list) + (setf acc (append acc (split-string l #\Newline)))) + acc)) + +(defun ensure-list (object) + "Ensure an object is a list" + (if (listp object) + object + (list object))) + + +(defun ensure-printable (string &optional (new #\?)) + "Ensure a string is printable in ascii" + (substitute-if-not new #'standard-char-p string)) + + + + +(defun find-assoc-word (word line &optional (delim #\")) + "Find a word pair" + (let* ((pos (search word line)) + (pos-1 (position delim line :start (or pos 0))) + (pos-2 (position delim line :start (1+ (or pos-1 0))))) + (when (and pos pos-1 pos-2) + (subseq line (1+ pos-1) pos-2)))) + + +(defun print-space (n &optional (stream *standard-output*)) + "Print n spaces on stream" + (dotimes (i n) + (princ #\Space stream))) + + +(defun escape-string (string &optional (escaper '(#\/ #\: #\) #\( #\Space #\; #\,)) (char #\_)) + "Replace in string all characters found in the escaper list" + (if escaper + (escape-string (substitute char (car escaper) string) (cdr escaper) char) + string)) + + + +(defun first-position (word string) + "Return true only if word is at position 0 in string" + (zerop (or (search word string) -1))) + + +(defun find-free-number (l) ; stolen from stumpwm - thanks + "Return a number that is not in the list l." + (let* ((nums (sort l #'<)) + (new-num (loop for n from 0 to (or (car (last nums)) 0) + for i in nums + when (/= n i) + do (return n)))) + (if new-num + new-num + ;; there was no space between the numbers, so use the last + 1 + (if (car (last nums)) + (1+ (car (last nums))) + 0)))) + + + + + +;;; Shell part (taken from ltk) +(defun do-execute (program args &optional (wt nil)) + "execute program with args a list containing the arguments passed to +the program if wt is non-nil, the function will wait for the execution +of the program to return. + returns a two way stream connected to stdin/stdout of the program" + (let ((fullstring program)) + (dolist (a args) + (setf fullstring (concatenate 'string fullstring " " a))) + #+:cmu (let ((proc (ext:run-program program args :input :stream + :output :stream :wait wt))) + (unless proc + (error "Cannot create process.")) + (make-two-way-stream + (ext:process-output proc) + (ext:process-input proc))) + #+:clisp (let ((proc (ext:run-program program :arguments args + :input :stream :output + :stream :wait (or wt t)))) + (unless proc + (error "Cannot create process.")) + proc) + #+:sbcl (let ((proc (sb-ext:run-program program args :input + :stream :output + :stream :wait wt))) + (unless proc + (error "Cannot create process.")) + (make-two-way-stream + (sb-ext:process-output proc) + (sb-ext:process-input proc))) + #+:lispworks (system:open-pipe fullstring :direction :io) + #+:allegro (let ((proc (excl:run-shell-command + (apply #'vector program program args) + :input :stream :output :stream :wait wt))) + (unless proc + (error "Cannot create process.")) + proc) + #+:ecl(ext:run-program program args :input :stream :output :stream + :error :output) + #+:openmcl (let ((proc (ccl:run-program program args :input + :stream :output + :stream :wait wt))) + (unless proc + (error "Cannot create process.")) + (make-two-way-stream + (ccl:external-process-output-stream proc) + (ccl:external-process-input-stream proc))))) + +(defun do-shell (program &optional args (wt nil)) + (do-execute "/bin/sh" `("-c" ,program , at args) wt)) + + + + + + + +(defun getenv (var) + "Return the value of the environment variable." + #+allegro (sys::getenv (string var)) + #+clisp (ext:getenv (string var)) + #+(or cmu scl) + (cdr (assoc (string var) ext:*environment-list* :test #'equalp + :key #'string)) + #+gcl (si:getenv (string var)) + #+lispworks (lw:environment-variable (string var)) + #+lucid (lcl:environment-variable (string var)) + #+mcl (ccl::getenv var) + #+sbcl (sb-posix:getenv (string var)) + #-(or allegro clisp cmu gcl lispworks lucid mcl sbcl scl) + (error 'not-implemented :proc (list 'getenv var))) + + +(defun (setf getenv) (val var) + "Set an environment variable." + #+allegro (setf (sys::getenv (string var)) (string val)) + #+clisp (setf (ext:getenv (string var)) (string val)) + #+(or cmu scl) + (let ((cell (assoc (string var) ext:*environment-list* :test #'equalp + :key #'string))) + (if cell + (setf (cdr cell) (string val)) + (push (cons (intern (string var) "KEYWORD") (string val)) + ext:*environment-list*))) + #+gcl (si:setenv (string var) (string val)) + #+lispworks (setf (lw:environment-variable (string var)) (string val)) + #+lucid (setf (lcl:environment-variable (string var)) (string val)) + #+sbcl (sb-posix:putenv (format nil "~A=~A" (string var) (string val))) + #-(or allegro clisp cmu gcl lispworks lucid sbcl scl) + (error 'not-implemented :proc (list '(setf getenv) var))) + + + + + + + +(defun uquit () + #+(or clisp cmu) (ext:quit) + #+sbcl (sb-ext:quit) + #+ecl (si:quit) + #+gcl (lisp:quit) + #+lispworks (lw:quit) + #+(or allegro-cl allegro-cl-trial) (excl:exit)) + + + + +(defun remove-plist (plist &rest keys) + "Remove the keys from the plist. +Useful for re-using the &REST arg after removing some options." + (do (copy rest) + ((null (setq rest (nth-value 2 (get-properties plist keys)))) + (nreconc copy plist)) + (do () ((eq plist rest)) + (push (pop plist) copy) + (push (pop plist) copy)) + (setq plist (cddr plist)))) + + + + +(defun urun-prog (prog &rest opts &key args (wait t) &allow-other-keys) + "Common interface to shell. Does not return anything useful." + #+gcl (declare (ignore wait)) + (setq opts (remove-plist opts :args :wait)) + #+allegro (apply #'excl:run-shell-command (apply #'vector prog prog args) + :wait wait opts) + #+(and clisp lisp=cl) + (apply #'ext:run-program prog :arguments args :wait wait opts) + #+(and clisp (not lisp=cl)) + (if wait + (apply #'lisp:run-program prog :arguments args opts) + (lisp:shell (format nil "~a~{ '~a'~} &" prog args))) + #+cmu (apply #'ext:run-program prog args :wait wait :output *standard-output* opts) + #+gcl (apply #'si:run-process prog args) + #+liquid (apply #'lcl:run-program prog args) + #+lispworks (apply #'sys::call-system-showing-output + (format nil "~a~{ '~a'~}~@[ &~]" prog args (not wait)) + opts) + #+lucid (apply #'lcl:run-program prog :wait wait :arguments args opts) + #+sbcl (apply #'sb-ext:run-program prog args :wait wait :output *standard-output* opts) + #-(or allegro clisp cmu gcl liquid lispworks lucid sbcl) + (error 'not-implemented :proc (list 'run-prog prog opts))) + + +;;(defparameter *shell-cmd* "/usr/bin/env") +;;(defparameter *shell-cmd-opt* nil) + +#+UNIX (defparameter *shell-cmd* "/bin/sh") +#+UNIX (defparameter *shell-cmd-opt* '("-c")) + +#+WIN32 (defparameter *shell-cmd* "cmd.exe") +#+WIN32 (defparameter *shell-cmd-opt* '("/C")) + + +(defun ushell (&rest strings) + (urun-prog *shell-cmd* :args (append *shell-cmd-opt* strings))) + +(defun ush (string) + (urun-prog *shell-cmd* :args (append *shell-cmd-opt* (list string)))) + + +(defun set-shell-dispatch (&optional (shell-fun 'ushell)) + (labels ((|shell-reader| (stream subchar arg) + (declare (ignore subchar arg)) + (list shell-fun (read stream t nil t)))) + (set-dispatch-macro-character #\# #\# #'|shell-reader|))) + + +(defun ushell-loop (&optional (shell-fun #'ushell)) + (loop + (format t "UNI-SHELL> ") + (let* ((line (read-line))) + (cond ((zerop (or (search "quit" line) -1)) (return)) + ((zerop (or (position #\! line) -1)) + (funcall shell-fun (subseq line 1))) + (t (format t "~{~A~^ ;~%~}~%" + (multiple-value-list + (ignore-errors (eval (read-from-string line)))))))))) + + + + + + +(defun cldebug (&rest rest) + (princ "DEBUG: ") + (dolist (i rest) + (princ i)) + (terpri)) + + +(defun get-command-line-words () + #+CLISP ext:*args* + #+CMU (nthcdr 3 extensions:*command-line-strings*) + #+SBCL sb-ext:*posix-argv*) + + + +(defun string-to-list (str &key (split-char #\space)) + (do* ((start 0 (1+ index)) + (index (position split-char str :start start) + (position split-char str :start start)) + (accum nil)) + ((null index) + (unless (string= (subseq str start) "") + (push (subseq str start) accum)) + (nreverse accum)) + (when (/= start index) + (push (subseq str start index) accum)))) + + +(defun near-position (chars str &key (start 0)) + (do* ((char chars (cdr char)) + (pos (position (car char) str :start start) + (position (car char) str :start start)) + (ret (when pos pos) + (if pos + (if ret + (if (< pos ret) + pos + ret) + pos) + ret))) + ((null char) ret))) + + +;;;(defun near-position2 (chars str &key (start 0)) +;;; (loop for i in chars +;;; minimize (position i str :start start))) + +;;(format t "~S~%" (near-position '(#\! #\. #\Space #\;) "klmsqk ppii;dsdsqkl.jldfksj lkm" :start 0)) +;;(format t "~S~%" (near-position '(#\Space) "klmsqk ppii;dsdsqkl.jldfksj lkm" :start 0)) +;;(format t "~S~%" (near-position '(#\; #\l #\m) "klmsqk ppii;dsdsqkl.jldfksj lkm" :start 0)) +;;(format t "result=~S~%" (string-to-list-multichar "klmsqk ppii;dsdsqkl.jldfksj lkm" :preserve t)) +;;(format t "result=~S~%" (string-to-list-multichar "klmsqk ppii;dsd!sqkl.jldfksj lkm" +;; :split-chars '(#\k #\! #\. #\; #\m) +;; :preserve nil)) + + +(defun string-to-list-multichar (str &key (split-chars '(#\space)) (preserve nil)) + (do* ((start 0 (1+ index)) + (index (near-position split-chars str :start start) + (near-position split-chars str :start start)) + (accum nil)) + ((null index) + (unless (string= (subseq str start) "") + (push (subseq str start) accum)) + (nreverse accum)) + (let ((retstr (subseq str start (if preserve (1+ index) index)))) + (unless (string= retstr "") + (push retstr accum))))) + + + + + +(defun list-to-string (lst) + (string-trim " () " (format nil "~A" lst))) + + + +(defun clean-string (string) + "Remove Newline and upcase string" + (string-upcase + (string-right-trim '(#\Newline) string))) + +(defun one-in-list (lst) + (nth (random (length lst)) lst)) + +(defun exchange-one-in-list (lst1 lst2) + (let ((elem1 (one-in-list lst1)) + (elem2 (one-in-list lst2))) + (setf lst1 (append (remove elem1 lst1) (list elem2))) + (setf lst2 (append (remove elem2 lst2) (list elem1))) + (values lst1 lst2))) + + +(defun rotate-list (list) + (when list + (append (cdr list) (list (car list))))) + +(defun anti-rotate-list (list) + (when list + (append (last list) (butlast list)))) + + +(defun append-formated-list (base-str + lst + &key (test-not-fun #'(lambda (x) x nil)) + (print-fun #'(lambda (x) x)) + (default-str "")) + (let ((str base-str) (first t)) + (dolist (i lst) + (cond ((funcall test-not-fun i) nil) + (t (setq str + (concatenate 'string str + (if first "" ", ") + (format nil "~A" + (funcall print-fun i)))) + (setq first nil)))) + (if (string= base-str str) + (concatenate 'string str default-str) str))) + + +(defun shuffle-list (list &key (time 1)) + "Shuffle a list by swapping elements time times" + (let ((result (copy-list list)) + (ind1 0) (ind2 0) (swap 0)) + (dotimes (i time) + (setf ind1 (random (length result))) + (setf ind2 (random (length result))) + + (setf swap (nth ind1 result)) + (setf (nth ind1 result) (nth ind2 result)) + (setf (nth ind2 result) swap)) + result)) + + + +(defun convert-to-number (str) + (cond ((stringp str) (parse-integer str :junk-allowed t)) + ((numberp str) str))) + +(defun parse-integer-in-list (lst) + "Convert all integer string in lst to integer" + (mapcar #'(lambda (x) (convert-to-number x)) lst)) + + + +(defun next-in-list (item lst) + (do ((x lst (cdr x))) + ((null x)) + (when (equal item (car x)) + (return (if (cadr x) (cadr x) (car lst)))))) + +(defun prev-in-list (item lst) + (next-in-list item (reverse lst))) + + +;;(defun transfert-stream (in out length &key (bufsize 4096)) +;;;; (ignore-errors +;; (do* ((data (make-array bufsize +;; :element-type (stream-element-type in))) +;; (len 0 (read-sequence data in +;; :start 0 +;; :end (if (> (+ wlen bufsize) length) +;; (- length wlen) +;; bufsize))) +;; (wlen 0 (+ wlen len))) +;; ((>= wlen length) (write-sequence data out :start 0 :end len)) +;; (write-sequence data out :start 0 :end len)));) +;; +;; +;; +;; +;; +;;(defun my-copy-file (in-name out-name) +;; (with-open-file +;; (in in-name :direction :input :element-type '(unsigned-byte 8)) +;; (with-open-file +;; (out out-name :direction :output +;; :if-exists :supersede +;; :element-type '(unsigned-byte 8)) +;; (transfert-stream in out (file-length in))))) + + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ;; +;; Find String part. ;; +;; ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defun find-string (substr str &key (start 0) (end nil) + (test nil) (ignore-case nil)) + "Find substr in str. Return begin and end of substr in str as two values. +Start and end set the findinq region. Ignore-case make find-string case +insensitive. +Test (if needed) must be a function which take str pos1 pos2 and must return +new positions of the substr in str as two values" + (when (and end (>= start end)) + (return-from find-string nil)) + (let ((pos1 (- start 1)) + (pos2 nil) + (len (length substr))) + (when ignore-case + (setq str (string-upcase str) + substr (string-upcase substr))) + (do ((done nil)) + (done (if (functionp test) + (funcall test str pos1 pos2) + (values pos1 pos2))) + (setq pos1 (position (aref substr 0) str :start (+ pos1 1) :end end)) + (unless pos1 + (return-from find-string nil)) + (setq pos2 (string>= str substr :start1 pos1 :end1 end)) + (when (and pos2 (= (- pos2 pos1) len)) + (setq done t))))) + + + +(defun find-all-strings (substr str &key (start 0) (end nil) + (test nil) (ignore-case nil)) + "Find all substr in str. Parameters are the same as find-string. +Return a list with all begin and end positions of substr in str +ie: '((pos1.1 pos1.2) (pos2.1 pos2.2))..." + (do ((pos (multiple-value-list + (find-string substr str :start start :end end + :test test :ignore-case ignore-case)) + (multiple-value-list + (find-string substr str :start (second pos) :end end + :test test :ignore-case ignore-case))) + (accum nil)) + ((equal pos '(nil)) (nreverse accum)) + (push pos accum))) + + + +(defun subst-strings (new substr str &key (start 0) (end nil) + (test nil) (ignore-case nil)) + "Substitute all substr strings in str with new. +New must be a string or a function witch takes str pos1 pos2 +as parameters and return a string to replace substr" + (let ((outstr (subseq str 0 start)) + (pos1 start) + (pos2 0) + (newpos 0)) + (unless end + (setq end (length str))) + (do ((done nil)) + (done outstr) + (multiple-value-setq + (pos2 newpos) + (find-string substr str :start pos1 :end end + :test test :ignore-case ignore-case)) + (if pos2 + (progn + (setq outstr (concatenate 'string + outstr + (subseq str pos1 pos2) + (if (functionp new) + (funcall new str pos2 newpos) + new))) + (setq pos1 (if (and newpos (<= newpos end)) + newpos + end))) + (progn + (setq outstr (concatenate 'string + outstr (subseq str pos1))) + (setq done t)))))) + + + +(defun my-find-string-test (str pos1 pos2) + (multiple-value-bind + (npos1 npos2) + (find-string "=>" str :start pos2) + (declare (ignore npos1)) + (values pos1 npos2))) + + +(defun test-find-string () + (let ((count 0) + (str "bla bla foo <= plop gloup => foo +baz bar <=klm poi => boo <=plop=> faz +lab totrs <= plip =>")) + + (format t "Original:~%~A~2%" str) + (format t "[1] Simple find on '<=': ~A~%" + (multiple-value-list + (find-string "<=" str))) + (format t "[2] Find with start=15/end=50: ~A~%" + (multiple-value-list + (find-string "<=" str :start 15 :end 50))) + + (format t "[3] Find with test (ie '<=.*=>'): ~A~%" + (multiple-value-bind + (pos1 pos2) + (find-string "<=" str :test #'my-find-string-test) + (subseq str pos1 pos2))) + + (format t "[4] Find all strings: ~A~%" + (find-all-strings "<=" str)) + + (format t "[5] Find all strings:~%") + (dolist (pos (find-all-strings "<=" str)) + (format t "Found: ~A~%" + (subseq str (car pos) (second pos)))) + + (format t "[6] Find all strings with test:~%") + (dolist (pos (find-all-strings "<=" str :test #'my-find-string-test)) + (format t "Found: ~A~%" (subseq str (car pos) (second pos)))) + + (format t "[7] Modifie '<=.*=>' with TOTO:~%~A" + (subst-strings "TOTO" "<=" str + :test #'my-find-string-test)) + (format t "~%") + (format t "[8] Modifie '<=.*=>' with a complex expression:~%~A~%" + (subst-strings + #'(lambda (str pos1 pos2) + (let ((repl (string-trim " " + (subseq str (+ pos1 2) (- pos2 2))))) + (format nil "<=~A:~A (~A)=>" + (incf count) + repl + (reverse repl)))) + "<=" str + :test #'(lambda (str pos1 pos2) + (multiple-value-bind + (npos1 npos2) + (find-string "=>" str :start pos2) + (declare (ignore npos1)) + (values pos1 npos2))))))) + + Added: clfswm/xlib-util.lisp ============================================================================== --- (empty file) +++ clfswm/xlib-util.lisp Sat Mar 1 07:49:46 2008 @@ -0,0 +1,491 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Thu Feb 28 21:55:00 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Utility functions +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + +;; Window states +(defconstant +withdrawn-state+ 0) +(defconstant +normal-state+ 1) +(defconstant +iconic-state+ 3) + + +(defparameter *window-events* '(:structure-notify + :property-change + :colormap-change + :focus-change + :enter-window + :exposure) + ;;:button-press + ;;:button-release) + "The events to listen for on managed windows.") + + +(defparameter +netwm-supported+ + '(:_NET_SUPPORTING_WM_CHECK + :_NET_NUMBER_OF_DESKTOPS + :_NET_DESKTOP_GEOMETRY + :_NET_DESKTOP_VIEWPORT + :_NET_CURRENT_DESKTOP + :_NET_WM_WINDOW_TYPE + :_NET_CLIENT_LIST) + "Supported NETWM properties. +Window types are in +WINDOW-TYPES+.") + +(defparameter +netwm-window-types+ + '((:_NET_WM_WINDOW_TYPE_DESKTOP . :desktop) + (:_NET_WM_WINDOW_TYPE_DOCK . :dock) + (:_NET_WM_WINDOW_TYPE_TOOLBAR . :toolbar) + (:_NET_WM_WINDOW_TYPE_MENU . :menu) + (:_NET_WM_WINDOW_TYPE_UTILITY . :utility) + (:_NET_WM_WINDOW_TYPE_SPLASH . :splash) + (:_NET_WM_WINDOW_TYPE_DIALOG . :dialog) + (:_NET_WM_WINDOW_TYPE_NORMAL . :normal)) + "Alist mapping NETWM window types to keywords.") + + +(defmacro with-xlib-protect (&body body) + "Prevent Xlib errors" + `(handler-case + (progn + , at body) + ((or xlib:match-error xlib:window-error xlib:drawable-error) (c) + (declare (ignore c))))) + + + +(defun parse-display-string (display) + "Parse an X11 DISPLAY string and return the host and display from it." + (let* ((colon (position #\: display)) + (host (subseq display 0 colon)) + (rest (subseq display (1+ colon))) + (dot (position #\. rest)) + (num (parse-integer (subseq rest 0 dot)))) + (values host num))) + + +(defun banish-pointer () + "Move the pointer to the lower right corner of the screen" + (xlib:warp-pointer *root* + (1- (xlib:screen-width *screen*)) + (1- (xlib:screen-height *screen*)))) + + + + + +(defun window-state (win) + "Get the state (iconic, normal, withdraw of a window." + (first (xlib:get-property win :WM_STATE))) + + +(defun set-window-state (win state) + "Set the state (iconic, normal, withdrawn) of a window." + (xlib:change-property win + :WM_STATE + (list state) + :WM_STATE + 32)) + +(defsetf window-state set-window-state) + + + +(defun window-hidden-p (window) + (eql (window-state window) +iconic-state+)) + + + +(defun unhide-window (window) + (when window + (with-xlib-protect + (xlib:map-window window) + (setf (window-state window) +normal-state+ + (xlib:window-event-mask window) *window-events*)))) + + + + + + + + + + + + + + +;;(defconstant +exwm-atoms+ +;; (list "_NET_SUPPORTED" "_NET_CLIENT_LIST" +;; "_NET_CLIENT_LIST_STACKING" "_NET_NUMBER_OF_DESKTOPS" +;; "_NET_CURRENT_DESKTOP" "_NET_DESKTOP_GEOMETRY" +;; "_NET_DESKTOP_VIEWPORT" "_NET_DESKTOP_NAMES" +;; "_NET_ACTIVE_WINDOW" "_NET_WORKAREA" +;; "_NET_SUPPORTING_WM_CHECK" "_NET_VIRTUAL_ROOTS" +;; "_NET_DESKTOP_LAYOUT" +;; +;; "_NET_RESTACK_WINDOW" "_NET_REQUEST_FRAME_EXTENTS" +;; "_NET_MOVERESIZE_WINDOW" "_NET_CLOSE_WINDOW" +;; "_NET_WM_MOVERESIZE" +;; +;; "_NET_WM_SYNC_REQUEST" "_NET_WM_PING" +;; +;; "_NET_WM_NAME" "_NET_WM_VISIBLE_NAME" +;; "_NET_WM_ICON_NAME" "_NET_WM_VISIBLE_ICON_NAME" +;; "_NET_WM_DESKTOP" "_NET_WM_WINDOW_TYPE" +;; "_NET_WM_STATE" "_NET_WM_STRUT" +;; "_NET_WM_ICON_GEOMETRY" "_NET_WM_ICON" +;; "_NET_WM_PID" "_NET_WM_HANDLED_ICONS" +;; "_NET_WM_USER_TIME" "_NET_FRAME_EXTENTS" +;; ;; "_NET_WM_MOVE_ACTIONS" +;; +;; "_NET_WM_WINDOW_TYPE_DESKTOP" "_NET_WM_STATE_MODAL" +;; "_NET_WM_WINDOW_TYPE_DOCK" "_NET_WM_STATE_STICKY" +;; "_NET_WM_WINDOW_TYPE_TOOLBAR" "_NET_WM_STATE_MAXIMIZED_VERT" +;; "_NET_WM_WINDOW_TYPE_MENU" "_NET_WM_STATE_MAXIMIZED_HORZ" +;; "_NET_WM_WINDOW_TYPE_UTILITY" "_NET_WM_STATE_SHADED" +;; "_NET_WM_WINDOW_TYPE_SPLASH" "_NET_WM_STATE_SKIP_TASKBAR" +;; "_NET_WM_WINDOW_TYPE_DIALOG" "_NET_WM_STATE_SKIP_PAGER" +;; "_NET_WM_WINDOW_TYPE_NORMAL" "_NET_WM_STATE_HIDDEN" +;; "_NET_WM_STATE_FULLSCREEN" +;; "_NET_WM_STATE_ABOVE" +;; "_NET_WM_STATE_BELOW" +;; "_NET_WM_STATE_DEMANDS_ATTENTION" +;; +;; "_NET_WM_ALLOWED_ACTIONS" +;; "_NET_WM_ACTION_MOVE" +;; "_NET_WM_ACTION_RESIZE" +;; "_NET_WM_ACTION_SHADE" +;; "_NET_WM_ACTION_STICK" +;; "_NET_WM_ACTION_MAXIMIZE_HORZ" +;; "_NET_WM_ACTION_MAXIMIZE_VERT" +;; "_NET_WM_ACTION_FULLSCREEN" +;; "_NET_WM_ACTION_CHANGE_DESKTOP" +;; "_NET_WM_ACTION_CLOSE" +;; +;; )) +;; +;; +;;(defun intern-atoms (display) +;; (declare (type xlib:display display)) +;; (mapcar #'(lambda (atom-name) (xlib:intern-atom display atom-name)) +;; +exwm-atoms+) +;; (values)) +;; +;; +;; +;;(defun get-atoms-property (window property-atom atom-list-p) +;; "Returns a list of atom-name (if atom-list-p is t) otherwise returns +;; a list of atom-id." +;; (xlib:get-property window property-atom +;; :transform (when atom-list-p +;; (lambda (id) +;; (xlib:atom-name (xlib:drawable-display window) id))))) +;; +;;(defun set-atoms-property (window atoms property-atom &key (mode :replace)) +;; "Sets the property designates by `property-atom'. ATOMS is a list of atom-id +;; or a list of keyword atom-names." +;; (xlib:change-property window property-atom atoms :ATOM 32 +;; :mode mode +;; :transform (unless (integerp (car atoms)) +;; (lambda (atom-key) +;; (xlib:find-atom (xlib:drawable-display window) atom-key))))) +;; +;; +;; +;; +;;(defun net-wm-state (window) +;; (get-atoms-property window :_NET_WM_STATE t)) +;; +;;(defsetf net-wm-state (window &key (mode :replace)) (states) +;; `(set-atoms-property ,window ,states :_NET_WM_STATE :mode ,mode)) +;; +;; +;; +;;(defun hide-window (window) +;; (when window +;; (with-xlib-protect +;; (let ((net-wm-state (net-wm-state window))) +;; (dbg net-wm-state) +;; (pushnew :_net_wm_state_hidden net-wm-state) +;; (setf (net-wm-state window) net-wm-state) +;; (dbg (net-wm-state window))) +;; (setf (window-state window) +iconic-state+ +;; (xlib:window-event-mask window) (remove :structure-notify *window-events*)) +;; (xlib:unmap-window window) +;; (setf (xlib:window-event-mask window) *window-events*)))) + + +(defun hide-window (window) + (when window + (with-xlib-protect + (setf (window-state window) +iconic-state+ + (xlib:window-event-mask window) (remove :structure-notify *window-events*)) + (xlib:unmap-window window) + (setf (xlib:window-event-mask window) *window-events*)))) + + + +(defun window-type (window) + "Return one of :desktop, :dock, :toolbar, :utility, :splash, +:dialog, :transient, :maxsize and :normal." + (or (and (let ((hints (xlib:wm-normal-hints window))) + (and hints (or (xlib:wm-size-hints-max-width hints) + (xlib:wm-size-hints-max-height hints) + (xlib:wm-size-hints-min-aspect hints) + (xlib:wm-size-hints-max-aspect hints)))) + :maxsize) + (let ((net-wm-window-type (xlib:get-property window :_NET_WM_WINDOW_TYPE))) + (when net-wm-window-type + (dolist (type-atom net-wm-window-type) + (when (assoc (xlib:atom-name *display* type-atom) +netwm-window-types+) + (return (cdr (assoc (xlib:atom-name *display* type-atom) +netwm-window-types+))))))) + (and (xlib:get-property window :WM_TRANSIENT_FOR) + :transient) + :normal)) + + + + + +;; Stolen from Eclipse +(defun send-configuration-notify (window) + "Send a synthetic configure notify event to the given window (ICCCM 4.1.5)" + (multiple-value-bind (x y) + (xlib:translate-coordinates window 0 0 (xlib:drawable-root window)) + (xlib:send-event window + :configure-notify + (xlib:make-event-mask :structure-notify) + :event-window window :window window + :x x :y y + :override-redirect-p nil + :border-width (xlib:drawable-border-width window) + :width (xlib:drawable-width window) + :height (xlib:drawable-height window) + :propagate-p nil))) + + +(defun send-client-message (window type &rest data) + "Send a client message to a client's window." + (xlib:send-event window + :client-message nil + :window window + :type type + :format 32 + :data data)) + + + + + +(defun raise-window (window) + "Map the window if needed and bring it to the top of the stack. Does not affect focus." + (when window + (with-xlib-protect + (when (window-hidden-p window) + (unhide-window window)) + (setf (xlib:window-priority window) :top-if)))) + +(defun focus-window (window) + "Give the window focus." + (when window + (with-xlib-protect + (raise-window window) + (xlib:set-input-focus *display* window :parent)))) + ;;(xlib:set-input-focus *display* :pointer-root :pointer-root)) ;;PHIL + + + + + + +(defun no-focus () + "don't focus any window but still read keyboard events." + (xlib:set-input-focus *display* *no-focus-window* :pointer-root)) + + + + +(let ((cursor-font nil) + (cursor nil) + (pointer-grabbed nil)) + (labels ((free-grab-pointer () + (when cursor + (xlib:free-cursor cursor) + (setf cursor nil)) + (when cursor-font + (xlib:close-font cursor-font) + (setf cursor-font nil)))) + (defun xgrab-init-pointer () + (setf pointer-grabbed nil)) + + (defun xgrab-pointer-p () + pointer-grabbed) + + (defun xgrab-pointer (root cursor-char cursor-mask-char + &optional (pointer-mask '(:enter-window :pointer-motion + :button-press :button-release)) owner-p) + "Grab the pointer and set the pointer shape." + (free-grab-pointer) + (setf pointer-grabbed t) + (let* ((white (xlib:make-color :red 1.0 :green 1.0 :blue 1.0)) + (black (xlib:make-color :red 0.0 :green 0.0 :blue 0.0))) + (setf cursor-font (xlib:open-font *display* "cursor") + cursor (xlib:create-glyph-cursor :source-font cursor-font + :source-char cursor-char + :mask-font cursor-font + :mask-char cursor-mask-char + :foreground black + :background white)) + (xlib:grab-pointer root pointer-mask + :owner-p owner-p :sync-keyboard-p nil :sync-pointer-p nil :cursor cursor))) + + (defun xungrab-pointer () + "Remove the grab on the cursor and restore the cursor shape." + (setf pointer-grabbed nil) + (xlib:ungrab-pointer *display*) + (free-grab-pointer)))) + + +(let ((keyboard-grabbed nil)) + (defun xgrab-init-keyboard () + (setf keyboard-grabbed nil)) + + (defun xgrab-keyboard-p () + keyboard-grabbed) + + (defun xgrab-keyboard (root) + (setf keyboard-grabbed t) + (xlib:grab-keyboard root :owner-p nil :sync-keyboard-p nil :sync-pointer-p nil)) + + (defun xungrab-keyboard () + (setf keyboard-grabbed nil) + (xlib:ungrab-keyboard *display*))) + + + + +(defun stop-button-event () + (xlib:allow-events *display* :sync-pointer)) + +(defun replay-button-event () + (xlib:allow-events *display* :replay-pointer)) + + +(defun ungrab-all-buttons (window) + (xlib:ungrab-button window :any :modifiers :any)) + +(defun grab-all-buttons (window) + (ungrab-all-buttons window) + (xlib:grab-button window :any '(:button-press) + :modifiers :any + :owner-p nil + :sync-pointer-p t + :sync-keyboard-p nil)) + + + +(defun get-color (color) + (xlib:alloc-color (xlib:screen-default-colormap *screen*) color)) + + + + +(defun my-character->keysyms (ch) + "Convert a char to a keysym" + ;; XLIB:CHARACTER->KEYSYMS should probably be implemented in NEW-CLX + ;; some day. Or just copied from MIT-CLX or some other CLX + ;; implementation (see translate.lisp and keysyms.lisp). For now, + ;; we do like this. It suffices for modifiers and ASCII symbols. + (if (fboundp 'xlib:character->keysyms) + (xlib:character->keysyms ch)) + (list + (case ch + (:character-set-switch #xFF7E) + (:left-shift #xFFE1) + (:right-shift #xFFE2) + (:left-control #xFFE3) + (:right-control #xFFE4) + (:caps-lock #xFFE5) + (:shift-lock #xFFE6) + (:left-meta #xFFE7) + (:right-meta #xFFE8) + (:left-alt #xFFE9) + (:right-alt #xFFEA) + (:left-super #xFFEB) + (:right-super #xFFEC) + (:left-hyper #xFFED) + (:right-hyper #xFFEE) + (t + (etypecase ch + (character + ;; Latin-1 characters have their own value as keysym + (if (< 31 (char-code ch) 256) + (char-code ch) + (error "Don't know how to get keysym from ~A" ch)))))))) + + + +(defun char->keycode (char) + "Convert a character to a keycode" + (xlib:keysym->keycodes *display* (first (my-character->keysyms char)))) + + +(defun keycode->char (code state) + (xlib:keysym->character *display* (xlib:keycode->keysym *display* code 0) state)) + +(defun modifiers->state (modifier-list) + (apply #'xlib:make-state-mask modifier-list)) + +(defun state->modifiers (state) + (xlib:make-state-keys state)) + + + + +(defun wait-no-key-or-button-press () + (loop + (let ((key (loop for k across (xlib:query-keymap *display*) + unless (zerop k) return t)) + (button (plusp (nth-value 4 (xlib:query-pointer *root*))))) + (when (and (not key) (not button)) + (loop while (xlib:event-case (*display* :discard-p t :peek-p nil :timeout 0) + (:motion-notify () t) + (:key-press () t) + (:button-press () t) + (:button-release () t) + (t nil))) + (return-from wait-no-key-or-button-press nil))))) + + + +(defun compress-motion-notify () + (when *have-to-compress-notify* + (xlib:event-case (*display* :discard-p nil :peek-p t :timeout 0) + (:motion-notify () t)))) + From pbrochard at common-lisp.net Sat Mar 1 12:50:27 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sat, 1 Mar 2008 07:50:27 -0500 (EST) Subject: [clfswm-cvs] r6 - clfswm Message-ID: <20080301125027.0C02571143@common-lisp.net> Author: pbrochard Date: Sat Mar 1 07:50:26 2008 New Revision: 6 Removed: clfswm/check-diff.sh clfswm/clisp-load.lisp clfswm/program clfswm/sbcl-load.lisp Log: first commit From pbrochard at common-lisp.net Sat Mar 1 12:55:16 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sat, 1 Mar 2008 07:55:16 -0500 (EST) Subject: [clfswm-cvs] r7 - clfswm Message-ID: <20080301125516.F10A11F009@common-lisp.net> Author: pbrochard Date: Sat Mar 1 07:55:16 2008 New Revision: 7 Modified: clfswm/config.lisp clfswm/package.lisp Log: use a default group datas Modified: clfswm/config.lisp ============================================================================== --- clfswm/config.lisp (original) +++ clfswm/config.lisp Sat Mar 1 07:55:16 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Wed Feb 27 22:15:01 2008 +;;; #Date#: Sat Mar 1 13:52:41 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Configuration file @@ -50,9 +50,6 @@ - - - ;;; CONFIG: Main mode colors (defparameter *color-selected* "Red") (defparameter *color-unselected* "Blue") Modified: clfswm/package.lisp ============================================================================== --- clfswm/package.lisp (original) +++ clfswm/package.lisp Sat Mar 1 07:55:16 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Mon Feb 25 21:33:22 2008 +;;; #Date#: Sat Mar 1 13:52:50 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Package definition @@ -55,6 +55,10 @@ ;; (x 0) (y 0) (w 1) (h 1) rx ry rw rh ;; layout window gc child) +;;; CONFIG - Default group datas +(defparameter *default-group-data* + (list '(:tile-size 0.8) '(:tile-space-size 0.1))) + (defclass group () ((name :initarg :name :accessor group-name :initform nil) (number :initarg :number :accessor group-number :initform 0) @@ -74,7 +78,7 @@ (gc :initarg :gc :accessor group-gc :initform nil) (child :initarg :child :accessor group-child :initform nil) (data :initarg :data :accessor group-data - :initform (list '(:tile-size 0.8) '(:tile-space-size 0.1)) + :initform *default-group-data* :documentation "An assoc list to store additional data"))) From pbrochard at common-lisp.net Sat Mar 1 21:48:33 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sat, 1 Mar 2008 16:48:33 -0500 (EST) Subject: [clfswm-cvs] r8 - clfswm Message-ID: <20080301214833.EF7CE2E1D5@common-lisp.net> Author: pbrochard Date: Sat Mar 1 16:48:32 2008 New Revision: 8 Modified: clfswm/bindings-second-mode.lisp clfswm/bindings.lisp clfswm/clfswm-internal.lisp Log: navigation keys change to always select the current child Modified: clfswm/bindings-second-mode.lisp ============================================================================== --- clfswm/bindings-second-mode.lisp (original) +++ clfswm/bindings-second-mode.lisp Sat Mar 1 16:48:32 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Feb 28 21:38:00 2008 +;;; #Date#: Sat Mar 1 22:45:26 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for second mode @@ -173,8 +173,8 @@ (define-second-key ("Down" :mod-1) 'select-next-level) (define-second-key ("Up" :mod-1) 'select-previous-level) -(define-second-key ("Tab" :mod-1) 'select-next-child) -(define-second-key ("Tab" :mod-1 :shift) 'select-previous-child) +(define-second-key ("Tab" :mod-1) 'select-next-brother) +(define-second-key ("Tab" :mod-1 :shift) 'select-previous-brother) (define-second-key ("Return" :mod-1) 'enter-group) (define-second-key ("Return" :mod-1 :shift) 'leave-group) Modified: clfswm/bindings.lisp ============================================================================== --- clfswm/bindings.lisp (original) +++ clfswm/bindings.lisp Sat Mar 1 16:48:32 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sun Feb 24 21:34:48 2008 +;;; #Date#: Sat Mar 1 22:43:17 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse @@ -48,8 +48,8 @@ (define-main-key ("Down" :mod-1) 'select-next-level) (define-main-key ("Up" :mod-1) 'select-previous-level) -(define-main-key ("Tab" :mod-1) 'select-next-child) -(define-main-key ("Tab" :mod-1 :shift) 'select-previous-child) +(define-main-key ("Tab" :mod-1) 'select-next-brother) +(define-main-key ("Tab" :mod-1 :shift) 'select-previous-brother) (define-main-key ("Return" :mod-1) 'enter-group) (define-main-key ("Return" :mod-1 :shift) 'leave-group) Modified: clfswm/clfswm-internal.lisp ============================================================================== --- clfswm/clfswm-internal.lisp (original) +++ clfswm/clfswm-internal.lisp Sat Mar 1 16:48:32 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Mar 1 00:03:14 2008 +;;; #Date#: Sat Mar 1 22:44:26 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -369,12 +369,12 @@ (defun set-focus-to-current-child () - (no-focus) - (when (group-p *current-child*) - (when (xlib:window-p (first (group-child *current-child*))) - (focus-window (first (group-child *current-child*))))) - (when (xlib:window-p *current-child*) - (focus-window *current-child*))) + (labels ((rec (child) + (typecase child + (xlib:window (focus-window child)) + (group (rec (first (group-child child))))))) + (no-focus) + (rec *current-child*))) @@ -448,6 +448,7 @@ (show-all-childs))) + (defun select-next/previous-child (fun-rotate) "Select the next/previous child" (when (group-p *current-child*) @@ -594,7 +595,8 @@ (leave-group) (select-previous-level)) ;;(unless (eql (window-type window) :maxsize) ;; PHIL: this is sufficient for the ROX panel - (pushnew window (group-child *current-child*)) ;) + (when (group-p *current-child*) + (pushnew window (group-child *current-child*))) ;) (unhide-window window) ;;(dbg (xlib:wm-name window) (xlib:get-wm-class window) (window-type window)) ;;; PHIL (case (window-type window) From pbrochard at common-lisp.net Sat Mar 1 22:30:12 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sat, 1 Mar 2008 17:30:12 -0500 (EST) Subject: [clfswm-cvs] r9 - clfswm Message-ID: <20080301223012.AFD2A7E021@common-lisp.net> Author: pbrochard Date: Sat Mar 1 17:30:08 2008 New Revision: 9 Modified: clfswm/bindings-second-mode.lisp clfswm/bindings.lisp clfswm/clfswm-internal.lisp Log: Alt-tab navigate throw childs-Alt-arrow navigate throw brothers Modified: clfswm/bindings-second-mode.lisp ============================================================================== --- clfswm/bindings-second-mode.lisp (original) +++ clfswm/bindings-second-mode.lisp Sat Mar 1 17:30:08 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Mar 1 22:45:26 2008 +;;; #Date#: Sat Mar 1 23:26:11 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for second mode @@ -173,8 +173,8 @@ (define-second-key ("Down" :mod-1) 'select-next-level) (define-second-key ("Up" :mod-1) 'select-previous-level) -(define-second-key ("Tab" :mod-1) 'select-next-brother) -(define-second-key ("Tab" :mod-1 :shift) 'select-previous-brother) +(define-second-key ("Tab" :mod-1) 'select-next-child) +(define-second-key ("Tab" :mod-1 :shift) 'select-previous-child) (define-second-key ("Return" :mod-1) 'enter-group) (define-second-key ("Return" :mod-1 :shift) 'leave-group) Modified: clfswm/bindings.lisp ============================================================================== --- clfswm/bindings.lisp (original) +++ clfswm/bindings.lisp Sat Mar 1 17:30:08 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Mar 1 22:43:17 2008 +;;; #Date#: Sat Mar 1 23:24:37 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse @@ -48,8 +48,8 @@ (define-main-key ("Down" :mod-1) 'select-next-level) (define-main-key ("Up" :mod-1) 'select-previous-level) -(define-main-key ("Tab" :mod-1) 'select-next-brother) -(define-main-key ("Tab" :mod-1 :shift) 'select-previous-brother) +(define-main-key ("Tab" :mod-1) 'select-next-child) +(define-main-key ("Tab" :mod-1 :shift) 'select-previous-child) (define-main-key ("Return" :mod-1) 'enter-group) (define-main-key ("Return" :mod-1 :shift) 'leave-group) Modified: clfswm/clfswm-internal.lisp ============================================================================== --- clfswm/clfswm-internal.lisp (original) +++ clfswm/clfswm-internal.lisp Sat Mar 1 17:30:08 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Mar 1 22:44:26 2008 +;;; #Date#: Sat Mar 1 23:24:16 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions From pbrochard at common-lisp.net Sat Mar 1 23:09:43 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sat, 1 Mar 2008 18:09:43 -0500 (EST) Subject: [clfswm-cvs] r10 - clfswm Message-ID: <20080301230943.2428A2E1D4@common-lisp.net> Author: pbrochard Date: Sat Mar 1 18:09:41 2008 New Revision: 10 Modified: clfswm/clfswm-internal.lisp clfswm/clfswm-util.lisp Log: create-group use &rest arguments Modified: clfswm/clfswm-internal.lisp ============================================================================== --- clfswm/clfswm-internal.lisp (original) +++ clfswm/clfswm-internal.lisp Sat Mar 1 18:09:41 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Mar 1 23:24:16 2008 +;;; #Date#: Sat Mar 1 23:56:57 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -138,8 +138,7 @@ (find-free-number all-numbers))) - -(defun create-group (&key name (number (group-find-free-number)) (x 0.1) (y 0.1) (w 0.8) (h 0.8) layout) +(defun create-group (&rest args &key (number (group-find-free-number)) &allow-other-keys) (let* ((window (xlib:create-window :parent *root* :x 0 :y 0 @@ -155,8 +154,8 @@ :background (get-color "Black") :font *default-font* :line-style :solid))) - (make-instance 'group :name name :number number - :x x :y y :w w :h h :window window :gc gc :layout layout))) + (apply #'make-instance 'group :number number :window window :gc gc args))) + (defun add-group (group father) Modified: clfswm/clfswm-util.lisp ============================================================================== --- clfswm/clfswm-util.lisp (original) +++ clfswm/clfswm-util.lisp Sat Mar 1 18:09:41 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Mar 1 00:03:08 2008 +;;; #Date#: Sun Mar 2 00:06:29 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility From pbrochard at common-lisp.net Mon Mar 3 20:33:50 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Mon, 3 Mar 2008 15:33:50 -0500 (EST) Subject: [clfswm-cvs] r11 - clfswm/contrib Message-ID: <20080303203350.A7B0653177@common-lisp.net> Author: pbrochard Date: Mon Mar 3 15:33:50 2008 New Revision: 11 Added: clfswm/contrib/ clfswm/contrib/README Log: New contrib directory for additional user code Added: clfswm/contrib/README ============================================================================== --- (empty file) +++ clfswm/contrib/README Mon Mar 3 15:33:50 2008 @@ -0,0 +1,13 @@ +This directory is here if you want to contribute to CLFSWM and if your +code is not merged in the clfswm core. + +How can you contribute: + + - If your code is in one file, just tell use how to load it and how + to configure it from the clfswm configuration file. + + - If your code takes more than one file, make a new directory and + create a new asd file in the contrib directory to load it from the + configuration file. + +(Some examples will come here. [Philippe]) From pbrochard at common-lisp.net Tue Mar 4 07:59:48 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Tue, 4 Mar 2008 02:59:48 -0500 (EST) Subject: [clfswm-cvs] r12 - clfswm Message-ID: <20080304075948.27E002510F@common-lisp.net> Author: pbrochard Date: Tue Mar 4 02:59:46 2008 New Revision: 12 Modified: clfswm/clfswm-util.lisp Log: Hide groups when moving by name Modified: clfswm/clfswm-util.lisp ============================================================================== --- clfswm/clfswm-util.lisp (original) +++ clfswm/clfswm-util.lisp Tue Mar 4 02:59:46 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sun Mar 2 00:06:29 2008 +;;; #Date#: Tue Mar 4 08:54:30 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility @@ -445,6 +445,7 @@ ;;; Focus by functions (defun focus-group-by (group) (when (group-p group) + (hide-all-childs *current-root*) (focus-all-childs group (or (find-father-group group *current-root*) (find-father-group group) *root-group*)))) @@ -481,6 +482,7 @@ ;;; Delete by functions (defun delete-group-by (group) + (hide-all-childs *current-root*) (unless (equal group *root-group*) (when (equal group *current-root*) (setf *current-root* *root-group*)) @@ -503,6 +505,7 @@ ;;; Move by function (defun move-current-child-by (child group-dest) (when (and child (group-p group-dest)) + (hide-all-childs *current-root*) (remove-child-in-group child (find-father-group child)) (pushnew child (group-child group-dest)) (focus-all-childs child group-dest))) @@ -525,6 +528,7 @@ ;;; Copy by function (defun copy-current-child-by (child group-dest) (when (and child (group-p group-dest)) + (hide-all-childs *current-root*) (pushnew child (group-child group-dest)) (focus-all-childs child group-dest))) From pbrochard at common-lisp.net Tue Mar 4 10:27:24 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Tue, 4 Mar 2008 05:27:24 -0500 (EST) Subject: [clfswm-cvs] r13 - in clfswm: . contrib Message-ID: <20080304102724.650215D175@common-lisp.net> Author: pbrochard Date: Tue Mar 4 05:27:20 2008 New Revision: 13 Added: clfswm/contrib/contrib-example.lisp Modified: clfswm/clfswm-util.lisp clfswm/contrib/README clfswm/load.lisp Log: add a contributed example Modified: clfswm/clfswm-util.lisp ============================================================================== --- clfswm/clfswm-util.lisp (original) +++ clfswm/clfswm-util.lisp Tue Mar 4 05:27:20 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Mar 4 08:54:30 2008 +;;; #Date#: Tue Mar 4 11:14:45 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility @@ -27,6 +27,12 @@ (in-package :clfswm) +(defun load-contrib (file) + "Load a file in the contrib directory" + (let ((truename (concatenate 'string cl-user:*base-dir* "contrib/" file))) + (format t "Loading contribution file: ~A~%" truename) + (when (probe-file truename) + (load truename)))) (defun add-default-group () Modified: clfswm/contrib/README ============================================================================== --- clfswm/contrib/README (original) +++ clfswm/contrib/README Tue Mar 4 05:27:20 2008 @@ -1,13 +1,15 @@ -This directory is here if you want to contribute to CLFSWM and if your -code is not merged in the clfswm core. +The contrib directory is here if you want to contribute to CLFSWM and +if your code is not merged in the clfswm core. -How can you contribute: +To contribute, place your files in the contrib directory. +You can have your own repository and tell me if you want to merge it +in the clfswm svn. - - If your code is in one file, just tell use how to load it and how - to configure it from the clfswm configuration file. - - - If your code takes more than one file, make a new directory and - create a new asd file in the contrib directory to load it from the - configuration file. +To use a contributed code add a line like this in your configuration +file: -(Some examples will come here. [Philippe]) +(load-contrib "contrib-example.lisp") + +Have fun, + +Philippe Added: clfswm/contrib/contrib-example.lisp ============================================================================== --- (empty file) +++ clfswm/contrib/contrib-example.lisp Tue Mar 4 05:27:20 2008 @@ -0,0 +1,3 @@ +(in-package :clfswm) + +(format t "My contribution code start here~%") Modified: clfswm/load.lisp ============================================================================== --- clfswm/load.lisp (original) +++ clfswm/load.lisp Tue Mar 4 05:27:20 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Feb 26 23:00:22 2008 +;;; #Date#: Tue Mar 4 11:11:02 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: System loading functions @@ -27,6 +27,7 @@ (defparameter *base-dir* (directory-namestring *load-truename*)) +(export '*base-dir*) #+CMU (setf ext:*gc-verbose* nil) From pbrochard at common-lisp.net Tue Mar 4 21:45:10 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Tue, 4 Mar 2008 16:45:10 -0500 (EST) Subject: [clfswm-cvs] r14 - clfswm Message-ID: <20080304214510.CC6A9330DD@common-lisp.net> Author: pbrochard Date: Tue Mar 4 16:45:09 2008 New Revision: 14 Added: clfswm/clfswm-query.lisp Modified: clfswm/bindings-second-mode.lisp clfswm/clfswm-internal.lisp clfswm/clfswm-util.lisp clfswm/clfswm.asd clfswm/load.lisp Log: Rename and renumber childs. Move query-* in a separate file Modified: clfswm/bindings-second-mode.lisp ============================================================================== --- clfswm/bindings-second-mode.lisp (original) +++ clfswm/bindings-second-mode.lisp Tue Mar 4 16:45:09 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Mar 1 23:26:11 2008 +;;; #Date#: Tue Mar 4 22:41:24 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for second mode @@ -105,7 +105,9 @@ "Group menu" (info-mode-menu '((#\a group-adding-menu) (#\l group-layout-menu) - (#\m group-movement-menu)))) + (#\m group-movement-menu) + (#\r rename-current-child) + (#\n renumber-current-group)))) @@ -203,9 +205,29 @@ (define-second-key ("Delete") 'remove-current-child) +;;; default shell programs +(defmacro define-shell (key name docstring cmd) + "Define a second key to start a shell command" + `(define-second-key ,key + (defun ,name () + ,docstring + (setf *second-mode-program* ,cmd) + (leave-second-mode)))) +(define-shell (#\c) b-start-xterm "start an xterm" "exec xterm") +(define-shell (#\e) b-start-emacs "start emacs" "exec emacs") +(define-shell (#\e :control) b-start-emacsremote + "start an emacs for another user" + "exec emacsremote-Eterm") +(define-shell (#\h) b-start-xclock "start an xclock" "exec xclock -d") + + + + + +;;; Mouse action (defun sm-handle-click-to-focus (root-x root-y) "Give the focus to the clicked child" (let ((win (find-child-under-mouse root-x root-y))) Modified: clfswm/clfswm-internal.lisp ============================================================================== --- clfswm/clfswm-internal.lisp (original) +++ clfswm/clfswm-internal.lisp Tue Mar 4 16:45:09 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Mar 1 23:56:57 2008 +;;; #Date#: Tue Mar 4 22:36:13 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -79,6 +79,19 @@ +(defgeneric rename-child (child name)) + +(defmethod rename-child ((child group) name) + (setf (group-name child) name)) + +(defmethod rename-child ((child xlib:window) name) + (setf (xlib:wm-name child) name)) + +(defmethod rename-child (child name) + (declare (ignore child name))) + + + ;; (with-all-childs (*root-group* child) (typecase child (xlib:window (print child)) (group (print (group-number child))))) (defmacro with-all-childs ((root child) &body body) (let ((rec (gensym)) Added: clfswm/clfswm-query.lisp ============================================================================== --- (empty file) +++ clfswm/clfswm-query.lisp Tue Mar 4 16:45:09 2008 @@ -0,0 +1,191 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Tue Mar 4 22:39:47 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: Query utility +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + + +(defun query-show-paren (orig-string pos) + "Replace matching parentheses with brackets" + (let ((string (copy-seq orig-string))) + (labels ((have-to-find-right? () + (and (< pos (length string)) (char= (aref string pos) #\())) + (have-to-find-left? () + (and (> (1- pos) 0) (char= (aref string (1- pos)) #\)))) + (pos-right () + (loop :for p :from (1+ pos) :below (length string) + :with level = 1 :for c = (aref string p) + :do (when (char= c #\() (incf level)) + (when (char= c #\)) (decf level)) + (when (= level 0) (return p)))) + (pos-left () + (loop :for p :from (- pos 2) :downto 0 + :with level = 1 :for c = (aref string p) + :do (when (char= c #\() (decf level)) + (when (char= c #\)) (incf level)) + (when (= level 0) (return p))))) + (when (have-to-find-right?) + (let ((p (pos-right))) + (when p (setf (aref string p) #\])))) + (when (have-to-find-left?) + (let ((p (pos-left))) + (when p (setf (aref string p) #\[)))) + string))) + + +;;; CONFIG - Query string mode +(let ((history nil)) + (defun clear-history () + "Clear the query-string history" + (setf history nil)) + + (defun query-string (msg &optional (default "")) + "Query a string from the keyboard. Display msg as prompt" + (let* ((done nil) + (font (xlib:open-font *display* *query-font-string*)) + (window (xlib:create-window :parent *root* + :x 0 :y 0 + :width (- (xlib:screen-width *screen*) 2) + :height (* 3 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) + :background (get-color *query-background*) + :border-width 1 + :border (get-color *query-border*) + :colormap (xlib:screen-default-colormap *screen*) + :event-mask '(:exposure))) + (gc (xlib:create-gcontext :drawable window + :foreground (get-color *query-foreground*) + :background (get-color *query-background*) + :font font + :line-style :solid)) + (result-string default) + (pos (length default)) + (local-history history)) + (labels ((add-cursor (string) + (concatenate 'string (subseq string 0 pos) "|" (subseq string pos))) + (print-string () + (xlib:clear-area window) + (setf (xlib:gcontext-foreground gc) (get-color *query-foreground*)) + (xlib:draw-image-glyphs window gc 5 (+ (xlib:max-char-ascent font) 5) msg) + (when (< pos 0) (setf pos 0)) + (when (> pos (length result-string)) (setf pos (length result-string))) + (xlib:draw-image-glyphs window gc 10 (+ (* 2 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) 5) + (add-cursor (query-show-paren result-string pos)))) + (call-backspace (modifiers) + (let ((del-pos (if (member :control modifiers) + (or (position #\Space result-string :from-end t :end pos) 0) + (1- pos)))) + (when (>= del-pos 0) + (setf result-string (concatenate 'string + (subseq result-string 0 del-pos) + (subseq result-string pos)) + pos del-pos)))) + (call-delete (modifiers) + (let ((del-pos (if (member :control modifiers) + (1+ (or (position #\Space result-string :start pos) (1- (length result-string)))) + (1+ pos)))) + (if (<= del-pos (length result-string)) + (setf result-string (concatenate 'string + (subseq result-string 0 pos) + (subseq result-string del-pos)))))) + (call-delete-eof () + (setf result-string (subseq result-string 0 pos))) + (handle-query-key (&rest event-slots &key root code state &allow-other-keys) + (declare (ignore event-slots root)) + (let* ((modifiers (xlib:make-state-keys state)) + (keysym (xlib:keycode->keysym *display* code (cond ((member :shift modifiers) 1) + ((member :mod-5 modifiers) 2) + (t 0)))) + (char (xlib:keysym->character *display* keysym)) + (keysym-name (keysym->keysym-name keysym))) + (setf done (cond ((string-equal keysym-name "Return") :Return) + ((string-equal keysym-name "Tab") :Complet) + ((string-equal keysym-name "Escape") :Escape) + (t nil))) + (cond ((string-equal keysym-name "Left") + (when (> pos 0) + (setf pos (if (member :control modifiers) + (let ((p (position #\Space result-string + :end (min (1- pos) (length result-string)) + :from-end t))) + (if p p 0)) + (1- pos))))) + ((string-equal keysym-name "Right") + (when (< pos (length result-string)) + (setf pos (if (member :control modifiers) + (let ((p (position #\Space result-string + :start (min (1+ pos) (length result-string))))) + (if p p (length result-string))) + (1+ pos))))) + ((string-equal keysym-name "Up") + (setf result-string (first local-history) + pos (length result-string) + local-history (rotate-list local-history))) + ((string-equal keysym-name "Down") + (setf result-string (first local-history) + pos (length result-string) + local-history (anti-rotate-list local-history))) + ((string-equal keysym-name "Home") (setf pos 0)) + ((string-equal keysym-name "End") (setf pos (length result-string))) + ((string-equal keysym-name "Backspace") (call-backspace modifiers)) + ((string-equal keysym-name "Delete") (call-delete modifiers)) + ((and (string-equal keysym-name "k") (member :control modifiers)) + (call-delete-eof)) + ((and (characterp char) (standard-char-p char)) + (setf result-string (concatenate 'string + (when (<= pos (length result-string)) + (subseq result-string 0 pos)) + (string char) + (when (< pos (length result-string)) + (subseq result-string pos)))) + (incf pos))) + (print-string))) + (handle-query (&rest event-slots &key display event-key &allow-other-keys) + (declare (ignore display)) + (case event-key + (:key-press (apply #'handle-query-key event-slots) t) + (:exposure (print-string))) + t)) + (xgrab-pointer *root* 92 93) + (xlib:map-window window) + (print-string) + (wait-no-key-or-button-press) + (unwind-protect + (loop until (member done '(:Return :Escape :Complet)) do + (xlib:display-finish-output *display*) + (xlib:process-event *display* :handler #'handle-query)) + (xlib:destroy-window window) + (xlib:close-font font) + (xgrab-pointer *root* 66 67))) + (values (when (member done '(:Return :Complet)) + (push result-string history) + result-string) + done)))) + + + +(defun query-number (msg &optional (default 0)) + "Query a number from the query input" + (parse-integer (or (query-string msg (format nil "~A" default)) "") :junk-allowed t)) Modified: clfswm/clfswm-util.lisp ============================================================================== --- clfswm/clfswm-util.lisp (original) +++ clfswm/clfswm-util.lisp Tue Mar 4 16:45:09 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Mar 4 11:14:45 2008 +;;; #Date#: Tue Mar 4 22:41:07 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility @@ -35,6 +35,27 @@ (load truename)))) + + +(defun rename-current-child () + "Rename the current child" + (let ((name (query-string (format nil "New child name: (last: ~A)" (child-name *current-child*)) + (child-name *current-child*)))) + (rename-child *current-child* name) + (leave-second-mode))) + + +(defun renumber-current-group () + "Renumber the current group" + (when (group-p *current-child*) + (let ((number (query-number (format nil "New child number: (last: ~A)" (group-number *current-child*)) + (group-number *current-child*)))) + (setf (group-number *current-child*) number) + (leave-second-mode)))) + + + + (defun add-default-group () "Add a default group" (when (group-p *current-child*) @@ -223,167 +244,6 @@ -(defun query-show-paren (orig-string pos) - "Replace matching parentheses with brackets" - (let ((string (copy-seq orig-string))) - (labels ((have-to-find-right? () - (and (< pos (length string)) (char= (aref string pos) #\())) - (have-to-find-left? () - (and (> (1- pos) 0) (char= (aref string (1- pos)) #\)))) - (pos-right () - (loop :for p :from (1+ pos) :below (length string) - :with level = 1 :for c = (aref string p) - :do (when (char= c #\() (incf level)) - (when (char= c #\)) (decf level)) - (when (= level 0) (return p)))) - (pos-left () - (loop :for p :from (- pos 2) :downto 0 - :with level = 1 :for c = (aref string p) - :do (when (char= c #\() (decf level)) - (when (char= c #\)) (incf level)) - (when (= level 0) (return p))))) - (when (have-to-find-right?) - (let ((p (pos-right))) - (when p (setf (aref string p) #\])))) - (when (have-to-find-left?) - (let ((p (pos-left))) - (when p (setf (aref string p) #\[)))) - string))) - - -;;; CONFIG - Query string mode -(let ((history nil)) - (defun clear-history () - "Clear the query-string history" - (setf history nil)) - - (defun query-string (msg &optional (default "")) - "Query a string from the keyboard. Display msg as prompt" - (let* ((done nil) - (font (xlib:open-font *display* *query-font-string*)) - (window (xlib:create-window :parent *root* - :x 0 :y 0 - :width (- (xlib:screen-width *screen*) 2) - :height (* 3 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) - :background (get-color *query-background*) - :border-width 1 - :border (get-color *query-border*) - :colormap (xlib:screen-default-colormap *screen*) - :event-mask '(:exposure))) - (gc (xlib:create-gcontext :drawable window - :foreground (get-color *query-foreground*) - :background (get-color *query-background*) - :font font - :line-style :solid)) - (result-string default) - (pos (length default)) - (local-history history)) - (labels ((add-cursor (string) - (concatenate 'string (subseq string 0 pos) "|" (subseq string pos))) - (print-string () - (xlib:clear-area window) - (setf (xlib:gcontext-foreground gc) (get-color *query-foreground*)) - (xlib:draw-image-glyphs window gc 5 (+ (xlib:max-char-ascent font) 5) msg) - (when (< pos 0) (setf pos 0)) - (when (> pos (length result-string)) (setf pos (length result-string))) - (xlib:draw-image-glyphs window gc 10 (+ (* 2 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) 5) - (add-cursor (query-show-paren result-string pos)))) - (call-backspace (modifiers) - (let ((del-pos (if (member :control modifiers) - (or (position #\Space result-string :from-end t :end pos) 0) - (1- pos)))) - (when (>= del-pos 0) - (setf result-string (concatenate 'string - (subseq result-string 0 del-pos) - (subseq result-string pos)) - pos del-pos)))) - (call-delete (modifiers) - (let ((del-pos (if (member :control modifiers) - (1+ (or (position #\Space result-string :start pos) (1- (length result-string)))) - (1+ pos)))) - (if (<= del-pos (length result-string)) - (setf result-string (concatenate 'string - (subseq result-string 0 pos) - (subseq result-string del-pos)))))) - (call-delete-eof () - (setf result-string (subseq result-string 0 pos))) - (handle-query-key (&rest event-slots &key root code state &allow-other-keys) - (declare (ignore event-slots root)) - (let* ((modifiers (xlib:make-state-keys state)) - (keysym (xlib:keycode->keysym *display* code (cond ((member :shift modifiers) 1) - ((member :mod-5 modifiers) 2) - (t 0)))) - (char (xlib:keysym->character *display* keysym)) - (keysym-name (keysym->keysym-name keysym))) - (setf done (cond ((string-equal keysym-name "Return") :Return) - ((string-equal keysym-name "Tab") :Complet) - ((string-equal keysym-name "Escape") :Escape) - (t nil))) - (cond ((string-equal keysym-name "Left") - (when (> pos 0) - (setf pos (if (member :control modifiers) - (let ((p (position #\Space result-string - :end (min (1- pos) (length result-string)) - :from-end t))) - (if p p 0)) - (1- pos))))) - ((string-equal keysym-name "Right") - (when (< pos (length result-string)) - (setf pos (if (member :control modifiers) - (let ((p (position #\Space result-string - :start (min (1+ pos) (length result-string))))) - (if p p (length result-string))) - (1+ pos))))) - ((string-equal keysym-name "Up") - (setf result-string (first local-history) - pos (length result-string) - local-history (rotate-list local-history))) - ((string-equal keysym-name "Down") - (setf result-string (first local-history) - pos (length result-string) - local-history (anti-rotate-list local-history))) - ((string-equal keysym-name "Home") (setf pos 0)) - ((string-equal keysym-name "End") (setf pos (length result-string))) - ((string-equal keysym-name "Backspace") (call-backspace modifiers)) - ((string-equal keysym-name "Delete") (call-delete modifiers)) - ((and (string-equal keysym-name "k") (member :control modifiers)) - (call-delete-eof)) - ((and (characterp char) (standard-char-p char)) - (setf result-string (concatenate 'string - (when (<= pos (length result-string)) - (subseq result-string 0 pos)) - (string char) - (when (< pos (length result-string)) - (subseq result-string pos)))) - (incf pos))) - (print-string))) - (handle-query (&rest event-slots &key display event-key &allow-other-keys) - (declare (ignore display)) - (case event-key - (:key-press (apply #'handle-query-key event-slots) t) - (:exposure (print-string))) - t)) - (xgrab-pointer *root* 92 93) - (xlib:map-window window) - (print-string) - (wait-no-key-or-button-press) - (unwind-protect - (loop until (member done '(:Return :Escape :Complet)) do - (xlib:display-finish-output *display*) - (xlib:process-event *display* :handler #'handle-query)) - (xlib:destroy-window window) - (xlib:close-font font) - (xgrab-pointer *root* 66 67))) - (values (when (member done '(:Return :Complet)) - (push result-string history) - result-string) - done)))) - - - -(defun query-number (msg) - "Query a number from the query input" - (parse-integer (or (query-string msg) "") :junk-allowed t)) Modified: clfswm/clfswm.asd ============================================================================== --- clfswm/clfswm.asd (original) +++ clfswm/clfswm.asd Tue Mar 4 16:45:09 2008 @@ -2,7 +2,7 @@ ;;;; Author: Philippe Brochard ;;;; ASDF System Definition ;;; -;;; #date#: Fri Feb 22 21:39:37 2008 +;;; #date#: Tue Mar 4 22:30:25 2008 (in-package #:asdf) @@ -37,6 +37,8 @@ :depends-on ("package" "xlib-util" "config" "clfswm-keys" "clfswm" "clfswm-internal")) (:file "clfswm-util" :depends-on ("clfswm" "keysyms" "clfswm-info" "clfswm-second-mode")) + (:file "clfswm-query" + :depends-on ("package" "config")) (:file "clfswm-layout" :depends-on ("package" "clfswm-util" "clfswm-info")) (:file "bindings" Modified: clfswm/load.lisp ============================================================================== --- clfswm/load.lisp (original) +++ clfswm/load.lisp Tue Mar 4 16:45:09 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Mar 4 11:11:02 2008 +;;; #Date#: Tue Mar 4 22:29:03 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: System loading functions From pbrochard at common-lisp.net Wed Mar 5 22:12:47 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Wed, 5 Mar 2008 17:12:47 -0500 (EST) Subject: [clfswm-cvs] r15 - clfswm Message-ID: <20080305221247.F3FDC1B02D@common-lisp.net> Author: pbrochard Date: Wed Mar 5 17:12:47 2008 New Revision: 15 Modified: clfswm/clfswm-internal.lisp clfswm/clfswm.asd clfswm/xlib-util.lisp Log: Solve a wrong with-gcontext bug (xlib::string-concat) Modified: clfswm/clfswm-internal.lisp ============================================================================== --- clfswm/clfswm-internal.lisp (original) +++ clfswm/clfswm-internal.lisp Wed Mar 5 17:12:47 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Mar 4 22:36:13 2008 +;;; #Date#: Wed Mar 5 23:09:42 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -37,6 +37,18 @@ (t (apply hook args)))) + + +(defgeneric group-p (group)) +(defmethod group-p ((group group)) + (declare (ignore group)) + t) +(defmethod group-p (group) + (declare (ignore group)) + nil) + + + ;;; Group data manipulation functions (defun group-data-slot (group slot) "Return the value associated to data slot" @@ -55,13 +67,6 @@ -(defgeneric group-p (group)) -(defmethod group-p ((group group)) - (declare (ignore group)) - t) -(defmethod group-p (group) - (declare (ignore group)) - nil) @@ -252,30 +257,30 @@ (with-slots (name number gc window child) group (when (equal group *current-root*) (xlib:clear-area window)) - (xlib:with-gcontext (gc :foreground (get-color (if (and (equal group *current-root*) + (setf (xlib:gcontext-foreground gc) (get-color (if (and (equal group *current-root*) (equal group *current-child*)) "Red" "Green"))) - (xlib:draw-image-glyphs window gc 5 dy - (format nil "Group: ~A~A " - number - (if name (format nil " - ~A" name) ""))) - (let ((pos dy)) - (when (equal group *current-root*) + (xlib:draw-image-glyphs window gc 5 dy + (format nil "Group: ~A~A " + number + (if name (format nil " - ~A" name) ""))) + (let ((pos dy)) + (when (equal group *current-root*) + (xlib:draw-image-glyphs window gc 5 (incf pos dy) + (format nil "~A hidden windows " (length (get-hidden-windows)))) + (when *child-selection* (xlib:draw-image-glyphs window gc 5 (incf pos dy) - (format nil "~A hidden windows " (length (get-hidden-windows)))) - (when *child-selection* - (xlib:draw-image-glyphs window gc 5 (incf pos dy) - (with-output-to-string (str) - (format str "Selection: ") - (dolist (child *child-selection*) - (typecase child - (xlib:window (format str "~A " (xlib:wm-name child))) - (group (format str "group:~A[~A] " (group-number child) - (aif (group-name child) it ""))))) - (format str " "))))) - (dolist (ch child) - (when (xlib:window-p ch) - (xlib:draw-glyphs window gc 5 (incf pos dy) (ensure-printable (xlib:wm-name ch)))))))))) + (with-output-to-string (str) + (format str "Selection: ") + (dolist (child *child-selection*) + (typecase child + (xlib:window (format str "~A " (xlib:wm-name child))) + (group (format str "group:~A[~A] " (group-number child) + (aif (group-name child) it ""))))) + (format str " "))))) + (dolist (ch child) + (when (xlib:window-p ch) + (xlib:draw-glyphs window gc 5 (incf pos dy) (ensure-printable (xlib:wm-name ch))))))))) Modified: clfswm/clfswm.asd ============================================================================== --- clfswm/clfswm.asd (original) +++ clfswm/clfswm.asd Wed Mar 5 17:12:47 2008 @@ -2,7 +2,7 @@ ;;;; Author: Philippe Brochard ;;;; ASDF System Definition ;;; -;;; #date#: Tue Mar 4 22:30:25 2008 +;;; #date#: Wed Mar 5 23:08:25 2008 (in-package #:asdf) @@ -36,7 +36,7 @@ (:file "clfswm-info" :depends-on ("package" "xlib-util" "config" "clfswm-keys" "clfswm" "clfswm-internal")) (:file "clfswm-util" - :depends-on ("clfswm" "keysyms" "clfswm-info" "clfswm-second-mode")) + :depends-on ("clfswm" "keysyms" "clfswm-info" "clfswm-second-mode" "clfswm-query")) (:file "clfswm-query" :depends-on ("package" "config")) (:file "clfswm-layout" @@ -44,7 +44,7 @@ (:file "bindings" :depends-on ("clfswm" "clfswm-internal")) (:file "bindings-second-mode" - :depends-on ("clfswm" "clfswm-util")))) + :depends-on ("clfswm" "clfswm-util" "clfswm-query")))) Modified: clfswm/xlib-util.lisp ============================================================================== --- clfswm/xlib-util.lisp (original) +++ clfswm/xlib-util.lisp Wed Mar 5 17:12:47 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Feb 28 21:55:00 2008 +;;; #Date#: Wed Mar 5 22:22:59 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility functions @@ -423,7 +423,7 @@ ;; implementation (see translate.lisp and keysyms.lisp). For now, ;; we do like this. It suffices for modifiers and ASCII symbols. (if (fboundp 'xlib:character->keysyms) - (xlib:character->keysyms ch)) + (xlib:character->keysyms ch) (list (case ch (:character-set-switch #xFF7E) @@ -447,7 +447,7 @@ ;; Latin-1 characters have their own value as keysym (if (< 31 (char-code ch) 256) (char-code ch) - (error "Don't know how to get keysym from ~A" ch)))))))) + (error "Don't know how to get keysym from ~A" ch))))))))) From pbrochard at common-lisp.net Thu Mar 6 14:47:34 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Thu, 6 Mar 2008 09:47:34 -0500 (EST) Subject: [clfswm-cvs] r16 - clfswm Message-ID: <20080306144734.3C3705F05B@common-lisp.net> Author: pbrochard Date: Thu Mar 6 09:47:33 2008 New Revision: 16 Modified: clfswm/README clfswm/clfswm-layout.lisp clfswm/clfswm-util.lisp clfswm/clfswm.lisp clfswm/load.lisp clfswm/package.lisp Log: Specify the base directory in the main loop. The main loop has key parameters Modified: clfswm/README ============================================================================== --- clfswm/README (original) +++ clfswm/README Thu Mar 6 09:47:33 2008 @@ -44,9 +44,10 @@ To change the default keybinding, have a look at the bindings*.lisp files and at the config.lisp file for global variables. -All variables can be overwritten in a user configuration file -(/etc/clfswmrc or $HOME/.clfswmrc). It's a standard lisp file loaded at -startup. There is an example in the clfswm source (see dot-clfswmrc). +All variables can be overwritten in a user configuration file: +$HOME/.clfswmrc or /etc/clfswmrc or $XDG_CONFIG_HOME/clfswm/clfswmrc. +It's a standard lisp file loaded at startup. There is an example in +the clfswm source (see dot-clfswmrc). If you want to add workspaces or groups at startup, tell this to clfswm in the init-display function in clfswm.lisp (there is already a @@ -74,7 +75,7 @@ [3]Free Software Foundation site. -Philippe Brochard . +Philippe Brochard . R?f?rences Modified: clfswm/clfswm-layout.lisp ============================================================================== --- clfswm/clfswm-layout.lisp (original) +++ clfswm/clfswm-layout.lisp Thu Mar 6 09:47:33 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Wed Feb 27 22:19:57 2008 +;;; #Date#: Thu Mar 6 15:04:13 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Layout functions @@ -47,7 +47,7 @@ (when (group-p *current-child*) (setf (group-layout *current-child*) layout) (leave-second-mode))) - ;;(show-all-childs))) + (defun get-managed-child (father) "Return only window in normal mode who can be tiled" @@ -59,6 +59,12 @@ (defun register-layout (layout) (setf *layout-list* (append *layout-list* (list layout)))) +(defun layout-ask-size (msg slot &optional (min 80)) + (when (group-p *current-child*) + (let ((new-size (/ (or (query-number msg (* (group-data-slot *current-child* slot) 100)) min) 100))) + (when (<= 0 new-size 1) + (setf (group-data-slot *current-child* slot) new-size))))) + ;;; No layout @@ -112,15 +118,6 @@ ;;; Tile Left -(defun layout-ask-size (msg slot &optional (min 80)) - (when (group-p *current-child*) - (let ((new-size (/ (or (query-number msg) min) 100))) - (when (<= 0 new-size 1) - (setf (group-data-slot *current-child* slot) new-size))))) - - - - (defgeneric tile-left-layout (child father) (:documentation "Tile Left: main child on left and others on right")) Modified: clfswm/clfswm-util.lisp ============================================================================== --- clfswm/clfswm-util.lisp (original) +++ clfswm/clfswm-util.lisp Thu Mar 6 09:47:33 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Mar 4 22:41:07 2008 +;;; #Date#: Thu Mar 6 15:26:18 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility @@ -29,7 +29,7 @@ (defun load-contrib (file) "Load a file in the contrib directory" - (let ((truename (concatenate 'string cl-user:*base-dir* "contrib/" file))) + (let ((truename (concatenate 'string *contrib-dir* "contrib/" file))) (format t "Loading contribution file: ~A~%" truename) (when (probe-file truename) (load truename)))) Modified: clfswm/clfswm.lisp ============================================================================== --- clfswm/clfswm.lisp (original) +++ clfswm/clfswm.lisp Thu Mar 6 09:47:33 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Mar 1 00:02:34 2008 +;;; #Date#: Thu Mar 6 15:34:27 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -261,10 +261,12 @@ -(defun main (&optional (display-str (or (getenv "DISPLAY") ":0")) protocol) +(defun main (&key (display (or (getenv "DISPLAY") ":0")) protocol + (base-dir (directory-namestring (or *load-truename* "")))) + (setf *contrib-dir* base-dir) (read-conf-file) (handler-case - (open-display display-str protocol) + (open-display display protocol) (xlib:access-error (c) (format t "~&~A~&Maybe another window manager is running.~%" c) (force-output) Modified: clfswm/load.lisp ============================================================================== --- clfswm/load.lisp (original) +++ clfswm/load.lisp Thu Mar 6 09:47:33 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Mar 4 22:29:03 2008 +;;; #Date#: Thu Mar 6 15:38:05 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: System loading functions @@ -57,4 +57,4 @@ (in-package :clfswm) -(clfswm:main ":0") +(clfswm:main) Modified: clfswm/package.lisp ============================================================================== --- clfswm/package.lisp (original) +++ clfswm/package.lisp Thu Mar 6 09:47:33 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Mar 1 13:52:50 2008 +;;; #Date#: Thu Mar 6 15:25:41 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Package definition @@ -41,6 +41,8 @@ (defparameter *no-focus-window* nil) (defparameter *root-gc* nil) +(defparameter *contrib-dir* "") + (defparameter *default-font* nil) ;;(defparameter *default-font-string* "9x15") (defparameter *default-font-string* "fixed") From pbrochard at common-lisp.net Thu Mar 6 15:15:25 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Thu, 6 Mar 2008 10:15:25 -0500 (EST) Subject: [clfswm-cvs] r17 - clfswm Message-ID: <20080306151525.512F85803D@common-lisp.net> Author: pbrochard Date: Thu Mar 6 10:15:24 2008 New Revision: 17 Modified: clfswm/bindings-second-mode.lisp clfswm/clfswm-info.lisp clfswm/clfswm-keys.lisp clfswm/clfswm-second-mode.lisp clfswm/config.lisp clfswm/package.lisp Log: Remove all reference to pager Modified: clfswm/bindings-second-mode.lisp ============================================================================== --- clfswm/bindings-second-mode.lisp (original) +++ clfswm/bindings-second-mode.lisp Thu Mar 6 10:15:24 2008 @@ -233,7 +233,7 @@ (let ((win (find-child-under-mouse root-x root-y))) (handle-click-to-focus win))) -(define-mouse-action (1) 'sm-handle-click-to-focus) +(define-second-mouse (1) 'sm-handle-click-to-focus) @@ -732,22 +732,22 @@ ;; ;; ;; -;;(define-mouse-action (1) 'move-selected-group 'release-move-selected-group) -;;(define-mouse-action (1 :mod-1) 'resize-selected-group 'release-resize-selected-group) -;;(define-mouse-action (1 :control) 'copy-selected-group 'release-copy-selected-group) +;;(define-second-mouse (1) 'move-selected-group 'release-move-selected-group) +;;(define-second-mouse (1 :mod-1) 'resize-selected-group 'release-resize-selected-group) +;;(define-second-mouse (1 :control) 'copy-selected-group 'release-copy-selected-group) ;; -;;(define-mouse-action (2) nil 'mouse-leave-second-mode-maximize) -;;(define-mouse-action (2 :control) nil 'mouse-leave-second-mode) +;;(define-second-mouse (2) nil 'mouse-leave-second-mode-maximize) +;;(define-second-mouse (2 :control) nil 'mouse-leave-second-mode) ;; -;;(define-mouse-action (3) 'move-selected-window 'release-move-selected-window) -;;(define-mouse-action (3 :control) 'copy-selected-window 'release-copy-selected-window) +;;(define-second-mouse (3) 'move-selected-window 'release-move-selected-window) +;;(define-second-mouse (3 :control) 'copy-selected-window 'release-copy-selected-window) ;; ;; -;;(define-mouse-action (4) 'mouse-circulate-window-up nil) -;;(define-mouse-action (5) 'mouse-circulate-window-down nil) +;;(define-second-mouse (4) 'mouse-circulate-window-up nil) +;;(define-second-mouse (5) 'mouse-circulate-window-down nil) ;; -;;(define-mouse-action (4 :mod-1) 'mouse-circulate-workspace-up nil) -;;(define-mouse-action (5 :mod-1) 'mouse-circulate-workspace-down nil) +;;(define-second-mouse (4 :mod-1) 'mouse-circulate-workspace-up nil) +;;(define-second-mouse (5 :mod-1) 'mouse-circulate-workspace-down nil) ;; -;;(define-mouse-action ('Motion) 'mouse-motion nil) +;;(define-second-mouse ('Motion) 'mouse-motion nil) Modified: clfswm/clfswm-info.lisp ============================================================================== --- clfswm/clfswm-info.lisp (original) +++ clfswm/clfswm-info.lisp Thu Mar 6 10:15:24 2008 @@ -339,7 +339,7 @@ (defun show-global-key-binding () "Show all key binding" - (show-key-binding *main-keys* *second-keys* *mouse-action* + (show-key-binding *main-keys* *second-keys* *second-mouse* *info-keys* *info-mouse-action*)) (defun show-main-mode-key-binding () @@ -348,7 +348,7 @@ (defun show-second-mode-key-binding () "Show the second mode key binding" - (show-key-binding *second-keys* *mouse-action*)) + (show-key-binding *second-keys* *second-mouse*)) (let ((days '("Lundi" "Mardi" "Mercredi" "Jeudi" "Vendredi" "Samedi" "Dimanche")) Modified: clfswm/clfswm-keys.lisp ============================================================================== --- clfswm/clfswm-keys.lisp (original) +++ clfswm/clfswm-keys.lisp Thu Mar 6 10:15:24 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Feb 12 19:23:14 2008 +;;; #Date#: Thu Mar 6 16:11:27 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Keys functions definition @@ -34,9 +34,7 @@ (define-hash-table-key-name *main-keys* "Main mode keys") (define-hash-table-key-name *second-keys* "Second mode keys") -(define-hash-table-key-name *mouse-action* "Mouse buttons actions in second mode") -(define-hash-table-key-name *pager-keys* "Pager mode keys") -(define-hash-table-key-name *pager-mouse-action* "Mouse buttons actions in pager mode") +(define-hash-table-key-name *second-mouse* "Mouse buttons actions in second mode") (define-hash-table-key-name *info-keys* "Info mode keys") (define-hash-table-key-name *info-mouse-action* "Mouse buttons actions in info mode") @@ -82,7 +80,6 @@ (define-define-key "main" *main-keys*) (define-define-key "second" *second-keys*) -(define-define-key "pager" *pager-keys*) (define-define-key "info" *info-keys*) @@ -95,8 +92,8 @@ (defun undefine-info-key-fun (key) (remhash key *info-keys*)) -(define-define-mouse "mouse-action" *mouse-action*) -(define-define-mouse "pager-mouse-action" *pager-mouse-action*) +;;(define-define-mouse "main-mouse" *main-mouse*) +(define-define-mouse "second-mouse" *second-mouse*) (define-define-mouse "info-mouse-action" *info-mouse-action*) @@ -231,7 +228,7 @@ (defun produce-doc-html-in-file (filename) (with-open-file (stream filename :direction :output :if-exists :supersede :if-does-not-exist :create) - (produce-doc-html (list *main-keys* *second-keys* *mouse-action* *pager-keys* *pager-mouse-action* + (produce-doc-html (list *main-keys* *second-keys* *second-mouse* *info-keys* *info-mouse-action*) stream))) @@ -264,7 +261,7 @@ (defun produce-doc-in-file (filename) (with-open-file (stream filename :direction :output :if-exists :supersede :if-does-not-exist :create) - (produce-doc (list *main-keys* *second-keys* *mouse-action* *pager-keys* *pager-mouse-action* + (produce-doc (list *main-keys* *second-keys* *second-mouse* *info-keys* *info-mouse-action*) stream))) Modified: clfswm/clfswm-second-mode.lisp ============================================================================== --- clfswm/clfswm-second-mode.lisp (original) +++ clfswm/clfswm-second-mode.lisp Thu Mar 6 10:15:24 2008 @@ -81,16 +81,16 @@ (defun sm-handle-motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) (declare (ignore event-slots)) (unless (compress-motion-notify) - (funcall-button-from-code *mouse-action* 'motion 0 root-x root-y #'first))) + (funcall-button-from-code *second-mouse* 'motion 0 root-x root-y #'first))) (defun sm-handle-button-press (&rest event-slots &key root-x root-y code state &allow-other-keys) (declare (ignore event-slots)) - (funcall-button-from-code *mouse-action* code state root-x root-y #'first) + (funcall-button-from-code *second-mouse* code state root-x root-y #'first) (draw-second-mode-window)) (defun sm-handle-button-release (&rest event-slots &key root-x root-y code state &allow-other-keys) (declare (ignore event-slots)) - (funcall-button-from-code *mouse-action* code state root-x root-y #'third) + (funcall-button-from-code *second-mouse* code state root-x root-y #'third) (draw-second-mode-window)) (defun sm-handle-configure-request (&rest event-slots) Modified: clfswm/config.lisp ============================================================================== --- clfswm/config.lisp (original) +++ clfswm/config.lisp Thu Mar 6 10:15:24 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Mar 1 13:52:41 2008 +;;; #Date#: Thu Mar 6 16:11:38 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Configuration file @@ -64,30 +64,6 @@ (defparameter *sm-height* 25) -;;; CONFIG - Pager mode colors and fonts -(defparameter *pager-background* "black") -(defparameter *pager-workspace-border* "blue") -(defparameter *pager-workspace-background* "black") -(defparameter *pager-group-border* "yellow") -(defparameter *pager-group-border-selected* "red") -(defparameter *pager-group-background* "grey10") - -(defparameter *pager-window-selected* "Green") -(defparameter *pager-window-deselected* "Yellow") -(defparameter *pager-window-hidden* "Green") -(defparameter *pager-window-hidden-1* "Red") - -(defparameter *pager-window-separator* "blue") - -(defparameter *pager-workspace-cursor* "black") -(defparameter *pager-line-cursor* "blue") -(defparameter *pager-group-cursor* "white") -(defparameter *pager-group-background-cursor* "grey35") - - -(defparameter *pager-font-string* "9x15bold") - -(defparameter *pager-workspace-height* 200) Modified: clfswm/package.lisp ============================================================================== --- clfswm/package.lisp (original) +++ clfswm/package.lisp Thu Mar 6 10:15:24 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 15:25:41 2008 +;;; #Date#: Thu Mar 6 16:11:59 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Package definition @@ -97,9 +97,7 @@ (defparameter *main-keys* (make-hash-table :test 'equal)) (defparameter *second-keys* (make-hash-table :test 'equal)) -(defparameter *mouse-action* (make-hash-table :test 'equal)) -(defparameter *pager-keys* (make-hash-table :test 'equal)) -(defparameter *pager-mouse-action* (make-hash-table :test 'equal)) +(defparameter *second-mouse* (make-hash-table :test 'equal)) (defparameter *info-keys* (make-hash-table :test 'equal)) (defparameter *info-mouse-action* (make-hash-table :test 'equal)) @@ -116,9 +114,6 @@ (defparameter *arrow-action* nil "Arrow action in the second mode") -(defparameter *pager-arrow-action* nil - "Arrow action in the pager mode") - ;;; Hook definitions @@ -167,21 +162,6 @@ (defparameter *sm-exposure-hook* nil) -;;; Pager mode hooks (set in clfswm-pager.lisp) -(defparameter *pager-button-press-hook* nil) -(defparameter *pager-button-release-hook* nil) -(defparameter *pager-motion-notify-hook* nil) -(defparameter *pager-key-press-hook* nil) -(defparameter *pager-configure-request-hook* nil) -(defparameter *pager-map-request-hook* nil) -(defparameter *pager-unmap-notify-hook* nil) -(defparameter *pager-destroy-notify-hook* nil) -(defparameter *pager-mapping-notify-hook* nil) -(defparameter *pager-property-notify-hook* nil) -(defparameter *pager-create-notify-hook* nil) -(defparameter *pager-enter-notify-hook* nil) -(defparameter *pager-exposure-hook* nil) - ;;; Second mode global variables (defparameter *motion-action* nil) From pbrochard at common-lisp.net Thu Mar 6 16:15:27 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Thu, 6 Mar 2008 11:15:27 -0500 (EST) Subject: [clfswm-cvs] r18 - clfswm Message-ID: <20080306161527.A6F3B340D0@common-lisp.net> Author: pbrochard Date: Thu Mar 6 11:15:26 2008 New Revision: 18 Modified: clfswm/bindings-second-mode.lisp clfswm/bindings.lisp clfswm/clfswm-info.lisp clfswm/clfswm-internal.lisp clfswm/clfswm-keys.lisp clfswm/clfswm-second-mode.lisp clfswm/clfswm.asd clfswm/clfswm.lisp clfswm/package.lisp clfswm/xlib-util.lisp Log: Handle mouse in the main mode the same way as in the second mode. Main mouse actions are now defined in bindings.lisp Modified: clfswm/bindings-second-mode.lisp ============================================================================== --- clfswm/bindings-second-mode.lisp (original) +++ clfswm/bindings-second-mode.lisp Thu Mar 6 11:15:26 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Mar 4 22:41:24 2008 +;;; #Date#: Thu Mar 6 16:32:54 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for second mode @@ -228,10 +228,11 @@ ;;; Mouse action -(defun sm-handle-click-to-focus (root-x root-y) +(defun sm-handle-click-to-focus (window root-x root-y) "Give the focus to the clicked child" + (declare (ignore window)) (let ((win (find-child-under-mouse root-x root-y))) - (handle-click-to-focus win))) + (handle-click-to-focus win root-x root-y))) (define-second-mouse (1) 'sm-handle-click-to-focus) Modified: clfswm/bindings.lisp ============================================================================== --- clfswm/bindings.lisp (original) +++ clfswm/bindings.lisp Thu Mar 6 11:15:26 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Mar 1 23:24:37 2008 +;;; #Date#: Thu Mar 6 17:10:55 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse @@ -73,6 +73,37 @@ (define-main-key ("less" :control) 'second-key-mode) + + + + +;;; Mouse actions + +(defun handle-click-to-focus (window root-x root-y) + "Focus the current group or the current window father" + (declare (ignore root-x root-y)) + (let ((to-replay t) + (child window) + (father (find-father-group window *current-root*))) + (unless father + (setf child (find-group-window window *current-root*) + father (find-father-group child *current-root*))) + (when (and child father (focus-all-childs child father)) + (show-all-childs) + (setf to-replay nil)) + (if to-replay + (replay-button-event) + (stop-button-event)))) + + +(defun test-mouse-binding (window root-x root-y) + (dbg window root-x root-y)) + +(define-main-mouse (1) 'handle-click-to-focus) +;;(define-main-mouse (1) 'handle-click-to-focus 'test-mouse-binding) +;;(define-main-mouse ('motion) 'test-mouse-binding) + + ;;(define-main-key ("a") (lambda () ;; (dbg 'key-a) ;; (show-all-childs *root-group*))) Modified: clfswm/clfswm-info.lisp ============================================================================== --- clfswm/clfswm-info.lisp (original) +++ clfswm/clfswm-info.lisp Thu Mar 6 11:15:26 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Feb 19 21:43:15 2008 +;;; #Date#: Thu Mar 6 16:45:37 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Info function (see the end of this file for user definition @@ -35,9 +35,9 @@ (declare (ignore info)) (throw 'exit-info-loop nil)) -(defun mouse-leave-info-mode (root-x root-y info) +(defun mouse-leave-info-mode (window root-x root-y info) "Leave the info mode" - (declare (ignore root-x root-y info)) + (declare (ignore window root-x root-y info)) (throw 'exit-info-loop nil)) @@ -152,35 +152,38 @@ (defparameter *info-start-grab-y* nil) -(defun info-begin-grab (root-x root-y info) +(defun info-begin-grab (window root-x root-y info) "Begin grab text" + (declare (ignore window)) (setf *info-start-grab-x* (+ root-x (info-x info)) *info-start-grab-y* (+ root-y (info-y info))) (draw-info-window info)) -(defun info-end-grab (root-x root-y info) +(defun info-end-grab (window root-x root-y info) "End grab" + (declare (ignore window)) (setf (info-x info) (- *info-start-grab-x* root-x) (info-y info) (- *info-start-grab-y* root-y) *info-start-grab-x* nil *info-start-grab-y* nil) (draw-info-window info)) -(defun info-mouse-next-line (root-x root-y info) +(defun info-mouse-next-line (window root-x root-y info) "Move one line down" - (declare (ignore root-x root-y)) + (declare (ignore window root-x root-y)) (incf (info-y info) (info-ilh info)) (draw-info-window info)) -(defun info-mouse-previous-line (root-x root-y info) +(defun info-mouse-previous-line (window root-x root-y info) "Move one line up" - (declare (ignore root-x root-y)) + (declare (ignore window root-x root-y)) (decf (info-y info) (info-ilh info)) (draw-info-window info)) -(defun info-mouse-motion (root-x root-y info) +(defun info-mouse-motion (window root-x root-y info) "Grab text" + (declare (ignore window)) (when (and *info-start-grab-x* *info-start-grab-y*) (setf (info-x info) (- *info-start-grab-x* root-x) (info-y info) (- *info-start-grab-y* root-y)) @@ -190,11 +193,11 @@ -(define-info-mouse-action (1) 'info-begin-grab 'info-end-grab) -(define-info-mouse-action (2) 'mouse-leave-info-mode) -(define-info-mouse-action (4) 'info-mouse-previous-line) -(define-info-mouse-action (5) 'info-mouse-next-line) -(define-info-mouse-action ('Motion) 'info-mouse-motion nil) +(define-info-mouse (1) 'info-begin-grab 'info-end-grab) +(define-info-mouse (2) 'mouse-leave-info-mode) +(define-info-mouse (4) 'info-mouse-previous-line) +(define-info-mouse (5) 'info-mouse-next-line) +(define-info-mouse ('Motion) 'info-mouse-motion nil) ;;;,----- @@ -236,13 +239,13 @@ (declare (ignore event-slots)) (unless (xlib:event-case (*display* :discard-p nil :peek-p t :timeout 0) (:motion-notify () t)) - (funcall-button-from-code *info-mouse-action* 'motion 0 root-x root-y #'first info))) - (handle-button-press (&rest event-slots &key root-x root-y code state &allow-other-keys) + (funcall-button-from-code *info-mouse* 'motion 0 window root-x root-y #'first info))) + (handle-button-press (&rest event-slots &key window root-x root-y code state &allow-other-keys) (declare (ignore event-slots)) - (funcall-button-from-code *info-mouse-action* code state root-x root-y #'first info)) - (handle-button-release (&rest event-slots &key root-x root-y code state &allow-other-keys) + (funcall-button-from-code *info-mouse* code state window root-x root-y #'first info)) + (handle-button-release (&rest event-slots &key window root-x root-y code state &allow-other-keys) (declare (ignore event-slots)) - (funcall-button-from-code *info-mouse-action* code state root-x root-y #'third info)) + (funcall-button-from-code *info-mouse* code state window root-x root-y #'third info)) (info-handle-unmap-notify (&rest event-slots) (apply #'handle-unmap-notify event-slots) (draw-info-window info)) @@ -339,12 +342,12 @@ (defun show-global-key-binding () "Show all key binding" - (show-key-binding *main-keys* *second-keys* *second-mouse* - *info-keys* *info-mouse-action*)) + (show-key-binding *main-keys* *main-mouse* *second-keys* *second-mouse* + *info-keys* *info-mouse*)) (defun show-main-mode-key-binding () "Show the main mode binding" - (show-key-binding *main-keys*)) + (show-key-binding *main-keys* *main-mouse*)) (defun show-second-mode-key-binding () "Show the second mode key binding" Modified: clfswm/clfswm-internal.lisp ============================================================================== --- clfswm/clfswm-internal.lisp (original) +++ clfswm/clfswm-internal.lisp Thu Mar 6 11:15:26 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Wed Mar 5 23:09:42 2008 +;;; #Date#: Thu Mar 6 16:58:18 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -166,7 +166,7 @@ :colormap (xlib:screen-default-colormap *screen*) :border-width 1 :border (get-color "Red") - :event-mask '(:exposure :button-press))) + :event-mask '(:exposure :button-press :button-release :pointer-motion))) (gc (xlib:create-gcontext :drawable window :foreground (get-color "Green") :background (get-color "Black") Modified: clfswm/clfswm-keys.lisp ============================================================================== --- clfswm/clfswm-keys.lisp (original) +++ clfswm/clfswm-keys.lisp Thu Mar 6 11:15:26 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 16:11:27 2008 +;;; #Date#: Thu Mar 6 16:47:42 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Keys functions definition @@ -33,10 +33,11 @@ ;;; CONFIG - Key mode names (define-hash-table-key-name *main-keys* "Main mode keys") +(define-hash-table-key-name *main-mouse* "Mouse buttons actions in main mode") (define-hash-table-key-name *second-keys* "Second mode keys") (define-hash-table-key-name *second-mouse* "Mouse buttons actions in second mode") (define-hash-table-key-name *info-keys* "Info mode keys") -(define-hash-table-key-name *info-mouse-action* "Mouse buttons actions in info mode") +(define-hash-table-key-name *info-mouse* "Mouse buttons actions in info mode") (defmacro define-define-key (name hashtable) @@ -84,17 +85,12 @@ - -;;(defun undefine-main-keys (&rest keys) -;; (dolist (k keys) -;; (undefine-main-key k))) - (defun undefine-info-key-fun (key) (remhash key *info-keys*)) -;;(define-define-mouse "main-mouse" *main-mouse*) +(define-define-mouse "main-mouse" *main-mouse*) (define-define-mouse "second-mouse" *second-mouse*) -(define-define-mouse "info-mouse-action" *info-mouse-action*) +(define-define-mouse "info-mouse" *info-mouse*) @@ -160,18 +156,20 @@ -(defun funcall-button-from-code (hash-table-key code state root-x root-y +(defun funcall-button-from-code (hash-table-key code state window root-x root-y &optional (action #'first) args) - "Action: first=press third=release" + "Action: first=press third=release - Return t if a function is found" (let ((state (modifiers->state (set-difference (state->modifiers state) '(:button-1 :button-2 :button-3 :button-4 :button-5))))) (multiple-value-bind (function foundp) (gethash (list code state) hash-table-key) (if (and foundp (funcall action function)) - (if args - (funcall (funcall action function) root-x root-y args) - (funcall (funcall action function) root-x root-y)) - t)))) + (progn + (if args + (funcall (funcall action function) window root-x root-y args) + (funcall (funcall action function) window root-x root-y)) + t) + nil)))) @@ -228,8 +226,8 @@ (defun produce-doc-html-in-file (filename) (with-open-file (stream filename :direction :output :if-exists :supersede :if-does-not-exist :create) - (produce-doc-html (list *main-keys* *second-keys* *second-mouse* - *info-keys* *info-mouse-action*) + (produce-doc-html (list *main-keys* *main-mouse* *second-keys* *second-mouse* + *info-keys* *info-mouse*) stream))) @@ -261,8 +259,8 @@ (defun produce-doc-in-file (filename) (with-open-file (stream filename :direction :output :if-exists :supersede :if-does-not-exist :create) - (produce-doc (list *main-keys* *second-keys* *second-mouse* - *info-keys* *info-mouse-action*) + (produce-doc (list *main-keys* *main-mouse* *second-keys* *second-mouse* + *info-keys* *info-mouse*) stream))) Modified: clfswm/clfswm-second-mode.lisp ============================================================================== --- clfswm/clfswm-second-mode.lisp (original) +++ clfswm/clfswm-second-mode.lisp Thu Mar 6 11:15:26 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Feb 22 21:38:53 2008 +;;; #Date#: Thu Mar 6 16:30:51 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Second mode functions @@ -83,14 +83,14 @@ (unless (compress-motion-notify) (funcall-button-from-code *second-mouse* 'motion 0 root-x root-y #'first))) -(defun sm-handle-button-press (&rest event-slots &key root-x root-y code state &allow-other-keys) +(defun sm-handle-button-press (&rest event-slots &key window root-x root-y code state &allow-other-keys) (declare (ignore event-slots)) - (funcall-button-from-code *second-mouse* code state root-x root-y #'first) + (funcall-button-from-code *second-mouse* code state window root-x root-y #'first) (draw-second-mode-window)) -(defun sm-handle-button-release (&rest event-slots &key root-x root-y code state &allow-other-keys) +(defun sm-handle-button-release (&rest event-slots &key window root-x root-y code state &allow-other-keys) (declare (ignore event-slots)) - (funcall-button-from-code *second-mouse* code state root-x root-y #'third) + (funcall-button-from-code *second-mouse* code state window root-x root-y #'third) (draw-second-mode-window)) (defun sm-handle-configure-request (&rest event-slots) Modified: clfswm/clfswm.asd ============================================================================== --- clfswm/clfswm.asd (original) +++ clfswm/clfswm.asd Thu Mar 6 11:15:26 2008 @@ -2,7 +2,7 @@ ;;;; Author: Philippe Brochard ;;;; ASDF System Definition ;;; -;;; #date#: Wed Mar 5 23:08:25 2008 +;;; #date#: Thu Mar 6 16:21:25 2008 (in-package #:asdf) @@ -44,7 +44,7 @@ (:file "bindings" :depends-on ("clfswm" "clfswm-internal")) (:file "bindings-second-mode" - :depends-on ("clfswm" "clfswm-util" "clfswm-query")))) + :depends-on ("clfswm" "clfswm-util" "clfswm-query" "bindings")))) Modified: clfswm/clfswm.lisp ============================================================================== --- clfswm/clfswm.lisp (original) +++ clfswm/clfswm.lisp Thu Mar 6 11:15:26 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 15:34:27 2008 +;;; #Date#: Thu Mar 6 16:57:45 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -37,6 +37,23 @@ (funcall-key-from-code *main-keys* code state)) +;; PHIL: TODO: focus-policy par group +;; :click, :sloppy, :nofocus +(defun handle-button-press (&rest event-slots &key code state window root-x root-y &allow-other-keys) + (declare (ignore event-slots)) + (unless (funcall-button-from-code *main-mouse* code state window root-x root-y #'first) + (replay-button-event))) + + +(defun handle-button-release (&rest event-slots &key code state window root-x root-y &allow-other-keys) + (declare (ignore event-slots)) + (unless (funcall-button-from-code *main-mouse* code state window root-x root-y #'third) + (replay-button-event))) + +(defun handle-motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) + (declare (ignore event-slots)) + (unless (compress-motion-notify) + (funcall-button-from-code *main-mouse* 'motion 0 root-x root-y #'first))) (defun handle-configure-request (&rest event-slots &key stack-mode #|parent|# window #|above-sibling|# @@ -121,29 +138,6 @@ -;; PHIL: TODO: focus-policy par group -;; :click, :sloppy, :nofocus -(defun handle-click-to-focus (window) - (let ((to-replay t) - (child window) - (father (find-father-group window *current-root*))) - (unless father - (setf child (find-group-window window *current-root*) - father (find-father-group child *current-root*))) - (when (and child father (focus-all-childs child father)) - (show-all-childs) - (setf to-replay nil)) - (if to-replay (replay-button-event) (stop-button-event)))) - - -(defun handle-button-press (&rest event-slots &key code state window &allow-other-keys) - (declare (ignore event-slots)) - (if (and (= code 1) (= state 0)) - (handle-click-to-focus window) - (replay-button-event))) - - - @@ -157,7 +151,9 @@ *map-request-hook* #'handle-map-request *unmap-notify-hook* 'handle-unmap-notify *create-notify-hook* #'handle-create-notify - *button-press-hook* 'handle-button-press) + *button-press-hook* 'handle-button-press + *button-release-hook* 'handle-button-release + *motion-notify-hook* 'handle-motion-notify) @@ -168,7 +164,8 @@ (with-xlib-protect (case event-key (:button-press (call-hook *button-press-hook* event-slots)) - (:motion-notify (call-hook *button-motion-notify-hook* event-slots)) + (:button-release (call-hook *button-release-hook* event-slots)) + (:motion-notify (call-hook *motion-notify-hook* event-slots)) (:key-press (call-hook *key-press-hook* event-slots)) (:configure-request (call-hook *configure-request-hook* event-slots)) (:configure-notify (call-hook *configure-notify-hook* event-slots)) @@ -221,7 +218,9 @@ :substructure-notify :property-change :exposure - :button-press)) + :button-press + :button-release + :pointer-motion)) ;;(intern-atoms *display*) (netwm-set-properties) (xlib:display-force-output *display*) Modified: clfswm/package.lisp ============================================================================== --- clfswm/package.lisp (original) +++ clfswm/package.lisp Thu Mar 6 11:15:26 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 16:11:59 2008 +;;; #Date#: Thu Mar 6 16:52:01 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Package definition @@ -96,10 +96,11 @@ (defparameter *main-keys* (make-hash-table :test 'equal)) +(defparameter *main-mouse* (make-hash-table :test 'equal)) (defparameter *second-keys* (make-hash-table :test 'equal)) (defparameter *second-mouse* (make-hash-table :test 'equal)) (defparameter *info-keys* (make-hash-table :test 'equal)) -(defparameter *info-mouse-action* (make-hash-table :test 'equal)) +(defparameter *info-mouse* (make-hash-table :test 'equal)) (defparameter *open-next-window-in-new-workspace* nil @@ -131,7 +132,8 @@ ;;; Main mode hooks (set in clfswm.lisp) (defparameter *button-press-hook* nil) -(defparameter *button-motion-notify-hook* nil) +(defparameter *button-release-hook* nil) +(defparameter *motion-notify-hook* nil) (defparameter *key-press-hook* nil) (defparameter *configure-request-hook* nil) (defparameter *configure-notify-hook* nil) Modified: clfswm/xlib-util.lisp ============================================================================== --- clfswm/xlib-util.lisp (original) +++ clfswm/xlib-util.lisp Thu Mar 6 11:15:26 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Wed Mar 5 22:22:59 2008 +;;; #Date#: Thu Mar 6 17:03:02 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility functions @@ -39,9 +39,10 @@ :colormap-change :focus-change :enter-window - :exposure) - ;;:button-press - ;;:button-release) + :exposure + :button-press + :button-release + :pointer-motion) "The events to listen for on managed windows.") @@ -402,7 +403,7 @@ (defun grab-all-buttons (window) (ungrab-all-buttons window) - (xlib:grab-button window :any '(:button-press) + (xlib:grab-button window :any '(:button-press :button-release :pointer-motion) :modifiers :any :owner-p nil :sync-pointer-p t From pbrochard at common-lisp.net Thu Mar 6 16:38:04 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Thu, 6 Mar 2008 11:38:04 -0500 (EST) Subject: [clfswm-cvs] r19 - clfswm Message-ID: <20080306163804.2B6A15805E@common-lisp.net> Author: pbrochard Date: Thu Mar 6 11:38:03 2008 New Revision: 19 Modified: clfswm/xlib-util.lisp Log: Remove button-pess/release in window-event. They are handled another way Modified: clfswm/xlib-util.lisp ============================================================================== --- clfswm/xlib-util.lisp (original) +++ clfswm/xlib-util.lisp Thu Mar 6 11:38:03 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 17:03:02 2008 +;;; #Date#: Thu Mar 6 17:33:40 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility functions @@ -39,10 +39,7 @@ :colormap-change :focus-change :enter-window - :exposure - :button-press - :button-release - :pointer-motion) + :exposure) "The events to listen for on managed windows.") From pbrochard at common-lisp.net Fri Mar 7 22:20:29 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Fri, 7 Mar 2008 17:20:29 -0500 (EST) Subject: [clfswm-cvs] r20 - clfswm Message-ID: <20080307222029.90DE0610B2@common-lisp.net> Author: pbrochard Date: Fri Mar 7 17:20:27 2008 New Revision: 20 Modified: clfswm/bindings-second-mode.lisp clfswm/bindings.lisp clfswm/clfswm-internal.lisp clfswm/clfswm-util.lisp clfswm/clfswm.lisp clfswm/xlib-util.lisp Log: Begining of mouse handling -> wheel mouse Modified: clfswm/bindings-second-mode.lisp ============================================================================== --- clfswm/bindings-second-mode.lisp (original) +++ clfswm/bindings-second-mode.lisp Fri Mar 7 17:20:27 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 16:32:54 2008 +;;; #Date#: Fri Mar 7 23:14:21 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for second mode @@ -228,13 +228,54 @@ ;;; Mouse action -(defun sm-handle-click-to-focus (window root-x root-y) + + +(defun sm-mouse-click-to-focus (window root-x root-y) "Give the focus to the clicked child" (declare (ignore window)) - (let ((win (find-child-under-mouse root-x root-y))) - (handle-click-to-focus win root-x root-y))) + (let ((win (find-window-under-mouse root-x root-y))) + (mouse-click-to-focus win root-x root-y))) + + + + +(defun sm-mouse-select-next-level (window root-x root-y) + "Select the next level in group" + (declare (ignore window root-x root-y)) + (select-next-level)) + + + + +(defun sm-mouse-select-previous-level (window root-x root-y) + "Select the previous level in group" + (declare (ignore window root-x root-y)) + (select-previous-level)) + + + +(defun sm-mouse-enter-group (window root-x root-y) + "Enter in the selected group - ie make it the root group" + (declare (ignore window root-x root-y)) + (enter-group)) + + + +(defun sm-mouse-leave-group (window root-x root-y) + "Leave the selected group - ie make its father the root group" + (declare (ignore window root-x root-y)) + (leave-group)) + + + + +(define-second-mouse (1) 'sm-mouse-click-to-focus) + +(define-second-mouse (4) 'sm-mouse-select-next-level) +(define-second-mouse (5) 'sm-mouse-select-previous-level) -(define-second-mouse (1) 'sm-handle-click-to-focus) +(define-second-mouse (4 :mod-1) 'sm-mouse-enter-group) +(define-second-mouse (5 :mod-1) 'sm-mouse-leave-group) Modified: clfswm/bindings.lisp ============================================================================== --- clfswm/bindings.lisp (original) +++ clfswm/bindings.lisp Fri Mar 7 17:20:27 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 17:10:55 2008 +;;; #Date#: Fri Mar 7 22:58:01 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse @@ -79,7 +79,7 @@ ;;; Mouse actions -(defun handle-click-to-focus (window root-x root-y) +(defun mouse-click-to-focus (window root-x root-y) "Focus the current group or the current window father" (declare (ignore root-x root-y)) (let ((to-replay t) @@ -99,7 +99,56 @@ (defun test-mouse-binding (window root-x root-y) (dbg window root-x root-y)) -(define-main-mouse (1) 'handle-click-to-focus) + + +(defun mouse-select-next-level (window root-x root-y) + "Select the next level in group" + (declare (ignore root-x root-y)) + (let ((group (find-group-window window))) + (when (or group (xlib:window-equal window *root*)) + (select-next-level)) + (replay-button-event))) + + + +(defun mouse-select-previous-level (window root-x root-y) + "Select the previous level in group" + (declare (ignore root-x root-y)) + (let ((group (find-group-window window))) + (when (or group (xlib:window-equal window *root*)) + (select-previous-level)) + (replay-button-event))) + + + +(defun mouse-enter-group (window root-x root-y) + "Enter in the selected group - ie make it the root group" + (declare (ignore root-x root-y)) + (let ((group (find-group-window window))) + (when (or group (xlib:window-equal window *root*)) + (enter-group)) + (replay-button-event))) + + + +(defun mouse-leave-group (window root-x root-y) + "Leave the selected group - ie make its father the root group" + (declare (ignore root-x root-y)) + (let ((group (find-group-window window))) + (when (or group (xlib:window-equal window *root*)) + (leave-group)) + (replay-button-event))) + + +(define-main-mouse (1) 'mouse-click-to-focus) + + +(define-main-mouse (4) 'mouse-select-next-level) +(define-main-mouse (5) 'mouse-select-previous-level) + +(define-main-mouse (4 :mod-1) 'mouse-enter-group) +(define-main-mouse (5 :mod-1) 'mouse-leave-group) + ;;(define-main-mouse (1) 'handle-click-to-focus 'test-mouse-binding) ;;(define-main-mouse ('motion) 'test-mouse-binding) Modified: clfswm/clfswm-internal.lisp ============================================================================== --- clfswm/clfswm-internal.lisp (original) +++ clfswm/clfswm-internal.lisp Fri Mar 7 17:20:27 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 16:58:18 2008 +;;; #Date#: Fri Mar 7 22:25:37 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -31,10 +31,11 @@ ;;; Minimal hook (defun call-hook (hook &optional args) "Call a hook (a function, a symbol or a list of function)" - (typecase hook - (list (dolist (h hook) - (apply 'call-hook (list h args)))) - (t (apply hook args)))) + (when hook + (typecase hook + (cons (dolist (h hook) + (call-hook h args))) + (t (apply hook args))))) @@ -590,17 +591,30 @@ +(defun place-window-from-hints (window) + "Place a window from its hints" + (let* ((hints (xlib:wm-normal-hints window)) + (min-width (or (and hints (xlib:wm-size-hints-min-width hints)) 0)) + (min-height (or (and hints (xlib:wm-size-hints-min-height hints)) 0)) + (max-width (or (and hints (xlib:wm-size-hints-max-width hints)) (xlib:drawable-width *root*))) + (max-height (or (and hints (xlib:wm-size-hints-max-height hints)) (xlib:drawable-height *root*))) + (rwidth (or (and hints (or (xlib:wm-size-hints-width hints) (xlib:wm-size-hints-base-width hints))) + (xlib:drawable-width window))) + (rheight (or (and hints (or (xlib:wm-size-hints-height hints) (xlib:wm-size-hints-base-height hints))) + (xlib:drawable-height window)))) + (setf (xlib:drawable-width window) (min (max min-width rwidth) max-width) + (xlib:drawable-height window) (min (max min-height rheight) max-height)) + (setf (xlib:drawable-x window) (truncate (+ (group-rx *current-child*) (/ (- (group-rw *current-child*) (xlib:drawable-width window)) 2))) + (xlib:drawable-y window) (truncate (+ (group-ry *current-child*) (/ (- (group-rh *current-child*) (xlib:drawable-height window)) 2)))))) + + (defun process-new-window (window) "When a new window is created (or when we are scanning initial windows), this function dresses the window up and gets it ready to be managed." - ;; Listen for events - ;;(create-workspace-on-request) - ;;(create-group-on-request) - ;; PHIL: TODO: add a hook here (with-xlib-protect - (setf (xlib:window-event-mask window) *window-events*) + (setf (xlib:window-event-mask window) *window-events*) (set-window-state window +normal-state+) (setf (xlib:drawable-border-width window) (case (window-type window) (:normal 1) @@ -618,19 +632,7 @@ ;;(dbg (xlib:wm-name window) (xlib:get-wm-class window) (window-type window)) ;;; PHIL (case (window-type window) (:normal (adapt-child-to-father window *current-child*)) - (t (let* ((hints (xlib:wm-normal-hints window)) - (min-width (or (and hints (xlib:wm-size-hints-min-width hints)) 0)) - (min-height (or (and hints (xlib:wm-size-hints-min-height hints)) 0)) - (max-width (or (and hints (xlib:wm-size-hints-max-width hints)) (xlib:drawable-width *root*))) - (max-height (or (and hints (xlib:wm-size-hints-max-height hints)) (xlib:drawable-height *root*))) - (rwidth (or (and hints (or (xlib:wm-size-hints-width hints) (xlib:wm-size-hints-base-width hints))) - (xlib:drawable-width window))) - (rheight (or (and hints (or (xlib:wm-size-hints-height hints) (xlib:wm-size-hints-base-height hints))) - (xlib:drawable-height window)))) - (setf (xlib:drawable-width window) (min (max min-width rwidth) max-width) - (xlib:drawable-height window) (min (max min-height rheight) max-height)) - (setf (xlib:drawable-x window) (truncate (+ (group-rx *current-child*) (/ (- (group-rw *current-child*) (xlib:drawable-width window)) 2))) - (xlib:drawable-y window) (truncate (+ (group-ry *current-child*) (/ (- (group-rh *current-child*) (xlib:drawable-height window)) 2))))))) + (t (place-window-from-hints window))) (netwm-add-in-client-list window))) Modified: clfswm/clfswm-util.lisp ============================================================================== --- clfswm/clfswm-util.lisp (original) +++ clfswm/clfswm-util.lisp Fri Mar 7 17:20:27 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 15:26:18 2008 +;;; #Date#: Fri Mar 7 23:07:03 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility @@ -110,27 +110,41 @@ (defun unhide-all-windows-in-current-child () "Unhide all hidden windows into the current child" (with-xlib-protect - (dolist (window (get-hidden-windows)) - (unhide-window window) - (process-new-window window) - (xlib:map-window window))) + (dolist (window (get-hidden-windows)) + (unhide-window window) + (process-new-window window) + (xlib:map-window window))) (show-all-childs)) -(defun find-child-under-mouse (x y) +(defun find-window-under-mouse (x y) "Return the child window under the mouse" (with-xlib-protect - (let ((win nil)) - (with-all-windows-groups (*current-root* child) - (when (and (<= (xlib:drawable-x child) x (+ (xlib:drawable-x child) (xlib:drawable-width child))) - (<= (xlib:drawable-y child) y (+ (xlib:drawable-y child) (xlib:drawable-height child)))) - (setf win child)) - (when (and (<= (group-rx child) x (+ (group-rx child) (group-rw child))) - (<= (group-ry child) y (+ (group-ry child) (group-rh child)))) - (setf win (group-window child)))) - win))) + (let ((win nil)) + (with-all-windows-groups (*current-root* child) + (when (and (<= (xlib:drawable-x child) x (+ (xlib:drawable-x child) (xlib:drawable-width child))) + (<= (xlib:drawable-y child) y (+ (xlib:drawable-y child) (xlib:drawable-height child)))) + (setf win child)) + (when (and (<= (group-rx child) x (+ (group-rx child) (group-rw child))) + (<= (group-ry child) y (+ (group-ry child) (group-rh child)))) + (setf win (group-window child)))) + win))) + + +(defun find-child-under-mouse (x y) + "Return the child under the mouse" + (with-xlib-protect + (let ((ret nil)) + (with-all-windows-groups (*current-root* child) + (when (and (<= (xlib:drawable-x child) x (+ (xlib:drawable-x child) (xlib:drawable-width child))) + (<= (xlib:drawable-y child) y (+ (xlib:drawable-y child) (xlib:drawable-height child)))) + (setf ret child)) + (when (and (<= (group-rx child) x (+ (group-rx child) (group-rw child))) + (<= (group-ry child) y (+ (group-ry child) (group-rh child)))) + (setf ret child))) + ret))) Modified: clfswm/clfswm.lisp ============================================================================== --- clfswm/clfswm.lisp (original) +++ clfswm/clfswm.lisp Fri Mar 7 17:20:27 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 16:57:45 2008 +;;; #Date#: Fri Mar 7 21:16:29 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -37,7 +37,7 @@ (funcall-key-from-code *main-keys* code state)) -;; PHIL: TODO: focus-policy par group +;; PHIL: TODO: focus-policy by group ;; :click, :sloppy, :nofocus (defun handle-button-press (&rest event-slots &key code state window root-x root-y &allow-other-keys) (declare (ignore event-slots)) Modified: clfswm/xlib-util.lisp ============================================================================== --- clfswm/xlib-util.lisp (original) +++ clfswm/xlib-util.lisp Fri Mar 7 17:20:27 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 17:33:40 2008 +;;; #Date#: Fri Mar 7 21:18:17 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility functions @@ -121,9 +121,10 @@ (defun unhide-window (window) (when window (with-xlib-protect - (xlib:map-window window) - (setf (window-state window) +normal-state+ - (xlib:window-event-mask window) *window-events*)))) + (when (window-hidden-p window) + (xlib:map-window window) + (setf (window-state window) +normal-state+ + (xlib:window-event-mask window) *window-events*))))) From pbrochard at common-lisp.net Sun Mar 9 14:20:10 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sun, 9 Mar 2008 09:20:10 -0500 (EST) Subject: [clfswm-cvs] r21 - in clfswm: . contrib Message-ID: <20080309142010.03CEE47143@common-lisp.net> Author: pbrochard Date: Sun Mar 9 09:20:09 2008 New Revision: 21 Added: clfswm/contrib/clfswm Modified: clfswm/AUTHORS clfswm/ChangeLog clfswm/bindings.lisp clfswm/clfswm-internal.lisp clfswm/clfswm.lisp clfswm/package.lisp Log: Check /home/phil/.config/clfswm/clfswmrc first. New clfswm script thanks to Xavier Maillard. Beginning of new window hook Modified: clfswm/AUTHORS ============================================================================== --- clfswm/AUTHORS (original) +++ clfswm/AUTHORS Sun Mar 9 09:20:09 2008 @@ -4,6 +4,13 @@ Philippe Brochard hocwp at free dot fr +Contributors +------------ + +Xavier Maillard xma at gnu dot org +Cyrille THOUVENIN + + ----------------------------------- Some of the CLFSWM code is based on Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sun Mar 9 09:20:09 2008 @@ -1,3 +1,20 @@ +2008-03-09 Philippe Brochard + + * clfswm-internal.lisp (process-new-window): Beginning of new + window hook: each group have a hook to tell what he wants to do + with the new created window. + +2008-03-08 Xavier Maillard + + * contrib/clfswm: New script. Dump a CLISP image of CLFSWM then + call the resulting executable. + +2008-03-08 Xavier Maillard + + * clfswm.lisp (read-conf-file): Check for the user config file in + XDG_CONFIG_HOME *first*. Freedesktop.org standards should be + prefered whenever possible. + 2008-02-27 Philippe Brochard * clfswm-layout.lisp (*-layout): Add an optional raise-p Modified: clfswm/bindings.lisp ============================================================================== --- clfswm/bindings.lisp (original) +++ clfswm/bindings.lisp Sun Mar 9 09:20:09 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Mar 7 22:58:01 2008 +;;; #Date#: Sat Mar 8 21:13:30 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse @@ -140,7 +140,7 @@ (replay-button-event))) -(define-main-mouse (1) 'mouse-click-to-focus) +(define-main-mouse (1) nil 'mouse-click-to-focus) (define-main-mouse (4) 'mouse-select-next-level) Modified: clfswm/clfswm-internal.lisp ============================================================================== --- clfswm/clfswm-internal.lisp (original) +++ clfswm/clfswm-internal.lisp Sun Mar 9 09:20:09 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Mar 7 22:25:37 2008 +;;; #Date#: Sun Mar 9 01:24:59 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -30,12 +30,17 @@ ;;; Minimal hook (defun call-hook (hook &optional args) - "Call a hook (a function, a symbol or a list of function)" - (when hook - (typecase hook - (cons (dolist (h hook) - (call-hook h args))) - (t (apply hook args))))) + "Call a hook (a function, a symbol or a list of functions) +Return the result of the last hook" + (let ((result nil)) + (labels ((rec (hook) + (when hook + (typecase hook + (cons (dolist (h hook) + (rec h))) + (t (setf result (apply hook args))))))) + (rec hook) + result))) @@ -609,6 +614,46 @@ +(defun default-group-nw-hook (window) + (when (xlib:window-p *current-child*) + (leave-group) + (select-previous-level)) + ;;(unless (eql (window-type window) :maxsize) ;; PHIL: this is sufficient for the ROX panel + (when (group-p *current-child*) + (pushnew window (group-child *current-child*))) ;) + ;;(dbg (xlib:wm-name window) (xlib:get-wm-class window) (window-type window)) ;;; PHIL + (case (window-type window) + (:normal (adapt-child-to-father window *current-child*)) + (t (place-window-from-hints window)))) + + +(defun open-in-new-group-nw-hook (group window) + (declare (ignore group)) + (pushnew window (group-child *current-root*)) + ;;(dbg (xlib:wm-name window) (xlib:get-wm-class window) (window-type window)) ;;; PHIL + (case (window-type window) + (:normal (adapt-child-to-father window *current-root*)) + (t (place-window-from-hints window))) + (list t nil)) + + + +(defun do-all-groups-nw-hook (window) + "Call nw-hook of each group. A hook must return one value or a list of two values. +If the value or the first value is true then the default nw-hook is not executed. +If the second value is true then no more group can do an action with the window (ie leave the loop)." + (let ((result nil)) + (with-all-groups (*root-group* group) + (let ((ret (call-hook (group-nw-hook group) (list group window)))) + (typecase ret + (cons (when (first ret) + (setf result t)) + (when (second ret) + (return-from do-all-groups-nw-hook result))) + (t (when ret + (setf result t)))))) + result)) + (defun process-new-window (window) "When a new window is created (or when we are scanning initial windows), this function dresses the window up and gets it ready to be @@ -622,17 +667,11 @@ (:transient 1) (t 0))) (grab-all-buttons window) - (when (xlib:window-p *current-child*) - (leave-group) - (select-previous-level)) - ;;(unless (eql (window-type window) :maxsize) ;; PHIL: this is sufficient for the ROX panel - (when (group-p *current-child*) - (pushnew window (group-child *current-child*))) ;) +;; (when (group-p *current-child*) ;; PHIL: Remove this!!! +;; (setf (group-nw-hook *current-child*) #'open-in-new-group-nw-hook)) + (unless (do-all-groups-nw-hook window) + (default-group-nw-hook window)) (unhide-window window) - ;;(dbg (xlib:wm-name window) (xlib:get-wm-class window) (window-type window)) ;;; PHIL - (case (window-type window) - (:normal (adapt-child-to-father window *current-child*)) - (t (place-window-from-hints window))) (netwm-add-in-client-list window))) Modified: clfswm/clfswm.lisp ============================================================================== --- clfswm/clfswm.lisp (original) +++ clfswm/clfswm.lisp Sun Mar 9 09:20:09 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Mar 7 21:16:29 2008 +;;; #Date#: Sun Mar 9 13:35:36 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions @@ -96,10 +96,8 @@ (defun handle-map-request (&rest event-slots &key window send-event-p &allow-other-keys) (declare (ignore event-slots)) (unless send-event-p - ;; (unhide-window window) (process-new-window window) (xlib:map-window window) - ;; (focus-window window) (show-all-childs))) @@ -247,7 +245,7 @@ (etc-conf (probe-file #p"/etc/clfswmrc")) (config-user-conf (probe-file (make-pathname :directory (append (xdg-config-home) '("clfswm")) :name "clfswmrc"))) - (conf (or user-conf etc-conf config-user-conf))) + (conf (or config-user-conf user-conf etc-conf))) (if conf (handler-case (load conf) (error (c) Added: clfswm/contrib/clfswm ============================================================================== --- (empty file) +++ clfswm/contrib/clfswm Sun Mar 9 09:20:09 2008 @@ -0,0 +1,54 @@ +#!/bin/bash -e +# +# #Date#: +# +# -------------------------------------------------------------------------- +# Documentation: +# +# Original code and idea: http://stumpwm.antidesktop.net/cgi-bin/wiki/SetUp +# +# This script is targeted to CLisp users. It will help in starting +# CLFSWM quicker by dumping an image of CLFSWM. +# +# Installation: +# Put this script wherever you want and just call it from your .xinitrc file +# +# The first time you will launch it, it will build the final +# executable and then call it. To force a rebuild of your executable +# (say you have updated something in the CLFSWM source tree), just +# delete the image and restart your X session. +# -------------------------------------------------------------------------- + +# (C) 2008 Xavier Maillard + +# 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 3 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. +# +# -------------------------------------------------------------------------- + +# Tweak this +IMAGE="$HOME/var/cache/clfswm-$(cksum $(type -p clisp) | cut -d ' ' -f 1).core" +ASDF=$HOME/usr/src/SVNed/clfswm +CLFSWMASDPATH=$HOME/usr/share/common-lisp/systems + +if test ! -e "$x" || + ( for i in "$(dirname $(readlink $CLFSWMASDPATH/clfswm.asd))"/*.lisp + do test "$x" -ot "$i" && exit 1 + done ) +then + clisp -m 8MB -E ISO-8859-1 -q -K full -i $ASDF/asdf.lisp -x "(asdf:oos 'asdf:load-op :clfswm)\ + (EXT:SAVEINITMEM \"$IMAGE\" :INIT-FUNCTION 'clfswm:main :EXECUTABLE t :norc t)" +fi + +$IMAGE Modified: clfswm/package.lisp ============================================================================== --- clfswm/package.lisp (original) +++ clfswm/package.lisp Sun Mar 9 09:20:09 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 16:52:01 2008 +;;; #Date#: Sat Mar 8 21:26:50 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Package definition @@ -76,6 +76,8 @@ (rw :initarg :rw :accessor group-rw :initform 800) (rh :initarg :rh :accessor group-rh :initform 600) (layout :initarg :layout :accessor group-layout :initform nil) + (nw-hook :initarg :nw-hook :accessor group-nw-hook :initform nil + :documentation "Hook done by the group when a new window is mapped") (window :initarg :window :accessor group-window :initform nil) (gc :initarg :gc :accessor group-gc :initform nil) (child :initarg :child :accessor group-child :initform nil) From pbrochard at common-lisp.net Sun Mar 9 14:32:17 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sun, 9 Mar 2008 09:32:17 -0500 (EST) Subject: [clfswm-cvs] r22 - clfswm Message-ID: <20080309143217.360B858708@common-lisp.net> Author: pbrochard Date: Sun Mar 9 09:32:17 2008 New Revision: 22 Added: clfswm/clfswm-nw-hooks.lisp Log: New file: clfswm-nw-hooks.lisp to store hooks on new windows Added: clfswm/clfswm-nw-hooks.lisp ============================================================================== --- (empty file) +++ clfswm/clfswm-nw-hooks.lisp Sun Mar 9 09:32:17 2008 @@ -0,0 +1,33 @@ +;;; -------------------------------------------------------------------------- +;;; CLFSWM - FullScreen Window Manager +;;; +;;; #Date#: Sun Mar 9 15:26:50 2008 +;;; +;;; -------------------------------------------------------------------------- +;;; Documentation: New window Hooks +;;; +;;; This hooks can be set for each group to manage new window when they are +;;; mapped. +;;; -------------------------------------------------------------------------- +;;; +;;; (C) 2005 Philippe Brochard +;;; +;;; 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 3 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. +;;; +;;; -------------------------------------------------------------------------- + +(in-package :clfswm) + +;;; TODO: fill this file From pbrochard at common-lisp.net Sun Mar 9 14:35:25 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sun, 9 Mar 2008 09:35:25 -0500 (EST) Subject: [clfswm-cvs] r23 - clfswm Message-ID: <20080309143525.39641601C0@common-lisp.net> Author: pbrochard Date: Sun Mar 9 09:35:24 2008 New Revision: 23 Modified: clfswm/clfswm-nw-hooks.lisp Log: test of git Modified: clfswm/clfswm-nw-hooks.lisp ============================================================================== --- clfswm/clfswm-nw-hooks.lisp (original) +++ clfswm/clfswm-nw-hooks.lisp Sun Mar 9 09:35:24 2008 @@ -1,12 +1,12 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sun Mar 9 15:26:50 2008 +;;; #Date#: Sun Mar 9 15:31:35 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: New window Hooks ;;; -;;; This hooks can be set for each group to manage new window when they are +;;; Those hooks can be set for each group to manage new window when they are ;;; mapped. ;;; -------------------------------------------------------------------------- ;;; @@ -30,4 +30,4 @@ (in-package :clfswm) -;;; TODO: fill this file +;;; TODO: fill this file (test of git :) From pbrochard at common-lisp.net Sun Mar 9 14:38:57 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sun, 9 Mar 2008 09:38:57 -0500 (EST) Subject: [clfswm-cvs] r24 - clfswm Message-ID: <20080309143857.B845D601C0@common-lisp.net> Author: pbrochard Date: Sun Mar 9 09:38:57 2008 New Revision: 24 Modified: clfswm/clfswm-nw-hooks.lisp Log: new git test Modified: clfswm/clfswm-nw-hooks.lisp ============================================================================== --- clfswm/clfswm-nw-hooks.lisp (original) +++ clfswm/clfswm-nw-hooks.lisp Sun Mar 9 09:38:57 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sun Mar 9 15:31:35 2008 +;;; #Date#: Sun Mar 9 15:33:55 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: New window Hooks @@ -30,4 +30,4 @@ (in-package :clfswm) -;;; TODO: fill this file (test of git :) +;;; TODO: fill this file. From pbrochard at common-lisp.net Mon Mar 10 21:56:11 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Mon, 10 Mar 2008 16:56:11 -0500 (EST) Subject: [clfswm-cvs] r25 - clfswm Message-ID: <20080310215611.9667C68294@common-lisp.net> Author: pbrochard Date: Mon Mar 10 16:56:11 2008 New Revision: 25 Modified: clfswm/clfswm.asd Log: Add clfswm-nw-hooks in clfswm.asd Modified: clfswm/clfswm.asd ============================================================================== --- clfswm/clfswm.asd (original) +++ clfswm/clfswm.asd Mon Mar 10 16:56:11 2008 @@ -2,7 +2,7 @@ ;;;; Author: Philippe Brochard ;;;; ASDF System Definition ;;; -;;; #date#: Thu Mar 6 16:21:25 2008 +;;; #date#: Mon Mar 10 22:48:54 2008 (in-package #:asdf) @@ -41,6 +41,8 @@ :depends-on ("package" "config")) (:file "clfswm-layout" :depends-on ("package" "clfswm-util" "clfswm-info")) + (:file "clfswm-nw-hooks" + :depends-on ("package" "clfswm-util" "clfswm-info")) (:file "bindings" :depends-on ("clfswm" "clfswm-internal")) (:file "bindings-second-mode" From pbrochard at common-lisp.net Mon Mar 10 22:02:41 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Mon, 10 Mar 2008 17:02:41 -0500 (EST) Subject: [clfswm-cvs] r26 - clfswm Message-ID: <20080310220241.5C32673250@common-lisp.net> Author: pbrochard Date: Mon Mar 10 17:02:41 2008 New Revision: 26 Modified: clfswm/clfswm-nw-hooks.lisp Log: A git test with svn and rsync Modified: clfswm/clfswm-nw-hooks.lisp ============================================================================== --- clfswm/clfswm-nw-hooks.lisp (original) +++ clfswm/clfswm-nw-hooks.lisp Mon Mar 10 17:02:41 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sun Mar 9 15:33:55 2008 +;;; #Date#: Mon Mar 10 22:58:42 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: New window Hooks @@ -31,3 +31,6 @@ (in-package :clfswm) ;;; TODO: fill this file. + +;;; Test of git+svn + From pbrochard at common-lisp.net Mon Mar 10 22:50:44 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Mon, 10 Mar 2008 17:50:44 -0500 (EST) Subject: [clfswm-cvs] r27 - clfswm Message-ID: <20080310225044.7801C15024@common-lisp.net> Author: pbrochard Date: Mon Mar 10 17:50:44 2008 New Revision: 27 Modified: clfswm/clfswm-nw-hooks.lisp Log: New git test Modified: clfswm/clfswm-nw-hooks.lisp ============================================================================== --- clfswm/clfswm-nw-hooks.lisp (original) +++ clfswm/clfswm-nw-hooks.lisp Mon Mar 10 17:50:44 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Mon Mar 10 22:58:42 2008 +;;; #Date#: Mon Mar 10 23:35:51 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: New window Hooks @@ -34,3 +34,5 @@ ;;; Test of git+svn + +;;; An other test of git+svn From pbrochard at common-lisp.net Mon Mar 10 22:50:45 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Mon, 10 Mar 2008 17:50:45 -0500 (EST) Subject: [clfswm-cvs] r28 - clfswm Message-ID: <20080310225045.8DEE415034@common-lisp.net> Author: pbrochard Date: Mon Mar 10 17:50:45 2008 New Revision: 28 Modified: clfswm/clfswm-nw-hooks.lisp Log: another test Modified: clfswm/clfswm-nw-hooks.lisp ============================================================================== --- clfswm/clfswm-nw-hooks.lisp (original) +++ clfswm/clfswm-nw-hooks.lisp Mon Mar 10 17:50:45 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Mon Mar 10 23:35:51 2008 +;;; #Date#: Mon Mar 10 23:48:11 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: New window Hooks @@ -33,6 +33,3 @@ ;;; TODO: fill this file. ;;; Test of git+svn - - -;;; An other test of git+svn From pbrochard at common-lisp.net Mon Mar 10 23:03:12 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Mon, 10 Mar 2008 18:03:12 -0500 (EST) Subject: [clfswm-cvs] r29 - clfswm Message-ID: <20080310230312.4D0FF7324A@common-lisp.net> Author: pbrochard Date: Mon Mar 10 18:03:10 2008 New Revision: 29 Modified: clfswm/clfswm-nw-hooks.lisp Log: Last test? Modified: clfswm/clfswm-nw-hooks.lisp ============================================================================== --- clfswm/clfswm-nw-hooks.lisp (original) +++ clfswm/clfswm-nw-hooks.lisp Mon Mar 10 18:03:10 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Mon Mar 10 23:48:11 2008 +;;; #Date#: Tue Mar 11 00:00:32 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: New window Hooks @@ -31,5 +31,3 @@ (in-package :clfswm) ;;; TODO: fill this file. - -;;; Test of git+svn From pbrochard at common-lisp.net Mon Mar 10 23:08:09 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Mon, 10 Mar 2008 18:08:09 -0500 (EST) Subject: [clfswm-cvs] r30 - clfswm Message-ID: <20080310230809.124D87324A@common-lisp.net> Author: pbrochard Date: Mon Mar 10 18:08:08 2008 New Revision: 30 Modified: clfswm/clfswm-nw-hooks.lisp Log: and another one Modified: clfswm/clfswm-nw-hooks.lisp ============================================================================== --- clfswm/clfswm-nw-hooks.lisp (original) +++ clfswm/clfswm-nw-hooks.lisp Mon Mar 10 18:08:08 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Mar 11 00:00:32 2008 +;;; #Date#: Tue Mar 11 00:05:36 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: New window Hooks @@ -31,3 +31,6 @@ (in-package :clfswm) ;;; TODO: fill this file. + + +;;; And another one From pbrochard at common-lisp.net Mon Mar 10 23:09:36 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Mon, 10 Mar 2008 18:09:36 -0500 (EST) Subject: [clfswm-cvs] r31 - clfswm Message-ID: <20080310230936.C06FB7324A@common-lisp.net> Author: pbrochard Date: Mon Mar 10 18:09:36 2008 New Revision: 31 Modified: clfswm/clfswm-nw-hooks.lisp Log: And this is the last Modified: clfswm/clfswm-nw-hooks.lisp ============================================================================== --- clfswm/clfswm-nw-hooks.lisp (original) +++ clfswm/clfswm-nw-hooks.lisp Mon Mar 10 18:09:36 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Mar 11 00:05:36 2008 +;;; #Date#: Tue Mar 11 00:07:04 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: New window Hooks @@ -31,6 +31,3 @@ (in-package :clfswm) ;;; TODO: fill this file. - - -;;; And another one From pbrochard at common-lisp.net Mon Mar 10 23:23:40 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Mon, 10 Mar 2008 18:23:40 -0500 (EST) Subject: [clfswm-cvs] r32 - in clfswm: . contrib Message-ID: <20080310232340.11CCA16036@common-lisp.net> Author: pbrochard Date: Mon Mar 10 18:23:39 2008 New Revision: 32 Modified: clfswm/ChangeLog clfswm/contrib/clfswm Log: Apply patch on contrib/clfswm Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Mon Mar 10 18:23:39 2008 @@ -1,3 +1,11 @@ +2008-03-10 Xavier Maillard + + * contrib/clfswm: Complete rewrite of the script. Detect error and + act accordingly. Add command line arguments to configure the + script execution. User can now choose different common lisp + implementation (clisp and sbcl only), choose where to store the + dumped image, where to find clfswm source. + 2008-03-09 Philippe Brochard * clfswm-internal.lisp (process-new-window): Beginning of new @@ -8,9 +16,7 @@ * contrib/clfswm: New script. Dump a CLISP image of CLFSWM then call the resulting executable. - -2008-03-08 Xavier Maillard - + * clfswm.lisp (read-conf-file): Check for the user config file in XDG_CONFIG_HOME *first*. Freedesktop.org standards should be prefered whenever possible. Modified: clfswm/contrib/clfswm ============================================================================== --- clfswm/contrib/clfswm (original) +++ clfswm/contrib/clfswm Mon Mar 10 18:23:39 2008 @@ -1,26 +1,7 @@ #!/bin/bash -e # -# #Date#: -# -# -------------------------------------------------------------------------- -# Documentation: -# -# Original code and idea: http://stumpwm.antidesktop.net/cgi-bin/wiki/SetUp -# -# This script is targeted to CLisp users. It will help in starting -# CLFSWM quicker by dumping an image of CLFSWM. -# -# Installation: -# Put this script wherever you want and just call it from your .xinitrc file -# -# The first time you will launch it, it will build the final -# executable and then call it. To force a rebuild of your executable -# (say you have updated something in the CLFSWM source tree), just -# delete the image and restart your X session. -# -------------------------------------------------------------------------- - # (C) 2008 Xavier Maillard - +# # 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 3 of the License, or @@ -35,20 +16,121 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # +# +# -------------------------------------------------------------------------- +# Documentation: +# +# Original code and idea: http://stumpwm.antidesktop.net/cgi-bin/wiki/SetUp +# +# Installation: +# Put this script wherever you want and just call it from your .xinitrc file +# +# The first time you will launch it, it will build the final +# executable and then call it. To force a rebuild of your executable +# (say you have updated something in the CLFSWM source tree), just +# delete the image and restart your X session. # -------------------------------------------------------------------------- -# Tweak this -IMAGE="$HOME/var/cache/clfswm-$(cksum $(type -p clisp) | cut -d ' ' -f 1).core" -ASDF=$HOME/usr/src/SVNed/clfswm -CLFSWMASDPATH=$HOME/usr/share/common-lisp/systems - -if test ! -e "$x" || - ( for i in "$(dirname $(readlink $CLFSWMASDPATH/clfswm.asd))"/*.lisp - do test "$x" -ot "$i" && exit 1 +usage() { + + echo "$0 [options] +-- +n,no-start don't start CLFSWM after image dump +f,force force image dump +rebuild same as -f,--force +l,with-lisp= use as the common lisp implementation +d,dump-path= path to the dump directory +with-clfswm path to clfswm.asd file +with-asdf path to the asdf.lisp file" + + exit 0 +} + +die() { + echo >&2 "$@" + exit 1 +} + +build_clisp () +{ + clisp -m 8MB -E ISO-8859-1 -q -K full -i $asdf_path/asdf.lisp -x "(asdf:oos 'asdf:load-op :clfswm)\ + (EXT:SAVEINITMEM \"$dump_image\" :INIT-FUNCTION 'clfswm:main :EXECUTABLE t :norc t)" +} + +build_sbcl() +{ + sbcl --disable-debugger --eval "(mapc 'require '(asdf clfswm))" \ + --eval "(save-lisp-and-die \"$dump_image\" :toplevel 'clfswm:main)" +} + +no_start=no +lisp=clisp +dump_path=$HOME/var/cache +asdf_path=$HOME/usr/src/SVNed/clfswm +clfswm_asd_path=$HOME/usr/share/common-lisp/systems + +while test $# != 0 +do + case "$1" in + -n|--no-start) + no_start=yes ;; + -f|--force|--rebuild) + force=yes ;; + -d|--dump-path) + shift + dump_path="$1" ;; + --with-clfswm) + shift + clfswm_asd_path="$1" ;; + --with-asdf) + shift + asdf_path="$1" ;; + -l|--with-lisp) + shift + case "$1" in + '') + usage;; + clisp|sbcl) + lisp="$1" ;; + esac + ;; + --) + shift + break ;; + *) + usage ;; + esac + shift +done + +test -x $(type -p $lisp) || die "$lisp can't be found." +test -e $clfswm_asd_path/clfswm.asd || die "can't find clfswm.asd in $clfswm_asd_path" +test -e $asdf_path/asdf.lisp || die "can't find asdf.lisp in $asdf_path" + +dump_image="$dump_path/clfswm-$(cksum $(type -p $lisp) | cut -d ' ' -f 1).core" + +if test yes = "$force" && test -e "$dump_image" +then + echo "Removing old image." + rm -f "$dump_image" +fi + +if test ! -e "$dump_image" || + ( for i in "$(dirname $(readlink $clfswm_asd_path/clfswm.asd))"/*.lisp + do test "$dump_image" -ot "$i" && exit 1 done ) then - clisp -m 8MB -E ISO-8859-1 -q -K full -i $ASDF/asdf.lisp -x "(asdf:oos 'asdf:load-op :clfswm)\ - (EXT:SAVEINITMEM \"$IMAGE\" :INIT-FUNCTION 'clfswm:main :EXECUTABLE t :norc t)" + eval build_$lisp fi -$IMAGE +# Run the resulting image +if test no = "$no_start" +then + case $lisp in + clisp ) $dump_image ;; + sbcl ) exec sbcl --core "$dump_image" ;; + *) echo "..." ;; + esac +else + echo "As requested, we have just dumped the image." +fi From pbrochard at common-lisp.net Tue Mar 11 11:40:25 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Tue, 11 Mar 2008 06:40:25 -0500 (EST) Subject: [clfswm-cvs] r33 - clfswm Message-ID: <20080311114025.7341D2E17C@common-lisp.net> Author: pbrochard Date: Tue Mar 11 06:40:18 2008 New Revision: 33 Modified: clfswm/ChangeLog clfswm/clfswm-keys.lisp clfswm/clfswm-util.lisp Log: Display the documentation associated to keys when identifying a key. Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Tue Mar 11 06:40:18 2008 @@ -1,3 +1,8 @@ +2008-03-11 Philippe Brochard + + * clfswm-util.lisp (identify-key): Display the documentation + associated to keys when identifying a key. + 2008-03-10 Xavier Maillard * contrib/clfswm: Complete rewrite of the script. Detect error and Modified: clfswm/clfswm-keys.lisp ============================================================================== --- clfswm/clfswm-keys.lisp (original) +++ clfswm/clfswm-keys.lisp Tue Mar 11 06:40:18 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 16:47:42 2008 +;;; #Date#: Tue Mar 11 12:23:23 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Keys functions definition @@ -129,27 +129,33 @@ - - - - -(defun funcall-key-from-code (hash-table-key code state &optional args) - (labels ((funcall-from (key) +(defun find-key-from-code (hash-table-key code state) + "Return the function associated to code/state" + (labels ((function-from (key) (multiple-value-bind (function foundp) (gethash (list key state) hash-table-key) (when (and foundp (first function)) - (if args - (funcall (first function) args) - (funcall (first function))) - t))) + (first function)))) (from-code () - (funcall-from code)) + (function-from code)) (from-char () (let ((char (keycode->char code state))) - (funcall-from char))) + (function-from char))) (from-string () (let ((string (keysym->keysym-name (xlib:keycode->keysym *display* code 0)))) - (funcall-from string)))) + (function-from string)))) + (or (from-code) (from-char) (from-string)))) + + + +(defun funcall-key-from-code (hash-table-key code state &optional args) + (let ((function (find-key-from-code hash-table-key code state))) + (when function + (apply function args) + t))) + + + (labels (cond ((from-code)) ((from-char)) ((from-string))))) Modified: clfswm/clfswm-util.lisp ============================================================================== --- clfswm/clfswm-util.lisp (original) +++ clfswm/clfswm-util.lisp Tue Mar 11 06:40:18 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Mar 7 23:07:03 2008 +;;; #Date#: Tue Mar 11 12:35:53 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility @@ -208,7 +208,7 @@ (window (xlib:create-window :parent *root* :x 0 :y 0 :width (- (xlib:screen-width *screen*) 2) - :height (* 3 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) + :height (* 5 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) :background (get-color *identify-background*) :border-width 1 :border (get-color *identify-border*) @@ -219,7 +219,12 @@ :background (get-color *identify-background*) :font font :line-style :solid))) - (labels ((print-key (code keysym key modifiers) + (labels ((print-doc (msg hash-table-key pos code state) + (let ((function (find-key-from-code hash-table-key code state))) + (when function + (xlib:draw-image-glyphs window gc 10 (+ (* pos (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) 5) + (format nil "~A ~A" msg (documentation function 'function)))))) + (print-key (code state keysym key modifiers) (xlib:clear-area window) (setf (xlib:gcontext-foreground gc) (get-color *identify-foreground*)) (xlib:draw-image-glyphs window gc 5 (+ (xlib:max-char-ascent font) 5) @@ -227,7 +232,9 @@ (when code (xlib:draw-image-glyphs window gc 10 (+ (* 2 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) 5) (format nil "Code=~A KeySym=~A Key=~S Modifiers=~A" - code keysym key modifiers)))) + code keysym key modifiers)) + (print-doc "Main mode : " *main-keys* 3 code state) + (print-doc "Second mode: " *second-keys* 4 code state))) (handle-identify-key (&rest event-slots &key root code state &allow-other-keys) (declare (ignore event-slots root)) (let* ((modifiers (xlib:make-state-keys state)) @@ -235,18 +242,18 @@ (keysym (keysym->keysym-name (xlib:keycode->keysym *display* code 0)))) (setf done (and (equal key #\q) (null modifiers))) (dbg code keysym key modifiers) - (print-key code keysym key modifiers) + (print-key code state keysym key modifiers) (force-output))) (handle-identify (&rest event-slots &key display event-key &allow-other-keys) (declare (ignore display)) (case event-key (:key-press (apply #'handle-identify-key event-slots) t) - (:exposure (print-key nil nil nil nil))) + (:exposure (print-key nil nil nil nil nil))) t)) (xgrab-pointer *root* 92 93) (xlib:map-window window) (format t "~&Press 'q' to stop the identify loop~%") - (print-key nil nil nil nil) + (print-key nil nil nil nil nil) (force-output) (unwind-protect (loop until done do From pbrochard at common-lisp.net Wed Mar 12 17:16:58 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Wed, 12 Mar 2008 12:16:58 -0500 (EST) Subject: [clfswm-cvs] r34 - clfswm Message-ID: <20080312171658.5037E68292@common-lisp.net> Author: pbrochard Date: Wed Mar 12 12:16:57 2008 New Revision: 34 Modified: clfswm/clfswm-keys.lisp Log: Fix a glitch in clfswm-keys.lisp - Thanks Xavier Modified: clfswm/clfswm-keys.lisp ============================================================================== --- clfswm/clfswm-keys.lisp (original) +++ clfswm/clfswm-keys.lisp Wed Mar 12 12:16:57 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Mar 11 12:23:23 2008 +;;; #Date#: Wed Mar 12 18:12:54 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Keys functions definition @@ -148,18 +148,12 @@ -(defun funcall-key-from-code (hash-table-key code state &optional args) +(defun funcall-key-from-code (hash-table-key code state &rest args) (let ((function (find-key-from-code hash-table-key code state))) (when function (apply function args) t))) - - (labels - (cond ((from-code)) - ((from-char)) - ((from-string))))) - (defun funcall-button-from-code (hash-table-key code state window root-x root-y From pbrochard at common-lisp.net Wed Mar 12 21:40:06 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Wed, 12 Mar 2008 16:40:06 -0500 (EST) Subject: [clfswm-cvs] r35 - in clfswm: . contrib Message-ID: <20080312214006.29153751AE@common-lisp.net> Author: pbrochard Date: Wed Mar 12 16:40:04 2008 New Revision: 35 Added: clfswm/contrib/asdf.lisp - copied, changed from r34, clfswm/asdf.lisp Removed: clfswm/asdf.lisp Modified: clfswm/load.lisp Log: New doc directory. Move asdf.lisp to contrib/ Copied: clfswm/contrib/asdf.lisp (from r34, clfswm/asdf.lisp) ============================================================================== Modified: clfswm/load.lisp ============================================================================== --- clfswm/load.lisp (original) +++ clfswm/load.lisp Wed Mar 12 16:40:04 2008 @@ -1,7 +1,7 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 15:38:05 2008 +;;; #Date#: Wed Mar 12 22:34:33 2008 ;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: System loading functions @@ -47,7 +47,7 @@ #-ASDF (load (make-pathname :host (pathname-host *base-dir*) :device (pathname-device *base-dir*) - :directory (pathname-directory *base-dir*) + :directory (append (pathname-directory *base-dir*) (list "contrib")) :name "asdf" :type "lisp")) (push *base-dir* asdf:*central-registry*) From pbrochard at common-lisp.net Wed Mar 12 21:55:18 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Wed, 12 Mar 2008 16:55:18 -0500 (EST) Subject: [clfswm-cvs] r36 - clfswm/doc Message-ID: <20080312215518.1C3C72511B@common-lisp.net> Author: pbrochard Date: Wed Mar 12 16:55:17 2008 New Revision: 36 Added: clfswm/doc/ clfswm/doc/README Log: Adding doc directory Added: clfswm/doc/README ============================================================================== --- (empty file) +++ clfswm/doc/README Wed Mar 12 16:55:17 2008 @@ -0,0 +1 @@ +TODO From pbrochard at common-lisp.net Thu Mar 13 00:03:47 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Wed, 12 Mar 2008 19:03:47 -0500 (EST) Subject: [clfswm-cvs] r37 - clfswm Message-ID: <20080313000347.511BC68242@common-lisp.net> Author: pbrochard Date: Wed Mar 12 19:03:40 2008 New Revision: 37 Modified: clfswm/bindings-second-mode.lisp clfswm/bindings.lisp clfswm/clfswm-info.lisp clfswm/clfswm-internal.lisp clfswm/clfswm-keys.lisp clfswm/clfswm-layout.lisp clfswm/clfswm-nw-hooks.lisp clfswm/clfswm-pack.lisp clfswm/clfswm-query.lisp clfswm/clfswm-second-mode.lisp clfswm/clfswm-util.lisp clfswm/clfswm.lisp clfswm/config.lisp clfswm/load.lisp clfswm/my-html.lisp clfswm/netwm-util.lisp clfswm/package.lisp clfswm/tools.lisp clfswm/xlib-util.lisp Log: Check for Keysym+Shift. Remove all #Date# references. Modified: clfswm/bindings-second-mode.lisp ============================================================================== --- clfswm/bindings-second-mode.lisp (original) +++ clfswm/bindings-second-mode.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Mar 7 23:14:21 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse for second mode ;;; Modified: clfswm/bindings.lisp ============================================================================== --- clfswm/bindings.lisp (original) +++ clfswm/bindings.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Mar 8 21:13:30 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Bindings keys and mouse ;;; Modified: clfswm/clfswm-info.lisp ============================================================================== --- clfswm/clfswm-info.lisp (original) +++ clfswm/clfswm-info.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 16:45:37 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Info function (see the end of this file for user definition ;;; -------------------------------------------------------------------------- Modified: clfswm/clfswm-internal.lisp ============================================================================== --- clfswm/clfswm-internal.lisp (original) +++ clfswm/clfswm-internal.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sun Mar 9 01:24:59 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions ;;; -------------------------------------------------------------------------- Modified: clfswm/clfswm-keys.lisp ============================================================================== --- clfswm/clfswm-keys.lisp (original) +++ clfswm/clfswm-keys.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Wed Mar 12 18:12:54 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Keys functions definition ;;; -------------------------------------------------------------------------- @@ -142,7 +140,10 @@ (let ((char (keycode->char code state))) (function-from char))) (from-string () - (let ((string (keysym->keysym-name (xlib:keycode->keysym *display* code 0)))) + (let* ((modifiers (xlib:make-state-keys state)) + (string (keysym->keysym-name (xlib:keycode->keysym *display* code (cond ((member :shift modifiers) 1) + ((member :mod-5 modifiers) 2) + (t 0)))))) (function-from string)))) (or (from-code) (from-char) (from-string)))) Modified: clfswm/clfswm-layout.lisp ============================================================================== --- clfswm/clfswm-layout.lisp (original) +++ clfswm/clfswm-layout.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 15:04:13 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Layout functions ;;; -------------------------------------------------------------------------- Modified: clfswm/clfswm-nw-hooks.lisp ============================================================================== --- clfswm/clfswm-nw-hooks.lisp (original) +++ clfswm/clfswm-nw-hooks.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Mar 11 00:07:04 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: New window Hooks ;;; Modified: clfswm/clfswm-pack.lisp ============================================================================== --- clfswm/clfswm-pack.lisp (original) +++ clfswm/clfswm-pack.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Feb 12 14:02:45 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Tile, pack and fill functions ;;; -------------------------------------------------------------------------- Modified: clfswm/clfswm-query.lisp ============================================================================== --- clfswm/clfswm-query.lisp (original) +++ clfswm/clfswm-query.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Mar 4 22:39:47 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Query utility ;;; -------------------------------------------------------------------------- Modified: clfswm/clfswm-second-mode.lisp ============================================================================== --- clfswm/clfswm-second-mode.lisp (original) +++ clfswm/clfswm-second-mode.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 16:30:51 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Second mode functions ;;; -------------------------------------------------------------------------- Modified: clfswm/clfswm-util.lisp ============================================================================== --- clfswm/clfswm-util.lisp (original) +++ clfswm/clfswm-util.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Mar 11 12:35:53 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility ;;; -------------------------------------------------------------------------- @@ -231,7 +229,7 @@ (format nil "Press a key to identify. Press 'q' to stop the identify loop.")) (when code (xlib:draw-image-glyphs window gc 10 (+ (* 2 (+ (xlib:max-char-ascent font) (xlib:max-char-descent font))) 5) - (format nil "Code=~A KeySym=~A Key=~S Modifiers=~A" + (format nil "Code=~A KeySym=~S Key=~S Modifiers=~A" code keysym key modifiers)) (print-doc "Main mode : " *main-keys* 3 code state) (print-doc "Second mode: " *second-keys* 4 code state))) @@ -239,7 +237,9 @@ (declare (ignore event-slots root)) (let* ((modifiers (xlib:make-state-keys state)) (key (keycode->char code state)) - (keysym (keysym->keysym-name (xlib:keycode->keysym *display* code 0)))) + (keysym (keysym->keysym-name (xlib:keycode->keysym *display* code (cond ((member :shift modifiers) 1) + ((member :mod-5 modifiers) 2) + (t 0)))))) (setf done (and (equal key #\q) (null modifiers))) (dbg code keysym key modifiers) (print-key code state keysym key modifiers) Modified: clfswm/clfswm.lisp ============================================================================== --- clfswm/clfswm.lisp (original) +++ clfswm/clfswm.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sun Mar 9 13:35:36 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Main functions ;;; -------------------------------------------------------------------------- Modified: clfswm/config.lisp ============================================================================== --- clfswm/config.lisp (original) +++ clfswm/config.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Thu Mar 6 16:11:38 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Configuration file ;;; Modified: clfswm/load.lisp ============================================================================== --- clfswm/load.lisp (original) +++ clfswm/load.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Wed Mar 12 22:34:33 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: System loading functions ;;; -------------------------------------------------------------------------- Modified: clfswm/my-html.lisp ============================================================================== --- clfswm/my-html.lisp (original) +++ clfswm/my-html.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Dec 21 23:00:35 2007 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Html generator helper ;;; -------------------------------------------------------------------------- Modified: clfswm/netwm-util.lisp ============================================================================== --- clfswm/netwm-util.lisp (original) +++ clfswm/netwm-util.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Wed Feb 20 23:26:21 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: NetWM functions ;;; http://freedesktop.org/wiki/Specifications_2fwm_2dspec Modified: clfswm/package.lisp ============================================================================== --- clfswm/package.lisp (original) +++ clfswm/package.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Sat Mar 8 21:26:50 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Package definition ;;; -------------------------------------------------------------------------- Modified: clfswm/tools.lisp ============================================================================== --- clfswm/tools.lisp (original) +++ clfswm/tools.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Tue Feb 26 21:53:55 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: General tools ;;; -------------------------------------------------------------------------- Modified: clfswm/xlib-util.lisp ============================================================================== --- clfswm/xlib-util.lisp (original) +++ clfswm/xlib-util.lisp Wed Mar 12 19:03:40 2008 @@ -1,8 +1,6 @@ ;;; -------------------------------------------------------------------------- ;;; CLFSWM - FullScreen Window Manager ;;; -;;; #Date#: Fri Mar 7 21:18:17 2008 -;;; ;;; -------------------------------------------------------------------------- ;;; Documentation: Utility functions ;;; -------------------------------------------------------------------------- From pbrochard at common-lisp.net Thu Mar 13 10:13:34 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Thu, 13 Mar 2008 05:13:34 -0500 (EST) Subject: [clfswm-cvs] r38 - clfswm Message-ID: <20080313101334.93D127E026@common-lisp.net> Author: pbrochard Date: Thu Mar 13 05:13:28 2008 New Revision: 38 Modified: clfswm/ChangeLog clfswm/bindings-second-mode.lisp clfswm/clfswm-internal.lisp clfswm/clfswm-keys.lisp clfswm/clfswm-util.lisp Log: force-window-in-group/force-window-center-in-group: new functions Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Thu Mar 13 05:13:28 2008 @@ -1,3 +1,8 @@ +2008-03-13 Philippe Brochard + + * clfswm-util.lisp (force-window-in-group/force-window-center-in-group): + new functions. + 2008-03-11 Philippe Brochard * clfswm-util.lisp (identify-key): Display the documentation Modified: clfswm/bindings-second-mode.lisp ============================================================================== --- clfswm/bindings-second-mode.lisp (original) +++ clfswm/bindings-second-mode.lisp Thu Mar 13 05:13:28 2008 @@ -107,6 +107,11 @@ (#\r rename-current-child) (#\n renumber-current-group)))) +(defun window-menu () + "Window menu" + (info-mode-menu '((#\i force-window-in-group) + (#\c force-window-center-in-group)))) + (defun selection-menu () @@ -128,7 +133,7 @@ (defun main-menu () "Open the main menu" (info-mode-menu '((#\g group-menu) - ;;(#\w window-menu) + (#\w window-menu) (#\s selection-menu) (#\n action-by-name-menu) (#\u action-by-number-menu) Modified: clfswm/clfswm-internal.lisp ============================================================================== --- clfswm/clfswm-internal.lisp (original) +++ clfswm/clfswm-internal.lisp Thu Mar 13 05:13:28 2008 @@ -663,7 +663,7 @@ (:normal 1) (:maxsize 1) (:transient 1) - (t 0))) + (t 1))) (grab-all-buttons window) ;; (when (group-p *current-child*) ;; PHIL: Remove this!!! ;; (setf (group-nw-hook *current-child*) #'open-in-new-group-nw-hook)) Modified: clfswm/clfswm-keys.lisp ============================================================================== --- clfswm/clfswm-keys.lisp (original) +++ clfswm/clfswm-keys.lisp Thu Mar 13 05:13:28 2008 @@ -142,8 +142,8 @@ (from-string () (let* ((modifiers (xlib:make-state-keys state)) (string (keysym->keysym-name (xlib:keycode->keysym *display* code (cond ((member :shift modifiers) 1) - ((member :mod-5 modifiers) 2) - (t 0)))))) + ((member :mod-5 modifiers) 2) + (t 0)))))) (function-from string)))) (or (from-code) (from-char) (from-string)))) Modified: clfswm/clfswm-util.lisp ============================================================================== --- clfswm/clfswm-util.lisp (original) +++ clfswm/clfswm-util.lisp Thu Mar 13 05:13:28 2008 @@ -438,6 +438,30 @@ +(defun force-window-in-group () + "Force the current window to move in the group (Useful only for transient windows)" + (when (xlib:window-p *current-child*) + (let ((father (find-father-group *current-child*))) + (with-xlib-protect + (setf (xlib:drawable-x *current-child*) (group-rx father) + (xlib:drawable-y *current-child*) (group-ry father))))) + (leave-second-mode)) + +(defun force-window-center-in-group () + "Force the current window to move in the center of the group (Useful only for transient windows)" + (when (xlib:window-p *current-child*) + (let ((father (find-father-group *current-child*))) + (with-xlib-protect + (setf (xlib:drawable-x *current-child*) (truncate (+ (group-rx father) + (/ (- (group-rw father) + (xlib:drawable-width *current-child*)) 2))) + (xlib:drawable-y *current-child*) (truncate (+ (group-ry father) + (/ (- (group-rh father) + (xlib:drawable-height *current-child*)) 2))))))) + (leave-second-mode)) + + + ;;;;;,----- ;;;;;| Various definitions ;;;;;`----- From pbrochard at common-lisp.net Fri Mar 14 20:41:53 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Fri, 14 Mar 2008 15:41:53 -0500 (EST) Subject: [clfswm-cvs] r39 - clfswm Message-ID: <20080314204153.EC610450CB@common-lisp.net> Author: pbrochard Date: Fri Mar 14 15:41:52 2008 New Revision: 39 Modified: clfswm/ChangeLog clfswm/bindings-second-mode.lisp clfswm/bindings.lisp Log: Use ISO_Left_Tab instead of Tab for select-previous-child. Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Fri Mar 14 15:41:52 2008 @@ -1,3 +1,8 @@ +2008-03-14 Philippe Brochard + + * bindings-second-mode.lisp ("ISO_Left_Tab"): Use ISO_Left_Tab + instead of Tab for select-previous-child. + 2008-03-13 Philippe Brochard * clfswm-util.lisp (force-window-in-group/force-window-center-in-group): Modified: clfswm/bindings-second-mode.lisp ============================================================================== --- clfswm/bindings-second-mode.lisp (original) +++ clfswm/bindings-second-mode.lisp Fri Mar 14 15:41:52 2008 @@ -179,7 +179,7 @@ (define-second-key ("Up" :mod-1) 'select-previous-level) (define-second-key ("Tab" :mod-1) 'select-next-child) -(define-second-key ("Tab" :mod-1 :shift) 'select-previous-child) +(define-second-key ("ISO_Left_Tab" :mod-1 :shift) 'select-previous-child) (define-second-key ("Return" :mod-1) 'enter-group) (define-second-key ("Return" :mod-1 :shift) 'leave-group) Modified: clfswm/bindings.lisp ============================================================================== --- clfswm/bindings.lisp (original) +++ clfswm/bindings.lisp Fri Mar 14 15:41:52 2008 @@ -47,7 +47,7 @@ (define-main-key ("Up" :mod-1) 'select-previous-level) (define-main-key ("Tab" :mod-1) 'select-next-child) -(define-main-key ("Tab" :mod-1 :shift) 'select-previous-child) +(define-main-key ("ISO_Left_Tab" :mod-1 :shift) 'select-previous-child) (define-main-key ("Return" :mod-1) 'enter-group) (define-main-key ("Return" :mod-1 :shift) 'leave-group) @@ -138,7 +138,7 @@ (replay-button-event))) -(define-main-mouse (1) nil 'mouse-click-to-focus) +(define-main-mouse (1) 'mouse-click-to-focus 'test-mouse-binding) (define-main-mouse (4) 'mouse-select-next-level) From pbrochard at common-lisp.net Fri Mar 14 21:09:26 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Fri, 14 Mar 2008 16:09:26 -0500 (EST) Subject: [clfswm-cvs] r40 - in clfswm: . doc src Message-ID: <20080314210926.558655F061@common-lisp.net> Author: pbrochard Date: Fri Mar 14 16:09:15 2008 New Revision: 40 Added: clfswm/doc/dot-clfswmrc - copied, changed from r39, clfswm/dot-clfswmrc clfswm/doc/keys.html - copied, changed from r39, clfswm/keys.html clfswm/doc/keys.txt - copied, changed from r39, clfswm/keys.txt clfswm/src/ clfswm/src/bindings-second-mode.lisp - copied, changed from r39, clfswm/bindings-second-mode.lisp clfswm/src/bindings.lisp - copied, changed from r39, clfswm/bindings.lisp clfswm/src/clfswm-info.lisp - copied, changed from r39, clfswm/clfswm-info.lisp clfswm/src/clfswm-internal.lisp - copied, changed from r39, clfswm/clfswm-internal.lisp clfswm/src/clfswm-keys.lisp - copied, changed from r39, clfswm/clfswm-keys.lisp clfswm/src/clfswm-layout.lisp - copied, changed from r39, clfswm/clfswm-layout.lisp clfswm/src/clfswm-nw-hooks.lisp - copied, changed from r39, clfswm/clfswm-nw-hooks.lisp clfswm/src/clfswm-pack.lisp - copied, changed from r39, clfswm/clfswm-pack.lisp clfswm/src/clfswm-query.lisp - copied, changed from r39, clfswm/clfswm-query.lisp clfswm/src/clfswm-second-mode.lisp - copied, changed from r39, clfswm/clfswm-second-mode.lisp clfswm/src/clfswm-util.lisp - copied, changed from r39, clfswm/clfswm-util.lisp clfswm/src/clfswm.asd - copied, changed from r39, clfswm/clfswm.asd clfswm/src/clfswm.lisp - copied, changed from r39, clfswm/clfswm.lisp clfswm/src/config.lisp - copied, changed from r39, clfswm/config.lisp clfswm/src/keysyms.lisp - copied, changed from r39, clfswm/keysyms.lisp clfswm/src/load.lisp - copied, changed from r39, clfswm/load.lisp clfswm/src/my-html.lisp - copied, changed from r39, clfswm/my-html.lisp clfswm/src/netwm-util.lisp - copied, changed from r39, clfswm/netwm-util.lisp clfswm/src/package.lisp - copied, changed from r39, clfswm/package.lisp clfswm/src/tools.lisp - copied, changed from r39, clfswm/tools.lisp clfswm/src/xlib-util.lisp - copied, changed from r39, clfswm/xlib-util.lisp Removed: clfswm/bindings-second-mode.lisp clfswm/bindings.lisp clfswm/clfswm-info.lisp clfswm/clfswm-internal.lisp clfswm/clfswm-keys.lisp clfswm/clfswm-layout.lisp clfswm/clfswm-nw-hooks.lisp clfswm/clfswm-pack.lisp clfswm/clfswm-query.lisp clfswm/clfswm-second-mode.lisp clfswm/clfswm-util.lisp clfswm/clfswm.asd clfswm/clfswm.lisp clfswm/config.lisp clfswm/dot-clfswmrc clfswm/keys.html clfswm/keys.txt clfswm/keysyms.lisp clfswm/load.lisp clfswm/my-html.lisp clfswm/netwm-util.lisp clfswm/package.lisp clfswm/tools.lisp clfswm/xlib-util.lisp Log: Move *.lisp in src/ Copied: clfswm/doc/dot-clfswmrc (from r39, clfswm/dot-clfswmrc) ============================================================================== Copied: clfswm/doc/keys.html (from r39, clfswm/keys.html) ============================================================================== Copied: clfswm/doc/keys.txt (from r39, clfswm/keys.txt) ============================================================================== Copied: clfswm/src/bindings-second-mode.lisp (from r39, clfswm/bindings-second-mode.lisp) ============================================================================== Copied: clfswm/src/bindings.lisp (from r39, clfswm/bindings.lisp) ============================================================================== Copied: clfswm/src/clfswm-info.lisp (from r39, clfswm/clfswm-info.lisp) ============================================================================== Copied: clfswm/src/clfswm-internal.lisp (from r39, clfswm/clfswm-internal.lisp) ============================================================================== Copied: clfswm/src/clfswm-keys.lisp (from r39, clfswm/clfswm-keys.lisp) ============================================================================== Copied: clfswm/src/clfswm-layout.lisp (from r39, clfswm/clfswm-layout.lisp) ============================================================================== Copied: clfswm/src/clfswm-nw-hooks.lisp (from r39, clfswm/clfswm-nw-hooks.lisp) ============================================================================== Copied: clfswm/src/clfswm-pack.lisp (from r39, clfswm/clfswm-pack.lisp) ============================================================================== Copied: clfswm/src/clfswm-query.lisp (from r39, clfswm/clfswm-query.lisp) ============================================================================== Copied: clfswm/src/clfswm-second-mode.lisp (from r39, clfswm/clfswm-second-mode.lisp) ============================================================================== Copied: clfswm/src/clfswm-util.lisp (from r39, clfswm/clfswm-util.lisp) ============================================================================== Copied: clfswm/src/clfswm.asd (from r39, clfswm/clfswm.asd) ============================================================================== Copied: clfswm/src/clfswm.lisp (from r39, clfswm/clfswm.lisp) ============================================================================== Copied: clfswm/src/config.lisp (from r39, clfswm/config.lisp) ============================================================================== Copied: clfswm/src/keysyms.lisp (from r39, clfswm/keysyms.lisp) ============================================================================== Copied: clfswm/src/load.lisp (from r39, clfswm/load.lisp) ============================================================================== Copied: clfswm/src/my-html.lisp (from r39, clfswm/my-html.lisp) ============================================================================== Copied: clfswm/src/netwm-util.lisp (from r39, clfswm/netwm-util.lisp) ============================================================================== Copied: clfswm/src/package.lisp (from r39, clfswm/package.lisp) ============================================================================== Copied: clfswm/src/tools.lisp (from r39, clfswm/tools.lisp) ============================================================================== Copied: clfswm/src/xlib-util.lisp (from r39, clfswm/xlib-util.lisp) ============================================================================== From pbrochard at common-lisp.net Fri Mar 14 21:09:29 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Fri, 14 Mar 2008 16:09:29 -0500 (EST) Subject: [clfswm-cvs] r41 - in clfswm: . src Message-ID: <20080314210929.39ECB5F062@common-lisp.net> Author: pbrochard Date: Fri Mar 14 16:09:29 2008 New Revision: 41 Added: clfswm/clfswm.asd clfswm/load.lisp - copied, changed from r40, clfswm/src/load.lisp Removed: clfswm/src/clfswm.asd clfswm/src/load.lisp Log: Move clfswm.asd and load.lisp on main directory Added: clfswm/clfswm.asd ============================================================================== --- (empty file) +++ clfswm/clfswm.asd Fri Mar 14 16:09:29 2008 @@ -0,0 +1,55 @@ +;;;; -*- Mode: Lisp -*- +;;;; Author: Philippe Brochard +;;;; ASDF System Definition +;;; + +(in-package #:asdf) + +(defsystem clfswm + :description "CLFSWM: Fullscreen Window Manager" + :version "Please, see the package date (something between 0.5 and 1.5)" + :author "Philippe Brochard " + :licence "GNU Public License (GPL)" + :components ((:module src + :components + ((:file "tools") + (:file "my-html" + :depends-on ("tools")) + (:file "package" + :depends-on ("my-html" "tools")) + (:file "config" + :depends-on ("package")) + (:file "keysyms" + :depends-on ("package")) + (:file "xlib-util" + :depends-on ("package" "keysyms" "config")) + (:file "netwm-util" + :depends-on ("package" "xlib-util")) + (:file "clfswm-keys" + :depends-on ("package" "config" "xlib-util" "keysyms")) + (:file "clfswm-internal" + :depends-on ("xlib-util" "clfswm-keys" "netwm-util" "tools")) + (:file "clfswm" + :depends-on ("xlib-util" "netwm-util" "clfswm-keys" "config" + "clfswm-internal" "tools")) + (:file "clfswm-second-mode" + :depends-on ("package" "clfswm-internal")) + (:file "clfswm-info" + :depends-on ("package" "xlib-util" "config" "clfswm-keys" "clfswm" "clfswm-internal")) + (:file "clfswm-util" + :depends-on ("clfswm" "keysyms" "clfswm-info" "clfswm-second-mode" "clfswm-query")) + (:file "clfswm-query" + :depends-on ("package" "config")) + (:file "clfswm-layout" + :depends-on ("package" "clfswm-util" "clfswm-info")) + (:file "clfswm-nw-hooks" + :depends-on ("package" "clfswm-util" "clfswm-info")) + (:file "bindings" + :depends-on ("clfswm" "clfswm-internal")) + (:file "bindings-second-mode" + :depends-on ("clfswm" "clfswm-util" "clfswm-query" "bindings")))))) + + + + + Copied: clfswm/load.lisp (from r40, clfswm/src/load.lisp) ============================================================================== From pbrochard at common-lisp.net Fri Mar 14 21:36:30 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Fri, 14 Mar 2008 16:36:30 -0500 (EST) Subject: [clfswm-cvs] r42 - clfswm Message-ID: <20080314213630.37E28450C9@common-lisp.net> Author: pbrochard Date: Fri Mar 14 16:36:28 2008 New Revision: 42 Added: clfswm/TODO Log: TODO: new file Added: clfswm/TODO ============================================================================== --- (empty file) +++ clfswm/TODO Fri Mar 14 16:36:28 2008 @@ -0,0 +1,33 @@ +This file contains suggestions for further work. +Feel free to edit the wiki at http://trac.common-lisp.net/clfswm/wiki +if you want something in clfswm. + + +URGENT PROBLEMS +=============== +Should handle these soon. + +Rewrote all useful code present in 0801 version. +- pack/fill/resize [Philippe] +- mouse operations [Philippe] +- Bind alt+1/2/3/4... to a particular child (ask on first keypress - + can be rebinded on another child if needed). + +- Hooks when a new window is mapped [Philippe] +- Show group window for info (Wait for keypress or an amount of time) [Philippe] + + +MAYBE +===== + +- From stumpwm: [Philippe] + "In other news stumpwm should catch unhandled errors, restart, and + print an error message. And there is now a soft-restart command. With + this in place I suspect you will need to restart stumpwm very rarely + and it won't spontaneously bring down X." + + +NEVER +===== + +Nothing here for now. From pbrochard at common-lisp.net Fri Mar 14 21:42:30 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Fri, 14 Mar 2008 16:42:30 -0500 (EST) Subject: [clfswm-cvs] r43 - clfswm Message-ID: <20080314214230.8064DD003@common-lisp.net> Author: pbrochard Date: Fri Mar 14 16:42:30 2008 New Revision: 43 Modified: clfswm/TODO Log: Add alt+1/2/3... description Modified: clfswm/TODO ============================================================================== --- clfswm/TODO (original) +++ clfswm/TODO Fri Mar 14 16:42:30 2008 @@ -10,8 +10,11 @@ Rewrote all useful code present in 0801 version. - pack/fill/resize [Philippe] - mouse operations [Philippe] -- Bind alt+1/2/3/4... to a particular child (ask on first keypress - - can be rebinded on another child if needed). +- Bind alt+1/2/3/4... to a particular child: + If bind exist -> focus this child + If not -> bind the key to the current-child + Bind alt+control+1/2/3/4... to remove binding on a child. + - Hooks when a new window is mapped [Philippe] - Show group window for info (Wait for keypress or an amount of time) [Philippe] From pbrochard at common-lisp.net Fri Mar 14 21:44:06 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Fri, 14 Mar 2008 16:44:06 -0500 (EST) Subject: [clfswm-cvs] r44 - clfswm Message-ID: <20080314214406.83C86405F@common-lisp.net> Author: pbrochard Date: Fri Mar 14 16:44:06 2008 New Revision: 44 Modified: clfswm/TODO Log: More TODO things Modified: clfswm/TODO ============================================================================== --- clfswm/TODO (original) +++ clfswm/TODO Fri Mar 14 16:44:06 2008 @@ -10,7 +10,8 @@ Rewrote all useful code present in 0801 version. - pack/fill/resize [Philippe] - mouse operations [Philippe] -- Bind alt+1/2/3/4... to a particular child: +- Hide a window when its size is less than hint minimal size. [Philippe] +- Bind alt+1/2/3/4... to a particular child: [Philippe] If bind exist -> focus this child If not -> bind the key to the current-child Bind alt+control+1/2/3/4... to remove binding on a child. From pbrochard at common-lisp.net Sat Mar 15 22:39:07 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sat, 15 Mar 2008 17:39:07 -0500 (EST) Subject: [clfswm-cvs] r45 - in clfswm: . src Message-ID: <20080315223907.EDDC9405F@common-lisp.net> Author: pbrochard Date: Sat Mar 15 17:39:04 2008 New Revision: 45 Modified: clfswm/ChangeLog clfswm/TODO clfswm/src/bindings-second-mode.lisp clfswm/src/bindings.lisp clfswm/src/clfswm-internal.lisp clfswm/src/clfswm-util.lisp clfswm/src/clfswm.lisp clfswm/src/xlib-util.lisp Log: New functions: Show/hide groups info windows. Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sat Mar 15 17:39:04 2008 @@ -1,3 +1,8 @@ +2008-03-15 Philippe Brochard + + * src/clfswm-util.lisp (show/hide-all-groups-info/key): Show/hide all groups info + window. + 2008-03-14 Philippe Brochard * bindings-second-mode.lisp ("ISO_Left_Tab"): Use ISO_Left_Tab Modified: clfswm/TODO ============================================================================== --- clfswm/TODO (original) +++ clfswm/TODO Sat Mar 15 17:39:04 2008 @@ -18,7 +18,8 @@ - Hooks when a new window is mapped [Philippe] -- Show group window for info (Wait for keypress or an amount of time) [Philippe] + +- Add boundaries in the info window [Philippe] MAYBE Modified: clfswm/src/bindings-second-mode.lisp ============================================================================== --- clfswm/src/bindings-second-mode.lisp (original) +++ clfswm/src/bindings-second-mode.lisp Sat Mar 15 17:39:04 2008 @@ -208,6 +208,7 @@ (define-second-key ("Delete") 'remove-current-child) + ;;; default shell programs (defmacro define-shell (key name docstring cmd) "Define a second key to start a shell command" @@ -225,6 +226,11 @@ (define-shell (#\h) b-start-xclock "start an xclock" "exec xclock -d") +(define-second-key ("Menu") 'show-all-groups-info-key) +(define-second-key ("Menu" :shift) 'show-all-groups-info) +(define-second-key ("Menu" :control) 'toggle-show-root-group) + + Modified: clfswm/src/bindings.lisp ============================================================================== --- clfswm/src/bindings.lisp (original) +++ clfswm/src/bindings.lisp Sat Mar 15 17:39:04 2008 @@ -55,7 +55,10 @@ (define-main-key ("Home" :mod-1) 'switch-to-root-group) (define-main-key ("Home" :mod-1 :shift) 'switch-and-select-root-group) -(define-main-key ("Menu") 'toggle-show-root-group) + +(define-main-key ("Menu") 'show-all-groups-info-key) +(define-main-key ("Menu" :shift) 'show-all-groups-info) +(define-main-key ("Menu" :control) 'toggle-show-root-group) (define-main-key (#\b :mod-1) 'banish-pointer) @@ -95,7 +98,8 @@ (defun test-mouse-binding (window root-x root-y) - (dbg window root-x root-y)) + (dbg window root-x root-y) + (replay-button-event)) @@ -138,8 +142,7 @@ (replay-button-event))) -(define-main-mouse (1) 'mouse-click-to-focus 'test-mouse-binding) - +(define-main-mouse (1) 'mouse-click-to-focus) (define-main-mouse (4) 'mouse-select-next-level) (define-main-mouse (5) 'mouse-select-previous-level) Modified: clfswm/src/clfswm-internal.lisp ============================================================================== --- clfswm/src/clfswm-internal.lisp (original) +++ clfswm/src/clfswm-internal.lisp Sat Mar 15 17:39:04 2008 @@ -693,8 +693,7 @@ (when (or (eql map-state :viewable) (eql wm-state +iconic-state+)) (format t "Processing ~S: type=~A ~S~%" (xlib:wm-name win) (window-type win)win) - ;; (unhide-window win) (process-new-window win) - (xlib:map-window win) + (raise-window win) (pushnew (xlib:window-id win) id-list)))))) (netwm-set-client-list id-list))) Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Sat Mar 15 17:39:04 2008 @@ -437,7 +437,7 @@ - +;;; Force window functions (defun force-window-in-group () "Force the current window to move in the group (Useful only for transient windows)" (when (xlib:window-p *current-child*) @@ -462,6 +462,29 @@ +;;; Show group info +(defun show-all-groups-info () + "Show all groups info windows" + (with-all-groups (*current-root* group) + (raise-window (group-window group)) + (display-group-info group))) + +(defun hide-all-groups-info () + "Hide all groups info windows" + (with-all-windows (*current-root* window) + (raise-window window)) + (show-all-childs)) + +(defun show-all-groups-info-key () + "Show all groups info windows until a key is release" + (with-all-groups (*current-root* group) + (raise-window (group-window group)) + (display-group-info group)) + (wait-no-key-or-button-press) + (hide-all-groups-info)) + + + ;;;;;,----- ;;;;;| Various definitions ;;;;;`----- Modified: clfswm/src/clfswm.lisp ============================================================================== --- clfswm/src/clfswm.lisp (original) +++ clfswm/src/clfswm.lisp Sat Mar 15 17:39:04 2008 @@ -141,15 +141,15 @@ (setf *key-press-hook* #'handle-key-press *configure-request-hook* #'handle-configure-request *configure-notify-hook* #'handle-configure-notify - *destroy-notify-hook* 'handle-destroy-notify + *destroy-notify-hook* #'handle-destroy-notify *enter-notify-hook* #'handle-enter-notify - *exposure-hook* 'handle-exposure + *exposure-hook* #'handle-exposure *map-request-hook* #'handle-map-request - *unmap-notify-hook* 'handle-unmap-notify + *unmap-notify-hook* #'handle-unmap-notify *create-notify-hook* #'handle-create-notify - *button-press-hook* 'handle-button-press - *button-release-hook* 'handle-button-release - *motion-notify-hook* 'handle-motion-notify) + *button-press-hook* #'handle-button-press + *button-release-hook* #'handle-button-release + *motion-notify-hook* #'handle-motion-notify) Modified: clfswm/src/xlib-util.lisp ============================================================================== --- clfswm/src/xlib-util.lisp (original) +++ clfswm/src/xlib-util.lisp Sat Mar 15 17:39:04 2008 @@ -37,7 +37,10 @@ :colormap-change :focus-change :enter-window - :exposure) + :exposure + :button-press + :button-release + :pointer-motion) "The events to listen for on managed windows.") @@ -387,11 +390,6 @@ -(defun stop-button-event () - (xlib:allow-events *display* :sync-pointer)) - -(defun replay-button-event () - (xlib:allow-events *display* :replay-pointer)) (defun ungrab-all-buttons (window) @@ -405,6 +403,12 @@ :sync-pointer-p t :sync-keyboard-p nil)) +(defun stop-button-event () + (xlib:allow-events *display* :sync-pointer)) + +(defun replay-button-event () + (xlib:allow-events *display* :replay-pointer)) + (defun get-color (color) From pbrochard at common-lisp.net Sun Mar 16 14:57:27 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sun, 16 Mar 2008 09:57:27 -0500 (EST) Subject: [clfswm-cvs] r46 - in clfswm: . src Message-ID: <20080316145727.89B3A49024@common-lisp.net> Author: pbrochard Date: Sun Mar 16 09:57:22 2008 New Revision: 46 Modified: clfswm/ChangeLog clfswm/src/bindings-second-mode.lisp clfswm/src/clfswm-internal.lisp clfswm/src/clfswm-nw-hooks.lisp clfswm/src/clfswm-util.lisp clfswm/src/package.lisp Log: Register system for new window hooks. Bind control+o to open the next window in a new group in the root group (as open in next window in a new workspace in 0801 version). Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sun Mar 16 09:57:22 2008 @@ -1,3 +1,9 @@ +2008-03-16 Philippe Brochard + + * src/clfswm-nw-hooks.lisp: Register system for new window hooks. + Bind control+o to open the next window in a new group in the root group + (as open in next window in a new workspace in 0801 version). + 2008-03-15 Philippe Brochard * src/clfswm-util.lisp (show/hide-all-groups-info/key): Show/hide all groups info Modified: clfswm/src/bindings-second-mode.lisp ============================================================================== --- clfswm/src/bindings-second-mode.lisp (original) +++ clfswm/src/bindings-second-mode.lisp Sun Mar 16 09:57:22 2008 @@ -49,6 +49,12 @@ for i from 0 collect (list (code-char (+ (char-code #\a) i)) l)))) +(defun group-nw-hook-menu () + "Group new window hook menu" + (info-mode-menu (loop for l in *nw-hook-list* + for i from 0 + collect (list (code-char (+ (char-code #\a) i)) l)))) + @@ -99,13 +105,21 @@ (#\c copy-current-child-by-number)))) +(defun group-info-menu () + "Group information menu" + (info-mode-menu '((#\s show-all-groups-info) + (#\h hide-all-groups-info)))) + + (defun group-menu () "Group menu" (info-mode-menu '((#\a group-adding-menu) (#\l group-layout-menu) + (#\n group-nw-hook-menu) (#\m group-movement-menu) (#\r rename-current-child) - (#\n renumber-current-group)))) + (#\u renumber-current-group) + (#\i group-info-menu)))) (defun window-menu () "Window menu" @@ -191,6 +205,8 @@ (define-second-key (#\b :mod-1) 'banish-pointer) +(define-second-key (#\o) 'set-open-in-new-group-in-root-group-nw-hook) + ;;;; Escape (define-second-key ("Escape" :control :shift) 'delete-focus-window) Modified: clfswm/src/clfswm-internal.lisp ============================================================================== --- clfswm/src/clfswm-internal.lisp (original) +++ clfswm/src/clfswm-internal.lisp Sun Mar 16 09:57:22 2008 @@ -612,45 +612,32 @@ -(defun default-group-nw-hook (window) - (when (xlib:window-p *current-child*) - (leave-group) - (select-previous-level)) - ;;(unless (eql (window-type window) :maxsize) ;; PHIL: this is sufficient for the ROX panel - (when (group-p *current-child*) - (pushnew window (group-child *current-child*))) ;) - ;;(dbg (xlib:wm-name window) (xlib:get-wm-class window) (window-type window)) ;;; PHIL - (case (window-type window) - (:normal (adapt-child-to-father window *current-child*)) - (t (place-window-from-hints window)))) - - -(defun open-in-new-group-nw-hook (group window) - (declare (ignore group)) - (pushnew window (group-child *current-root*)) - ;;(dbg (xlib:wm-name window) (xlib:get-wm-class window) (window-type window)) ;;; PHIL - (case (window-type window) - (:normal (adapt-child-to-father window *current-root*)) - (t (place-window-from-hints window))) - (list t nil)) - - +;;(defun do-all-groups-nw-hook (window) +;; "Call nw-hook of each group. A hook must return one value or a list of two values. +;;If the value or the first value is true then the default nw-hook is not executed. +;;If the second value is true then no more group can do an action with the window (ie leave the loop)." +;; (let ((result nil)) +;; (with-all-groups (*root-group* group) +;; (let ((ret (call-hook (group-nw-hook group) (list group window)))) +;; (typecase ret +;; (cons (when (first ret) +;; (setf result t)) +;; (when (second ret) +;; (return-from do-all-groups-nw-hook result))) +;; (t (when ret +;; (setf result t)))))) +;; result)) (defun do-all-groups-nw-hook (window) - "Call nw-hook of each group. A hook must return one value or a list of two values. -If the value or the first value is true then the default nw-hook is not executed. -If the second value is true then no more group can do an action with the window (ie leave the loop)." - (let ((result nil)) + "Call nw-hook of each group." + (let ((found nil)) (with-all-groups (*root-group* group) - (let ((ret (call-hook (group-nw-hook group) (list group window)))) - (typecase ret - (cons (when (first ret) - (setf result t)) - (when (second ret) - (return-from do-all-groups-nw-hook result))) - (t (when ret - (setf result t)))))) - result)) + (awhen (group-nw-hook group) + (call-hook it (list group window)) + (setf found t))) + found)) + + (defun process-new-window (window) "When a new window is created (or when we are scanning initial @@ -668,7 +655,7 @@ ;; (when (group-p *current-child*) ;; PHIL: Remove this!!! ;; (setf (group-nw-hook *current-child*) #'open-in-new-group-nw-hook)) (unless (do-all-groups-nw-hook window) - (default-group-nw-hook window)) + (default-group-nw-hook nil window)) (unhide-window window) (netwm-add-in-client-list window))) Modified: clfswm/src/clfswm-nw-hooks.lisp ============================================================================== --- clfswm/src/clfswm-nw-hooks.lisp (original) +++ clfswm/src/clfswm-nw-hooks.lisp Sun Mar 16 09:57:22 2008 @@ -28,4 +28,104 @@ (in-package :clfswm) -;;; TODO: fill this file. + +;;; CONFIG - New window menu +;;; +;;; To add a new window hook (nw-hook): +;;; 1- define your own nw-hook +;;; 2- Define a seter function for your new hook +;;; 3- Register your new hook with register-nw-hook. + + + +(defun set-nw-hook (hook) + "Set the hook of the current child" + (let ((group (if (xlib:window-p *current-child*) + (find-father-group *current-child*) + *current-child*))) + (setf (group-nw-hook group) hook) + (leave-second-mode))) + +(defun register-nw-hook (hook) + (setf *nw-hook-list* (append *nw-hook-list* (list hook)))) + + +(defun default-window-placement (group window) + (case (window-type window) + (:normal (adapt-child-to-father window group)) + (t (place-window-from-hints window)))) + +(defun leave-if-not-group (child) + "Leave the child if it's not a group" + (when (xlib:window-p child) + (leave-group) + (select-previous-level))) + + + +;;; Default group new window hook +(defun default-group-nw-hook (group window) + "Open the next window in the current group" + (declare (ignore group)) + (leave-if-not-group *current-child*) + (when (group-p *current-child*) + (pushnew window (group-child *current-child*))) ;) + (default-window-placement *current-child* window)) + +(defun set-default-group-nw-hook () + "Open the next window in the current group" + (set-nw-hook #'default-group-nw-hook)) + +(register-nw-hook 'set-default-group-nw-hook) + + +;;; Open new window in current root hook +(defun open-in-current-root-nw-hook (group window) + "Open the next window in the current root" + (leave-if-not-group *current-root*) + (pushnew window (group-child *current-root*)) + (setf *current-child* (first (group-child *current-root*))) + (default-window-placement *current-root* window) + (setf (group-nw-hook group) nil)) + +(defun set-open-in-current-root-nw-hook () + "Open the next window in the current root" + (set-nw-hook #'open-in-current-root-nw-hook)) + +(register-nw-hook 'set-open-in-current-root-nw-hook) + + +;;; Open new window in a new group in the current root hook +(defun open-in-new-group-in-current-root-nw-hook (group window) + "Open the next window in a new group in the current root" + (leave-if-not-group *current-root*) + (let ((new-group (create-group))) + (pushnew new-group (group-child *current-root*)) + (pushnew window (group-child new-group)) + (setf *current-child* new-group) + (default-window-placement new-group window)) + (setf (group-nw-hook group) nil)) + +(defun set-open-in-new-group-in-current-root-nw-hook () + "Open the next window in a new group in the current root" + (set-nw-hook #'open-in-new-group-in-current-root-nw-hook)) + +(register-nw-hook 'set-open-in-new-group-in-current-root-nw-hook) + + +;;; Open new window in a new group in the root group hook +(defun open-in-new-group-in-root-group-nw-hook (group window) + "Open the next window in a new group in the root group" + (let ((new-group (create-group))) + (pushnew new-group (group-child *root-group*)) + (pushnew window (group-child new-group)) + (switch-to-root-group) + (setf *current-child* new-group) + (default-window-placement new-group window)) + (setf (group-nw-hook group) nil)) + +(defun set-open-in-new-group-in-root-group-nw-hook () + "Open the next window in a new group in the root group" + (set-nw-hook #'open-in-new-group-in-root-group-nw-hook)) + +(register-nw-hook 'set-open-in-new-group-in-root-group-nw-hook) Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Sun Mar 16 09:57:22 2008 @@ -465,21 +465,22 @@ ;;; Show group info (defun show-all-groups-info () "Show all groups info windows" - (with-all-groups (*current-root* group) - (raise-window (group-window group)) - (display-group-info group))) + (let ((*show-root-group-p* t)) + (show-all-childs) + (with-all-groups (*current-root* group) + (raise-window (group-window group)) + (display-group-info group)))) (defun hide-all-groups-info () "Hide all groups info windows" (with-all-windows (*current-root* window) (raise-window window)) + (hide-child *current-root*) (show-all-childs)) (defun show-all-groups-info-key () "Show all groups info windows until a key is release" - (with-all-groups (*current-root* group) - (raise-window (group-window group)) - (display-group-info group)) + (show-all-groups-info) (wait-no-key-or-button-press) (hide-all-groups-info)) Modified: clfswm/src/package.lisp ============================================================================== --- clfswm/src/package.lisp (original) +++ clfswm/src/package.lisp Sun Mar 16 09:57:22 2008 @@ -49,6 +49,7 @@ (defparameter *child-selection* nil) (defparameter *layout-list* nil) +(defparameter *nw-hook-list* nil) ;;(defstruct group (number (incf *current-group-number*)) name From pbrochard at common-lisp.net Tue Mar 18 11:42:12 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Tue, 18 Mar 2008 06:42:12 -0500 (EST) Subject: [clfswm-cvs] r47 - in clfswm: . src Message-ID: <20080318114212.D624A49022@common-lisp.net> Author: pbrochard Date: Tue Mar 18 06:42:07 2008 New Revision: 47 Modified: clfswm/TODO clfswm/src/clfswm-internal.lisp clfswm/src/clfswm-nw-hooks.lisp clfswm/src/clfswm.lisp clfswm/src/xlib-util.lisp Log: Remove :button-* in *window-events* -> prevent an access-error bug Modified: clfswm/TODO ============================================================================== --- clfswm/TODO (original) +++ clfswm/TODO Tue Mar 18 06:42:07 2008 @@ -18,6 +18,8 @@ - Hooks when a new window is mapped [Philippe] + + Hook to open next window in named/numbered group + - Add boundaries in the info window [Philippe] Modified: clfswm/src/clfswm-internal.lisp ============================================================================== --- clfswm/src/clfswm-internal.lisp (original) +++ clfswm/src/clfswm-internal.lisp Tue Mar 18 06:42:07 2008 @@ -596,19 +596,20 @@ (defun place-window-from-hints (window) "Place a window from its hints" - (let* ((hints (xlib:wm-normal-hints window)) - (min-width (or (and hints (xlib:wm-size-hints-min-width hints)) 0)) - (min-height (or (and hints (xlib:wm-size-hints-min-height hints)) 0)) - (max-width (or (and hints (xlib:wm-size-hints-max-width hints)) (xlib:drawable-width *root*))) - (max-height (or (and hints (xlib:wm-size-hints-max-height hints)) (xlib:drawable-height *root*))) - (rwidth (or (and hints (or (xlib:wm-size-hints-width hints) (xlib:wm-size-hints-base-width hints))) - (xlib:drawable-width window))) - (rheight (or (and hints (or (xlib:wm-size-hints-height hints) (xlib:wm-size-hints-base-height hints))) - (xlib:drawable-height window)))) - (setf (xlib:drawable-width window) (min (max min-width rwidth) max-width) - (xlib:drawable-height window) (min (max min-height rheight) max-height)) - (setf (xlib:drawable-x window) (truncate (+ (group-rx *current-child*) (/ (- (group-rw *current-child*) (xlib:drawable-width window)) 2))) - (xlib:drawable-y window) (truncate (+ (group-ry *current-child*) (/ (- (group-rh *current-child*) (xlib:drawable-height window)) 2)))))) + (with-xlib-protect + (let* ((hints (xlib:wm-normal-hints window)) + (min-width (or (and hints (xlib:wm-size-hints-min-width hints)) 0)) + (min-height (or (and hints (xlib:wm-size-hints-min-height hints)) 0)) + (max-width (or (and hints (xlib:wm-size-hints-max-width hints)) (xlib:drawable-width *root*))) + (max-height (or (and hints (xlib:wm-size-hints-max-height hints)) (xlib:drawable-height *root*))) + (rwidth (or (and hints (or (xlib:wm-size-hints-width hints) (xlib:wm-size-hints-base-width hints))) + (xlib:drawable-width window))) + (rheight (or (and hints (or (xlib:wm-size-hints-height hints) (xlib:wm-size-hints-base-height hints))) + (xlib:drawable-height window)))) + (setf (xlib:drawable-width window) (min (max min-width rwidth) max-width) + (xlib:drawable-height window) (min (max min-height rheight) max-height)) + (setf (xlib:drawable-x window) (truncate (+ (group-rx *current-child*) (/ (- (group-rw *current-child*) (xlib:drawable-width window)) 2))) + (xlib:drawable-y window) (truncate (+ (group-ry *current-child*) (/ (- (group-rh *current-child*) (xlib:drawable-height window)) 2))))))) @@ -656,7 +657,6 @@ ;; (setf (group-nw-hook *current-child*) #'open-in-new-group-nw-hook)) (unless (do-all-groups-nw-hook window) (default-group-nw-hook nil window)) - (unhide-window window) (netwm-add-in-client-list window))) @@ -680,7 +680,9 @@ (when (or (eql map-state :viewable) (eql wm-state +iconic-state+)) (format t "Processing ~S: type=~A ~S~%" (xlib:wm-name win) (window-type win)win) + (unhide-window win) (process-new-window win) + (xlib:map-window win) (raise-window win) (pushnew (xlib:window-id win) id-list)))))) (netwm-set-client-list id-list))) Modified: clfswm/src/clfswm-nw-hooks.lisp ============================================================================== --- clfswm/src/clfswm-nw-hooks.lisp (original) +++ clfswm/src/clfswm-nw-hooks.lisp Tue Mar 18 06:42:07 2008 @@ -69,7 +69,7 @@ (declare (ignore group)) (leave-if-not-group *current-child*) (when (group-p *current-child*) - (pushnew window (group-child *current-child*))) ;) + (pushnew window (group-child *current-child*))) (default-window-placement *current-child* window)) (defun set-default-group-nw-hook () Modified: clfswm/src/clfswm.lisp ============================================================================== --- clfswm/src/clfswm.lisp (original) +++ clfswm/src/clfswm.lisp Tue Mar 18 06:42:07 2008 @@ -94,11 +94,11 @@ (defun handle-map-request (&rest event-slots &key window send-event-p &allow-other-keys) (declare (ignore event-slots)) (unless send-event-p + (unhide-window window) (process-new-window window) (xlib:map-window window) (show-all-childs))) - (defun handle-unmap-notify (&rest event-slots &key send-event-p event-window window &allow-other-keys) (declare (ignore event-slots)) (unless (and (not send-event-p) @@ -126,7 +126,7 @@ (defun handle-exposure (&rest event-slots &key window &allow-other-keys) (declare (ignore event-slots)) (awhen (find-group-window window *current-root*) - (display-group-info it))) + (display-group-info it))) (defun handle-create-notify (&rest event-slots) Modified: clfswm/src/xlib-util.lisp ============================================================================== --- clfswm/src/xlib-util.lisp (original) +++ clfswm/src/xlib-util.lisp Tue Mar 18 06:42:07 2008 @@ -37,10 +37,7 @@ :colormap-change :focus-change :enter-window - :exposure - :button-press - :button-release - :pointer-motion) + :exposure) "The events to listen for on managed windows.") From pbrochard at common-lisp.net Tue Mar 18 20:54:54 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Tue, 18 Mar 2008 15:54:54 -0500 (EST) Subject: [clfswm-cvs] r48 - clfswm/contrib Message-ID: <20080318205454.CD1EC4E03F@common-lisp.net> Author: pbrochard Date: Tue Mar 18 15:54:54 2008 New Revision: 48 Modified: clfswm/contrib/clfswm (contents, props changed) Log: This patch just fixes an annoyance when calling our script without any argument. Modified: clfswm/contrib/clfswm ============================================================================== --- clfswm/contrib/clfswm (original) +++ clfswm/contrib/clfswm Tue Mar 18 15:54:54 2008 @@ -103,9 +103,6 @@ shift done -test -x $(type -p $lisp) || die "$lisp can't be found." -test -e $clfswm_asd_path/clfswm.asd || die "can't find clfswm.asd in $clfswm_asd_path" -test -e $asdf_path/asdf.lisp || die "can't find asdf.lisp in $asdf_path" dump_image="$dump_path/clfswm-$(cksum $(type -p $lisp) | cut -d ' ' -f 1).core" @@ -120,7 +117,11 @@ do test "$dump_image" -ot "$i" && exit 1 done ) then - eval build_$lisp + test -x $(type -p $lisp) || die "$lisp can't be found." + test -e $clfswm_asd_path/clfswm.asd || die "can't find clfswm.asd in $clfswm_asd_path" + test -e $asdf_path/asdf.lisp || die "can't find asdf.lisp in $asdf_path" + + eval build_$lisp fi # Run the resulting image From pbrochard at common-lisp.net Tue Mar 18 21:10:56 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Tue, 18 Mar 2008 16:10:56 -0500 (EST) Subject: [clfswm-cvs] r49 - clfswm Message-ID: <20080318211056.F16CE1F00D@common-lisp.net> Author: pbrochard Date: Tue Mar 18 16:10:55 2008 New Revision: 49 Added: clfswm/.gitignore Log: Ignore files for git Added: clfswm/.gitignore ============================================================================== --- (empty file) +++ clfswm/.gitignore Tue Mar 18 16:10:55 2008 @@ -0,0 +1,15 @@ +# git-ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +*.fas +*.fasl +*.lib +*.orig +*.patch +*.diff +*~ + +# Personal scripts: +1disp-load.lisp +git-commit.sh From pbrochard at common-lisp.net Tue Mar 18 21:53:47 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Tue, 18 Mar 2008 16:53:47 -0500 (EST) Subject: [clfswm-cvs] r50 - in clfswm: . src Message-ID: <20080318215347.527CE340BC@common-lisp.net> Author: pbrochard Date: Tue Mar 18 16:53:45 2008 New Revision: 50 Added: clfswm/src/version.lisp Modified: clfswm/clfswm.asd clfswm/src/clfswm-info.lisp clfswm/src/package.lisp clfswm/src/tools.lisp Log: New version package. Move date-string to tools.lisp. Localize date-string Modified: clfswm/clfswm.asd ============================================================================== --- clfswm/clfswm.asd (original) +++ clfswm/clfswm.asd Tue Mar 18 16:53:45 2008 @@ -16,7 +16,7 @@ (:file "my-html" :depends-on ("tools")) (:file "package" - :depends-on ("my-html" "tools")) + :depends-on ("my-html" "tools" "version")) (:file "config" :depends-on ("package")) (:file "keysyms" @@ -32,10 +32,12 @@ (:file "clfswm" :depends-on ("xlib-util" "netwm-util" "clfswm-keys" "config" "clfswm-internal" "tools")) + (:file "version" + :depends-on ("tools")) (:file "clfswm-second-mode" :depends-on ("package" "clfswm-internal")) (:file "clfswm-info" - :depends-on ("package" "xlib-util" "config" "clfswm-keys" "clfswm" "clfswm-internal")) + :depends-on ("package" "version" "xlib-util" "config" "clfswm-keys" "clfswm" "clfswm-internal")) (:file "clfswm-util" :depends-on ("clfswm" "keysyms" "clfswm-info" "clfswm-second-mode" "clfswm-query")) (:file "clfswm-query" Modified: clfswm/src/clfswm-info.lisp ============================================================================== --- clfswm/src/clfswm-info.lisp (original) +++ clfswm/src/clfswm-info.lisp Tue Mar 18 16:53:45 2008 @@ -352,17 +352,6 @@ (show-key-binding *second-keys* *second-mouse*)) -(let ((days '("Lundi" "Mardi" "Mercredi" "Jeudi" "Vendredi" "Samedi" "Dimanche")) - (months '("Janvier" "Fevrier" "Mars" "Avril" "Mai" "Juin" "Juillet" - "Aout" "Septembre" "Octobre" "Novembre" "Decembre"))) - (defun date-string () - (multiple-value-bind (second minute hour date month year day) - (get-decoded-time) - (format nil " ~2,'0D:~2,'0D:~2,'0D ~A ~2,'0D ~A ~A " - hour minute second - (nth day days) date (nth (1- month) months) year)))) - - (defun show-date () "Show the current time and date" (info-mode (list (date-string)))) @@ -417,6 +406,9 @@ (#\l show-cd-playlist)))) +(defun show-version () + "Show the current CLFSWM version" + (info-mode (list *version*))) (defun help-on-clfswm () "Open the help and info window" @@ -426,6 +418,7 @@ (#\c show-cpu-proc) (#\m show-mem-proc) (#\x xmms-info-menu) + (#\v show-version) (#\d info-on-cd-menu)))) @@ -437,6 +430,7 @@ (#\c show-cpu-proc) (#\m show-mem-proc) (#\x xmms-info-menu) + (#\v show-version) (#\d info-on-cd-menu)))) Modified: clfswm/src/package.lisp ============================================================================== --- clfswm/src/package.lisp (original) +++ clfswm/src/package.lisp Tue Mar 18 16:53:45 2008 @@ -26,7 +26,7 @@ (in-package :cl-user) (defpackage clfswm - (:use :common-lisp :my-html :tools) + (:use :common-lisp :my-html :tools :version) ;;(:shadow :defun) (:export :main)) Modified: clfswm/src/tools.lisp ============================================================================== --- clfswm/src/tools.lisp (original) +++ clfswm/src/tools.lisp Tue Mar 18 16:53:45 2008 @@ -44,6 +44,7 @@ :escape-string :first-position :find-free-number + :date-string :do-execute :do-shell :getenv @@ -569,179 +570,21 @@ (next-in-list item (reverse lst))) -;;(defun transfert-stream (in out length &key (bufsize 4096)) -;;;; (ignore-errors -;; (do* ((data (make-array bufsize -;; :element-type (stream-element-type in))) -;; (len 0 (read-sequence data in -;; :start 0 -;; :end (if (> (+ wlen bufsize) length) -;; (- length wlen) -;; bufsize))) -;; (wlen 0 (+ wlen len))) -;; ((>= wlen length) (write-sequence data out :start 0 :end len)) -;; (write-sequence data out :start 0 :end len)));) -;; -;; -;; -;; -;; -;;(defun my-copy-file (in-name out-name) -;; (with-open-file -;; (in in-name :direction :input :element-type '(unsigned-byte 8)) -;; (with-open-file -;; (out out-name :direction :output -;; :if-exists :supersede -;; :element-type '(unsigned-byte 8)) -;; (transfert-stream in out (file-length in))))) - - - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; ;; -;; Find String part. ;; -;; ;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun find-string (substr str &key (start 0) (end nil) - (test nil) (ignore-case nil)) - "Find substr in str. Return begin and end of substr in str as two values. -Start and end set the findinq region. Ignore-case make find-string case -insensitive. -Test (if needed) must be a function which take str pos1 pos2 and must return -new positions of the substr in str as two values" - (when (and end (>= start end)) - (return-from find-string nil)) - (let ((pos1 (- start 1)) - (pos2 nil) - (len (length substr))) - (when ignore-case - (setq str (string-upcase str) - substr (string-upcase substr))) - (do ((done nil)) - (done (if (functionp test) - (funcall test str pos1 pos2) - (values pos1 pos2))) - (setq pos1 (position (aref substr 0) str :start (+ pos1 1) :end end)) - (unless pos1 - (return-from find-string nil)) - (setq pos2 (string>= str substr :start1 pos1 :end1 end)) - (when (and pos2 (= (- pos2 pos1) len)) - (setq done t))))) - - - -(defun find-all-strings (substr str &key (start 0) (end nil) - (test nil) (ignore-case nil)) - "Find all substr in str. Parameters are the same as find-string. -Return a list with all begin and end positions of substr in str -ie: '((pos1.1 pos1.2) (pos2.1 pos2.2))..." - (do ((pos (multiple-value-list - (find-string substr str :start start :end end - :test test :ignore-case ignore-case)) - (multiple-value-list - (find-string substr str :start (second pos) :end end - :test test :ignore-case ignore-case))) - (accum nil)) - ((equal pos '(nil)) (nreverse accum)) - (push pos accum))) - - - -(defun subst-strings (new substr str &key (start 0) (end nil) - (test nil) (ignore-case nil)) - "Substitute all substr strings in str with new. -New must be a string or a function witch takes str pos1 pos2 -as parameters and return a string to replace substr" - (let ((outstr (subseq str 0 start)) - (pos1 start) - (pos2 0) - (newpos 0)) - (unless end - (setq end (length str))) - (do ((done nil)) - (done outstr) - (multiple-value-setq - (pos2 newpos) - (find-string substr str :start pos1 :end end - :test test :ignore-case ignore-case)) - (if pos2 - (progn - (setq outstr (concatenate 'string - outstr - (subseq str pos1 pos2) - (if (functionp new) - (funcall new str pos2 newpos) - new))) - (setq pos1 (if (and newpos (<= newpos end)) - newpos - end))) - (progn - (setq outstr (concatenate 'string - outstr (subseq str pos1))) - (setq done t)))))) - - - -(defun my-find-string-test (str pos1 pos2) - (multiple-value-bind - (npos1 npos2) - (find-string "=>" str :start pos2) - (declare (ignore npos1)) - (values pos1 npos2))) - - -(defun test-find-string () - (let ((count 0) - (str "bla bla foo <= plop gloup => foo -baz bar <=klm poi => boo <=plop=> faz -lab totrs <= plip =>")) - - (format t "Original:~%~A~2%" str) - (format t "[1] Simple find on '<=': ~A~%" - (multiple-value-list - (find-string "<=" str))) - (format t "[2] Find with start=15/end=50: ~A~%" - (multiple-value-list - (find-string "<=" str :start 15 :end 50))) - - (format t "[3] Find with test (ie '<=.*=>'): ~A~%" - (multiple-value-bind - (pos1 pos2) - (find-string "<=" str :test #'my-find-string-test) - (subseq str pos1 pos2))) - - (format t "[4] Find all strings: ~A~%" - (find-all-strings "<=" str)) - - (format t "[5] Find all strings:~%") - (dolist (pos (find-all-strings "<=" str)) - (format t "Found: ~A~%" - (subseq str (car pos) (second pos)))) - - (format t "[6] Find all strings with test:~%") - (dolist (pos (find-all-strings "<=" str :test #'my-find-string-test)) - (format t "Found: ~A~%" (subseq str (car pos) (second pos)))) - - (format t "[7] Modifie '<=.*=>' with TOTO:~%~A" - (subst-strings "TOTO" "<=" str - :test #'my-find-string-test)) - (format t "~%") - (format t "[8] Modifie '<=.*=>' with a complex expression:~%~A~%" - (subst-strings - #'(lambda (str pos1 pos2) - (let ((repl (string-trim " " - (subseq str (+ pos1 2) (- pos2 2))))) - (format nil "<=~A:~A (~A)=>" - (incf count) - repl - (reverse repl)))) - "<=" str - :test #'(lambda (str pos1 pos2) - (multiple-value-bind - (npos1 npos2) - (find-string "=>" str :start pos2) - (declare (ignore npos1)) - (values pos1 npos2))))))) +(let ((jours '("Lundi" "Mardi" "Mercredi" "Jeudi" "Vendredi" "Samedi" "Dimanche")) + (mois '("Janvier" "Fevrier" "Mars" "Avril" "Mai" "Juin" "Juillet" + "Aout" "Septembre" "Octobre" "Novembre" "Decembre")) + (days '("Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday")) + (months '("January" "February" "March" "April" "May" "June" "July" + "August" "September" "October" "November" "December"))) + (defun date-string () + (multiple-value-bind (second minute hour date month year day) + (get-decoded-time) + (if (search "fr" (getenv "LANG") :test #'string-equal) + (format nil " ~2,'0D:~2,'0D:~2,'0D ~A ~2,'0D ~A ~A " + hour minute second + (nth day jours) date (nth (1- month) mois) year) + (format nil " ~2,'0D:~2,'0D:~2,'0D ~A ~A ~2,'0D ~A " + hour minute second + (nth day days) (nth (1- month) months) date year))))) Added: clfswm/src/version.lisp ============================================================================== --- (empty file) +++ clfswm/src/version.lisp Tue Mar 18 16:53:45 2008 @@ -0,0 +1,36 @@ +;; Copyright (C) 2008 Xavier Maillard +;; Copyright (C) 2006 Martin Bishop +;; +;; Borrowed from Stumpwm +;; This file is part of clfswm. +;; +;; clfswm 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, or (at your option) +;; any later version. + +;; clfswm 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 software; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330, +;; Boston, MA 02111-1307 USA + +;; Commentary: +;; +;; This file contains version information. +;; +;; Code: + +(in-package :common-lisp-user) + +(defpackage version + (:use :common-lisp :tools) + (:export *version*)) + +(in-package :version) + +(defparameter *version* #.(concatenate 'string "0.0.1-git built " (date-string))) \ No newline at end of file From pbrochard at common-lisp.net Fri Mar 21 21:58:05 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Fri, 21 Mar 2008 16:58:05 -0500 (EST) Subject: [clfswm-cvs] r51 - in clfswm: . src Message-ID: <20080321215805.438F87114C@common-lisp.net> Author: pbrochard Date: Fri Mar 21 16:58:00 2008 New Revision: 51 Modified: clfswm/ChangeLog clfswm/clfswm.asd clfswm/src/bindings-second-mode.lisp clfswm/src/clfswm-layout.lisp clfswm/src/clfswm-pack.lisp clfswm/src/clfswm-second-mode.lisp Log: Pack, Fill, Resize functions. Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Fri Mar 21 16:58:00 2008 @@ -1,3 +1,7 @@ +2008-03-21 Philippe Brochard + + * src/clfswm-pack.lisp: Pack, Fill, Resize functions. + 2008-03-16 Philippe Brochard * src/clfswm-nw-hooks.lisp: Register system for new window hooks. Modified: clfswm/clfswm.asd ============================================================================== --- clfswm/clfswm.asd (original) +++ clfswm/clfswm.asd Fri Mar 21 16:58:00 2008 @@ -44,6 +44,8 @@ :depends-on ("package" "config")) (:file "clfswm-layout" :depends-on ("package" "clfswm-util" "clfswm-info")) + (:file "clfswm-pack" + :depends-on ("clfswm" "clfswm-util")) (:file "clfswm-nw-hooks" :depends-on ("package" "clfswm-util" "clfswm-info")) (:file "bindings" Modified: clfswm/src/bindings-second-mode.lisp ============================================================================== --- clfswm/src/bindings-second-mode.lisp (original) +++ clfswm/src/bindings-second-mode.lisp Fri Mar 21 16:58:00 2008 @@ -58,29 +58,137 @@ - (defun group-pack-menu () "Group pack menu" - (info-mode-menu '(("Up" group-pack-up) - ("Down" group-pack-down)))) + (info-mode-menu '(("Up" current-group-pack-up) + ("Down" current-group-pack-down) + ("Left" current-group-pack-left) + ("Right" current-group-pack-right)))) + + +(defun group-fill-menu () + "Group fill menu" + (info-mode-menu '(("Up" current-group-fill-up) + ("Down" current-group-fill-down) + ("Left" current-group-fill-left) + ("Right" current-group-fill-right) + (#\a current-group-fill-all-dir) + (#\v current-group-fill-vertical) + (#\h current-group-fill-horizontal)))) + +(defun group-resize-menu () + "Group resize menu" + (info-mode-menu '(("Up" current-group-resize-up) + ("Down" current-group-resize-down) + ("Left" current-group-resize-left) + ("Right" current-group-resize-right) + (#\d current-group-resize-all-dir) + (#\a current-group-resize-all-dir-minimal)))) (defun group-movement-menu () "Group movement menu" (info-mode-menu '((#\p group-pack-menu) (#\f group-fill-menu) - (#\r group-resize-menu)))) + (#\r group-resize-menu) + (#\c center-current-group)))) -(defun group-pack-up () - "Pack group up" - (print 'pack-up) - (group-movement-menu)) - -(defun group-pack-down () - "Pack group down" - (print 'pack-down) - (group-movement-menu)) +(defmacro with-movement (&body body) + `(when (group-p *current-child*) + , at body + (show-all-childs) + (draw-second-mode-window) + (group-movement-menu))) + + +;;; Pack +(defun current-group-pack-up () + "Pack the current group up" + (with-movement (pack-group-up *current-child* (find-father-group *current-child* *current-root*)))) + +(defun current-group-pack-down () + "Pack the current group down" + (with-movement (pack-group-down *current-child* (find-father-group *current-child* *current-root*)))) + +(defun current-group-pack-left () + "Pack the current group left" + (with-movement (pack-group-left *current-child* (find-father-group *current-child* *current-root*)))) + +(defun current-group-pack-right () + "Pack the current group right" + (with-movement (pack-group-right *current-child* (find-father-group *current-child* *current-root*)))) + +;;; Center +(defun center-current-group () + "Center the current group" + (with-movement (center-group *current-child*))) + +;;; Fill +(defun current-group-fill-up () + "Fill the current group up" + (with-movement (fill-group-up *current-child* (find-father-group *current-child* *current-root*)))) + +(defun current-group-fill-down () + "Fill the current group down" + (with-movement (fill-group-down *current-child* (find-father-group *current-child* *current-root*)))) + +(defun current-group-fill-left () + "Fill the current group left" + (with-movement (fill-group-left *current-child* (find-father-group *current-child* *current-root*)))) + +(defun current-group-fill-right () + "Fill the current group right" + (with-movement (fill-group-right *current-child* (find-father-group *current-child* *current-root*)))) + +(defun current-group-fill-all-dir () + "Fill the current group in all directions" + (with-movement + (let ((father (find-father-group *current-child* *current-root*))) + (fill-group-up *current-child* father) + (fill-group-down *current-child* father) + (fill-group-left *current-child* father) + (fill-group-right *current-child* father)))) + +(defun current-group-fill-vertical () + "Fill the current group vertically" + (with-movement + (let ((father (find-father-group *current-child* *current-root*))) + (fill-group-up *current-child* father) + (fill-group-down *current-child* father)))) + +(defun current-group-fill-horizontal () + "Fill the current group horizontally" + (with-movement + (let ((father (find-father-group *current-child* *current-root*))) + (fill-group-left *current-child* father) + (fill-group-right *current-child* father)))) + + +;;; Resize +(defun current-group-resize-up () + "Resize the current group up to its half height" + (with-movement (resize-half-height-up *current-child*))) + +(defun current-group-resize-down () + "Resize the current group down to its half height" + (with-movement (resize-half-height-down *current-child*))) + +(defun current-group-resize-left () + "Resize the current group left to its half width" + (with-movement (resize-half-width-left *current-child*))) + +(defun current-group-resize-right () + "Resize the current group right to its half width" + (with-movement (resize-half-width-right *current-child*))) + +(defun current-group-resize-all-dir () + "Resize down the current group" + (with-movement (resize-group-down *current-child*))) + +(defun current-group-resize-all-dir-minimal () + "Resize down the current group to its minimal size" + (with-movement (resize-minimal-group *current-child*))) Modified: clfswm/src/clfswm-layout.lisp ============================================================================== --- clfswm/src/clfswm-layout.lisp (original) +++ clfswm/src/clfswm-layout.lisp Fri Mar 21 16:58:00 2008 @@ -131,12 +131,12 @@ (1+ ry) (- (round (* rw size)) 2) (- rh 2) - nil) + t) (values (1+ (round (+ rx (* rw size)))) (1+ (round (+ ry (* dy (1- pos))))) (- (round (* rw (- 1 size))) 2) (- (round dy) 2) - nil))))) + t))))) (defun set-tile-left-layout () @@ -164,12 +164,12 @@ (1+ ry) (- (round (* rw size)) 2) (- rh 2) - nil) + t) (values (1+ rx) (1+ (round (+ ry (* dy (1- pos))))) (- (round (* rw (- 1 size))) 2) (- (round dy) 2) - nil))))) + t))))) (defun set-tile-right-layout () @@ -199,12 +199,12 @@ (1+ ry) (- rw 2) (- (round (* rh size)) 2) - nil) + t) (values (1+ (round (+ rx (* dx (1- pos))))) (1+ (round (+ ry (* rh size)))) (- (round dx) 2) (- (round (* rh (- 1 size))) 2) - nil))))) + t))))) (defun set-tile-top-layout () @@ -231,11 +231,13 @@ (values (1+ rx) (1+ (round (+ ry (* rh (- 1 size))))) (- rw 2) - (- (round (* rh size)) 2)) + (- (round (* rh size)) 2) + t) (values (1+ (round (+ rx (* dx (1- pos))))) (1+ ry) (- (round dx) 2) - (- (round (* rh (- 1 size))) 2)))))) + (- (round (* rh (- 1 size))) 2) + t))))) @@ -269,7 +271,7 @@ (round (+ ry (truncate (* (truncate (/ pos n)) dy)) (* dy size) 1)) (round (- dx (* dx size 2) 2)) (round (- dy (* dy size 2) 2)) - nil)))) + t)))) (defun set-space-tile-layout () "Tile Space: tile child in its group leaving spaces between them" Modified: clfswm/src/clfswm-pack.lisp ============================================================================== --- clfswm/src/clfswm-pack.lisp (original) +++ clfswm/src/clfswm-pack.lisp Fri Mar 21 16:58:00 2008 @@ -26,212 +26,58 @@ (in-package :clfswm) ;;;,----- -;;;| Tile functions -;;;`----- -(defun tile-workspace-vertically (workspace) - "Tile a workspace vertically" - (let* ((len (max (length (workspace-group-list workspace)) 1)) - (n (ceiling (sqrt len))) - (dx (/ (xlib:screen-width *screen*) n)) - (dy (/ (xlib:screen-height *screen*) (ceiling (/ len n))))) - (loop for group in (workspace-group-list workspace) - for i from 0 do - (setf (group-x group) (1+ (truncate (* (mod i n) dx))) - (group-y group) (1+ (truncate (* (truncate (/ i n)) dy))) - (group-width group) (- (truncate dx) 2) - (group-height group) (- (truncate dy) 2))))) - - -(defun tile-current-workspace-vertically () - "Tile the current workspace vertically" - (minimize-group (current-group)) - (tile-workspace-vertically (current-workspace)) - (show-all-windows-in-workspace (current-workspace))) - - - -(defun tile-workspace-horizontally (workspace) - "Tile a workspace horizontally" - (let* ((len (max (length (workspace-group-list workspace)) 1)) - (n (ceiling (sqrt len))) - (dx (/ (xlib:screen-width *screen*) (ceiling (/ len n)))) - (dy (/ (xlib:screen-height *screen*) n))) - (loop for group in (workspace-group-list workspace) - for i from 0 do - (setf (group-x group) (1+ (truncate (* (truncate (/ i n)) dx))) - (group-y group) (1+ (truncate (* (mod i n) dy))) - (group-width group) (- (truncate dx) 2) - (group-height group) (- (truncate dy) 2))))) - - -(defun tile-current-workspace-horizontally () - "Tile the current workspace horizontally" - (minimize-group (current-group)) - (tile-workspace-horizontally (current-workspace)) - (show-all-windows-in-workspace (current-workspace))) - - -(defun tile-workspace-right (workspace) - "Tile workspace with the current window on the left and others on the right" - (let ((len (length (workspace-group-list workspace))) - (group (first (workspace-group-list workspace)))) - (if (<= len 1) - (setf (group-x group) 0 - (group-y group) 0 - (group-width group) (xlib:screen-width *screen*) - (group-height group) (xlib:screen-height *screen*)) - (let ((dy (/ (xlib:screen-height *screen*) (1- len)))) - (setf (group-x group) 1 - (group-y group) 1 - (group-width group) (- (xlib:screen-width *screen*) *tile-border-size* 1) - (group-height group) (- (xlib:screen-height *screen*) 1)) - (loop :for i :from 0 - :for g :in (rest (workspace-group-list workspace)) - :do (setf (group-x g) (- (xlib:screen-width *screen*) *tile-border-size* -1) - (group-y g) (truncate (* i dy)) - (group-width g) (- *tile-border-size* 2) - (group-height g) (truncate (- dy 1)))))))) - -(defun tile-workspace-left (workspace) - "Tile workspace with the current window on the right and others on the left" - (let ((len (length (workspace-group-list workspace))) - (group (first (workspace-group-list workspace)))) - (if (<= len 1) - (setf (group-x group) 0 - (group-y group) 0 - (group-width group) (xlib:screen-width *screen*) - (group-height group) (xlib:screen-height *screen*)) - (let ((dy (/ (xlib:screen-height *screen*) (1- len)))) - (setf (group-x group) *tile-border-size* - (group-y group) 1 - (group-width group) (- (xlib:screen-width *screen*) *tile-border-size* 1) - (group-height group) (- (xlib:screen-height *screen*) 1)) - (loop :for i :from 0 - :for g :in (rest (workspace-group-list workspace)) - :do (setf (group-x g) 0 - (group-y g) (truncate (* i dy)) - (group-width g) (- *tile-border-size* 2) - (group-height g) (truncate (- dy 1)))))))) - - -(defun tile-workspace-top (workspace) - "Tile workspace with the current window on the bottom and others on the top" - (let ((len (length (workspace-group-list workspace))) - (group (first (workspace-group-list workspace)))) - (if (<= len 1) - (setf (group-x group) 0 - (group-y group) 0 - (group-width group) (xlib:screen-width *screen*) - (group-height group) (xlib:screen-height *screen*)) - (let ((dx (/ (xlib:screen-width *screen*) (1- len)))) - (setf (group-x group) 1 - (group-y group) *tile-border-size* - (group-width group) (- (xlib:screen-width *screen*) 1) - (group-height group) (- (xlib:screen-height *screen*) *tile-border-size* 1)) - (loop :for i :from 0 - :for g :in (rest (workspace-group-list workspace)) - :do (setf (group-x g) (truncate (* i dx)) - (group-y g) 0 - (group-width g) (truncate (- dx 1)) - (group-height g) (- *tile-border-size* 2))))))) - -(defun tile-workspace-bottom (workspace) - "Tile workspace with the current window on the top and others on the bottom" - (let ((len (length (workspace-group-list workspace))) - (group (first (workspace-group-list workspace)))) - (if (<= len 1) - (setf (group-x group) 0 - (group-y group) 0 - (group-width group) (xlib:screen-width *screen*) - (group-height group) (xlib:screen-height *screen*)) - (let ((dx (/ (xlib:screen-width *screen*) (1- len)))) - (setf (group-x group) 1 - (group-y group) 1 - (group-width group) (- (xlib:screen-width *screen*) 1) - (group-height group) (- (xlib:screen-height *screen*) *tile-border-size* 1)) - (loop :for i :from 0 - :for g :in (rest (workspace-group-list workspace)) - :do (setf (group-x g) (truncate (* i dx)) - (group-y g) (- (xlib:screen-height *screen*) *tile-border-size* -1) - (group-width g) (truncate (- dx 1)) - (group-height g) (- *tile-border-size* 2))))))) - - -(defun tile-current-workspace-to () - "Tile the current workspace with the current window on one side and others on the other" - (funcall *tile-workspace-function* (current-workspace)) - (show-all-windows-in-workspace (current-workspace))) - - -(defun reconfigure-tile-workspace () - "Reconfigure the workspace tiling for the current session" - (let ((method (loop :for m = (intern (string-upcase - (query-string "Workspace tiling method (R)ight, (L)eft, (T)op, (B)ottom:")) - :keyword) - :when (member m '(:r :l :t :b)) :return m)) - (size (loop :for s = (parse-integer (query-string "Workspace tiling border size" - (format nil "~A" *tile-border-size*)) - :junk-allowed t) - :when (numberp s) :return s))) - (setf *tile-workspace-function* (case method - (:r 'tile-workspace-right) - (:l 'tile-workspace-left) - (:t 'tile-workspace-top) - (:b 'tile-workspace-bottom)) - *tile-border-size* size))) - - - - -;;;,----- ;;;| Edges functions ;;;`----- (defun group-x2 (group) - (+ (group-x group) (group-width group))) + (+ (group-x group) (group-w group))) (defun group-y2 (group) - (+ (group-y group) (group-height group))) + (+ (group-y group) (group-h group))) -(defun find-edge-up (current-group workspace) +(defun find-edge-up (current-group father) (let ((y-found 0)) - (dolist (group (workspace-group-list workspace)) - (when (and (not (equal group current-group)) + (dolist (group (group-child father)) + (when (and (group-p group) + (not (equal group current-group)) (<= (group-y2 group) (group-y current-group)) (>= (group-x2 group) (group-x current-group)) (<= (group-x group) (group-x2 current-group))) - (setf y-found (max y-found (+ (group-y2 group) 2))))) + (setf y-found (max y-found (group-y2 group))))) y-found)) -(defun find-edge-down (current-group workspace) - (let ((y-found (xlib:screen-height *screen*))) - (dolist (group (workspace-group-list workspace)) - (when (and (not (equal group current-group)) +(defun find-edge-down (current-group father) + (let ((y-found 1)) + (dolist (group (group-child father)) + (when (and (group-p group) + (not (equal group current-group)) (>= (group-y group) (group-y2 current-group)) (>= (group-x2 group) (group-x current-group)) (<= (group-x group) (group-x2 current-group))) - (setf y-found (min y-found (- (group-y group) 2))))) + (setf y-found (min y-found (group-y group))))) y-found)) -(defun find-edge-right (current-group workspace) - (let ((x-found (xlib:screen-width *screen*))) - (dolist (group (workspace-group-list workspace)) - (when (and (not (equal group current-group)) +(defun find-edge-right (current-group father) + (let ((x-found 1)) + (dolist (group (group-child father)) + (when (and (group-p group) + (not (equal group current-group)) (>= (group-x group) (group-x2 current-group)) (>= (group-y2 group) (group-y current-group)) (<= (group-y group) (group-y2 current-group))) - (setf x-found (min x-found (- (group-x group) 2))))) + (setf x-found (min x-found (group-x group))))) x-found)) -(defun find-edge-left (current-group workspace) +(defun find-edge-left (current-group father) (let ((x-found 0)) - (dolist (group (workspace-group-list workspace)) - (when (and (not (equal group current-group)) + (dolist (group (group-child father)) + (when (and (group-p group) + (not (equal group current-group)) (<= (group-x2 group) (group-x current-group)) (>= (group-y2 group) (group-y current-group)) (<= (group-y group) (group-y2 current-group))) - (setf x-found (max x-found (+ (group-x2 group) 2))))) + (setf x-found (max x-found (group-x2 group))))) x-found)) @@ -239,239 +85,139 @@ ;;;,----- ;;;| Pack functions ;;;`----- - - - -(defun pack-group-up (workspace group) +(defun pack-group-up (group father) "Pack group to up" - (let ((y-found (find-edge-up group workspace))) + (let ((y-found (find-edge-up group father))) (setf (group-y group) y-found))) -(defun pack-group-down (workspace group) +(defun pack-group-down (group father) "Pack group to down" - (let ((y-found (find-edge-down group workspace))) - (setf (group-y group) (- y-found (group-height group))))) + (let ((y-found (find-edge-down group father))) + (setf (group-y group) (- y-found (group-h group))))) -(defun pack-group-right (workspace group) +(defun pack-group-right (group father) "Pack group to right" - (let ((x-found (find-edge-right group workspace))) - (setf (group-x group) (- x-found (group-width group))))) + (let ((x-found (find-edge-right group father))) + (setf (group-x group) (- x-found (group-w group))))) -(defun pack-group-left (workspace group) +(defun pack-group-left (group father) "Pack group to left" - (let ((x-found (find-edge-left group workspace))) + (let ((x-found (find-edge-left group father))) (setf (group-x group) x-found))) - -(defun pack-current-group-up () - "Pack current group to up" - (pack-group-up (current-workspace) (current-group)) - (show-all-windows-in-workspace (current-workspace))) - - -(defun pack-current-group-down () - "Pack current group to down" - (pack-group-down (current-workspace) (current-group)) - (show-all-windows-in-workspace (current-workspace))) - -(defun pack-current-group-right () - "Pack current group to right" - (pack-group-right (current-workspace) (current-group)) - (show-all-windows-in-workspace (current-workspace))) - - -(defun pack-current-group-left () - "Pack current group to left" - (pack-group-left (current-workspace) (current-group)) - (show-all-windows-in-workspace (current-workspace))) - - (defun center-group (group) "Center group" - (setf (group-x group) (truncate (/ (- (xlib:screen-width *screen*) (group-width group)) 2)) - (group-y group) (truncate (/ (- (xlib:screen-height *screen*) (group-height group)) 2)))) - -(defun center-current-group () - "Center the current group" - (center-group (current-group)) - (show-all-windows-in-workspace (current-workspace))) + (setf (group-x group) (/ (- 1 (group-w group)) 2) + (group-y group) (/ (- 1 (group-h group)) 2))) ;;;,----- ;;;| Fill functions ;;;`----- - - -(defun fill-group-up (workspace group) +(defun fill-group-up (group father) "Fill a group up" - (let* ((y-found (find-edge-up group workspace)) + (let* ((y-found (find-edge-up group father)) (dy (- (group-y group) y-found))) (setf (group-y group) y-found - (group-height group) (+ (group-height group) dy)))) + (group-h group) (+ (group-h group) dy)))) -(defun fill-group-down (workspace group) +(defun fill-group-down (group father) "Fill a group down" - (let* ((y-found (find-edge-down group workspace)) + (let* ((y-found (find-edge-down group father)) (dy (- y-found (group-y2 group)))) - (setf (group-height group) (+ (group-height group) dy)))) + (setf (group-h group) (+ (group-h group) dy)))) -(defun fill-group-left (workspace group) +(defun fill-group-left (group father) "Fill a group left" - (let* ((x-found (find-edge-left group workspace)) + (let* ((x-found (find-edge-left group father)) (dx (- (group-x group) x-found))) (setf (group-x group) x-found - (group-width group) (+ (group-width group) dx)))) + (group-w group) (+ (group-w group) dx)))) -(defun fill-group-right (workspace group) +(defun fill-group-right (group father) "Fill a group rigth" - (let* ((x-found (find-edge-right group workspace)) + (let* ((x-found (find-edge-right group father)) (dx (- x-found (group-x2 group)))) - (setf (group-width group) (+ (group-width group) dx)))) - - -(defun fill-current-group-up () - "Fill the current group up" - (fill-group-up (current-workspace) (current-group)) - (show-all-windows-in-workspace (current-workspace))) - -(defun fill-current-group-down () - "Fill the current group down" - (fill-group-down (current-workspace) (current-group)) - (show-all-windows-in-workspace (current-workspace))) - - -(defun fill-current-group-left () - "Fill the current group left" - (fill-group-left (current-workspace) (current-group)) - (show-all-windows-in-workspace (current-workspace))) - -(defun fill-current-group-right () - "Fill the current group rigth" - (fill-group-right (current-workspace) (current-group)) - (show-all-windows-in-workspace (current-workspace))) - + (setf (group-w group) (+ (group-w group) dx)))) ;;;,----- ;;;| Lower functions ;;;`----- - -(defun resize-down-group (group) +(defun resize-group-down (group) "Resize down a group" - (when (> (group-width group) 100) - (setf (group-x group) (+ (group-x group) 10) - (group-width group) (max (- (group-width group) 20)))) - (when (> (group-height group) 100) - (setf (group-y group) (+ (group-y group) 10) - (group-height group) (max (- (group-height group) 20))))) + (when (> (group-w group) 0.1) + (setf (group-x group) (+ (group-x group) 0.01) + (group-w group) (max (- (group-w group) 0.02) 0.01))) + (when (> (group-h group) 0.1) + (setf (group-y group) (+ (group-y group) 0.01) + (group-h group) (max (- (group-h group) 0.02) 0.01)))) (defun resize-minimal-group (group) "Resize down a group to its minimal size" - (loop while (> (group-width group) 100) do - (setf (group-x group) (+ (group-x group) 10) - (group-width group) (max (- (group-width group) 20)))) - (loop while (> (group-height group) 100) do - (setf (group-y group) (+ (group-y group) 10) - (group-height group) (max (- (group-height group) 20))))) - - - -(defun resize-down-current-group () - "Resize down the current group" - (resize-down-group (current-group)) - (show-all-windows-in-workspace (current-workspace))) - + (dotimes (i 100) + (resize-group-down group))) -(defun resize-minimal-current-group () - "Resize down the current group to its minimal size" - (resize-minimal-group (current-group)) - (show-all-windows-in-workspace (current-workspace))) (defun resize-half-width-left (group) - (setf (group-width group) - (max (truncate (/ (group-width group) 2)) - 100))) + (setf (group-w group)(/ (group-w group) 2))) + (defun resize-half-width-right (group) - (let* ((new-size (max (truncate (/ (group-width group) 2)) 100)) - (dx (- (group-width group) new-size))) - (setf (group-width group) new-size) + (let* ((new-size (/ (group-w group) 2)) + (dx (- (group-w group) new-size))) + (setf (group-w group) new-size) (incf (group-x group) (max dx 0)))) (defun resize-half-height-up (group) - (setf (group-height group) - (max (truncate (/ (group-height group) 2)) - 100))) + (setf (group-h group) (/ (group-h group) 2))) (defun resize-half-height-down (group) - (let* ((new-size (max (truncate (/ (group-height group) 2)) 100)) - (dy (- (group-height group) new-size))) - (setf (group-height group) new-size) + (let* ((new-size (/ (group-h group) 2)) + (dy (- (group-h group) new-size))) + (setf (group-h group) new-size) (incf (group-y group) (max dy 0)))) -(defun resize-half-width-left-current-group () - "Resize the current group to its half width to left" - (resize-half-width-left (current-group)) - (show-all-windows-in-workspace (current-workspace))) - -(defun resize-half-width-right-current-group () - "Resize the current group to its half width to right" - (resize-half-width-right (current-group)) - (show-all-windows-in-workspace (current-workspace))) - - -(defun resize-half-height-up-current-group () - "Resize the current group to its half height to up" - (resize-half-height-up (current-group)) - (show-all-windows-in-workspace (current-workspace))) - -(defun resize-half-height-down-current-group () - "Resize the current group to its half height to down" - (resize-half-height-down (current-group)) - (show-all-windows-in-workspace (current-workspace))) - - - -;;;,----- -;;;| Explode/Implode functions -;;;`----- -(defun explode-group (workspace group) - "Create a new group for each window in group" - (dolist (w (rest (group-window-list group))) - (add-group-in-workspace (copy-group *default-group*) workspace) - (add-window-in-group w (first (workspace-group-list workspace))) - (remove-window-in-group w group))) - -(defun implode-group (workspace) - "Move all windows in workspace to one group and remove other groups" - (dolist (g (rest (workspace-group-list workspace))) - (dolist (w (group-window-list g)) - (add-window-in-group w (first (workspace-group-list workspace))) - (remove-window-in-group w g)) - (remove-group-in-workspace g workspace))) - - - -(defun explode-current-group () - "Create a new group for each window in the current group" - (explode-group (current-workspace) (current-group)) - (show-all-windows-in-workspace (current-workspace))) - - -(defun implode-current-group () - "Move all windows in the current workspace to one group and remove other groups" - (implode-group (current-workspace)) - (show-all-windows-in-workspace (current-workspace))) +;;;;;,----- +;;;;;| Explode/Implode functions +;;;;;`----- +;;(defun explode-group (workspace group) +;; "Create a new group for each window in group" +;; (dolist (w (rest (group-window-list group))) +;; (add-group-in-workspace (copy-group *default-group*) workspace) +;; (add-window-in-group w (first (workspace-group-list workspace))) +;; (remove-window-in-group w group))) +;; +;;(defun implode-group (workspace) +;; "Move all windows in workspace to one group and remove other groups" +;; (dolist (g (rest (workspace-group-list workspace))) +;; (dolist (w (group-window-list g)) +;; (add-window-in-group w (first (workspace-group-list workspace))) +;; (remove-window-in-group w g)) +;; (remove-group-in-workspace g workspace))) +;; +;; +;; +;;(defun explode-current-group () +;; "Create a new group for each window in the current group" +;; (explode-group (current-workspace) (current-group)) +;; (show-all-windows-in-workspace (current-workspace))) +;; +;; +;;(defun implode-current-group () +;; "Move all windows in the current workspace to one group and remove other groups" +;; (implode-group (current-workspace)) +;; (show-all-windows-in-workspace (current-workspace))) Modified: clfswm/src/clfswm-second-mode.lisp ============================================================================== --- clfswm/src/clfswm-second-mode.lisp (original) +++ clfswm/src/clfswm-second-mode.lisp Fri Mar 21 16:58:00 2008 @@ -54,6 +54,7 @@ (defun draw-second-mode-window () + (raise-window *sm-window*) (xlib:clear-area *sm-window*) (let* ((text (format nil "Second mode")) (len (length text))) From pbrochard at common-lisp.net Fri Mar 21 22:09:05 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Fri, 21 Mar 2008 17:09:05 -0500 (EST) Subject: [clfswm-cvs] r52 - clfswm/src Message-ID: <20080321220905.AD82431033@common-lisp.net> Author: pbrochard Date: Fri Mar 21 17:09:05 2008 New Revision: 52 Modified: clfswm/src/clfswm-info.lisp Log: Remove show-all-childs in info-mode -> less flickering Modified: clfswm/src/clfswm-info.lisp ============================================================================== --- clfswm/src/clfswm-info.lisp (original) +++ clfswm/src/clfswm-info.lisp Fri Mar 21 17:09:05 2008 @@ -284,7 +284,6 @@ (xlib:free-gcontext gc) (xlib:destroy-window window) (xlib:close-font font) - (show-all-childs) (wait-no-key-or-button-press)))))) From pbrochard at common-lisp.net Sat Mar 22 21:58:29 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sat, 22 Mar 2008 16:58:29 -0500 (EST) Subject: [clfswm-cvs] r53 - clfswm Message-ID: <20080322215829.AEA367212C@common-lisp.net> Author: pbrochard Date: Sat Mar 22 16:58:29 2008 New Revision: 53 Modified: clfswm/TODO Log: more TODO things Modified: clfswm/TODO ============================================================================== --- clfswm/TODO (original) +++ clfswm/TODO Sat Mar 22 16:58:29 2008 @@ -8,7 +8,6 @@ Should handle these soon. Rewrote all useful code present in 0801 version. -- pack/fill/resize [Philippe] - mouse operations [Philippe] - Hide a window when its size is less than hint minimal size. [Philippe] - Bind alt+1/2/3/4... to a particular child: [Philippe] @@ -16,10 +15,17 @@ If not -> bind the key to the current-child Bind alt+control+1/2/3/4... to remove binding on a child. +- Hook to open next window in named/numbered group [Philippe] -- Hooks when a new window is mapped [Philippe] - + Hook to open next window in named/numbered group +- Undo/redo (any idea to implement this is welcome) +- Ensure-unique-number/name (new function) [Philippe] + +- Float->Screen Screen->Float: convert geometry from 0 to 1 to pixel and from pixel to 0 to 1. [Philippe] + +- Raise/lower group [Philippe] + +- Hide/Unhide group [Philippe] - Add boundaries in the info window [Philippe] @@ -33,6 +39,21 @@ this in place I suspect you will need to restart stumpwm very rarely and it won't spontaneously bring down X." +- Zoom + +Concept: + * zoom out: Behave as if the application window is bigger for the application but completely drawn in a small amount of space (miniature). The zoom factor is inferior to 100% + * zoom in: Behave as a magnifying glass. The zoom factor is superior to 100%. The part of the application window shown (viewport) can be moved. + +Operation: + * set-zoom-factor (frame, factor) + * move-viewport (frame &optional (increment 1)) + * left + * right + * up + * down + + NEVER ===== From pbrochard at common-lisp.net Sat Mar 22 22:57:05 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sat, 22 Mar 2008 17:57:05 -0500 (EST) Subject: [clfswm-cvs] r54 - in clfswm: . src Message-ID: <20080322225705.D048B281DA@common-lisp.net> Author: pbrochard Date: Sat Mar 22 17:57:04 2008 New Revision: 54 Modified: clfswm/ChangeLog clfswm/clfswm.asd clfswm/src/bindings-second-mode.lisp clfswm/src/clfswm-pack.lisp Log: explode-group/explode-current-group: new functions. Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sat Mar 22 17:57:04 2008 @@ -1,3 +1,7 @@ +2008-03-22 Philippe Brochard + + * src/clfswm-pack.lisp (explode-group/explode-current-group): new functions. + 2008-03-21 Philippe Brochard * src/clfswm-pack.lisp: Pack, Fill, Resize functions. Modified: clfswm/clfswm.asd ============================================================================== --- clfswm/clfswm.asd (original) +++ clfswm/clfswm.asd Sat Mar 22 17:57:04 2008 @@ -45,7 +45,7 @@ (:file "clfswm-layout" :depends-on ("package" "clfswm-util" "clfswm-info")) (:file "clfswm-pack" - :depends-on ("clfswm" "clfswm-util")) + :depends-on ("clfswm" "clfswm-util" "clfswm-second-mode")) (:file "clfswm-nw-hooks" :depends-on ("package" "clfswm-util" "clfswm-info")) (:file "bindings" Modified: clfswm/src/bindings-second-mode.lisp ============================================================================== --- clfswm/src/bindings-second-mode.lisp (original) +++ clfswm/src/bindings-second-mode.lisp Sat Mar 22 17:57:04 2008 @@ -227,7 +227,8 @@ (#\m group-movement-menu) (#\r rename-current-child) (#\u renumber-current-group) - (#\i group-info-menu)))) + (#\i group-info-menu) + (#\x explode-current-group)))) (defun window-menu () "Window menu" Modified: clfswm/src/clfswm-pack.lisp ============================================================================== --- clfswm/src/clfswm-pack.lisp (original) +++ clfswm/src/clfswm-pack.lisp Sat Mar 22 17:57:04 2008 @@ -193,31 +193,18 @@ ;;;;;,----- ;;;;;| Explode/Implode functions ;;;;;`----- -;;(defun explode-group (workspace group) -;; "Create a new group for each window in group" -;; (dolist (w (rest (group-window-list group))) -;; (add-group-in-workspace (copy-group *default-group*) workspace) -;; (add-window-in-group w (first (workspace-group-list workspace))) -;; (remove-window-in-group w group))) -;; -;;(defun implode-group (workspace) -;; "Move all windows in workspace to one group and remove other groups" -;; (dolist (g (rest (workspace-group-list workspace))) -;; (dolist (w (group-window-list g)) -;; (add-window-in-group w (first (workspace-group-list workspace))) -;; (remove-window-in-group w g)) -;; (remove-group-in-workspace g workspace))) -;; -;; -;; -;;(defun explode-current-group () -;; "Create a new group for each window in the current group" -;; (explode-group (current-workspace) (current-group)) -;; (show-all-windows-in-workspace (current-workspace))) -;; -;; -;;(defun implode-current-group () -;; "Move all windows in the current workspace to one group and remove other groups" -;; (implode-group (current-workspace)) -;; (show-all-windows-in-workspace (current-workspace))) +(defun explode-group (group) + "Create a new group for each window in group" + (when (group-p group) + (let ((windows (loop :for child :in (group-child group) + :when (xlib:window-p child) + :collect child))) + (dolist (win windows) + (add-group (create-group :child (list win)) group) + (remove-child-in-group win group))))) + +(defun explode-current-group () + "Create a new group for each window in group" + (explode-group *current-child*) + (leave-second-mode)) From pbrochard at common-lisp.net Tue Mar 25 23:02:25 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Tue, 25 Mar 2008 18:02:25 -0500 (EST) Subject: [clfswm-cvs] r55 - in clfswm: . src Message-ID: <20080325230225.31C3C5F060@common-lisp.net> Author: pbrochard Date: Tue Mar 25 18:02:17 2008 New Revision: 55 Modified: clfswm/ChangeLog clfswm/TODO clfswm/clfswm.asd clfswm/src/bindings-second-mode.lisp clfswm/src/bindings.lisp clfswm/src/clfswm-info.lisp clfswm/src/clfswm-internal.lisp clfswm/src/clfswm-layout.lisp clfswm/src/clfswm-nw-hooks.lisp clfswm/src/clfswm-pack.lisp clfswm/src/clfswm-second-mode.lisp clfswm/src/clfswm-util.lisp clfswm/src/clfswm.lisp clfswm/src/package.lisp clfswm/src/xlib-util.lisp Log: Rename 'group' in 'frame'. Rename 'childs' in 'children'. keys-from-list new clfswm-info function Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Tue Mar 25 18:02:17 2008 @@ -1,3 +1,11 @@ +2008-03-25 Philippe Brochard + + * src/clfswm-info.lisp (keys-from-list): new function. + + * src/*: rename 'childs' in 'children'. + + * src/*: rename 'group' in 'frame'. + 2008-03-22 Philippe Brochard * src/clfswm-pack.lisp (explode-group/explode-current-group): new functions. Modified: clfswm/TODO ============================================================================== --- clfswm/TODO (original) +++ clfswm/TODO Tue Mar 25 18:02:17 2008 @@ -15,7 +15,7 @@ If not -> bind the key to the current-child Bind alt+control+1/2/3/4... to remove binding on a child. -- Hook to open next window in named/numbered group [Philippe] +- Hook to open next window in named/numbered frame [Philippe] - Undo/redo (any idea to implement this is welcome) @@ -23,12 +23,16 @@ - Float->Screen Screen->Float: convert geometry from 0 to 1 to pixel and from pixel to 0 to 1. [Philippe] -- Raise/lower group [Philippe] +- Raise/lower frame [Philippe] -- Hide/Unhide group [Philippe] +- Hide/Unhide frame [Philippe] - Add boundaries in the info window [Philippe] +- get-frame-by-name (path) [Philippe] + get-frame-by-name (path): return the frame that its own frame has this name if it exists such a frame + get-window-by-name (path): return the window that its own frame that its own frame has this name if it exists such a window. + MAYBE ===== @@ -53,6 +57,9 @@ * up * down +- Remote access to the clfswm REPL [Philippe] + +- cd/pwd a la shell to navigate throu frames. [Philippe] NEVER Modified: clfswm/clfswm.asd ============================================================================== --- clfswm/clfswm.asd (original) +++ clfswm/clfswm.asd Tue Mar 25 18:02:17 2008 @@ -51,7 +51,7 @@ (:file "bindings" :depends-on ("clfswm" "clfswm-internal")) (:file "bindings-second-mode" - :depends-on ("clfswm" "clfswm-util" "clfswm-query" "bindings")))))) + :depends-on ("clfswm" "clfswm-util" "clfswm-query" "bindings" "clfswm-pack")))))) Modified: clfswm/src/bindings-second-mode.lisp ============================================================================== --- clfswm/src/bindings-second-mode.lisp (original) +++ clfswm/src/bindings-second-mode.lisp Tue Mar 25 18:02:17 2008 @@ -38,157 +38,154 @@ ;;;;;;;;;;;;;;; ;; Menu entry ;;;;;;;;;;;;;;; -(defun group-adding-menu () - "Adding group menu" - (info-mode-menu '((#\a add-default-group) - (#\p add-placed-group)))) - -(defun group-layout-menu () - "Group layout menu" - (info-mode-menu (loop for l in *layout-list* - for i from 0 - collect (list (code-char (+ (char-code #\a) i)) l)))) - -(defun group-nw-hook-menu () - "Group new window hook menu" - (info-mode-menu (loop for l in *nw-hook-list* - for i from 0 - collect (list (code-char (+ (char-code #\a) i)) l)))) +(defun frame-adding-menu () + "Adding frame menu" + (info-mode-menu '((#\a add-default-frame) + (#\p add-placed-frame)))) + +(defun frame-layout-menu () + "Frame layout menu" + (info-mode-menu (keys-from-list *layout-list*))) + +(defun frame-nw-hook-menu () + "Frame new window hook menu" + (info-mode-menu (keys-from-list *nw-hook-list*))) -(defun group-pack-menu () - "Group pack menu" - (info-mode-menu '(("Up" current-group-pack-up) - ("Down" current-group-pack-down) - ("Left" current-group-pack-left) - ("Right" current-group-pack-right)))) - - -(defun group-fill-menu () - "Group fill menu" - (info-mode-menu '(("Up" current-group-fill-up) - ("Down" current-group-fill-down) - ("Left" current-group-fill-left) - ("Right" current-group-fill-right) - (#\a current-group-fill-all-dir) - (#\v current-group-fill-vertical) - (#\h current-group-fill-horizontal)))) - -(defun group-resize-menu () - "Group resize menu" - (info-mode-menu '(("Up" current-group-resize-up) - ("Down" current-group-resize-down) - ("Left" current-group-resize-left) - ("Right" current-group-resize-right) - (#\d current-group-resize-all-dir) - (#\a current-group-resize-all-dir-minimal)))) - - -(defun group-movement-menu () - "Group movement menu" - (info-mode-menu '((#\p group-pack-menu) - (#\f group-fill-menu) - (#\r group-resize-menu) - (#\c center-current-group)))) +(defun frame-pack-menu () + "Frame pack menu" + (info-mode-menu '(("Up" current-frame-pack-up) + ("Down" current-frame-pack-down) + ("Left" current-frame-pack-left) + ("Right" current-frame-pack-right)))) + + +(defun frame-fill-menu () + "Frame fill menu" + (info-mode-menu '(("Up" current-frame-fill-up) + ("Down" current-frame-fill-down) + ("Left" current-frame-fill-left) + ("Right" current-frame-fill-right) + (#\a current-frame-fill-all-dir) + (#\v current-frame-fill-vertical) + (#\h current-frame-fill-horizontal)))) + +(defun frame-resize-menu () + "Frame resize menu" + (info-mode-menu '(("Up" current-frame-resize-up) + ("Down" current-frame-resize-down) + ("Left" current-frame-resize-left) + ("Right" current-frame-resize-right) + (#\d current-frame-resize-all-dir) + (#\a current-frame-resize-all-dir-minimal)))) + + +(defun frame-movement-menu () + "Frame movement menu" + (info-mode-menu '((#\p frame-pack-menu) + (#\f frame-fill-menu) + (#\r frame-resize-menu) + (#\c center-current-frame))) + (leave-second-mode)) (defmacro with-movement (&body body) - `(when (group-p *current-child*) + `(when (frame-p *current-child*) , at body - (show-all-childs) + (show-all-children) (draw-second-mode-window) - (group-movement-menu))) + (frame-movement-menu))) ;;; Pack -(defun current-group-pack-up () - "Pack the current group up" - (with-movement (pack-group-up *current-child* (find-father-group *current-child* *current-root*)))) - -(defun current-group-pack-down () - "Pack the current group down" - (with-movement (pack-group-down *current-child* (find-father-group *current-child* *current-root*)))) - -(defun current-group-pack-left () - "Pack the current group left" - (with-movement (pack-group-left *current-child* (find-father-group *current-child* *current-root*)))) - -(defun current-group-pack-right () - "Pack the current group right" - (with-movement (pack-group-right *current-child* (find-father-group *current-child* *current-root*)))) +(defun current-frame-pack-up () + "Pack the current frame up" + (with-movement (pack-frame-up *current-child* (find-father-frame *current-child* *current-root*)))) + +(defun current-frame-pack-down () + "Pack the current frame down" + (with-movement (pack-frame-down *current-child* (find-father-frame *current-child* *current-root*)))) + +(defun current-frame-pack-left () + "Pack the current frame left" + (with-movement (pack-frame-left *current-child* (find-father-frame *current-child* *current-root*)))) + +(defun current-frame-pack-right () + "Pack the current frame right" + (with-movement (pack-frame-right *current-child* (find-father-frame *current-child* *current-root*)))) ;;; Center -(defun center-current-group () - "Center the current group" - (with-movement (center-group *current-child*))) +(defun center-current-frame () + "Center the current frame" + (with-movement (center-frame *current-child*))) ;;; Fill -(defun current-group-fill-up () - "Fill the current group up" - (with-movement (fill-group-up *current-child* (find-father-group *current-child* *current-root*)))) - -(defun current-group-fill-down () - "Fill the current group down" - (with-movement (fill-group-down *current-child* (find-father-group *current-child* *current-root*)))) - -(defun current-group-fill-left () - "Fill the current group left" - (with-movement (fill-group-left *current-child* (find-father-group *current-child* *current-root*)))) - -(defun current-group-fill-right () - "Fill the current group right" - (with-movement (fill-group-right *current-child* (find-father-group *current-child* *current-root*)))) +(defun current-frame-fill-up () + "Fill the current frame up" + (with-movement (fill-frame-up *current-child* (find-father-frame *current-child* *current-root*)))) + +(defun current-frame-fill-down () + "Fill the current frame down" + (with-movement (fill-frame-down *current-child* (find-father-frame *current-child* *current-root*)))) + +(defun current-frame-fill-left () + "Fill the current frame left" + (with-movement (fill-frame-left *current-child* (find-father-frame *current-child* *current-root*)))) + +(defun current-frame-fill-right () + "Fill the current frame right" + (with-movement (fill-frame-right *current-child* (find-father-frame *current-child* *current-root*)))) -(defun current-group-fill-all-dir () - "Fill the current group in all directions" +(defun current-frame-fill-all-dir () + "Fill the current frame in all directions" (with-movement - (let ((father (find-father-group *current-child* *current-root*))) - (fill-group-up *current-child* father) - (fill-group-down *current-child* father) - (fill-group-left *current-child* father) - (fill-group-right *current-child* father)))) + (let ((father (find-father-frame *current-child* *current-root*))) + (fill-frame-up *current-child* father) + (fill-frame-down *current-child* father) + (fill-frame-left *current-child* father) + (fill-frame-right *current-child* father)))) -(defun current-group-fill-vertical () - "Fill the current group vertically" +(defun current-frame-fill-vertical () + "Fill the current frame vertically" (with-movement - (let ((father (find-father-group *current-child* *current-root*))) - (fill-group-up *current-child* father) - (fill-group-down *current-child* father)))) + (let ((father (find-father-frame *current-child* *current-root*))) + (fill-frame-up *current-child* father) + (fill-frame-down *current-child* father)))) -(defun current-group-fill-horizontal () - "Fill the current group horizontally" +(defun current-frame-fill-horizontal () + "Fill the current frame horizontally" (with-movement - (let ((father (find-father-group *current-child* *current-root*))) - (fill-group-left *current-child* father) - (fill-group-right *current-child* father)))) + (let ((father (find-father-frame *current-child* *current-root*))) + (fill-frame-left *current-child* father) + (fill-frame-right *current-child* father)))) ;;; Resize -(defun current-group-resize-up () - "Resize the current group up to its half height" +(defun current-frame-resize-up () + "Resize the current frame up to its half height" (with-movement (resize-half-height-up *current-child*))) -(defun current-group-resize-down () - "Resize the current group down to its half height" +(defun current-frame-resize-down () + "Resize the current frame down to its half height" (with-movement (resize-half-height-down *current-child*))) -(defun current-group-resize-left () - "Resize the current group left to its half width" +(defun current-frame-resize-left () + "Resize the current frame left to its half width" (with-movement (resize-half-width-left *current-child*))) -(defun current-group-resize-right () - "Resize the current group right to its half width" +(defun current-frame-resize-right () + "Resize the current frame right to its half width" (with-movement (resize-half-width-right *current-child*))) -(defun current-group-resize-all-dir () - "Resize down the current group" - (with-movement (resize-group-down *current-child*))) - -(defun current-group-resize-all-dir-minimal () - "Resize down the current group to its minimal size" - (with-movement (resize-minimal-group *current-child*))) +(defun current-frame-resize-all-dir () + "Resize down the current frame" + (with-movement (resize-frame-down *current-child*))) + +(defun current-frame-resize-all-dir-minimal () + "Resize down the current frame to its minimal size" + (with-movement (resize-minimal-frame *current-child*))) @@ -198,42 +195,42 @@ (defun action-by-name-menu () "Actions by name menu" - (info-mode-menu '((#\f focus-group-by-name) - (#\o open-group-by-name) - (#\d delete-group-by-name) + (info-mode-menu '((#\f focus-frame-by-name) + (#\o open-frame-by-name) + (#\d delete-frame-by-name) (#\m move-current-child-by-name) (#\c copy-current-child-by-name)))) (defun action-by-number-menu () "Actions by number menu" - (info-mode-menu '((#\f focus-group-by-number) - (#\o open-group-by-number) - (#\d delete-group-by-number) + (info-mode-menu '((#\f focus-frame-by-number) + (#\o open-frame-by-number) + (#\d delete-frame-by-number) (#\m move-current-child-by-number) (#\c copy-current-child-by-number)))) -(defun group-info-menu () - "Group information menu" - (info-mode-menu '((#\s show-all-groups-info) - (#\h hide-all-groups-info)))) +(defun frame-info-menu () + "Frame information menu" + (info-mode-menu '((#\s show-all-frames-info) + (#\h hide-all-frames-info)))) -(defun group-menu () - "Group menu" - (info-mode-menu '((#\a group-adding-menu) - (#\l group-layout-menu) - (#\n group-nw-hook-menu) - (#\m group-movement-menu) +(defun frame-menu () + "Frame menu" + (info-mode-menu '((#\a frame-adding-menu) + (#\l frame-layout-menu) + (#\n frame-nw-hook-menu) + (#\m frame-movement-menu) (#\r rename-current-child) - (#\u renumber-current-group) - (#\i group-info-menu) - (#\x explode-current-group)))) + (#\u renumber-current-frame) + (#\i frame-info-menu) + (#\x explode-current-frame)))) (defun window-menu () "Window menu" - (info-mode-menu '((#\i force-window-in-group) - (#\c force-window-center-in-group)))) + (info-mode-menu '((#\i force-window-in-frame) + (#\c force-window-center-in-frame)))) @@ -255,7 +252,7 @@ (defun main-menu () "Open the main menu" - (info-mode-menu '((#\g group-menu) + (info-mode-menu '((#\f frame-menu) (#\w window-menu) (#\s selection-menu) (#\n action-by-name-menu) @@ -270,7 +267,7 @@ (define-second-key ("F1" :mod-1) 'help-on-second-mode) (define-second-key ("m") 'main-menu) -(define-second-key ("g") 'group-menu) +(define-second-key ("f") 'frame-menu) (define-second-key ("n") 'action-by-name-menu) (define-second-key ("u") 'action-by-number-menu) @@ -304,17 +301,17 @@ (define-second-key ("Tab" :mod-1) 'select-next-child) (define-second-key ("ISO_Left_Tab" :mod-1 :shift) 'select-previous-child) -(define-second-key ("Return" :mod-1) 'enter-group) -(define-second-key ("Return" :mod-1 :shift) 'leave-group) +(define-second-key ("Return" :mod-1) 'enter-frame) +(define-second-key ("Return" :mod-1 :shift) 'leave-frame) -(define-second-key ("Home" :mod-1) 'switch-to-root-group) -(define-second-key ("Home" :mod-1 :shift) 'switch-and-select-root-group) +(define-second-key ("Home" :mod-1) 'switch-to-root-frame) +(define-second-key ("Home" :mod-1 :shift) 'switch-and-select-root-frame) -(define-second-key ("Menu") 'toggle-show-root-group) +(define-second-key ("Menu") 'toggle-show-root-frame) (define-second-key (#\b :mod-1) 'banish-pointer) -(define-second-key (#\o) 'set-open-in-new-group-in-root-group-nw-hook) +(define-second-key (#\o) 'set-open-in-new-frame-in-root-frame-nw-hook) ;;;; Escape @@ -351,9 +348,9 @@ (define-shell (#\h) b-start-xclock "start an xclock" "exec xclock -d") -(define-second-key ("Menu") 'show-all-groups-info-key) -(define-second-key ("Menu" :shift) 'show-all-groups-info) -(define-second-key ("Menu" :control) 'toggle-show-root-group) +(define-second-key ("Menu") 'show-all-frames-info-key) +(define-second-key ("Menu" :shift) 'show-all-frames-info) +(define-second-key ("Menu" :control) 'toggle-show-root-frame) @@ -374,7 +371,7 @@ (defun sm-mouse-select-next-level (window root-x root-y) - "Select the next level in group" + "Select the next level in frame" (declare (ignore window root-x root-y)) (select-next-level)) @@ -382,23 +379,23 @@ (defun sm-mouse-select-previous-level (window root-x root-y) - "Select the previous level in group" + "Select the previous level in frame" (declare (ignore window root-x root-y)) (select-previous-level)) -(defun sm-mouse-enter-group (window root-x root-y) - "Enter in the selected group - ie make it the root group" +(defun sm-mouse-enter-frame (window root-x root-y) + "Enter in the selected frame - ie make it the root frame" (declare (ignore window root-x root-y)) - (enter-group)) + (enter-frame)) -(defun sm-mouse-leave-group (window root-x root-y) - "Leave the selected group - ie make its father the root group" +(defun sm-mouse-leave-frame (window root-x root-y) + "Leave the selected frame - ie make its father the root frame" (declare (ignore window root-x root-y)) - (leave-group)) + (leave-frame)) @@ -408,8 +405,8 @@ (define-second-mouse (4) 'sm-mouse-select-next-level) (define-second-mouse (5) 'sm-mouse-select-previous-level) -(define-second-mouse (4 :mod-1) 'sm-mouse-enter-group) -(define-second-mouse (5 :mod-1) 'sm-mouse-leave-group) +(define-second-mouse (4 :mod-1) 'sm-mouse-enter-frame) +(define-second-mouse (5 :mod-1) 'sm-mouse-leave-frame) @@ -420,31 +417,31 @@ ;;(define-second-key ("Escape" :control :shift) 'delete-current-window) ;;(define-second-key ("Escape" :mod-1 :control :shift) 'destroy-current-window) ;;(define-second-key ("Escape" :control) 'remove-current-window) -;;(define-second-key ("Escape" :shift) 'unhide-all-windows-in-current-group) +;;(define-second-key ("Escape" :shift) 'unhide-all-windows-in-current-frame) ;; ;; ;;;; Up -;;(define-second-key ("Up" :mod-1) 'circulate-group-up) -;;(define-second-key ("Up" :mod-1 :shift) 'circulate-group-up-move-window) -;;(define-second-key ("Up" :mod-1 :shift :control) 'circulate-group-up-copy-window) +;;(define-second-key ("Up" :mod-1) 'circulate-frame-up) +;;(define-second-key ("Up" :mod-1 :shift) 'circulate-frame-up-move-window) +;;(define-second-key ("Up" :mod-1 :shift :control) 'circulate-frame-up-copy-window) ;; ;; ;;;; Down -;;(define-second-key ("Down" :mod-1) 'circulate-group-down) -;;(define-second-key ("Down" :mod-1 :shift) 'circulate-group-down-move-window) -;;(define-second-key ("Down" :mod-1 :shift :control) 'circulate-group-down-copy-window) +;;(define-second-key ("Down" :mod-1) 'circulate-frame-down) +;;(define-second-key ("Down" :mod-1 :shift) 'circulate-frame-down-move-window) +;;(define-second-key ("Down" :mod-1 :shift :control) 'circulate-frame-down-copy-window) ;; ;; ;;;; Right ;;(define-second-key ("Right" :mod-1) 'circulate-workspace-up) -;;(define-second-key ("Right" :mod-1 :shift) 'circulate-workspace-up-move-group) -;;(define-second-key ("Right" :mod-1 :shift :control) 'circulate-workspace-up-copy-group) +;;(define-second-key ("Right" :mod-1 :shift) 'circulate-workspace-up-move-frame) +;;(define-second-key ("Right" :mod-1 :shift :control) 'circulate-workspace-up-copy-frame) ;; ;; ;;;; Left ;;(define-second-key ("Left" :mod-1) 'circulate-workspace-down) -;;(define-second-key ("Left" :mod-1 :shift) 'circulate-workspace-down-move-group) -;;(define-second-key ("Left" :mod-1 :shift :control) 'circulate-workspace-down-copy-group) +;;(define-second-key ("Left" :mod-1 :shift) 'circulate-workspace-down-move-frame) +;;(define-second-key ("Left" :mod-1 :shift :control) 'circulate-workspace-down-copy-frame) ;; ;; ;;(defmacro define-second-focus-workspace-by-number (key number) @@ -477,7 +474,7 @@ ;; ;;(define-second-key (#\b) 'banish-pointer) ;; -;;(define-second-key (#\b :mod-1) 'toggle-maximize-current-group) +;;(define-second-key (#\b :mod-1) 'toggle-maximize-current-frame) ;; ;;(define-second-key (#\x) 'pager-mode) ;; @@ -486,8 +483,8 @@ ;;(define-second-key (#\k) 'remove-current-window) ;; ;; -;;(define-second-key (#\g) 'create-new-default-group) -;;(define-second-key (#\g :mod-1) 'remove-current-group) +;;(define-second-key (#\g) 'create-new-default-frame) +;;(define-second-key (#\g :mod-1) 'remove-current-frame) ;; ;;(define-second-key (#\w) 'create-new-default-workspace) ;;(define-second-key (#\w :mod-1) 'remove-current-workspace) @@ -509,15 +506,15 @@ ;; ;; ;;(define-second-key (#\o :mod-1) -;; (defun b-open-next-window-in-new-group-once () -;; "Open the next window in a new group and all others in the same group" -;; (setf *open-next-window-in-new-group* :once) +;; (defun b-open-next-window-in-new-frame-once () +;; "Open the next window in a new frame and all others in the same frame" +;; (setf *open-next-window-in-new-frame* :once) ;; (leave-second-mode))) ;; ;;(define-second-key (#\o :mod-1 :control) -;; (defun b-open-next-window-in-new-group () -;; "Open each next window in a new group" -;; (setf *open-next-window-in-new-group* t) +;; (defun b-open-next-window-in-new-frame () +;; "Open each next window in a new frame" +;; (setf *open-next-window-in-new-frame* t) ;; (leave-second-mode))) ;; ;; @@ -538,8 +535,8 @@ ;;(define-shell (#\h) b-start-xclock "start an xclock" "exec xclock -d") ;; ;; -;;(define-second-key (#\a) 'force-window-center-in-group) -;;(define-second-key (#\a :mod-1) 'force-window-in-group) +;;(define-second-key (#\a) 'force-window-center-in-frame) +;;(define-second-key (#\a :mod-1) 'force-window-in-frame) ;; ;; ;;(define-second-key (#\d :mod-1) @@ -554,145 +551,145 @@ ;; ;;(define-second-key (#\y) 'tile-current-workspace-to) ;;(define-second-key (#\y :mod-1) 'reconfigure-tile-workspace) -;;(define-second-key (#\y :control) 'explode-current-group) -;;(define-second-key (#\y :control :shift) 'implode-current-group) +;;(define-second-key (#\y :control) 'explode-current-frame) +;;(define-second-key (#\y :control :shift) 'implode-current-frame) ;; ;;;;;,----- -;;;;;| Moving/Resizing groups +;;;;;| Moving/Resizing frames ;;;;;`----- ;;(define-second-key (#\p) -;; (defun b-pack-group-on-next-arrow () -;; "Pack group on next arrow action" +;; (defun b-pack-frame-on-next-arrow () +;; "Pack frame on next arrow action" ;; (setf *arrow-action* :pack))) ;; ;; -;;(defun fill-group-in-all-directions () -;; "Fill group in all directions" -;; (fill-current-group-up) -;; (fill-current-group-left) -;; (fill-current-group-right) -;; (fill-current-group-down)) +;;(defun fill-frame-in-all-directions () +;; "Fill frame in all directions" +;; (fill-current-frame-up) +;; (fill-current-frame-left) +;; (fill-current-frame-right) +;; (fill-current-frame-down)) ;; ;; ;;(define-second-key (#\f) -;; (defun b-fill-group () -;; "Fill group on next arrow action (fill in all directions on second f keypress)" +;; (defun b-fill-frame () +;; "Fill frame on next arrow action (fill in all directions on second f keypress)" ;; (case *arrow-action* -;; (:fill (fill-group-in-all-directions) +;; (:fill (fill-frame-in-all-directions) ;; (setf *arrow-action* nil)) ;; (t (setf *arrow-action* :fill))))) ;; -;;(define-second-key (#\f :mod-1) 'fill-group-in-all-directions) +;;(define-second-key (#\f :mod-1) 'fill-frame-in-all-directions) ;; ;;(define-second-key (#\f :shift) -;; (defun b-fill-group-vert () -;; "Fill group vertically" -;; (fill-current-group-up) -;; (fill-current-group-down))) +;; (defun b-fill-frame-vert () +;; "Fill frame vertically" +;; (fill-current-frame-up) +;; (fill-current-frame-down))) ;; ;;(define-second-key (#\f :control) -;; (defun b-fill-group-horiz () -;; "Fill group horizontally" -;; (fill-current-group-left) -;; (fill-current-group-right))) +;; (defun b-fill-frame-horiz () +;; "Fill frame horizontally" +;; (fill-current-frame-left) +;; (fill-current-frame-right))) ;; ;; ;;(define-second-key (#\r) ;; (defun b-resize-half () -;; "Resize group to its half width or heigth on next arraw action" +;; "Resize frame to its half width or heigth on next arraw action" ;; (setf *arrow-action* :resize-half))) ;; ;; -;;(define-second-key (#\l) 'resize-minimal-current-group) -;;(define-second-key (#\l :mod-1) 'resize-down-current-group) +;;(define-second-key (#\l) 'resize-minimal-current-frame) +;;(define-second-key (#\l :mod-1) 'resize-down-current-frame) ;; ;; -;;(define-second-key (#\m) 'center-current-group) +;;(define-second-key (#\m) 'center-current-frame) ;; ;; ;;(define-second-key ("Up") ;; (defun b-move-or-pack-up () -;; "Move, pack, fill or resize group up" +;; "Move, pack, fill or resize frame up" ;; (case *arrow-action* -;; (:pack (pack-current-group-up)) -;; (:fill (fill-current-group-up)) -;; (:resize-half (resize-half-height-up-current-group)) -;; (t (move-group (current-group) 0 -10))) +;; (:pack (pack-current-frame-up)) +;; (:fill (fill-current-frame-up)) +;; (:resize-half (resize-half-height-up-current-frame)) +;; (t (move-frame (current-frame) 0 -10))) ;; (setf *arrow-action* nil))) ;; ;;(define-second-key ("Down") ;; (defun b-move-or-pack-down () -;; "Move, pack, fill or resize group down" +;; "Move, pack, fill or resize frame down" ;; (case *arrow-action* -;; (:pack (pack-current-group-down)) -;; (:fill (fill-current-group-down)) -;; (:resize-half (resize-half-height-down-current-group)) -;; (t (move-group (current-group) 0 +10))) +;; (:pack (pack-current-frame-down)) +;; (:fill (fill-current-frame-down)) +;; (:resize-half (resize-half-height-down-current-frame)) +;; (t (move-frame (current-frame) 0 +10))) ;; (setf *arrow-action* nil))) ;; ;;(define-second-key ("Right") ;; (defun b-move-or-pack-right () -;; "Move, pack, fill or resize group right" +;; "Move, pack, fill or resize frame right" ;; (case *arrow-action* -;; (:pack (pack-current-group-right)) -;; (:fill (fill-current-group-right)) -;; (:resize-half (resize-half-width-right-current-group)) -;; (t (move-group (current-group) +10 0))) +;; (:pack (pack-current-frame-right)) +;; (:fill (fill-current-frame-right)) +;; (:resize-half (resize-half-width-right-current-frame)) +;; (t (move-frame (current-frame) +10 0))) ;; (setf *arrow-action* nil))) ;; ;;(define-second-key ("Left") ;; (defun b-move-or-pack-left () -;; "Move, pack, fill or resize group left" +;; "Move, pack, fill or resize frame left" ;; (case *arrow-action* -;; (:pack (pack-current-group-left)) -;; (:fill (fill-current-group-left)) -;; (:resize-half (resize-half-width-left-current-group)) -;; (t (move-group (current-group) -10 0))) +;; (:pack (pack-current-frame-left)) +;; (:fill (fill-current-frame-left)) +;; (:resize-half (resize-half-width-left-current-frame)) +;; (t (move-frame (current-frame) -10 0))) ;; (setf *arrow-action* nil))) ;; ;; ;;(define-second-key ("Up" :shift) ;; (defun b-resize-up () -;; "Resize group up" -;; (resize-group (current-group) 0 -10))) +;; "Resize frame up" +;; (resize-frame (current-frame) 0 -10))) ;; ;;(define-second-key ("Down" :shift) ;; (defun b-resize-down () -;; "Resize group down" -;; (resize-group (current-group) 0 +10))) +;; "Resize frame down" +;; (resize-frame (current-frame) 0 +10))) ;; ;;(define-second-key ("Right" :shift) ;; (defun b-resize-right () -;; "Resize group right" -;; (resize-group (current-group) +10 0))) +;; "Resize frame right" +;; (resize-frame (current-frame) +10 0))) ;; ;;(define-second-key ("Left" :shift) ;; (defun b-resize-left () -;; "Resize group left" -;; (resize-group (current-group) -10 0))) +;; "Resize frame left" +;; (resize-frame (current-frame) -10 0))) ;; ;; ;;;;;,----- ;;;;;| Mouse second mode functions ;;;;;`----- -;;(defun select-group-under-mouse (root-x root-y) -;; (let ((group (find-group-under-mouse root-x root-y))) -;; (when group +;;(defun select-frame-under-mouse (root-x root-y) +;; (let ((frame (find-frame-under-mouse root-x root-y))) +;; (when frame ;; (no-focus) -;; (focus-group group (current-workspace)) +;; (focus-frame frame (current-workspace)) ;; (focus-window (current-window)) -;; (show-all-group (current-workspace) nil)))) +;; (show-all-frame (current-workspace) nil)))) ;; ;;(defun mouse-leave-second-mode-maximize (root-x root-y) -;; "Leave second mode and maximize current group" -;; (select-group-under-mouse root-x root-y) -;; (maximize-group (current-group)) +;; "Leave second mode and maximize current frame" +;; (select-frame-under-mouse root-x root-y) +;; (maximize-frame (current-frame)) ;; (show-all-windows-in-workspace (current-workspace)) ;; (throw 'exit-second-loop nil)) ;; ;;(defun mouse-leave-second-mode (root-x root-y) ;; "Leave second mode" -;; (select-group-under-mouse root-x root-y) +;; (select-frame-under-mouse root-x root-y) ;; (show-all-windows-in-workspace (current-workspace)) ;; (throw 'exit-second-loop nil)) ;; @@ -729,160 +726,160 @@ ;;(defun init-motion-vars () ;; (setf *motion-action* nil ;; *motion-object* nil -;; *motion-start-group* nil +;; *motion-start-frame* nil ;; *motion-dx* nil ;; *motion-dy* nil)) ;; ;; ;;(let ((accept-motion t) -;; (selected-group nil)) +;; (selected-frame nil)) ;; (defun mouse-motion (root-x root-y) -;; "Move or resize group. Move window from a group to another. +;; "Move or resize frame. Move window from a frame to another. ;;Go to top left or rigth corner to change workspaces." -;; (let ((group (find-group-under-mouse root-x root-y))) -;; (unless (equal selected-group group) -;; (select-group-under-mouse root-x root-y) -;; (setf selected-group group))) +;; (let ((frame (find-frame-under-mouse root-x root-y))) +;; (unless (equal selected-frame frame) +;; (select-frame-under-mouse root-x root-y) +;; (setf selected-frame frame))) ;; (if (<= root-y 5) ;; (cond ((and accept-motion (<= root-x 5)) ;; (case *motion-action* -;; (:move-group -;; (remove-group-in-workspace *motion-object* (current-workspace)))) +;; (:move-frame +;; (remove-frame-in-workspace *motion-object* (current-workspace)))) ;; (circulate-workspace-down) -;; (minimize-group (current-group)) +;; (minimize-frame (current-frame)) ;; (case *motion-action* -;; (:move-group -;; (add-group-in-workspace *motion-object* (current-workspace)))) +;; (:move-frame +;; (add-frame-in-workspace *motion-object* (current-workspace)))) ;; (warp-pointer *root* (1- (xlib:screen-width *screen*)) 100) ;; (setf accept-motion nil)) ;; ((and accept-motion (>= root-x (- (xlib:screen-width *screen*) 5))) ;; (case *motion-action* -;; (:move-group -;; (remove-group-in-workspace *motion-object* (current-workspace)))) +;; (:move-frame +;; (remove-frame-in-workspace *motion-object* (current-workspace)))) ;; (circulate-workspace-up) -;; (minimize-group (current-group)) +;; (minimize-frame (current-frame)) ;; (case *motion-action* -;; (:move-group -;; (add-group-in-workspace *motion-object* (current-workspace)))) +;; (:move-frame +;; (add-frame-in-workspace *motion-object* (current-workspace)))) ;; (warp-pointer *root* 0 100) ;; (setf accept-motion nil)) ;; (t (setf accept-motion t))) ;; (setf accept-motion t)) ;; (case *motion-action* -;; (:move-group -;; (hide-group *root* *motion-object*) -;; (setf (group-x *motion-object*) (+ root-x *motion-dx*) -;; (group-y *motion-object*) (+ root-y *motion-dy*)) -;; (show-group *root* *root-gc* *motion-object*) -;; (adapt-all-window-in-group *motion-object*) -;; (show-all-group (current-workspace) nil)) -;; (:resize-group -;; (hide-group *root* *motion-object*) -;; (setf (group-width *motion-object*) (max (+ (group-width *motion-object*) (- root-x *motion-dx*)) 100) -;; (group-height *motion-object*) (max (+ (group-height *motion-object*) (- root-y *motion-dy*)) 100) +;; (:move-frame +;; (hide-frame *root* *motion-object*) +;; (setf (frame-x *motion-object*) (+ root-x *motion-dx*) +;; (frame-y *motion-object*) (+ root-y *motion-dy*)) +;; (show-frame *root* *root-gc* *motion-object*) +;; (adapt-all-window-in-frame *motion-object*) +;; (show-all-frame (current-workspace) nil)) +;; (:resize-frame +;; (hide-frame *root* *motion-object*) +;; (setf (frame-width *motion-object*) (max (+ (frame-width *motion-object*) (- root-x *motion-dx*)) 100) +;; (frame-height *motion-object*) (max (+ (frame-height *motion-object*) (- root-y *motion-dy*)) 100) ;; *motion-dx* root-x *motion-dy* root-y) -;; (show-group *root* *root-gc* *motion-object*) -;; (adapt-all-window-in-group *motion-object*) -;; (show-all-group (current-workspace) nil))))) +;; (show-frame *root* *root-gc* *motion-object*) +;; (adapt-all-window-in-frame *motion-object*) +;; (show-all-frame (current-workspace) nil))))) ;; ;; ;; -;;(defun move-selected-group (root-x root-y) -;; "Move selected group or create a new group on the root window" -;; (select-group-under-mouse root-x root-y) -;; (setf *motion-object* (find-group-under-mouse root-x root-y)) +;;(defun move-selected-frame (root-x root-y) +;; "Move selected frame or create a new frame on the root window" +;; (select-frame-under-mouse root-x root-y) +;; (setf *motion-object* (find-frame-under-mouse root-x root-y)) ;; (if *motion-object* -;; (setf *motion-action* :move-group -;; *motion-dx* (- (group-x *motion-object*) root-x) -;; *motion-dy* (- (group-y *motion-object*) root-y)) +;; (setf *motion-action* :move-frame +;; *motion-dx* (- (frame-x *motion-object*) root-x) +;; *motion-dy* (- (frame-y *motion-object*) root-y)) ;; (progn -;; (setf *motion-object* (make-group :x root-x :y root-y :width 100 :height 100 :fullscreenp nil)) +;; (setf *motion-object* (make-frame :x root-x :y root-y :width 100 :height 100 :fullscreenp nil)) ;; (warp-pointer *root* (+ root-x 100) (+ root-y 100)) -;; (add-group-in-workspace *motion-object* (current-workspace)) -;; (show-all-group (current-workspace)) -;; (setf *motion-action* :resize-group +;; (add-frame-in-workspace *motion-object* (current-workspace)) +;; (show-all-frame (current-workspace)) +;; (setf *motion-action* :resize-frame ;; *motion-dx* (+ root-x 100) ;; *motion-dy* (+ root-y 100))))) ;; ;; ;; -;;(defun copy-selected-group (root-x root-y) -;; "Copy selected group" +;;(defun copy-selected-frame (root-x root-y) +;; "Copy selected frame" ;; (xgrab-pointer *root* 50 51) -;; (select-group-under-mouse root-x root-y) -;; (setf *motion-object* (find-group-under-mouse root-x root-y)) +;; (select-frame-under-mouse root-x root-y) +;; (setf *motion-object* (find-frame-under-mouse root-x root-y)) ;; (when *motion-object* -;; (setf *motion-action* :copy-group -;; *motion-object* (copy-group *motion-object*) -;; *motion-dx* (- (group-x *motion-object*) root-x) -;; *motion-dy* (- (group-y *motion-object*) root-y)))) -;;;; (add-group-in-workspace *motion-object* (current-workspace)))) +;; (setf *motion-action* :copy-frame +;; *motion-object* (copy-frame *motion-object*) +;; *motion-dx* (- (frame-x *motion-object*) root-x) +;; *motion-dy* (- (frame-y *motion-object*) root-y)))) +;;;; (add-frame-in-workspace *motion-object* (current-workspace)))) ;; ;; ;; -;;(defun release-move-selected-group (root-x root-y) +;;(defun release-move-selected-frame (root-x root-y) ;; "Release button" ;; (when *motion-object* ;; (case *motion-action* -;; (:move-group -;; (move-group-to *motion-object* (+ root-x *motion-dx*) (+ root-y *motion-dy*))) -;; (:resize-group -;; (resize-group *motion-object* 0 0)))) +;; (:move-frame +;; (move-frame-to *motion-object* (+ root-x *motion-dx*) (+ root-y *motion-dy*))) +;; (:resize-frame +;; (resize-frame *motion-object* 0 0)))) ;; (init-motion-vars) -;; (select-group-under-mouse root-x root-y)) +;; (select-frame-under-mouse root-x root-y)) ;; ;; -;;(defun release-copy-selected-group (root-x root-y) +;;(defun release-copy-selected-frame (root-x root-y) ;; "Release button" ;; (xgrab-pointer *root* 66 67) ;; (when *motion-object* -;; (unless (group-windows-already-in-workspace *motion-object* (current-workspace)) -;; (add-group-in-workspace *motion-object* (current-workspace)) -;; (move-group-to *motion-object* (+ root-x *motion-dx*) (+ root-y *motion-dy*)))) +;; (unless (frame-windows-already-in-workspace *motion-object* (current-workspace)) +;; (add-frame-in-workspace *motion-object* (current-workspace)) +;; (move-frame-to *motion-object* (+ root-x *motion-dx*) (+ root-y *motion-dy*)))) ;; (init-motion-vars) -;; (select-group-under-mouse root-x root-y) +;; (select-frame-under-mouse root-x root-y) ;; (show-all-windows-in-workspace (current-workspace))) ;; ;; ;; -;;(defun resize-selected-group (root-x root-y) -;; "Resize selected group" -;; (select-group-under-mouse root-x root-y) -;; (setf *motion-object* (find-group-under-mouse root-x root-y)) +;;(defun resize-selected-frame (root-x root-y) +;; "Resize selected frame" +;; (select-frame-under-mouse root-x root-y) +;; (setf *motion-object* (find-frame-under-mouse root-x root-y)) ;; (when *motion-object* -;; (setf *motion-action* :resize-group +;; (setf *motion-action* :resize-frame ;; *motion-dx* root-x ;; *motion-dy* root-y))) ;; ;; -;;(defun release-resize-selected-group (root-x root-y) +;;(defun release-resize-selected-frame (root-x root-y) ;; "Release button" ;; (when *motion-object* -;; (resize-group *motion-object* 0 0)) +;; (resize-frame *motion-object* 0 0)) ;; (init-motion-vars) -;; (select-group-under-mouse root-x root-y)) +;; (select-frame-under-mouse root-x root-y)) ;; ;; ;; ;;(defun move-selected-window (root-x root-y) ;; "Move selected window" ;; (xgrab-pointer *root* 50 51) -;; (select-group-under-mouse root-x root-y) +;; (select-frame-under-mouse root-x root-y) ;; (setf *motion-object* (current-window) ;; *motion-action* :move-window) ;; (when *motion-object* -;; (setf *motion-start-group* (current-group)))) +;; (setf *motion-start-frame* (current-frame)))) ;; ;; ;;(defun release-move-selected-window (root-x root-y) ;; "Release button" ;; (xgrab-pointer *root* 66 67) -;; (select-group-under-mouse root-x root-y) +;; (select-frame-under-mouse root-x root-y) ;; (when *motion-object* -;; (remove-window-in-group *motion-object* *motion-start-group*) -;; (add-window-in-group *motion-object* (current-group))) +;; (remove-window-in-frame *motion-object* *motion-start-frame*) +;; (add-window-in-frame *motion-object* (current-frame))) ;; (init-motion-vars) -;; (select-group-under-mouse root-x root-y) +;; (select-frame-under-mouse root-x root-y) ;; (show-all-windows-in-workspace (current-workspace))) ;; ;; @@ -895,12 +892,12 @@ ;;(defun release-copy-selected-window (root-x root-y) ;; "Release button" ;; (xgrab-pointer *root* 66 67) -;; (select-group-under-mouse root-x root-y) +;; (select-frame-under-mouse root-x root-y) ;; (when *motion-object* ;; (unless (window-already-in-workspace *motion-object* (current-workspace)) -;; (add-window-in-group *motion-object* (current-group)))) +;; (add-window-in-frame *motion-object* (current-frame)))) ;; (init-motion-vars) -;; (select-group-under-mouse root-x root-y) +;; (select-frame-under-mouse root-x root-y) ;; (show-all-windows-in-workspace (current-workspace))) ;; ;; @@ -908,9 +905,9 @@ ;; ;; ;; -;;(define-second-mouse (1) 'move-selected-group 'release-move-selected-group) -;;(define-second-mouse (1 :mod-1) 'resize-selected-group 'release-resize-selected-group) -;;(define-second-mouse (1 :control) 'copy-selected-group 'release-copy-selected-group) +;;(define-second-mouse (1) 'move-selected-frame 'release-move-selected-frame) +;;(define-second-mouse (1 :mod-1) 'resize-selected-frame 'release-resize-selected-frame) +;;(define-second-mouse (1 :control) 'copy-selected-frame 'release-copy-selected-frame) ;; ;;(define-second-mouse (2) nil 'mouse-leave-second-mode-maximize) ;;(define-second-mouse (2 :control) nil 'mouse-leave-second-mode) Modified: clfswm/src/bindings.lisp ============================================================================== --- clfswm/src/bindings.lisp (original) +++ clfswm/src/bindings.lisp Tue Mar 25 18:02:17 2008 @@ -49,16 +49,16 @@ (define-main-key ("Tab" :mod-1) 'select-next-child) (define-main-key ("ISO_Left_Tab" :mod-1 :shift) 'select-previous-child) -(define-main-key ("Return" :mod-1) 'enter-group) -(define-main-key ("Return" :mod-1 :shift) 'leave-group) +(define-main-key ("Return" :mod-1) 'enter-frame) +(define-main-key ("Return" :mod-1 :shift) 'leave-frame) -(define-main-key ("Home" :mod-1) 'switch-to-root-group) -(define-main-key ("Home" :mod-1 :shift) 'switch-and-select-root-group) +(define-main-key ("Home" :mod-1) 'switch-to-root-frame) +(define-main-key ("Home" :mod-1 :shift) 'switch-and-select-root-frame) -(define-main-key ("Menu") 'show-all-groups-info-key) -(define-main-key ("Menu" :shift) 'show-all-groups-info) -(define-main-key ("Menu" :control) 'toggle-show-root-group) +(define-main-key ("Menu") 'show-all-frames-info-key) +(define-main-key ("Menu" :shift) 'show-all-frames-info) +(define-main-key ("Menu" :control) 'toggle-show-root-frame) (define-main-key (#\b :mod-1) 'banish-pointer) @@ -81,16 +81,16 @@ ;;; Mouse actions (defun mouse-click-to-focus (window root-x root-y) - "Focus the current group or the current window father" + "Focus the current frame or the current window father" (declare (ignore root-x root-y)) (let ((to-replay t) (child window) - (father (find-father-group window *current-root*))) + (father (find-father-frame window *current-root*))) (unless father - (setf child (find-group-window window *current-root*) - father (find-father-group child *current-root*))) - (when (and child father (focus-all-childs child father)) - (show-all-childs) + (setf child (find-frame-window window *current-root*) + father (find-father-frame child *current-root*))) + (when (and child father (focus-all-children child father)) + (show-all-children) (setf to-replay nil)) (if to-replay (replay-button-event) @@ -104,41 +104,41 @@ (defun mouse-select-next-level (window root-x root-y) - "Select the next level in group" + "Select the next level in frame" (declare (ignore root-x root-y)) - (let ((group (find-group-window window))) - (when (or group (xlib:window-equal window *root*)) + (let ((frame (find-frame-window window))) + (when (or frame (xlib:window-equal window *root*)) (select-next-level)) (replay-button-event))) (defun mouse-select-previous-level (window root-x root-y) - "Select the previous level in group" + "Select the previous level in frame" (declare (ignore root-x root-y)) - (let ((group (find-group-window window))) - (when (or group (xlib:window-equal window *root*)) + (let ((frame (find-frame-window window))) + (when (or frame (xlib:window-equal window *root*)) (select-previous-level)) (replay-button-event))) -(defun mouse-enter-group (window root-x root-y) - "Enter in the selected group - ie make it the root group" +(defun mouse-enter-frame (window root-x root-y) + "Enter in the selected frame - ie make it the root frame" (declare (ignore root-x root-y)) - (let ((group (find-group-window window))) - (when (or group (xlib:window-equal window *root*)) - (enter-group)) + (let ((frame (find-frame-window window))) + (when (or frame (xlib:window-equal window *root*)) + (enter-frame)) (replay-button-event))) -(defun mouse-leave-group (window root-x root-y) - "Leave the selected group - ie make its father the root group" +(defun mouse-leave-frame (window root-x root-y) + "Leave the selected frame - ie make its father the root frame" (declare (ignore root-x root-y)) - (let ((group (find-group-window window))) - (when (or group (xlib:window-equal window *root*)) - (leave-group)) + (let ((frame (find-frame-window window))) + (when (or frame (xlib:window-equal window *root*)) + (leave-frame)) (replay-button-event))) @@ -147,8 +147,8 @@ (define-main-mouse (4) 'mouse-select-next-level) (define-main-mouse (5) 'mouse-select-previous-level) -(define-main-mouse (4 :mod-1) 'mouse-enter-group) -(define-main-mouse (5 :mod-1) 'mouse-leave-group) +(define-main-mouse (4 :mod-1) 'mouse-enter-frame) +(define-main-mouse (5 :mod-1) 'mouse-leave-frame) ;;(define-main-mouse (1) 'handle-click-to-focus 'test-mouse-binding) ;;(define-main-mouse ('motion) 'test-mouse-binding) @@ -156,7 +156,7 @@ ;;(define-main-key ("a") (lambda () ;; (dbg 'key-a) -;; (show-all-childs *root-group*))) +;; (show-all-children *root-frame*))) ;; ;;(define-main-key ("b") (lambda () ;; (dbg 'key-b) @@ -200,37 +200,37 @@ ;;(define-main-key ("Tab" :mod-1 :shift) 'rotate-window-down) ;; ;;(define-main-key (#\b :mod-1) 'banish-pointer) -;;(define-main-key (#\b :mod-1 :control) 'toggle-maximize-current-group) +;;(define-main-key (#\b :mod-1 :control) 'toggle-maximize-current-frame) ;; ;;;; Escape ;;(define-main-key ("Escape" :control :shift) 'delete-current-window) ;;(define-main-key ("Escape" :mod-1 :control :shift) 'destroy-current-window) ;;(define-main-key ("Escape" :control) 'remove-current-window) -;;(define-main-key ("Escape" :shift) 'unhide-all-windows-in-current-group) +;;(define-main-key ("Escape" :shift) 'unhide-all-windows-in-current-frame) ;; ;; ;;;; Up -;;(define-main-key ("Up" :mod-1) 'circulate-group-up) -;;(define-main-key ("Up" :mod-1 :shift) 'circulate-group-up-move-window) -;;(define-main-key ("Up" :mod-1 :shift :control) 'circulate-group-up-copy-window) +;;(define-main-key ("Up" :mod-1) 'circulate-frame-up) +;;(define-main-key ("Up" :mod-1 :shift) 'circulate-frame-up-move-window) +;;(define-main-key ("Up" :mod-1 :shift :control) 'circulate-frame-up-copy-window) ;; ;; ;;;; Down -;;(define-main-key ("Down" :mod-1) 'circulate-group-down) -;;(define-main-key ("Down" :mod-1 :shift) 'circulate-group-down-move-window) -;;(define-main-key ("Down" :mod-1 :shift :control) 'circulate-group-down-copy-window) +;;(define-main-key ("Down" :mod-1) 'circulate-frame-down) +;;(define-main-key ("Down" :mod-1 :shift) 'circulate-frame-down-move-window) +;;(define-main-key ("Down" :mod-1 :shift :control) 'circulate-frame-down-copy-window) ;; ;; ;;;; Right ;;(define-main-key ("Right" :mod-1) 'circulate-workspace-up) -;;(define-main-key ("Right" :mod-1 :shift) 'circulate-workspace-up-move-group) -;;(define-main-key ("Right" :mod-1 :shift :control) 'circulate-workspace-up-copy-group) +;;(define-main-key ("Right" :mod-1 :shift) 'circulate-workspace-up-move-frame) +;;(define-main-key ("Right" :mod-1 :shift :control) 'circulate-workspace-up-copy-frame) ;; ;; ;;;; Left ;;(define-main-key ("Left" :mod-1) 'circulate-workspace-down) -;;(define-main-key ("Left" :mod-1 :shift) 'circulate-workspace-down-move-group) -;;(define-main-key ("Left" :mod-1 :shift :control) 'circulate-workspace-down-copy-group) +;;(define-main-key ("Left" :mod-1 :shift) 'circulate-workspace-down-move-frame) +;;(define-main-key ("Left" :mod-1 :shift :control) 'circulate-workspace-down-copy-frame) ;; ;; ;; Modified: clfswm/src/clfswm-info.lisp ============================================================================== --- clfswm/src/clfswm-info.lisp (original) +++ clfswm/src/clfswm-info.lisp Tue Mar 25 18:02:17 2008 @@ -317,6 +317,13 @@ +(defun keys-from-list (list) + "Produce a key menu based on list item" + (loop for l in list + for i from 0 + collect (list (code-char (+ (char-code #\a) i)) l))) + + ;;;,----- ;;;| CONFIG - Info mode functions ;;;`----- Modified: clfswm/src/clfswm-internal.lisp ============================================================================== --- clfswm/src/clfswm-internal.lisp (original) +++ clfswm/src/clfswm-internal.lisp Tue Mar 25 18:02:17 2008 @@ -43,31 +43,31 @@ -(defgeneric group-p (group)) -(defmethod group-p ((group group)) - (declare (ignore group)) +(defgeneric frame-p (frame)) +(defmethod frame-p ((frame frame)) + (declare (ignore frame)) t) -(defmethod group-p (group) - (declare (ignore group)) +(defmethod frame-p (frame) + (declare (ignore frame)) nil) -;;; Group data manipulation functions -(defun group-data-slot (group slot) +;;; Frame data manipulation functions +(defun frame-data-slot (frame slot) "Return the value associated to data slot" - (when (group-p group) - (second (assoc slot (group-data group))))) + (when (frame-p frame) + (second (assoc slot (frame-data frame))))) -(defun set-group-data-slot (group slot value) +(defun set-frame-data-slot (frame slot value) "Set the value associated to data slot" - (when (group-p group) - (with-slots (data) group + (when (frame-p frame) + (with-slots (data) frame (setf data (remove (assoc slot data) data)) (push (list slot value) data)) value)) -(defsetf group-data-slot set-group-data-slot) +(defsetf frame-data-slot set-frame-data-slot) @@ -79,8 +79,8 @@ (defmethod child-name ((child xlib:window)) (xlib:wm-name child)) -(defmethod child-name ((child group)) - (group-name child)) +(defmethod child-name ((child frame)) + (frame-name child)) (defmethod child-name (child) (declare (ignore child)) @@ -90,8 +90,8 @@ (defgeneric rename-child (child name)) -(defmethod rename-child ((child group) name) - (setf (group-name child) name)) +(defmethod rename-child ((child frame) name) + (setf (frame-name child) name)) (defmethod rename-child ((child xlib:window) name) (setf (xlib:wm-name child) name)) @@ -101,66 +101,66 @@ -;; (with-all-childs (*root-group* child) (typecase child (xlib:window (print child)) (group (print (group-number child))))) -(defmacro with-all-childs ((root child) &body body) +;; (with-all-children (*root-frame* child) (typecase child (xlib:window (print child)) (frame (print (frame-number child))))) +(defmacro with-all-children ((root child) &body body) (let ((rec (gensym)) (sub-child (gensym))) `(labels ((,rec (,child) , at body - (when (group-p ,child) - (dolist (,sub-child (group-child ,child)) + (when (frame-p ,child) + (dolist (,sub-child (frame-child ,child)) (,rec ,sub-child))))) (,rec ,root)))) -;; (with-all-group (*root-group* group) (print (group-number group))) -(defmacro with-all-groups ((root group) &body body) +;; (with-all-frames (*root-frame* frame) (print (frame-number frame))) +(defmacro with-all-frames ((root frame) &body body) (let ((rec (gensym)) (child (gensym))) - `(labels ((,rec (,group) - (when (group-p ,group) + `(labels ((,rec (,frame) + (when (frame-p ,frame) , at body - (dolist (,child (group-child ,group)) + (dolist (,child (frame-child ,frame)) (,rec ,child))))) (,rec ,root)))) -;; (with-all-windows (*root-group* window) (print window)) +;; (with-all-windows (*root-frame* window) (print window)) (defmacro with-all-windows ((root window) &body body) (let ((rec (gensym)) (child (gensym))) `(labels ((,rec (,window) (when (xlib:window-p ,window) , at body) - (when (group-p ,window) - (dolist (,child (group-child ,window)) + (when (frame-p ,window) + (dolist (,child (frame-child ,window)) (,rec ,child))))) (,rec ,root)))) -;; (with-all-groups-windows (*root-group* child) (print child) (print (group-number child))) -(defmacro with-all-windows-groups ((root child) body-window body-group) +;; (with-all-frames-windows (*root-frame* child) (print child) (print (frame-number child))) +(defmacro with-all-windows-frames ((root child) body-window body-frame) (let ((rec (gensym)) (sub-child (gensym))) `(labels ((,rec (,child) (typecase ,child (xlib:window ,body-window) - (group ,body-group - (dolist (,sub-child (group-child ,child)) + (frame ,body-frame + (dolist (,sub-child (frame-child ,child)) (,rec ,sub-child)))))) (,rec ,root)))) -(defun group-find-free-number () +(defun frame-find-free-number () (let ((all-numbers nil)) - (with-all-groups (*root-group* group) - (push (group-number group) all-numbers)) + (with-all-frames (*root-frame* frame) + (push (frame-number frame) all-numbers)) (find-free-number all-numbers))) -(defun create-group (&rest args &key (number (group-find-free-number)) &allow-other-keys) +(defun create-frame (&rest args &key (number (frame-find-free-number)) &allow-other-keys) (let* ((window (xlib:create-window :parent *root* :x 0 :y 0 @@ -176,12 +176,12 @@ :background (get-color "Black") :font *default-font* :line-style :solid))) - (apply #'make-instance 'group :number number :window window :gc gc args))) + (apply #'make-instance 'frame :number number :window window :gc gc args))) -(defun add-group (group father) - (push group (group-child father))) +(defun add-frame (frame father) + (push frame (frame-child father))) @@ -190,56 +190,56 @@ (defun get-current-child () "Return the current focused child" - (unless (equal *current-child* *root-group*) + (unless (equal *current-child* *root-frame*) (typecase *current-child* (xlib:window *current-child*) - (group (if (xlib:window-p (first (group-child *current-child*))) - (first (group-child *current-child*)) + (frame (if (xlib:window-p (first (frame-child *current-child*))) + (first (frame-child *current-child*)) *current-child*))))) (defun find-child (to-find root) - "Find to-find in root or in its childs" - (with-all-childs (root child) + "Find to-find in root or in its children" + (with-all-children (root child) (when (equal child to-find) (return-from find-child t)))) -(defun find-father-group (to-find &optional (root *root-group*)) - "Return the father group of to-find" - (with-all-groups (root group) - (when (member to-find (group-child group)) - (return-from find-father-group group)))) +(defun find-father-frame (to-find &optional (root *root-frame*)) + "Return the father frame of to-find" + (with-all-frames (root frame) + (when (member to-find (frame-child frame)) + (return-from find-father-frame frame)))) -(defun find-group-window (window &optional (root *root-group*)) - "Return the group with the window window" - (with-all-groups (root group) - (when (xlib:window-equal window (group-window group)) - (return-from find-group-window group)))) +(defun find-frame-window (window &optional (root *root-frame*)) + "Return the frame with the window window" + (with-all-frames (root frame) + (when (xlib:window-equal window (frame-window frame)) + (return-from find-frame-window frame)))) -(defun find-group-by-name (name) - "Find a group from its name" +(defun find-frame-by-name (name) + "Find a frame from its name" (when name - (with-all-groups (*root-group* group) - (when (string-equal name (group-name group)) - (return-from find-group-by-name group))))) + (with-all-frames (*root-frame* frame) + (when (string-equal name (frame-name frame)) + (return-from find-frame-by-name frame))))) -(defun find-group-by-number (number) - "Find a group from its number" +(defun find-frame-by-number (number) + "Find a frame from its number" (when (numberp number) - (with-all-groups (*root-group* group) - (when (= number (group-number group)) - (return-from find-group-by-number group))))) + (with-all-frames (*root-frame* frame) + (when (= number (frame-number frame)) + (return-from find-frame-by-number frame))))) -(defun get-all-windows (&optional (root *root-group*)) - "Return all windows in root and in its childs" +(defun get-all-windows (&optional (root *root-frame*)) + "Return all windows in root and in its children" (let ((acc nil)) (with-all-windows (root window) (push window acc)) @@ -256,20 +256,20 @@ -(defun display-group-info (group) +(defun display-frame-info (frame) (let ((dy (+ (xlib:max-char-ascent *default-font*) (xlib:max-char-descent *default-font*)))) - (with-slots (name number gc window child) group - (when (equal group *current-root*) + (with-slots (name number gc window child) frame + (when (equal frame *current-root*) (xlib:clear-area window)) - (setf (xlib:gcontext-foreground gc) (get-color (if (and (equal group *current-root*) - (equal group *current-child*)) + (setf (xlib:gcontext-foreground gc) (get-color (if (and (equal frame *current-root*) + (equal frame *current-child*)) "Red" "Green"))) (xlib:draw-image-glyphs window gc 5 dy - (format nil "Group: ~A~A " + (format nil "Frame: ~A~A " number (if name (format nil " - ~A" name) ""))) (let ((pos dy)) - (when (equal group *current-root*) + (when (equal frame *current-root*) (xlib:draw-image-glyphs window gc 5 (incf pos dy) (format nil "~A hidden windows " (length (get-hidden-windows)))) (when *child-selection* @@ -279,8 +279,8 @@ (dolist (child *child-selection*) (typecase child (xlib:window (format str "~A " (xlib:wm-name child))) - (group (format str "group:~A[~A] " (group-number child) - (aif (group-name child) it ""))))) + (frame (format str "frame:~A[~A] " (frame-number child) + (aif (frame-name child) it ""))))) (format str " "))))) (dolist (ch child) (when (xlib:window-p ch) @@ -296,8 +296,8 @@ (defun get-father-layout (child father) - (if (group-p father) - (aif (group-layout father) + (if (frame-p father) + (aif (frame-layout father) (funcall it child father) (no-layout child father)) (get-fullscreen-size))) @@ -315,11 +315,11 @@ (xlib:drawable-height window) nh) raise-p))) -(defmethod adapt-child-to-father ((group group) father) +(defmethod adapt-child-to-father ((frame frame) father) (with-xlib-protect (multiple-value-bind (nx ny nw nh raise-p) - (get-father-layout group father) - (with-slots (rx ry rw rh window) group + (get-father-layout frame father) + (with-slots (rx ry rw rh window) frame (setf rx nx ry ny rw nw rh nh) (setf (xlib:drawable-x window) rx (xlib:drawable-y window) ry @@ -332,21 +332,21 @@ (defgeneric show-child (child father)) (defgeneric hide-child (child)) -(defmethod show-child ((group group) father) +(defmethod show-child ((frame frame) father) (with-xlib-protect - (with-slots (window) group - (let ((raise-p (adapt-child-to-father group father))) - (when (or *show-root-group-p* (not (equal group *current-root*))) + (with-slots (window) frame + (let ((raise-p (adapt-child-to-father frame father))) + (when (or *show-root-frame-p* (not (equal frame *current-root*))) (setf (xlib:window-background window) (get-color "Black")) (xlib:map-window window) (when raise-p (raise-window window)) - (display-group-info group)))))) + (display-frame-info frame)))))) -(defmethod hide-child ((group group)) +(defmethod hide-child ((frame frame)) (with-xlib-protect - (with-slots (window) group + (with-slots (window) frame (xlib:unmap-window window)))) @@ -369,10 +369,10 @@ (defgeneric select-child (child selected)) -(defmethod select-child ((group group) selected) +(defmethod select-child ((frame frame) selected) (with-xlib-protect - (when (and (group-p group) (group-window group)) - (setf (xlib:window-border (group-window group)) + (when (and (frame-p frame) (frame-window frame)) + (setf (xlib:window-border (frame-window frame)) (get-color (cond ((equal selected :maybe) *color-maybe-selected*) ((equal selected nil) *color-unselected*) (selected *color-selected*))))))) @@ -384,7 +384,7 @@ ((equal selected nil) *color-unselected*) (selected *color-selected*)))))) -(defun select-current-group (selected) +(defun select-current-frame (selected) (select-child *current-child* selected)) @@ -393,7 +393,7 @@ (labels ((rec (child) (typecase child (xlib:window (focus-window child)) - (group (rec (first (group-child child))))))) + (frame (rec (first (frame-child child))))))) (no-focus) (rec *current-child*))) @@ -401,15 +401,15 @@ -(defun show-all-childs () - "Show all childs from *current-root*" +(defun show-all-children () + "Show all children from *current-root*" (labels ((rec (root father first-p) (show-child root father) (select-child root (if (equal root *current-child*) t (if first-p :maybe nil))) - (when (group-p root) - (let ((first-child (first (group-child root)))) - (dolist (child (reverse (group-child root))) + (when (frame-p root) + (let ((first-child (first (frame-child root)))) + (dolist (child (reverse (frame-child root))) (rec child root (and first-p (equal child first-child)))))))) (rec *current-root* nil t) (set-focus-to-current-child))) @@ -417,65 +417,65 @@ -(defun hide-all-childs (root) +(defun hide-all-children (root) (hide-child root) - (when (group-p root) - (dolist (child (group-child root)) - (hide-all-childs child)))) + (when (frame-p root) + (dolist (child (frame-child root)) + (hide-all-children child)))) (defun select-next/previous-brother (fun-rotate) - "Select the next/previous brother group" - (let ((group-is-root? (and (equal *current-root* *current-child*) - (not (equal *current-root* *root-group*))))) - (if group-is-root? - (hide-all-childs *current-root*) - (select-current-group nil)) - (let ((father (find-father-group *current-child*))) - (when (group-p father) + "Select the next/previous brother frame" + (let ((frame-is-root? (and (equal *current-root* *current-child*) + (not (equal *current-root* *root-frame*))))) + (if frame-is-root? + (hide-all-children *current-root*) + (select-current-frame nil)) + (let ((father (find-father-frame *current-child*))) + (when (frame-p father) (with-slots (child) father (setf child (funcall fun-rotate child)) (setf *current-child* (first child))))) - (when group-is-root? + (when frame-is-root? (setf *current-root* *current-child*)) - (show-all-childs))) + (show-all-children))) (defun select-next-brother () - "Select the next brother group" + "Select the next brother frame" (select-next/previous-brother #'anti-rotate-list)) (defun select-previous-brother () - "Select the previous brother group" + "Select the previous brother frame" (select-next/previous-brother #'rotate-list)) (defun select-next-level () - "Select the next level in group" - (select-current-group nil) - (when (group-p *current-child*) - (awhen (first (group-child *current-child*)) + "Select the next level in frame" + (select-current-frame nil) + (when (frame-p *current-child*) + (awhen (first (frame-child *current-child*)) (setf *current-child* it))) - (show-all-childs)) + (show-all-children)) (defun select-previous-level () - "Select the previous level in group" + "Select the previous level in frame" (unless (equal *current-child* *current-root*) - (select-current-group nil) - (awhen (find-father-group *current-child*) + (select-current-frame nil) + (awhen (find-father-frame *current-child*) (setf *current-child* it)) - (show-all-childs))) + (show-all-children))) (defun select-next/previous-child (fun-rotate) "Select the next/previous child" - (when (group-p *current-child*) + (when (frame-p *current-child*) (with-slots (child) *current-child* (setf child (funcall fun-rotate child))) - (show-all-childs))) + (show-all-children))) (defun select-next-child () @@ -488,49 +488,49 @@ -(defun enter-group () - "Enter in the selected group - ie make it the root group" - (hide-all-childs *current-root*) +(defun enter-frame () + "Enter in the selected frame - ie make it the root frame" + (hide-all-children *current-root*) (setf *current-root* *current-child*) - (show-all-childs)) + (show-all-children)) -(defun leave-group () - "Leave the selected group - ie make its father the root group" - (hide-all-childs *current-root*) - (awhen (find-father-group *current-root*) - (when (group-p it) +(defun leave-frame () + "Leave the selected frame - ie make its father the root frame" + (hide-all-children *current-root*) + (awhen (find-father-frame *current-root*) + (when (frame-p it) (setf *current-root* it))) - (show-all-childs)) + (show-all-children)) -(defun switch-to-root-group () - "Switch to the root group" - (hide-all-childs *current-root*) - (setf *current-root* *root-group*) - (show-all-childs)) - -(defun switch-and-select-root-group () - "Switch and select the root group" - (hide-all-childs *current-root*) - (setf *current-root* *root-group*) +(defun switch-to-root-frame () + "Switch to the root frame" + (hide-all-children *current-root*) + (setf *current-root* *root-frame*) + (show-all-children)) + +(defun switch-and-select-root-frame () + "Switch and select the root frame" + (hide-all-children *current-root*) + (setf *current-root* *root-frame*) (setf *current-child* *current-root*) - (show-all-childs)) + (show-all-children)) -(defun toggle-show-root-group () - "Show/Hide the root group" - (hide-all-childs *current-root*) - (setf *show-root-group-p* (not *show-root-group-p*)) - (show-all-childs)) +(defun toggle-show-root-frame () + "Show/Hide the root frame" + (hide-all-children *current-root*) + (setf *show-root-frame-p* (not *show-root-frame-p*)) + (show-all-children)) (defun focus-child (child father) "Focus child - Return true if something has change" - (when (and (group-p father) - (member child (group-child father))) - (when (not (equal child (first (group-child father)))) - (loop until (equal child (first (group-child father))) - do (setf (group-child father) (rotate-list (group-child father)))) + (when (and (frame-p father) + (member child (frame-child father))) + (when (not (equal child (first (frame-child father)))) + (loop until (equal child (first (frame-child father))) + do (setf (frame-child father) (rotate-list (frame-child father)))) t))) (defun focus-child-rec (child father) @@ -540,16 +540,16 @@ (when (focus-child child father) (setf change t)) (when father - (rec father (find-father-group father))))) + (rec father (find-father-frame father))))) (rec child father)) change)) (defun set-current-child (child father) "Set *current-child* to child - Return t if something has change" - (cond ((and (group-p child) (not (equal *current-child* child))) + (cond ((and (frame-p child) (not (equal *current-child* child))) (setf *current-child* child) t) - ((and (group-p father) (not (equal *current-child* father))) + ((and (frame-p father) (not (equal *current-child* father))) (setf *current-child* father) t))) @@ -559,8 +559,8 @@ (setf *current-root* father))) -(defun focus-all-childs (child father) - "Focus child and its fathers - Set current group to father" +(defun focus-all-children (child father) + "Focus child and its fathers - Set current frame to father" (let ((new-focus (focus-child-rec child father)) (new-current-child (set-current-child child father)) (new-root (set-current-root father))) @@ -568,27 +568,27 @@ -(defun remove-child-in-group (child group) - "Remove the child in group" - (when (group-p group) - (setf (group-child group) (remove child (group-child group) :test #'equal)))) - -(defun remove-child-in-groups (child root) - "Remove child in the group root and in all its childs" - (with-all-groups (root group) - (remove-child-in-group child group)) +(defun remove-child-in-frame (child frame) + "Remove the child in frame" + (when (frame-p frame) + (setf (frame-child frame) (remove child (frame-child frame) :test #'equal)))) + +(defun remove-child-in-frames (child root) + "Remove child in the frame root and in all its children" + (with-all-frames (root frame) + (remove-child-in-frame child frame)) (when (xlib:window-p child) (netwm-remove-in-client-list child))) -(defun remove-child-in-all-groups (child) - "Remove child in all groups from *root-group*" +(defun remove-child-in-all-frames (child) + "Remove child in all frames from *root-frame*" (when (equal child *current-root*) - (setf *current-root* (find-father-group child))) + (setf *current-root* (find-father-frame child))) (when (equal child *current-child*) (setf *current-child* *current-root*)) - (remove-child-in-groups child *root-group*)) + (remove-child-in-frames child *root-frame*)) @@ -608,33 +608,33 @@ (xlib:drawable-height window)))) (setf (xlib:drawable-width window) (min (max min-width rwidth) max-width) (xlib:drawable-height window) (min (max min-height rheight) max-height)) - (setf (xlib:drawable-x window) (truncate (+ (group-rx *current-child*) (/ (- (group-rw *current-child*) (xlib:drawable-width window)) 2))) - (xlib:drawable-y window) (truncate (+ (group-ry *current-child*) (/ (- (group-rh *current-child*) (xlib:drawable-height window)) 2))))))) + (setf (xlib:drawable-x window) (truncate (+ (frame-rx *current-child*) (/ (- (frame-rw *current-child*) (xlib:drawable-width window)) 2))) + (xlib:drawable-y window) (truncate (+ (frame-ry *current-child*) (/ (- (frame-rh *current-child*) (xlib:drawable-height window)) 2))))))) -;;(defun do-all-groups-nw-hook (window) -;; "Call nw-hook of each group. A hook must return one value or a list of two values. +;;(defun do-all-frames-nw-hook (window) +;; "Call nw-hook of each frame. A hook must return one value or a list of two values. ;;If the value or the first value is true then the default nw-hook is not executed. -;;If the second value is true then no more group can do an action with the window (ie leave the loop)." +;;If the second value is true then no more frame can do an action with the window (ie leave the loop)." ;; (let ((result nil)) -;; (with-all-groups (*root-group* group) -;; (let ((ret (call-hook (group-nw-hook group) (list group window)))) +;; (with-all-frames (*root-frame* frame) +;; (let ((ret (call-hook (frame-nw-hook frame) (list frame window)))) ;; (typecase ret ;; (cons (when (first ret) ;; (setf result t)) ;; (when (second ret) -;; (return-from do-all-groups-nw-hook result))) +;; (return-from do-all-frames-nw-hook result))) ;; (t (when ret ;; (setf result t)))))) ;; result)) -(defun do-all-groups-nw-hook (window) - "Call nw-hook of each group." +(defun do-all-frames-nw-hook (window) + "Call nw-hook of each frame." (let ((found nil)) - (with-all-groups (*root-group* group) - (awhen (group-nw-hook group) - (call-hook it (list group window)) + (with-all-frames (*root-frame* frame) + (awhen (frame-nw-hook frame) + (call-hook it (list frame window)) (setf found t))) found)) @@ -653,10 +653,10 @@ (:transient 1) (t 1))) (grab-all-buttons window) -;; (when (group-p *current-child*) ;; PHIL: Remove this!!! -;; (setf (group-nw-hook *current-child*) #'open-in-new-group-nw-hook)) - (unless (do-all-groups-nw-hook window) - (default-group-nw-hook nil window)) +;; (when (frame-p *current-child*) ;; PHIL: Remove this!!! +;; (setf (frame-nw-hook *current-child*) #'open-in-new-frame-nw-hook)) + (unless (do-all-frames-nw-hook window) + (default-frame-nw-hook nil window)) (netwm-add-in-client-list window))) Modified: clfswm/src/clfswm-layout.lisp ============================================================================== --- clfswm/src/clfswm-layout.lisp (original) +++ clfswm/src/clfswm-layout.lisp Tue Mar 25 18:02:17 2008 @@ -32,7 +32,7 @@ ;;; 1- define your own layout: a method returning the real size of the ;;; child in screen size (integer) as 5 values (rx, ry, rw, rh, raise-p). ;;; This method can use the float size of the child (x, y ,w , h). -;;; It can be specialised for xlib:window or group +;;; It can be specialised for xlib:window or frame ;;; 2- Define a seter function for your layout ;;; 3- Register your new layout with register-layout. @@ -42,38 +42,38 @@ ;;; Generic functions (defun set-layout (layout) "Set the layout of the current child" - (when (group-p *current-child*) - (setf (group-layout *current-child*) layout) + (when (frame-p *current-child*) + (setf (frame-layout *current-child*) layout) (leave-second-mode))) (defun get-managed-child (father) "Return only window in normal mode who can be tiled" - (when (group-p father) + (when (frame-p father) (remove-if #'(lambda (x) (and (xlib:window-p x) (not (eql (window-type x) :normal)))) - (group-child father)))) + (frame-child father)))) (defun register-layout (layout) (setf *layout-list* (append *layout-list* (list layout)))) (defun layout-ask-size (msg slot &optional (min 80)) - (when (group-p *current-child*) - (let ((new-size (/ (or (query-number msg (* (group-data-slot *current-child* slot) 100)) min) 100))) + (when (frame-p *current-child*) + (let ((new-size (/ (or (query-number msg (* (frame-data-slot *current-child* slot) 100)) min) 100))) (when (<= 0 new-size 1) - (setf (group-data-slot *current-child* slot) new-size))))) + (setf (frame-data-slot *current-child* slot) new-size))))) ;;; No layout (defgeneric no-layout (child father) - (:documentation "Maximize windows in there group - leave group to there size")) + (:documentation "Maximize windows in there frame - leave frame to there size (no layout)")) (defmethod no-layout ((child xlib:window) father) (with-slots (rx ry rw rh) father - (values (1+ rx) (1+ ry) (- rw 2) (- rh 2) nil))) + (values (1+ rx) (1+ ry) (- rw 2) (- rh 2) t))) -(defmethod no-layout ((child group) father) +(defmethod no-layout ((child frame) father) (with-slots ((cx x) (cy y) (cw w) (ch h)) child (with-slots ((frx rx) (fry ry) (frw rw) (frh rh)) father (values (round (+ (* cx frw) frx)) @@ -83,7 +83,7 @@ t)))) (defun set-no-layout () - "Maximize windows in there group - leave group to there size" + "Maximize windows in there frame - leave frame to there size (no layout)" (set-layout #'no-layout)) (register-layout 'set-no-layout) @@ -93,23 +93,23 @@ ;;; Tile layout (defgeneric tile-layout (child father) - (:documentation "Tile child in its group")) + (:documentation "Tile child in its frame")) (defmethod tile-layout (child father) - (let* ((managed-childs (get-managed-child father)) - (pos (position child managed-childs)) - (len (length managed-childs)) + (let* ((managed-children (get-managed-child father)) + (pos (position child managed-children)) + (len (length managed-children)) (n (ceiling (sqrt len))) - (dx (/ (group-rw father) n)) - (dy (/ (group-rh father) (ceiling (/ len n))))) - (values (round (+ (group-rx father) (truncate (* (mod pos n) dx)) 1)) - (round (+ (group-ry father) (truncate (* (truncate (/ pos n)) dy)) 1)) + (dx (/ (frame-rw father) n)) + (dy (/ (frame-rh father) (ceiling (/ len n))))) + (values (round (+ (frame-rx father) (truncate (* (mod pos n) dx)) 1)) + (round (+ (frame-ry father) (truncate (* (truncate (/ pos n)) dy)) 1)) (round (- dx 2)) (round (- dy 2)) nil))) (defun set-tile-layout () - "Tile child in its group" + "Tile child in its frame" (set-layout #'tile-layout)) (register-layout 'set-tile-layout) @@ -121,11 +121,11 @@ (defmethod tile-left-layout (child father) (with-slots (rx ry rw rh) father - (let* ((managed-childs (get-managed-child father)) - (pos (position child managed-childs)) - (len (max (1- (length managed-childs)) 1)) + (let* ((managed-children (get-managed-child father)) + (pos (position child managed-children)) + (len (max (1- (length managed-children)) 1)) (dy (/ rh len)) - (size (or (group-data-slot father :tile-size) 0.8))) + (size (or (frame-data-slot father :tile-size) 0.8))) (if (= pos 0) (values (1+ rx) (1+ ry) @@ -154,11 +154,11 @@ (defmethod tile-right-layout (child father) (with-slots (rx ry rw rh) father - (let* ((managed-childs (get-managed-child father)) - (pos (position child managed-childs)) - (len (max (1- (length managed-childs)) 1)) + (let* ((managed-children (get-managed-child father)) + (pos (position child managed-children)) + (len (max (1- (length managed-children)) 1)) (dy (/ rh len)) - (size (or (group-data-slot father :tile-size) 0.8))) + (size (or (frame-data-slot father :tile-size) 0.8))) (if (= pos 0) (values (1+ (round (+ rx (* rw (- 1 size))))) (1+ ry) @@ -189,11 +189,11 @@ (defmethod tile-top-layout (child father) (with-slots (rx ry rw rh) father - (let* ((managed-childs (get-managed-child father)) - (pos (position child managed-childs)) - (len (max (1- (length managed-childs)) 1)) + (let* ((managed-children (get-managed-child father)) + (pos (position child managed-children)) + (len (max (1- (length managed-children)) 1)) (dx (/ rw len)) - (size (or (group-data-slot father :tile-size) 0.8))) + (size (or (frame-data-slot father :tile-size) 0.8))) (if (= pos 0) (values (1+ rx) (1+ ry) @@ -222,11 +222,11 @@ (defmethod tile-bottom-layout (child father) (with-slots (rx ry rw rh) father - (let* ((managed-childs (get-managed-child father)) - (pos (position child managed-childs)) - (len (max (1- (length managed-childs)) 1)) + (let* ((managed-children (get-managed-child father)) + (pos (position child managed-children)) + (len (max (1- (length managed-children)) 1)) (dx (/ rw len)) - (size (or (group-data-slot father :tile-size) 0.8))) + (size (or (frame-data-slot father :tile-size) 0.8))) (if (= pos 0) (values (1+ rx) (1+ (round (+ ry (* rh (- 1 size))))) @@ -255,17 +255,17 @@ ;;; Space layout (defgeneric tile-space-layout (child father) - (:documentation "Tile Space: tile child in its group leaving spaces between them")) + (:documentation "Tile Space: tile child in its frame leaving spaces between them")) (defmethod tile-space-layout (child father) (with-slots (rx ry rw rh) father - (let* ((managed-childs (get-managed-child father)) - (pos (position child managed-childs)) - (len (length managed-childs)) + (let* ((managed-children (get-managed-child father)) + (pos (position child managed-children)) + (len (length managed-children)) (n (ceiling (sqrt len))) (dx (/ rw n)) (dy (/ rh (ceiling (/ len n)))) - (size (or (group-data-slot father :tile-space-size) 0.1))) + (size (or (frame-data-slot father :tile-space-size) 0.1))) (when (> size 0.5) (setf size 0.45)) (values (round (+ rx (truncate (* (mod pos n) dx)) (* dx size) 1)) (round (+ ry (truncate (* (truncate (/ pos n)) dy)) (* dy size) 1)) @@ -274,7 +274,7 @@ t)))) (defun set-space-tile-layout () - "Tile Space: tile child in its group leaving spaces between them" + "Tile Space: tile child in its frame leaving spaces between them" (layout-ask-size "Space size in percent (%)" :tile-space-size 10) (set-layout #'tile-space-layout)) Modified: clfswm/src/clfswm-nw-hooks.lisp ============================================================================== --- clfswm/src/clfswm-nw-hooks.lisp (original) +++ clfswm/src/clfswm-nw-hooks.lisp Tue Mar 25 18:02:17 2008 @@ -4,7 +4,7 @@ ;;; -------------------------------------------------------------------------- ;;; Documentation: New window Hooks ;;; -;;; Those hooks can be set for each group to manage new window when they are +;;; Those hooks can be set for each frame to manage new window when they are ;;; mapped. ;;; -------------------------------------------------------------------------- ;;; @@ -40,53 +40,53 @@ (defun set-nw-hook (hook) "Set the hook of the current child" - (let ((group (if (xlib:window-p *current-child*) - (find-father-group *current-child*) + (let ((frame (if (xlib:window-p *current-child*) + (find-father-frame *current-child*) *current-child*))) - (setf (group-nw-hook group) hook) + (setf (frame-nw-hook frame) hook) (leave-second-mode))) (defun register-nw-hook (hook) (setf *nw-hook-list* (append *nw-hook-list* (list hook)))) -(defun default-window-placement (group window) +(defun default-window-placement (frame window) (case (window-type window) - (:normal (adapt-child-to-father window group)) + (:normal (adapt-child-to-father window frame)) (t (place-window-from-hints window)))) -(defun leave-if-not-group (child) - "Leave the child if it's not a group" +(defun leave-if-not-frame (child) + "Leave the child if it's not a frame" (when (xlib:window-p child) - (leave-group) + (leave-frame) (select-previous-level))) -;;; Default group new window hook -(defun default-group-nw-hook (group window) - "Open the next window in the current group" - (declare (ignore group)) - (leave-if-not-group *current-child*) - (when (group-p *current-child*) - (pushnew window (group-child *current-child*))) +;;; Default frame new window hook +(defun default-frame-nw-hook (frame window) + "Open the next window in the current frame" + (declare (ignore frame)) + (leave-if-not-frame *current-child*) + (when (frame-p *current-child*) + (pushnew window (frame-child *current-child*))) (default-window-placement *current-child* window)) -(defun set-default-group-nw-hook () - "Open the next window in the current group" - (set-nw-hook #'default-group-nw-hook)) +(defun set-default-frame-nw-hook () + "Open the next window in the current frame" + (set-nw-hook #'default-frame-nw-hook)) -(register-nw-hook 'set-default-group-nw-hook) +(register-nw-hook 'set-default-frame-nw-hook) ;;; Open new window in current root hook -(defun open-in-current-root-nw-hook (group window) +(defun open-in-current-root-nw-hook (frame window) "Open the next window in the current root" - (leave-if-not-group *current-root*) - (pushnew window (group-child *current-root*)) - (setf *current-child* (first (group-child *current-root*))) + (leave-if-not-frame *current-root*) + (pushnew window (frame-child *current-root*)) + (setf *current-child* (first (frame-child *current-root*))) (default-window-placement *current-root* window) - (setf (group-nw-hook group) nil)) + (setf (frame-nw-hook frame) nil)) (defun set-open-in-current-root-nw-hook () "Open the next window in the current root" @@ -95,37 +95,37 @@ (register-nw-hook 'set-open-in-current-root-nw-hook) -;;; Open new window in a new group in the current root hook -(defun open-in-new-group-in-current-root-nw-hook (group window) - "Open the next window in a new group in the current root" - (leave-if-not-group *current-root*) - (let ((new-group (create-group))) - (pushnew new-group (group-child *current-root*)) - (pushnew window (group-child new-group)) - (setf *current-child* new-group) - (default-window-placement new-group window)) - (setf (group-nw-hook group) nil)) - -(defun set-open-in-new-group-in-current-root-nw-hook () - "Open the next window in a new group in the current root" - (set-nw-hook #'open-in-new-group-in-current-root-nw-hook)) - -(register-nw-hook 'set-open-in-new-group-in-current-root-nw-hook) - - -;;; Open new window in a new group in the root group hook -(defun open-in-new-group-in-root-group-nw-hook (group window) - "Open the next window in a new group in the root group" - (let ((new-group (create-group))) - (pushnew new-group (group-child *root-group*)) - (pushnew window (group-child new-group)) - (switch-to-root-group) - (setf *current-child* new-group) - (default-window-placement new-group window)) - (setf (group-nw-hook group) nil)) - -(defun set-open-in-new-group-in-root-group-nw-hook () - "Open the next window in a new group in the root group" - (set-nw-hook #'open-in-new-group-in-root-group-nw-hook)) +;;; Open new window in a new frame in the current root hook +(defun open-in-new-frame-in-current-root-nw-hook (frame window) + "Open the next window in a new frame in the current root" + (leave-if-not-frame *current-root*) + (let ((new-frame (create-frame))) + (pushnew new-frame (frame-child *current-root*)) + (pushnew window (frame-child new-frame)) + (setf *current-child* new-frame) + (default-window-placement new-frame window)) + (setf (frame-nw-hook frame) nil)) + +(defun set-open-in-new-frame-in-current-root-nw-hook () + "Open the next window in a new frame in the current root" + (set-nw-hook #'open-in-new-frame-in-current-root-nw-hook)) + +(register-nw-hook 'set-open-in-new-frame-in-current-root-nw-hook) + + +;;; Open new window in a new frame in the root frame hook +(defun open-in-new-frame-in-root-frame-nw-hook (frame window) + "Open the next window in a new frame in the root frame" + (let ((new-frame (create-frame))) + (pushnew new-frame (frame-child *root-frame*)) + (pushnew window (frame-child new-frame)) + (switch-to-root-frame) + (setf *current-child* new-frame) + (default-window-placement new-frame window)) + (setf (frame-nw-hook frame) nil)) + +(defun set-open-in-new-frame-in-root-frame-nw-hook () + "Open the next window in a new frame in the root frame" + (set-nw-hook #'open-in-new-frame-in-root-frame-nw-hook)) -(register-nw-hook 'set-open-in-new-group-in-root-group-nw-hook) +(register-nw-hook 'set-open-in-new-frame-in-root-frame-nw-hook) Modified: clfswm/src/clfswm-pack.lisp ============================================================================== --- clfswm/src/clfswm-pack.lisp (original) +++ clfswm/src/clfswm-pack.lisp Tue Mar 25 18:02:17 2008 @@ -28,56 +28,56 @@ ;;;,----- ;;;| Edges functions ;;;`----- -(defun group-x2 (group) - (+ (group-x group) (group-w group))) +(defun frame-x2 (frame) + (+ (frame-x frame) (frame-w frame))) -(defun group-y2 (group) - (+ (group-y group) (group-h group))) +(defun frame-y2 (frame) + (+ (frame-y frame) (frame-h frame))) -(defun find-edge-up (current-group father) +(defun find-edge-up (current-frame father) (let ((y-found 0)) - (dolist (group (group-child father)) - (when (and (group-p group) - (not (equal group current-group)) - (<= (group-y2 group) (group-y current-group)) - (>= (group-x2 group) (group-x current-group)) - (<= (group-x group) (group-x2 current-group))) - (setf y-found (max y-found (group-y2 group))))) + (dolist (frame (frame-child father)) + (when (and (frame-p frame) + (not (equal frame current-frame)) + (<= (frame-y2 frame) (frame-y current-frame)) + (>= (frame-x2 frame) (frame-x current-frame)) + (<= (frame-x frame) (frame-x2 current-frame))) + (setf y-found (max y-found (frame-y2 frame))))) y-found)) -(defun find-edge-down (current-group father) +(defun find-edge-down (current-frame father) (let ((y-found 1)) - (dolist (group (group-child father)) - (when (and (group-p group) - (not (equal group current-group)) - (>= (group-y group) (group-y2 current-group)) - (>= (group-x2 group) (group-x current-group)) - (<= (group-x group) (group-x2 current-group))) - (setf y-found (min y-found (group-y group))))) + (dolist (frame (frame-child father)) + (when (and (frame-p frame) + (not (equal frame current-frame)) + (>= (frame-y frame) (frame-y2 current-frame)) + (>= (frame-x2 frame) (frame-x current-frame)) + (<= (frame-x frame) (frame-x2 current-frame))) + (setf y-found (min y-found (frame-y frame))))) y-found)) -(defun find-edge-right (current-group father) +(defun find-edge-right (current-frame father) (let ((x-found 1)) - (dolist (group (group-child father)) - (when (and (group-p group) - (not (equal group current-group)) - (>= (group-x group) (group-x2 current-group)) - (>= (group-y2 group) (group-y current-group)) - (<= (group-y group) (group-y2 current-group))) - (setf x-found (min x-found (group-x group))))) + (dolist (frame (frame-child father)) + (when (and (frame-p frame) + (not (equal frame current-frame)) + (>= (frame-x frame) (frame-x2 current-frame)) + (>= (frame-y2 frame) (frame-y current-frame)) + (<= (frame-y frame) (frame-y2 current-frame))) + (setf x-found (min x-found (frame-x frame))))) x-found)) -(defun find-edge-left (current-group father) +(defun find-edge-left (current-frame father) (let ((x-found 0)) - (dolist (group (group-child father)) - (when (and (group-p group) - (not (equal group current-group)) - (<= (group-x2 group) (group-x current-group)) - (>= (group-y2 group) (group-y current-group)) - (<= (group-y group) (group-y2 current-group))) - (setf x-found (max x-found (group-x2 group))))) + (dolist (frame (frame-child father)) + (when (and (frame-p frame) + (not (equal frame current-frame)) + (<= (frame-x2 frame) (frame-x current-frame)) + (>= (frame-y2 frame) (frame-y current-frame)) + (<= (frame-y frame) (frame-y2 current-frame))) + (setf x-found (max x-found (frame-x2 frame))))) x-found)) @@ -85,107 +85,107 @@ ;;;,----- ;;;| Pack functions ;;;`----- -(defun pack-group-up (group father) - "Pack group to up" - (let ((y-found (find-edge-up group father))) - (setf (group-y group) y-found))) +(defun pack-frame-up (frame father) + "Pack frame to up" + (let ((y-found (find-edge-up frame father))) + (setf (frame-y frame) y-found))) -(defun pack-group-down (group father) - "Pack group to down" - (let ((y-found (find-edge-down group father))) - (setf (group-y group) (- y-found (group-h group))))) +(defun pack-frame-down (frame father) + "Pack frame to down" + (let ((y-found (find-edge-down frame father))) + (setf (frame-y frame) (- y-found (frame-h frame))))) -(defun pack-group-right (group father) - "Pack group to right" - (let ((x-found (find-edge-right group father))) - (setf (group-x group) (- x-found (group-w group))))) +(defun pack-frame-right (frame father) + "Pack frame to right" + (let ((x-found (find-edge-right frame father))) + (setf (frame-x frame) (- x-found (frame-w frame))))) -(defun pack-group-left (group father) - "Pack group to left" - (let ((x-found (find-edge-left group father))) - (setf (group-x group) x-found))) +(defun pack-frame-left (frame father) + "Pack frame to left" + (let ((x-found (find-edge-left frame father))) + (setf (frame-x frame) x-found))) -(defun center-group (group) - "Center group" - (setf (group-x group) (/ (- 1 (group-w group)) 2) - (group-y group) (/ (- 1 (group-h group)) 2))) +(defun center-frame (frame) + "Center frame" + (setf (frame-x frame) (/ (- 1 (frame-w frame)) 2) + (frame-y frame) (/ (- 1 (frame-h frame)) 2))) ;;;,----- ;;;| Fill functions ;;;`----- -(defun fill-group-up (group father) - "Fill a group up" - (let* ((y-found (find-edge-up group father)) - (dy (- (group-y group) y-found))) - (setf (group-y group) y-found - (group-h group) (+ (group-h group) dy)))) - -(defun fill-group-down (group father) - "Fill a group down" - (let* ((y-found (find-edge-down group father)) - (dy (- y-found (group-y2 group)))) - (setf (group-h group) (+ (group-h group) dy)))) - - -(defun fill-group-left (group father) - "Fill a group left" - (let* ((x-found (find-edge-left group father)) - (dx (- (group-x group) x-found))) - (setf (group-x group) x-found - (group-w group) (+ (group-w group) dx)))) - -(defun fill-group-right (group father) - "Fill a group rigth" - (let* ((x-found (find-edge-right group father)) - (dx (- x-found (group-x2 group)))) - (setf (group-w group) (+ (group-w group) dx)))) +(defun fill-frame-up (frame father) + "Fill a frame up" + (let* ((y-found (find-edge-up frame father)) + (dy (- (frame-y frame) y-found))) + (setf (frame-y frame) y-found + (frame-h frame) (+ (frame-h frame) dy)))) + +(defun fill-frame-down (frame father) + "Fill a frame down" + (let* ((y-found (find-edge-down frame father)) + (dy (- y-found (frame-y2 frame)))) + (setf (frame-h frame) (+ (frame-h frame) dy)))) + + +(defun fill-frame-left (frame father) + "Fill a frame left" + (let* ((x-found (find-edge-left frame father)) + (dx (- (frame-x frame) x-found))) + (setf (frame-x frame) x-found + (frame-w frame) (+ (frame-w frame) dx)))) + +(defun fill-frame-right (frame father) + "Fill a frame rigth" + (let* ((x-found (find-edge-right frame father)) + (dx (- x-found (frame-x2 frame)))) + (setf (frame-w frame) (+ (frame-w frame) dx)))) ;;;,----- ;;;| Lower functions ;;;`----- -(defun resize-group-down (group) - "Resize down a group" - (when (> (group-w group) 0.1) - (setf (group-x group) (+ (group-x group) 0.01) - (group-w group) (max (- (group-w group) 0.02) 0.01))) - (when (> (group-h group) 0.1) - (setf (group-y group) (+ (group-y group) 0.01) - (group-h group) (max (- (group-h group) 0.02) 0.01)))) +(defun resize-frame-down (frame) + "Resize down a frame" + (when (> (frame-w frame) 0.1) + (setf (frame-x frame) (+ (frame-x frame) 0.01) + (frame-w frame) (max (- (frame-w frame) 0.02) 0.01))) + (when (> (frame-h frame) 0.1) + (setf (frame-y frame) (+ (frame-y frame) 0.01) + (frame-h frame) (max (- (frame-h frame) 0.02) 0.01)))) -(defun resize-minimal-group (group) - "Resize down a group to its minimal size" +(defun resize-minimal-frame (frame) + "Resize down a frame to its minimal size" (dotimes (i 100) - (resize-group-down group))) + (resize-frame-down frame))) -(defun resize-half-width-left (group) - (setf (group-w group)(/ (group-w group) 2))) +(defun resize-half-width-left (frame) + (setf (frame-w frame)(/ (frame-w frame) 2))) -(defun resize-half-width-right (group) - (let* ((new-size (/ (group-w group) 2)) - (dx (- (group-w group) new-size))) - (setf (group-w group) new-size) - (incf (group-x group) (max dx 0)))) +(defun resize-half-width-right (frame) + (let* ((new-size (/ (frame-w frame) 2)) + (dx (- (frame-w frame) new-size))) + (setf (frame-w frame) new-size) + (incf (frame-x frame) (max dx 0)))) -(defun resize-half-height-up (group) - (setf (group-h group) (/ (group-h group) 2))) +(defun resize-half-height-up (frame) + (setf (frame-h frame) (/ (frame-h frame) 2))) -(defun resize-half-height-down (group) - (let* ((new-size (/ (group-h group) 2)) - (dy (- (group-h group) new-size))) - (setf (group-h group) new-size) - (incf (group-y group) (max dy 0)))) +(defun resize-half-height-down (frame) + (let* ((new-size (/ (frame-h frame) 2)) + (dy (- (frame-h frame) new-size))) + (setf (frame-h frame) new-size) + (incf (frame-y frame) (max dy 0)))) @@ -193,18 +193,18 @@ ;;;;;,----- ;;;;;| Explode/Implode functions ;;;;;`----- -(defun explode-group (group) - "Create a new group for each window in group" - (when (group-p group) - (let ((windows (loop :for child :in (group-child group) +(defun explode-frame (frame) + "Create a new frame for each window in frame" + (when (frame-p frame) + (let ((windows (loop :for child :in (frame-child frame) :when (xlib:window-p child) :collect child))) (dolist (win windows) - (add-group (create-group :child (list win)) group) - (remove-child-in-group win group))))) + (add-frame (create-frame :child (list win)) frame) + (remove-child-in-frame win frame))))) -(defun explode-current-group () - "Create a new group for each window in group" - (explode-group *current-child*) +(defun explode-current-frame () + "Create a new frame for each window in frame" + (explode-frame *current-child*) (leave-second-mode)) Modified: clfswm/src/clfswm-second-mode.lisp ============================================================================== --- clfswm/src/clfswm-second-mode.lisp (original) +++ clfswm/src/clfswm-second-mode.lisp Tue Mar 25 18:02:17 2008 @@ -43,8 +43,8 @@ ;; (format nil ">W:~A" *open-next-window-in-new-workspace*)) ;; (*open-next-window-in-new-workspace* ">W") ;; (t "")) -;; (cond ((equal *open-next-window-in-new-group* :once) ">G") -;; (*open-next-window-in-new-group* ">G+") +;; (cond ((equal *open-next-window-in-new-frame* :once) ">G") +;; (*open-next-window-in-new-frame* ">G+") ;; (t "")))) ;; (len (length text))) ;; (xlib:draw-image-glyphs *sm-window* *sm-gc* @@ -74,7 +74,7 @@ (defun sm-handle-enter-notify (&rest event-slots &key root-x root-y &allow-other-keys) (declare (ignore event-slots root-x root-y)) - ;; (focus-group-under-mouse root-x root-y) + ;; (focus-frame-under-mouse root-x root-y) (draw-second-mode-window)) (defun sm-handle-motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) @@ -203,7 +203,7 @@ (xungrab-keyboard) (xungrab-pointer) (grab-main-keys) - (show-all-childs)) + (show-all-children)) (wait-no-key-or-button-press) (when *second-mode-program* (do-shell *second-mode-program*) Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Tue Mar 25 18:02:17 2008 @@ -43,66 +43,66 @@ (leave-second-mode))) -(defun renumber-current-group () - "Renumber the current group" - (when (group-p *current-child*) - (let ((number (query-number (format nil "New child number: (last: ~A)" (group-number *current-child*)) - (group-number *current-child*)))) - (setf (group-number *current-child*) number) +(defun renumber-current-frame () + "Renumber the current frame" + (when (frame-p *current-child*) + (let ((number (query-number (format nil "New child number: (last: ~A)" (frame-number *current-child*)) + (frame-number *current-child*)))) + (setf (frame-number *current-child*) number) (leave-second-mode)))) -(defun add-default-group () - "Add a default group" - (when (group-p *current-child*) - (let ((name (query-string "Group name"))) - (push (create-group :name name) (group-child *current-child*)))) +(defun add-default-frame () + "Add a default frame" + (when (frame-p *current-child*) + (let ((name (query-string "Frame name"))) + (push (create-frame :name name) (frame-child *current-child*)))) (leave-second-mode)) -(defun add-placed-group () - "Add a placed group" - (when (group-p *current-child*) - (let ((name (query-string "Group name")) - (x (/ (query-number "Group x in percent (%)") 100)) - (y (/ (query-number "Group y in percent (%)") 100)) - (w (/ (query-number "Group width in percent (%)") 100)) - (h (/ (query-number "Group height in percent (%)") 100))) - (push (create-group :name name :x x :y y :w w :h h) - (group-child *current-child*)))) +(defun add-placed-frame () + "Add a placed frame" + (when (frame-p *current-child*) + (let ((name (query-string "Frame name")) + (x (/ (query-number "Frame x in percent (%)") 100)) + (y (/ (query-number "Frame y in percent (%)") 100)) + (w (/ (query-number "Frame width in percent (%)") 100)) + (h (/ (query-number "Frame height in percent (%)") 100))) + (push (create-frame :name name :x x :y y :w w :h h) + (frame-child *current-child*)))) (leave-second-mode)) (defun delete-focus-window () - "Delete the focus window in all groups and workspaces" + "Delete the focus window in all frames and workspaces" (let ((window (xlib:input-focus *display*))) (when (and window (not (xlib:window-equal window *no-focus-window*))) (setf *current-child* *current-root*) - (remove-child-in-all-groups window) + (remove-child-in-all-frames window) (send-client-message window :WM_PROTOCOLS (xlib:intern-atom *display* "WM_DELETE_WINDOW")) - (show-all-childs)))) + (show-all-children)))) (defun destroy-focus-window () - "Destroy the focus window in all groups and workspaces" + "Destroy the focus window in all frames and workspaces" (let ((window (xlib:input-focus *display*))) (when (and window (not (xlib:window-equal window *no-focus-window*))) (setf *current-child* *current-root*) - (remove-child-in-all-groups window) + (remove-child-in-all-frames window) (xlib:kill-client *display* (xlib:window-id window)) - (show-all-childs)))) + (show-all-children)))) (defun remove-focus-window () - "Remove the focus window in the current group" + "Remove the focus window in the current frame" (let ((window (xlib:input-focus *display*))) (when (and window (not (xlib:window-equal window *no-focus-window*))) (setf *current-child* *current-root*) (hide-child window) - (remove-child-in-group window (find-father-group window)) - (show-all-childs)))) + (remove-child-in-frame window (find-father-frame window)) + (show-all-children)))) (defun unhide-all-windows-in-current-child () @@ -112,7 +112,7 @@ (unhide-window window) (process-new-window window) (xlib:map-window window))) - (show-all-childs)) + (show-all-children)) @@ -121,13 +121,13 @@ "Return the child window under the mouse" (with-xlib-protect (let ((win nil)) - (with-all-windows-groups (*current-root* child) + (with-all-windows-frames (*current-root* child) (when (and (<= (xlib:drawable-x child) x (+ (xlib:drawable-x child) (xlib:drawable-width child))) (<= (xlib:drawable-y child) y (+ (xlib:drawable-y child) (xlib:drawable-height child)))) (setf win child)) - (when (and (<= (group-rx child) x (+ (group-rx child) (group-rw child))) - (<= (group-ry child) y (+ (group-ry child) (group-rh child)))) - (setf win (group-window child)))) + (when (and (<= (frame-rx child) x (+ (frame-rx child) (frame-rw child))) + (<= (frame-ry child) y (+ (frame-ry child) (frame-rh child)))) + (setf win (frame-window child)))) win))) @@ -135,12 +135,12 @@ "Return the child under the mouse" (with-xlib-protect (let ((ret nil)) - (with-all-windows-groups (*current-root* child) + (with-all-windows-frames (*current-root* child) (when (and (<= (xlib:drawable-x child) x (+ (xlib:drawable-x child) (xlib:drawable-width child))) (<= (xlib:drawable-y child) y (+ (xlib:drawable-y child) (xlib:drawable-height child)))) (setf ret child)) - (when (and (<= (group-rx child) x (+ (group-rx child) (group-rw child))) - (<= (group-ry child) y (+ (group-ry child) (group-rh child)))) + (when (and (<= (frame-rx child) x (+ (frame-rx child) (frame-rw child))) + (<= (frame-ry child) y (+ (frame-ry child) (frame-rh child)))) (setf ret child))) ret))) @@ -152,45 +152,45 @@ (defun clear-selection () "Clear the current selection" (setf *child-selection* nil) - (display-group-info *current-root*)) + (display-frame-info *current-root*)) (defun copy-current-child () "Copy the current child to the selection" (pushnew *current-child* *child-selection*) - (display-group-info *current-root*)) + (display-frame-info *current-root*)) (defun cut-current-child () "Cut the current child to the selection" (copy-current-child) - (hide-all-childs *current-child*) - (remove-child-in-group *current-child* (find-father-group *current-child* *current-root*)) + (hide-all-children *current-child*) + (remove-child-in-frame *current-child* (find-father-frame *current-child* *current-root*)) (setf *current-child* *current-root*) - (show-all-childs)) + (show-all-children)) (defun remove-current-child () - "Remove the current child from its father group" - (hide-all-childs *current-child*) - (remove-child-in-group *current-child* (find-father-group *current-child* *current-root*)) + "Remove the current child from its father frame" + (hide-all-children *current-child*) + (remove-child-in-frame *current-child* (find-father-frame *current-child* *current-root*)) (setf *current-child* *current-root*) (leave-second-mode)) (defun paste-selection-no-clear () - "Paste the selection in the current group - Do not clear the selection after paste" - (let ((group-dest (typecase *current-child* - (xlib:window (find-father-group *current-child* *current-root*)) - (group *current-child*)))) - (when group-dest + "Paste the selection in the current frame - Do not clear the selection after paste" + (let ((frame-dest (typecase *current-child* + (xlib:window (find-father-frame *current-child* *current-root*)) + (frame *current-child*)))) + (when frame-dest (dolist (child *child-selection*) - (pushnew child (group-child group-dest))) - (show-all-childs)))) + (pushnew child (frame-child frame-dest))) + (show-all-children)))) (defun paste-selection () - "Paste the selection in the current group" + "Paste the selection in the current frame" (paste-selection-no-clear) (setf *child-selection* nil) - (display-group-info *current-root*)) + (display-frame-info *current-root*)) @@ -300,18 +300,18 @@ -;;; Group name actions +;;; Frame name actions ;;;(loop :for str :in '("The Gimp" "The klm" "klm" "abc") ;; Test ;;; :when (zerop (or (search "ThE" str :test #'string-equal) -1)) ;;; :collect str) -(defun ask-group-name (msg) - "Ask a group name" - (let ((all-group-name nil) +(defun ask-frame-name (msg) + "Ask a frame name" + (let ((all-frame-name nil) (name "")) - (with-all-groups (*root-group* group) - (awhen (group-name group) (push it all-group-name))) + (with-all-frames (*root-frame* frame) + (awhen (frame-name frame) (push it all-frame-name))) (labels ((selected-names () - (loop :for str :in all-group-name + (loop :for str :in all-frame-name :when (zerop (or (search name str :test #'string-equal) -1)) :collect str)) (complet-alone (req sel) @@ -330,107 +330,107 @@ ;;; Focus by functions -(defun focus-group-by (group) - (when (group-p group) - (hide-all-childs *current-root*) - (focus-all-childs group (or (find-father-group group *current-root*) - (find-father-group group) - *root-group*)))) - - -(defun focus-group-by-name () - "Focus a group by name" - (focus-group-by (find-group-by-name (ask-group-name "Focus group"))) - (leave-second-mode)) - -(defun focus-group-by-number () - "Focus a group by number" - (focus-group-by (find-group-by-number (query-number "Focus group by number:"))) +(defun focus-frame-by (frame) + (when (frame-p frame) + (hide-all-children *current-root*) + (focus-all-children frame (or (find-father-frame frame *current-root*) + (find-father-frame frame) + *root-frame*)))) + + +(defun focus-frame-by-name () + "Focus a frame by name" + (focus-frame-by (find-frame-by-name (ask-frame-name "Focus frame"))) + (leave-second-mode)) + +(defun focus-frame-by-number () + "Focus a frame by number" + (focus-frame-by (find-frame-by-number (query-number "Focus frame by number:"))) (leave-second-mode)) ;;; Open by functions -(defun open-group-by (group) - (when (group-p group) - (push (create-group :name (query-string "Group name")) (group-child group)))) +(defun open-frame-by (frame) + (when (frame-p frame) + (push (create-frame :name (query-string "Frame name")) (frame-child frame)))) -(defun open-group-by-name () - "Open a new group in a named group" - (open-group-by (find-group-by-name (ask-group-name "Open a new group in"))) +(defun open-frame-by-name () + "Open a new frame in a named frame" + (open-frame-by (find-frame-by-name (ask-frame-name "Open a new frame in"))) (leave-second-mode)) -(defun open-group-by-number () - "Open a new group in a numbered group" - (open-group-by (find-group-by-name (ask-group-name "Open a new group in the grou numbered:"))) +(defun open-frame-by-number () + "Open a new frame in a numbered frame" + (open-frame-by (find-frame-by-name (ask-frame-name "Open a new frame in the grou numbered:"))) (leave-second-mode)) ;;; Delete by functions -(defun delete-group-by (group) - (hide-all-childs *current-root*) - (unless (equal group *root-group*) - (when (equal group *current-root*) - (setf *current-root* *root-group*)) - (when (equal group *current-child*) +(defun delete-frame-by (frame) + (hide-all-children *current-root*) + (unless (equal frame *root-frame*) + (when (equal frame *current-root*) + (setf *current-root* *root-frame*)) + (when (equal frame *current-child*) (setf *current-child* *current-root*)) - (remove-child-in-group group (find-father-group group)))) + (remove-child-in-frame frame (find-father-frame frame)))) -(defun delete-group-by-name () - "Delete a group by name" - (delete-group-by (find-group-by-name (ask-group-name "Delete group"))) +(defun delete-frame-by-name () + "Delete a frame by name" + (delete-frame-by (find-frame-by-name (ask-frame-name "Delete frame"))) (leave-second-mode)) -(defun delete-group-by-number () - "Delete a group by number" - (delete-group-by (find-group-by-number (query-number "Delete group by number:"))) +(defun delete-frame-by-number () + "Delete a frame by number" + (delete-frame-by (find-frame-by-number (query-number "Delete frame by number:"))) (leave-second-mode)) ;;; Move by function -(defun move-current-child-by (child group-dest) - (when (and child (group-p group-dest)) - (hide-all-childs *current-root*) - (remove-child-in-group child (find-father-group child)) - (pushnew child (group-child group-dest)) - (focus-all-childs child group-dest))) +(defun move-current-child-by (child frame-dest) + (when (and child (frame-p frame-dest)) + (hide-all-children *current-root*) + (remove-child-in-frame child (find-father-frame child)) + (pushnew child (frame-child frame-dest)) + (focus-all-children child frame-dest))) (defun move-current-child-by-name () - "Move current child in a named group" + "Move current child in a named frame" (move-current-child-by *current-child* - (find-group-by-name - (ask-group-name (format nil "Move '~A' to group" (child-name *current-child*))))) + (find-frame-by-name + (ask-frame-name (format nil "Move '~A' to frame" (child-name *current-child*))))) (leave-second-mode)) (defun move-current-child-by-number () - "Move current child in a numbered group" + "Move current child in a numbered frame" (move-current-child-by *current-child* - (find-group-by-number - (query-number (format nil "Move '~A' to group numbered:" (child-name *current-child*))))) + (find-frame-by-number + (query-number (format nil "Move '~A' to frame numbered:" (child-name *current-child*))))) (leave-second-mode)) ;;; Copy by function -(defun copy-current-child-by (child group-dest) - (when (and child (group-p group-dest)) - (hide-all-childs *current-root*) - (pushnew child (group-child group-dest)) - (focus-all-childs child group-dest))) +(defun copy-current-child-by (child frame-dest) + (when (and child (frame-p frame-dest)) + (hide-all-children *current-root*) + (pushnew child (frame-child frame-dest)) + (focus-all-children child frame-dest))) (defun copy-current-child-by-name () - "Copy current child in a named group" + "Copy current child in a named frame" (copy-current-child-by *current-child* - (find-group-by-name - (ask-group-name (format nil "Copy '~A' to group" (child-name *current-child*))))) + (find-frame-by-name + (ask-frame-name (format nil "Copy '~A' to frame" (child-name *current-child*))))) (leave-second-mode)) (defun copy-current-child-by-number () - "Copy current child in a numbered group" + "Copy current child in a numbered frame" (copy-current-child-by *current-child* - (find-group-by-number - (query-number (format nil "Copy '~A' to group numbered:" (child-name *current-child*))))) + (find-frame-by-number + (query-number (format nil "Copy '~A' to frame numbered:" (child-name *current-child*))))) (leave-second-mode)) @@ -438,51 +438,51 @@ ;;; Force window functions -(defun force-window-in-group () - "Force the current window to move in the group (Useful only for transient windows)" +(defun force-window-in-frame () + "Force the current window to move in the frame (Useful only for transient windows)" (when (xlib:window-p *current-child*) - (let ((father (find-father-group *current-child*))) + (let ((father (find-father-frame *current-child*))) (with-xlib-protect - (setf (xlib:drawable-x *current-child*) (group-rx father) - (xlib:drawable-y *current-child*) (group-ry father))))) + (setf (xlib:drawable-x *current-child*) (frame-rx father) + (xlib:drawable-y *current-child*) (frame-ry father))))) (leave-second-mode)) -(defun force-window-center-in-group () - "Force the current window to move in the center of the group (Useful only for transient windows)" +(defun force-window-center-in-frame () + "Force the current window to move in the center of the frame (Useful only for transient windows)" (when (xlib:window-p *current-child*) - (let ((father (find-father-group *current-child*))) + (let ((father (find-father-frame *current-child*))) (with-xlib-protect - (setf (xlib:drawable-x *current-child*) (truncate (+ (group-rx father) - (/ (- (group-rw father) + (setf (xlib:drawable-x *current-child*) (truncate (+ (frame-rx father) + (/ (- (frame-rw father) (xlib:drawable-width *current-child*)) 2))) - (xlib:drawable-y *current-child*) (truncate (+ (group-ry father) - (/ (- (group-rh father) + (xlib:drawable-y *current-child*) (truncate (+ (frame-ry father) + (/ (- (frame-rh father) (xlib:drawable-height *current-child*)) 2))))))) (leave-second-mode)) -;;; Show group info -(defun show-all-groups-info () - "Show all groups info windows" - (let ((*show-root-group-p* t)) - (show-all-childs) - (with-all-groups (*current-root* group) - (raise-window (group-window group)) - (display-group-info group)))) +;;; Show frame info +(defun show-all-frames-info () + "Show all frames info windows" + (let ((*show-root-frame-p* t)) + (show-all-children) + (with-all-frames (*current-root* frame) + (raise-window (frame-window frame)) + (display-frame-info frame)))) -(defun hide-all-groups-info () - "Hide all groups info windows" +(defun hide-all-frames-info () + "Hide all frames info windows" (with-all-windows (*current-root* window) (raise-window window)) (hide-child *current-root*) - (show-all-childs)) + (show-all-children)) -(defun show-all-groups-info-key () - "Show all groups info windows until a key is release" - (show-all-groups-info) +(defun show-all-frames-info-key () + "Show all frames info windows until a key is release" + (show-all-frames-info) (wait-no-key-or-button-press) - (hide-all-groups-info)) + (hide-all-frames-info)) @@ -490,53 +490,53 @@ ;;;;;| Various definitions ;;;;;`----- ;;(defun stop-all-pending-actions () -;; "Stop all pending actions (actions like open in new workspace/group)" +;; "Stop all pending actions (actions like open in new workspace/frame)" ;; (setf *open-next-window-in-new-workspace* nil -;; *open-next-window-in-new-group* nil +;; *open-next-window-in-new-frame* nil ;; *arrow-action* nil ;; *pager-arrow-action* nil)) ;; ;;(defun rotate-window-up () -;; "Rotate up windows in the current group" -;; (setf (group-window-list (current-group)) -;; (rotate-list (group-window-list (current-group)))) -;; (adapt-window-to-group (current-window) (current-group)) +;; "Rotate up windows in the current frame" +;; (setf (frame-window-list (current-frame)) +;; (rotate-list (frame-window-list (current-frame)))) +;; (adapt-window-to-frame (current-window) (current-frame)) ;; (focus-window (current-window)) -;; (show-all-group (current-workspace))) +;; (show-all-frame (current-workspace))) ;; ;;(defun rotate-window-down () -;; "Rotate down windows in the current group" -;; (setf (group-window-list (current-group)) -;; (anti-rotate-list (group-window-list (current-group)))) -;; (adapt-window-to-group (current-window) (current-group)) -;; (focus-window (current-window)) -;; (show-all-group (current-workspace))) +;; "Rotate down windows in the current frame" +;; (setf (frame-window-list (current-frame)) +;; (anti-rotate-list (frame-window-list (current-frame)))) +;; (adapt-window-to-frame (current-window) (current-frame)) +;; (focus-window (current-window)) +;; (show-all-frame (current-workspace))) ;; ;; -;;(defun maximize-group (group) -;; "Maximize the group" -;; (when group -;; (unless (group-fullscreenp group) -;; (setf (group-fullscreenp group) t) +;;(defun maximize-frame (frame) +;; "Maximize the frame" +;; (when frame +;; (unless (frame-fullscreenp frame) +;; (setf (frame-fullscreenp frame) t) ;; (show-all-windows-in-workspace (current-workspace))))) ;; -;;(defun minimize-group (group) -;; "Minimize the group" -;; (when group -;; (when (group-fullscreenp group) -;; (setf (group-fullscreenp group) nil) +;;(defun minimize-frame (frame) +;; "Minimize the frame" +;; (when frame +;; (when (frame-fullscreenp frame) +;; (setf (frame-fullscreenp frame) nil) ;; (show-all-windows-in-workspace (current-workspace))))) ;; -;;(defun toggle-maximize-group (group) -;; "Maximize/minimize a group" -;; (if (group-fullscreenp group) -;; (minimize-group group) -;; (maximize-group group))) +;;(defun toggle-maximize-frame (frame) +;; "Maximize/minimize a frame" +;; (if (frame-fullscreenp frame) +;; (minimize-frame frame) +;; (maximize-frame frame))) ;; ;; -;;(defun toggle-maximize-current-group () -;; "Maximize/minimize the current group" -;; (toggle-maximize-group (current-group))) +;;(defun toggle-maximize-current-frame () +;; "Maximize/minimize the current frame" +;; (toggle-maximize-frame (current-frame))) ;; ;; ;;(defun renumber-workspaces () @@ -559,88 +559,88 @@ ;; ;; ;; -;;(defun circulate-group-up () -;; "Circulate up in group" +;;(defun circulate-frame-up () +;; "Circulate up in frame" ;; (banish-pointer) -;; (minimize-group (current-group)) +;; (minimize-frame (current-frame)) ;; (no-focus) -;; (setf (workspace-group-list (current-workspace)) -;; (rotate-list (workspace-group-list (current-workspace)))) -;; (adapt-window-to-group (current-window) (current-group)) +;; (setf (workspace-frame-list (current-workspace)) +;; (rotate-list (workspace-frame-list (current-workspace)))) +;; (adapt-window-to-frame (current-window) (current-frame)) ;; (focus-window (current-window)) -;; (show-all-group (current-workspace))) +;; (show-all-frame (current-workspace))) ;; ;; -;;(defun circulate-group-up-move-window () -;; "Circulate up in group moving the current window in the next group" +;;(defun circulate-frame-up-move-window () +;; "Circulate up in frame moving the current window in the next frame" ;; (banish-pointer) -;; (minimize-group (current-group)) +;; (minimize-frame (current-frame)) ;; (no-focus) ;; (let ((window (current-window))) -;; (remove-window-in-group window (current-group)) +;; (remove-window-in-frame window (current-frame)) ;; (focus-window (current-window)) -;; (setf (workspace-group-list (current-workspace)) -;; (rotate-list (workspace-group-list (current-workspace)))) -;; (add-window-in-group window (current-group))) -;; (adapt-window-to-group (current-window) (current-group)) +;; (setf (workspace-frame-list (current-workspace)) +;; (rotate-list (workspace-frame-list (current-workspace)))) +;; (add-window-in-frame window (current-frame))) +;; (adapt-window-to-frame (current-window) (current-frame)) ;; (focus-window (current-window)) -;; (show-all-group (current-workspace))) +;; (show-all-frame (current-workspace))) ;; -;;(defun circulate-group-up-copy-window () -;; "Circulate up in group copying the current window in the next group" +;;(defun circulate-frame-up-copy-window () +;; "Circulate up in frame copying the current window in the next frame" ;; (banish-pointer) -;; (minimize-group (current-group)) +;; (minimize-frame (current-frame)) ;; (no-focus) ;; (let ((window (current-window))) -;; (setf (workspace-group-list (current-workspace)) -;; (rotate-list (workspace-group-list (current-workspace)))) +;; (setf (workspace-frame-list (current-workspace)) +;; (rotate-list (workspace-frame-list (current-workspace)))) ;; (unless (window-already-in-workspace window (current-workspace)) -;; (add-window-in-group window (current-group)))) -;; (adapt-window-to-group (current-window) (current-group)) +;; (add-window-in-frame window (current-frame)))) +;; (adapt-window-to-frame (current-window) (current-frame)) ;; (focus-window (current-window)) -;; (show-all-group (current-workspace))) +;; (show-all-frame (current-workspace))) ;; ;; ;; -;;(defun circulate-group-down () -;; "Circulate down in group" +;;(defun circulate-frame-down () +;; "Circulate down in frame" ;; (banish-pointer) -;; (minimize-group (current-group)) +;; (minimize-frame (current-frame)) ;; (no-focus) -;; (setf (workspace-group-list (current-workspace)) -;; (anti-rotate-list (workspace-group-list (current-workspace)))) -;; (adapt-window-to-group (current-window) (current-group)) +;; (setf (workspace-frame-list (current-workspace)) +;; (anti-rotate-list (workspace-frame-list (current-workspace)))) +;; (adapt-window-to-frame (current-window) (current-frame)) ;; (focus-window (current-window)) -;; (show-all-group (current-workspace))) +;; (show-all-frame (current-workspace))) ;; -;;(defun circulate-group-down-move-window () -;; "Circulate down in group moving the current window in the next group" +;;(defun circulate-frame-down-move-window () +;; "Circulate down in frame moving the current window in the next frame" ;; (banish-pointer) -;; (minimize-group (current-group)) +;; (minimize-frame (current-frame)) ;; (no-focus) ;; (let ((window (current-window))) -;; (remove-window-in-group window (current-group)) +;; (remove-window-in-frame window (current-frame)) ;; (focus-window (current-window)) -;; (setf (workspace-group-list (current-workspace)) -;; (anti-rotate-list (workspace-group-list (current-workspace)))) -;; (add-window-in-group window (current-group))) -;; (adapt-window-to-group (current-window) (current-group)) +;; (setf (workspace-frame-list (current-workspace)) +;; (anti-rotate-list (workspace-frame-list (current-workspace)))) +;; (add-window-in-frame window (current-frame))) +;; (adapt-window-to-frame (current-window) (current-frame)) ;; (focus-window (current-window)) -;; (show-all-group (current-workspace))) +;; (show-all-frame (current-workspace))) ;; -;;(defun circulate-group-down-copy-window () -;; "Circulate down in group copying the current window in the next group" +;;(defun circulate-frame-down-copy-window () +;; "Circulate down in frame copying the current window in the next frame" ;; (banish-pointer) -;; (minimize-group (current-group)) +;; (minimize-frame (current-frame)) ;; (no-focus) ;; (let ((window (current-window))) -;; (setf (workspace-group-list (current-workspace)) -;; (anti-rotate-list (workspace-group-list (current-workspace)))) +;; (setf (workspace-frame-list (current-workspace)) +;; (anti-rotate-list (workspace-frame-list (current-workspace)))) ;; (unless (window-already-in-workspace window (current-workspace)) -;; (add-window-in-group window (current-group)))) -;; (adapt-window-to-group (current-window) (current-group)) +;; (add-window-in-frame window (current-frame)))) +;; (adapt-window-to-frame (current-window) (current-frame)) ;; (focus-window (current-window)) -;; (show-all-group (current-workspace))) +;; (show-all-frame (current-workspace))) ;; ;; ;; @@ -664,24 +664,24 @@ ;; (setf *workspace-list* (rotate-list *workspace-list*)) ;; (show-all-windows-in-workspace (current-workspace))) ;; -;;(defun circulate-workspace-up-move-group () -;; "Circulate up in workspace moving current group in the next workspace" +;;(defun circulate-workspace-up-move-frame () +;; "Circulate up in workspace moving current frame in the next workspace" ;; (no-focus) ;; (hide-all-windows-in-workspace (current-workspace)) -;; (let ((group (current-group))) -;; (remove-group-in-workspace group (current-workspace)) +;; (let ((frame (current-frame))) +;; (remove-frame-in-workspace frame (current-workspace)) ;; (setf *workspace-list* (rotate-list *workspace-list*)) -;; (add-group-in-workspace (copy-group group) (current-workspace))) +;; (add-frame-in-workspace (copy-frame frame) (current-workspace))) ;; (show-all-windows-in-workspace (current-workspace))) ;; -;;(defun circulate-workspace-up-copy-group () -;; "Circulate up in workspace copying current group in the next workspace" +;;(defun circulate-workspace-up-copy-frame () +;; "Circulate up in workspace copying current frame in the next workspace" ;; (no-focus) ;; (hide-all-windows-in-workspace (current-workspace)) -;; (let ((group (current-group))) +;; (let ((frame (current-frame))) ;; (setf *workspace-list* (rotate-list *workspace-list*)) -;; (unless (group-windows-already-in-workspace group (current-workspace)) -;; (add-group-in-workspace (copy-group group) (current-workspace)))) +;; (unless (frame-windows-already-in-workspace frame (current-workspace)) +;; (add-frame-in-workspace (copy-frame frame) (current-workspace)))) ;; (show-all-windows-in-workspace (current-workspace))) ;; ;; @@ -693,30 +693,30 @@ ;; (setf *workspace-list* (anti-rotate-list *workspace-list*)) ;; (show-all-windows-in-workspace (current-workspace))) ;; -;;(defun circulate-workspace-down-move-group () -;; "Circulate down in workspace moving current group in the next workspace" +;;(defun circulate-workspace-down-move-frame () +;; "Circulate down in workspace moving current frame in the next workspace" ;; (no-focus) ;; (hide-all-windows-in-workspace (current-workspace)) -;; (let ((group (current-group))) -;; (remove-group-in-workspace group (current-workspace)) +;; (let ((frame (current-frame))) +;; (remove-frame-in-workspace frame (current-workspace)) ;; (setf *workspace-list* (anti-rotate-list *workspace-list*)) -;; (add-group-in-workspace (copy-group group) (current-workspace))) +;; (add-frame-in-workspace (copy-frame frame) (current-workspace))) ;; (show-all-windows-in-workspace (current-workspace))) ;; -;;(defun circulate-workspace-down-copy-group () -;; "Circulate down in workspace copying current group in the next workspace" +;;(defun circulate-workspace-down-copy-frame () +;; "Circulate down in workspace copying current frame in the next workspace" ;; (no-focus) ;; (hide-all-windows-in-workspace (current-workspace)) -;; (let ((group (current-group))) +;; (let ((frame (current-frame))) ;; (setf *workspace-list* (anti-rotate-list *workspace-list*)) -;; (unless (group-windows-already-in-workspace group (current-workspace)) -;; (add-group-in-workspace (copy-group group) (current-workspace)))) +;; (unless (frame-windows-already-in-workspace frame (current-workspace)) +;; (add-frame-in-workspace (copy-frame frame) (current-workspace)))) ;; (show-all-windows-in-workspace (current-workspace))) ;; ;; ;; ;;(defun delete-current-window () -;; "Delete the current window in all groups and workspaces" +;; "Delete the current window in all frames and workspaces" ;; (let ((window (current-window))) ;; (when window ;; (no-focus) @@ -724,41 +724,41 @@ ;; (send-client-message window :WM_PROTOCOLS ;; (intern-atom *display* "WM_DELETE_WINDOW")))) ;; (focus-window (current-window)) -;; (show-all-group (current-workspace))) +;; (show-all-frame (current-workspace))) ;; ;; ;;(defun destroy-current-window () -;; "Destroy the current window in all groups and workspaces" +;; "Destroy the current window in all frames and workspaces" ;; (let ((window (current-window))) ;; (when window ;; (no-focus) ;; (remove-window-in-all-workspace window) ;; (kill-client *display* (xlib:window-id window)))) ;; (focus-window (current-window)) -;; (show-all-group (current-workspace))) +;; (show-all-frame (current-workspace))) ;; ;;(defun remove-current-window () -;; "Remove the current window in the current group" +;; "Remove the current window in the current frame" ;; (let ((window (current-window))) ;; (when window ;; (no-focus) ;; (hide-window window) -;; (remove-window-in-group (current-window) (current-group)))) +;; (remove-window-in-frame (current-window) (current-frame)))) ;; (focus-window (current-window)) -;; (show-all-group (current-workspace))) +;; (show-all-frame (current-workspace))) ;; -;;(defun remove-current-group () -;; "Remove the current group in the current workspace" -;; (minimize-group (current-group)) -;; (let ((group (current-group))) -;; (when group +;;(defun remove-current-frame () +;; "Remove the current frame in the current workspace" +;; (minimize-frame (current-frame)) +;; (let ((frame (current-frame))) +;; (when frame ;; (no-focus) -;; (dolist (window (group-window-list group)) +;; (dolist (window (frame-window-list frame)) ;; (when window ;; (hide-window window))) -;; (remove-group-in-workspace group (current-workspace)))) +;; (remove-frame-in-workspace frame (current-workspace)))) ;; (focus-window (current-window)) -;; (show-all-group (current-workspace))) +;; (show-all-frame (current-workspace))) ;; ;;(defun remove-current-workspace () ;; "Remove the current workspace" @@ -769,27 +769,27 @@ ;; (show-all-windows-in-workspace (current-workspace))))) ;; ;; -;;(defun unhide-all-windows-in-current-group () -;; "Unhide all hidden windows into the current group" +;;(defun unhide-all-windows-in-current-frame () +;; "Unhide all hidden windows into the current frame" ;; (let ((all-windows (get-all-windows)) ;; (hidden-windows (remove-if-not #'window-hidden-p ;; (copy-list (xlib:query-tree *root*)))) -;; (current-group (current-group))) +;; (current-frame (current-frame))) ;; (dolist (window (set-difference hidden-windows all-windows)) ;; (unhide-window window) ;; (process-new-window window) ;; (xlib:map-window window) -;; (adapt-window-to-group window current-group))) +;; (adapt-window-to-frame window current-frame))) ;; (focus-window (current-window)) -;; (show-all-group (current-workspace))) +;; (show-all-frame (current-workspace))) ;; ;; ;; ;; -;;(defun create-new-default-group () -;; "Create a new default group" -;; (minimize-group (current-group)) -;; (add-group-in-workspace (copy-group *default-group*) +;;(defun create-new-default-frame () +;; "Create a new default frame" +;; (minimize-frame (current-frame)) +;; (add-frame-in-workspace (copy-frame *default-frame*) ;; (current-workspace)) ;; (show-all-windows-in-workspace (current-workspace))) ;; @@ -804,52 +804,52 @@ ;; ;; ;;;;;,----- -;;;;;| Group moving +;;;;;| Frame moving ;;;;;`----- -;;(defun move-group (group dx dy) -;; "Move group" -;; (setf (group-x group) (+ (group-x group) dx) -;; (group-y group) (+ (group-y group) dy)) -;; (dolist (window (group-window-list group)) -;; (adapt-window-to-group window group)) -;; (show-all-group (current-workspace))) -;; -;;(defun move-group-to (group x y) -;; "Move group to" -;; (setf (group-x group) x -;; (group-y group) y) -;; (dolist (window (group-window-list group)) -;; (adapt-window-to-group window group)) -;; (focus-window (current-window)) -;; (show-all-group (current-workspace))) -;; -;; -;;(defun resize-group (group dx dy) -;; "Resize group" -;; (setf (group-width group) (max (+ (group-width group) dx) 100) -;; (group-height group) (max (+ (group-height group) dy) 100)) -;; (dolist (window (group-window-list group)) -;; (adapt-window-to-group window group)) -;; (show-all-group (current-workspace))) -;; -;;(defun force-window-in-group () -;; "Force the current window to move in the group (Useful only for transient windows)" -;; (let ((group (current-group)) +;;(defun move-frame (frame dx dy) +;; "Move frame" +;; (setf (frame-x frame) (+ (frame-x frame) dx) +;; (frame-y frame) (+ (frame-y frame) dy)) +;; (dolist (window (frame-window-list frame)) +;; (adapt-window-to-frame window frame)) +;; (show-all-frame (current-workspace))) +;; +;;(defun move-frame-to (frame x y) +;; "Move frame to" +;; (setf (frame-x frame) x +;; (frame-y frame) y) +;; (dolist (window (frame-window-list frame)) +;; (adapt-window-to-frame window frame)) +;; (focus-window (current-window)) +;; (show-all-frame (current-workspace))) +;; +;; +;;(defun resize-frame (frame dx dy) +;; "Resize frame" +;; (setf (frame-width frame) (max (+ (frame-width frame) dx) 100) +;; (frame-height frame) (max (+ (frame-height frame) dy) 100)) +;; (dolist (window (frame-window-list frame)) +;; (adapt-window-to-frame window frame)) +;; (show-all-frame (current-workspace))) +;; +;;(defun force-window-in-frame () +;; "Force the current window to move in the frame (Useful only for transient windows)" +;; (let ((frame (current-frame)) ;; (window (current-window))) ;; (when window -;; (setf (xlib:drawable-x window) (group-x group) -;; (xlib:drawable-y window) (group-y group)) +;; (setf (xlib:drawable-x window) (frame-x frame) +;; (xlib:drawable-y window) (frame-y frame)) ;; (show-all-windows-in-workspace (current-workspace))))) ;; -;;(defun force-window-center-in-group () -;; "Force the current window to move in the center of the group (Useful only for transient windows)" -;; (let ((group (current-group)) +;;(defun force-window-center-in-frame () +;; "Force the current window to move in the center of the frame (Useful only for transient windows)" +;; (let ((frame (current-frame)) ;; (window (current-window))) ;; (when window -;; (setf (xlib:drawable-x window) (truncate (+ (group-x group) -;; (/ (- (group-width group) (xlib:drawable-width window)) 2))) -;; (xlib:drawable-y window) (truncate (+ (group-y group) -;; (/ (- (group-height group) (xlib:drawable-height window)) 2)))) +;; (setf (xlib:drawable-x window) (truncate (+ (frame-x frame) +;; (/ (- (frame-width frame) (xlib:drawable-width window)) 2))) +;; (xlib:drawable-y window) (truncate (+ (frame-y frame) +;; (/ (- (frame-height frame) (xlib:drawable-height window)) 2)))) ;; (show-all-windows-in-workspace (current-workspace))))) ;; ;; Modified: clfswm/src/clfswm.lisp ============================================================================== --- clfswm/src/clfswm.lisp (original) +++ clfswm/src/clfswm.lisp Tue Mar 25 18:02:17 2008 @@ -35,7 +35,7 @@ (funcall-key-from-code *main-keys* code state)) -;; PHIL: TODO: focus-policy by group +;; PHIL: TODO: focus-policy by frame ;; :click, :sloppy, :nofocus (defun handle-button-press (&rest event-slots &key code state window root-x root-y &allow-other-keys) (declare (ignore event-slots)) @@ -74,7 +74,7 @@ (setf (xlib:drawable-border-width window) border-width)) (if (find-child window *current-root*) (case (window-type window) - (:normal (adapt-child-to-father window (find-father-group window *current-root*)) + (:normal (adapt-child-to-father window (find-father-frame window *current-root*)) (send-configuration-notify window)) (t (adjust-from-request))) (adjust-from-request)) @@ -97,24 +97,24 @@ (unhide-window window) (process-new-window window) (xlib:map-window window) - (show-all-childs))) + (show-all-children))) (defun handle-unmap-notify (&rest event-slots &key send-event-p event-window window &allow-other-keys) (declare (ignore event-slots)) (unless (and (not send-event-p) (not (xlib:window-equal window event-window))) - (when (find-child window *root-group*) - (remove-child-in-all-groups window) - (show-all-childs)))) + (when (find-child window *root-frame*) + (remove-child-in-all-frames window) + (show-all-children)))) (defun handle-destroy-notify (&rest event-slots &key send-event-p event-window window &allow-other-keys) (declare (ignore event-slots)) (unless (or send-event-p (xlib:window-equal window event-window)) - (when (find-child window *root-group*) - (remove-child-in-all-groups window) - (show-all-childs)))) + (when (find-child window *root-frame*) + (remove-child-in-all-frames window) + (show-all-children)))) @@ -125,8 +125,8 @@ (defun handle-exposure (&rest event-slots &key window &allow-other-keys) (declare (ignore event-slots)) - (awhen (find-group-window window *current-root*) - (display-group-info it))) + (awhen (find-frame-window window *current-root*) + (display-frame-info it))) (defun handle-create-notify (&rest event-slots) @@ -221,12 +221,12 @@ (netwm-set-properties) (xlib:display-force-output *display*) (setf *child-selection* nil) - (setf *root-group* (create-group :name "Root" :number 0 :layout #'tile-space-layout) - *current-root* *root-group* + (setf *root-frame* (create-frame :name "Root" :number 0 :layout #'tile-space-layout) + *current-root* *root-frame* *current-child* *current-root*) (call-hook *init-hook*) (process-existing-windows *screen*) - (show-all-childs) + (show-all-children) (grab-main-keys) (xlib:display-finish-output *display*)) Modified: clfswm/src/package.lisp ============================================================================== --- clfswm/src/package.lisp (original) +++ clfswm/src/package.lisp Tue Mar 25 18:02:17 2008 @@ -52,48 +52,48 @@ (defparameter *nw-hook-list* nil) -;;(defstruct group (number (incf *current-group-number*)) name +;;(defstruct frame (number (incf *current-frame-number*)) name ;; (x 0) (y 0) (w 1) (h 1) rx ry rw rh ;; layout window gc child) -;;; CONFIG - Default group datas -(defparameter *default-group-data* +;;; CONFIG - Default frame datas +(defparameter *default-frame-data* (list '(:tile-size 0.8) '(:tile-space-size 0.1))) -(defclass group () - ((name :initarg :name :accessor group-name :initform nil) - (number :initarg :number :accessor group-number :initform 0) +(defclass frame () + ((name :initarg :name :accessor frame-name :initform nil) + (number :initarg :number :accessor frame-number :initform 0) ;;; Float size between 0 and 1 - Manipulate only this variable and not real size - (x :initarg :x :accessor group-x :initform 0.1) - (y :initarg :y :accessor group-y :initform 0.1) - (w :initarg :w :accessor group-w :initform 0.8) - (h :initarg :h :accessor group-h :initform 0.8) + (x :initarg :x :accessor frame-x :initform 0.1) + (y :initarg :y :accessor frame-y :initform 0.1) + (w :initarg :w :accessor frame-w :initform 0.8) + (h :initarg :h :accessor frame-h :initform 0.8) ;;; Real size (integer) in screen size - Don't set directly this variables ;;; they may be recalculated by the layout manager. - (rx :initarg :rx :accessor group-rx :initform 0) - (ry :initarg :ry :accessor group-ry :initform 0) - (rw :initarg :rw :accessor group-rw :initform 800) - (rh :initarg :rh :accessor group-rh :initform 600) - (layout :initarg :layout :accessor group-layout :initform nil) - (nw-hook :initarg :nw-hook :accessor group-nw-hook :initform nil - :documentation "Hook done by the group when a new window is mapped") - (window :initarg :window :accessor group-window :initform nil) - (gc :initarg :gc :accessor group-gc :initform nil) - (child :initarg :child :accessor group-child :initform nil) - (data :initarg :data :accessor group-data - :initform *default-group-data* + (rx :initarg :rx :accessor frame-rx :initform 0) + (ry :initarg :ry :accessor frame-ry :initform 0) + (rw :initarg :rw :accessor frame-rw :initform 800) + (rh :initarg :rh :accessor frame-rh :initform 600) + (layout :initarg :layout :accessor frame-layout :initform nil) + (nw-hook :initarg :nw-hook :accessor frame-nw-hook :initform nil + :documentation "Hook done by the frame when a new window is mapped") + (window :initarg :window :accessor frame-window :initform nil) + (gc :initarg :gc :accessor frame-gc :initform nil) + (child :initarg :child :accessor frame-child :initform nil) + (data :initarg :data :accessor frame-data + :initform *default-frame-data* :documentation "An assoc list to store additional data"))) -(defparameter *root-group* nil - "Root of the root - ie the root group") +(defparameter *root-frame* nil + "Root of the root - ie the root frame") (defparameter *current-root* nil "The current fullscreen maximized child") (defparameter *current-child* nil "The current child with the focus") -(defparameter *show-root-group-p* nil) +(defparameter *show-root-frame-p* nil) (defparameter *main-keys* (make-hash-table :test 'equal)) @@ -108,10 +108,10 @@ "Set to t to open the next window in a new workspace or to a number to open in a numbered workspace") -(defparameter *open-next-window-in-new-group* nil - "Set to t to open the each next window in a new group -or set to :once open the next window in a new group and all -others in the same group") +(defparameter *open-next-window-in-new-frame* nil + "Set to t to open the each next window in a new frame +or set to :once open the next window in a new frame and all +others in the same frame") (defparameter *arrow-action* nil "Arrow action in the second mode") @@ -128,7 +128,7 @@ ;;; ;;; See clfswm.lisp for hooks examples. -;;; Init hook. This hook is run just after the first root group is created +;;; Init hook. This hook is run just after the first root frame is created (defparameter *init-hook* nil) ;;; Main mode hooks (set in clfswm.lisp) @@ -169,7 +169,7 @@ ;;; Second mode global variables (defparameter *motion-action* nil) (defparameter *motion-object* nil) -(defparameter *motion-start-group* nil) +(defparameter *motion-start-frame* nil) (defparameter *motion-dx* nil) (defparameter *motion-dy* nil) Modified: clfswm/src/xlib-util.lisp ============================================================================== --- clfswm/src/xlib-util.lisp (original) +++ clfswm/src/xlib-util.lisp Tue Mar 25 18:02:17 2008 @@ -70,7 +70,7 @@ (progn , at body) ((or xlib:match-error xlib:window-error xlib:drawable-error) (c) - (declare (ignore c))))) + (dbg c ',body)))) From pbrochard at common-lisp.net Thu Mar 27 07:29:17 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Thu, 27 Mar 2008 02:29:17 -0500 (EST) Subject: [clfswm-cvs] r56 - in clfswm: . src Message-ID: <20080327072917.32AE57212A@common-lisp.net> Author: pbrochard Date: Thu Mar 27 02:29:13 2008 New Revision: 56 Modified: clfswm/ChangeLog clfswm/TODO clfswm/src/bindings.lisp clfswm/src/clfswm-internal.lisp clfswm/src/clfswm-layout.lisp clfswm/src/clfswm.lisp Log: Do not raise windows with no-layout Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Thu Mar 27 02:29:13 2008 @@ -1,3 +1,8 @@ +2008-03-26 Philippe Brochard + + * src/clfswm-internal.lisp (select-next/previous-level): Don't use show-all-children + -> less flickering. + 2008-03-25 Philippe Brochard * src/clfswm-info.lisp (keys-from-list): new function. Modified: clfswm/TODO ============================================================================== --- clfswm/TODO (original) +++ clfswm/TODO Thu Mar 27 02:29:13 2008 @@ -33,6 +33,8 @@ get-frame-by-name (path): return the frame that its own frame has this name if it exists such a frame get-window-by-name (path): return the window that its own frame that its own frame has this name if it exists such a window. +- A better algorithm to display all children (ie: raise just needed children and with less filckering) + MAYBE ===== Modified: clfswm/src/bindings.lisp ============================================================================== --- clfswm/src/bindings.lisp (original) +++ clfswm/src/bindings.lisp Thu Mar 27 02:29:13 2008 @@ -80,15 +80,42 @@ ;;; Mouse actions +;;handle-configure-request + +(defun move-frame (frame orig-x orig-y) + (dolist (child (frame-child frame)) + (hide-all-children child)) + (with-slots (window) frame + (let ((done nil) + (dx (- (xlib:drawable-x window) orig-x)) + (dy (- (xlib:drawable-y window) orig-y))) + (labels ((motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) + (declare (ignore event-slots)) + (setf (xlib:drawable-x (frame-window frame)) (+ root-x dx) + (xlib:drawable-y (frame-window frame)) (+ root-y dy)) + (display-frame-info frame)) + (handle-event (&rest event-slots &key event-key &allow-other-keys) + (case event-key + (:motion-notify (apply #'motion-notify event-slots)) + (:button-release (setf done t))))) + (when frame + (loop until done + do (with-xlib-protect + (xlib:display-finish-output *display*) + (xlib:process-event *display* :handler #'handle-event))))))) + (show-all-children)) + + + (defun mouse-click-to-focus (window root-x root-y) "Focus the current frame or the current window father" - (declare (ignore root-x root-y)) (let ((to-replay t) (child window) (father (find-father-frame window *current-root*))) (unless father (setf child (find-frame-window window *current-root*) - father (find-father-frame child *current-root*))) + father (find-father-frame child *current-root*)) + (move-frame child root-x root-y)) (when (and child father (focus-all-children child father)) (show-all-children) (setf to-replay nil)) Modified: clfswm/src/clfswm-internal.lisp ============================================================================== --- clfswm/src/clfswm-internal.lisp (original) +++ clfswm/src/clfswm-internal.lisp Thu Mar 27 02:29:13 2008 @@ -454,19 +454,19 @@ (defun select-next-level () "Select the next level in frame" - (select-current-frame nil) + (select-current-frame :maybe) (when (frame-p *current-child*) (awhen (first (frame-child *current-child*)) (setf *current-child* it))) - (show-all-children)) + (select-current-frame t)) (defun select-previous-level () "Select the previous level in frame" (unless (equal *current-child* *current-root*) - (select-current-frame nil) + (select-current-frame :maybe) (awhen (find-father-frame *current-child*) (setf *current-child* it)) - (show-all-children))) + (select-current-frame t))) Modified: clfswm/src/clfswm-layout.lisp ============================================================================== --- clfswm/src/clfswm-layout.lisp (original) +++ clfswm/src/clfswm-layout.lisp Thu Mar 27 02:29:13 2008 @@ -71,7 +71,7 @@ (defmethod no-layout ((child xlib:window) father) (with-slots (rx ry rw rh) father - (values (1+ rx) (1+ ry) (- rw 2) (- rh 2) t))) + (values (1+ rx) (1+ ry) (- rw 2) (- rh 2) nil))) (defmethod no-layout ((child frame) father) (with-slots ((cx x) (cy y) (cw w) (ch h)) child @@ -106,7 +106,7 @@ (round (+ (frame-ry father) (truncate (* (truncate (/ pos n)) dy)) 1)) (round (- dx 2)) (round (- dy 2)) - nil))) + t))) (defun set-tile-layout () "Tile child in its frame" Modified: clfswm/src/clfswm.lisp ============================================================================== --- clfswm/src/clfswm.lisp (original) +++ clfswm/src/clfswm.lisp Thu Mar 27 02:29:13 2008 @@ -180,7 +180,7 @@ (defun main-loop () (loop (with-xlib-protect - (xlib:display-finish-output *display*) + (xlib:display-finish-output *display*) (xlib:process-event *display* :handler #'handle-event)))) ;;(dbg "Main loop finish" c))))) From pbrochard at common-lisp.net Thu Mar 27 14:09:51 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Thu, 27 Mar 2008 09:09:51 -0500 (EST) Subject: [clfswm-cvs] r57 - in clfswm: . src Message-ID: <20080327140951.D7C55702F9@common-lisp.net> Author: pbrochard Date: Thu Mar 27 09:09:49 2008 New Revision: 57 Modified: clfswm/ChangeLog clfswm/src/bindings.lisp clfswm/src/clfswm-internal.lisp clfswm/src/clfswm-layout.lisp clfswm/src/clfswm-util.lisp Log: Use :first-only to raise only the first child (useful with no-layout). Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Thu Mar 27 09:09:49 2008 @@ -1,3 +1,14 @@ +2008-03-27 Philippe Brochard + + * src/clfswm-layout.lisp (no-layout): Use :first-only to raise only the + first child. + + * src/clfswm-internal.lisp (hide-all): Split hide-all-children in hide-all + and hide-all-children. + (raise-if-needed): New function. + (show-child): Use a first-p parameter to raise windows only when they are + first child. + 2008-03-26 Philippe Brochard * src/clfswm-internal.lisp (select-next/previous-level): Don't use show-all-children Modified: clfswm/src/bindings.lisp ============================================================================== --- clfswm/src/bindings.lisp (original) +++ clfswm/src/bindings.lisp Thu Mar 27 09:09:49 2008 @@ -83,8 +83,7 @@ ;;handle-configure-request (defun move-frame (frame orig-x orig-y) - (dolist (child (frame-child frame)) - (hide-all-children child)) + (hide-all-children frame) (with-slots (window) frame (let ((done nil) (dx (- (xlib:drawable-x window) orig-x)) @@ -115,7 +114,8 @@ (unless father (setf child (find-frame-window window *current-root*) father (find-father-frame child *current-root*)) - (move-frame child root-x root-y)) + (when child + (move-frame child root-x root-y))) (when (and child father (focus-all-children child father)) (show-all-children) (setf to-replay nil)) Modified: clfswm/src/clfswm-internal.lisp ============================================================================== --- clfswm/src/clfswm-internal.lisp (original) +++ clfswm/src/clfswm-internal.lisp Thu Mar 27 09:09:49 2008 @@ -327,37 +327,44 @@ (xlib:drawable-height window) rh) raise-p)))) - -(defgeneric show-child (child father)) -(defgeneric hide-child (child)) -(defmethod show-child ((frame frame) father) + + +(defun raise-if-needed (window raise-p first-p) + (when (or (eql raise-p t) + (and (eql raise-p :first-only) first-p)) + (raise-window window))) + +(defgeneric show-child (child father first-p)) + +(defmethod show-child ((frame frame) father first-p) (with-xlib-protect (with-slots (window) frame (let ((raise-p (adapt-child-to-father frame father))) (when (or *show-root-frame-p* (not (equal frame *current-root*))) (setf (xlib:window-background window) (get-color "Black")) (xlib:map-window window) - (when raise-p - (raise-window window)) + (raise-if-needed window raise-p first-p) (display-frame-info frame)))))) -(defmethod hide-child ((frame frame)) - (with-xlib-protect - (with-slots (window) frame - (xlib:unmap-window window)))) - - -(defmethod show-child ((window xlib:window) father) +(defmethod show-child ((window xlib:window) father first-p) (with-xlib-protect (let ((raise-p nil)) (when (eql (window-type window) :normal) (setf raise-p (adapt-child-to-father window father))) (xlib:map-window window) - (when raise-p - (raise-window window))))) + (raise-if-needed window raise-p first-p)))) + + + +(defgeneric hide-child (child)) + +(defmethod hide-child ((frame frame)) + (with-xlib-protect + (with-slots (window) frame + (xlib:unmap-window window)))) (defmethod hide-child ((window xlib:window)) (hide-window window)) @@ -403,25 +410,29 @@ (defun show-all-children () "Show all children from *current-root*" - (labels ((rec (root father first-p) - (show-child root father) + (labels ((rec (root father first-p first-father) + (show-child root father first-p) (select-child root (if (equal root *current-child*) t - (if first-p :maybe nil))) + (if (and first-p first-father) :maybe nil))) (when (frame-p root) (let ((first-child (first (frame-child root)))) (dolist (child (reverse (frame-child root))) - (rec child root (and first-p (equal child first-child)))))))) - (rec *current-root* nil t) + (rec child root (equal child first-child) first-p)))))) + (rec *current-root* nil t t) (set-focus-to-current-child))) - (defun hide-all-children (root) - (hide-child root) + "Hide all root children" (when (frame-p root) (dolist (child (frame-child root)) - (hide-all-children child)))) + (hide-all child)))) + +(defun hide-all (root) + "Hide root and all its children" + (hide-child root) + (hide-all-children root)) @@ -431,7 +442,7 @@ (let ((frame-is-root? (and (equal *current-root* *current-child*) (not (equal *current-root* *root-frame*))))) (if frame-is-root? - (hide-all-children *current-root*) + (hide-all *current-root*) (select-current-frame nil)) (let ((father (find-father-frame *current-child*))) (when (frame-p father) @@ -490,13 +501,13 @@ (defun enter-frame () "Enter in the selected frame - ie make it the root frame" - (hide-all-children *current-root*) + (hide-all *current-root*) (setf *current-root* *current-child*) (show-all-children)) (defun leave-frame () "Leave the selected frame - ie make its father the root frame" - (hide-all-children *current-root*) + (hide-all *current-root*) (awhen (find-father-frame *current-root*) (when (frame-p it) (setf *current-root* it))) @@ -505,13 +516,13 @@ (defun switch-to-root-frame () "Switch to the root frame" - (hide-all-children *current-root*) + (hide-all *current-root*) (setf *current-root* *root-frame*) (show-all-children)) (defun switch-and-select-root-frame () "Switch and select the root frame" - (hide-all-children *current-root*) + (hide-all *current-root*) (setf *current-root* *root-frame*) (setf *current-child* *current-root*) (show-all-children)) @@ -519,7 +530,7 @@ (defun toggle-show-root-frame () "Show/Hide the root frame" - (hide-all-children *current-root*) + (hide-all *current-root*) (setf *show-root-frame-p* (not *show-root-frame-p*)) (show-all-children)) Modified: clfswm/src/clfswm-layout.lisp ============================================================================== --- clfswm/src/clfswm-layout.lisp (original) +++ clfswm/src/clfswm-layout.lisp Thu Mar 27 09:09:49 2008 @@ -33,6 +33,7 @@ ;;; child in screen size (integer) as 5 values (rx, ry, rw, rh, raise-p). ;;; This method can use the float size of the child (x, y ,w , h). ;;; It can be specialised for xlib:window or frame +;;; Raise-p is nil or :first-only or t ;;; 2- Define a seter function for your layout ;;; 3- Register your new layout with register-layout. @@ -71,7 +72,11 @@ (defmethod no-layout ((child xlib:window) father) (with-slots (rx ry rw rh) father - (values (1+ rx) (1+ ry) (- rw 2) (- rh 2) nil))) + (values (1+ rx) + (1+ ry) + (- rw 2) + (- rh 2) + :first-only))) (defmethod no-layout ((child frame) father) (with-slots ((cx x) (cy y) (cw w) (ch h)) child @@ -80,7 +85,7 @@ (round (+ (* cy frh) fry)) (round (* cw frw)) (round (* ch frh)) - t)))) + :first-only)))) (defun set-no-layout () "Maximize windows in there frame - leave frame to there size (no layout)" Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Thu Mar 27 09:09:49 2008 @@ -163,14 +163,14 @@ (defun cut-current-child () "Cut the current child to the selection" (copy-current-child) - (hide-all-children *current-child*) + (hide-all *current-child*) (remove-child-in-frame *current-child* (find-father-frame *current-child* *current-root*)) (setf *current-child* *current-root*) (show-all-children)) (defun remove-current-child () "Remove the current child from its father frame" - (hide-all-children *current-child*) + (hide-all *current-child*) (remove-child-in-frame *current-child* (find-father-frame *current-child* *current-root*)) (setf *current-child* *current-root*) (leave-second-mode)) @@ -332,7 +332,7 @@ ;;; Focus by functions (defun focus-frame-by (frame) (when (frame-p frame) - (hide-all-children *current-root*) + (hide-all *current-root*) (focus-all-children frame (or (find-father-frame frame *current-root*) (find-father-frame frame) *root-frame*)))) @@ -369,7 +369,7 @@ ;;; Delete by functions (defun delete-frame-by (frame) - (hide-all-children *current-root*) + (hide-all *current-root*) (unless (equal frame *root-frame*) (when (equal frame *current-root*) (setf *current-root* *root-frame*)) @@ -392,7 +392,7 @@ ;;; Move by function (defun move-current-child-by (child frame-dest) (when (and child (frame-p frame-dest)) - (hide-all-children *current-root*) + (hide-all *current-root*) (remove-child-in-frame child (find-father-frame child)) (pushnew child (frame-child frame-dest)) (focus-all-children child frame-dest))) @@ -415,7 +415,7 @@ ;;; Copy by function (defun copy-current-child-by (child frame-dest) (when (and child (frame-p frame-dest)) - (hide-all-children *current-root*) + (hide-all *current-root*) (pushnew child (frame-child frame-dest)) (focus-all-children child frame-dest))) From pbrochard at common-lisp.net Fri Mar 28 23:23:47 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Fri, 28 Mar 2008 18:23:47 -0500 (EST) Subject: [clfswm-cvs] r58 - in clfswm: . src Message-ID: <20080328232347.05B375C18F@common-lisp.net> Author: pbrochard Date: Fri Mar 28 18:23:43 2008 New Revision: 58 Modified: clfswm/ChangeLog clfswm/TODO clfswm/clfswm.asd clfswm/src/bindings-second-mode.lisp clfswm/src/bindings.lisp clfswm/src/clfswm-internal.lisp clfswm/src/clfswm-layout.lisp clfswm/src/clfswm-util.lisp clfswm/src/tools.lisp Log: Mouse move and resize. New functions for coordinates conversions Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Fri Mar 28 18:23:43 2008 @@ -1,3 +1,13 @@ +2008-03-28 Philippe Brochard + + * src/clfswm-util.lisp (mouse-click-to-focus-and-move) + (mouse-click-to-focus-and-resize): New functions. + + * src/clfswm-internal.lisp (*-fl->px): Convert float coordinates to pixel. + (*-px->fl): Convert pixel coordinates to float. + + * src/tools.lisp (call-hook): Move call-hook to tools.lisp. + 2008-03-27 Philippe Brochard * src/clfswm-layout.lisp (no-layout): Use :first-only to raise only the Modified: clfswm/TODO ============================================================================== --- clfswm/TODO (original) +++ clfswm/TODO Fri Mar 28 18:23:43 2008 @@ -8,7 +8,9 @@ Should handle these soon. Rewrote all useful code present in 0801 version. -- mouse operations [Philippe] + +- mouse operations: A beginnig is done. Now in second mode: focus child+ resize/move window's father [Philippe] + - Hide a window when its size is less than hint minimal size. [Philippe] - Bind alt+1/2/3/4... to a particular child: [Philippe] If bind exist -> focus this child @@ -21,8 +23,6 @@ - Ensure-unique-number/name (new function) [Philippe] -- Float->Screen Screen->Float: convert geometry from 0 to 1 to pixel and from pixel to 0 to 1. [Philippe] - - Raise/lower frame [Philippe] - Hide/Unhide frame [Philippe] @@ -33,8 +33,6 @@ get-frame-by-name (path): return the frame that its own frame has this name if it exists such a frame get-window-by-name (path): return the window that its own frame that its own frame has this name if it exists such a window. -- A better algorithm to display all children (ie: raise just needed children and with less filckering) - MAYBE ===== Modified: clfswm/clfswm.asd ============================================================================== --- clfswm/clfswm.asd (original) +++ clfswm/clfswm.asd Fri Mar 28 18:23:43 2008 @@ -43,13 +43,13 @@ (:file "clfswm-query" :depends-on ("package" "config")) (:file "clfswm-layout" - :depends-on ("package" "clfswm-util" "clfswm-info")) + :depends-on ("package" "clfswm-internal" "clfswm-util" "clfswm-info")) (:file "clfswm-pack" :depends-on ("clfswm" "clfswm-util" "clfswm-second-mode")) (:file "clfswm-nw-hooks" :depends-on ("package" "clfswm-util" "clfswm-info")) (:file "bindings" - :depends-on ("clfswm" "clfswm-internal")) + :depends-on ("clfswm" "clfswm-internal" "clfswm-util")) (:file "bindings-second-mode" :depends-on ("clfswm" "clfswm-util" "clfswm-query" "bindings" "clfswm-pack")))))) Modified: clfswm/src/bindings-second-mode.lisp ============================================================================== --- clfswm/src/bindings-second-mode.lisp (original) +++ clfswm/src/bindings-second-mode.lisp Fri Mar 28 18:23:43 2008 @@ -361,11 +361,20 @@ ;;; Mouse action -(defun sm-mouse-click-to-focus (window root-x root-y) - "Give the focus to the clicked child" +(defun sm-mouse-click-to-focus-and-move (window root-x root-y) + "Move and focus the current child" (declare (ignore window)) (let ((win (find-window-under-mouse root-x root-y))) - (mouse-click-to-focus win root-x root-y))) + (unless (equal win (frame-window *current-root*)) + (mouse-click-to-focus-and-move win root-x root-y)))) + + +(defun sm-mouse-click-to-focus-and-resize (window root-x root-y) + "Resize and focus the current child" + (declare (ignore window)) + (let ((win (find-window-under-mouse root-x root-y))) + (unless (equal win (frame-window *current-root*)) + (mouse-click-to-focus-and-resize win root-x root-y)))) @@ -400,7 +409,8 @@ -(define-second-mouse (1) 'sm-mouse-click-to-focus) +(define-second-mouse (1) 'sm-mouse-click-to-focus-and-move) +(define-second-mouse (3) 'sm-mouse-click-to-focus-and-resize) (define-second-mouse (4) 'sm-mouse-select-next-level) (define-second-mouse (5) 'sm-mouse-select-previous-level) Modified: clfswm/src/bindings.lisp ============================================================================== --- clfswm/src/bindings.lisp (original) +++ clfswm/src/bindings.lisp Fri Mar 28 18:23:43 2008 @@ -79,97 +79,8 @@ ;;; Mouse actions - -;;handle-configure-request - -(defun move-frame (frame orig-x orig-y) - (hide-all-children frame) - (with-slots (window) frame - (let ((done nil) - (dx (- (xlib:drawable-x window) orig-x)) - (dy (- (xlib:drawable-y window) orig-y))) - (labels ((motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) - (declare (ignore event-slots)) - (setf (xlib:drawable-x (frame-window frame)) (+ root-x dx) - (xlib:drawable-y (frame-window frame)) (+ root-y dy)) - (display-frame-info frame)) - (handle-event (&rest event-slots &key event-key &allow-other-keys) - (case event-key - (:motion-notify (apply #'motion-notify event-slots)) - (:button-release (setf done t))))) - (when frame - (loop until done - do (with-xlib-protect - (xlib:display-finish-output *display*) - (xlib:process-event *display* :handler #'handle-event))))))) - (show-all-children)) - - - -(defun mouse-click-to-focus (window root-x root-y) - "Focus the current frame or the current window father" - (let ((to-replay t) - (child window) - (father (find-father-frame window *current-root*))) - (unless father - (setf child (find-frame-window window *current-root*) - father (find-father-frame child *current-root*)) - (when child - (move-frame child root-x root-y))) - (when (and child father (focus-all-children child father)) - (show-all-children) - (setf to-replay nil)) - (if to-replay - (replay-button-event) - (stop-button-event)))) - - -(defun test-mouse-binding (window root-x root-y) - (dbg window root-x root-y) - (replay-button-event)) - - - -(defun mouse-select-next-level (window root-x root-y) - "Select the next level in frame" - (declare (ignore root-x root-y)) - (let ((frame (find-frame-window window))) - (when (or frame (xlib:window-equal window *root*)) - (select-next-level)) - (replay-button-event))) - - - -(defun mouse-select-previous-level (window root-x root-y) - "Select the previous level in frame" - (declare (ignore root-x root-y)) - (let ((frame (find-frame-window window))) - (when (or frame (xlib:window-equal window *root*)) - (select-previous-level)) - (replay-button-event))) - - - -(defun mouse-enter-frame (window root-x root-y) - "Enter in the selected frame - ie make it the root frame" - (declare (ignore root-x root-y)) - (let ((frame (find-frame-window window))) - (when (or frame (xlib:window-equal window *root*)) - (enter-frame)) - (replay-button-event))) - - - -(defun mouse-leave-frame (window root-x root-y) - "Leave the selected frame - ie make its father the root frame" - (declare (ignore root-x root-y)) - (let ((frame (find-frame-window window))) - (when (or frame (xlib:window-equal window *root*)) - (leave-frame)) - (replay-button-event))) - - -(define-main-mouse (1) 'mouse-click-to-focus) +(define-main-mouse (1) 'mouse-click-to-focus-and-move) +(define-main-mouse (3) 'mouse-click-to-focus-and-resize) (define-main-mouse (4) 'mouse-select-next-level) (define-main-mouse (5) 'mouse-select-previous-level) Modified: clfswm/src/clfswm-internal.lisp ============================================================================== --- clfswm/src/clfswm-internal.lisp (original) +++ clfswm/src/clfswm-internal.lisp Fri Mar 28 18:23:43 2008 @@ -26,19 +26,43 @@ (in-package :clfswm) -;;; Minimal hook -(defun call-hook (hook &optional args) - "Call a hook (a function, a symbol or a list of functions) -Return the result of the last hook" - (let ((result nil)) - (labels ((rec (hook) - (when hook - (typecase hook - (cons (dolist (h hook) - (rec h))) - (t (setf result (apply hook args))))))) - (rec hook) - result))) +;;; Conversion functions +;;; Float -> Pixel conversion +(defun x-fl->px (x father) + "Convert float X coordinate to pixel" + (round (+ (* x (frame-rw father)) (frame-rx father)))) + +(defun y-fl->px (y father) + "Convert float Y coordinate to pixel" + (round (+ (* y (frame-rh father)) (frame-ry father)))) + +(defun w-fl->px (w father) + "Convert float Width coordinate to pixel" + (round (* w (frame-rw father)))) + +(defun h-fl->px (h father) + "Convert float Height coordinate to pixel" + (round (* h (frame-rh father)))) + +;;; Pixel -> Float conversion +(defun x-px->fl (x father) + "Convert pixel X coordinate to float" + (/ (- x (frame-rx father)) (frame-rw father))) + +(defun y-px->fl (y father) + "Convert pixel Y coordinate to float" + (/ (- y (frame-ry father)) (frame-rh father))) + +(defun w-px->fl (w father) + "Convert pixel Width coordinate to float" + (/ w (frame-rw father))) + +(defun h-px->fl (h father) + "Convert pixel Height coordinate to float" + (/ h (frame-rh father))) + + + @@ -555,14 +579,21 @@ (rec child father)) change)) -(defun set-current-child (child father) - "Set *current-child* to child - Return t if something has change" - (cond ((and (frame-p child) (not (equal *current-child* child))) - (setf *current-child* child) - t) - ((and (frame-p father) (not (equal *current-child* father))) - (setf *current-child* father) - t))) + +(defgeneric set-current-child (child father)) + +(defmethod set-current-child ((child xlib:window) father) + (unless (equal *current-child* father) + (setf *current-child* father) + t)) + +(defmethod set-current-child ((child frame) father) + (declare (ignore father)) + (unless (equal *current-child* child) + (setf *current-child* child) + t)) + + (defun set-current-root (father) "Set current root if father is not in current root" @@ -624,22 +655,6 @@ -;;(defun do-all-frames-nw-hook (window) -;; "Call nw-hook of each frame. A hook must return one value or a list of two values. -;;If the value or the first value is true then the default nw-hook is not executed. -;;If the second value is true then no more frame can do an action with the window (ie leave the loop)." -;; (let ((result nil)) -;; (with-all-frames (*root-frame* frame) -;; (let ((ret (call-hook (frame-nw-hook frame) (list frame window)))) -;; (typecase ret -;; (cons (when (first ret) -;; (setf result t)) -;; (when (second ret) -;; (return-from do-all-frames-nw-hook result))) -;; (t (when ret -;; (setf result t)))))) -;; result)) - (defun do-all-frames-nw-hook (window) "Call nw-hook of each frame." (let ((found nil)) @@ -673,10 +688,10 @@ -;;(defun hide-existing-windows (screen) -;; "Hide all existing windows in screen" -;; (dolist (win (xlib:query-tree (xlib:screen-root screen))) -;; (hide-window win))) +(defun hide-existing-windows (screen) + "Hide all existing windows in screen" + (dolist (win (xlib:query-tree (xlib:screen-root screen))) + (hide-window win))) (defun process-existing-windows (screen) "Windows present when clfswm starts up must be absorbed by clfswm." Modified: clfswm/src/clfswm-layout.lisp ============================================================================== --- clfswm/src/clfswm-layout.lisp (original) +++ clfswm/src/clfswm-layout.lisp Fri Mar 28 18:23:43 2008 @@ -79,13 +79,13 @@ :first-only))) (defmethod no-layout ((child frame) father) - (with-slots ((cx x) (cy y) (cw w) (ch h)) child - (with-slots ((frx rx) (fry ry) (frw rw) (frh rh)) father - (values (round (+ (* cx frw) frx)) - (round (+ (* cy frh) fry)) - (round (* cw frw)) - (round (* ch frh)) - :first-only)))) + (values (x-fl->px (frame-x child) father) + (y-fl->px (frame-y child) father) + (w-fl->px (frame-w child) father) + (h-fl->px (frame-h child) father) + :first-only)) + + (defun set-no-layout () "Maximize windows in there frame - leave frame to there size (no layout)" Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Fri Mar 28 18:23:43 2008 @@ -120,7 +120,7 @@ (defun find-window-under-mouse (x y) "Return the child window under the mouse" (with-xlib-protect - (let ((win nil)) + (let ((win *root*)) (with-all-windows-frames (*current-root* child) (when (and (<= (xlib:drawable-x child) x (+ (xlib:drawable-x child) (xlib:drawable-width child))) (<= (xlib:drawable-y child) y (+ (xlib:drawable-y child) (xlib:drawable-height child)))) @@ -486,6 +486,143 @@ + + +;;; Mouse utilities +(defun move-frame (frame father orig-x orig-y) + (hide-all-children frame) + (with-slots (window) frame + (raise-window window) + (let ((done nil) + (dx (- (xlib:drawable-x window) orig-x)) + (dy (- (xlib:drawable-y window) orig-y))) + (labels ((motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) + (declare (ignore event-slots)) + (setf (xlib:drawable-x window) (+ root-x dx) + (xlib:drawable-y window) (+ root-y dy)) + (display-frame-info frame)) + (handle-event (&rest event-slots &key event-key &allow-other-keys) + (case event-key + (:motion-notify (apply #'motion-notify event-slots)) + (:button-release (setf done t))) + t)) + (when frame + (loop until done + do (with-xlib-protect + (xlib:display-finish-output *display*) + (xlib:process-event *display* :handler #'handle-event)))) + (setf (frame-x frame) (x-px->fl (xlib:drawable-x window) father) + (frame-y frame) (y-px->fl (xlib:drawable-y window) father)) + (show-all-children))))) + + +(defun resize-frame (frame father orig-x orig-y) + (hide-all-children frame) + (with-slots (window) frame + (raise-window window) + (let ((done nil) + (dx (- (xlib:drawable-x window) orig-x)) + (dy (- (xlib:drawable-y window) orig-y)) + (lx orig-x) + (ly orig-y)) + (labels ((motion-notify (&rest event-slots &key root-x root-y &allow-other-keys) + (declare (ignore event-slots)) + (setf (xlib:drawable-width window) (max (+ (xlib:drawable-width window) (- root-x lx)) 10) + (xlib:drawable-height window) (max (+ (xlib:drawable-height window) (- root-y ly)) 10) + dx (- dx (- root-x lx)) + dy (- dy (- root-y ly)) + lx root-x ly root-y) + (display-frame-info frame)) + (handle-event (&rest event-slots &key event-key &allow-other-keys) + (case event-key + (:motion-notify (apply #'motion-notify event-slots)) + (:button-release (setf done t))) + t)) + (when frame + (loop until done + do (with-xlib-protect + (xlib:display-finish-output *display*) + (xlib:process-event *display* :handler #'handle-event)))) + (setf (frame-w frame) (w-px->fl (xlib:drawable-width window) father) + (frame-h frame) (h-px->fl (xlib:drawable-height window) father)) + (show-all-children))))) + + + +(defun mouse-click-to-focus-generic (window root-x root-y mouse-fn) + "Focus the current frame or focus the current window father +mouse-fun is #'move-frame or #'resize-frame" + (let ((to-replay t) + (child window) + (father (find-father-frame window *current-root*))) + (unless father + (setf child (find-frame-window window *current-root*) + father (find-father-frame child *current-root*)) + (when child + (funcall mouse-fn child father root-x root-y))) + (when (and child father (focus-all-children child father)) + (show-all-children) + (setf to-replay nil)) + (if to-replay + (replay-button-event) + (stop-button-event)))) + +(defun mouse-click-to-focus-and-move (window root-x root-y) + "Move and focus the current frame or focus the current window father" + (mouse-click-to-focus-generic window root-x root-y #'move-frame)) + +(defun mouse-click-to-focus-and-resize (window root-x root-y) + "Resize and focus the current frame or focus the current window father" + (mouse-click-to-focus-generic window root-x root-y #'resize-frame)) + + + +(defun test-mouse-binding (window root-x root-y) + (dbg window root-x root-y) + (replay-button-event)) + + + +(defun mouse-select-next-level (window root-x root-y) + "Select the next level in frame" + (declare (ignore root-x root-y)) + (let ((frame (find-frame-window window))) + (when (or frame (xlib:window-equal window *root*)) + (select-next-level)) + (replay-button-event))) + + + +(defun mouse-select-previous-level (window root-x root-y) + "Select the previous level in frame" + (declare (ignore root-x root-y)) + (let ((frame (find-frame-window window))) + (when (or frame (xlib:window-equal window *root*)) + (select-previous-level)) + (replay-button-event))) + + + +(defun mouse-enter-frame (window root-x root-y) + "Enter in the selected frame - ie make it the root frame" + (declare (ignore root-x root-y)) + (let ((frame (find-frame-window window))) + (when (or frame (xlib:window-equal window *root*)) + (enter-frame)) + (replay-button-event))) + + + +(defun mouse-leave-frame (window root-x root-y) + "Leave the selected frame - ie make its father the root frame" + (declare (ignore root-x root-y)) + (let ((frame (find-frame-window window))) + (when (or frame (xlib:window-equal window *root*)) + (leave-frame)) + (replay-button-event))) + + + ;;;;;,----- ;;;;;| Various definitions ;;;;;`----- @@ -496,369 +633,10 @@ ;; *arrow-action* nil ;; *pager-arrow-action* nil)) ;; -;;(defun rotate-window-up () -;; "Rotate up windows in the current frame" -;; (setf (frame-window-list (current-frame)) -;; (rotate-list (frame-window-list (current-frame)))) -;; (adapt-window-to-frame (current-window) (current-frame)) -;; (focus-window (current-window)) -;; (show-all-frame (current-workspace))) -;; -;;(defun rotate-window-down () -;; "Rotate down windows in the current frame" -;; (setf (frame-window-list (current-frame)) -;; (anti-rotate-list (frame-window-list (current-frame)))) -;; (adapt-window-to-frame (current-window) (current-frame)) -;; (focus-window (current-window)) -;; (show-all-frame (current-workspace))) -;; -;; -;;(defun maximize-frame (frame) -;; "Maximize the frame" -;; (when frame -;; (unless (frame-fullscreenp frame) -;; (setf (frame-fullscreenp frame) t) -;; (show-all-windows-in-workspace (current-workspace))))) -;; -;;(defun minimize-frame (frame) -;; "Minimize the frame" -;; (when frame -;; (when (frame-fullscreenp frame) -;; (setf (frame-fullscreenp frame) nil) -;; (show-all-windows-in-workspace (current-workspace))))) -;; -;;(defun toggle-maximize-frame (frame) -;; "Maximize/minimize a frame" -;; (if (frame-fullscreenp frame) -;; (minimize-frame frame) -;; (maximize-frame frame))) -;; -;; -;;(defun toggle-maximize-current-frame () -;; "Maximize/minimize the current frame" -;; (toggle-maximize-frame (current-frame))) -;; -;; -;;(defun renumber-workspaces () -;; "Reset workspaces numbers (1 for current workspace, 2 for the second...) " -;; (hide-all-windows-in-workspace (current-workspace)) -;; (setf *current-workspace-number* 0) -;; (loop for workspace in *workspace-list* do -;; (setf (workspace-number workspace) (incf *current-workspace-number*))) -;; (show-all-windows-in-workspace (current-workspace))) -;; -;; -;;(defun sort-workspaces () -;; "Sort workspaces by numbers" -;; (hide-all-windows-in-workspace (current-workspace)) -;; (setf *workspace-list* (sort *workspace-list* -;; #'(lambda (x y) -;; (< (workspace-number x) (workspace-number y))))) -;; (show-all-windows-in-workspace (current-workspace))) -;; -;; -;; -;; -;;(defun circulate-frame-up () -;; "Circulate up in frame" -;; (banish-pointer) -;; (minimize-frame (current-frame)) -;; (no-focus) -;; (setf (workspace-frame-list (current-workspace)) -;; (rotate-list (workspace-frame-list (current-workspace)))) -;; (adapt-window-to-frame (current-window) (current-frame)) -;; (focus-window (current-window)) -;; (show-all-frame (current-workspace))) -;; -;; -;;(defun circulate-frame-up-move-window () -;; "Circulate up in frame moving the current window in the next frame" -;; (banish-pointer) -;; (minimize-frame (current-frame)) -;; (no-focus) -;; (let ((window (current-window))) -;; (remove-window-in-frame window (current-frame)) -;; (focus-window (current-window)) -;; (setf (workspace-frame-list (current-workspace)) -;; (rotate-list (workspace-frame-list (current-workspace)))) -;; (add-window-in-frame window (current-frame))) -;; (adapt-window-to-frame (current-window) (current-frame)) -;; (focus-window (current-window)) -;; (show-all-frame (current-workspace))) -;; -;;(defun circulate-frame-up-copy-window () -;; "Circulate up in frame copying the current window in the next frame" -;; (banish-pointer) -;; (minimize-frame (current-frame)) -;; (no-focus) -;; (let ((window (current-window))) -;; (setf (workspace-frame-list (current-workspace)) -;; (rotate-list (workspace-frame-list (current-workspace)))) -;; (unless (window-already-in-workspace window (current-workspace)) -;; (add-window-in-frame window (current-frame)))) -;; (adapt-window-to-frame (current-window) (current-frame)) -;; (focus-window (current-window)) -;; (show-all-frame (current-workspace))) -;; -;; -;; -;;(defun circulate-frame-down () -;; "Circulate down in frame" -;; (banish-pointer) -;; (minimize-frame (current-frame)) -;; (no-focus) -;; (setf (workspace-frame-list (current-workspace)) -;; (anti-rotate-list (workspace-frame-list (current-workspace)))) -;; (adapt-window-to-frame (current-window) (current-frame)) -;; (focus-window (current-window)) -;; (show-all-frame (current-workspace))) -;; -;;(defun circulate-frame-down-move-window () -;; "Circulate down in frame moving the current window in the next frame" -;; (banish-pointer) -;; (minimize-frame (current-frame)) -;; (no-focus) -;; (let ((window (current-window))) -;; (remove-window-in-frame window (current-frame)) -;; (focus-window (current-window)) -;; (setf (workspace-frame-list (current-workspace)) -;; (anti-rotate-list (workspace-frame-list (current-workspace)))) -;; (add-window-in-frame window (current-frame))) -;; (adapt-window-to-frame (current-window) (current-frame)) -;; (focus-window (current-window)) -;; (show-all-frame (current-workspace))) -;; -;;(defun circulate-frame-down-copy-window () -;; "Circulate down in frame copying the current window in the next frame" -;; (banish-pointer) -;; (minimize-frame (current-frame)) -;; (no-focus) -;; (let ((window (current-window))) -;; (setf (workspace-frame-list (current-workspace)) -;; (anti-rotate-list (workspace-frame-list (current-workspace)))) -;; (unless (window-already-in-workspace window (current-workspace)) -;; (add-window-in-frame window (current-frame)))) -;; (adapt-window-to-frame (current-window) (current-frame)) -;; (focus-window (current-window)) -;; (show-all-frame (current-workspace))) -;; -;; -;; -;; -;; -;;(defun circulate-workspace-by-number (number) -;; "Focus a workspace given its number" -;; (no-focus) -;; (hide-all-windows-in-workspace (current-workspace)) -;; (dotimes (i (length *workspace-list*)) -;; (when (= (workspace-number (current-workspace)) number) -;; (return)) -;; (setf *workspace-list* (rotate-list *workspace-list*))) -;; (show-all-windows-in-workspace (current-workspace))) -;; -;; -;;(defun circulate-workspace-up () -;; "Circulate up in workspace" -;; (no-focus) -;; (hide-all-windows-in-workspace (current-workspace)) -;; (setf *workspace-list* (rotate-list *workspace-list*)) -;; (show-all-windows-in-workspace (current-workspace))) -;; -;;(defun circulate-workspace-up-move-frame () -;; "Circulate up in workspace moving current frame in the next workspace" -;; (no-focus) -;; (hide-all-windows-in-workspace (current-workspace)) -;; (let ((frame (current-frame))) -;; (remove-frame-in-workspace frame (current-workspace)) -;; (setf *workspace-list* (rotate-list *workspace-list*)) -;; (add-frame-in-workspace (copy-frame frame) (current-workspace))) -;; (show-all-windows-in-workspace (current-workspace))) -;; -;;(defun circulate-workspace-up-copy-frame () -;; "Circulate up in workspace copying current frame in the next workspace" -;; (no-focus) -;; (hide-all-windows-in-workspace (current-workspace)) -;; (let ((frame (current-frame))) -;; (setf *workspace-list* (rotate-list *workspace-list*)) -;; (unless (frame-windows-already-in-workspace frame (current-workspace)) -;; (add-frame-in-workspace (copy-frame frame) (current-workspace)))) -;; (show-all-windows-in-workspace (current-workspace))) -;; -;; -;; -;;(defun circulate-workspace-down () -;; "Circulate down in workspace" -;; (no-focus) -;; (hide-all-windows-in-workspace (current-workspace)) -;; (setf *workspace-list* (anti-rotate-list *workspace-list*)) -;; (show-all-windows-in-workspace (current-workspace))) -;; -;;(defun circulate-workspace-down-move-frame () -;; "Circulate down in workspace moving current frame in the next workspace" -;; (no-focus) -;; (hide-all-windows-in-workspace (current-workspace)) -;; (let ((frame (current-frame))) -;; (remove-frame-in-workspace frame (current-workspace)) -;; (setf *workspace-list* (anti-rotate-list *workspace-list*)) -;; (add-frame-in-workspace (copy-frame frame) (current-workspace))) -;; (show-all-windows-in-workspace (current-workspace))) -;; -;;(defun circulate-workspace-down-copy-frame () -;; "Circulate down in workspace copying current frame in the next workspace" -;; (no-focus) -;; (hide-all-windows-in-workspace (current-workspace)) -;; (let ((frame (current-frame))) -;; (setf *workspace-list* (anti-rotate-list *workspace-list*)) -;; (unless (frame-windows-already-in-workspace frame (current-workspace)) -;; (add-frame-in-workspace (copy-frame frame) (current-workspace)))) -;; (show-all-windows-in-workspace (current-workspace))) -;; -;; -;; -;;(defun delete-current-window () -;; "Delete the current window in all frames and workspaces" -;; (let ((window (current-window))) -;; (when window -;; (no-focus) -;; (remove-window-in-all-workspace window) -;; (send-client-message window :WM_PROTOCOLS -;; (intern-atom *display* "WM_DELETE_WINDOW")))) -;; (focus-window (current-window)) -;; (show-all-frame (current-workspace))) -;; -;; -;;(defun destroy-current-window () -;; "Destroy the current window in all frames and workspaces" -;; (let ((window (current-window))) -;; (when window -;; (no-focus) -;; (remove-window-in-all-workspace window) -;; (kill-client *display* (xlib:window-id window)))) -;; (focus-window (current-window)) -;; (show-all-frame (current-workspace))) -;; -;;(defun remove-current-window () -;; "Remove the current window in the current frame" -;; (let ((window (current-window))) -;; (when window -;; (no-focus) -;; (hide-window window) -;; (remove-window-in-frame (current-window) (current-frame)))) -;; (focus-window (current-window)) -;; (show-all-frame (current-workspace))) -;; -;;(defun remove-current-frame () -;; "Remove the current frame in the current workspace" -;; (minimize-frame (current-frame)) -;; (let ((frame (current-frame))) -;; (when frame -;; (no-focus) -;; (dolist (window (frame-window-list frame)) -;; (when window -;; (hide-window window))) -;; (remove-frame-in-workspace frame (current-workspace)))) -;; (focus-window (current-window)) -;; (show-all-frame (current-workspace))) -;; -;;(defun remove-current-workspace () -;; "Remove the current workspace" -;; (let ((workspace (current-workspace))) -;; (when workspace -;; (hide-all-windows-in-workspace workspace) -;; (remove-workspace workspace) -;; (show-all-windows-in-workspace (current-workspace))))) -;; -;; -;;(defun unhide-all-windows-in-current-frame () -;; "Unhide all hidden windows into the current frame" -;; (let ((all-windows (get-all-windows)) -;; (hidden-windows (remove-if-not #'window-hidden-p -;; (copy-list (xlib:query-tree *root*)))) -;; (current-frame (current-frame))) -;; (dolist (window (set-difference hidden-windows all-windows)) -;; (unhide-window window) -;; (process-new-window window) -;; (xlib:map-window window) -;; (adapt-window-to-frame window current-frame))) -;; (focus-window (current-window)) -;; (show-all-frame (current-workspace))) -;; -;; -;; -;; -;;(defun create-new-default-frame () -;; "Create a new default frame" -;; (minimize-frame (current-frame)) -;; (add-frame-in-workspace (copy-frame *default-frame*) -;; (current-workspace)) -;; (show-all-windows-in-workspace (current-workspace))) -;; -;; -;;(defun create-new-default-workspace () -;; "Create a new default workspace" -;; (hide-all-windows-in-workspace (current-workspace)) -;; (add-workspace (create-default-workspace)) -;; (show-all-windows-in-workspace (current-workspace))) -;; -;; -;; -;; -;;;;;,----- -;;;;;| Frame moving -;;;;;`----- -;;(defun move-frame (frame dx dy) -;; "Move frame" -;; (setf (frame-x frame) (+ (frame-x frame) dx) -;; (frame-y frame) (+ (frame-y frame) dy)) -;; (dolist (window (frame-window-list frame)) -;; (adapt-window-to-frame window frame)) -;; (show-all-frame (current-workspace))) -;; -;;(defun move-frame-to (frame x y) -;; "Move frame to" -;; (setf (frame-x frame) x -;; (frame-y frame) y) -;; (dolist (window (frame-window-list frame)) -;; (adapt-window-to-frame window frame)) -;; (focus-window (current-window)) -;; (show-all-frame (current-workspace))) -;; -;; -;;(defun resize-frame (frame dx dy) -;; "Resize frame" -;; (setf (frame-width frame) (max (+ (frame-width frame) dx) 100) -;; (frame-height frame) (max (+ (frame-height frame) dy) 100)) -;; (dolist (window (frame-window-list frame)) -;; (adapt-window-to-frame window frame)) -;; (show-all-frame (current-workspace))) -;; -;;(defun force-window-in-frame () -;; "Force the current window to move in the frame (Useful only for transient windows)" -;; (let ((frame (current-frame)) -;; (window (current-window))) -;; (when window -;; (setf (xlib:drawable-x window) (frame-x frame) -;; (xlib:drawable-y window) (frame-y frame)) -;; (show-all-windows-in-workspace (current-workspace))))) -;; -;;(defun force-window-center-in-frame () -;; "Force the current window to move in the center of the frame (Useful only for transient windows)" -;; (let ((frame (current-frame)) -;; (window (current-window))) -;; (when window -;; (setf (xlib:drawable-x window) (truncate (+ (frame-x frame) -;; (/ (- (frame-width frame) (xlib:drawable-width window)) 2))) -;; (xlib:drawable-y window) (truncate (+ (frame-y frame) -;; (/ (- (frame-height frame) (xlib:drawable-height window)) 2)))) -;; (show-all-windows-in-workspace (current-workspace))))) -;; -;; -;; -;; -;; -;;(defun show-help (&optional (browser "dillo") (tempfile "/tmp/clfswm.html")) -;; "Show current keys and buttons bindings" -;; (ignore-errors -;; (produce-doc-html-in-file tempfile)) -;; (sleep 1) -;; (do-shell (format nil "~A ~A" browser tempfile))) + +(defun show-help (&optional (browser "dillo") (tempfile "/tmp/clfswm.html")) + "Show current keys and buttons bindings" + (ignore-errors + (produce-doc-html-in-file tempfile)) + (sleep 1) + (do-shell (format nil "~A ~A" browser tempfile))) Modified: clfswm/src/tools.lisp ============================================================================== --- clfswm/src/tools.lisp (original) +++ clfswm/src/tools.lisp Fri Mar 28 18:23:43 2008 @@ -31,6 +31,7 @@ (:export :it :awhen :aif + :call-hook :dbg :dbgnl :setf/= @@ -93,6 +94,24 @@ ;;;,----- +;;;| Minimal hook +;;;`----- +(defun call-hook (hook &optional args) + "Call a hook (a function, a symbol or a list of functions) +Return the result of the last hook" + (let ((result nil)) + (labels ((rec (hook) + (when hook + (typecase hook + (cons (dolist (h hook) + (rec h))) + (t (setf result (apply hook args))))))) + (rec hook) + result))) + + + +;;;,----- ;;;| Debuging tools ;;;`----- (defvar *%dbg-name%* "dbg") From pbrochard at common-lisp.net Sat Mar 29 21:23:57 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sat, 29 Mar 2008 16:23:57 -0500 (EST) Subject: [clfswm-cvs] r59 - in clfswm: . src Message-ID: <20080329212357.3812715074@common-lisp.net> Author: pbrochard Date: Sat Mar 29 16:23:53 2008 New Revision: 59 Modified: clfswm/ChangeLog clfswm/src/bindings-second-mode.lisp clfswm/src/clfswm-internal.lisp clfswm/src/clfswm-util.lisp Log: In second mode: Focus, move and resize the current child (even if it's a window). Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sat Mar 29 16:23:53 2008 @@ -1,3 +1,8 @@ +2008-03-29 Philippe Brochard + + * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Focus, move and resize + the current child (even if it's a window). + 2008-03-28 Philippe Brochard * src/clfswm-util.lisp (mouse-click-to-focus-and-move) Modified: clfswm/src/bindings-second-mode.lisp ============================================================================== --- clfswm/src/bindings-second-mode.lisp (original) +++ clfswm/src/bindings-second-mode.lisp Sat Mar 29 16:23:53 2008 @@ -359,23 +359,24 @@ ;;; Mouse action - +(defun sm-mouse-click-to-focus-generic (window root-x root-y fn-action) + (declare (ignore window)) + (let* ((child (find-child-under-mouse root-x root-y)) + (father (find-father-frame child))) + (unless (equal child *current-root*) + (typecase child + (xlib:window (funcall fn-action father (find-father-frame father) root-x root-y)) + (frame (funcall fn-action child father root-x root-y))) + (focus-all-children child father nil) + (show-all-children)))) (defun sm-mouse-click-to-focus-and-move (window root-x root-y) "Move and focus the current child" - (declare (ignore window)) - (let ((win (find-window-under-mouse root-x root-y))) - (unless (equal win (frame-window *current-root*)) - (mouse-click-to-focus-and-move win root-x root-y)))) - + (sm-mouse-click-to-focus-generic window root-x root-y #'move-frame)) (defun sm-mouse-click-to-focus-and-resize (window root-x root-y) "Resize and focus the current child" - (declare (ignore window)) - (let ((win (find-window-under-mouse root-x root-y))) - (unless (equal win (frame-window *current-root*)) - (mouse-click-to-focus-and-resize win root-x root-y)))) - + (sm-mouse-click-to-focus-generic window root-x root-y #'resize-frame)) Modified: clfswm/src/clfswm-internal.lisp ============================================================================== --- clfswm/src/clfswm-internal.lisp (original) +++ clfswm/src/clfswm-internal.lisp Sat Mar 29 16:23:53 2008 @@ -212,14 +212,14 @@ -(defun get-current-child () - "Return the current focused child" - (unless (equal *current-child* *root-frame*) - (typecase *current-child* - (xlib:window *current-child*) - (frame (if (xlib:window-p (first (frame-child *current-child*))) - (first (frame-child *current-child*)) - *current-child*))))) +;;(defun get-current-child () +;; "Return the current focused child" +;; (unless (equal *current-child* *root-frame*) +;; (typecase *current-child* +;; (xlib:window *current-child*) +;; (frame (if (xlib:window-p (first (frame-child *current-child*))) +;; (first (frame-child *current-child*)) +;; *current-child*))))) (defun find-child (to-find root) @@ -580,19 +580,19 @@ change)) -(defgeneric set-current-child (child father)) - -(defmethod set-current-child ((child xlib:window) father) - (unless (equal *current-child* father) - (setf *current-child* father) - t)) - -(defmethod set-current-child ((child frame) father) - (declare (ignore father)) +(defun set-current-child-generic (child) (unless (equal *current-child* child) (setf *current-child* child) t)) +(defgeneric set-current-child (child father window-father)) + +(defmethod set-current-child ((child xlib:window) father window-father) + (set-current-child-generic (if window-father father child))) + +(defmethod set-current-child ((child frame) father window-father) + (declare (ignore father window-father)) + (set-current-child-generic child)) (defun set-current-root (father) @@ -601,10 +601,11 @@ (setf *current-root* father))) -(defun focus-all-children (child father) - "Focus child and its fathers - Set current frame to father" +(defun focus-all-children (child father &optional (window-father t)) + "Focus child and its fathers - +For window: set current child to window or its father according to window-father" (let ((new-focus (focus-child-rec child father)) - (new-current-child (set-current-child child father)) + (new-current-child (set-current-child child father window-father)) (new-root (set-current-root father))) (or new-focus new-current-child new-root))) Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Sat Mar 29 16:23:53 2008 @@ -148,6 +148,7 @@ + ;;; Selection functions (defun clear-selection () "Clear the current selection" From pbrochard at common-lisp.net Sun Mar 30 12:48:00 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sun, 30 Mar 2008 07:48:00 -0500 (EST) Subject: [clfswm-cvs] r60 - in clfswm: . src Message-ID: <20080330124800.7500E81004@common-lisp.net> Author: pbrochard Date: Sun Mar 30 07:47:57 2008 New Revision: 60 Modified: clfswm/ChangeLog clfswm/src/bindings-second-mode.lisp clfswm/src/clfswm-internal.lisp clfswm/src/clfswm-layout.lisp clfswm/src/clfswm-util.lisp clfswm/src/config.lisp Log: Create a new frame on the root window. (in the main mode only if *create-frame-on-root* is true) Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sun Mar 30 07:47:57 2008 @@ -1,3 +1,16 @@ +2008-03-30 Philippe Brochard + + * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates. + + * src/config.lisp (*create-frame-on-root*): New variable: Create a new frame on the + root window only if true. + + * src/clfswm-util.lisp (mouse-click-to-focus-generic): Create a new frame on the + root window only if *create-frame-on-root* is true. + + * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Create a new frame + on the root window. + 2008-03-29 Philippe Brochard * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Focus, move and resize Modified: clfswm/src/bindings-second-mode.lisp ============================================================================== --- clfswm/src/bindings-second-mode.lisp (original) +++ clfswm/src/bindings-second-mode.lisp Sun Mar 30 07:47:57 2008 @@ -359,23 +359,29 @@ ;;; Mouse action -(defun sm-mouse-click-to-focus-generic (window root-x root-y fn-action) +(defun sm-mouse-click-to-focus-generic (window root-x root-y mouse-fn) (declare (ignore window)) (let* ((child (find-child-under-mouse root-x root-y)) (father (find-father-frame child))) - (unless (equal child *current-root*) - (typecase child - (xlib:window (funcall fn-action father (find-father-frame father) root-x root-y)) - (frame (funcall fn-action child father root-x root-y))) - (focus-all-children child father nil) - (show-all-children)))) + (when (equal child *current-root*) + (setf child (create-frame) + father *current-root* + mouse-fn #'resize-frame) + (place-frame child father root-x root-y 10 10) + (xlib:map-window (frame-window child)) + (pushnew child (frame-child *current-root*))) + (typecase child + (xlib:window (funcall mouse-fn father (find-father-frame father) root-x root-y)) + (frame (funcall mouse-fn child father root-x root-y))) + (focus-all-children child father nil) + (show-all-children))) (defun sm-mouse-click-to-focus-and-move (window root-x root-y) - "Move and focus the current child" + "Move and focus the current child - Create a new frame on the root window" (sm-mouse-click-to-focus-generic window root-x root-y #'move-frame)) (defun sm-mouse-click-to-focus-and-resize (window root-x root-y) - "Resize and focus the current child" + "Resize and focus the current child - Create a new frame on the root window" (sm-mouse-click-to-focus-generic window root-x root-y #'resize-frame)) Modified: clfswm/src/clfswm-internal.lisp ============================================================================== --- clfswm/src/clfswm-internal.lisp (original) +++ clfswm/src/clfswm-internal.lisp Sun Mar 30 07:47:57 2008 @@ -208,6 +208,18 @@ (push frame (frame-child father))) +(defun place-frame (frame father prx pry prw prh) + "Place a frame from real (pixel) coordinates" + (with-slots (window x y w h) frame + (setf (xlib:drawable-x window) prx + (xlib:drawable-y window) pry + (xlib:drawable-width window) prw + (xlib:drawable-height window) prh + x (x-px->fl prx father) + y (y-px->fl pry father) + w (w-px->fl prw father) + h (h-px->fl prh father)))) + Modified: clfswm/src/clfswm-layout.lisp ============================================================================== --- clfswm/src/clfswm-layout.lisp (original) +++ clfswm/src/clfswm-layout.lisp Sun Mar 30 07:47:57 2008 @@ -83,7 +83,7 @@ (y-fl->px (frame-y child) father) (w-fl->px (frame-w child) father) (h-fl->px (frame-h child) father) - :first-only)) + t)) Modified: clfswm/src/clfswm-util.lisp ============================================================================== --- clfswm/src/clfswm-util.lisp (original) +++ clfswm/src/clfswm-util.lisp Sun Mar 30 07:47:57 2008 @@ -555,15 +555,26 @@ mouse-fun is #'move-frame or #'resize-frame" (let ((to-replay t) (child window) - (father (find-father-frame window *current-root*))) - (unless father - (setf child (find-frame-window window *current-root*) - father (find-father-frame child *current-root*)) - (when child - (funcall mouse-fn child father root-x root-y))) - (when (and child father (focus-all-children child father)) - (show-all-children) - (setf to-replay nil)) + (father (find-father-frame window *current-root*)) + (root-p (or (equal window *root*) + (equal window (frame-window *current-root*))))) + (when (or (not root-p) *create-frame-on-root*) + (unless father + (if root-p + (progn + (setf child (create-frame) + father *current-root* + mouse-fn #'resize-frame) + (place-frame child father root-x root-y 10 10) + (xlib:map-window (frame-window child)) + (pushnew child (frame-child *current-root*))) + (setf child (find-frame-window window *current-root*) + father (find-father-frame child *current-root*))) + (when child + (funcall mouse-fn child father root-x root-y))) + (when (and child father (focus-all-children child father)) + (show-all-children) + (setf to-replay nil))) (if to-replay (replay-button-event) (stop-button-event)))) Modified: clfswm/src/config.lisp ============================================================================== --- clfswm/src/config.lisp (original) +++ clfswm/src/config.lisp Sun Mar 30 07:47:57 2008 @@ -47,6 +47,11 @@ ;; (values 100 100 800 600)) +;;; CONFIG +(defparameter *create-frame-on-root* nil + "Set this variable to true if you want to allow to create a new frame +on root window in the main mode") + ;;; CONFIG: Main mode colors (defparameter *color-selected* "Red") From pbrochard at common-lisp.net Sun Mar 30 16:45:03 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sun, 30 Mar 2008 11:45:03 -0500 (EST) Subject: [clfswm-cvs] r61 - in clfswm: . src Message-ID: <20080330164503.C462E702F3@common-lisp.net> Author: pbrochard Date: Sun Mar 30 11:45:01 2008 New Revision: 61 Modified: clfswm/ChangeLog clfswm/TODO clfswm/src/clfswm-internal.lisp Log: In with-all-*: Reverse the child list to manage the first child last (like in show-all-children) Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sun Mar 30 11:45:01 2008 @@ -1,6 +1,8 @@ 2008-03-30 Philippe Brochard * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates. + (with-all-*): Reverse the child list to manage the first child last (like in + show-all-children). * src/config.lisp (*create-frame-on-root*): New variable: Create a new frame on the root window only if true. @@ -122,8 +124,10 @@ 2008-02-24 Philippe Brochard - * *: Major update - No more reference to workspaces. The main - structure is a tree of groups or application windows. + * ************************************************************ * + *: Major update - No more reference to workspaces. The main * + structure is a tree of groups or application windows. * + * ************************************************************ * 2008-02-07 Philippe Brochard Modified: clfswm/TODO ============================================================================== --- clfswm/TODO (original) +++ clfswm/TODO Sun Mar 30 11:45:01 2008 @@ -8,9 +8,6 @@ Should handle these soon. Rewrote all useful code present in 0801 version. - -- mouse operations: A beginnig is done. Now in second mode: focus child+ resize/move window's father [Philippe] - - Hide a window when its size is less than hint minimal size. [Philippe] - Bind alt+1/2/3/4... to a particular child: [Philippe] If bind exist -> focus this child @@ -33,6 +30,8 @@ get-frame-by-name (path): return the frame that its own frame has this name if it exists such a frame get-window-by-name (path): return the window that its own frame that its own frame has this name if it exists such a window. +- Adapt frame to window hints + MAYBE ===== Modified: clfswm/src/clfswm-internal.lisp ============================================================================== --- clfswm/src/clfswm-internal.lisp (original) +++ clfswm/src/clfswm-internal.lisp Sun Mar 30 11:45:01 2008 @@ -132,7 +132,7 @@ `(labels ((,rec (,child) , at body (when (frame-p ,child) - (dolist (,sub-child (frame-child ,child)) + (dolist (,sub-child (reverse (frame-child ,child))) (,rec ,sub-child))))) (,rec ,root)))) @@ -144,7 +144,7 @@ `(labels ((,rec (,frame) (when (frame-p ,frame) , at body - (dolist (,child (frame-child ,frame)) + (dolist (,child (reverse (frame-child ,frame))) (,rec ,child))))) (,rec ,root)))) @@ -157,7 +157,7 @@ (when (xlib:window-p ,window) , at body) (when (frame-p ,window) - (dolist (,child (frame-child ,window)) + (dolist (,child (reverse (frame-child ,window))) (,rec ,child))))) (,rec ,root)))) @@ -171,7 +171,7 @@ (typecase ,child (xlib:window ,body-window) (frame ,body-frame - (dolist (,sub-child (frame-child ,child)) + (dolist (,sub-child (reverse (frame-child ,child))) (,rec ,sub-child)))))) (,rec ,root)))) From pbrochard at common-lisp.net Sun Mar 30 16:57:43 2008 From: pbrochard at common-lisp.net (pbrochard at common-lisp.net) Date: Sun, 30 Mar 2008 11:57:43 -0500 (EST) Subject: [clfswm-cvs] r62 - in clfswm: . src Message-ID: <20080330165743.DE86F370A2@common-lisp.net> Author: pbrochard Date: Sun Mar 30 11:57:41 2008 New Revision: 62 Modified: clfswm/ChangeLog clfswm/src/bindings-second-mode.lisp clfswm/src/bindings.lisp clfswm/src/clfswm.lisp Log: Create a default frame in the root frame (Be sure to update your configuration file). Up/Down: Swap select previous/next level Modified: clfswm/ChangeLog ============================================================================== --- clfswm/ChangeLog (original) +++ clfswm/ChangeLog Sun Mar 30 11:57:41 2008 @@ -1,5 +1,11 @@ 2008-03-30 Philippe Brochard + * src/bindings.lisp (Up/Down): Swap select previous/next level. + + * src/bindings-second-mode.lisp (Up/Down): Swap select previous/next level. + + * src/clfswm.lisp (init-display): Create a default frame in the root frame. + * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates. (with-all-*): Reverse the child list to manage the first child last (like in show-all-children). Modified: clfswm/src/bindings-second-mode.lisp ============================================================================== --- clfswm/src/bindings-second-mode.lisp (original) +++ clfswm/src/bindings-second-mode.lisp Sun Mar 30 11:57:41 2008 @@ -295,8 +295,8 @@ (define-second-key ("Right" :mod-1) 'select-next-brother) (define-second-key ("Left" :mod-1) 'select-previous-brother) -(define-second-key ("Down" :mod-1) 'select-next-level) -(define-second-key ("Up" :mod-1) 'select-previous-level) +(define-second-key ("Down" :mod-1) 'select-previous-level) +(define-second-key ("Up" :mod-1) 'select-next-level) (define-second-key ("Tab" :mod-1) 'select-next-child) (define-second-key ("ISO_Left_Tab" :mod-1 :shift) 'select-previous-child) Modified: clfswm/src/bindings.lisp ============================================================================== --- clfswm/src/bindings.lisp (original) +++ clfswm/src/bindings.lisp Sun Mar 30 11:57:41 2008 @@ -43,8 +43,8 @@ (define-main-key ("Right" :mod-1) 'select-next-brother) (define-main-key ("Left" :mod-1) 'select-previous-brother) -(define-main-key ("Down" :mod-1) 'select-next-level) -(define-main-key ("Up" :mod-1) 'select-previous-level) +(define-main-key ("Down" :mod-1) 'select-previous-level) +(define-main-key ("Up" :mod-1) 'select-next-level) (define-main-key ("Tab" :mod-1) 'select-next-child) (define-main-key ("ISO_Left_Tab" :mod-1 :shift) 'select-previous-child) Modified: clfswm/src/clfswm.lisp ============================================================================== --- clfswm/src/clfswm.lisp (original) +++ clfswm/src/clfswm.lisp Sun Mar 30 11:57:41 2008 @@ -224,6 +224,8 @@ (setf *root-frame* (create-frame :name "Root" :number 0 :layout #'tile-space-layout) *current-root* *root-frame* *current-child* *current-root*) + (add-frame (create-frame :name "Default" :layout nil :x 0.1 :y 0.1 :w 0.8 :h 0.8) *root-frame*) + (setf *current-child* (first (frame-child *current-root*))) (call-hook *init-hook*) (process-existing-windows *screen*) (show-all-children)