Chameleon

Chameleon Commit Details

Date:2011-09-19 01:43:19 (12 years 7 months ago)
Author:ErmaC
Commit:1531
Parents: 1530
Message:sync with trunk (r. 1530). - unstretch boot screen disabled by default. - Add exFAT volume label support --> http://forum.voodooprojects.org/index.php/topic,2095.0.html
Changes:
D/branches/ErmaC/i386/MakePaths.dir
D/branches/ErmaC/package/doc
A/branches/ErmaC/i386/modules/Keylayout
A/branches/ErmaC/i386/modules/Keylayout/Keylayout.c
A/branches/ErmaC/i386/modules/Keylayout/Cconfig
A/branches/ErmaC/i386/libsaio/exfat.c
A/branches/ErmaC/i386/modules/Keylayout/Keylayout.h
A/branches/ErmaC/i386/modules/Keylayout/layouts/Makefile
A/branches/ErmaC/i386/libsaio/exfat.h
A/branches/ErmaC/i386/libsaio/term.h
A/branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src
A/branches/ErmaC/package/Scripts/Keymaps/postinstall.in
A/branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src/mac-se.slt
A/branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src/mac-es.slt
A/branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src/pc-fr.slt
A/branches/ErmaC/i386/modules/Keylayout/layouts
A/branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src/mac-it.slt
A/branches/ErmaC/package/Scripts/Keymaps
A/branches/ErmaC/i386/modules/Keylayout/Readme.txt
A/branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src/mac-de.slt
A/branches/ErmaC/i386/modules/Keylayout/Makefile
A/branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src/README
A/branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src/mac-fr.slt
A/branches/ErmaC/i386/modules/Keylayout/layouts/cham-mklayout.c
M/branches/ErmaC/i386/boot0/Cconfig
M/branches/ErmaC/i386/modules/MakeInc.dir
M/branches/ErmaC/i386/libsaio/fake_efi.c
M/branches/ErmaC/package/Resources/pt-BR.lproj/Localizable.strings
M/branches/ErmaC/i386/boot2/gui.h
M/branches/ErmaC/i386/boot2/options.c
M/branches/ErmaC/package/Resources/id.lproj/Localizable.strings
M/branches/ErmaC/doc/BootHelp.txt
M/branches/ErmaC/package/Scripts/EFI/postinstall
M/branches/ErmaC/package/Resources/en.lproj/Localizable.strings
M/branches/ErmaC/package/buildpkg.sh
M/branches/ErmaC/i386/libsaio/ntfs.c
M/branches/ErmaC/i386/libsaio/nvidia.c
M/branches/ErmaC/package/Resources/pt-PT.lproj/Localizable.strings
M/branches/ErmaC/i386/modules/Cconfig
M/branches/ErmaC/package/Resources/es.lproj/Localizable.strings
M/branches/ErmaC/Makefile
M/branches/ErmaC/Chameleon.xcodeproj/project.pbxproj
M/branches/ErmaC/package/Resources/fr.lproj/Conclusion.rtfd/TXT.rtf
M/branches/ErmaC/package/Resources/sr.lproj/Localizable.strings
M/branches/ErmaC/i386/libsaio/Makefile
M/branches/ErmaC/package/Resources/de.lproj/Localizable.strings
M/branches/ErmaC/i386/boot0/boot0.s
M/branches/ErmaC/package/Resources/fr.lproj/Welcome.rtfd/TXT.rtf
M/branches/ErmaC/package/Resources/fr.lproj/Localizable.strings
M/branches/ErmaC/i386/modules/Makefile
M/branches/ErmaC/package/Resources/pl.lproj/Localizable.strings
M/branches/ErmaC/package/Resources/It.lproj/Localizable.strings
M/branches/ErmaC/i386/boot2/gui.c
M/branches/ErmaC/package/Resources/hr-HR.lproj/Localizable.strings

File differences

