Add PCB Edition firmware

This commit is contained in:
Joe Scotto
2026-02-11 10:58:58 -05:00
parent 93b8e00f08
commit 226bbeeb6c
32 changed files with 38473 additions and 8 deletions
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,770 @@
ISO-10303-21;
HEADER;
/* File generated by Shapr3D Version 26.10.0.10376 */
FILE_DESCRIPTION(('HOOPS Exchange Step'),'2;1');
FILE_NAME('/Users/jscotto/Library/Containers/com.shapr3d.shapr/Data/tmp/export/temp_export',
'2026-02-11T10:52:10-05:00',
('jscotto'),
('Shapr3D Limited'),
'HOOPS Exchange 2025.9',
'Shapr3D',
'Authorized');
FILE_SCHEMA( ('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF {1 0 10303 442 1 1 4}') );
ENDSEC;
DATA;
#3=(NAMED_UNIT(*)PLANE_ANGLE_UNIT()SI_UNIT($,.RADIAN.));
#4=PLANE_ANGLE_MEASURE_WITH_UNIT(PLANE_ANGLE_MEASURE(0.0174532925),#3);
#5=(CONVERSION_BASED_UNIT('DEGREE',#4)NAMED_UNIT(#6)PLANE_ANGLE_UNIT());
#6=DIMENSIONAL_EXPONENTS(0.,0.,0.,0.,0.,0.,0.);
#7=(NAMED_UNIT(*)SI_UNIT($,.STERADIAN.)SOLID_ANGLE_UNIT());
#8=(LENGTH_UNIT()NAMED_UNIT(*)SI_UNIT(.MILLI.,.METRE.));
#9=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.000000E-05),#8,'DISTANCE_ACCURACY_VALUE','Maximum Tolerance applied to model');
#10=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#9))GLOBAL_UNIT_ASSIGNED_CONTEXT((#8,#5,#7))REPRESENTATION_CONTEXT('','OLED Cover'));
#12=CARTESIAN_POINT('',(0.,0.,0.));
#13=DIRECTION('',(0.,0.,1.));
#14=DIRECTION('',(1.,0.,0.));
#15=AXIS2_PLACEMENT_3D('',#12,#13,#14);
#27=CARTESIAN_POINT('',(18.160452316,-6.672769101,8.7958));
#28=DIRECTION('',(-0.906307787,-0.422618262,0.));
#29=DIRECTION('',(0.422618262,-0.906307787,0.));
#30=AXIS2_PLACEMENT_3D('',#27,#28,#29);
#31=PLANE('',#30);
#32=CARTESIAN_POINT('',(24.914624718,-21.157138559,7.7958));
#33=VERTEX_POINT('',#32);
#34=CARTESIAN_POINT('',(9.01790064,12.93349624,7.7958));
#35=VERTEX_POINT('',#34);
#36=CARTESIAN_POINT('',(24.914624718,-21.157138559,7.7958));
#37=DIRECTION('',(-0.422618262,0.906307787,0.));
#38=VECTOR('',#37,37.61485368);
#39=LINE('',#36,#38);
#40=EDGE_CURVE('',#33,#35,#39,.T.);
#41=ORIENTED_EDGE('',*,*,#40,.T.);
#42=CARTESIAN_POINT('',(9.01790064,12.93349624,8.7958));
#43=VERTEX_POINT('',#42);
#44=CARTESIAN_POINT('',(9.01790064,12.93349624,7.7958));
#45=DIRECTION('',(-0.,-0.,1.));
#46=VECTOR('',#45,1.);
#47=LINE('',#44,#46);
#48=EDGE_CURVE('',#35,#43,#47,.T.);
#49=ORIENTED_EDGE('',*,*,#48,.T.);
#50=CARTESIAN_POINT('',(24.914624718,-21.157138559,8.7958));
#51=VERTEX_POINT('',#50);
#52=CARTESIAN_POINT('',(24.914624718,-21.157138559,8.7958));
#53=DIRECTION('',(-0.422618262,0.906307787,0.));
#54=VECTOR('',#53,37.61485368);
#55=LINE('',#52,#54);
#56=EDGE_CURVE('',#51,#43,#55,.T.);
#57=ORIENTED_EDGE('',*,*,#56,.F.);
#58=CARTESIAN_POINT('',(24.914624718,-21.157138559,8.7958));
#59=DIRECTION('',(-0.,-0.,-1.));
#60=VECTOR('',#59,1.);
#61=LINE('',#58,#60);
#62=EDGE_CURVE('',#51,#33,#61,.T.);
#63=ORIENTED_EDGE('',*,*,#62,.T.);
#64=EDGE_LOOP('',(#41,#49,#57,#63));
#65=FACE_BOUND('',#64,.T.);
#66=ADVANCED_FACE('',(#65),#31,.F.);
#67=CARTESIAN_POINT('',(3.461840347,42.532254762,8.7958));
#68=DIRECTION('',(0.,0.,-1.));
#69=DIRECTION('',(-1.,0.,0.));
#70=AXIS2_PLACEMENT_3D('',#67,#68,#69);
#71=CYLINDRICAL_SURFACE('',#70,29.2);
#72=CARTESIAN_POINT('',(7.703440555,13.641965258,8.7958));
#73=VERTEX_POINT('',#72);
#74=CARTESIAN_POINT('',(3.461850728,13.332255473,8.7958));
#75=VERTEX_POINT('',#74);
#76=CARTESIAN_POINT('',(3.461840347,42.532254762,8.7958));
#77=DIRECTION('',(0.,0.,-1.));
#78=DIRECTION('',(1.,0.,0.));
#79=AXIS2_PLACEMENT_3D('',#76,#77,#78);
#80=CIRCLE('',#79,29.2);
#81=EDGE_CURVE('',#73,#75,#80,.T.);
#82=ORIENTED_EDGE('',*,*,#81,.F.);
#83=CARTESIAN_POINT('',(7.703440555,13.641965258,7.7958));
#84=VERTEX_POINT('',#83);
#85=CARTESIAN_POINT('',(7.703440555,13.641965258,8.7958));
#86=DIRECTION('',(0.,0.,-1.));
#87=VECTOR('',#86,1.);
#88=LINE('',#85,#87);
#89=EDGE_CURVE('',#73,#84,#88,.T.);
#90=ORIENTED_EDGE('',*,*,#89,.T.);
#91=CARTESIAN_POINT('',(3.461850728,13.332255473,7.7958));
#92=VERTEX_POINT('',#91);
#93=CARTESIAN_POINT('',(3.461840347,42.532254762,7.7958));
#94=DIRECTION('',(0.,0.,-1.));
#95=DIRECTION('',(1.,0.,0.));
#96=AXIS2_PLACEMENT_3D('',#93,#94,#95);
#97=CIRCLE('',#96,29.2);
#98=EDGE_CURVE('',#84,#92,#97,.T.);
#99=ORIENTED_EDGE('',*,*,#98,.T.);
#100=CARTESIAN_POINT('',(3.461850728,13.332255473,8.7958));
#101=DIRECTION('',(0.,0.,-1.));
#102=VECTOR('',#101,1.);
#103=LINE('',#100,#102);
#104=EDGE_CURVE('',#75,#92,#103,.T.);
#105=ORIENTED_EDGE('',*,*,#104,.F.);
#106=EDGE_LOOP('',(#82,#90,#99,#105));
#107=FACE_BOUND('',#106,.T.);
#108=ADVANCED_FACE('',(#107),#71,.F.);
#109=CARTESIAN_POINT('',(-3.564670363,13.332252975,8.7958));
#110=DIRECTION('',(-0.000000356,1.,0.));
#111=DIRECTION('',(-1.,-0.000000356,0.));
#112=AXIS2_PLACEMENT_3D('',#109,#110,#111);
#113=PLANE('',#112);
#114=CARTESIAN_POINT('',(-10.591191455,13.332250477,7.7958));
#115=VERTEX_POINT('',#114);
#116=CARTESIAN_POINT('',(-10.591191455,13.332250477,7.7958));
#117=DIRECTION('',(1.,0.000000356,0.));
#118=VECTOR('',#117,14.053042183);
#119=LINE('',#116,#118);
#120=EDGE_CURVE('',#115,#92,#119,.T.);
#121=ORIENTED_EDGE('',*,*,#120,.F.);
#122=CARTESIAN_POINT('',(-10.591191455,13.332250477,8.7958));
#123=VERTEX_POINT('',#122);
#124=CARTESIAN_POINT('',(-10.591191455,13.332250477,8.7958));
#125=DIRECTION('',(0.,0.,-1.));
#126=VECTOR('',#125,1.);
#127=LINE('',#124,#126);
#128=EDGE_CURVE('',#123,#115,#127,.T.);
#129=ORIENTED_EDGE('',*,*,#128,.F.);
#130=CARTESIAN_POINT('',(-10.591191455,13.332250477,8.7958));
#131=DIRECTION('',(1.,0.000000356,0.));
#132=VECTOR('',#131,14.053042183);
#133=LINE('',#130,#132);
#134=EDGE_CURVE('',#123,#75,#133,.T.);
#135=ORIENTED_EDGE('',*,*,#134,.T.);
#136=ORIENTED_EDGE('',*,*,#104,.T.);
#137=EDGE_LOOP('',(#121,#129,#135,#136));
#138=FACE_BOUND('',#137,.T.);
#139=ADVANCED_FACE('',(#138),#113,.T.);
#140=CARTESIAN_POINT('',(-10.591201836,42.532250477,8.7958));
#141=DIRECTION('',(0.,0.,-1.));
#142=DIRECTION('',(-1.,0.,0.));
#143=AXIS2_PLACEMENT_3D('',#140,#141,#142);
#144=CYLINDRICAL_SURFACE('',#143,29.2);
#145=CARTESIAN_POINT('',(-14.832772235,13.641956596,7.7958));
#146=VERTEX_POINT('',#145);
#147=CARTESIAN_POINT('',(-10.591201836,42.532250477,7.7958));
#148=DIRECTION('',(0.,0.,-1.));
#149=DIRECTION('',(1.,0.,0.));
#150=AXIS2_PLACEMENT_3D('',#147,#148,#149);
#151=CIRCLE('',#150,29.2);
#152=EDGE_CURVE('',#115,#146,#151,.T.);
#153=ORIENTED_EDGE('',*,*,#152,.T.);
#154=CARTESIAN_POINT('',(-14.832772235,13.641956596,8.7958));
#155=VERTEX_POINT('',#154);
#156=CARTESIAN_POINT('',(-14.832772235,13.641956596,7.7958));
#157=DIRECTION('',(-0.,-0.,1.));
#158=VECTOR('',#157,1.);
#159=LINE('',#156,#158);
#160=EDGE_CURVE('',#146,#155,#159,.T.);
#161=ORIENTED_EDGE('',*,*,#160,.T.);
#162=CARTESIAN_POINT('',(-10.591201836,42.532250477,8.7958));
#163=DIRECTION('',(0.,0.,-1.));
#164=DIRECTION('',(1.,0.,0.));
#165=AXIS2_PLACEMENT_3D('',#162,#163,#164);
#166=CIRCLE('',#165,29.2);
#167=EDGE_CURVE('',#123,#155,#166,.T.);
#168=ORIENTED_EDGE('',*,*,#167,.F.);
#169=ORIENTED_EDGE('',*,*,#128,.T.);
#170=EDGE_LOOP('',(#153,#161,#168,#169));
#171=FACE_BOUND('',#170,.T.);
#172=ADVANCED_FACE('',(#171),#144,.F.);
#173=CARTESIAN_POINT('',(-25.289774835,-6.672761041,8.7958));
#174=DIRECTION('',(0.906307787,-0.422618262,0.));
#175=DIRECTION('',(0.422618262,0.906307787,0.));
#176=AXIS2_PLACEMENT_3D('',#173,#174,#175);
#177=PLANE('',#176);
#178=CARTESIAN_POINT('',(-16.147231044,12.93348739,8.7958));
#179=VERTEX_POINT('',#178);
#180=CARTESIAN_POINT('',(-32.0439444,-21.157124415,8.7958));
#181=VERTEX_POINT('',#180);
#182=CARTESIAN_POINT('',(-16.147231044,12.93348739,8.7958));
#183=DIRECTION('',(-0.422618262,-0.906307787,0.));
#184=VECTOR('',#183,37.61482831);
#185=LINE('',#182,#184);
#186=EDGE_CURVE('',#179,#181,#185,.T.);
#187=ORIENTED_EDGE('',*,*,#186,.F.);
#188=CARTESIAN_POINT('',(-16.147231044,12.93348739,7.7958));
#189=VERTEX_POINT('',#188);
#190=CARTESIAN_POINT('',(-16.147231044,12.93348739,8.7958));
#191=DIRECTION('',(0.,0.,-1.));
#192=VECTOR('',#191,1.);
#193=LINE('',#190,#192);
#194=EDGE_CURVE('',#179,#189,#193,.T.);
#195=ORIENTED_EDGE('',*,*,#194,.T.);
#196=CARTESIAN_POINT('',(-32.0439444,-21.157124415,7.7958));
#197=VERTEX_POINT('',#196);
#198=CARTESIAN_POINT('',(-16.147231044,12.93348739,7.7958));
#199=DIRECTION('',(-0.422618262,-0.906307787,0.));
#200=VECTOR('',#199,37.61482831);
#201=LINE('',#198,#200);
#202=EDGE_CURVE('',#189,#197,#201,.T.);
#203=ORIENTED_EDGE('',*,*,#202,.T.);
#204=CARTESIAN_POINT('',(-32.0439444,-21.157124415,7.7958));
#205=DIRECTION('',(0.,0.,1.));
#206=VECTOR('',#205,1.);
#207=LINE('',#204,#206);
#208=EDGE_CURVE('',#197,#181,#207,.T.);
#209=ORIENTED_EDGE('',*,*,#208,.T.);
#210=EDGE_LOOP('',(#187,#195,#203,#209));
#211=FACE_BOUND('',#210,.T.);
#212=ADVANCED_FACE('',(#211),#177,.F.);
#213=CARTESIAN_POINT('',(-12.476252572,-45.920874769,8.7958));
#214=DIRECTION('',(0.,0.,-1.));
#215=DIRECTION('',(-1.,0.,0.));
#216=AXIS2_PLACEMENT_3D('',#213,#214,#215);
#217=CYLINDRICAL_SURFACE('',#216,29.199966889);
#218=CARTESIAN_POINT('',(-12.476252572,-16.72090788,8.7958));
#219=VERTEX_POINT('',#218);
#220=CARTESIAN_POINT('',(-30.154293363,-22.680286564,8.7958));
#221=VERTEX_POINT('',#220);
#222=CARTESIAN_POINT('',(-12.476252572,-45.920874769,8.7958));
#223=DIRECTION('',(0.,0.,1.));
#224=DIRECTION('',(1.,0.,-0.));
#225=AXIS2_PLACEMENT_3D('',#222,#223,#224);
#226=CIRCLE('',#225,29.199966889);
#227=EDGE_CURVE('',#219,#221,#226,.T.);
#228=ORIENTED_EDGE('',*,*,#227,.T.);
#229=CARTESIAN_POINT('',(-30.154293363,-22.680286564,7.7958));
#230=VERTEX_POINT('',#229);
#231=CARTESIAN_POINT('',(-30.154293363,-22.680286564,8.7958));
#232=DIRECTION('',(0.,0.,-1.));
#233=VECTOR('',#232,1.);
#234=LINE('',#231,#233);
#235=EDGE_CURVE('',#221,#230,#234,.T.);
#236=ORIENTED_EDGE('',*,*,#235,.T.);
#237=CARTESIAN_POINT('',(-12.476252572,-16.72090788,7.7958));
#238=VERTEX_POINT('',#237);
#239=CARTESIAN_POINT('',(-12.476252572,-45.920874769,7.7958));
#240=DIRECTION('',(0.,0.,1.));
#241=DIRECTION('',(1.,0.,-0.));
#242=AXIS2_PLACEMENT_3D('',#239,#240,#241);
#243=CIRCLE('',#242,29.199966889);
#244=EDGE_CURVE('',#238,#230,#243,.T.);
#245=ORIENTED_EDGE('',*,*,#244,.F.);
#246=CARTESIAN_POINT('',(-12.476252572,-16.72090788,8.7958));
#247=DIRECTION('',(0.,0.,-1.));
#248=VECTOR('',#247,1.);
#249=LINE('',#246,#248);
#250=EDGE_CURVE('',#219,#238,#249,.T.);
#251=ORIENTED_EDGE('',*,*,#250,.F.);
#252=EDGE_LOOP('',(#228,#236,#245,#251));
#253=FACE_BOUND('',#252,.T.);
#254=ADVANCED_FACE('',(#253),#217,.F.);
#255=CARTESIAN_POINT('',(-3.564672165,-16.72090788,8.7958));
#256=DIRECTION('',(0.,-1.,0.));
#257=DIRECTION('',(1.,0.,0.));
#258=AXIS2_PLACEMENT_3D('',#255,#256,#257);
#259=PLANE('',#258);
#260=CARTESIAN_POINT('',(5.346908242,-16.72090788,7.7958));
#261=VERTEX_POINT('',#260);
#262=CARTESIAN_POINT('',(5.346908242,-16.72090788,7.7958));
#263=DIRECTION('',(-1.,-0.,0.));
#264=VECTOR('',#263,17.823160814);
#265=LINE('',#262,#264);
#266=EDGE_CURVE('',#261,#238,#265,.T.);
#267=ORIENTED_EDGE('',*,*,#266,.F.);
#268=CARTESIAN_POINT('',(5.346908242,-16.72090788,8.7958));
#269=VERTEX_POINT('',#268);
#270=CARTESIAN_POINT('',(5.346908242,-16.72090788,8.7958));
#271=DIRECTION('',(0.,0.,-1.));
#272=VECTOR('',#271,1.);
#273=LINE('',#270,#272);
#274=EDGE_CURVE('',#269,#261,#273,.T.);
#275=ORIENTED_EDGE('',*,*,#274,.F.);
#276=CARTESIAN_POINT('',(5.346908242,-16.72090788,8.7958));
#277=DIRECTION('',(-1.,-0.,0.));
#278=VECTOR('',#277,17.823160814);
#279=LINE('',#276,#278);
#280=EDGE_CURVE('',#269,#219,#279,.T.);
#281=ORIENTED_EDGE('',*,*,#280,.T.);
#282=ORIENTED_EDGE('',*,*,#250,.T.);
#283=EDGE_LOOP('',(#267,#275,#281,#282));
#284=FACE_BOUND('',#283,.T.);
#285=ADVANCED_FACE('',(#284),#259,.T.);
#286=CARTESIAN_POINT('',(15.246837395,-12.273275913,8.7958));
#287=DIRECTION('',(0.,0.,-1.));
#288=DIRECTION('',(-1.,0.,0.));
#289=AXIS2_PLACEMENT_3D('',#286,#287,#288);
#290=CYLINDRICAL_SURFACE('',#289,1.1);
#291=CARTESIAN_POINT('',(14.146837395,-12.273275913,7.7958));
#292=VERTEX_POINT('',#291);
#293=CARTESIAN_POINT('',(14.146837395,-12.273275913,8.7958));
#294=VERTEX_POINT('',#293);
#295=CARTESIAN_POINT('',(14.146837395,-12.273275913,7.7958));
#296=DIRECTION('',(-0.,-0.,1.));
#297=VECTOR('',#296,1.);
#298=LINE('',#295,#297);
#299=EDGE_CURVE('',#292,#294,#298,.T.);
#300=ORIENTED_EDGE('',*,*,#299,.F.);
#301=CARTESIAN_POINT('',(16.346837395,-12.273275913,7.7958));
#302=VERTEX_POINT('',#301);
#303=CARTESIAN_POINT('',(15.246837395,-12.273275913,7.7958));
#304=DIRECTION('',(0.,0.,1.));
#305=DIRECTION('',(1.,0.,-0.));
#306=AXIS2_PLACEMENT_3D('',#303,#304,#305);
#307=CIRCLE('',#306,1.1);
#308=EDGE_CURVE('',#302,#292,#307,.T.);
#309=ORIENTED_EDGE('',*,*,#308,.F.);
#310=CARTESIAN_POINT('',(15.246837395,-12.273275913,7.7958));
#311=DIRECTION('',(0.,0.,1.));
#312=DIRECTION('',(1.,0.,-0.));
#313=AXIS2_PLACEMENT_3D('',#310,#311,#312);
#314=CIRCLE('',#313,1.1);
#315=EDGE_CURVE('',#292,#302,#314,.T.);
#316=ORIENTED_EDGE('',*,*,#315,.F.);
#317=ORIENTED_EDGE('',*,*,#299,.T.);
#318=CARTESIAN_POINT('',(16.346837395,-12.273275913,8.7958));
#319=VERTEX_POINT('',#318);
#320=CARTESIAN_POINT('',(15.246837395,-12.273275913,8.7958));
#321=DIRECTION('',(0.,0.,1.));
#322=DIRECTION('',(1.,0.,-0.));
#323=AXIS2_PLACEMENT_3D('',#320,#321,#322);
#324=CIRCLE('',#323,1.1);
#325=EDGE_CURVE('',#294,#319,#324,.T.);
#326=ORIENTED_EDGE('',*,*,#325,.T.);
#327=CARTESIAN_POINT('',(15.246837395,-12.273275913,8.7958));
#328=DIRECTION('',(0.,0.,1.));
#329=DIRECTION('',(1.,0.,-0.));
#330=AXIS2_PLACEMENT_3D('',#327,#328,#329);
#331=CIRCLE('',#330,1.1);
#332=EDGE_CURVE('',#319,#294,#331,.T.);
#333=ORIENTED_EDGE('',*,*,#332,.T.);
#334=EDGE_LOOP('',(#300,#309,#316,#317,#326,#333));
#335=FACE_BOUND('',#334,.T.);
#336=ADVANCED_FACE('',(#335),#290,.F.);
#337=CARTESIAN_POINT('',(-19.028811153,0.766526349,8.7958));
#338=DIRECTION('',(0.,0.,-1.));
#339=DIRECTION('',(-1.,0.,0.));
#340=AXIS2_PLACEMENT_3D('',#337,#338,#339);
#341=CYLINDRICAL_SURFACE('',#340,1.1);
#342=CARTESIAN_POINT('',(-20.128811153,0.766526349,7.7958));
#343=VERTEX_POINT('',#342);
#344=CARTESIAN_POINT('',(-20.128811153,0.766526349,8.7958));
#345=VERTEX_POINT('',#344);
#346=CARTESIAN_POINT('',(-20.128811153,0.766526349,7.7958));
#347=DIRECTION('',(-0.,-0.,1.));
#348=VECTOR('',#347,1.);
#349=LINE('',#346,#348);
#350=EDGE_CURVE('',#343,#345,#349,.T.);
#351=ORIENTED_EDGE('',*,*,#350,.F.);
#352=CARTESIAN_POINT('',(-17.928811153,0.766526349,7.7958));
#353=VERTEX_POINT('',#352);
#354=CARTESIAN_POINT('',(-19.028811153,0.766526349,7.7958));
#355=DIRECTION('',(0.,0.,1.));
#356=DIRECTION('',(1.,0.,-0.));
#357=AXIS2_PLACEMENT_3D('',#354,#355,#356);
#358=CIRCLE('',#357,1.1);
#359=EDGE_CURVE('',#353,#343,#358,.T.);
#360=ORIENTED_EDGE('',*,*,#359,.F.);
#361=CARTESIAN_POINT('',(-19.028811153,0.766526349,7.7958));
#362=DIRECTION('',(0.,0.,1.));
#363=DIRECTION('',(1.,0.,-0.));
#364=AXIS2_PLACEMENT_3D('',#361,#362,#363);
#365=CIRCLE('',#364,1.1);
#366=EDGE_CURVE('',#343,#353,#365,.T.);
#367=ORIENTED_EDGE('',*,*,#366,.F.);
#368=ORIENTED_EDGE('',*,*,#350,.T.);
#369=CARTESIAN_POINT('',(-17.928811153,0.766526349,8.7958));
#370=VERTEX_POINT('',#369);
#371=CARTESIAN_POINT('',(-19.028811153,0.766526349,8.7958));
#372=DIRECTION('',(0.,0.,1.));
#373=DIRECTION('',(1.,0.,-0.));
#374=AXIS2_PLACEMENT_3D('',#371,#372,#373);
#375=CIRCLE('',#374,1.1);
#376=EDGE_CURVE('',#345,#370,#375,.T.);
#377=ORIENTED_EDGE('',*,*,#376,.T.);
#378=CARTESIAN_POINT('',(-19.028811153,0.766526349,8.7958));
#379=DIRECTION('',(0.,0.,1.));
#380=DIRECTION('',(1.,0.,-0.));
#381=AXIS2_PLACEMENT_3D('',#378,#379,#380);
#382=CIRCLE('',#381,1.1);
#383=EDGE_CURVE('',#370,#345,#382,.T.);
#384=ORIENTED_EDGE('',*,*,#383,.T.);
#385=EDGE_LOOP('',(#351,#360,#367,#368,#377,#384));
#386=FACE_BOUND('',#385,.T.);
#387=ADVANCED_FACE('',(#386),#341,.F.);
#388=CARTESIAN_POINT('',(5.346908242,-45.920892729,8.7958));
#389=DIRECTION('',(0.,0.,-1.));
#390=DIRECTION('',(-1.,0.,0.));
#391=AXIS2_PLACEMENT_3D('',#388,#389,#390);
#392=CYLINDRICAL_SURFACE('',#391,29.199984849);
#393=CARTESIAN_POINT('',(23.024973116,-22.680300278,7.7958));
#394=VERTEX_POINT('',#393);
#395=CARTESIAN_POINT('',(5.346908242,-45.920892729,7.7958));
#396=DIRECTION('',(0.,0.,1.));
#397=DIRECTION('',(1.,0.,-0.));
#398=AXIS2_PLACEMENT_3D('',#395,#396,#397);
#399=CIRCLE('',#398,29.199984849);
#400=EDGE_CURVE('',#394,#261,#399,.T.);
#401=ORIENTED_EDGE('',*,*,#400,.F.);
#402=CARTESIAN_POINT('',(23.024973116,-22.680300278,8.7958));
#403=VERTEX_POINT('',#402);
#404=CARTESIAN_POINT('',(23.024973116,-22.680300278,7.7958));
#405=DIRECTION('',(-0.,-0.,1.));
#406=VECTOR('',#405,1.);
#407=LINE('',#404,#406);
#408=EDGE_CURVE('',#394,#403,#407,.T.);
#409=ORIENTED_EDGE('',*,*,#408,.T.);
#410=CARTESIAN_POINT('',(5.346908242,-45.920892729,8.7958));
#411=DIRECTION('',(0.,0.,1.));
#412=DIRECTION('',(1.,0.,-0.));
#413=AXIS2_PLACEMENT_3D('',#410,#411,#412);
#414=CIRCLE('',#413,29.199984849);
#415=EDGE_CURVE('',#403,#269,#414,.T.);
#416=ORIENTED_EDGE('',*,*,#415,.T.);
#417=ORIENTED_EDGE('',*,*,#274,.T.);
#418=EDGE_LOOP('',(#401,#409,#416,#417));
#419=FACE_BOUND('',#418,.T.);
#420=ADVANCED_FACE('',(#419),#392,.F.);
#421=CARTESIAN_POINT('',(11.896063358,0.766526349,8.7958));
#422=DIRECTION('',(0.,0.,-1.));
#423=DIRECTION('',(-1.,0.,0.));
#424=AXIS2_PLACEMENT_3D('',#421,#422,#423);
#425=CYLINDRICAL_SURFACE('',#424,1.1);
#426=CARTESIAN_POINT('',(10.796063358,0.766526349,7.7958));
#427=VERTEX_POINT('',#426);
#428=CARTESIAN_POINT('',(10.796063358,0.766526349,8.7958));
#429=VERTEX_POINT('',#428);
#430=CARTESIAN_POINT('',(10.796063358,0.766526349,7.7958));
#431=DIRECTION('',(-0.,-0.,1.));
#432=VECTOR('',#431,1.);
#433=LINE('',#430,#432);
#434=EDGE_CURVE('',#427,#429,#433,.T.);
#435=ORIENTED_EDGE('',*,*,#434,.F.);
#436=CARTESIAN_POINT('',(12.996063358,0.766526349,7.7958));
#437=VERTEX_POINT('',#436);
#438=CARTESIAN_POINT('',(11.896063358,0.766526349,7.7958));
#439=DIRECTION('',(0.,0.,1.));
#440=DIRECTION('',(1.,0.,-0.));
#441=AXIS2_PLACEMENT_3D('',#438,#439,#440);
#442=CIRCLE('',#441,1.1);
#443=EDGE_CURVE('',#437,#427,#442,.T.);
#444=ORIENTED_EDGE('',*,*,#443,.F.);
#445=CARTESIAN_POINT('',(11.896063358,0.766526349,7.7958));
#446=DIRECTION('',(0.,0.,1.));
#447=DIRECTION('',(1.,0.,-0.));
#448=AXIS2_PLACEMENT_3D('',#445,#446,#447);
#449=CIRCLE('',#448,1.1);
#450=EDGE_CURVE('',#427,#437,#449,.T.);
#451=ORIENTED_EDGE('',*,*,#450,.F.);
#452=ORIENTED_EDGE('',*,*,#434,.T.);
#453=CARTESIAN_POINT('',(12.996063358,0.766526349,8.7958));
#454=VERTEX_POINT('',#453);
#455=CARTESIAN_POINT('',(11.896063358,0.766526349,8.7958));
#456=DIRECTION('',(0.,0.,1.));
#457=DIRECTION('',(1.,0.,-0.));
#458=AXIS2_PLACEMENT_3D('',#455,#456,#457);
#459=CIRCLE('',#458,1.1);
#460=EDGE_CURVE('',#429,#454,#459,.T.);
#461=ORIENTED_EDGE('',*,*,#460,.T.);
#462=CARTESIAN_POINT('',(11.896063358,0.766526349,8.7958));
#463=DIRECTION('',(0.,0.,1.));
#464=DIRECTION('',(1.,0.,-0.));
#465=AXIS2_PLACEMENT_3D('',#462,#463,#464);
#466=CIRCLE('',#465,1.1);
#467=EDGE_CURVE('',#454,#429,#466,.T.);
#468=ORIENTED_EDGE('',*,*,#467,.T.);
#469=EDGE_LOOP('',(#435,#444,#451,#452,#461,#468));
#470=FACE_BOUND('',#469,.T.);
#471=ADVANCED_FACE('',(#470),#425,.F.);
#472=CARTESIAN_POINT('',(-22.37958519,-12.273275913,8.7958));
#473=DIRECTION('',(0.,0.,-1.));
#474=DIRECTION('',(-1.,0.,0.));
#475=AXIS2_PLACEMENT_3D('',#472,#473,#474);
#476=CYLINDRICAL_SURFACE('',#475,1.1);
#477=CARTESIAN_POINT('',(-23.47958519,-12.273275913,7.7958));
#478=VERTEX_POINT('',#477);
#479=CARTESIAN_POINT('',(-23.47958519,-12.273275913,8.7958));
#480=VERTEX_POINT('',#479);
#481=CARTESIAN_POINT('',(-23.47958519,-12.273275913,7.7958));
#482=DIRECTION('',(-0.,-0.,1.));
#483=VECTOR('',#482,1.);
#484=LINE('',#481,#483);
#485=EDGE_CURVE('',#478,#480,#484,.T.);
#486=ORIENTED_EDGE('',*,*,#485,.F.);
#487=CARTESIAN_POINT('',(-21.27958519,-12.273275913,7.7958));
#488=VERTEX_POINT('',#487);
#489=CARTESIAN_POINT('',(-22.37958519,-12.273275913,7.7958));
#490=DIRECTION('',(0.,0.,1.));
#491=DIRECTION('',(1.,0.,-0.));
#492=AXIS2_PLACEMENT_3D('',#489,#490,#491);
#493=CIRCLE('',#492,1.1);
#494=EDGE_CURVE('',#488,#478,#493,.T.);
#495=ORIENTED_EDGE('',*,*,#494,.F.);
#496=CARTESIAN_POINT('',(-22.37958519,-12.273275913,7.7958));
#497=DIRECTION('',(0.,0.,1.));
#498=DIRECTION('',(1.,0.,-0.));
#499=AXIS2_PLACEMENT_3D('',#496,#497,#498);
#500=CIRCLE('',#499,1.1);
#501=EDGE_CURVE('',#478,#488,#500,.T.);
#502=ORIENTED_EDGE('',*,*,#501,.F.);
#503=ORIENTED_EDGE('',*,*,#485,.T.);
#504=CARTESIAN_POINT('',(-21.27958519,-12.273275913,8.7958));
#505=VERTEX_POINT('',#504);
#506=CARTESIAN_POINT('',(-22.37958519,-12.273275913,8.7958));
#507=DIRECTION('',(0.,0.,1.));
#508=DIRECTION('',(1.,0.,-0.));
#509=AXIS2_PLACEMENT_3D('',#506,#507,#508);
#510=CIRCLE('',#509,1.1);
#511=EDGE_CURVE('',#480,#505,#510,.T.);
#512=ORIENTED_EDGE('',*,*,#511,.T.);
#513=CARTESIAN_POINT('',(-22.37958519,-12.273275913,8.7958));
#514=DIRECTION('',(0.,0.,1.));
#515=DIRECTION('',(1.,0.,-0.));
#516=AXIS2_PLACEMENT_3D('',#513,#514,#515);
#517=CIRCLE('',#516,1.1);
#518=EDGE_CURVE('',#505,#480,#517,.T.);
#519=ORIENTED_EDGE('',*,*,#518,.T.);
#520=EDGE_LOOP('',(#486,#495,#502,#503,#512,#519));
#521=FACE_BOUND('',#520,.T.);
#522=ADVANCED_FACE('',(#521),#476,.F.);
#523=CARTESIAN_POINT('',(-0.,0.,8.7958));
#524=DIRECTION('',(0.,0.,1.));
#525=DIRECTION('',(1.,0.,0.));
#526=AXIS2_PLACEMENT_3D('',#523,#524,#525);
#527=PLANE('',#526);
#528=ORIENTED_EDGE('',*,*,#460,.F.);
#529=ORIENTED_EDGE('',*,*,#467,.F.);
#530=EDGE_LOOP('',(#528,#529));
#531=FACE_BOUND('',#530,.T.);
#532=ORIENTED_EDGE('',*,*,#56,.T.);
#533=CARTESIAN_POINT('',(7.885015906,12.405223412,8.7958));
#534=DIRECTION('',(0.,0.,1.));
#535=DIRECTION('',(1.,0.,-0.));
#536=AXIS2_PLACEMENT_3D('',#533,#534,#535);
#537=CIRCLE('',#536,1.25);
#538=EDGE_CURVE('',#43,#73,#537,.T.);
#539=ORIENTED_EDGE('',*,*,#538,.T.);
#540=ORIENTED_EDGE('',*,*,#81,.T.);
#541=ORIENTED_EDGE('',*,*,#134,.F.);
#542=ORIENTED_EDGE('',*,*,#167,.T.);
#543=CARTESIAN_POINT('',(-15.01434631,12.405214563,8.7958));
#544=DIRECTION('',(0.,0.,1.));
#545=DIRECTION('',(1.,0.,-0.));
#546=AXIS2_PLACEMENT_3D('',#543,#544,#545);
#547=CIRCLE('',#546,1.25);
#548=EDGE_CURVE('',#155,#179,#547,.T.);
#549=ORIENTED_EDGE('',*,*,#548,.T.);
#550=ORIENTED_EDGE('',*,*,#186,.T.);
#551=CARTESIAN_POINT('',(-32.161059666,-21.685397242,8.7958));
#552=VERTEX_POINT('',#551);
#553=CARTESIAN_POINT('',(-30.911059666,-21.685397242,8.7958));
#554=DIRECTION('',(0.,0.,1.));
#555=DIRECTION('',(1.,0.,-0.));
#556=AXIS2_PLACEMENT_3D('',#553,#554,#555);
#557=CIRCLE('',#556,1.25);
#558=EDGE_CURVE('',#181,#552,#557,.T.);
#559=ORIENTED_EDGE('',*,*,#558,.T.);
#560=CARTESIAN_POINT('',(-30.911059666,-21.685397242,8.7958));
#561=DIRECTION('',(0.,0.,1.));
#562=DIRECTION('',(1.,0.,-0.));
#563=AXIS2_PLACEMENT_3D('',#560,#561,#562);
#564=CIRCLE('',#563,1.25);
#565=EDGE_CURVE('',#552,#221,#564,.T.);
#566=ORIENTED_EDGE('',*,*,#565,.T.);
#567=ORIENTED_EDGE('',*,*,#227,.F.);
#568=ORIENTED_EDGE('',*,*,#280,.F.);
#569=ORIENTED_EDGE('',*,*,#415,.F.);
#570=CARTESIAN_POINT('',(23.781739985,-21.685411386,8.7958));
#571=DIRECTION('',(0.,0.,1.));
#572=DIRECTION('',(1.,0.,-0.));
#573=AXIS2_PLACEMENT_3D('',#570,#571,#572);
#574=CIRCLE('',#573,1.25);
#575=EDGE_CURVE('',#403,#51,#574,.T.);
#576=ORIENTED_EDGE('',*,*,#575,.T.);
#577=EDGE_LOOP('',(#532,#539,#540,#541,#542,#549,#550,#559,#566,#567,#568,#569,#576));
#578=FACE_BOUND('',#577,.T.);
#579=ORIENTED_EDGE('',*,*,#376,.F.);
#580=ORIENTED_EDGE('',*,*,#383,.F.);
#581=EDGE_LOOP('',(#579,#580));
#582=FACE_BOUND('',#581,.T.);
#583=ORIENTED_EDGE('',*,*,#325,.F.);
#584=ORIENTED_EDGE('',*,*,#332,.F.);
#585=EDGE_LOOP('',(#583,#584));
#586=FACE_BOUND('',#585,.T.);
#587=ORIENTED_EDGE('',*,*,#511,.F.);
#588=ORIENTED_EDGE('',*,*,#518,.F.);
#589=EDGE_LOOP('',(#587,#588));
#590=FACE_BOUND('',#589,.T.);
#591=ADVANCED_FACE('',(#531,#578,#582,#586,#590),#527,.T.);
#592=CARTESIAN_POINT('',(-0.,0.,7.7958));
#593=DIRECTION('',(0.,0.,1.));
#594=DIRECTION('',(1.,0.,0.));
#595=AXIS2_PLACEMENT_3D('',#592,#593,#594);
#596=PLANE('',#595);
#597=ORIENTED_EDGE('',*,*,#443,.T.);
#598=ORIENTED_EDGE('',*,*,#450,.T.);
#599=EDGE_LOOP('',(#597,#598));
#600=FACE_BOUND('',#599,.T.);
#601=ORIENTED_EDGE('',*,*,#98,.F.);
#602=CARTESIAN_POINT('',(7.885015906,12.405223412,7.7958));
#603=DIRECTION('',(-0.,-0.,-1.));
#604=DIRECTION('',(1.,0.,-0.));
#605=AXIS2_PLACEMENT_3D('',#602,#603,#604);
#606=CIRCLE('',#605,1.25);
#607=EDGE_CURVE('',#84,#35,#606,.T.);
#608=ORIENTED_EDGE('',*,*,#607,.T.);
#609=ORIENTED_EDGE('',*,*,#40,.F.);
#610=CARTESIAN_POINT('',(23.781739985,-21.685411386,7.7958));
#611=DIRECTION('',(-0.,-0.,-1.));
#612=DIRECTION('',(1.,0.,-0.));
#613=AXIS2_PLACEMENT_3D('',#610,#611,#612);
#614=CIRCLE('',#613,1.25);
#615=EDGE_CURVE('',#33,#394,#614,.T.);
#616=ORIENTED_EDGE('',*,*,#615,.T.);
#617=ORIENTED_EDGE('',*,*,#400,.T.);
#618=ORIENTED_EDGE('',*,*,#266,.T.);
#619=ORIENTED_EDGE('',*,*,#244,.T.);
#620=CARTESIAN_POINT('',(-32.161059666,-21.685397242,7.7958));
#621=VERTEX_POINT('',#620);
#622=CARTESIAN_POINT('',(-30.911059666,-21.685397242,7.7958));
#623=DIRECTION('',(-0.,-0.,-1.));
#624=DIRECTION('',(1.,0.,-0.));
#625=AXIS2_PLACEMENT_3D('',#622,#623,#624);
#626=CIRCLE('',#625,1.25);
#627=EDGE_CURVE('',#230,#621,#626,.T.);
#628=ORIENTED_EDGE('',*,*,#627,.T.);
#629=CARTESIAN_POINT('',(-30.911059666,-21.685397242,7.7958));
#630=DIRECTION('',(-0.,-0.,-1.));
#631=DIRECTION('',(1.,0.,-0.));
#632=AXIS2_PLACEMENT_3D('',#629,#630,#631);
#633=CIRCLE('',#632,1.25);
#634=EDGE_CURVE('',#621,#197,#633,.T.);
#635=ORIENTED_EDGE('',*,*,#634,.T.);
#636=ORIENTED_EDGE('',*,*,#202,.F.);
#637=CARTESIAN_POINT('',(-15.01434631,12.405214563,7.7958));
#638=DIRECTION('',(-0.,-0.,-1.));
#639=DIRECTION('',(1.,0.,-0.));
#640=AXIS2_PLACEMENT_3D('',#637,#638,#639);
#641=CIRCLE('',#640,1.25);
#642=EDGE_CURVE('',#189,#146,#641,.T.);
#643=ORIENTED_EDGE('',*,*,#642,.T.);
#644=ORIENTED_EDGE('',*,*,#152,.F.);
#645=ORIENTED_EDGE('',*,*,#120,.T.);
#646=EDGE_LOOP('',(#601,#608,#609,#616,#617,#618,#619,#628,#635,#636,#643,#644,#645));
#647=FACE_BOUND('',#646,.T.);
#648=ORIENTED_EDGE('',*,*,#359,.T.);
#649=ORIENTED_EDGE('',*,*,#366,.T.);
#650=EDGE_LOOP('',(#648,#649));
#651=FACE_BOUND('',#650,.T.);
#652=ORIENTED_EDGE('',*,*,#308,.T.);
#653=ORIENTED_EDGE('',*,*,#315,.T.);
#654=EDGE_LOOP('',(#652,#653));
#655=FACE_BOUND('',#654,.T.);
#656=ORIENTED_EDGE('',*,*,#494,.T.);
#657=ORIENTED_EDGE('',*,*,#501,.T.);
#658=EDGE_LOOP('',(#656,#657));
#659=FACE_BOUND('',#658,.T.);
#660=ADVANCED_FACE('',(#600,#647,#651,#655,#659),#596,.F.);
#661=CARTESIAN_POINT('',(7.885015906,12.405223412,8.7958));
#662=DIRECTION('',(0.,0.,-1.));
#663=DIRECTION('',(-1.,0.,0.));
#664=AXIS2_PLACEMENT_3D('',#661,#662,#663);
#665=CYLINDRICAL_SURFACE('',#664,1.25);
#666=ORIENTED_EDGE('',*,*,#538,.F.);
#667=ORIENTED_EDGE('',*,*,#48,.F.);
#668=ORIENTED_EDGE('',*,*,#607,.F.);
#669=ORIENTED_EDGE('',*,*,#89,.F.);
#670=EDGE_LOOP('',(#666,#667,#668,#669));
#671=FACE_BOUND('',#670,.T.);
#672=ADVANCED_FACE('',(#671),#665,.T.);
#673=CARTESIAN_POINT('',(-15.01434631,12.405214563,8.7958));
#674=DIRECTION('',(0.,0.,-1.));
#675=DIRECTION('',(-1.,0.,0.));
#676=AXIS2_PLACEMENT_3D('',#673,#674,#675);
#677=CYLINDRICAL_SURFACE('',#676,1.25);
#678=ORIENTED_EDGE('',*,*,#548,.F.);
#679=ORIENTED_EDGE('',*,*,#160,.F.);
#680=ORIENTED_EDGE('',*,*,#642,.F.);
#681=ORIENTED_EDGE('',*,*,#194,.F.);
#682=EDGE_LOOP('',(#678,#679,#680,#681));
#683=FACE_BOUND('',#682,.T.);
#684=ADVANCED_FACE('',(#683),#677,.T.);
#685=CARTESIAN_POINT('',(-30.911059666,-21.685397242,8.7958));
#686=DIRECTION('',(0.,0.,-1.));
#687=DIRECTION('',(-1.,0.,0.));
#688=AXIS2_PLACEMENT_3D('',#685,#686,#687);
#689=CYLINDRICAL_SURFACE('',#688,1.25);
#690=CARTESIAN_POINT('',(-32.161059666,-21.685397242,7.7958));
#691=DIRECTION('',(-0.,-0.,1.));
#692=VECTOR('',#691,1.);
#693=LINE('',#690,#692);
#694=EDGE_CURVE('',#621,#552,#693,.T.);
#695=ORIENTED_EDGE('',*,*,#694,.T.);
#696=ORIENTED_EDGE('',*,*,#558,.F.);
#697=ORIENTED_EDGE('',*,*,#208,.F.);
#698=ORIENTED_EDGE('',*,*,#634,.F.);
#699=EDGE_LOOP('',(#695,#696,#697,#698));
#700=FACE_BOUND('',#699,.T.);
#701=ADVANCED_FACE('',(#700),#689,.T.);
#702=CARTESIAN_POINT('',(23.781739985,-21.685411386,8.7958));
#703=DIRECTION('',(0.,0.,-1.));
#704=DIRECTION('',(-1.,0.,0.));
#705=AXIS2_PLACEMENT_3D('',#702,#703,#704);
#706=CYLINDRICAL_SURFACE('',#705,1.25);
#707=ORIENTED_EDGE('',*,*,#575,.F.);
#708=ORIENTED_EDGE('',*,*,#408,.F.);
#709=ORIENTED_EDGE('',*,*,#615,.F.);
#710=ORIENTED_EDGE('',*,*,#62,.F.);
#711=EDGE_LOOP('',(#707,#708,#709,#710));
#712=FACE_BOUND('',#711,.T.);
#713=ADVANCED_FACE('',(#712),#706,.T.);
#714=CARTESIAN_POINT('',(-30.911059666,-21.685397242,8.7958));
#715=DIRECTION('',(0.,0.,-1.));
#716=DIRECTION('',(-1.,0.,0.));
#717=AXIS2_PLACEMENT_3D('',#714,#715,#716);
#718=CYLINDRICAL_SURFACE('',#717,1.25);
#719=ORIENTED_EDGE('',*,*,#694,.F.);
#720=ORIENTED_EDGE('',*,*,#627,.F.);
#721=ORIENTED_EDGE('',*,*,#235,.F.);
#722=ORIENTED_EDGE('',*,*,#565,.F.);
#723=EDGE_LOOP('',(#719,#720,#721,#722));
#724=FACE_BOUND('',#723,.T.);
#725=ADVANCED_FACE('',(#724),#718,.T.);
#726=CLOSED_SHELL('',(#66,#108,#139,#172,#212,#254,#285,#336,#387,#420,#471,#522,#591,#660,#672,#684,#701,#713,#725));
#727=MANIFOLD_SOLID_BREP('OLED Cover',#726);
#728=COLOUR_RGB('',0.078431375,0.078431375,0.078431375);
#729=FILL_AREA_STYLE_COLOUR('',#728);
#730=FILL_AREA_STYLE('',(#729));
#731=SURFACE_STYLE_FILL_AREA(#730);
#732=SURFACE_SIDE_STYLE('',(#731));
#733=SURFACE_STYLE_USAGE(.BOTH.,#732);
#734=PRESENTATION_STYLE_ASSIGNMENT((#733));
#26=STYLED_ITEM('',(#734),#727);
#16=SHAPE_REPRESENTATION('OLED Cover',(#15),#10);
#17=ADVANCED_BREP_SHAPE_REPRESENTATION('OLED Cover',(#727),#10);
#742=SHAPE_REPRESENTATION_RELATIONSHIP('','',#16,#17);
#743=CARTESIAN_POINT('',(0.,0.,0.));
#744=DIRECTION('',(0.,0.,1.));
#745=DIRECTION('',(1.,0.,0.));
#746=AXIS2_PLACEMENT_3D('',#743,#744,#745);
#748=MAPPED_ITEM('',#747,#746);
#747=REPRESENTATION_MAP(#746,#16);
#749=APPLICATION_CONTEXT('Managed model based 3d engineering');
#750=APPLICATION_PROTOCOL_DEFINITION('international standard','ap242_managed_model_based_3d_engineering',2014,#749);
#751=PRODUCT_CONTEXT('',#749,'mechanical');
#752=PRODUCT_DEFINITION_CONTEXT('part definition',#749,'design');
#24=PRODUCT('OLED Cover','OLED Cover','',(#751));
#753=PRODUCT_RELATED_PRODUCT_CATEGORY('part','',(#24));
#754=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('','',#24,.NOT_KNOWN.);
#25=PRODUCT_DEFINITION('design','',#754,#752);
#23=PRODUCT_DEFINITION_SHAPE('','',#25);
#755=SHAPE_DEFINITION_REPRESENTATION(#23,#16);
#11=DRAUGHTING_MODEL('',(#748),#10);
#756=DESCRIPTIVE_REPRESENTATION_ITEM('KEY','/Users/jscotto/Library/Containers/com.shapr3d.shapr/Data/tmp/8B5C101D-9DC1-45D6-BC09-CCCF0B0BA294.tmp');
#757=PROPERTY_DEFINITION('KEY','',#25);
#758=REPRESENTATION('',(#756),#10);
#759=PROPERTY_DEFINITION_REPRESENTATION(#757,#758);
#760=GENERAL_PROPERTY('','KEY','');
#761=GENERAL_PROPERTY_ASSOCIATION('','',#760,#757);
#1=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#26),#10);
ENDSEC;
END-ISO-10303-21;
File diff suppressed because it is too large Load Diff
Binary file not shown.
+112
View File
@@ -0,0 +1,112 @@
[
[
{
"r": 25
},
"0,0",
"0,1",
"0,2",
"0,3",
"0,4"
],
[
"1,0",
{
"x": -1
},
"1,0",
"1,1",
{
"x": -1
},
"1,1",
"1,2",
{
"x": -1
},
"1,2",
"1,3",
{
"x": -1
},
"1,3",
"1,4",
{
"x": -1
},
"1,4"
],
[
"2,0",
"2,1",
"2,2",
"2,3",
"2,4"
],
[
{
"x": 3
},
"3,3",
"3,4"
],
[
{
"r": -25,
"rx": 10,
"x": -5
},
"0,5",
"0,6",
"0,7",
"0,8",
"0,9"
],
[
{
"x": -5
},
"1,5",
{
"x": -1
},
"1,5",
"1,6",
{
"x": -1
},
"1,6",
"1,7",
{
"x": -1
},
"1,7",
"1,8",
{
"x": -1
},
"1,8",
"1,9",
{
"x": -1
},
"1,9"
],
[
{
"x": -5
},
"2,5",
"2,6",
"2,7",
"2,8",
"2,9"
],
[
{
"x": -5
},
"3,5",
"3,6"
]
]
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
+7
View File
@@ -0,0 +1,7 @@
#pragma once
// OLED
#define OLED_DISPLAY_128X64
#define I2C_DRIVER I2CD1
#define I2C1_SCL_PIN GP3
#define I2C1_SDA_PIN GP2
File diff suppressed because one or more lines are too long
+79
View File
@@ -0,0 +1,79 @@
{
"manufacturer": "ScottoKeebs",
"keyboard_name": "ScottoRang (PCB Edition)",
"maintainer": "joe-scotto",
"diode_direction": "COL2ROW",
"bootloader": "rp2040",
"processor": "RP2040",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"oled": true
},
"matrix_pins": {
"cols": [
"GP28",
"GP27",
"GP26",
"GP15",
"GP14",
"GP8",
"GP7",
"GP6",
"GP5",
"GP4"
],
"rows": ["GP12", "GP11", "GP10", "GP9"]
},
"url": "https://scottokeebs.com",
"usb": {
"device_version": "1.0.0",
"pid": "0x0041",
"vid": "0x534B"
},
"community_layouts": ["split_3x5_2"],
"layouts": {
"LAYOUT_split_3x5_2": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 1], "x": 1, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [0, 4], "x": 4, "y": 0 },
{ "matrix": [0, 5], "x": 5, "y": 0 },
{ "matrix": [0, 6], "x": 6, "y": 0 },
{ "matrix": [0, 7], "x": 7, "y": 0 },
{ "matrix": [0, 8], "x": 8, "y": 0 },
{ "matrix": [0, 9], "x": 9, "y": 0 },
{ "matrix": [1, 0], "x": 0, "y": 1 },
{ "matrix": [1, 1], "x": 1, "y": 1 },
{ "matrix": [1, 2], "x": 2, "y": 1 },
{ "matrix": [1, 3], "x": 3, "y": 1 },
{ "matrix": [1, 4], "x": 4, "y": 1 },
{ "matrix": [1, 5], "x": 5, "y": 1 },
{ "matrix": [1, 6], "x": 6, "y": 1 },
{ "matrix": [1, 7], "x": 7, "y": 1 },
{ "matrix": [1, 8], "x": 8, "y": 1 },
{ "matrix": [1, 9], "x": 9, "y": 1 },
{ "matrix": [2, 0], "x": 0, "y": 2 },
{ "matrix": [2, 1], "x": 1, "y": 2 },
{ "matrix": [2, 2], "x": 2, "y": 2 },
{ "matrix": [2, 3], "x": 3, "y": 2 },
{ "matrix": [2, 4], "x": 4, "y": 2 },
{ "matrix": [2, 5], "x": 5, "y": 2 },
{ "matrix": [2, 6], "x": 6, "y": 2 },
{ "matrix": [2, 7], "x": 7, "y": 2 },
{ "matrix": [2, 8], "x": 8, "y": 2 },
{ "matrix": [2, 9], "x": 9, "y": 2 },
{ "matrix": [3, 3], "x": 3, "y": 3 },
{ "matrix": [3, 4], "x": 4, "y": 3 },
{ "matrix": [3, 5], "x": 5, "y": 3 },
{ "matrix": [3, 6], "x": 6, "y": 3 }
]
}
}
}
@@ -0,0 +1,5 @@
#pragma once
// Define options
#define TAPPING_TERM 135
#define PERMISSIVE_HOLD
@@ -0,0 +1,86 @@
#include "oled.c"
#include QMK_KEYBOARD_H
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ┌───────────┬───┬───┬──────┬─────────────┐ ┌────────────┬────────────┬───┬───────────┬───────────┐
// │ q │ w │ e │ r │ t │ │ y │ u │ i │ o │ p │
// ├───────────┼───┼───┼──────┼─────────────┤ ├────────────┼────────────┼───┼───────────┼───────────┤
// │ a │ s │ d │ f │ g │ │ h │ j │ k │ l │ bspc │
// ├───────────┼───┼───┼──────┼─────────────┤ ├────────────┼────────────┼───┼───────────┼───────────┤
// │ LSFT_T(z) │ x │ c │ v │ b │ │ n │ m │ , │ RGUI_T(.) │ RSFT_T(/) │
// └───────────┴───┴───┼──────┼─────────────┤ ├────────────┼────────────┼───┴───────────┴───────────┘
// │ lalt │ LGUI_T(spc) │ │ LT(2, tab) │ LT(3, ent) │
// └──────┴─────────────┘ └────────────┴────────────┘
[0] = LAYOUT_split_3x5_2(
KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,
KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_BSPC ,
LSFT_T(KC_Z) , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMMA , RGUI_T(KC_DOT) , RSFT_T(KC_SLSH),
KC_LALT , LGUI_T(KC_SPC) , LT(2, KC_TAB) , LT(3, KC_ENT)
),
// ┌───┬───┬───┬──────┬─────┐ ┌─────┬─────┬───┬───┬──────┐
// │ q │ w │ e │ r │ t │ │ y │ u │ i │ o │ p │
// ├───┼───┼───┼──────┼─────┤ ├─────┼─────┼───┼───┼──────┤
// │ a │ s │ d │ f │ g │ │ h │ j │ k │ l │ bspc │
// ├───┼───┼───┼──────┼─────┤ ├─────┼─────┼───┼───┼──────┤
// │ z │ x │ c │ v │ b │ │ n │ m │ , │ . │ / │
// └───┴───┴───┼──────┼─────┤ ├─────┼─────┼───┴───┴──────┘
// │ rctl │ spc │ │ │ │
// └──────┴─────┘ └─────┴─────┘
[1] = LAYOUT_split_3x5_2(
KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,
KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_BSPC,
KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMMA , KC_DOT , KC_SLSH,
KC_RCTL , KC_SPC , KC_TRNS , KC_TRNS
),
// ┌───────────┬───┬───┬─────┬─────┐ ┌─────┬──────┬──────┬──────┬───────────┐
// │ _ │ - │ + │ = │ : │ │ ` │ mrwd │ mply │ mffd │ del │
// ├───────────┼───┼───┼─────┼─────┤ ├─────┼──────┼──────┼──────┼───────────┤
// │ { │ ( │ ) │ } │ | │ │ esc │ left │ up │ down │ rght │
// ├───────────┼───┼───┼─────┼─────┤ ├─────┼──────┼──────┼──────┼───────────┤
// │ LSFT_T([) │ ' │ " │ ] │ ; │ │ ~ │ vold │ mute │ volu │ RSFT_T(\) │
// └───────────┴───┴───┼─────┼─────┤ ├─────┼──────┼──────┴──────┴───────────┘
// │ │ │ │ │ │
// └─────┴─────┘ └─────┴──────┘
[2] = LAYOUT_split_3x5_2(
KC_UNDS , KC_MINS , KC_PLUS , KC_EQL , KC_COLN , KC_GRV , KC_MRWD , KC_MPLY , KC_MFFD , KC_DEL ,
KC_LCBR , KC_LPRN , KC_RPRN , KC_RCBR , KC_PIPE , KC_ESC , KC_LEFT , KC_UP , KC_DOWN , KC_RGHT ,
LSFT_T(KC_LBRC) , KC_QUOTE , KC_DQUO , KC_RBRC , KC_SCLN , KC_TILDE , KC_VOLD , KC_MUTE , KC_VOLU , RSFT_T(KC_BSLS),
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
),
// ┌──────┬─────┬────┬─────┬───────┐ ┌─────┬─────┬───┬──────┬───────────┐
// │ ! │ @ │ # │ $ │ % │ │ ^ │ & │ * │ caps │ bspc │
// ├──────┼─────┼────┼─────┼───────┤ ├─────┼─────┼───┼──────┼───────────┤
// │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │
// ├──────┼─────┼────┼─────┼───────┤ ├─────┼─────┼───┼──────┼───────────┤
// │ lsft │ │ no │ no │ MO(4) │ │ no │ no │ , │ │ RSFT_T(/) │
// └──────┴─────┴────┼─────┼───────┤ ├─────┼─────┼───┴──────┴───────────┘
// │ │ │ │ │ │
// └─────┴───────┘ └─────┴─────┘
[3] = LAYOUT_split_3x5_2(
KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_CAPS , KC_BSPC ,
KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,
KC_LSFT , KC_TRNS , KC_NO , KC_NO , MO(4) , KC_NO , KC_NO , KC_COMMA , KC_TRNS , RSFT_T(KC_SLSH),
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
),
// ┌─────┬─────┬────┬─────────┬─────┐ ┌─────┬─────┬────┬───────┬─────┐
// │ no │ no │ no │ no │ no │ │ no │ no │ no │ TG(1) │ no │
// ├─────┼─────┼────┼─────────┼─────┤ ├─────┼─────┼────┼───────┼─────┤
// │ f1 │ f2 │ f3 │ f4 │ f5 │ │ f6 │ f7 │ f8 │ f9 │ f10 │
// ├─────┼─────┼────┼─────────┼─────┤ ├─────┼─────┼────┼───────┼─────┤
// │ f11 │ │ no │ QK_BOOT │ no │ │ no │ no │ no │ │ f12 │
// └─────┴─────┴────┼─────────┼─────┤ ├─────┼─────┼────┴───────┴─────┘
// │ │ │ │ │ │
// └─────────┴─────┘ └─────┴─────┘
[4] = LAYOUT_split_3x5_2(
KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , TG(1) , KC_NO ,
KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10,
KC_F11 , KC_TRNS , KC_NO , QK_BOOT , KC_NO , KC_NO , KC_NO , KC_NO , KC_TRNS , KC_F12,
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
)
};
// clang-format on
@@ -0,0 +1,32 @@
#include "keys.h"
#include QMK_KEYBOARD_H
// Define combos
const uint16_t PROGMEM tab_combo[] = {KC_Q, KC_W, COMBO_END};
const uint16_t PROGMEM tab_code_combo[] = {KC_UNDS, KC_MINS, COMBO_END};
const uint16_t PROGMEM tab_number_combo[] = {KC_EXLM, KC_AT, COMBO_END};
const uint16_t PROGMEM enter_combo[] = {KC_Y, KC_BSPC, COMBO_END};
const uint16_t PROGMEM enter_code_combo[] = {KC_MFFD, KC_DEL, COMBO_END};
const uint16_t PROGMEM enter_number_combo[] = {KC_CAPS, KC_BSPC, COMBO_END};
const uint16_t PROGMEM number_combo[] = {KC_W, KC_Y, COMBO_END};
const uint16_t PROGMEM number_code_combo[] = {KC_EXLM, KC_BSPC, COMBO_END};
const uint16_t PROGMEM number_default_combo[] = {KC_AT, KC_CAPS, COMBO_END};
const uint16_t PROGMEM code_combo[] = {KC_Q, KC_BSPC, COMBO_END};
const uint16_t PROGMEM code_number_combo[] = {KC_MINS, KC_MFFD, COMBO_END};
const uint16_t PROGMEM code_default_combo[] = {KC_UNDS, KC_DEL, COMBO_END};
// Create combos
combo_t key_combos[] = {
COMBO(tab_combo, KC_TAB),
COMBO(tab_code_combo, KC_TAB),
COMBO(tab_number_combo, KC_TAB),
COMBO(enter_combo, KC_ENT),
COMBO(enter_code_combo, KC_ENT),
COMBO(enter_number_combo, KC_ENT),
COMBO(number_combo, TO_NUMBER),
COMBO(number_code_combo, TO_CODE),
COMBO(number_default_combo, TO_DEFAULT),
COMBO(code_combo, TO_CODE),
COMBO(code_number_combo, TO_NUMBER),
COMBO(code_default_combo, TO_DEFAULT),
};
@@ -0,0 +1,6 @@
#pragma once
// Define options
#define TAPPING_TERM 135
#define PERMISSIVE_HOLD
#define TAPPING_TERM_PER_KEY
+105
View File
@@ -0,0 +1,105 @@
#include "combos.c"
#include "keys.c"
#include "keys.h"
#include "tapdance.c"
#include "oled.c"
#include QMK_KEYBOARD_H
// Custom tapping term for multi function keys
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case TD(TD_MULTI):
case TD(TD_MODS_X):
case TD(TD_MODS_QUOT):
case LGUI_T(KC_SPC):
case LT(1, KC_TAB):
case LT(2, KC_ENT):
return 200;
default:
return TAPPING_TERM;
}
};
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ┌───────────┬───────────────┬───┬──────────────┬─────────────┐ ┌────────────┬────────────┬───┬───────────┬───────────┐
// │ q │ w │ f │ p │ g │ │ j │ l │ u │ y │ bspc │
// ├───────────┼───────────────┼───┼──────────────┼─────────────┤ ├────────────┼────────────┼───┼───────────┼───────────┤
// │ a │ r │ s │ t │ d │ │ h │ n │ e │ i │ o │
// ├───────────┼───────────────┼───┼──────────────┼─────────────┤ ├────────────┼────────────┼───┼───────────┼───────────┤
// │ LSFT_T(z) │ TD(TD_MODS_X) │ c │ v │ b │ │ k │ m │ , │ RGUI_T(.) │ RSFT_T(/) │
// └───────────┴───────────────┴───┼──────────────┼─────────────┤ ├────────────┼────────────┼───┴───────────┴───────────┘
// │ TD(TD_MULTI) │ LGUI_T(spc) │ │ LT(2, tab) │ LT(3, ent) │
// └──────────────┴─────────────┘ └────────────┴────────────┘
[0] = LAYOUT_split_3x5_2(
KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_BSPC ,
KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O ,
LSFT_T(KC_Z) , TD(TD_MODS_X) , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMMA , RGUI_T(KC_DOT) , RSFT_T(KC_SLSH),
TD(TD_MULTI) , LGUI_T(KC_SPC) , LT(2, KC_TAB) , LT(3, KC_ENT)
),
// ┌───┬───┬───┬──────┬─────┐ ┌─────┬─────┬───┬───┬──────┐
// │ q │ w │ f │ p │ g │ │ j │ l │ u │ y │ bspc │
// ├───┼───┼───┼──────┼─────┤ ├─────┼─────┼───┼───┼──────┤
// │ a │ r │ s │ t │ d │ │ h │ n │ e │ i │ o │
// ├───┼───┼───┼──────┼─────┤ ├─────┼─────┼───┼───┼──────┤
// │ z │ x │ c │ v │ b │ │ k │ m │ , │ . │ / │
// └───┴───┴───┼──────┼─────┤ ├─────┼─────┼───┴───┴──────┘
// │ rctl │ spc │ │ │ │
// └──────┴─────┘ └─────┴─────┘
[1] = LAYOUT_split_3x5_2(
KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_BSPC,
KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O ,
KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMMA , KC_DOT , KC_SLSH,
KC_RCTL , KC_SPC , KC_TRNS , KC_TRNS
),
// ┌───────────┬──────────────────┬───┬─────┬─────┐ ┌─────┬──────┬──────┬──────────────┬───────────┐
// │ _ │ - │ + │ = │ : │ │ ` │ mrwd │ mply │ mffd │ del │
// ├───────────┼──────────────────┼───┼─────┼─────┤ ├─────┼──────┼──────┼──────────────┼───────────┤
// │ { │ ( │ ) │ } │ | │ │ esc │ left │ up │ down │ rght │
// ├───────────┼──────────────────┼───┼─────┼─────┤ ├─────┼──────┼──────┼──────────────┼───────────┤
// │ LSFT_T([) │ TD(TD_MODS_QUOT) │ " │ ] │ ; │ │ ~ │ vold │ mute │ RGUI_T(volu) │ RSFT_T(\) │
// └───────────┴──────────────────┴───┼─────┼─────┤ ├─────┼──────┼──────┴──────────────┴───────────┘
// │ │ │ │ │ │
// └─────┴─────┘ └─────┴──────┘
[2] = LAYOUT_split_3x5_2(
KC_UNDS , KC_MINS , KC_PLUS , KC_EQL , KC_COLN , KC_GRV , KC_MRWD , KC_MPLY , KC_MFFD , KC_DEL ,
KC_LCBR , KC_LPRN , KC_RPRN , KC_RCBR , KC_PIPE , KC_ESC , KC_LEFT , KC_UP , KC_DOWN , KC_RGHT ,
LSFT_T(KC_LBRC) , TD(TD_MODS_QUOT) , KC_DQUO , KC_RBRC , KC_SCLN , KC_TILDE , KC_VOLD , KC_MUTE , RGUI_T(KC_VOLU) , RSFT_T(KC_BSLS),
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
),
// ┌──────┬─────┬────┬─────┬───────┐ ┌─────┬─────┬───┬──────┬───────────┐
// │ ! │ @ │ # │ $ │ % │ │ ^ │ & │ * │ caps │ bspc │
// ├──────┼─────┼────┼─────┼───────┤ ├─────┼─────┼───┼──────┼───────────┤
// │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │
// ├──────┼─────┼────┼─────┼───────┤ ├─────┼─────┼───┼──────┼───────────┤
// │ lsft │ │ no │ no │ MO(4) │ │ no │ no │ , │ │ RSFT_T(/) │
// └──────┴─────┴────┼─────┼───────┤ ├─────┼─────┼───┴──────┴───────────┘
// │ │ │ │ │ │
// └─────┴───────┘ └─────┴─────┘
[3] = LAYOUT_split_3x5_2(
KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_CAPS , KC_BSPC ,
KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,
KC_LSFT , KC_TRNS , KC_NO , KC_NO , MO(4) , KC_NO , KC_NO , KC_COMMA , KC_TRNS , RSFT_T(KC_SLSH),
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
),
// ┌─────────────┬────────────┬────┬───────────┬─────┐ ┌─────┬─────┬────┬─────────────┬───────────┐
// │ LAYOUT_SWAP │ MODE_CHECK │ no │ no │ no │ │ no │ no │ no │ GAME_TOGGLE │ OS_TOGGLE │
// ├─────────────┼────────────┼────┼───────────┼─────┤ ├─────┼─────┼────┼─────────────┼───────────┤
// │ f1 │ f2 │ f3 │ f4 │ f5 │ │ f6 │ f7 │ f8 │ f9 │ f10 │
// ├─────────────┼────────────┼────┼───────────┼─────┤ ├─────┼─────┼────┼─────────────┼───────────┤
// │ f11 │ │ no │ HARD_BOOT │ no │ │ no │ no │ no │ │ f12 │
// └─────────────┴────────────┴────┼───────────┼─────┤ ├─────┼─────┼────┴─────────────┴───────────┘
// │ │ │ │ │ │
// └───────────┴─────┘ └─────┴─────┘
[4] = LAYOUT_split_3x5_2(
LAYOUT_SWAP , MODE_CHECK , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , GAME_TOGGLE , OS_TOGGLE,
KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 ,
KC_F11 , KC_TRNS , KC_NO , HARD_BOOT , KC_NO , KC_NO , KC_NO , KC_NO , KC_TRNS , KC_F12 ,
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
)
};
// clang-format on
+137
View File
@@ -0,0 +1,137 @@
#include "keys.h"
#include QMK_KEYBOARD_H
// Mode check
char mode_string[32];
char *os;
char *mode;
char *layout;
void eeconfig_init_user(void) {
user_config.raw = 0;
eeconfig_update_user(user_config.raw);
}
void keyboard_post_init_user(void) {
user_config.raw = eeconfig_read_user();
keymap_config.swap_lctl_lgui = user_config.is_windows;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
uint16_t remapped_keycode = KC_NO;
if (user_config.is_qwerty) {
switch (keycode) {
// Top row
case KC_F:
remapped_keycode = KC_E;
break;
case KC_P:
remapped_keycode = KC_R;
break;
case KC_G:
remapped_keycode = KC_T;
break;
case KC_J:
remapped_keycode = KC_Y;
break;
case KC_L:
remapped_keycode = KC_U;
break;
case KC_U:
remapped_keycode = KC_I;
break;
case KC_Y:
remapped_keycode = KC_O;
break;
case KC_BSPC:
remapped_keycode = KC_P;
break;
case KC_R:
remapped_keycode = KC_S;
break;
case KC_S:
remapped_keycode = KC_D;
break;
case KC_T:
remapped_keycode = KC_F;
break;
case KC_D:
remapped_keycode = KC_G;
break;
case KC_N:
remapped_keycode = KC_J;
break;
case KC_E:
remapped_keycode = KC_K;
break;
case KC_I:
remapped_keycode = KC_L;
break;
case KC_O:
remapped_keycode = KC_BSPC;
break;
case KC_K:
remapped_keycode = KC_N;
break;
}
}
if (user_config.is_game_mode) {
layer_on(1);
}
if (remapped_keycode != KC_NO) {
record->event.pressed ? register_code(remapped_keycode) : unregister_code(remapped_keycode);
return false;
}
if (keycode == MODE_CHECK) {
os = user_config.is_windows ? "Windows" : "Mac";
mode = user_config.is_game_mode ? " (Game)" : "";
layout = user_config.is_qwerty ? " (QWERTY)" : " (Colemak)";
sprintf(mode_string, "Mode: %s%s%s", os, mode, layout);
if (record->event.pressed) {
send_string(mode_string);
} else {
for (size_t i = 0; i < strlen(mode_string); i++)
tap_code16(KC_BSPC);
}
return false;
}
if (!record->event.pressed) {
switch (keycode) {
case TO_DEFAULT:
layer_move(0);
return false;
case TO_CODE:
layer_move(2);
return false;
case TO_NUMBER:
layer_move(3);
return false;
case OS_TOGGLE:
user_config.is_windows = !user_config.is_windows;
keymap_config.swap_lctl_lgui = user_config.is_windows ? true : false;
eeconfig_update_user(user_config.raw);
return false;
case GAME_TOGGLE:
user_config.is_game_mode = !user_config.is_game_mode;
user_config.is_game_mode ? layer_on(1) : layer_off(1);
eeconfig_update_user(user_config.raw);
return false;
case LAYOUT_SWAP:
user_config.is_qwerty = !user_config.is_qwerty;
eeconfig_update_user(user_config.raw);
return false;
case HARD_BOOT:
eeconfig_init_user();
reset_keyboard();
return false;
}
}
return true;
}
+29
View File
@@ -0,0 +1,29 @@
#pragma once
#include QMK_KEYBOARD_H
typedef union {
uint32_t raw;
struct {
bool is_windows;
bool is_game_mode;
bool is_qwerty;
};
} user_config_t;
user_config_t user_config;
enum custom_keycodes {
OS_TOGGLE = SAFE_RANGE,
GAME_TOGGLE,
MODE_CHECK,
LAYOUT_SWAP,
HARD_BOOT,
TO_CODE,
TO_NUMBER,
TO_DEFAULT
};
enum tap_dance_keycodes {
TD_MODS_X,
TD_MODS_QUOT,
TD_MULTI,
};
@@ -0,0 +1,2 @@
TAP_DANCE_ENABLE = yes
COMBO_ENABLE = yes
@@ -0,0 +1,126 @@
#include "keys.h"
#include QMK_KEYBOARD_H
typedef enum {
TD_NONE,
TD_UNKNOWN,
TD_SINGLE_HOLD,
TD_DOUBLE_HOLD,
TD_TRIPLE_HOLD,
TD_QUAD_HOLD,
TD_SINGLE_TAP,
TD_DOUBLE_TAP,
TD_TRIPLE_TAP,
TD_QUAD_TAP
} td_state_t;
static td_state_t td_state = TD_NONE;
td_state_t cur_dance(tap_dance_state_t *state) {
switch (state->count) {
case 1:
if (state->interrupted || !state->pressed) {
return TD_SINGLE_TAP;
} else {
return TD_SINGLE_HOLD;
}
break;
case 2:
if (state->interrupted || !state->pressed) {
return TD_DOUBLE_TAP;
} else {
return TD_DOUBLE_HOLD;
}
break;
case 3:
if (state->interrupted || !state->pressed) {
return TD_TRIPLE_TAP;
} else {
return TD_TRIPLE_HOLD;
}
break;
case 4:
if (state->interrupted || !state->pressed) {
return TD_QUAD_TAP;
} else {
return TD_QUAD_HOLD;
}
break;
default:
return TD_UNKNOWN;
}
}
void td_hold(bool press, uint8_t keycode, uint8_t mac_esc, uint8_t win_esc, uint8_t mac, uint8_t win) {
uint8_t code = user_config.is_windows ? win : mac;
// If not modifier key
if (keycode == KC_ESC) {
code = user_config.is_windows ? win_esc : mac_esc;
}
press ? register_code(code) : unregister_code(code);
}
void modfin(tap_dance_state_t *state, uint8_t keycode) {
td_state = cur_dance(state);
switch (td_state) {
case TD_SINGLE_TAP:
tap_code(keycode);
break;
case TD_SINGLE_HOLD:
td_hold(true, keycode, KC_RALT, KC_LCTL, KC_RGUI, KC_RCTL);
break;
case TD_DOUBLE_HOLD:
td_hold(true, keycode, KC_RCTL, KC_RALT, KC_RALT, KC_RALT);
break;
case TD_TRIPLE_HOLD:
td_hold(true, keycode, KC_RGUI, KC_RGUI, KC_RCTL, KC_RCTL);
break;
case TD_DOUBLE_TAP:
user_config.is_windows ? tap_code(KC_RGUI) : tap_code16(RCMD(KC_SPC));
break;
case TD_TRIPLE_TAP:
user_config.is_windows ? tap_code16(RGUI(KC_DOT)) : tap_code16(RCTL(RCMD(KC_SPC)));
break;
default:
break;
}
}
void modres(tap_dance_state_t *state, uint8_t keycode) {
switch (td_state) {
case TD_SINGLE_HOLD:
td_hold(false, keycode, KC_RALT, KC_LCTL, KC_RGUI, KC_RCTL);
break;
case TD_DOUBLE_HOLD:
td_hold(false, keycode, KC_RCTL, KC_RALT, KC_RALT, KC_RALT);
break;
case TD_TRIPLE_HOLD:
td_hold(false, keycode, KC_RGUI, KC_RGUI, KC_RCTL, KC_RCTL);
break;
default:
break;
}
td_state = TD_NONE;
}
// Macro for functions
#define TD_MODS(name, keycode) \
void td_mods_##name##_finished(tap_dance_state_t *state, void *user_data) { modfin(state, keycode); } \
void td_mods_##name##_reset(tap_dance_state_t *state, void *user_data) { modres(state, keycode); }
TD_MODS(x, KC_X)
TD_MODS(quot, KC_QUOT)
TD_MODS(lalt, KC_ESC)
// Tap Dance definitions
tap_dance_action_t tap_dance_actions[] = {
[TD_MULTI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_mods_lalt_finished, td_mods_lalt_reset),
[TD_MODS_X] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_mods_x_finished, td_mods_x_reset),
[TD_MODS_QUOT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_mods_quot_finished, td_mods_quot_reset),
};
+11
View File
@@ -0,0 +1,11 @@
#pragma once
// Define options
#define TAPPING_TERM 135
#define PERMISSIVE_HOLD
// Vial
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
#define VIAL_KEYBOARD_UID {0x8A, 0xBC, 0x8B, 0xB5, 0x39, 0x81, 0x53, 0x1E}
#define VIAL_UNLOCK_COMBO_ROWS {3, 3}
#define VIAL_UNLOCK_COMBO_COLS {3, 6}
+86
View File
@@ -0,0 +1,86 @@
#include "oled.c"
#include QMK_KEYBOARD_H
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ┌───────────┬───┬───┬──────┬─────────────┐ ┌────────────┬────────────┬───┬───────────┬───────────┐
// │ q │ w │ f │ p │ g │ │ j │ l │ u │ y │ bspc │
// ├───────────┼───┼───┼──────┼─────────────┤ ├────────────┼────────────┼───┼───────────┼───────────┤
// │ a │ r │ s │ t │ d │ │ h │ n │ e │ i │ o │
// ├───────────┼───┼───┼──────┼─────────────┤ ├────────────┼────────────┼───┼───────────┼───────────┤
// │ LSFT_T(z) │ x │ c │ v │ b │ │ k │ m │ , │ RGUI_T(.) │ RSFT_T(/) │
// └───────────┴───┴───┼──────┼─────────────┤ ├────────────┼────────────┼───┴───────────┴───────────┘
// │ lalt │ LGUI_T(spc) │ │ LT(2, tab) │ LT(3, ent) │
// └──────┴─────────────┘ └────────────┴────────────┘
[0] = LAYOUT_split_3x5_2(
KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_BSPC ,
KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O ,
LSFT_T(KC_Z) , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMMA , RGUI_T(KC_DOT) , RSFT_T(KC_SLSH),
KC_LALT , LGUI_T(KC_SPC) , LT(2, KC_TAB) , LT(3, KC_ENT)
),
// ┌───┬───┬───┬──────┬─────┐ ┌─────┬─────┬───┬───┬──────┐
// │ q │ w │ f │ p │ g │ │ j │ l │ u │ y │ bspc │
// ├───┼───┼───┼──────┼─────┤ ├─────┼─────┼───┼───┼──────┤
// │ a │ r │ s │ t │ d │ │ h │ n │ e │ i │ o │
// ├───┼───┼───┼──────┼─────┤ ├─────┼─────┼───┼───┼──────┤
// │ z │ x │ c │ v │ b │ │ k │ m │ , │ . │ / │
// └───┴───┴───┼──────┼─────┤ ├─────┼─────┼───┴───┴──────┘
// │ rctl │ spc │ │ │ │
// └──────┴─────┘ └─────┴─────┘
[1] = LAYOUT_split_3x5_2(
KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_BSPC,
KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O ,
KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMMA , KC_DOT , KC_SLSH,
KC_RCTL , KC_SPC , KC_TRNS , KC_TRNS
),
// ┌───────────┬───┬───┬─────┬─────┐ ┌─────┬──────┬──────┬──────┬───────────┐
// │ _ │ - │ + │ = │ : │ │ ` │ mrwd │ mply │ mffd │ del │
// ├───────────┼───┼───┼─────┼─────┤ ├─────┼──────┼──────┼──────┼───────────┤
// │ { │ ( │ ) │ } │ | │ │ esc │ left │ up │ down │ rght │
// ├───────────┼───┼───┼─────┼─────┤ ├─────┼──────┼──────┼──────┼───────────┤
// │ LSFT_T([) │ ' │ " │ ] │ ; │ │ ~ │ vold │ mute │ volu │ RSFT_T(\) │
// └───────────┴───┴───┼─────┼─────┤ ├─────┼──────┼──────┴──────┴───────────┘
// │ │ │ │ │ │
// └─────┴─────┘ └─────┴──────┘
[2] = LAYOUT_split_3x5_2(
KC_UNDS , KC_MINS , KC_PLUS , KC_EQL , KC_COLN , KC_GRV , KC_MRWD , KC_MPLY , KC_MFFD , KC_DEL ,
KC_LCBR , KC_LPRN , KC_RPRN , KC_RCBR , KC_PIPE , KC_ESC , KC_LEFT , KC_UP , KC_DOWN , KC_RGHT ,
LSFT_T(KC_LBRC) , KC_QUOTE , KC_DQUO , KC_RBRC , KC_SCLN , KC_TILDE , KC_VOLD , KC_MUTE , KC_VOLU , RSFT_T(KC_BSLS),
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
),
// ┌──────┬─────┬────┬─────┬───────┐ ┌─────┬─────┬───┬──────┬───────────┐
// │ ! │ @ │ # │ $ │ % │ │ ^ │ & │ * │ caps │ bspc │
// ├──────┼─────┼────┼─────┼───────┤ ├─────┼─────┼───┼──────┼───────────┤
// │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │
// ├──────┼─────┼────┼─────┼───────┤ ├─────┼─────┼───┼──────┼───────────┤
// │ lsft │ │ no │ no │ MO(4) │ │ no │ no │ , │ │ RSFT_T(/) │
// └──────┴─────┴────┼─────┼───────┤ ├─────┼─────┼───┴──────┴───────────┘
// │ │ │ │ │ │
// └─────┴───────┘ └─────┴─────┘
[3] = LAYOUT_split_3x5_2(
KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_CAPS , KC_BSPC ,
KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,
KC_LSFT , KC_TRNS , KC_NO , KC_NO , MO(4) , KC_NO , KC_NO , KC_COMMA , KC_TRNS , RSFT_T(KC_SLSH),
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
),
// ┌─────┬─────┬────┬─────────┬─────┐ ┌─────┬─────┬────┬───────┬─────┐
// │ no │ no │ no │ no │ no │ │ no │ no │ no │ TG(1) │ no │
// ├─────┼─────┼────┼─────────┼─────┤ ├─────┼─────┼────┼───────┼─────┤
// │ f1 │ f2 │ f3 │ f4 │ f5 │ │ f6 │ f7 │ f8 │ f9 │ f10 │
// ├─────┼─────┼────┼─────────┼─────┤ ├─────┼─────┼────┼───────┼─────┤
// │ f11 │ │ no │ QK_BOOT │ no │ │ no │ no │ no │ │ f12 │
// └─────┴─────┴────┼─────────┼─────┤ ├─────┼─────┼────┴───────┴─────┘
// │ │ │ │ │ │
// └─────────┴─────┘ └─────┴─────┘
[4] = LAYOUT_split_3x5_2(
KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , TG(1) , KC_NO ,
KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10,
KC_F11 , KC_TRNS , KC_NO , QK_BOOT , KC_NO , KC_NO , KC_NO , KC_NO , KC_TRNS , KC_F12,
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
)
};
// clang-format on
+2
View File
@@ -0,0 +1,2 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
+114
View File
@@ -0,0 +1,114 @@
{
"matrix": {
"rows": 4,
"cols": 10
},
"layouts": {
"keymap": [
[
{
"r": 25
},
"0,0",
"0,1",
"0,2",
"0,3",
"0,4"
],
[
"1,0",
{
"x": -1
},
"1,0",
"1,1",
{
"x": -1
},
"1,1",
"1,2",
{
"x": -1
},
"1,2",
"1,3",
{
"x": -1
},
"1,3",
"1,4",
{
"x": -1
},
"1,4"
],
["2,0", "2,1", "2,2", "2,3", "2,4"],
[
{
"x": 3
},
"3,3",
"3,4"
],
[
{
"r": -25,
"rx": 10,
"x": -5
},
"0,5",
"0,6",
"0,7",
"0,8",
"0,9"
],
[
{
"x": -5
},
"1,5",
{
"x": -1
},
"1,5",
"1,6",
{
"x": -1
},
"1,6",
"1,7",
{
"x": -1
},
"1,7",
"1,8",
{
"x": -1
},
"1,8",
"1,9",
{
"x": -1
},
"1,9"
],
[
{
"x": -5
},
"2,5",
"2,6",
"2,7",
"2,8",
"2,9"
],
[
{
"x": -5
},
"3,5",
"3,6"
]
]
}
}
+359
View File
@@ -0,0 +1,359 @@
#include "quantum.h"
#include "frames.c"
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
static const char layers[][1024] PROGMEM = {
// ScottoRang
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xfc, 0xdc, 0x9c, 0x9c, 0x9c, 0xbc, 0x38, 0x38, 0x00, 0x00, 0xf0, 0xf8, 0xfc,
0x3c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3c, 0x78, 0x78, 0x20, 0x00, 0x00, 0xe0, 0xf8, 0xf8, 0x7c, 0x1c, 0x1c, 0x1c, 0x1c,
0x3c, 0xfc, 0xf8, 0xf0, 0x8c, 0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0xfc, 0x1c, 0x1c, 0x1c, 0x0c, 0x00, 0x0c, 0x1c, 0x1c,
0x1c, 0xfc, 0xfc, 0xfc, 0x1c, 0x1c, 0x1c, 0x0c, 0xe0, 0xf8, 0xf8, 0x7c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3c, 0xfc, 0xf8,
0xf0, 0x80, 0x00, 0xfc, 0xfc, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x80, 0xe0,
0xf8, 0xfc, 0x3c, 0xfc, 0xfc, 0xf0, 0x80, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xf8, 0xf0, 0xc0, 0x80, 0x00, 0xfc,
0xfc, 0xfc, 0x00, 0x00, 0xf0, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3c, 0x7c, 0x78, 0x20, 0x00, 0x00, 0x38,
0x7d, 0x79, 0x73, 0x73, 0x73, 0x73, 0x7f, 0x7f, 0x3f, 0x0c, 0x00, 0x0f, 0x3f, 0x7f, 0x78, 0x70, 0x70, 0x70, 0x70,
0x78, 0x3c, 0x3c, 0x08, 0x00, 0x00, 0x0f, 0x3f, 0x3f, 0x7c, 0x70, 0x70, 0x70, 0x70, 0x78, 0x7f, 0x3f, 0x1f, 0x03,
0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00,
0x00, 0x00, 0x00, 0x0f, 0x3f, 0x3f, 0x7c, 0x70, 0x70, 0x70, 0x70, 0x78, 0x7f, 0x3f, 0x1f, 0x03, 0x00, 0x7f, 0x7f,
0x7f, 0x07, 0x07, 0x07, 0x1f, 0x7f, 0x7f, 0x79, 0x20, 0x00, 0x00, 0x7c, 0x7f, 0x7f, 0x1f, 0x0f, 0x0c, 0x0c, 0x0f,
0x3f, 0x7f, 0x7e, 0x70, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x01, 0x07, 0x0f, 0x1f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x0f,
0x3f, 0x3f, 0x7c, 0x70, 0x70, 0x73, 0x73, 0x7f, 0x3f, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
// Game
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3c, 0x7c, 0x78, 0x20, 0x00, 0x00, 0x80,
0xe0, 0xf8, 0xfc, 0x3c, 0xfc, 0xfc, 0xf0, 0x80, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xf8, 0xc0, 0x00, 0x00,
0x80, 0xf0, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x0c, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f,
0x3f, 0x3f, 0x7c, 0x70, 0x70, 0x73, 0x73, 0x7f, 0x3f, 0x3f, 0x0f, 0x00, 0x7c, 0x7f, 0x7f, 0x1f, 0x0f, 0x0c, 0x0c,
0x0f, 0x3f, 0x7f, 0x7e, 0x70, 0x00, 0x7f, 0x7f, 0x7f, 0x01, 0x07, 0x3f, 0x7f, 0x7e, 0x3f, 0x0f, 0x01, 0x7f, 0x7f,
0x7f, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x73, 0x73, 0x73, 0x73, 0x73, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
// Code
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3c, 0x78, 0x78, 0x20, 0x00, 0x00, 0xe0,
0xf8, 0xf8, 0x7c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3c, 0xfc, 0xf8, 0xf0, 0x80, 0x00, 0xfc, 0xfc, 0xfc, 0x1c, 0x1c, 0x1c,
0x1c, 0x3c, 0xf8, 0xf8, 0xf0, 0x80, 0x00, 0xfc, 0xfc, 0xfc, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x0c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f,
0x3f, 0x7f, 0x78, 0x70, 0x70, 0x70, 0x70, 0x78, 0x3c, 0x3c, 0x08, 0x00, 0x00, 0x0f, 0x3f, 0x3f, 0x7c, 0x70, 0x70,
0x70, 0x70, 0x78, 0x7f, 0x3f, 0x1f, 0x03, 0x00, 0x7f, 0x7f, 0x7f, 0x70, 0x70, 0x70, 0x70, 0x78, 0x3f, 0x3f, 0x1f,
0x03, 0x00, 0x7f, 0x7f, 0x7f, 0x73, 0x73, 0x73, 0x73, 0x73, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
// Number
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xf8, 0xf0, 0xc0, 0x80, 0x00, 0xfc,
0xfc, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0xfc,
0xfc, 0xfc, 0xfc, 0xf8, 0xc0, 0x00, 0x00, 0x80, 0xf0, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x9c,
0x8c, 0x9c, 0xdc, 0xfc, 0xfc, 0x78, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x0c, 0x00, 0x00,
0xfc, 0xfc, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x01, 0x07, 0x0f, 0x1f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00,
0x1f, 0x3f, 0x7f, 0x78, 0x70, 0x70, 0x70, 0x78, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x01, 0x07, 0x3f,
0x7f, 0x7e, 0x3f, 0x0f, 0x01, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x73, 0x61, 0x71, 0x73, 0x7f, 0x7f,
0x3e, 0x1c, 0x00, 0x7f, 0x7f, 0x7f, 0x73, 0x73, 0x73, 0x73, 0x73, 0x61, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x07, 0x07,
0x07, 0x1f, 0x7f, 0x7f, 0x79, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
// Function
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x9c, 0x9c, 0x9c, 0x9c, 0x1c, 0x0c, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xf8, 0xf0, 0xc0, 0x80, 0x00, 0xfc, 0xfc, 0xfc, 0x00,
0x00, 0xf0, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3c, 0x78, 0x78, 0x20, 0x0c, 0x1c, 0x1c, 0x1c, 0xfc, 0xfc,
0xfc, 0x1c, 0x1c, 0x1c, 0x0c, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0xe0, 0xf8, 0xf8, 0x7c, 0x1c, 0x1c, 0x1c,
0x1c, 0x3c, 0xfc, 0xf8, 0xf0, 0x80, 0x00, 0xfc, 0xfc, 0xfc, 0xf8, 0xf0, 0xc0, 0x80, 0x00, 0xfc, 0xfc, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f,
0x07, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x1f, 0x3f, 0x7f, 0x78, 0x70, 0x70, 0x70, 0x78, 0x7f, 0x3f, 0x1f,
0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x01, 0x07, 0x0f, 0x1f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x0f, 0x3f, 0x7f, 0x78,
0x70, 0x70, 0x70, 0x70, 0x78, 0x3c, 0x3c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x0f, 0x3f, 0x3f, 0x7c, 0x70, 0x70, 0x70, 0x70, 0x78, 0x7f, 0x3f, 0x1f,
0x03, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x01, 0x07, 0x0f, 0x1f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
#define NUM_FRAMES 434
#define FRAME_WIDTH 128
#define FRAME_HEIGHT 64
#define FRAME_SIZE (FRAME_WIDTH * FRAME_HEIGHT / 8)
#define FRAME_DELAY 33 // ms per frame, ~30 fps
static uint16_t frame_index = 0;
static uint32_t last_update = 0;
static uint32_t last_activity = 0;
static bool oled_is_off = false;
// Copy of last matrix state for detecting keypress
static matrix_row_t last_matrix[MATRIX_ROWS];
bool oled_task_user(void) {
uint32_t now = timer_read32();
// Detect keypress by comparing current vs last matrix
bool key_pressed = false;
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
matrix_row_t current = matrix_get_row(row);
if ((current & ~last_matrix[row]) != 0) {
key_pressed = true;
}
last_matrix[row] = current;
}
if (key_pressed) {
last_activity = now; // reset idle timer
if (oled_is_off) {
oled_on();
oled_is_off = false;
}
}
// Turn off OLED if idle
if (timer_elapsed32(last_activity) > OLED_TIMEOUT) {
oled_off();
oled_is_off = true;
return false; // skip drawing frames
}
switch (get_highest_layer(layer_state)) {
case 0:
// Animate frames
if (timer_elapsed32(last_update) >= FRAME_DELAY) {
last_update = now;
oled_write_raw_P((const char *)frames[frame_index], FRAME_SIZE);
frame_index++;
if (frame_index >= NUM_FRAMES)
frame_index = 0;
}
break;
case 1:
oled_write_raw_P(layers[1], sizeof(layers[1]));
break;
case 2:
oled_write_raw_P(layers[2], sizeof(layers[2]));
break;
case 3:
oled_write_raw_P(layers[3], sizeof(layers[3]));
break;
case 4:
oled_write_raw_P(layers[4], sizeof(layers[4]));
break;
}
return false;
}
#endif
+27
View File
@@ -0,0 +1,27 @@
# Scotto40
![Scotto40](https://i.imgur.com/wtW5xOth.jpeg)
A 40-key ortholinear keyboard. Case files available [here](https://github.com/joe-scotto/scottokeebs).
* Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto)
* Hardware Supported: ATmega32U4
* Hardware Availability: [Amazon](https://amazon.com)
Make example for this keyboard (after setting up your build environment):
make handwired/scottokeebs/scotto40:default
Flashing example for this keyboard:
make handwired/scottokeebs/scotto40:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
+1
View File
@@ -0,0 +1 @@
# This file intentionally left blank
+6 -8
View File
@@ -1,9 +1,7 @@
# Coming soon...
# ScottoRang (SK41)
<!-- # ScottoRang (SK40) -->
<!---->
<!-- The ScottoRang is a 34-key split monoblock ergonomic 16x16mm Choc spaced keyboard with a central 128x64 OLED display. -->
<!---->
<!-- You can read more about the components and how to build it [here](https://scottokeebs.com/blogs/keyboards/scottorang-handwired-keyboard). -->
<!---->
<!-- ![ScottoRang](https://github.com/user-attachments/assets/f5a8fbf7-587f-4d82-87a5-bc9ad4997423) -->
The ScottoRang is a 34-key split monoblock ergonomic 16x16mm Choc spaced keyboard with a central 128x64 OLED display.
You can read more about the components and how to build it [here](https://scottokeebs.com/blogs/keyboards/scottorang-pcb-keyboard).
![ScottoRang](https://github.com/user-attachments/assets/f5a8fbf7-587f-4d82-87a5-bc9ad4997423)