Commit f52e89ad authored by Jonathan Wilkes's avatar Jonathan Wilkes
Browse files

remove GENRE tag from [pd META], git rid of an .svn folder in apple lib

parent 07c5e17f
#N canvas 10 10 200 200 10;
#N canvas 20 20 420 300 META 0;
#X text 10 10 META this is a prototype of a libdir meta file;
#X text 10 30 NAME apple;
#X text 10 50 AUTHOR Hans-Christoph Steiner;
#X text 10 70 DESCRIPTION support for Apple-specific functions;
#X text 10 90 LICENSE GPLv2 or later;
#X text 10 110 VERSION 0.2;
#X restore 10 10 pd META;
#N canvas 180 29 562 479 10;
#X obj 4 -17 cnv 15 550 40 empty \$0-pddp.cnv.header brightness 3 12
0 18 -241536 -1 0;
#X obj 3 189 cnv 3 550 3 empty \$0-pddp.cnv.inlets inlets 15 12 0 13
-245500 -191407 0;
#N canvas 779 22 494 344 META 0;
#X text 12 25 KEYWORDS control number float store;
#X text 12 45 LICENSE GPL;
#X text 12 65 TEMPLATE template-help.pd v0.1;
#X text 12 85 PLATFORM windows macosx gnulinux;
#X text 12 105 DATATYPE float list;
#X text 12 5 GENRE storage;
#X text 12 125 LIBRARY internal;
#X text 12 145 WEBSITE http://crca.ucsd.edu/~msp/;
#X text 12 165 RELEASE_DATE 2007-08-24;
#X text 12 185 RELEASE_VERSION 0.40-test05;
#X restore 504 430 pd META;
#X obj 3 258 cnv 3 550 3 empty \$0-pddp.cnv.outlets outlet 15 12 0
13 -245500 -191407 0;
#X obj 3 308 cnv 3 550 3 empty \$0-pddp.cnv.argument argument 15 12
0 13 -245500 -191407 0;
#X obj 3 368 cnv 3 550 3 empty \$0-pddp.cnv.more_info more_info 15
12 0 13 -245500 -191407 0;
#X obj 432 6 pddp/pddplink http://wiki.puredata.info/en/apple/brightness
-text pdpedia: brightness;
#X obj 104 394 pddp/pddplink http://www.osxbook.com/book/bonus/chapter10/light/
;
#X msg 197 39 bang;
#X floatatom 197 153 5 0 0 0 - - -;
#X obj 216 73 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X floatatom 229 97 5 0 0 0 - - -;
#X text 15 6 description: query and control screen brightness on Apples
;
#X obj 446 -14 apple/brightness;
#X text 102 326 Accepts one float argument to set the screen brightness
(between 0 and 1);
#X text 103 276 float - current screen brightness (between 0 and 1)
;
#X text 102 208 bang - output current screen brightness;
#X text 102 228 float - set the screen brightness (between 0 and 1)
;
#X obj 197 122 apple/brightness;
#X connect 8 0 18 0;
#X connect 10 0 11 0;
#X connect 10 0 18 0;
#X connect 18 0 9 0;
#N canvas 0 22 458 308 10;
#X obj 135 141 route brightness;
#X obj 131 49 inlet;
#X obj 135 184 outlet;
#X obj 132 79 route float bang;
#X obj 135 113 apple/iodisplay brightness;
#X connect 0 0 2 0;
#X connect 1 0 3 0;
#X connect 3 0 4 0;
#X connect 3 1 4 0;
#X connect 4 0 0 0;
#N canvas 259 213 560 421 10;
#X obj 4 -17 cnv 15 550 40 empty \$0-pddp.cnv.header cpu_temperature
3 12 0 18 -241536 -1 0;
#X obj 3 189 cnv 3 550 3 empty \$0-pddp.cnv.inlets inlet 15 12 0 13
-245500 -191407 0;
#N canvas 779 22 494 344 META 0;
#X text 12 25 KEYWORDS control number float store;
#X text 12 45 LICENSE GPL;
#X text 12 65 TEMPLATE template-help.pd v0.1;
#X text 12 85 PLATFORM windows macosx gnulinux;
#X text 12 105 DATATYPE float list;
#X text 12 125 LIBRARY internal;
#X text 12 145 WEBSITE http://crca.ucsd.edu/~msp/;
#X text 12 165 RELEASE_DATE 2007-08-24;
#X text 12 185 RELEASE_VERSION 0.40-test05;
#X text 12 5 GENRE storage;
#X restore 500 373 pd META;
#X obj 3 258 cnv 3 550 3 empty \$0-pddp.cnv.outlets outlets 15 12 0
13 -245500 -191407 0;
#X obj 3 338 cnv 3 550 3 empty \$0-pddp.cnv.more_info more_info 15
12 0 13 -245500 -191407 0;
#X obj 374 6 pddp/pddplink http://wiki.puredata.info/en/apple/cpu_temperature
-text pdpedia: cpu_temperature;
#X obj 104 364 pddp/pddplink http://www.osxbook.com/book/bonus/chapter10/light/
;
#X text 102 208 bang - output current screen brightness;
#X obj 389 -14 apple/cpu_temperature;
#X msg 146 48 bang;
#X obj 73 73 metro 250;
#X obj 73 54 tgl 15 0 empty empty empty 0 -6 0 10 -204786 -1 -1 0 1
;
#X text 183 46 output sensor values;
#X obj 72 279 cnv 17 3 20 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
-162280 0;
#X text 103 276 list - a list with the values of the left and right
sensors;
#X floatatom 146 144 5 0 0 0 - - -;
#X obj 146 101 apple/cpu_temperature;
#X text 15 6 description: query the CPU temperature in Apples;
#X connect 9 0 16 0;
#X connect 10 0 16 0;
#X connect 11 0 10 0;
#X connect 16 0 15 0;
#N canvas 699 353 450 300 10;
#X obj 114 51 route bang;
#X obj 114 29 inlet;
#X obj 113 173 outlet;
#X obj 114 106 apple/smc TC0D;
#X obj 113 139 route TC0D;
#X connect 0 0 3 0;
#X connect 1 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#N canvas 273 22 560 421 10;
#X obj 4 -17 cnv 15 550 40 empty \$0-pddp.cnv.header fans 3 12 0 18
-241536 -1 0;
#X obj 3 189 cnv 3 550 3 empty \$0-pddp.cnv.inlets inlet 15 12 0 13
-245500 -191407 0;
#N canvas 779 22 494 344 META 0;
#X text 12 25 KEYWORDS control number float store;
#X text 12 45 LICENSE GPL;
#X text 12 65 TEMPLATE template-help.pd v0.1;
#X text 12 85 PLATFORM windows macosx gnulinux;
#X text 12 105 DATATYPE float list;
#X text 12 125 LIBRARY internal;
#X text 12 145 WEBSITE http://crca.ucsd.edu/~msp/;
#X text 12 165 RELEASE_DATE 2007-08-24;
#X text 12 185 RELEASE_VERSION 0.40-test05;
#X text 12 5 GENRE storage;
#X restore 500 373 pd META;
#X obj 3 262 cnv 3 550 3 empty \$0-pddp.cnv.outlets outlets 15 12 0
13 -245500 -191407 0;
#X obj 3 338 cnv 3 550 3 empty \$0-pddp.cnv.more_info more_info 15
12 0 13 -245500 -191407 0;
#X obj 470 6 pddp/pddplink http://wiki.puredata.info/en/apple/fans
-text pdpedia: fans;
#X msg 146 48 bang;
#X obj 73 54 tgl 15 0 empty empty empty 0 -6 0 10 -204786 -1 -1 0 1
;
#X text 183 46 output sensor values;
#X obj 72 283 cnv 17 3 20 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
-162280 0;
#X obj 146 101 apple/fans;
#X text 15 6 description: query the system fans in Apples;
#X text 94 201 bang - output all data about all fans;
#X floatatom 146 147 5 0 0 0 - - -;
#X floatatom 180 147 5 0 0 0 - - -;
#X floatatom 215 147 5 0 0 0 - - -;
#X obj 173 75 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144 -1
-1 1;
#X text 302 73 choose a specific fan;
#X text 94 221 float - output all data about a specific fan;
#X floatatom 249 147 5 0 0 0 - - -;
#X floatatom 284 147 5 0 0 0 - - -;
#X obj 72 309 cnv 17 3 20 empty \$0-pddp.cnv.let.1 1 5 9 0 16 -228856
-162280 0;
#X text 103 280 messages with the values of the various data;
#X text 104 306 messages with status information;
#X text 94 241 symbol - output a specific data about a specific fan
;
#X floatatom 318 147 5 0 0 0 - - -;
#X obj 146 125 route F0Ac F0Mn F0Mx F0Mt F0Sf F0Tg F0ID;
#X obj 73 73 metro 2000;
#X obj 485 -14 apple/fans;
#X obj 356 147 moocow/string2any;
#X obj 356 170 pddp/print;
#X obj 83 139 print;
#X connect 6 0 10 0;
#X connect 7 0 27 0;
#X connect 10 0 26 0;
#X connect 10 0 31 0;
#X connect 16 0 10 0;
#X connect 26 0 13 0;
#X connect 26 1 14 0;
#X connect 26 2 15 0;
#X connect 26 3 19 0;
#X connect 26 4 20 0;
#X connect 26 5 25 0;
#X connect 26 6 29 0;
#X connect 27 0 10 0;
#X connect 29 0 30 0;
#N canvas 421 265 470 381 10;
#X obj 164 29 inlet;
#X obj 146 343 outlet;
#X obj 197 343 outlet;
#X obj 26 112 route FNum;
#X msg 106 119 F\$1Ac;
#X msg 147 119 F\$1Mn;
#X msg 230 119 F\$1Mx;
#X msg 271 119 F\$1Sf;
#X msg 313 119 F\$1Tg;
#X obj 146 229 apple/smc;
#X msg 408 119 FNum;
#N canvas 0 22 450 300 gen 0;
#X obj 92 9 inlet;
#X obj 93 270 outlet;
#X obj 93 136 until;
#X obj 93 172 float;
#X obj 134 172 + 1;
#X msg 180 123 0;
#X obj 92 74 trigger anything bang;
#X connect 0 0 6 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 1 0;
#X connect 4 0 3 1;
#X connect 5 0 3 1;
#X connect 6 0 2 0;
#X connect 6 1 5 0;
#X restore 26 133 pd gen fnums;
#X obj 164 51 route float bang;
#X msg 188 119 F\$1Mt;
#X msg 358 119 F\$1ID;
#X connect 0 0 12 0;
#X connect 3 0 11 0;
#X connect 4 0 9 0;
#X connect 5 0 9 0;
#X connect 6 0 9 0;
#X connect 7 0 9 0;
#X connect 8 0 9 0;
#X connect 9 0 1 0;
#X connect 9 0 3 0;
#X connect 9 1 2 0;
#X connect 10 0 9 0;
#X connect 11 0 12 0;
#X connect 12 0 4 0;
#X connect 12 0 5 0;
#X connect 12 0 6 0;
#X connect 12 0 7 0;
#X connect 12 0 8 0;
#X connect 12 0 13 0;
#X connect 12 0 14 0;
#X connect 12 1 10 0;
#X connect 13 0 9 0;
#X connect 14 0 9 0;
#N canvas 392 89 560 598 10;
#X obj 4 -17 cnv 15 550 40 empty \$0-pddp.cnv.header iodisplay 3 12
0 18 -241536 -1 0;
#X obj 3 179 cnv 3 550 3 empty \$0-pddp.cnv.inlets inlets 15 12 0 13
-245500 -191407 0;
#N canvas 779 22 494 344 META 0;
#X text 12 25 KEYWORDS control number float store;
#X text 12 45 LICENSE GPL;
#X text 12 65 TEMPLATE template-help.pd v0.1;
#X text 12 85 PLATFORM windows macosx gnulinux;
#X text 12 105 DATATYPE float list;
#X text 12 5 GENRE storage;
#X text 12 125 LIBRARY internal;
#X text 12 145 WEBSITE http://crca.ucsd.edu/~msp/;
#X text 12 165 RELEASE_DATE 2007-08-24;
#X text 12 185 RELEASE_VERSION 0.40-test05;
#X restore 504 549 pd META;
#X obj 3 271 cnv 3 550 3 empty \$0-pddp.cnv.outlets outlet 15 12 0
13 -245500 -191407 0;
#X obj 3 321 cnv 3 550 3 empty \$0-pddp.cnv.argument argument 15 12
0 13 -245500 -191407 0;
#X obj 3 371 cnv 3 550 3 empty \$0-pddp.cnv.more_info more_info 15
12 0 13 -245500 -191407 0;
#X obj 72 245 cnv 17 3 20 empty \$0-pddp.cnv.let.1 1 5 9 0 16 -228856
-162280 0;
#X obj 72 199 cnv 17 3 40 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
-162280 0;
#X obj 412 6 pddp/pddplink http://wiki.puredata.info/en/apple/keyboard_light
-text pdpedia: keyboard_light;
#X obj 104 390 pddp/pddplink http://www.osxbook.com/book/bonus/chapter10/light/
;
#X obj 456 -14 apple/iodisplay;
#X text 15 6 description: query and control IODisplay parameters on
Apple;
#X msg 81 33 bang;
#X obj 103 58 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X floatatom 116 82 5 0 0 0 - - -;
#X obj 81 140 pddp/print;
#X obj 81 107 iodisplay brightness;
#X text 102 339 symbol - name of the IODisplay parameter to control
;
#X text 103 289 float - value of the current IODisplay parameter;
#X text 102 245 symbol - name of the IODisplay parameter to control
;
#X text 102 198 bang - output the current IODisplay parameter level
;
#X text 102 218 float - set the current IODisplay parameter level;
#X obj 103 411 pddp/pddplink http://darcs.brianweb.net/vendor/powerpc-apple-darwin/include/IOKit/graphics/IOGraphicsTypes.h
-text IOKit/graphics/IOGraphicsTypes.h;
#X text 14 430 Possible IODisplay parameters:;
#X text 64 447 brightness;
#X text 64 467 contrast;
#X text 64 487 horizontal-position;
#X text 64 507 horizontal-size;
#X text 64 527 vertical-position;
#X text 222 447 trapezoid;
#X text 222 467 pincushion;
#X text 222 487 parallelogram;
#X text 222 508 rotation;
#X text 222 528 theatre-mode;
#X text 384 447 theatre-mode-window;
#X text 384 467 oscn;
#X text 384 487 vbst;
#X text 384 507 commit;
#X text 384 527 defaults;
#X msg 291 33 bang;
#X obj 306 59 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X floatatom 319 83 5 0 0 0 - - -;
#X obj 291 140 pddp/print;
#X msg 366 83 symbol brightness;
#X obj 291 107 iodisplay;
#X connect 12 0 16 0;
#X connect 13 0 14 0;
#X connect 13 0 16 0;
#X connect 16 0 15 0;
#X connect 39 0 44 0;
#X connect 40 0 41 0;
#X connect 40 0 44 0;
#X connect 43 0 44 1;
#X connect 44 0 42 0;
/* --------------------------------------------------------------------------*/
/* */
/* control the iodisplay of the display on Apple Mac OS X */
/* Written by Hans-Christoph Steiner <hans@eds.org> */
/* */
/* Copyright (c) 2008 Free Software Foundation */
/* */
/* This program is free software; you can redistribute it and/or */
/* modify it under the terms of the GNU General Public License */
/* as published by the Free Software Foundation; either version 2 */
/* of the License, or (at your option) any later version. */
/* */
/* See file LICENSE for further informations on licensing terms. */
/* */
/* 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, */
/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
/* */
/* --------------------------------------------------------------------------*/
#include <IOKit/graphics/IOGraphicsLib.h>
#include <ApplicationServices/ApplicationServices.h>
#include <m_pd.h>
#define DEBUG(x)
//#define DEBUG(x) x
/*------------------------------------------------------------------------------
* CLASS DEF
*/
static t_class *iodisplay_class;
typedef struct _iodisplay {
t_object x_obj;
t_float parameter_value;
io_service_t io_service;
CGDirectDisplayID target_display;
t_symbol* parameter;
} t_iodisplay;
/*------------------------------------------------------------------------------
* IMPLEMENTATION
*/
static void iodisplay_output(t_iodisplay* x)
{
DEBUG(post("iodisplay_output"););
CFStringRef cfs_parameter;
CGDisplayErr err;
t_atom output_atom;
cfs_parameter = CFStringCreateWithCString(kCFAllocatorDefault,
x->parameter->s_name,
kCFStringEncodingASCII);
err = IODisplayGetFloatParameter(x->io_service, kNilOptions,
cfs_parameter, &(x->parameter_value));
if (err != kIOReturnSuccess)
pd_error(x,"[iodisplay]: couldn't get %s value", x->parameter->s_name);
SETFLOAT(&output_atom, x->parameter_value);
outlet_anything(x->x_obj.ob_outlet, x->parameter, 1, &output_atom);
}
static void iodisplay_float(t_iodisplay* x, t_float f)
{
DEBUG(post("iodisplay_float"););
CFStringRef cfs_parameter;
CGDisplayErr err;
if (f < 0.) x->parameter_value = 0.;
else if (f > 1.) x->parameter_value = 1.;
else x->parameter_value = f;
cfs_parameter = CFStringCreateWithCString(kCFAllocatorDefault,
x->parameter->s_name,
kCFStringEncodingASCII);
err = IODisplaySetFloatParameter(x->io_service, kNilOptions,
cfs_parameter, x->parameter_value);
if (err != kIOReturnSuccess)
pd_error(x,"[iodisplay]: couldn't set %s", x->parameter->s_name);
}
static void iodisplay_free(t_iodisplay* x)
{
DEBUG(post("iodisplay_free"););
}
static void *iodisplay_new(t_symbol *s)
{
DEBUG(post("iodisplay_new"););
t_iodisplay *x = (t_iodisplay *)pd_new(iodisplay_class);
x->target_display = CGMainDisplayID();
x->io_service = CGDisplayIOServicePort(x->target_display);
x->parameter = s;
symbolinlet_new(&x->x_obj, &x->parameter);
outlet_new(&x->x_obj, &s_anything);
return (x);
}
void iodisplay_setup(void)
{
iodisplay_class = class_new(gensym("iodisplay"),
(t_newmethod)iodisplay_new,
(t_method)iodisplay_free,
sizeof(t_iodisplay),
CLASS_DEFAULT,
A_DEFSYMBOL, 0);
/* add inlet datatype methods */
class_addbang(iodisplay_class,(t_method) iodisplay_output);
class_addfloat(iodisplay_class,(t_method) iodisplay_float);
}
#N canvas 0 26 553 346 10;
#X msg 116 32 bang;
#X msg 144 63 menu;
#X obj 242 244 flatgui/popup 124 25 #ffffff _ option;
#X msg 141 209 options;
#X obj 203 163 route clear;
#X symbolatom 116 277 0 0 0 0 - - -;
#X text 183 64 see all options in the popup menu;
#X obj 308 111 symbol;
#X text 250 283 select a new input method with the popup menu;
#X obj 202 185 bang;
#X msg 197 208 name language;
#N canvas 231 99 494 344 META 0;
#X text 12 145 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v3;
#X text 12 125 AUTHOR Hans-Christoph Steiner;
#X text 12 5 KEYWORDS control GUI needs_work (object won't create)
;
#X text 12 45 DESCRIPTION needs a description;
#X text 12 65 INLET_0 bang menu symbol;
#X text 12 85 OUTLET_0;
#X text 12 105 OUTLET_1;
#X restore 502 322 pd META;
#X obj 116 144 keyboard_layout;
#X connect 0 0 12 0;
#X connect 1 0 12 0;
#X connect 2 1 7 0;
#X connect 3 0 2 0;
#X connect 4 0 9 0;
#X connect 4 1 2 0;
#X connect 7 0 12 0;
#X connect 9 0 3 0;
#X connect 9 0 10 0;
#X connect 10 0 2 0;
#X connect 12 0 5 0;
#X connect 12 1 4 0;
/* Copyright 2006 Fredrik Olofsson
* Copyright 2007 Free Software Foundation
* ported to Pd by Hans-Christoph Steiner <hans@eds.org> from f0.keyboard_layout.c
*/
#include "m_pd.h"
#ifdef __APPLE__
#include <Carbon/Carbon.h>
#endif
static t_class *keyboard_layout_class;
typedef struct _keyboard_layout {
t_object x_obj;
t_outlet* x_data_outlet;
t_outlet* x_status_outlet;
} t_keyboard_layout;
#ifdef __APPLE__
//----------------------------------------------------------------------------------------------
void keyboard_layout_bang(t_keyboard_layout *x) {
//OSStatus err;
KeyboardLayoutRef currentLayoutRef;
const void *keyboardName;
char cKeyboardName[100];
KLGetCurrentKeyboardLayout(&currentLayoutRef);
KLGetKeyboardLayoutProperty(currentLayoutRef, kKLName, (const void **)&keyboardName);
CFStringGetCString((CFStringRef)keyboardName, cKeyboardName, 100, kCFStringEncodingASCII);
outlet_symbol(x->x_data_outlet, gensym(cKeyboardName));
}
void keyboard_layout_menu(t_keyboard_layout *x) {
//OSStatus err;
KeyboardLayoutRef currentLayoutRef;
const void *keyboardName;
char cKeyboardName[100];
CFIndex countOfLayouts;
CFIndex i;
t_atom name;
// TODO this should probably output [menu clear( so other messages work too
outlet_anything(x->x_status_outlet, gensym("clear"), 0, NULL);
KLGetKeyboardLayoutCount(&countOfLayouts);
for(i= 0; i<countOfLayouts; i++) {
KLGetKeyboardLayoutAtIndex(i, &currentLayoutRef);
KLGetKeyboardLayoutProperty(currentLayoutRef, kKLName, (const void **)&keyboardName);
CFStringGetCString((CFStringRef)keyboardName, cKeyboardName, 100, kCFStringEncodingASCII);
SETSYMBOL(&name, gensym(cKeyboardName));
// TODO this should probably output [menu append( so other messages work too
outlet_anything(x->x_status_outlet, gensym("append"), 1, &name);
}
}
void keyboard_layout_anything(t_keyboard_layout *x, t_symbol *s, short argc, t_atom *argv) {
//OSStatus err;
KeyboardLayoutRef currentLayoutRef;
const void *keyboardName;
char cKeyboardName[100];
keyboardName= CFStringCreateWithCString(NULL, s->s_name, kCFStringEncodingASCII);
KLGetKeyboardLayoutWithName(keyboardName, &currentLayoutRef);
KLGetKeyboardLayoutProperty(currentLayoutRef, kKLName, (const void **)&keyboardName);
CFStringGetCString((CFStringRef)keyboardName, cKeyboardName, 100, kCFStringEncodingASCII);
KLSetCurrentKeyboardLayout(currentLayoutRef);
//outlet_anything(x->t_out, s, 0, NULL);
keyboard_layout_bang(x);
}
void *keyboard_layout_new(void) {
t_keyboard_layout *x = (t_keyboard_layout *)pd_new(keyboard_layout_class);
x->x_data_outlet = outlet_new(&x->x_obj, &s_float);
x->x_status_outlet = outlet_new(&x->x_obj, &s_symbol);
return (x);
}
//----------------------------------------------------------------------------------------------
void keyboard_layout_setup(void) {
keyboard_layout_class = class_new(gensym("keyboard_layout"),
(t_newmethod)keyboard_layout_new,
NULL,
sizeof(t_keyboard_layout),
0, A_GIMME, 0);
class_addbang(keyboard_layout_class, (t_method)keyboard_layout_bang);
class_addanything(keyboard_layout_class, (t_method)keyboard_layout_anything);
class_addmethod(keyboard_layout_class, (t_method)keyboard_layout_menu,
gensym("menu"), 0);
post("f0.keyboard_layout v1.1-ub; distributed under GNU GPL license");
}
#else /* GNU/Linux and Windows */
void keyboard_layout_new(void)
{
post("f0.keyboard_layout v1.1-ub; distributed under GNU GPL license");
post("ERROR: this objectclass is currently only for Mac OS X");
}
void keyboard_layout_setup(void)