branches/ErmaC/Chameleon.xcodeproj/project.pbxproj
1717
1818
1919
20
21
2022
2123
2224
......
679681
680682
681683
682
683684
684685
685686
......
878879
879880
880881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
881897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
882998
883999
8841000
......
10181134
10191135
10201136
1021
10221137
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
10551138
10561139
10571140
......
23422425
23432426
23442427
2345
2428
2429
2430
2431
2432
23462433
23472434
23482435
23492436
2350
2351
2352
2353
2354
2355
2356
2357
23582437
23592438
23602439
......
25872666
25882667
25892668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
25903124
25913125
25923126
......
27093243
27103244
27113245
3246
3247
27123248
27133249
27143250
......
28153351
28163352
28173353
2818
3354
3355
3356
28193357
2820
2821
2822
2823
3358
3359
28243360
28253361
28263362
28273363
28283364
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
29673365
29683366
29693367
......
31643562
31653563
31663564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
31673576
31683577
31693578
......
31753584
31763585
31773586
3178
3587
31793588
31803589
3181
3182
3183
3184
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
31853601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
31863620
31873621
31883622
3189
3623
31903624
31913625
3192
3193
3194
3195
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
31963637
31973638
31983639
31993640
3200
3641
32013642
32023643
3203
3204
3205
3206
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
32073655
32083656
32093657
32103658
3211
3659
32123660
32133661
3214
3215
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
32163673
32173674
32183675
019DFBAF11FB94090013E8CC /* MEMTEST86_LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MEMTEST86_LICENSE; sourceTree = "<group>"; };
1D145307137073F40050C0CD /* bootargs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bootargs.h; sourceTree = "<group>"; };
1D2A1AF513743A2600787720 /* bootargs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bootargs.h; sourceTree = "<group>"; };
26F2051D13D04B060020D229 /* exfat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = exfat.h; sourceTree = "<group>"; };
26F2052013D04B130020D229 /* exfat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = exfat.c; sourceTree = "<group>"; };
65ED53931204B83200B22507 /* disk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = disk.h; sourceTree = "<group>"; };
6DBAFD1313B0D21E0047ED33 /* modules_support.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = modules_support.s; sourceTree = "<group>"; };
6DBAFD1413B0D21E0047ED33 /* modules.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = modules.c; sourceTree = "<group>"; };
A3561CAF1414024C00E9B51E /* HelloWorld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HelloWorld.cpp; sourceTree = "<group>"; };
A3561CB11414024C00E9B51E /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
A3561CB31414024C00E9B51E /* modules */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = modules; sourceTree = "<group>"; };
A3561CB61414024D00E9B51E /* test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = test; sourceTree = "<group>"; };
A3561CB81414024D00E9B51E /* __ashldi3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = __ashldi3.c; sourceTree = "<group>"; };
A3561CB91414024D00E9B51E /* __ashrdi3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = __ashrdi3.c; sourceTree = "<group>"; };
A3561CBA1414024D00E9B51E /* __clzsi2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = __clzsi2.c; sourceTree = "<group>"; };
A3561D7F1414024D00E9B51E /* utility.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = utility.cpp; sourceTree = "<group>"; };
A3561D801414024D00E9B51E /* valarray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = valarray.cpp; sourceTree = "<group>"; };
A3561D811414024D00E9B51E /* vector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vector.cpp; sourceTree = "<group>"; };
A3561DA61414296600E9B51E /* Keylayout.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Keylayout.c; sourceTree = "<group>"; };
A3561DA71414296600E9B51E /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
A3561DA81414296600E9B51E /* Cconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Cconfig; sourceTree = "<group>"; };
A35D216F141A73B000969AC0 /* cham-mklayout.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "cham-mklayout.c"; sourceTree = "<group>"; };
A35D2171141A73B000969AC0 /* mac-de.slt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "mac-de.slt"; sourceTree = "<group>"; };
A35D2172141A73B000969AC0 /* mac-es.slt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "mac-es.slt"; sourceTree = "<group>"; };
A35D2173141A73B000969AC0 /* mac-fr.slt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "mac-fr.slt"; sourceTree = "<group>"; };
A35D2174141A73B000969AC0 /* mac-it.slt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "mac-it.slt"; sourceTree = "<group>"; };
A35D2175141A73B000969AC0 /* mac-se.slt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "mac-se.slt"; sourceTree = "<group>"; };
A35D2176141A73B000969AC0 /* pc-fr.slt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "pc-fr.slt"; sourceTree = "<group>"; };
A35D2177141A73B000969AC0 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
A35D2178141A753E00969AC0 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
A35D2187141A75DC00969AC0 /* slimpkg.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = slimpkg.sh; sourceTree = "<group>"; };
A35D2188141A75DC00969AC0 /* buildpkg.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = buildpkg.sh; sourceTree = "<group>"; };
A35D2189141A75DC00969AC0 /* builddmg.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = builddmg.sh; sourceTree = "<group>"; };
A360AA7D14136C1A00084D3F /* Make.rules */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Make.rules; sourceTree = "<group>"; };
A37D7D4A141B7C6F0069C38B /* background.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = background.tiff; sourceTree = "<group>"; };
A37D7D4C141B7C6F0069C38B /* de */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = de; path = de.lproj/Conclusion.rtfd; sourceTree = "<group>"; };
A37D7D4E141B7C6F0069C38B /* de */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = de; path = de.lproj/Description.html; sourceTree = "<group>"; };
A37D7D50141B7C6F0069C38B /* de */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = de; path = de.lproj/License.rtf; sourceTree = "<group>"; };
A37D7D52141B7C6F0069C38B /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
A37D7D54141B7C6F0069C38B /* de */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = de; path = de.lproj/Welcome.rtfd; sourceTree = "<group>"; };
A37D7D55141B7C6F0069C38B /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = en; path = en.lproj/Conclusion.rtfd; sourceTree = "<group>"; };
A37D7D56141B7C6F0069C38B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = en; path = en.lproj/Description.html; sourceTree = "<group>"; };
A37D7D57141B7C6F0069C38B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/License.rtf; sourceTree = "<group>"; };
A37D7D58141B7C6F0069C38B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
A37D7D59141B7C6F0069C38B /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = en; path = en.lproj/Welcome.rtfd; sourceTree = "<group>"; };
A37D7D5A141B7C6F0069C38B /* es */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = es; path = es.lproj/Conclusion.rtfd; sourceTree = "<group>"; };
A37D7D5B141B7C6F0069C38B /* es */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = es; path = es.lproj/Description.html; sourceTree = "<group>"; };
A37D7D5C141B7C6F0069C38B /* es */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = es; path = es.lproj/License.rtf; sourceTree = "<group>"; };
A37D7D5D141B7C6F0069C38B /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
A37D7D5E141B7C6F0069C38B /* es */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = es; path = es.lproj/Welcome.rtfd; sourceTree = "<group>"; };
A37D7D5F141B7C6F0069C38B /* fr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = fr; path = fr.lproj/Conclusion.rtfd; sourceTree = "<group>"; };
A37D7D60141B7C6F0069C38B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = fr; path = fr.lproj/Description.html; sourceTree = "<group>"; };
A37D7D61141B7C6F0069C38B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = fr; path = fr.lproj/License.rtf; sourceTree = "<group>"; };
A37D7D62141B7C6F0069C38B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = "<group>"; };
A37D7D63141B7C6F0069C38B /* fr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = fr; path = fr.lproj/Welcome.rtfd; sourceTree = "<group>"; };
A37D7D64141B7C6F0069C38B /* hr-HR */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = "hr-HR"; path = "hr-HR.lproj/Conclusion.rtfd"; sourceTree = "<group>"; };
A37D7D65141B7C6F0069C38B /* hr-HR */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = "hr-HR"; path = "hr-HR.lproj/Description.html"; sourceTree = "<group>"; };
A37D7D66141B7C6F0069C38B /* hr-HR */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = "hr-HR"; path = "hr-HR.lproj/License.rtf"; sourceTree = "<group>"; };
A37D7D67141B7C6F0069C38B /* hr-HR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "hr-HR"; path = "hr-HR.lproj/Localizable.strings"; sourceTree = "<group>"; };
A37D7D68141B7C6F0069C38B /* hr-HR */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = "hr-HR"; path = "hr-HR.lproj/Welcome.rtfd"; sourceTree = "<group>"; };
A37D7D69141B7C6F0069C38B /* id */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = id; path = id.lproj/Conclusion.rtfd; sourceTree = "<group>"; };
A37D7D6A141B7C6F0069C38B /* id */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = id; path = id.lproj/Description.html; sourceTree = "<group>"; };
A37D7D6B141B7C6F0069C38B /* id */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = id; path = id.lproj/License.rtf; sourceTree = "<group>"; };
A37D7D6C141B7C6F0069C38B /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Localizable.strings; sourceTree = "<group>"; };
A37D7D6D141B7C6F0069C38B /* id */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = id; path = id.lproj/Welcome.rtfd; sourceTree = "<group>"; };
A37D7D6E141B7C6F0069C38B /* it */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = it; path = it.lproj/Conclusion.rtfd; sourceTree = "<group>"; };
A37D7D6F141B7C6F0069C38B /* it */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = it; path = it.lproj/Description.html; sourceTree = "<group>"; };
A37D7D70141B7C6F0069C38B /* it */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = it; path = it.lproj/License.rtf; sourceTree = "<group>"; };
A37D7D71141B7C6F0069C38B /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = "<group>"; };
A37D7D72141B7C6F0069C38B /* it */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = it; path = it.lproj/Welcome.rtfd; sourceTree = "<group>"; };
A37D7D73141B7C6F0069C38B /* pl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = pl; path = pl.lproj/Conclusion.rtfd; sourceTree = "<group>"; };
A37D7D74141B7C6F0069C38B /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = pl; path = pl.lproj/Description.html; sourceTree = "<group>"; };
A37D7D75141B7C6F0069C38B /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = pl; path = pl.lproj/License.rtf; sourceTree = "<group>"; };
A37D7D76141B7C6F0069C38B /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = "<group>"; };
A37D7D77141B7C6F0069C38B /* pl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = pl; path = pl.lproj/Welcome.rtfd; sourceTree = "<group>"; };
A37D7D78141B7C6F0069C38B /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = "pt-BR"; path = "pt-BR.lproj/Conclusion.rtfd"; sourceTree = "<group>"; };
A37D7D79141B7C6F0069C38B /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = "pt-BR"; path = "pt-BR.lproj/Description.html"; sourceTree = "<group>"; };
A37D7D7A141B7C6F0069C38B /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = "pt-BR"; path = "pt-BR.lproj/License.rtf"; sourceTree = "<group>"; };
A37D7D7B141B7C6F0069C38B /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = "<group>"; };
A37D7D7C141B7C6F0069C38B /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = "pt-BR"; path = "pt-BR.lproj/Welcome.rtfd"; sourceTree = "<group>"; };
A37D7D7D141B7C6F0069C38B /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = "pt-PT"; path = "pt-PT.lproj/Conclusion.rtfd"; sourceTree = "<group>"; };
A37D7D7E141B7C6F0069C38B /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = "pt-PT"; path = "pt-PT.lproj/Description.html"; sourceTree = "<group>"; };
A37D7D7F141B7C6F0069C38B /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = "pt-PT"; path = "pt-PT.lproj/License.rtf"; sourceTree = "<group>"; };
A37D7D80141B7C6F0069C38B /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/Localizable.strings"; sourceTree = "<group>"; };
A37D7D81141B7C6F0069C38B /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = "pt-PT"; path = "pt-PT.lproj/Welcome.rtfd"; sourceTree = "<group>"; };
A37D7D82141B7C6F0069C38B /* sr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = sr; path = sr.lproj/Conclusion.rtfd; sourceTree = "<group>"; };
A37D7D83141B7C6F0069C38B /* sr */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = sr; path = sr.lproj/Description.html; sourceTree = "<group>"; };
A37D7D84141B7C6F0069C38B /* sr */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = sr; path = sr.lproj/License.rtf; sourceTree = "<group>"; };
A37D7D85141B7C6F0069C38B /* sr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sr; path = sr.lproj/Localizable.strings; sourceTree = "<group>"; };
A37D7D86141B7C6F0069C38B /* sr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = sr; path = sr.lproj/Welcome.rtfd; sourceTree = "<group>"; };
A3F1F210141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F212141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F214141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F216141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F218141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F21A141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F21C141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F21E141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F220141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F222141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F224141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F226141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F228141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F22A141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F22C141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F22E141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F230141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F233141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F235141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F237141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F239141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F23B141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F23D141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F23F141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F241141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F243141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F245141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F247141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F249141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F24B141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = postinstall; sourceTree = "<group>"; };
A3F1F24D141B9B0D00DDA709 /* postinstall.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall.in; sourceTree = "<group>"; };
A3F1F24F141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = postinstall; sourceTree = "<group>"; };
A3F1F252141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F254141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F256141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F258141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F25A141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F25C141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F25E141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F260141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F262141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F264141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = postinstall; sourceTree = "<group>"; };
A3F1F266141B9B0D00DDA709 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = postinstall; sourceTree = "<group>"; };
A3F1F267141B9B3B00DDA709 /* Readme.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Readme.txt; sourceTree = "<group>"; };
B0056CE711F3868000754B65 /* boot0.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = boot0.s; sourceTree = "<group>"; };
B0056CE811F3868000754B65 /* chain0.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = chain0.s; sourceTree = "<group>"; };
B0056CE911F3868000754B65 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
B0056D8011F3868000754B65 /* coding_standards.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = coding_standards.txt; sourceTree = "<group>"; };
B0056D8111F3868000754B65 /* CHANGES */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CHANGES; sourceTree = "<group>"; };
B0056D8211F3868000754B65 /* APPLE_LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = APPLE_LICENSE; sourceTree = "<group>"; };
B0056D8411F3868000754B65 /* buildpkg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = buildpkg; sourceTree = "<group>"; };
B0056D8511F3868000754B65 /* Distribution */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = Distribution; sourceTree = "<group>"; };
B0056D8611F3868000754B65 /* fdisk */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = fdisk; sourceTree = "<group>"; };
B0056D8811F3868000754B65 /* AHCIPortInjector.kext */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.kernel-extension"; path = AHCIPortInjector.kext; sourceTree = "<group>"; };
B0056D8911F3868000754B65 /* ATAPortInjector.kext */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.kernel-extension"; path = ATAPortInjector.kext; sourceTree = "<group>"; };
B0056D8A11F3868000754B65 /* Disabler.kext */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.kernel-extension"; path = Disabler.kext; sourceTree = "<group>"; };
B0056D8B11F3868000754B65 /* IOAHCIBlockStorageInjector.kext */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.kernel-extension"; path = IOAHCIBlockStorageInjector.kext; sourceTree = "<group>"; };
B0056D8C11F3868000754B65 /* JMicronATAInjector.kext */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.kernel-extension"; path = JMicronATAInjector.kext; sourceTree = "<group>"; };
B0056D8E11F3868000754B65 /* background.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = background.tiff; sourceTree = "<group>"; };
B0056D9011F3868000754B65 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = English; path = English.lproj/Description.html; sourceTree = "<group>"; };
B0056D9211F3868000754B65 /* English */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = English; path = English.lproj/License.rtf; sourceTree = "<group>"; };
B0056D9411F3868000754B65 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = "<group>"; };
B0056D9611F3868000754B65 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = English; path = English.lproj/Welcome.rtfd; sourceTree = "<group>"; };
B0056D9711F3868000754B65 /* French */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = French; path = French.lproj/Description.html; sourceTree = "<group>"; };
B0056D9811F3868000754B65 /* French */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = French; path = French.lproj/License.rtf; sourceTree = "<group>"; };
B0056D9911F3868000754B65 /* French */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = French; path = French.lproj/Localizable.strings; sourceTree = "<group>"; };
B0056D9A11F3868000754B65 /* German */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = German; path = German.lproj/Description.html; sourceTree = "<group>"; };
B0056D9B11F3868000754B65 /* German */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = German; path = German.lproj/License.rtf; sourceTree = "<group>"; };
B0056D9C11F3868000754B65 /* German */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = German; path = German.lproj/Localizable.strings; sourceTree = "<group>"; };
B0056D9D11F3868000754B65 /* Spanish */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = Spanish; path = Spanish.lproj/Description.html; sourceTree = "<group>"; };
B0056D9E11F3868000754B65 /* Spanish */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = Spanish; path = Spanish.lproj/License.rtf; sourceTree = "<group>"; };
B0056D9F11F3868000754B65 /* Spanish */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = Spanish; path = Spanish.lproj/Localizable.strings; sourceTree = "<group>"; };
B0056DA011F3868000754B65 /* Spanish */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = Spanish; path = Spanish.lproj/Welcome.rtfd; sourceTree = "<group>"; };
B0056DA311F3868000754B65 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = postinstall; sourceTree = "<group>"; };
B0056DA511F3868000754B65 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = postinstall; sourceTree = "<group>"; };
B0056DA811F3868000754B65 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = postinstall; sourceTree = "<group>"; };
B0056DAA11F3868000754B65 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = postinstall; sourceTree = "<group>"; };
B0056DAC11F3868000754B65 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = postinstall; sourceTree = "<group>"; };
B0056DAE11F3868000754B65 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = postinstall; sourceTree = "<group>"; };
B0056DB011F3868000754B65 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = postinstall; sourceTree = "<group>"; };
B0056DB211F3868000754B65 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = postinstall; sourceTree = "<group>"; };
B0056DB411F3868000754B65 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = postinstall; sourceTree = "<group>"; };
B0056DB611F3868000754B65 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = postinstall; sourceTree = "<group>"; };
B0056DB811F3868000754B65 /* postinstall */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = postinstall; sourceTree = "<group>"; };
B0056DB911F3868000754B65 /* smbios.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = smbios.plist; sourceTree = "<group>"; };
B0056DBD11F3868000754B65 /* background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = background.png; sourceTree = "<group>"; };
B0056DBE11F3868000754B65 /* boot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = boot.png; sourceTree = "<group>"; };
A3561CB41414024C00E9B51E /* Keylayout */ = {
isa = PBXGroup;
children = (
A3561CB51414024C00E9B51E /* utils */,
A3F1F267141B9B3B00DDA709 /* Readme.txt */,
A35D216E141A73B000969AC0 /* layouts */,
A3561DA81414296600E9B51E /* Cconfig */,
A3561DA61414296600E9B51E /* Keylayout.c */,
A3561DA71414296600E9B51E /* Makefile */,
);
path = Keylayout;
sourceTree = "<group>";
};
A3561CB51414024C00E9B51E /* utils */ = {
isa = PBXGroup;
children = (
A3561CB61414024D00E9B51E /* test */,
);
path = utils;
sourceTree = "<group>";
};
A3561CB71414024D00E9B51E /* klibc */ = {
isa = PBXGroup;
children = (
path = include;
sourceTree = "<group>";
};
A35D216E141A73B000969AC0 /* layouts */ = {
isa = PBXGroup;
children = (
A35D216F141A73B000969AC0 /* cham-mklayout.c */,
A35D2170141A73B000969AC0 /* layouts-src */,
A35D2177141A73B000969AC0 /* Makefile */,
);
path = layouts;
sourceTree = "<group>";
};
A35D2170141A73B000969AC0 /* layouts-src */ = {
isa = PBXGroup;
children = (
A35D2178141A753E00969AC0 /* README */,
A35D2171141A73B000969AC0 /* mac-de.slt */,
A35D2172141A73B000969AC0 /* mac-es.slt */,
A35D2173141A73B000969AC0 /* mac-fr.slt */,
A35D2174141A73B000969AC0 /* mac-it.slt */,
A35D2175141A73B000969AC0 /* mac-se.slt */,
A35D2176141A73B000969AC0 /* pc-fr.slt */,
);
path = "layouts-src";
sourceTree = "<group>";
};
A37D7D49141B7C6F0069C38B /* Resources */ = {
isa = PBXGroup;
children = (
A37D7D4A141B7C6F0069C38B /* background.tiff */,
A37D7D4B141B7C6F0069C38B /* Conclusion.rtfd */,
A37D7D4D141B7C6F0069C38B /* Description.html */,
A37D7D4F141B7C6F0069C38B /* License.rtf */,
A37D7D51141B7C6F0069C38B /* Localizable.strings */,
A37D7D53141B7C6F0069C38B /* Welcome.rtfd */,
);
path = Resources;
sourceTree = "<group>";
};
A3F1F20D141B9B0D00DDA709 /* Scripts */ = {
isa = PBXGroup;
children = (
A3F1F20E141B9B0D00DDA709 /* Advanced */,
A3F1F231141B9B0D00DDA709 /* BaseOptions */,
A3F1F24A141B9B0D00DDA709 /* EFI */,
A3F1F24C141B9B0D00DDA709 /* Keymaps */,
A3F1F24E141B9B0D00DDA709 /* Post */,
A3F1F250141B9B0D00DDA709 /* Resolutions */,
A3F1F265141B9B0D00DDA709 /* Standard */,
);
path = Scripts;
sourceTree = "<group>";
};
A3F1F20E141B9B0D00DDA709 /* Advanced */ = {
isa = PBXGroup;
children = (
A3F1F20F141B9B0D00DDA709 /* BootBanner */,
A3F1F211141B9B0D00DDA709 /* EHCIacquire */,
A3F1F213141B9B0D00DDA709 /* ForceHPET */,
A3F1F215141B9B0D00DDA709 /* ForceWake */,
A3F1F217141B9B0D00DDA709 /* GUI */,
A3F1F219141B9B0D00DDA709 /* LegacyLogo */,
A3F1F21B141B9B0D00DDA709 /* Npci */,
A3F1F21D141B9B0D00DDA709 /* QuietBoot */,
A3F1F21F141B9B0D00DDA709 /* ShowInfo */,
A3F1F221141B9B0D00DDA709 /* SMBIOSdefaults */,
A3F1F223141B9B0D00DDA709 /* UHCIreset */,
A3F1F225141B9B0D00DDA709 /* UseAtiROM */,
A3F1F227141B9B0D00DDA709 /* UseMemDetect */,
A3F1F229141B9B0D00DDA709 /* UseNvidiaROM */,
A3F1F22B141B9B0D00DDA709 /* VBIOS */,
A3F1F22D141B9B0D00DDA709 /* Wait */,
A3F1F22F141B9B0D00DDA709 /* Wake */,
);
path = Advanced;
sourceTree = "<group>";
};
A3F1F20F141B9B0D00DDA709 /* BootBanner */ = {
isa = PBXGroup;
children = (
A3F1F210141B9B0D00DDA709 /* postinstall */,
);
path = BootBanner;
sourceTree = "<group>";
};
A3F1F211141B9B0D00DDA709 /* EHCIacquire */ = {
isa = PBXGroup;
children = (
A3F1F212141B9B0D00DDA709 /* postinstall */,
);
path = EHCIacquire;
sourceTree = "<group>";
};
A3F1F213141B9B0D00DDA709 /* ForceHPET */ = {
isa = PBXGroup;
children = (
A3F1F214141B9B0D00DDA709 /* postinstall */,
);
path = ForceHPET;
sourceTree = "<group>";
};
A3F1F215141B9B0D00DDA709 /* ForceWake */ = {
isa = PBXGroup;
children = (
A3F1F216141B9B0D00DDA709 /* postinstall */,
);
path = ForceWake;
sourceTree = "<group>";
};
A3F1F217141B9B0D00DDA709 /* GUI */ = {
isa = PBXGroup;
children = (
A3F1F218141B9B0D00DDA709 /* postinstall */,
);
path = GUI;
sourceTree = "<group>";
};
A3F1F219141B9B0D00DDA709 /* LegacyLogo */ = {
isa = PBXGroup;
children = (
A3F1F21A141B9B0D00DDA709 /* postinstall */,
);
path = LegacyLogo;
sourceTree = "<group>";
};
A3F1F21B141B9B0D00DDA709 /* Npci */ = {
isa = PBXGroup;
children = (
A3F1F21C141B9B0D00DDA709 /* postinstall */,
);
path = Npci;
sourceTree = "<group>";
};
A3F1F21D141B9B0D00DDA709 /* QuietBoot */ = {
isa = PBXGroup;
children = (
A3F1F21E141B9B0D00DDA709 /* postinstall */,
);
path = QuietBoot;
sourceTree = "<group>";
};
A3F1F21F141B9B0D00DDA709 /* ShowInfo */ = {
isa = PBXGroup;
children = (
A3F1F220141B9B0D00DDA709 /* postinstall */,
);
path = ShowInfo;
sourceTree = "<group>";
};
A3F1F221141B9B0D00DDA709 /* SMBIOSdefaults */ = {
isa = PBXGroup;
children = (
A3F1F222141B9B0D00DDA709 /* postinstall */,
);
path = SMBIOSdefaults;
sourceTree = "<group>";
};
A3F1F223141B9B0D00DDA709 /* UHCIreset */ = {
isa = PBXGroup;
children = (
A3F1F224141B9B0D00DDA709 /* postinstall */,
);
path = UHCIreset;
sourceTree = "<group>";
};
A3F1F225141B9B0D00DDA709 /* UseAtiROM */ = {
isa = PBXGroup;
children = (
A3F1F226141B9B0D00DDA709 /* postinstall */,
);
path = UseAtiROM;
sourceTree = "<group>";
};
A3F1F227141B9B0D00DDA709 /* UseMemDetect */ = {
isa = PBXGroup;
children = (
A3F1F228141B9B0D00DDA709 /* postinstall */,
);
path = UseMemDetect;
sourceTree = "<group>";
};
A3F1F229141B9B0D00DDA709 /* UseNvidiaROM */ = {
isa = PBXGroup;
children = (
A3F1F22A141B9B0D00DDA709 /* postinstall */,
);
path = UseNvidiaROM;
sourceTree = "<group>";
};
A3F1F22B141B9B0D00DDA709 /* VBIOS */ = {
isa = PBXGroup;
children = (
A3F1F22C141B9B0D00DDA709 /* postinstall */,
);
path = VBIOS;
sourceTree = "<group>";
};
A3F1F22D141B9B0D00DDA709 /* Wait */ = {
isa = PBXGroup;
children = (
A3F1F22E141B9B0D00DDA709 /* postinstall */,
);
path = Wait;
sourceTree = "<group>";
};
A3F1F22F141B9B0D00DDA709 /* Wake */ = {
isa = PBXGroup;
children = (
A3F1F230141B9B0D00DDA709 /* postinstall */,
);
path = Wake;
sourceTree = "<group>";
};
A3F1F231141B9B0D00DDA709 /* BaseOptions */ = {
isa = PBXGroup;
children = (
A3F1F232141B9B0D00DDA709 /* arch */,
A3F1F234141B9B0D00DDA709 /* CSTUsingSystemIO */,
A3F1F236141B9B0D00DDA709 /* DropSSDT */,
A3F1F238141B9B0D00DDA709 /* EnableC2State */,
A3F1F23A141B9B0D00DDA709 /* EnableC3State */,
A3F1F23C141B9B0D00DDA709 /* EnableC4State */,
A3F1F23E141B9B0D00DDA709 /* EthernetBuiltIn */,
A3F1F240141B9B0D00DDA709 /* GenerateCStates */,
A3F1F242141B9B0D00DDA709 /* GeneratePStates */,
A3F1F244141B9B0D00DDA709 /* GraphicsEnabler */,
A3F1F246141B9B0D00DDA709 /* InstantMenu */,
A3F1F248141B9B0D00DDA709 /* RestartFix */,
);
path = BaseOptions;
sourceTree = "<group>";
};
A3F1F232141B9B0D00DDA709 /* arch */ = {
isa = PBXGroup;
children = (
A3F1F233141B9B0D00DDA709 /* postinstall */,
);
path = arch;
sourceTree = "<group>";
};
A3F1F234141B9B0D00DDA709 /* CSTUsingSystemIO */ = {
isa = PBXGroup;
children = (
A3F1F235141B9B0D00DDA709 /* postinstall */,
);
path = CSTUsingSystemIO;
sourceTree = "<group>";
};
A3F1F236141B9B0D00DDA709 /* DropSSDT */ = {
isa = PBXGroup;
children = (
A3F1F237141B9B0D00DDA709 /* postinstall */,
);
path = DropSSDT;
sourceTree = "<group>";
};
A3F1F238141B9B0D00DDA709 /* EnableC2State */ = {
isa = PBXGroup;
children = (
A3F1F239141B9B0D00DDA709 /* postinstall */,
);
path = EnableC2State;
sourceTree = "<group>";
};
A3F1F23A141B9B0D00DDA709 /* EnableC3State */ = {
isa = PBXGroup;
children = (
A3F1F23B141B9B0D00DDA709 /* postinstall */,
);
path = EnableC3State;
sourceTree = "<group>";
};
A3F1F23C141B9B0D00DDA709 /* EnableC4State */ = {
isa = PBXGroup;
children = (
A3F1F23D141B9B0D00DDA709 /* postinstall */,
);
path = EnableC4State;
sourceTree = "<group>";
};
A3F1F23E141B9B0D00DDA709 /* EthernetBuiltIn */ = {
isa = PBXGroup;
children = (
A3F1F23F141B9B0D00DDA709 /* postinstall */,
);
path = EthernetBuiltIn;
sourceTree = "<group>";
};
A3F1F240141B9B0D00DDA709 /* GenerateCStates */ = {
isa = PBXGroup;
children = (
A3F1F241141B9B0D00DDA709 /* postinstall */,
);
path = GenerateCStates;
sourceTree = "<group>";
};
A3F1F242141B9B0D00DDA709 /* GeneratePStates */ = {
isa = PBXGroup;
children = (
A3F1F243141B9B0D00DDA709 /* postinstall */,
);
path = GeneratePStates;
sourceTree = "<group>";
};
A3F1F244141B9B0D00DDA709 /* GraphicsEnabler */ = {
isa = PBXGroup;
children = (
A3F1F245141B9B0D00DDA709 /* postinstall */,
);
path = GraphicsEnabler;
sourceTree = "<group>";
};
A3F1F246141B9B0D00DDA709 /* InstantMenu */ = {
isa = PBXGroup;
children = (
A3F1F247141B9B0D00DDA709 /* postinstall */,
);
path = InstantMenu;
sourceTree = "<group>";
};
A3F1F248141B9B0D00DDA709 /* RestartFix */ = {
isa = PBXGroup;
children = (
A3F1F249141B9B0D00DDA709 /* postinstall */,
);
path = RestartFix;
sourceTree = "<group>";
};
A3F1F24A141B9B0D00DDA709 /* EFI */ = {
isa = PBXGroup;
children = (
A3F1F24B141B9B0D00DDA709 /* postinstall */,
);
path = EFI;
sourceTree = "<group>";
};
A3F1F24C141B9B0D00DDA709 /* Keymaps */ = {
isa = PBXGroup;
children = (
A3F1F24D141B9B0D00DDA709 /* postinstall.in */,
);
path = Keymaps;
sourceTree = "<group>";
};
A3F1F24E141B9B0D00DDA709 /* Post */ = {
isa = PBXGroup;
children = (
A3F1F24F141B9B0D00DDA709 /* postinstall */,
);
path = Post;
sourceTree = "<group>";
};
A3F1F250141B9B0D00DDA709 /* Resolutions */ = {
isa = PBXGroup;
children = (
A3F1F251141B9B0D00DDA709 /* 1024x600x32 */,
A3F1F253141B9B0D00DDA709 /* 1024x768x32 */,
A3F1F255141B9B0D00DDA709 /* 1280x1024x32 */,
A3F1F257141B9B0D00DDA709 /* 1280x800x32 */,
A3F1F259141B9B0D00DDA709 /* 1280x960x32 */,
A3F1F25B141B9B0D00DDA709 /* 1440x900x32 */,
A3F1F25D141B9B0D00DDA709 /* 1600x900x32 */,
A3F1F25F141B9B0D00DDA709 /* 1680x1050x32 */,
A3F1F261141B9B0D00DDA709 /* 1920x1080x32 */,
A3F1F263141B9B0D00DDA709 /* 1920x1200x32 */,
);
path = Resolutions;
sourceTree = "<group>";
};
A3F1F251141B9B0D00DDA709 /* 1024x600x32 */ = {
isa = PBXGroup;
children = (
A3F1F252141B9B0D00DDA709 /* postinstall */,
);
path = 1024x600x32;
sourceTree = "<group>";
};
A3F1F253141B9B0D00DDA709 /* 1024x768x32 */ = {
isa = PBXGroup;
children = (
A3F1F254141B9B0D00DDA709 /* postinstall */,
);
path = 1024x768x32;
sourceTree = "<group>";
};
A3F1F255141B9B0D00DDA709 /* 1280x1024x32 */ = {
isa = PBXGroup;
children = (
A3F1F256141B9B0D00DDA709 /* postinstall */,
);
path = 1280x1024x32;
sourceTree = "<group>";
};
A3F1F257141B9B0D00DDA709 /* 1280x800x32 */ = {
isa = PBXGroup;
children = (
A3F1F258141B9B0D00DDA709 /* postinstall */,
);
path = 1280x800x32;
sourceTree = "<group>";
};
A3F1F259141B9B0D00DDA709 /* 1280x960x32 */ = {
isa = PBXGroup;
children = (
A3F1F25A141B9B0D00DDA709 /* postinstall */,
);
path = 1280x960x32;
sourceTree = "<group>";
};
A3F1F25B141B9B0D00DDA709 /* 1440x900x32 */ = {
isa = PBXGroup;
children = (
A3F1F25C141B9B0D00DDA709 /* postinstall */,
);
path = 1440x900x32;
sourceTree = "<group>";
};
A3F1F25D141B9B0D00DDA709 /* 1600x900x32 */ = {
isa = PBXGroup;
children = (
A3F1F25E141B9B0D00DDA709 /* postinstall */,
);
path = 1600x900x32;
sourceTree = "<group>";
};
A3F1F25F141B9B0D00DDA709 /* 1680x1050x32 */ = {
isa = PBXGroup;
children = (
A3F1F260141B9B0D00DDA709 /* postinstall */,
);
path = 1680x1050x32;
sourceTree = "<group>";
};
A3F1F261141B9B0D00DDA709 /* 1920x1080x32 */ = {
isa = PBXGroup;
children = (
A3F1F262141B9B0D00DDA709 /* postinstall */,
);
path = 1920x1080x32;
sourceTree = "<group>";
};
A3F1F263141B9B0D00DDA709 /* 1920x1200x32 */ = {
isa = PBXGroup;
children = (
A3F1F264141B9B0D00DDA709 /* postinstall */,
);
path = 1920x1200x32;
sourceTree = "<group>";
};
A3F1F265141B9B0D00DDA709 /* Standard */ = {
isa = PBXGroup;
children = (
A3F1F266141B9B0D00DDA709 /* postinstall */,
);
path = Standard;
sourceTree = "<group>";
};
B0056CE511F3868000754B65 /* i386 */ = {
isa = PBXGroup;
children = (
B0056D2411F3868000754B65 /* libsaio */ = {
isa = PBXGroup;
children = (
26F2052013D04B130020D229 /* exfat.c */,
26F2051D13D04B060020D229 /* exfat.h */,
B0056D2511F3868000754B65 /* acpi.h */,
B0056D2611F3868000754B65 /* acpi_patcher.c */,
B0056D2711F3868000754B65 /* acpi_patcher.h */,
B0056D8311F3868000754B65 /* package */ = {
isa = PBXGroup;
children = (
B0056D8411F3868000754B65 /* buildpkg */,
A35D2187141A75DC00969AC0 /* slimpkg.sh */,
A35D2188141A75DC00969AC0 /* buildpkg.sh */,
A35D2189141A75DC00969AC0 /* builddmg.sh */,
B0056D8511F3868000754B65 /* Distribution */,
B0056D8611F3868000754B65 /* fdisk */,
B0056D8711F3868000754B65 /* Kexts */,
B0056D8D11F3868000754B65 /* Resources */,
B0056DA111F3868000754B65 /* Scripts */,
A37D7D49141B7C6F0069C38B /* Resources */,
A3F1F20D141B9B0D00DDA709 /* Scripts */,
B0056DB911F3868000754B65 /* smbios.plist */,
);
path = package;
sourceTree = "<group>";
};
B0056D8711F3868000754B65 /* Kexts */ = {
isa = PBXGroup;
children = (
B0056D8811F3868000754B65 /* AHCIPortInjector.kext */,
B0056D8911F3868000754B65 /* ATAPortInjector.kext */,
B0056D8A11F3868000754B65 /* Disabler.kext */,
B0056D8B11F3868000754B65 /* IOAHCIBlockStorageInjector.kext */,
B0056D8C11F3868000754B65 /* JMicronATAInjector.kext */,
);
path = Kexts;
sourceTree = "<group>";
};
B0056D8D11F3868000754B65 /* Resources */ = {
isa = PBXGroup;
children = (
B0056D8E11F3868000754B65 /* background.tiff */,
B0056D8F11F3868000754B65 /* Description.html */,
B0056D9111F3868000754B65 /* License.rtf */,
B0056D9311F3868000754B65 /* Localizable.strings */,
B0056D9511F3868000754B65 /* Welcome.rtfd */,
);
path = Resources;
sourceTree = "<group>";
};
B0056DA111F3868000754B65 /* Scripts */ = {
isa = PBXGroup;
children = (
B0056DA211F3868000754B65 /* FAT */,
B0056DA411F3868000754B65 /* HFS */,
B0056DA611F3868000754B65 /* Options */,
B0056DB511F3868000754B65 /* Post */,
B0056DB711F3868000754B65 /* Standard */,
);
path = Scripts;
sourceTree = "<group>";
};
B0056DA211F3868000754B65 /* FAT */ = {
isa = PBXGroup;
children = (
B0056DA311F3868000754B65 /* postinstall */,
);
path = FAT;
sourceTree = "<group>";
};
B0056DA411F3868000754B65 /* HFS */ = {
isa = PBXGroup;
children = (
B0056DA511F3868000754B65 /* postinstall */,
);
path = HFS;
sourceTree = "<group>";
};
B0056DA611F3868000754B65 /* Options */ = {
isa = PBXGroup;
children = (
B0056DA711F3868000754B65 /* EHCIacquire */,
B0056DA911F3868000754B65 /* EthernetBuiltIn */,
B0056DAB11F3868000754B65 /* ForceHPET */,
B0056DAD11F3868000754B65 /* ForceWake */,
B0056DAF11F3868000754B65 /* GraphicsEnabler */,
B0056DB111F3868000754B65 /* GUI */,
B0056DB311F3868000754B65 /* UHCIreset */,
);
path = Options;
sourceTree = "<group>";
};
B0056DA711F3868000754B65 /* EHCIacquire */ = {
isa = PBXGroup;
children = (
B0056DA811F3868000754B65 /* postinstall */,
);
path = EHCIacquire;
sourceTree = "<group>";
};
B0056DA911F3868000754B65 /* EthernetBuiltIn */ = {
isa = PBXGroup;
children = (
B0056DAA11F3868000754B65 /* postinstall */,
);
path = EthernetBuiltIn;
sourceTree = "<group>";
};
B0056DAB11F3868000754B65 /* ForceHPET */ = {
isa = PBXGroup;
children = (
B0056DAC11F3868000754B65 /* postinstall */,
);
path = ForceHPET;
sourceTree = "<group>";
};
B0056DAD11F3868000754B65 /* ForceWake */ = {
isa = PBXGroup;
children = (
B0056DAE11F3868000754B65 /* postinstall */,
);
path = ForceWake;
sourceTree = "<group>";
};
B0056DAF11F3868000754B65 /* GraphicsEnabler */ = {
isa = PBXGroup;
children = (
B0056DB011F3868000754B65 /* postinstall */,
);
path = GraphicsEnabler;
sourceTree = "<group>";
};
B0056DB111F3868000754B65 /* GUI */ = {
isa = PBXGroup;
children = (
B0056DB211F3868000754B65 /* postinstall */,
);
path = GUI;
sourceTree = "<group>";
};
B0056DB311F3868000754B65 /* UHCIreset */ = {
isa = PBXGroup;
children = (
B0056DB411F3868000754B65 /* postinstall */,
);
path = UHCIreset;
sourceTree = "<group>";
};
B0056DB511F3868000754B65 /* Post */ = {
isa = PBXGroup;
children = (
B0056DB611F3868000754B65 /* postinstall */,
);
path = Post;
sourceTree = "<group>";
};
B0056DB711F3868000754B65 /* Standard */ = {
isa = PBXGroup;
children = (
B0056DB811F3868000754B65 /* postinstall */,
);
path = Standard;
sourceTree = "<group>";
};
B0056DBA11F3868000754B65 /* artwork */ = {
isa = PBXGroup;
children = (
French,
German,
Spanish,
de,
en,
es,
fr,
"hr-HR",
id,
it,
pl,
"pt-BR",
"pt-PT",
sr,
);
mainGroup = 08FB7794FE84155DC02AAC07 /* Chameleon */;
projectDirPath = "";
/* End PBXProject section */
/* Begin PBXVariantGroup section */
B0056D8F11F3868000754B65 /* Description.html */ = {
A37D7D4B141B7C6F0069C38B /* Conclusion.rtfd */ = {
isa = PBXVariantGroup;
children = (
B0056D9011F3868000754B65 /* English */,
B0056D9711F3868000754B65 /* French */,
B0056D9A11F3868000754B65 /* German */,
B0056D9D11F3868000754B65 /* Spanish */,
A37D7D55141B7C6F0069C38B /* en */,
A37D7D4C141B7C6F0069C38B /* de */,
A37D7D5A141B7C6F0069C38B /* es */,
A37D7D5F141B7C6F0069C38B /* fr */,
A37D7D64141B7C6F0069C38B /* hr-HR */,
A37D7D69141B7C6F0069C38B /* id */,
A37D7D6E141B7C6F0069C38B /* it */,
A37D7D73141B7C6F0069C38B /* pl */,
A37D7D78141B7C6F0069C38B /* pt-BR */,
A37D7D7D141B7C6F0069C38B /* pt-PT */,
A37D7D82141B7C6F0069C38B /* sr */,
);
name = Conclusion.rtfd;
sourceTree = "<group>";
};
A37D7D4D141B7C6F0069C38B /* Description.html */ = {
isa = PBXVariantGroup;
children = (
A37D7D4E141B7C6F0069C38B /* de */,
A37D7D56141B7C6F0069C38B /* en */,
A37D7D5B141B7C6F0069C38B /* es */,
A37D7D60141B7C6F0069C38B /* fr */,
A37D7D65141B7C6F0069C38B /* hr-HR */,
A37D7D6A141B7C6F0069C38B /* id */,
A37D7D6F141B7C6F0069C38B /* it */,
A37D7D74141B7C6F0069C38B /* pl */,
A37D7D79141B7C6F0069C38B /* pt-BR */,
A37D7D7E141B7C6F0069C38B /* pt-PT */,
A37D7D83141B7C6F0069C38B /* sr */,
);
name = Description.html;
sourceTree = "<group>";
};
B0056D9111F3868000754B65 /* License.rtf */ = {
A37D7D4F141B7C6F0069C38B /* License.rtf */ = {
isa = PBXVariantGroup;
children = (
B0056D9211F3868000754B65 /* English */,
B0056D9811F3868000754B65 /* French */,
B0056D9B11F3868000754B65 /* German */,
B0056D9E11F3868000754B65 /* Spanish */,
A37D7D50141B7C6F0069C38B /* de */,
A37D7D57141B7C6F0069C38B /* en */,
A37D7D5C141B7C6F0069C38B /* es */,
A37D7D61141B7C6F0069C38B /* fr */,
A37D7D66141B7C6F0069C38B /* hr-HR */,
A37D7D6B141B7C6F0069C38B /* id */,
A37D7D70141B7C6F0069C38B /* it */,
A37D7D75141B7C6F0069C38B /* pl */,
A37D7D7A141B7C6F0069C38B /* pt-BR */,
A37D7D7F141B7C6F0069C38B /* pt-PT */,
A37D7D84141B7C6F0069C38B /* sr */,
);
name = License.rtf;
sourceTree = "<group>";
};
B0056D9311F3868000754B65 /* Localizable.strings */ = {
A37D7D51141B7C6F0069C38B /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B0056D9411F3868000754B65 /* English */,
B0056D9911F3868000754B65 /* French */,
B0056D9C11F3868000754B65 /* German */,
B0056D9F11F3868000754B65 /* Spanish */,
A37D7D58141B7C6F0069C38B /* en */,
A37D7D52141B7C6F0069C38B /* de */,
A37D7D5D141B7C6F0069C38B /* es */,
A37D7D62141B7C6F0069C38B /* fr */,
A37D7D67141B7C6F0069C38B /* hr-HR */,
A37D7D6C141B7C6F0069C38B /* id */,
A37D7D71141B7C6F0069C38B /* it */,
A37D7D76141B7C6F0069C38B /* pl */,
A37D7D7B141B7C6F0069C38B /* pt-BR */,
A37D7D80141B7C6F0069C38B /* pt-PT */,
A37D7D85141B7C6F0069C38B /* sr */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B0056D9511F3868000754B65 /* Welcome.rtfd */ = {
A37D7D53141B7C6F0069C38B /* Welcome.rtfd */ = {
isa = PBXVariantGroup;
children = (
B0056D9611F3868000754B65 /* English */,
B0056DA011F3868000754B65 /* Spanish */,
A37D7D59141B7C6F0069C38B /* en */,
A37D7D54141B7C6F0069C38B /* de */,
A37D7D5E141B7C6F0069C38B /* es */,
A37D7D63141B7C6F0069C38B /* fr */,
A37D7D68141B7C6F0069C38B /* hr-HR */,
A37D7D6D141B7C6F0069C38B /* id */,
A37D7D72141B7C6F0069C38B /* it */,
A37D7D77141B7C6F0069C38B /* pl */,
A37D7D7C141B7C6F0069C38B /* pt-BR */,
A37D7D81141B7C6F0069C38B /* pt-PT */,
A37D7D86141B7C6F0069C38B /* sr */,
);
name = Welcome.rtfd;
sourceTree = "<group>";
branches/ErmaC/i386/MakePaths.dir
1
2
3
4
5
6
7
8
9
#
# Default paths for subdirectories.
#
OBJROOT=../../obj/i386/$(DIR)
SYMROOT=../../sym/i386
DSTROOT=../../dst/i386
SRCROOT=/tmp
branches/ErmaC/i386/libsaio/exfat.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
/*
* Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* Copyright (c) 1999-2004 Apple Computer, Inc. All Rights Reserved.
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://www.opensource.apple.com/apsl/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
/*
* dmazar, 14/7/2011
* support for EXFAT volume label reading
* EXFAT info from: http://www.ntfs.com/exfat-overview.htm
*
* EXFAT shares partition type with NTFS (0x7) and easiest way of
* adding it was through ntfs.c module. All functions here are called
* from similar ntfs.c funcs as fallback (if not NTFS, maybe it's EXFAT).
*/
#include "libsaio.h"
#include "sl.h"
#ifndef DEBUG_EXFAT
#define DEBUG_EXFAT 0
#endif
#if DEBUG_EXFAT
#define DBG(x...)printf(x)
#define PAUSE()getchar()
#else
#define DBG(x...)
#define PAUSE()
#endif
#defineEXFAT_BBID"EXFAT "
#defineEXFAT_BBIDLEN8
#define MAX_BLOCK_SIZE4096
#define MAX_CLUSTER_SIZE32 * 1024 * 1024
#define ERROR -1
/*
* boot sector of the partition
* http://www.ntfs.com/exfat-boot-sector.htm
*/
struct exfatbootfile {
u_int8_t reserved1[3];/* JumpBoot: 0xEB7690 */
u_int8_t bf_sysid[8];/* FileSystemName: 'EXFAT ' */
u_int8_t reserved2[53];/* MustBeZero */
u_int64_t bf_prtoff;/* PartitionOffset: In sectors; if 0, shall be ignored */
u_int64_t bf_vollen;/* VolumeLength: Size of exFAT volume in sectors */
u_int32_t bf_fatoff;/* FatOffset: In sectors */
u_int32_t bf_fatlen;/* FatLength: In sectors. May exceed the required space in order to align the second FAT */
u_int32_t bf_cloff;/* ClusterHeapOffset: In sectors. */
u_int32_t bf_clcnt;/* ClusterCount: 2^32-11 is the maximum number of clusters could be described. */
u_int32_t bf_rdircl;/* RootDirectoryCluster. */
u_int32_t bf_volsn;/* VolumeSerialNumber. */
u_int16_t bf_fsrev;/* FileSystemRevision: as MAJOR.minor, major revision is high byte, minor is low byte; currently 01.00. */
u_int16_t bf_volflags;/* VolumeFlags. */
u_int8_t bf_bpss;/* BytesPerSectorShift: Power of 2. Minimum 9 (512 bytes per sector), maximum 12 (4096 bytes per sector) */
u_int8_t bf_nfats;/* NumberOfFats: 2 is for TexFAT only */
u_int8_t bf_drvs;/* DriveSelect: Extended INT 13h drive number; typically 0x80 */
u_int8_t reserved3[7];/* Reserved */
u_int8_t bootcode[390];/* BootCode */
u_int16_t bf_bsig;/* BootSignature: 0xAA55 */
};
struct direntry_label {
u_int8_t type;/* EntryType: 0x83 (or 0x03 if label is empty) */
u_int8_t llen;/* CharacterCount: Length in Unicode characters (max 11) */
u_int16_t label[11];/* VolumeLabel: Unicode characters (max 11) */
u_int8_t reserved1[8];/* Reserved */
};
/**
* Reads volume label into str.
* Reads boot sector, performs dome checking, loads root dir
* and parses volume label.
*/
void
EXFATGetDescription(CICell ih, char *str, long strMaxLen)
{
struct exfatbootfile *boot;
u_int32_t bytesPerSector = 0;
u_int32_t sectorsPerCluster = 0;
long long rdirOffset = 0;
char *buf = NULL;
struct direntry_label *dire = NULL;
int loopControl = 0;
DBG("EXFAT: start %x:%x\n", ih->biosdev, ih->part_no);
buf = (char *)malloc(MAX_BLOCK_SIZE);
if (buf == 0)
{
goto error;
}
/*
* Read the boot sector, check signatures, and do some minimal
* sanity checking. NOTE: the size of the read below is intended
* to be a multiple of all supported block sizes, so we don't
* have to determine or change the device's block size.
*/
Seek(ih, 0);
Read(ih, (long)buf, MAX_BLOCK_SIZE);
// take our boot structure
boot = (struct exfatbootfile *) buf;
/*
* The first three bytes are an Intel x86 jump instruction. I assume it
* can be the same forms as DOS FAT:
* 0xE9 0x?? 0x??
* 0xEC 0x?? 0x90
* where 0x?? means any byte value is OK.
*/
if (boot->reserved1[0] != 0xE9
&& (boot->reserved1[0] != 0xEB || boot->reserved1[2] != 0x90))
{
goto error;
}
// Check the "EXFAT " signature.
if (memcmp((const char *)boot->bf_sysid, EXFAT_BBID, EXFAT_BBIDLEN) != 0)
{
goto error;
}
/*
* Make sure the bytes per sector and sectors per cluster are
* powers of two, and within reasonable ranges.
*/
bytesPerSector = 1 << boot->bf_bpss;/* Just one byte; no swapping needed */
DBG("EXFAT: bpss=%d, bytesPerSector=%d\n", boot->bf_bpss, bytesPerSector);
if (boot->bf_bpss < 9 || boot->bf_bpss > 12)
{
DBG("EXFAT: invalid bytes per sector shift(%d)\n", boot->bf_bpss);
goto error;
}
sectorsPerCluster = 1 << boot->bf_spcs;/* Just one byte; no swapping needed */
DBG("EXFAT: spcs=%d, sectorsPerCluster=%d\n", boot->bf_spcs, sectorsPerCluster);
if (boot->bf_spcs > (25 - boot->bf_bpss))
{
DBG("EXFAT: invalid sectors per cluster shift (%d)\n", boot->bf_spcs);
goto error;
}
// calculate root dir cluster offset
rdirOffset = boot->bf_cloff + (boot->bf_rdircl - 2) * sectorsPerCluster;
DBG("EXFAT: rdirOffset=%d\n", rdirOffset);
// load MAX_BLOCK_SIZE bytes of root dir
Seek(ih, rdirOffset * bytesPerSector);
Read(ih, (long)buf, MAX_BLOCK_SIZE);
DBG("buf 0 1 2 = %x %x %x\n", 0x00ff & buf[0], 0x00ff & buf[1], 0x00ff & buf[2]);
str[0] = '\0';
/*
* Search for volume label dir entry (type 0x83), convert from unicode and put to str.
* Set loopControl var to avoid searching outside of buf.
*/
loopControl = MAX_BLOCK_SIZE / sizeof(struct direntry_label);
dire = (struct direntry_label *)buf;
while (loopControl && dire->type && dire->type != 0x83)
{
dire++;
loopControl--;
}
if (dire->type == 0x83 && dire->llen > 0 && dire->llen <= 11)
{
utf_encodestr( dire->label, (int)dire->llen, (u_int8_t *)str, strMaxLen, OSLittleEndian );
}
DBG("EXFAT: label=%s\n", str);
free(buf);
PAUSE();
return;
error:
if (buf) free(buf);
DBG("EXFAT: error\n");
PAUSE();
return;
}
/**
* Sets UUID to uuidStr.
* Reads the boot sector, does some checking, generates UUID
* (like the one you get on Windows???)
*/
long EXFATGetUUID(CICell ih, char *uuidStr)
{
struct exfatbootfile *boot;
void *buf = malloc(MAX_BLOCK_SIZE);
if ( !buf )
return -1;
/*
* Read the boot sector, check signatures, and do some minimal
* sanity checking. NOTE: the size of the read below is intended
* to be a multiple of all supported block sizes, so we don't
* have to determine or change the device's block size.
*/
Seek(ih, 0);
Read(ih, (long)buf, MAX_BLOCK_SIZE);
boot = (struct exfatbootfile *) buf;
/*
* Check the "EXFAT " signature.
*/
if (memcmp((const char *)boot->bf_sysid, EXFAT_BBID, EXFAT_BBIDLEN) != 0)
return -1;
// Check for non-null volume serial number
if( !boot->bf_volsn )
return -1;
// Use UUID like the one you get on Windows
sprintf(uuidStr, "%04X-%04X", (unsigned short)(boot->bf_volsn >> 16) & 0xFFFF,
(unsigned short)boot->bf_volsn & 0xFFFF);
DBG("EXFATGetUUID: %x:%x = %s\n", ih->biosdev, ih->part_no, uuidStr);
return 0;
}
/**
* Returns true if given buffer is the boot rec of the EXFAT volume.
*/
bool EXFATProbe(const void * buffer)
{
bool result = false;
// boot sector structure
const struct exfatbootfile* boot = buffer;
// Looking for EXFAT signature.
if (memcmp((const char *)boot->bf_sysid, EXFAT_BBID, EXFAT_BBIDLEN) == 0)
result = true;
DBG("EXFATProbe: %d\n", result ? 1 : 0);
return result;
}
branches/ErmaC/i386/libsaio/term.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*
* term.h
* Chameleon
*
* Created by JrCs on 30/08/11.
* Copyright 2011. All rights reserved.
*
*/
#ifndef __LIBSAIO_TERM_H
#define __LIBSAIO_TERM_H
#define ASCII_KEY_MASK 0x7f
#define ASCII_KEY(x) ((x & ASCII_KEY_MASK))
#define KEY_BKSP 0x0008
#define KEY_TAB 0x0009
#define KEY_ENTER 0x000d
#define KEY_ESC 0x001b
#define KEY_PRTSC 0x002a
#define KEY_LEFT 0x4b00
#define KEY_RIGHT 0x4d00
#define KEY_UP 0x4800
#define KEY_DOWN 0x5000
#define KEY_HOME 0x4700
#define KEY_END 0x4f00
#define KEY_CENTER 0x4c00
#define KEY_INS 0x5200
#define KEY_DEL 0x5300
#define KEY_PGUP 0x4900
#define KEY_PGDN 0x5100
#define KEY_F1 0x3b00
#define KEY_F2 0x3c00
#define KEY_F3 0x3d00
#define KEY_F4 0x3e00
#define KEY_F5 0x3f00
#define KEY_F6 0x4000
#define KEY_F7 0x4100
#define KEY_F8 0x4200
#define KEY_F9 0x4300
#define KEY_F10 0x4400
#define KEY_F11 0x5700
#define KEY_F12 0x5800
// Key code for input that shouldn't echoed back
#define KEY_NOECHO 0xff00
/* Bitmasks for modifier keys */
#define STATUS_RSHIFT (1 << 0)
#define STATUS_LSHIFT (1 << 1)
#define STATUS_RCTRL (1 << 2)
#define STATUS_RALT (1 << 3)
#define STATUS_SCROLL (1 << 4)
#define STATUS_NUM (1 << 5)
#define STATUS_CAPS (1 << 6)
#define STATUS_LCTRL (1 << 8)
#define STATUS_LALT (1 << 9)
#endif /* !__LIBSAIO_TERM_H */
branches/ErmaC/i386/libsaio/exfat.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
* Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* The contents of this file constitute Original Code as defined in and
* are subject to the Apple Public Source License Version 2.0 (the
* "License"). You may not use this file except in compliance with the
* License. Please obtain a copy of the License at
* http://www.apple.com/publicsource and read it before using this file.
*
* This Original Code and all software distributed under the License are
* distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
* License for the specific language governing rights and limitations
* under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
/*
* dmazar, 14/7/2011
* support for EXFAT volume label reading
*
*/
extern void EXFATGetDescription(CICell ih, char *str, long strMaxLen);
extern bool EXFATProbe (const void *buf);
extern long EXFATGetUUID(CICell ih, char *uuidStr);
branches/ErmaC/i386/libsaio/Makefile
3939
4040
4141
42
42
4343
4444
4545
fake_efi.o ext2fs.o \
hpet.o dram_controllers.o spd.o usb.o pci_setup.o \
device_inject.o nvidia.o ati.o gma.o pci_root.o \
convert.o aml_generator.o console.o
convert.o aml_generator.o console.o exfat.o
SAIO_OBJS := $(addprefix $(OBJROOT)/, $(SAIO_OBJS))
branches/ErmaC/i386/libsaio/nvidia.c
835835
836836
837837
838
838839
839
840840
841841
842842
// 10A0 - 10AF
// 10B0 - 10BF
// 10C0 - 10CF
{ 0x10DE10C3, "GeForce 8400 GS" },
{ 0x10DE10C5, "GeForce 405" },
{ 0x10DE10C3, "GeForce 8400 GS" },
// 1200 -
{ 0x10DE1200, "GeForce GTX 560 Ti" },
{ 0x10DE1201, "GeForce GTX 560" },
branches/ErmaC/i386/libsaio/ntfs.c
2626
2727
2828
29
30
31
32
33
2934
3035
3136
......
191196
192197
193198
199
200
201
202
203
194204
195205
196206
......
316326
317327
318328
319
320
329
330
331
332
321333
322334
323335
......
340352
341353
342354
355
356
357
358
343359
344360
#include "libsaio.h"
#include "sl.h"
/*
* dmazar, 14/7/2011 - support for EXFAT volume label reading
*/
#include "exfat.h"
#define BYTE_ORDER_MARK0xFEFF
#include "ntfs_private.h"
*/
if (memcmp((const char *)boot->bf_sysid, "NTFS ", 8) != 0)
{
/*
* Check for EXFAT. Finish by jumping to error to free buf,
* although if it is EXFAT then it's no an error.
*/
EXFATGetDescription(ih, str, strMaxLen);
goto error;
}
boot = (struct bootfile *) buf;
// Check for NTFS signature
if ( memcmp((void*)boot->bf_sysid, NTFS_BBID, NTFS_BBIDLEN) != 0 )
return -1;
if ( memcmp((void*)boot->bf_sysid, NTFS_BBID, NTFS_BBIDLEN) != 0 ) {
// If not NTFS, maybe it is EXFAT
return EXFATGetUUID(ih, uuidStr);
}
// Check for non-null volume serial number
if( !boot->bf_volsn )
if (strncmp((const char *)part_bootfile->bf_sysid, NTFS_BBID, NTFS_BBIDLEN) == 0)
result = true;
// If not NTFS, maybe it is EXFAT
if (!result)
result = EXFATProbe(buffer);
return result;
}
branches/ErmaC/i386/libsaio/fake_efi.c
438438
439439
440440
441
441442
442443
443444
// Breaks booting from RAID
static const char const BOOT_UUID_PROP[] = "boot-uuid";
static char uuidStr[64];
//Facetime fix end
/*
* Get an smbios option string option to convert to EFI_CHAR16 string
branches/ErmaC/i386/boot0/boot0.s
628628
629629
630630
631
631
632632
633633
634634
......
780780
781781
782782
783
784783
785784
786785
; DS:SI = pointer to Disk Address Packet
;
; Returns:
; AH = return status (sucess is 0)
; AH = return status (success is 0)
; carry = 0 success
; 1 error
;
LogString(nv_scaler_str)
ret
%endif
;--------------------------------------------------------------------------
; NULL terminated strings.
;
branches/ErmaC/i386/boot0/Cconfig
1212
1313
1414
15
15
1616
1717
1818
......
2121
2222
2323
24
24
2525
2626
2727
config BOOT0_VERBOSE
bool "boot0 verbose support"
default n
default y
help
Say Y here if you want to enable boot0 verbose messages.
boot0 will print out status updates as it executes to
config BOOT0_UNSTRETCH
bool "boot0 unstretch support"
default y
default n
help
Say Y here if you want your Chameleon Boot Screen to be
unstretched. Requires a nVidia card, and a digital LCD
branches/ErmaC/i386/boot2/gui.c
99
1010
1111
12
1213
1314
1415
......
16041605
16051606
16061607
1607
1608
16081609
16091610
16101611
1611
1612
16121613
16131614
16141615
1615
1616
16161617
16171618
16181619
......
17621763
17631764
17641765
1765
1766
17661767
17671768
17681769
......
17841785
17851786
17861787
1787
1788
17881789
17891790
17901791
......
17961797
17971798
17981799
1799
1800
18001801
18011802
18021803
*/
#include "gui.h"
#include "term.h"
#include "appleboot.h"
#include "vers.h"
key = getchar();
if( key == kUpArrowkey )
if( key == KEY_UP )
if( currentline > 0 )
currentline--;
if( key == kDownArrowkey )
if( key == KEY_DOWN )
if( lines > ( currentline + visiblelines ) )
currentline++;
if( key == kEscapeKey || key == 'q' || key == 'Q')
if( key == KEY_ESC || key == 'q' || key == 'Q')
{
gui.infobox.draw = false;
gui.redraw = true;
switch (key)
{
case kUpArrowkey:// up arrow
case KEY_UP:// up arrow
if (infoMenuSelection > 0)
{
if(!infoMenuNativeBoot && infoMenuSelection == INFOMENU_NATIVEBOOT_END + 1)
}
break;
case kDownArrowkey:// down arrow
case KEY_DOWN:// down arrow
if (infoMenuSelection < infoMenuItemsCount - 1)
{
if(!infoMenuNativeBoot && infoMenuSelection == INFOMENU_NATIVEBOOT_START - 1)
}
break;
case kReturnKey:
case KEY_ENTER:
key = 0;
if( infoMenuSelection == MENU_SHOW_MEMORY_INFO )
showInfoBox( "Memory Info. Press q to quit.\n", getMemoryInfoString());
branches/ErmaC/i386/boot2/gui.h
3838
3939
4040
41
42
43
44
45
46
47
48
49
50
51
52
5341
5442
5543
VerticalLayout= 1
};
enum {
kBackspaceKey= 0x08,
kTabKey= 0x09,
kReturnKey= '\r',
kEscapeKey= 0x1b,
kUpArrowkey= 0x4800,
kDownArrowkey= 0x5000,
kASCIIKeyMask= 0x7f,
kF5Key= 0x3f00,
kF10Key= 0x4400
};
/*
* Menu item structure.
*/
branches/ErmaC/i386/boot2/options.c
2727
2828
2929
30
3031
3132
3233
......
235236
236237
237238
238
239
239240
240241
241242
242
243
243244
244245
245246
......
927928
928929
929930
930
931
931932
932933
933934
......
978979
979980
980981
981
982
982983
983984
984985
985
986
986987
987988
988989
......
993994
994995
995996
996
997
997998
998999
9991000
10001001
10011002
10021003
1003
1004
10041005
10051006
10061007
......
14601461
14611462
14621463
1463
1464
1464
1465
14651466
14661467
14671468
......
14761477
14771478
14781479
1479
1480
14801481
14811482
14821483
......
14941495
14951496
14961497
1497
1498
1499
1498
1499
1500
15001501
15011502
15021503
......
15101511
15111512
15121513
1513
1514
15141515
15151516
15161517
#include "fdisk.h"
#include "ramdisk.h"
#include "gui.h"
#include "term.h"
#include "embedded.h"
#include "pci.h"
static void updateBootArgs( int key )
{
key &= kASCIIKeyMask;
key = ASCII_KEY(key);
switch ( key )
{
case kBackspaceKey:
case KEY_BKSP:
if ( gBootArgsPtr > gBootArgs )
{
*--gBootArgsPtr = '\0';
}
switch (key) {
case kReturnKey:
case KEY_ENTER:
if (gui.menu.draw) {
key=0;
break;
gBIOSDev = menuBVR->biosdev;
break;
case kEscapeKey:
case KEY_ESC:
clearBootArgs();
break;
case kF5Key:
case KEY_F5:
// New behavior:
// Clear gBootVolume to restart the loop
// if the user enabled rescanning the optical drive.
}
break;
case kF10Key:
case KEY_F10:
gScanSingleDrive = false;
scanDisks(gBIOSDev, &bvCount);
gBootVolume = NULL;
clearBootArgs();
break;
case kTabKey:
case KEY_TAB:
// New behavior:
// Switch between text & graphic interfaces
// Only Permitted if started in graphics interface
printf("Enter two-digit hexadecimal boot device [%02x]: ", bootdevice);
do {
key = getchar();
switch (key & kASCIIKeyMask) {
case kBackspaceKey:
switch (ASCII_KEY(key)) {
case KEY_BKSP:
if (digitsI > 0) {
int x, y, t;
getCursorPositionAndType(&x, &y, &t);
}
break;
case kReturnKey:
case KEY_ENTER:
digits[digitsI] = '\0';
newbootdevice = strtol(digits, &end, 16);
if (end == digits && *end == '\0') {
break;
default:
if (isxdigit(key & kASCIIKeyMask) && digitsI < 2) {
putchar(key & kASCIIKeyMask);
digits[digitsI++] = key & kASCIIKeyMask;
if (isxdigit(ASCII_KEY(key)) && digitsI < 2) {
putchar(ASCII_KEY(key));
digits[digitsI++] = ASCII_KEY(key);
} else {
// TODO: Beep or something
}
bool promptForRescanOption(void)
{
printf("\nWould you like to enable media rescan option?\nPress ENTER to enable or any key to skip.\n");
if (getchar() == kReturnKey) {
if (getchar() == KEY_ENTER) {
return true;
} else {
return false;
branches/ErmaC/i386/modules/MakeInc.dir
77
88
99
10
1110
1211
1312
IMGSKELROOT = $(SRCROOT)/imgskel
CDBOOT = ${IMGROOT}/usr/standalone/i386/cdboot
ifeq ($(BUILT_IN),yes)
override OBJROOT = $(SRCROOT)/obj/i386/boot2_modules/$(DIR)
override SYMROOT = $(SRCROOT)/obj/i386/
branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src/mac-es.slt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# Keycode Normal Shift Alt Shift+Alt
# 1rst Row
keycode 0x02 = 1 VoidSymbol
keycode 0x03 = 2 !
keycode 0x04 = 3 #
keycode 0x05 = 4 $
keycode 0x06 = 5 % [
keycode 0x07 = 6 / \
keycode 0x08 = 7 & |
keycode 0x09 = 8 *
keycode 0x0a = 9 (
keycode 0x0b = 0 )
keycode 0x0c = minus underscore minus
keycode 0x0d = = +
keycode 0x0e = Backspace
# 2nd Row
keycode 0x0f = Tab
keycode 0x10 = q Q
keycode 0x11 = w W
keycode 0x12 = e E
keycode 0x13 = r R
keycode 0x14 = t T
keycode 0x15 = y Y
keycode 0x16 = u U
keycode 0x17 = i I ^
keycode 0x18 = o O
keycode 0x19 = p P
keycode 0x1a = VoidSymbol VoidSymbol
keycode 0x1b = ` VoidSymbol |
# 3rd Row
keycode 0x1e = a A
keycode 0x1f = s S
keycode 0x20 = d D
keycode 0x21 = f F
keycode 0x22 = g G @ ,
keycode 0x23 = h H
keycode 0x24 = j J
keycode 0x25 = k K
keycode 0x26 = l L
keycode 0x27 = VoidSymbol VoidSymbol ~
keycode 0x28 = ; :
keycode 0x2b = ' " ] }
# 4th Row
keycode 0x29 = < > [ {
keycode 0x2c = z Z
keycode 0x2d = x X
keycode 0x2e = c C
keycode 0x2f = v V
keycode 0x30 = b B
shift alt keycode 0x30 = <
keycode 0x31 = n N > >
keycode 0x32 = m M
keycode 0x33 = , VoidSymbol
keycode 0x34 = . ?
keycode 0x35 = VoidSymbol VoidSymbol
branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src/mac-fr.slt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# Keycode Normal Shift Alt Shift+Alt
# 1ère Ligne
keycode 0x02 = & 1
keycode 0x03 = VoidSymbol 2
keycode 0x04 = " 3
keycode 0x05 = ' 4
keycode 0x06 = ( 5 { [
keycode 0x07 = VoidSymbol 6
keycode 0x08 = VoidSymbol 7
keycode 0x09 = ! 8
keycode 0x0a = VoidSymbol 9
keycode 0x0b = VoidSymbol 0
keycode 0x0c = ) VoidSymbol } ]
keycode 0x0d = - _
keycode 0x0e = Backspace
# 2ème Ligne
keycode 0x0f = Tab
keycode 0x10 = a A
keycode 0x11 = z Z
keycode 0x12 = e E
keycode 0x13 = r R
keycode 0x14 = t T
keycode 0x15 = y Y
keycode 0x16 = u U
keycode 0x17 = i I
keycode 0x18 = o O
keycode 0x19 = p P
keycode 0x1a = ^ VoidSymbol
keycode 0x1b = $ *
# 3ème Ligne
keycode 0x1e = q Q
keycode 0x1f = s S
keycode 0x20 = d D
keycode 0x21 = f F
keycode 0x22 = g G
keycode 0x23 = h H
keycode 0x24 = j J
keycode 0x25 = k K
keycode 0x26 = l L
shift alt keycode 0x26 = |
keycode 0x27 = m M
keycode 0x28 = VoidSymbol %
keycode 0x2b = ` VoidSymbol @ #
# 4ème Ligne
keycode 0x29 = < >
keycode 0x2c = w W
keycode 0x2d = x X
keycode 0x2e = c C
keycode 0x2f = v V
keycode 0x30 = b B
keycode 0x31 = n N ~
keycode 0x32 = , ?
keycode 0x33 = ; .
keycode 0x34 = : /
shift alt keycode 0x34 = \
keycode 0x35 = = +
branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src/mac-se.slt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Keycode Normal Shift Alt Shift+Alt
# 1rst Row
keycode 0x02 = 1 !
keycode 0x03 = 2 "
keycode 0x04 = 3 #
keycode 0x05 = 4 VoidSymbol $
keycode 0x06 = 5 %
keycode 0x07 = 6 &
keycode 0x08 = 7 / | \
keycode 0x09 = 8 ( [ {
keycode 0x0a = 9 ) ] }
keycode 0x0b = 0 =
keycode 0x0c = + ?
keycode 0x0d = VoidSymbol `
keycode 0x0e = Backspace
# 2nd Row
keycode 0x0f = Tab
keycode 0x10 = q Q
keycode 0x11 = w W
keycode 0x12 = e E
keycode 0x13 = r R
keycode 0x14 = t T
keycode 0x15 = y Y
keycode 0x16 = u U
keycode 0x17 = i I ^
keycode 0x18 = o O
keycode 0x19 = p P
keycode 0x1a = VoidSymbol VoidSymbol VoidSymbol
keycode 0x1b = VoidSymbol ^ ~ ^
# 3rd Row
keycode 0x1e = a A
keycode 0x1f = s S
keycode 0x20 = d D
keycode 0x21 = f F
keycode 0x22 = g G ,
keycode 0x23 = h H
keycode 0x24 = j J
keycode 0x25 = k K
keycode 0x26 = l L
keycode 0x27 = VoidSymbol VoidSymbol
keycode 0x28 = VoidSymbol VoidSymbol
keycode 0x2b = ' * @ '
# 4th Row
keycode 0x29 = < > [ {
keycode 0x2c = z Z
keycode 0x2d = x X
keycode 0x2e = c C
keycode 0x2f = v V
keycode 0x30 = b B
keycode 0x31 = n N
keycode 0x32 = m M
keycode 0x33 = , ;
keycode 0x34 = . :
keycode 0x35 = minus underscore
branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src/mac-de.slt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Keycode Normal Shift Alt Shift+Alt
# 1rst Row
keycode 0x02 = 1 !
keycode 0x03 = 2 "
keycode 0x04 = 3 VoidSymbol
keycode 0x05 = 4 $
keycode 0x06 = 5 % [
keycode 0x07 = 6 & ]
keycode 0x08 = 7 / |
keycode 0x09 = 8 ( {
keycode 0x0a = 9 ) }
keycode 0x0b = 0 =
keycode 0x0c = VoidSymbol ?
keycode 0x0d = VoidSymbol VoidSymbol
keycode 0x0e = Backspace
# 2nd Row
keycode 0x0f = Tab
keycode 0x10 = q Q
keycode 0x11 = w W
keycode 0x12 = e E
keycode 0x13 = r R
keycode 0x14 = t T
keycode 0x15 = y Y
keycode 0x16 = u U
keycode 0x17 = i I
keycode 0x18 = o O
keycode 0x19 = p P
keycode 0x1a = VoidSymbol VoidSymbol
keycode 0x1b = + *
# 3rd Row
keycode 0x1e = a A
keycode 0x1f = s S
keycode 0x20 = d D
keycode 0x21 = f F
keycode 0x22 = g G
keycode 0x23 = h H
keycode 0x24 = j J
keycode 0x25 = k K
keycode 0x26 = l L
keycode 0x27 = VoidSymbol VoidSymbol
keycode 0x28 = VoidSymbol VoidSymbol
keycode 0x2b = # '
# 4th Row
keycode 0x29 = < >
keycode 0x2c = y Y
keycode 0x2d = x X
keycode 0x2e = c C
keycode 0x2f = v V
keycode 0x30 = b B
keycode 0x31 = n N
keycode 0x32 = m M
keycode 0x33 = , ;
keycode 0x34 = . :
keycode 0x35 = minus underscore
branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src/pc-fr.slt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Keycode Normal Shift Alt Shift+Alt
# 1ère Ligne
keycode 0x29 = < >
keycode 0x02 = & 1
keycode 0x03 = VoidSymbol 2 ~
keycode 0x04 = " 3 #
keycode 0x05 = ' 4 {
keycode 0x06 = ( 5 [
keycode 0x07 = minus 6 |
keycode 0x08 = VoidSymbol 7 `
keycode 0x09 = underscore 8 \
keycode 0x0a = VoidSymbol 9 ^
keycode 0x0b = VoidSymbol 0 @
keycode 0x0c = ) VoidSymbol ]
keycode 0x0d = = + }
keycode 0x0e = Backspace
# 2ème Ligne
keycode 0x0f = Tab
keycode 0x10 = a A
keycode 0x11 = z Z
keycode 0x12 = e E
keycode 0x13 = r R
keycode 0x14 = t T
keycode 0x15 = y Y
keycode 0x16 = u U
keycode 0x17 = i I
keycode 0x18 = o O
keycode 0x19 = p P
keycode 0x1a = ^ VoidSymbol
keycode 0x1b = $ VoidSymbol
# 3ème Ligne
keycode 0x1e = q Q
keycode 0x1f = s S
keycode 0x20 = d D
keycode 0x21 = f F
keycode 0x22 = g G
keycode 0x23 = h H
keycode 0x24 = j J
keycode 0x25 = k K
keycode 0x26 = l L
keycode 0x27 = m M
keycode 0x28 = VoidSymbol %
keycode 0x2b = * VoidSymbol
# 4ème Ligne
keycode 0x2c = w W
keycode 0x2d = x X
keycode 0x2e = c C
keycode 0x2f = v V
keycode 0x30 = b B
keycode 0x31 = n N
keycode 0x32 = , ?
keycode 0x33 = ; .
keycode 0x34 = : /
keycode 0x35 = ! VoidSymbol
branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src/mac-it.slt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# Keycode Normal Shift Alt Shift+Alt
# Prima riga
keycode 0x02 = ampersand one
keycode 0x03 = quotedbl two
keycode 0x04 = apostrophe three grave
keycode 0x05 = parenleft four braceleft bracketleft
keycode 0x06 = VoidSymbol five
keycode 0x07 = VoidSymbol six
keycode 0x08 = parenright seven braceright bracketright
keycode 0x09 = VoidSymbol eight
keycode 0x0a = VoidSymbol nine
keycode 0x0b = VoidSymbol zero
keycode 0x0c = minus underscore
keycode 0x0d = equal plus
keycode 0x0e = Backspace
# Seconda riga
keycode 0x0f = Tab
keycode 0x10 = q Q
keycode 0x11 = z Z
keycode 0x12 = e E
keycode 0x13 = r R
keycode 0x14 = t T
keycode 0x15 = y Y
keycode 0x16 = u U
keycode 0x17 = i I
keycode 0x18 = o O
keycode 0x19 = p P
keycode 0x1a = VoidSymbol ^
keycode 0x1b = $ *
# Terza riga
keycode 0x1e = a A
keycode 0x1f = s S
keycode 0x20 = d D
keycode 0x21 = f F
keycode 0x22 = g G
keycode 0x23 = h H
keycode 0x24 = j J
keycode 0x25 = k K
keycode 0x26 = l L
keycode 0x27 = m M
keycode 0x28 = VoidSymbol %
keycode 0x2b = ` VoidSymbol @ #
# Quarta riga
keycode 0x29 = < >
keycode 0x2c = w W
keycode 0x2d = x X
keycode 0x2e = c C
keycode 0x2f = v V
keycode 0x30 = b B
keycode 0x31 = n N ~
keycode 0x32 = , ?
keycode 0x33 = ; .
shift alt keycode 0x33 = %
keycode 0x34 = : / | \
keycode 0x35 = VoidSymbol !
branches/ErmaC/i386/modules/Keylayout/layouts/layouts-src/README
1
2
You can create your own keylayout file with the cham-mklayout command with a
source file (*.slt) as input.
branches/ErmaC/i386/modules/Keylayout/layouts/cham-mklayout.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
/*
* cham-mklayout.c
* Chameleon
*
* Created by JrCs on 30/08/11.
* Copyright 2011. All rights reserved.
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <getopt.h>
#include <errno.h>
#include "stdint.h"
#include "term.h"
#include "keylayout.h"
#define PACKAGE_NAME"chameleon"
#define PROGRAM_VERSION"1.0"
static struct keyboard_layout default_layout = {
.keyboard_map = {
/* 0x00 */ 0, KEY_ESC, '1', '2', '3', '4', '5', '6',
/* 0x08 */ '7', '8', '9', '0', '-', '=', KEY_BKSP, KEY_TAB,
/* 0x10 */ 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i',
/* 0x18 */ 'o', 'p', '[', ']', KEY_ENTER, 0, 'a', 's',
/* 0x20 */ 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';',
/* 0x28 */ '\'', '`', 0, '\\', 'z', 'x', 'c', 'v',
/* 0x30 */ 'b', 'n', 'm', ',', '.', '/', 0, 0
},
.keyboard_map_shift = {
/* 0x00 */ 0, KEY_ESC, '!', '@', '#', '$', '%', '^',
/* 0x08 */ '&', '*', '(', ')', '_', '+', KEY_BKSP, 0,
/* 0x10 */ 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I',
/* 0x18 */ 'O', 'P', '{', '}', KEY_ENTER, 0, 'A', 'S',
/* 0x20 */ 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':',
/* 0x28 */ '"', '~', 0, '|', 'Z', 'X', 'C', 'V',
/* 0x30 */ 'B', 'N', 'M', '<', '>', '?', 0, 0,
},
.keyboard_map_alt = {
/* 0x00 */ 0, KEY_NOECHO, 0, 0, 0, 0, 0, 0,
/* 0x08 */ 0, 0, 0, 0, 0, 0, KEY_NOECHO, KEY_NOECHO,
/* 0x10 */ 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x18 */ 0, 0, KEY_NOECHO, KEY_NOECHO, KEY_NOECHO, KEY_NOECHO, 0, 0,
/* 0x20 */ 0, 0, 0, 0, 0, 0, 0, KEY_NOECHO,
/* 0x28 */ KEY_NOECHO, KEY_NOECHO, KEY_NOECHO, KEY_NOECHO, 0, 0, 0, 0,
/* 0x30 */ 0, 0, 0, KEY_NOECHO, KEY_NOECHO, KEY_NOECHO, KEY_NOECHO, KEY_NOECHO,
},
};
const char* program_name;
static struct option options[] = {
{"input", required_argument, 0, 'i'},
{"output", required_argument, 0, 'o'},
{"keysyms", no_argument, 0, 'k'},
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'V'},
{0, 0, 0, 0}
};
struct hash
{
const char *keysym;
int code;
};
static struct hash keysym_to_code[] = {
{"BackSpace",KEY_BKSP},
{"Tab",KEY_TAB},
{"Linefeed",0x000a},
{"Space",0x0020},
{"Exclam",0x0021},
{"QuoteDbl",0x0022},
{"NumberSign",0x0023},
{"Dollar",0x0024},
{"Percent",0x0025},
{"Ampersand",0x0026},
{"Apostrophe",0x0027},
{"Parenleft",0x0028},
{"Parenright",0x0029},
{"Asterisk",0x002a},
{"Plus",0x002b},
{"Comma",0x002c},
{"Minus",0x002d},
{"Period",0x002e},
{"Slash",0x002f},
{"Zero",0x0030},
{"One",0x0031},
{"Two",0x0032},
{"Three",0x0033},
{"Four",0x0034},
{"Five",0x0035},
{"Six",0x0036},
{"Seven",0x0037},
{"Eight",0x0038},
{"Nine",0x0039},
{"Colon",0x003a},
{"SemiColon",0x003b},
{"Less",0x003c},
{"Equal",0x003d},
{"Greater",0x003e},
{"Question",0x003f},
{"At",0x0040},
{"BracketLeft", 0x005b},
{"Backslash",0x005c},
{"BracketRight",0x005d},
{"AsciiCircum", 0x005e},
{"Underscore",0x005f},
{"Grave",0x0060},
{"BraceLeft",0x007b},
{"Bar",0x007c},
{"BraceRight",0x007d},
{"AsciiTilde",0x007e},
{"Enter",KEY_ENTER},
{"Escape",KEY_ESC},
{"PrintScreen",KEY_PRTSC},
{"Left",KEY_LEFT},
{"Right",KEY_RIGHT},
{"Up",KEY_UP},
{"Down",KEY_DOWN},
{"Home",KEY_HOME},
{"End",KEY_END},
{"Center",KEY_CENTER},
{"Insert",KEY_INS},
{"Delete",KEY_DEL},
{"PageUp",KEY_PGUP},
{"PageDown",KEY_PGDN},
{"F1",KEY_F1},
{"F2",KEY_F2},
{"F3",KEY_F3},
{"F4",KEY_F4},
{"F5",KEY_F5},
{"F6",KEY_F6},
{"F7",KEY_F7},
{"F8",KEY_F8},
{"F9",KEY_F9},
{"F10",KEY_F10},
{"F11",KEY_F11},
{"F12",KEY_F12},
{"VoidSymbol",KEY_NOECHO},
{NULL, 0}
};
static void usage (int status) {
if (status)
fprintf (stderr, "Try `%s --help' for more information.\n", program_name);
else
printf ("\
Usage: %s [OPTIONS]\n\
-i, --inputset input filename.\n\
-o, --outputset output filename.\n\
-k, --keysymslist recognized keysyms.\n\
-h, --helpdisplay this message and exit.\n\
-V, --versionprint version information and exit.\n\
\n", program_name);
exit (status);
}
static void list_keysyms (void) {
int i;
for (i = 0; keysym_to_code[i].keysym != NULL; i++) {
printf("0x%04x\t %s\n", keysym_to_code[i].code, keysym_to_code[i].keysym);
}
}
static int hash_lookup (const char *keysym, unsigned int *code) {
int i;
for (i = 0; keysym_to_code[i].keysym != NULL; i++) {
if (strcasecmp (keysym, keysym_to_code[i].keysym) == 0) {
*code = keysym_to_code[i].code;
return 0;
}
}
return -1;
}
static int parse_keysym(const char* str, unsigned int *code) {
// Single character
if (strlen(str) == 1) {
*code=(unsigned char)(str[0]);
if (*code > ASCII_KEY_MASK)
return -1;
return 0;
}
// Hex character code
if (sscanf(str, "0x%x", code))
return 0;
// Keysym
if (hash_lookup(str, code) == 0)
return 0;
return -1;
}
int parse_scancode(int linenum, char* code, unsigned int* scancode) {
char* tmp;
errno = 0; // clear errno
float parse_value = strtof(code, &tmp);
int rest = strlen(code) - ((void*) tmp - (void*)code);
if (rest != 0 || errno != 0) {
printf("Ignoring line %d: invalid scancode `%s'\n", linenum, code);
return -1;
}
*scancode = parse_value;
// Only the first scancodes can be translated
if (*scancode >= KEYBOARD_MAP_SIZE) {
printf("Ignoring line %d: invalid scancode 0x%02x. Scancode must be <= 0x%02x.\n", linenum, *scancode,
KEYBOARD_MAP_SIZE);
return -1;
}
return 0;
}
void assign_keycode(int linenum, unsigned int scancode, const char* arg, uint16_t* map) {
unsigned int value;
if (parse_keysym(arg, &value) == -1) {
printf("Warning line %d (keycode 0x%02x): invalid symbol %s (must be a true ascii character)\n",
linenum, scancode, arg);
value = KEY_NOECHO; // VoidSymbol
}
map[scancode] = value;
}
struct keyboard_layout* create_keylayout(FILE* in) {
char line[128], code[sizeof(line)];
char arg1[sizeof(line)], arg2[sizeof(line)], arg3[sizeof(line)],
arg4[sizeof(line)];
int n, linenum = 0;
unsigned int scancode;
struct keyboard_layout* new_layout= malloc(sizeof(*new_layout));
if (!new_layout)
return NULL;
// Initialize new keybord layout
memcpy(new_layout, &default_layout, sizeof(*new_layout));
while(fgets(line, sizeof(line), in)) {
linenum++;
n = sscanf (line, "keycode %s = %s %s %s %s", code, arg1, arg2, arg3, arg4);
if (n > 1) {
if (parse_scancode(linenum, code, &scancode) == -1)
continue;
if (n >= 2)
assign_keycode(linenum, scancode, arg1,
new_layout->keyboard_map);
if (n >= 3)
assign_keycode(linenum, scancode, arg2,
new_layout->keyboard_map_shift);
if (n >= 4)
assign_keycode(linenum, scancode, arg3,
new_layout->keyboard_map_alt);
if (n >= 5)
assign_keycode(linenum, scancode, arg4,
new_layout->keyboard_map_shift_alt);
} else if (sscanf (line, "shift keycode %s = %s", code, arg1) == 2) {
if (parse_scancode(linenum, code, &scancode) == -1)
continue;
assign_keycode(linenum, scancode, arg1,
new_layout->keyboard_map_shift);
} else if (sscanf (line, "alt keycode %s = %s", code, arg1) == 2) {
if (parse_scancode(linenum, code, &scancode) == -1)
continue;
assign_keycode(linenum, scancode, arg1,
new_layout->keyboard_map_alt);
} else if (sscanf (line, "shift alt keycode %s = %s", code, arg1) == 2) {
if (parse_scancode(linenum, code, &scancode) == -1)
continue;
assign_keycode(linenum, scancode, arg1,
new_layout->keyboard_map_shift_alt);
}
}
return new_layout;
}
void write_layout(struct keyboard_layout* layout, FILE* out) {
// Create the header
uint32_t version = KEYBOARD_LAYOUTS_VERSION;
fwrite(KEYBOARD_LAYOUTS_MAGIC, KEYBOARD_LAYOUTS_MAGIC_SIZE, 1, out);
fwrite(&version, 1, sizeof(version), out);
// Seek to start of layout
fseek(out, KEYBOARD_LAYOUTS_MAP_OFFSET, SEEK_SET);
// Write layout
fwrite(layout, sizeof(*layout), 1, out);
}
void set_program_name(const char* arg) {
const char* last_slash;
last_slash = strrchr(arg, '/');
program_name = (last_slash != NULL) ? last_slash + 1 : arg;
}
int main (int argc, char *argv[]) {
int ch;
char *infile_name = NULL;
char *outfile_name = NULL;
FILE *in, *out;
set_program_name (argv[0]);
/* Check for options. */
while ((ch = getopt_long (argc, argv, "i:o:hkV", options, 0)) != -1) {
switch (ch) {
case 'h':
usage (0);
break;
case 'k':
list_keysyms();
exit(0);
break;
case 'i':
infile_name = optarg;
break;
case 'o':
outfile_name = optarg;
break;
case 'V':
printf ("%s v%s (%s)\n", program_name, PROGRAM_VERSION, PACKAGE_NAME);
return 0;
default:
usage (1);
break;
}
}
if (infile_name == NULL) {
fprintf(stderr, "You must specify an input file\n");
usage(1);
}
if (outfile_name == NULL) {
fprintf(stderr, "You must specify an output file\n");
usage(1);
}
in = fopen (infile_name, "r");
if (!in) {
fprintf(stderr, "Couldn't open input file `%s': %s\n",
infile_name, strerror (errno));
exit(1);
}
out = fopen (outfile_name, "wb");
if (!out) {
fprintf(stderr, "Couldn't open output file `%s': %s\n",
outfile_name, strerror (errno));
exit(1);
}
struct keyboard_layout* new_layout = create_keylayout(in);
if (new_layout)
write_layout(new_layout, out);
fclose(out);
fclose(in);
return 0;
}
branches/ErmaC/i386/modules/Keylayout/layouts/Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
SRCROOT = $(abspath $(CURDIR)/../../../..)
OBJROOT = $(SRCROOT)/obj/i386/util
SYMROOT = $(SRCROOT)/sym/i386
DSTROOT = $(SRCROOT)/dst/i386
DOCROOT = $(SRCROOT)/doc
KEYMAPSROOT = $(SRCROOT)/Keymaps
INC = -I$(SRCROOT)/i386/libsaio/ -I. -I..
OBJS = cham-mklayout.o32 cham-mklayout.o64
OBJS := $(addprefix $(OBJROOT)/, $(OBJS))
MKLAYOUT = cham-mklayout
MKLAYOUT := $(addprefix $(SYMROOT)/, $(MKLAYOUT))
PROGRAMS = $(MKLAYOUT)
LAYOUTS_SRC_DIR = layouts-src
KEYBOARD_LAYOUTS = $(patsubst $(LAYOUTS_SRC_DIR)/%.slt, $(KEYMAPSROOT)/%.lyt, \
$(wildcard $(LAYOUTS_SRC_DIR)/*.slt))
DIRS_NEEDED = $(KEYMAPSROOT)
include ${SRCROOT}/Make.rules
all: $(DIRS_NEEDED) $(OBJROOT) $(SYMROOT) keymaps
$(PROGRAMS): $(OBJS)
@echo "\t[LD32] $(@F)_32"
@$(CC) $(CFLAGS) $(LDFLAGS) $(DEFINES) $(INCLUDES) -arch i386 \
-o $(SYMROOT)/$(@F)_32 $(OBJROOT)/$(@F).o32
@echo "\t[LD64] $(@F)_64"
@$(CC) $(CFLAGS) $(LDFLAGS) $(DEFINES) $(INCLUDES) -arch x86_64 \
-o $(SYMROOT)/$(@F)_64 $(OBJROOT)/$(@F).o64
@echo "\t[LIPO] $(@F)"
@lipo -create -arch i386 $(SYMROOT)/$(@F)_32 -arch x86_64 $(SYMROOT)/$(@F)_64 \
-output $(SYMROOT)/$(@F)
@$(RM) $(SYMROOT)/$(@F)_32 $(SYMROOT)/$(@F)_64
keymaps: $(KEYBOARD_LAYOUTS)
$(KEYMAPSROOT)/%.lyt: $(LAYOUTS_SRC_DIR)/%.slt $(MKLAYOUT)
@echo "\t[LAYOUT] Creating keyboard layout: $*"
@$(MKLAYOUT) -i $< -o $@
#.PHONY layouts
clean-local:
@for o in $(OBJS); do if [ -f "$${o}" ];then echo "\t[RM] $${o}"; fi; done
@for p in $(PROGRAMS); do if [ -f "$${p}" ];then echo "\t[RM] $${p}"; fi; done
@for k in $(KEYBOARD_LAYOUTS); do if [ -f "$${k}" ];then echo "\t[RM] $${k}"; fi; done
@$(RM) -f $(PROGRAMS) $(OBJS)
distclean-local:
@if [ -d "$(KEYMAPSROOT)" ];then echo "\t[RMDIR] $(KEYMAPSROOT)"; fi
@$(RM) -rf $(KEYMAPSROOT)
branches/ErmaC/i386/modules/Keylayout/Keylayout.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
* Keymapper.c
* Chameleon
*
* Created by JrCs on 28/08/11.
* Copyright 2011. All rights reserved.
*
*/
#include "libsaio.h"
#include "term.h"
#include "modules.h"
#include "Keylayout.h"
#include "bootstruct.h"
#define kKeyboardLayout "KeyboardLayout"
struct keyboard_layout *current_layout = NULL;
int getchar_replacement() {
int code = bgetc();
int status = readKeyboardShiftFlags();
uint8_t scancode = code >> 8;
// Special scancode sent when alt + some keys are pressed
if (scancode >= 0x78 && scancode <= 0x83)
scancode -= 0x76;
if (scancode < KEYBOARD_MAP_SIZE && !(status & (STATUS_LCTRL| STATUS_RCTRL))) {
int key;
if ((status & (STATUS_LALT|STATUS_RALT)) &&
(status & (STATUS_LSHIFT|STATUS_RSHIFT|STATUS_CAPS))) {
key=current_layout->keyboard_map_shift_alt[scancode];
}
else if (status & (STATUS_LSHIFT|STATUS_RSHIFT|STATUS_CAPS))
key=current_layout->keyboard_map_shift[scancode];
else if (status & (STATUS_LALT|STATUS_RALT))
key=current_layout->keyboard_map_alt[scancode];
else
key=current_layout->keyboard_map[scancode];
if (key != 0) // do the mapping
code = key;
}
if (ASCII_KEY(code) != 0) // if ascii not null return it
code = ASCII_KEY(code);
//printf("Code: %04x\n",code);
return (code);
}
static uint32_t load_keyboard_layout_file(const char *filename) {
int fd;
char magic[KEYBOARD_LAYOUTS_MAGIC_SIZE];
uint32_t version;
if ((fd = open_bvdev("bt(0,0)", filename, 0)) < 0) {
goto fail; // fail
}
if (read(fd, magic, sizeof(magic)) != sizeof(magic)) {
printf("Can't find magic in keyboard layout file: %s\n", filename);
goto fail;
}
if (memcmp (magic, KEYBOARD_LAYOUTS_MAGIC, KEYBOARD_LAYOUTS_MAGIC_SIZE) != 0) {
printf("Invalid magic code in keyboard layout file: %s\n", filename);
goto fail;
}
if (read(fd, (char*) &version, sizeof(version)) != sizeof(version)) {
printf("Can't get version of keyboard layout file: %s\n", filename);
goto fail;
}
if (version != KEYBOARD_LAYOUTS_VERSION) {
verbose("Bad version for keyboard layout file %s expected v%d found v%d\n",
filename, KEYBOARD_LAYOUTS_VERSION, version);
goto fail;
}
if (current_layout)
free(current_layout);
current_layout = malloc(sizeof(*current_layout));
if (!current_layout)
goto fail;
b_lseek(fd, KEYBOARD_LAYOUTS_MAP_OFFSET, 0);
if (read(fd, (char*) current_layout, sizeof(*current_layout)) != sizeof(*current_layout)) {
printf("Wrong keyboard layout file %s size\n", filename);
goto fail;
}
close(fd);
return 1;
fail:
if (current_layout) {
free(current_layout);
current_layout = NULL;
}
return 0;
}
void Keylayout_start()
{
char layoutPath[512];
const char*val;
intlen;
if (getValueForKey("KeyLayout", &val, &len, &bootInfo->chameleonConfig)) {
sprintf(layoutPath, "/Extra/Keymaps/%s", val);
// Add the extension if needed
if (len <= 4 || strcmp(val+len-4,".lyt") != 0)
strncat(layoutPath, ".lyt", sizeof(layoutPath));
if (!load_keyboard_layout_file(layoutPath)) {
printf("Can't load %s keyboard layout file. Keylayout will not be used !\n",
layoutPath);
sleep(2);
} else if (!replace_function("_getchar", &getchar_replacement)) {
printf("Can't replace function getchar: Keylayout module can't be used !\n");
sleep(2);
}
}
}
branches/ErmaC/i386/modules/Keylayout/Cconfig
1
2
3
4
5
6
7
8
9
10
#
# Chameleon Modules
#
config KEYLAYOUT_MODULE
tristate "Keylayout Module"
default m
---help---
Say Y here if you want to enable the use of this module.
branches/ErmaC/i386/modules/Keylayout/Readme.txt
1
2
3
Module:Keylayout
Description: This module permits the user to define the keyboard key mappings
Dependencies: none
branches/ErmaC/i386/modules/Keylayout/Keylayout.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*
* Keylayout.h
* Chameleon
*
* Created by JrCs on 28/8/11.
* Copyright 2011. All rights reserved.
*
*/
#ifndef __KEYLAYOUT_H
#define __KEYLAYOUT_H
#define KEYBOARD_LAYOUTS_MAGIC "CHAMLAYT"
#define KEYBOARD_LAYOUTS_MAGIC_SIZE (sizeof(KEYBOARD_LAYOUTS_MAGIC) - 1)
#define KEYBOARD_LAYOUTS_VERSION 3
#define KEYBOARD_LAYOUTS_MAP_OFFSET 0x10 // 0x10 offset of the map in layout file
#define KEYBOARD_MAP_SIZE 0x38
struct keyboard_layout
{
uint16_t keyboard_map[KEYBOARD_MAP_SIZE];
uint16_t keyboard_map_shift[KEYBOARD_MAP_SIZE];
uint16_t keyboard_map_alt[KEYBOARD_MAP_SIZE];
uint16_t keyboard_map_shift_alt[KEYBOARD_MAP_SIZE];
};
#endif
branches/ErmaC/i386/modules/Keylayout/Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
MODULE_NAME = Keylayout
MODULE_DESCRIPTION = This module provides keylayout functionality
MODULE_AUTHOR = "JrCs"
MODULE_VERSION = "1.2.0"
MODULE_COMPAT_VERSION = "1.2.0"
MODULE_START = $(MODULE_NAME)_start
MODULE_DEPENDENCIES =
DIR = Keylayout
SUBDIRS += layouts
MODULE_OBJS = Keylayout.o
include ../MakeInc.dir
branches/ErmaC/i386/modules/Cconfig
77
88
99
10
10
11
source "i386/modules/klibc/Cconfig"
source "i386/modules/uClibcxx/Cconfig"
source "i386/modules/HelloWorld/Cconfig"
endmenu
source "i386/modules/Keylayout/Cconfig"
endmenu
branches/ErmaC/i386/modules/Makefile
2929
3030
3131
32
33
34
35
3236
3337
3438
SUBDIRS += HelloWorld
endif
ifdef CONFIG_KEYLAYOUT_MODULE
SUBDIRS += Keylayout
endif
CFLAGS= -O3 $(MORECPP) -arch i386 -g -static
DEFINES=
CONFIG = hd
branches/ErmaC/package/Scripts/EFI/postinstall
303303
304304
305305
306
306
307307
308308
309309
......
311311
312312
313313
314
314
315315
316316
317317
if [ ${disksignature} == "00000000" ]; then
echo "Executing command: fdisk -u -f "${osxvolume}/usr/standalone/i386/${diskloader}" -y ${bootdisk}"
fdisk -u -f "${osxvolume}/usr/standalone/i386/${diskloader}" -y ${bootdisk} #Azipkg
fdisk -u -f "${osxvolume}/usr/standalone/i386/${diskloader}" -y ${bootdisk}
else
#---------------------------------------------------------------------
# If it exists then Windows is also installed on the HDD and we need to write boot0hfs
#Azipkg: diskloader=boot0 ??? boot0hfs/boot0md - remenber this is for GPT!!
echo "Executing command: fdisk -u -f "${osxvolume}/usr/standalone/i386/${diskloader}" -y ${bootdisk}"
fdisk -u -f "${osxvolume}/usr/standalone/i386/${diskloader}" -y ${bootdisk} #Azipkg
fdisk -u -f "${osxvolume}/usr/standalone/i386/${diskloader}" -y ${bootdisk}
fi
else
echo "Diskupdate is false, so no stage 0 file was written"
branches/ErmaC/package/Scripts/Keymaps/postinstall.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/python
# Script to add Graphics_Mode for Chameleon boot loaders
import sys
import os
import shutil
vol = str(sys.argv[3])
boot = "/Extra/org.chameleon.Boot.plist"
plist = vol + boot
if not os.path.exists(plist):
shutil.copy('/Library/Preferences/SystemConfiguration/com.apple.Boot.plist', plist)
infile = open(plist, "r")
# check if Graphics_Mode has been written or not
KeyLayoutCheck = False
body = ""
for line in infile:
# if we finish the tags and haven't written KeyLayout Yet
if "</dict>" in line and KeyLayoutCheck == False:
line = " <key>KeyLayout</key>\n"
line += " <string>@@KEYMAP@@</string>\n"
line += "</dict>\n"
KeyLayoutCheck = True
body += line
infile.close()
outfile = open(plist, "w")
outfile.write(body)
outfile.close()
branches/ErmaC/package/Resources/fr.lproj/Welcome.rtfd/TXT.rtf
1818
1919
2020
21
21
2222
23
23
2424
2525
2626
2727
2828
29
29
3030
3131
3232
3333
3434
35
35
36
\fs26 \cf0 \
\pard\ri0\ql\qnatural
\cf0 \
Developeurs : %DEVELOP%\
D\'e9veloppeurs : %DEVELOP%\
\
Remerciements : %CREDITS%\
Remerciements \'e0 : %CREDITS%\
\pard\tx360\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\b0\fs30 \cf0 \
\pard\ri0\ql\qnatural
\b\fs26 \cf0 Pkg : %PKGDEV%
\b\fs26 \cf0 Paquet r\'e9alis\'e9 par : %PKGDEV%
\b0\fs30 \
\pard\tx360\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\cf0 \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\fs26 \cf0 Copyright \'a9 2011}
\fs26 \cf0 Copyright \'a9 2011
\b \cf3 Traduit par : jrcs}
branches/ErmaC/package/Resources/fr.lproj/Conclusion.rtfd/TXT.rtf
1616
1717
1818
19
19
2020
2121
2222
\fs26 \cf0 \
\pard\ri0\qc
\fs50 \cf3 Installation compl\'e8te!
\fs50 \cf3 Installation Termin\'e9e !
\b0\fs26 \cf0 \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
branches/ErmaC/package/buildpkg.sh
120120
121121
122122
123
123124
124125
125126
......
182183
183184
184185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
185207
186208
187209
......
264286
265287
266288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
267309
268310
269311
......
283325
284326
285327
286
328
287329
288330
289331
......
309351
310352
311353
312
354
313355
314356
315357
# NVIDIAGraphicsEnabler.dylib #
# Resolution.dylib #
# uClibcxx.dylib #
# Keylayout.dylib #
###############################
if [ "$(ls -A "${1%/*}/i386/modules")" ]; then
{
}
fi
# -
if [ -e ${1%/*}/i386/modules/Keylayout.dylib ]; then
{
mkdir -p ${1}/Keylayout/Root/Extra/{modules,Keymaps}
mkdir -p ${1}/Keylayout/Root/usr/bin
layout_src_dir="${1%/sym/*}/i386/modules/Keylayout/layouts/layouts-src"
if [ -d "$layout_src_dir" ];then
# Create a tar.gz from layout sources
(cd "$layout_src_dir"; \
tar czf "${1}/Keylayout/Root/Extra/Keymaps/layouts-src.tar.gz" README *.slt)
fi
# Adding module
ditto --noextattr --noqtn ${1%/*}/i386/modules/Keylayout.dylib ${1}/Keylayout/Root/Extra/modules
# Adding Keymaps
ditto --noextattr --noqtn ${1%/sym/*}/Keymaps ${1}/Keylayout/Root/Extra/Keymaps
# Adding tools
ditto --noextattr --noqtn ${1%/*}/i386/cham-mklayout ${1}/Keylayout/Root/usr/bin
echo "[BUILD] Keylayout "
buildpackage "${1}/Keylayout" "/" "" "start_selected=\"true\"" >/dev/null 2>&1
}
fi
# -
if [ -e ${1%/*}/i386/modules/uClibcxx.dylib ]; then
{
mkdir -p ${1}/uClibc/Root
done
# End build base options packages
# build KeyLayout option packages
echo "================= Keymaps Options ================="
outline[$((outlinecount++))]="${indent[$xmlindent]}\t<line choice=\"KeyLayout\">"
choices[$((choicescount++))]="<choice\n\tid=\"KeyLayout\"\n\ttitle=\"KeyLayout_title\"\n\tdescription=\"KeyLayout_description\"\n>\n</choice>\n"
((xmlindent++))
packagesidentity="org.chameleon.options.keylayout"
keymaps=($( find "${1%/sym/*}/Keymaps" -type f -depth 1 -name '*.lyt' | sed 's|.*/||;s|\.lyt||' ))
for (( i = 0 ; i < ${#keymaps[@]} ; i++ ))
do
mkdir -p "${1}/${keymaps[$i]}/Root/"
mkdir -p "${1}/${keymaps[$i]}/Scripts/"
sed "s/@@KEYMAP@@/${keymaps[$i]}/g" "${pkgroot}/Scripts/Keymaps/postinstall" > "${1}/${keymaps[$i]}/Scripts/postinstall" && \
chmod +rx "${1}/${keymaps[$i]}/Scripts/postinstall"
echo "[BUILD] ${keymaps[$i]} "
buildpackage "${1}/${keymaps[$i]}" "/tmpcham" "" "start_selected=\"false\"" >/dev/null 2>&1
done
((xmlindent--))
outline[$((outlinecount++))]="${indent[$xmlindent]}\t</line>"
# End build KeyLayout option packages
# build resolution packages
echo "================= Res. Options ================="
outline[$((outlinecount++))]="${indent[$xmlindent]}\t<line choice=\"Resolution\">"
((xmlindent--))
outline[$((outlinecount++))]="${indent[$xmlindent]}\t</line>"
# End build resolution packages
# build Advanced packages
echo "================= Adv. Options ================="
outline[$((outlinecount++))]="${indent[$xmlindent]}\t<line choice=\"Advanced\">"
outline[$((outlinecount++))]="${indent[$xmlindent]}\t</line>"
# End build options packages
# build theme packages
echo "================= Themes ================="
outline[$((outlinecount++))]="${indent[$xmlindent]}\t<line choice=\"Themes\">"
branches/ErmaC/doc/BootHelp.txt
7272
7373
7474
75
76
77
7578
7679
7780
and /S/L/E/Extensions.mkext.
Default is No but Yes if you use Lion on a Raid partition.
KeyLayout=keymap Use to change the keyboard mapping of the bootloader
(e.g. KeyLayout=mac-fr)
GraphicsEnabler=Yes|No Automatic device-properties generation for gfx cards.
AtiConfig=<cardcfg> Use a different card config, e.g. AtiConfig=Megalodon.
AtiPorts=<value> Specify the number of ports, e.g. AtiPorts=2.
branches/ErmaC/Makefile
8181
8282
8383
84
85
86
87
88
89
90
91
8492
8593
8694
......
122130
123131
124132
125
126
127
128
129
130
131
132
133133
134134
135135
ifdef CONFIG_BDMESG
@cp -f ${SYMROOT}/i386/bdmesg ${IMGROOT}/usr/bin
endif
ifdef CONFIG_KEYLAYOUT_MODULE
@cp -f ${SYMROOT}/i386/cham-mklayout ${IMGROOT}/usr/bin
@echo "\t[MKDIR] ${IMGROOT}/Extra/Keymaps"
@mkdir -p ${IMGROOT}/Extra/Keymaps
@echo "\t[CP] Keymaps ${IMGROOT}/Extra/Keymaps"
@cp -R -f "Keymaps"/* "${IMGROOT}/Extra/Keymaps/"
endif
@echo "\t[HDIUTIL] ${ISOIMAGE}"
@hdiutil makehybrid -iso -joliet -hfs -hfs-volume-name \
${CDLABEL} -eltorito-boot ${CDBOOT} -no-emul-boot -ov -o \
${SRCROOT}/package/slimpkg.sh ${SYMROOT}/package;
${SRCROOT}/package/builddmg.sh ${SYMROOT}/package;
$(SYMROOT)/i386/vers.h: version
@echo "#define I386BOOT_VERSION \"5.0.132\"" > $@
@echo "#define I386BOOT_BUILDDATE \"`date \"+%Y-%m-%d %H:%M:%S\"`\"" >> $@
@echo "#define I386BOOT_CHAMELEONVERSION \"`cat version`\"" >> $@
@echo "#define I386BOOT_CHAMELEONREVISION \"`svnversion -n | tr -d [:alpha:]`\"" >> $@
.PHONY: $(SYMROOT)/i386/vers.h
.PHONY: config
.PHONY: clean
.PHONY: image

Archive Download the corresponding diff file

Revision: 1531