File Coverage

blib/lib/Image/ExifTool/NikonCustom.pm
Criterion Covered Total %
statement 6 6 100.0
branch n/a
condition n/a
subroutine 2 2 100.0
pod n/a
total 8 8 100.0


line stmt bran cond sub pod time code
1             #------------------------------------------------------------------------------
2             # File: NikonCustom.pm
3             #
4             # Description: Read and write Nikon Custom settings
5             #
6             # Revisions: 2009/11/25 - P. Harvey Created
7             #
8             # References: 1) Warren Hatch private communication (D3 and Z9 with SB-800 and SB-900)
9             # 2) Anonymous contribution 2011/05/25 (D700, D7000)
10             # JD) Jens Duttke private communication
11             #------------------------------------------------------------------------------
12              
13             package Image::ExifTool::NikonCustom;
14              
15 3     3   19 use strict;
  3         11  
  3         120  
16 3     3   18 use vars qw($VERSION);
  3         5  
  3         39905  
17              
18             $VERSION = '1.20';
19              
20             my %buttonsZ9= (
21             0 => 'None',
22             1 => 'Preview',
23             3 => 'FV Lock',
24             4 => 'AE/AF Lock',
25             5 => 'AE Lock Only',
26             6 => 'AE Lock (reset on release)',
27             7 => 'AE Lock (hold)',
28             8 => 'AF Lock Only',
29             9 => 'AF-On',
30             10 => 'Flash Disable/Enable',
31             11 => 'Bracketing Burst',
32             12 => '+NEF(RAW)',
33             18 => 'Virtual Horizon',
34             19 => 'Synchronized Release',
35             20 => 'My Menu',
36             21 => 'My Menu Top Item',
37             22 => 'Playback',
38             23 => 'Rating',
39             24 => 'Protect',
40             25 => 'Zoom',
41             26 => 'Focus Peaking',
42             28 => 'Image Area',
43             30 => 'Non-CPU Lens',
44             31 => 'Active-D Lighting',
45             33 => '1 Stop Speed/Aperture',
46             35 => 'Metering',
47             36 => 'Auto Bracketing',
48             37 => 'Multiple Exposure',
49             38 => 'HDR Overlay',
50             39 => 'Picture Control',
51             40 => 'Quality',
52             41 => 'Focus Mode/AF AreaMode',
53             42 => 'Select Center Focus Point',
54             44 => 'Record Movie',
55             47 => 'Choose Folder',
56             48 => 'Power Aperture (Open)',
57             49 => 'Power Aperture (Close)',
58             52 => 'Microphone Sensitivity',
59             57 => 'Preset Focus Point',
60             58 => 'AE/AWB Lock (hold)',
61             59 => 'AF-AreaMode',
62             60 => 'AF-AreaMode + AF-On',
63             61 => 'Recall Shooting Functions',
64             64 => 'Filtered Playback',
65             65 => 'Same as AF-On',
66             66 => 'Voice Memo',
67             70 => 'Photo Shooting Bank',
68             73 => 'Exposure Compensation',
69             76 => 'Silent Mode',
70             78 => 'LiveView Information',
71             79 => 'AWB Lock (hold)',
72             80 => 'Grid Display',
73             81 => 'Starlight View',
74             82 => 'Select To Send (PC)',
75             83 => 'Select To Send (FTP)',
76             85 => 'Control Lock',
77             86 => 'Save Focus Position',
78             87 => 'Recall Focus Position',
79             88 => 'Recall Shooting Functions (Hold)',
80             );
81             my %dialsZ9 = (
82             0 => '1 Frame',
83             1 => '10 Frames',
84             2 => '50 Frames',
85             3 => 'Folder',
86             4 => 'Protect',
87             5 => 'Photos Only',
88             6 => 'Videos Only',
89             7 => 'Rating',
90             8 => 'Page',
91             );
92             my %evfGridsZ9 = (
93             0 => '3x3',
94             1 => '4x4',
95             2 => '2.35:1',
96             3 => '1.85:1',
97             4 => '5:4',
98             5 => '4:3',
99             6 => '1:1',
100             7 => '16:9',
101             8 => '90%',
102             );
103             my %flicksZ9 = (
104             0 => 'Rating',
105             1 => 'Select To Send (PC)',
106             2 => 'Select To Send (FTP)',
107             3 => 'Protect',
108             4 => 'Voice Memo',
109             5 => 'None',
110             );
111             my %focusModeRestrictionsZ9 = (
112             0 => 'AF-S',
113             1 => 'AF-C',
114             2 => 'Full-time AF',
115             3 => 'Manual',
116             4 => 'No Restrictions',
117             );
118             my %powerOffDelayTimesZ9 = (
119             0 => '2 s',
120             1 => '4 s',
121             3 => '10 s',
122             4 => '20 s',
123             5 => '30 s',
124             6 => '1 min',
125             7 => '5 min',
126             8 => '10 min',
127             11 => '30 min',
128             12 => 'No Limit',
129             );
130             my %thirdHalfFull = (
131             0 => '1/3 EV',
132             1 => '1/2 EV',
133             2 => '1 EV',
134             );
135              
136             my %limitNolimit = ( 0 => 'Limit', 1 => 'No Limit' );
137             my %offOn = ( 0 => 'Off', 1 => 'On' );
138             my %onOff = ( 0 => 'On', 1 => 'Off' );
139             my %noYes = ( 0 => 'No', 1 => 'Yes' );
140              
141             # custom settings for the D80 (encrypted) - ref JD
142             %Image::ExifTool::NikonCustom::SettingsD80 = (
143             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
144             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
145             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
146             WRITABLE => 1,
147             FIRST_ENTRY => 0,
148             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
149             NOTES => 'Custom settings for the Nikon D80.',
150             0.1 => { # CS1
151             Name => 'Beep',
152             Mask => 0x80,
153             PrintConv => \%onOff,
154             },
155             0.2 => { # CS4
156             Name => 'AFAssist',
157             Mask => 0x40,
158             PrintConv => \%onOff,
159             },
160             0.3 => { # CS5
161             Name => 'NoMemoryCard',
162             Mask => 0x20,
163             PrintConv => {
164             0 => 'Release Locked',
165             1 => 'Enable Release',
166             },
167             },
168             0.4 => { # CS6
169             Name => 'ImageReview',
170             Mask => 0x10,
171             PrintConv => \%onOff,
172             },
173             0.5 => { # CS17
174             Name => 'Illumination',
175             Mask => 0x08,
176             PrintConv => \%offOn,
177             },
178             0.6 => { # CS11
179             Name => 'MainDialExposureComp',
180             Mask => 0x04,
181             PrintConv => \%offOn,
182             },
183             0.7 => { # CS10
184             Name => 'EVStepSize',
185             Mask => 0x01,
186             PrintConv => {
187             0 => '1/3 EV',
188             1 => '1/2 EV',
189             },
190             },
191             1.1 => { # CS7
192             Name => 'AutoISO',
193             Mask => 0x40,
194             PrintConv => \%offOn,
195             },
196             1.2 => { # CS7-a
197             Name => 'AutoISOMax',
198             Mask => 0x30,
199             PrintConv => {
200             0 => 200,
201             1 => 400,
202             2 => 800,
203             3 => 1600,
204             },
205             },
206             1.3 => { # CS7-b
207             Name => 'AutoISOMinShutterSpeed',
208             Mask => 0x0f,
209             PrintConvColumns => 2,
210             PrintConv => {
211             0 => '1/125 s',
212             1 => '1/100 s',
213             2 => '1/80 s',
214             3 => '1/60 s',
215             4 => '1/40 s',
216             5 => '1/30 s',
217             6 => '1/15 s',
218             7 => '1/8 s',
219             8 => '1/4 s',
220             9 => '1/2 s',
221             10 => '1 s',
222             },
223             },
224             2.1 => { # CS13
225             Name => 'AutoBracketSet',
226             Mask => 0xc0,
227             PrintConv => {
228             0 => 'AE & Flash',
229             1 => 'AE Only',
230             2 => 'Flash Only',
231             3 => 'WB Bracketing',
232             },
233             },
234             2.2 => { # CS14
235             Name => 'AutoBracketOrder',
236             Mask => 0x20,
237             PrintConv => {
238             0 => '0,-,+',
239             1 => '-,0,+',
240             },
241             },
242             3.1 => { # CS27
243             Name => 'MonitorOffTime',
244             Mask => 0xe0,
245             PrintConv => {
246             0 => '5 s',
247             1 => '10 s',
248             2 => '20 s',
249             3 => '1 min',
250             4 => '5 min',
251             5 => '10 min',
252             },
253             },
254             3.2 => { # CS28
255             Name => 'MeteringTime',
256             Mask => 0x1c,
257             PrintConv => {
258             0 => '4 s',
259             1 => '6 s',
260             2 => '8 s',
261             3 => '16 s',
262             4 => '30 s',
263             5 => '30 min',
264             },
265             },
266             3.3 => { # CS29
267             Name => 'SelfTimerTime',
268             Mask => 0x03,
269             PrintConv => {
270             0 => '2 s',
271             1 => '5 s',
272             2 => '10 s',
273             3 => '20 s',
274             },
275             },
276             4.1 => { # CS18
277             Name => 'AELockButton',
278             Mask => 0x1e,
279             PrintConv => {
280             0 => 'AE/AF Lock',
281             1 => 'AE Lock Only',
282             2 => 'AF Lock Only',
283             3 => 'AE Lock (hold)',
284             4 => 'AF-ON',
285             5 => 'FV Lock',
286             6 => 'Focus Area Selection',
287             7 => 'AE-L/AF-L/AF Area',
288             8 => 'AE-L/AF Area',
289             9 => 'AF-L/AF Area',
290             10 => 'AF-ON/AF Area',
291             },
292             },
293             4.2 => { # CS19
294             Name => 'AELock',
295             Mask => 0x01,
296             PrintConv => \%offOn,
297             },
298             4.3 => { # CS30
299             Name => 'RemoteOnDuration',
300             Mask => 0xc0,
301             PrintConv => {
302             0 => '1 min',
303             1 => '5 min',
304             2 => '10 min',
305             3 => '15 min',
306             },
307             },
308             5.1 => { # CS15
309             Name => 'CommandDials',
310             Mask => 0x80,
311             PrintConv => {
312             0 => 'Standard (Main Shutter, Sub Aperture)',
313             1 => 'Reversed (Main Aperture, Sub Shutter)',
314             },
315             },
316             5.2 => { # CS16
317             Name => 'FunctionButton',
318             Mask => 0x78,
319             PrintConv => {
320             0 => 'ISO Display',
321             1 => 'Framing Grid',
322             2 => 'AF-area Mode',
323             3 => 'Center AF Area',
324             4 => 'FV Lock',
325             5 => 'Flash Off',
326             6 => 'Matrix Metering',
327             7 => 'Center-weighted',
328             8 => 'Spot Metering',
329             },
330             },
331             6.1 => { # CS8
332             Name => 'GridDisplay',
333             Mask => 0x80,
334             PrintConv => \%offOn,
335             },
336             6.2 => { # CS9
337             Name => 'ViewfinderWarning',
338             Mask => 0x40,
339             PrintConv => \%onOff,
340             },
341             6.3 => { # CS12
342             Name => 'CenterWeightedAreaSize',
343             Mask => 0x0c,
344             PrintConv => {
345             0 => '6 mm',
346             1 => '8 mm',
347             2 => '10 mm',
348             },
349             },
350             6.4 => { # CS31
351             Name => 'ExposureDelayMode',
352             Mask => 0x20,
353             PrintConv => \%offOn,
354             },
355             6.5 => { # CS32
356             Name => 'MB-D80Batteries',
357             Mask => 0x03,
358             PrintConv => {
359             0 => 'LR6 (AA Alkaline)',
360             1 => 'HR6 (AA Ni-MH)',
361             2 => 'FR6 (AA Lithium)',
362             3 => 'ZR6 (AA Ni-Mg)',
363             },
364             },
365             7.1 => { # CS23
366             Name => 'FlashWarning',
367             Mask => 0x80,
368             PrintConv => \%onOff,
369             },
370             7.2 => { # CS24
371             Name => 'FlashShutterSpeed',
372             Mask => 0x78,
373             ValueConv => '2 ** ($val - 6)',
374             ValueConvInv => '$val>0 ? int(log($val)/log(2)+6+0.5) : 0',
375             PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
376             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
377             },
378             7.3 => { # CS25
379             Name => 'AutoFP',
380             Mask => 0x04,
381             PrintConv => \%offOn,
382             },
383             7.4 => { # CS26
384             Name => 'ModelingFlash',
385             Mask => 0x02,
386             PrintConv => \%offOn,
387             },
388             8.1 => { # CS22
389             Name => 'InternalFlash',
390             Mask => 0xc0,
391             PrintConv => {
392             0 => 'TTL',
393             1 => 'Manual',
394             2 => 'Repeating Flash',
395             3 => 'Commander Mode',
396             },
397             },
398             8.2 => { # CS22-a
399             Name => 'ManualFlashOutput',
400             Mask => 0x07,
401             ValueConv => '2 ** (-$val)',
402             ValueConvInv => '$val > 0 ? -log($val)/log(2) : 0',
403             PrintConv => q{
404             return 'Full' if $val > 0.99;
405             Image::ExifTool::Exif::PrintExposureTime($val);
406             },
407             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
408             },
409             9.1 => { # CS22-b
410             Name => 'RepeatingFlashOutput',
411             Mask => 0x70,
412             ValueConv => '2 ** (-$val-2)',
413             ValueConvInv => '$val > 0 ? int(-log($val)/log(2)-2+0.5) : 0',
414             PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
415             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
416             },
417             9.2 => { # CS22-c
418             Name => 'RepeatingFlashCount',
419             Mask => 0x0f,
420             ValueConv => '$val < 10 ? $val + 1 : 5 * ($val - 7)',
421             ValueConvInv => '$val <= 10 ? $val - 1 : $val / 5 + 7',
422             },
423             10.1 => { # CS22-d
424             Name => 'RepeatingFlashRate',
425             Mask => 0xf0,
426             ValueConv => '$val < 10 ? $val + 1 : 10 * ($val - 8)',
427             ValueConvInv => 'int(($val <= 10 ? $val - 1 : $val / 10 + 8) + 0.5)',
428             PrintConv => '"$val Hz"',
429             PrintConvInv => '$val=~/(\d+)/; $1 || 0',
430             },
431             10.2 => { # CS22-n
432             Name => 'CommanderChannel',
433             Mask => 0x03,
434             ValueConv => '$val + 1',
435             ValueConvInv => '$val - 1',
436             },
437             11.1 => { # CS22-e
438             Name => 'CommanderInternalFlash',
439             Mask => 0xc0,
440             PrintConv => {
441             0 => 'TTL',
442             1 => 'Manual',
443             2 => 'Off',
444             },
445             },
446             11.2 => { # CS22-h
447             Name => 'CommanderGroupAMode',
448             Mask => 0x30,
449             PrintConv => {
450             0 => 'TTL',
451             1 => 'Auto Aperture',
452             2 => 'Manual',
453             3 => 'Off',
454             },
455             },
456             11.3 => { # CS22-k
457             Name => 'CommanderGroupBMode',
458             Mask => 0x0c,
459             PrintConv => {
460             0 => 'TTL',
461             1 => 'Auto Aperture',
462             2 => 'Manual',
463             3 => 'Off',
464             },
465             },
466             12.1 => { # CS22-f
467             Name => 'CommanderInternalTTLComp',
468             Mask => 0x1f,
469             ValueConv => '($val - 9) / 3',
470             ValueConvInv => '$val * 3 + 9',
471             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
472             PrintConvInv => '$val',
473             },
474             12.2 => { # CS22-g
475             Name => 'CommanderInternalManualOutput',
476             Mask => 0xe0,
477             ValueConv => '2 ** (-$val)',
478             ValueConvInv => '$val > 0 ? int(-log($val)/log(2)+0.5) : 0',
479             PrintConv => q{
480             return 'Full' if $val > 0.99;
481             Image::ExifTool::Exif::PrintExposureTime($val);
482             },
483             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
484             },
485             13.1 => { # CS22-i
486             Name => 'CommanderGroupA_TTL-AAComp',
487             Mask => 0x1f,
488             ValueConv => '($val - 9) / 3',
489             ValueConvInv => '$val * 3 + 9',
490             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
491             PrintConvInv => '$val',
492             },
493             13.2 => { # CS22-j
494             Name => 'CommanderGroupAManualOutput',
495             Mask => 0xe0,
496             ValueConv => '2 ** (-$val)',
497             ValueConvInv => '$val > 0 ? int(-log($val)/log(2)+0.5) : 0',
498             PrintConv => q{
499             return 'Full' if $val > 0.99;
500             Image::ExifTool::Exif::PrintExposureTime($val);
501             },
502             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
503             },
504             14.1 => { # CS22-l
505             Name => 'CommanderGroupB_TTL-AAComp',
506             Mask => 0x1f,
507             ValueConv => '($val - 9) / 3',
508             ValueConvInv => '$val * 3 + 9',
509             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
510             PrintConvInv => '$val',
511             },
512             14.2 => { # CS22-m
513             Name => 'CommanderGroupBManualOutput',
514             Mask => 0xe0,
515             ValueConv => '2 ** (-$val)',
516             ValueConvInv => '$val > 0 ? int(-log($val)/log(2)+0.5) : 0',
517             PrintConv => q{
518             return 'Full' if $val > 0.99;
519             Image::ExifTool::Exif::PrintExposureTime($val);
520             },
521             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
522             },
523             15.1 => { # CS3
524             Name => 'CenterAFArea',
525             Mask => 0x80,
526             PrintConv => {
527             0 => 'Normal Zone',
528             1 => 'Wide Zone',
529             },
530             },
531             15.2 => { # CS20
532             Name => 'FocusAreaSelection',
533             Mask => 0x04,
534             PrintConv => {
535             0 => 'No Wrap',
536             1 => 'Wrap',
537             },
538             },
539             15.3 => { # CS21
540             Name => 'AFAreaIllumination',
541             Mask => 0x03,
542             PrintConv => {
543             0 => 'Auto',
544             1 => 'Off',
545             2 => 'On',
546             },
547             },
548             16.1 => { # CS2
549             Name => 'AFAreaModeSetting',
550             Mask => 0xc0,
551             PrintConv => {
552             0 => 'Single Area',
553             1 => 'Dynamic Area',
554             2 => 'Auto-area',
555             },
556             },
557             );
558              
559             # custom settings for the D40 (encrypted) - ref JD
560             %Image::ExifTool::NikonCustom::SettingsD40 = (
561             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
562             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
563             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
564             WRITABLE => 1,
565             FIRST_ENTRY => 0,
566             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
567             NOTES => 'Custom settings for the Nikon D40.',
568             0.1 => { # CS1
569             Name => 'Beep',
570             Mask => 0x80,
571             PrintConv => \%onOff,
572             },
573             0.2 => { # CS9
574             Name => 'AFAssist',
575             Mask => 0x40,
576             PrintConv => \%onOff,
577             },
578             0.3 => { # CS6
579             Name => 'NoMemoryCard',
580             Mask => 0x20,
581             PrintConv => {
582             0 => 'Release Locked',
583             1 => 'Enable Release',
584             },
585             },
586             0.4 => { # CS7
587             Name => 'ImageReview',
588             Mask => 0x10,
589             PrintConv => \%onOff,
590             },
591             1.1 => { # CS10-a
592             Name => 'AutoISO',
593             Mask => 0x80,
594             PrintConv => \%offOn,
595             },
596             1.2 => { # CS10-b
597             Name => 'AutoISOMax',
598             Mask => 0x30,
599             PrintConv => {
600             1 => 400,
601             2 => 800,
602             3 => 1600,
603             },
604             },
605             1.3 => { # CS10-c
606             Name => 'AutoISOMinShutterSpeed',
607             Mask => 0x07,
608             PrintConvColumns => 2,
609             PrintConv => {
610             0 => '1/125 s',
611             1 => '1/60 s',
612             2 => '1/30 s',
613             3 => '1/15 s',
614             4 => '1/8 s',
615             5 => '1/4 s',
616             6 => '1/2 s',
617             7 => '1 s',
618             },
619             },
620             2.1 => { # CS15-b
621             Name => 'ImageReviewTime',
622             Mask => 0x07,
623             PrintConv => {
624             0 => '4 s',
625             1 => '8 s',
626             2 => '20 s',
627             3 => '1 min',
628             4 => '10 min',
629             },
630             },
631             3.1 => { # CS15-a
632             Name => 'MonitorOffTime',
633             Mask => 0xe0,
634             PrintConv => {
635             0 => '4 s',
636             1 => '8 s',
637             2 => '20 s',
638             3 => '1 min',
639             4 => '10 min',
640             },
641             },
642             3.2 => { # CS15-c
643             Name => 'MeteringTime',
644             Mask => 0x1c,
645             PrintConv => {
646             0 => '4 s',
647             1 => '8 s',
648             2 => '20 s',
649             3 => '1 min',
650             4 => '30 min',
651             },
652             },
653             3.3 => { # CS16
654             Name => 'SelfTimerTime',
655             Mask => 0x03,
656             PrintConv => {
657             0 => '2 s',
658             1 => '5 s',
659             2 => '10 s',
660             3 => '20 s',
661             },
662             },
663             3.4 => { # CS17
664             Name => 'RemoteOnDuration',
665             Mask => 0xc0,
666             PrintConv => {
667             0 => '1 min',
668             1 => '5 min',
669             2 => '10 min',
670             3 => '15 min',
671             },
672             },
673             4.1 => { # CS12
674             Name => 'AELockButton',
675             Mask => 0x0e,
676             PrintConv => {
677             0 => 'AE/AF Lock',
678             1 => 'AE Lock Only',
679             2 => 'AF Lock Only',
680             3 => 'AE Lock (hold)',
681             4 => 'AF-ON',
682             },
683             },
684             4.2 => { # CS13
685             Name => 'AELock',
686             Mask => 0x01,
687             PrintConv => \%offOn,
688             },
689             5.1 => { # CS4
690             Name => 'ShootingModeSetting',
691             Mask => 0x70,
692             PrintConv => {
693             0 => 'Single Frame',
694             1 => 'Continuous',
695             2 => 'Self-timer',
696             3 => 'Delayed Remote',
697             4 => 'Quick-response Remote',
698             },
699             },
700             5.2 => { # CS11
701             Name => 'TimerFunctionButton',
702             Mask => 0x07,
703             PrintConv => {
704             0 => 'Shooting Mode',
705             1 => 'Image Quality/Size',
706             2 => 'ISO',
707             3 => 'White Balance',
708             4 => 'Self-timer',
709             },
710             },
711             6.1 => { # CS5
712             Name => 'Metering',
713             Mask => 0x03,
714             PrintConv => {
715             0 => 'Matrix',
716             1 => 'Center-weighted',
717             2 => 'Spot',
718             },
719             },
720             8.1 => { # CS14-a
721             Name => 'InternalFlash',
722             Mask => 0x10,
723             PrintConv => {
724             0 => 'TTL',
725             1 => 'Manual',
726             },
727             },
728             8.2 => { # CS14-b
729             Name => 'ManualFlashOutput',
730             Mask => 0x07,
731             ValueConv => '2 ** (-$val)',
732             ValueConvInv => '$val > 0 ? -log($val)/log(2) : 0',
733             PrintConv => q{
734             return 'Full' if $val > 0.99;
735             Image::ExifTool::Exif::PrintExposureTime($val);
736             },
737             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
738             },
739             9 => { # CS8
740             Name => 'FlashLevel',
741             Format => 'int8s',
742             ValueConv => '$val / 6',
743             ValueConvInv => '$val * 6',
744             PrintConv => 'sprintf("%+.1f",$val)',
745             PrintConvInv => '$val',
746             },
747             10.1 => { # CS2
748             Name => 'FocusModeSetting',
749             # (may differ from FocusMode if lens switch is set to Manual)
750             Mask => 0xc0,
751             PrintConv => {
752             0 => 'Manual',
753             1 => 'AF-S',
754             2 => 'AF-C',
755             3 => 'AF-A',
756             },
757             },
758             11.1 => { # CS3
759             Name => 'AFAreaModeSetting',
760             # (may differ from AFAreaMode for Manual focus)
761             Mask => 0x30,
762             PrintConv => {
763             0 => 'Single Area',
764             1 => 'Dynamic Area',
765             2 => 'Closest Subject',
766             },
767             }
768             );
769              
770             # D90 custom settings (ref PH)
771             %Image::ExifTool::NikonCustom::SettingsD90 = (
772             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
773             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
774             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
775             WRITABLE => 1,
776             FIRST_ENTRY => 0,
777             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
778             NOTES => 'Custom settings for the D90.',
779             # Missing:
780             # CSe2 RepeatingFlashRate (needs verification)
781             # CommanderInternalFlash, CommanderGroupAMode, CommanderGroupBMode,
782             # CommanderChannel, CommanderInternalManualOutput,
783             # CommanderGroupAManualOutput, CommanderGroupBManualOutput
784             # CommanderGroupA_TTL-AAComp, CommanderGroupB_TTL-AAComp,
785             # CSe4 AutoBracketSet (some values need verification)
786             # CSf2 OKButton ("Not Used" value needs verification)
787             # CSf5-b CommandDialsChangeMainSub
788             # CSf5-c CommandDialsMenuAndPlayback
789             0.1 => { # CSf1
790             Name => 'LightSwitch',
791             Mask => 0x08,
792             PrintConv => {
793             0 => 'LCD Backlight',
794             1 => 'LCD Backlight and Shooting Information',
795             },
796             },
797             2.1 => { # CSa1
798             Name => 'AFAreaModeSetting',
799             Mask => 0x60,
800             PrintConv => {
801             0 => 'Single Area',
802             1 => 'Dynamic Area',
803             2 => 'Auto-area',
804             3 => '3D-tracking (11 points)',
805             },
806             },
807             2.2 => { # CSa2
808             Name => 'CenterFocusPoint',
809             Mask => 0x10,
810             PrintConv => {
811             0 => 'Normal Zone',
812             1 => 'Wide Zone',
813             },
814             },
815             2.3 => { # CSa3
816             Name => 'AFAssist',
817             Mask => 0x01,
818             PrintConv => \%onOff,
819             },
820             2.4 => { # CSa4
821             Name => 'AFPointIllumination',
822             Mask => 0x06,
823             PrintConv => {
824             0 => 'Auto',
825             1 => 'On',
826             2 => 'Off',
827             },
828             },
829             2.5 => { # CSa5
830             Name => 'FocusPointWrap',
831             Mask => 0x08,
832             PrintConv => {
833             0 => 'No Wrap',
834             1 => 'Wrap',
835             },
836             },
837             3.1 => { # CSa6
838             Name => 'AELockForMB-D80',
839             Mask => 0x1c,
840             PrintConv => {
841             0 => 'AE Lock Only',
842             1 => 'AF Lock Only',
843             2 => 'AE Lock (hold)',
844             3 => 'AF-On',
845             4 => 'FV Lock',
846             5 => 'Focus Point Selection',
847             7 => 'AE/AF Lock',
848             },
849             },
850             3.2 => { # CSd12
851             Name => 'MB-D80BatteryType',
852             Mask => 0x03,
853             PrintConv => {
854             0 => 'LR6 (AA alkaline)',
855             1 => 'HR6 (AA Ni-MH)',
856             2 => 'FR6 (AA lithium)',
857             3 => 'ZR6 (AA Ni-Mn)',
858             },
859             },
860             4.1 => { # CSd1
861             Name => 'Beep',
862             Mask => 0x40,
863             PrintConv => \%offOn,
864             },
865             4.2 => { # CSd2
866             Name => 'GridDisplay',
867             Mask => 0x02,
868             PrintConv => \%offOn,
869             },
870             4.3 => { # CSd3
871             Name => 'ISODisplay',
872             Mask => 0x0c,
873             PrintConv => {
874             0 => 'Show ISO/Easy ISO',
875             1 => 'Show ISO Sensitivity',
876             3 => 'Show Frame Count',
877             },
878             },
879             4.4 => { # CSd4
880             Name => 'ViewfinderWarning',
881             Mask => 0x01,
882             PrintConv => \%onOff,
883             },
884             4.5 => { # CSf6
885             Name => 'NoMemoryCard',
886             Mask => 0x20,
887             PrintConv => {
888             0 => 'Release Locked',
889             1 => 'Enable Release',
890             },
891             },
892             5.1 => { # CSd5
893             Name => 'ScreenTips',
894             Mask => 0x04,
895             PrintConv => \%offOn,
896             },
897             5.2 => { # CSd7
898             Name => 'FileNumberSequence',
899             Mask => 0x08,
900             PrintConv => \%onOff,
901             },
902             5.3 => { # CSd8
903             Name => 'ShootingInfoDisplay',
904             Mask => 0xc0,
905             PrintConv => {
906             0 => 'Auto',
907             2 => 'Manual (dark on light)',
908             3 => 'Manual (light on dark)',
909             },
910             },
911             5.4 => { # CSd9
912             Name => 'LCDIllumination',
913             Mask => 0x20,
914             PrintConv => \%offOn,
915             },
916             6.1 => { # CSb2
917             Name => 'EasyExposureComp',
918             Mask => 0x01,
919             PrintConv => \%offOn,
920             },
921             6.2 => { # CSf7
922             Name => 'ReverseIndicators',
923             Mask => 0x80,
924             PrintConv => {
925             0 => '+ 0 -',
926             1 => '- 0 +',
927             },
928             },
929             7.1 => { # CSb1
930             Name => 'ExposureControlStepSize',
931             Mask => 0x40,
932             PrintConv => {
933             0 => '1/3 EV',
934             1 => '1/2 EV',
935             },
936             },
937             8.1 => { # CSb3
938             Name => 'CenterWeightedAreaSize',
939             Mask => 0x60,
940             PrintConv => {
941             0 => '6 mm',
942             1 => '8 mm',
943             2 => '10 mm',
944             },
945             },
946             8.2 => { # CSb4-a
947             Name => 'FineTuneOptMatrixMetering',
948             Mask => 0x0f,
949             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
950             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
951             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
952             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
953             },
954             9.1 => { # CSb4-b
955             Name => 'FineTuneOptCenterWeighted',
956             Mask => 0xf0,
957             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
958             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
959             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
960             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
961             },
962             9.2 => { # CSb4-c
963             Name => 'FineTuneOptSpotMetering',
964             Mask => 0x0f,
965             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
966             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
967             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
968             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
969             },
970             11.1 => { # CSd6
971             Name => 'CLModeShootingSpeed',
972             Mask => 0x07,
973             PrintConv => '"$val fps"',
974             PrintConvInv => '$val=~s/\s*fps//i; $val',
975             },
976             11.2 => { # CSd10
977             Name => 'ExposureDelayMode',
978             Mask => 0x40,
979             PrintConv => \%offOn,
980             },
981             13.1 => { # CSe4
982             Name => 'AutoBracketSet',
983             Mask => 0xe0, #(NC)
984             PrintConv => {
985             0 => 'AE & Flash', # default
986             1 => 'AE Only',
987             2 => 'Flash Only', #(NC)
988             3 => 'WB Bracketing', #(NC)
989             4 => 'Active D-Lighting', #(NC)
990             },
991             },
992             13.2 => { # CSe6
993             Name => 'AutoBracketOrder',
994             Mask => 0x10,
995             PrintConv => {
996             0 => '0,-,+',
997             1 => '-,0,+',
998             },
999             },
1000             14.1 => { # CSf3
1001             Name => 'FuncButton',
1002             Mask => 0x78,
1003             PrintConv => {
1004             1 => 'Framing Grid',
1005             2 => 'AF-area Mode',
1006             3 => 'Center Focus Point',
1007             4 => 'FV Lock', # default
1008             5 => 'Flash Off',
1009             6 => 'Matrix Metering',
1010             7 => 'Center-weighted Metering',
1011             8 => 'Spot Metering',
1012             9 => 'My Menu Top',
1013             10 => '+ NEF (RAW)',
1014             },
1015             },
1016             16.1 => { # CSf2
1017             Name => 'OKButton',
1018             Mask => 0x18,
1019             PrintConv => {
1020             1 => 'Select Center Focus Point',
1021             2 => 'Highlight Active Focus Point',
1022             3 => 'Not Used', #(NC)
1023             0 => 'Not Used', #(NC)
1024             },
1025             },
1026             17.1 => { # CSf4
1027             Name => 'AELockButton',
1028             Mask => 0x38,
1029             PrintConv => {
1030             0 => 'AE/AF Lock',
1031             1 => 'AE Lock Only',
1032             2 => 'AF Lock Only', #(NC)
1033             3 => 'AE Lock (hold)', #(NC)
1034             4 => 'AF-ON', #(NC)
1035             5 => 'FV Lock', #(NC)
1036             },
1037             },
1038             18.1 => { # CSf5-a
1039             Name => 'CommandDialsReverseRotation',
1040             Mask => 0x80,
1041             PrintConv => \%noYes,
1042             },
1043             18.2 => { # CSc1
1044             Name => 'ShutterReleaseButtonAE-L',
1045             Mask => 0x02,
1046             PrintConv => \%offOn,
1047             },
1048             19.1 => { # CSc2
1049             Name => 'MeteringTime',
1050             Mask => 0xf0,
1051             PrintConvColumns => 2,
1052             PrintConv => {
1053             0 => '4 s',
1054             1 => '6 s', # default
1055             2 => '8 s',
1056             3 => '16 s',
1057             4 => '30 s',
1058             5 => '1 min',
1059             6 => '5 min',
1060             7 => '10 min',
1061             8 => '30 min',
1062             },
1063             },
1064             19.2 => { # CSc5
1065             Name => 'RemoteOnDuration',
1066             Mask => 0x03,
1067             PrintConv => {
1068             0 => '1 min',
1069             1 => '5 min',
1070             2 => '10 min',
1071             3 => '15 min',
1072             },
1073             },
1074             20.1 => { # CSc3-a
1075             Name => 'SelfTimerTime',
1076             Mask => 0xc0,
1077             PrintConv => {
1078             0 => '2 s',
1079             1 => '5 s',
1080             2 => '10 s', # default
1081             3 => '20 s',
1082             },
1083             },
1084             20.2 => { # CSc3-b
1085             Name => 'SelfTimerShotCount',
1086             Mask => 0x1e,
1087             },
1088             21.1 => { # CSc4-a
1089             Name => 'PlaybackMonitorOffTime',
1090             Mask => 0x1c,
1091             PrintConv => {
1092             0 => '4 s',
1093             1 => '10 s', # default
1094             2 => '20 s',
1095             3 => '1 min',
1096             4 => '5 min',
1097             5 => '10 min',
1098             },
1099             },
1100             21.2 => { # CSc4-d
1101             Name => 'ImageReviewTime',
1102             Mask => 0xe0,
1103             PrintConv => {
1104             0 => '4 s', # default
1105             1 => '10 s',
1106             2 => '20 s',
1107             3 => '1 min',
1108             4 => '5 min',
1109             5 => '10 min',
1110             },
1111             },
1112             22.1 => { # CSc4-b
1113             Name => 'MenuMonitorOffTime',
1114             Mask => 0xe0,
1115             PrintConv => {
1116             0 => '4 s',
1117             1 => '10 s',
1118             2 => '20 s', # default
1119             3 => '1 min',
1120             4 => '5 min',
1121             5 => '10 min',
1122             },
1123             },
1124             22.2 => { # CSc4-c
1125             Name => 'ShootingInfoMonitorOffTime',
1126             Mask => 0x1c,
1127             PrintConv => {
1128             0 => '4 s',
1129             1 => '10 s', # default
1130             2 => '20 s',
1131             3 => '1 min',
1132             4 => '5 min',
1133             5 => '10 min',
1134             },
1135             },
1136             23.1 => { # CSe1
1137             Name => 'FlashShutterSpeed',
1138             Mask => 0x0f,
1139             PrintConvColumns => 2,
1140             PrintConv => {
1141             0 => '1/60 s', # default
1142             1 => '1/30 s',
1143             2 => '1/15 s',
1144             3 => '1/8 s',
1145             4 => '1/4 s',
1146             5 => '1/2 s',
1147             6 => '1 s',
1148             7 => '2 s',
1149             8 => '4 s',
1150             9 => '8 s',
1151             10 => '15 s',
1152             11 => '30 s',
1153             },
1154             },
1155             24.1 => { # CSe2-a
1156             Name => 'InternalFlash',
1157             Mask => 0xc0,
1158             PrintConv => {
1159             0 => 'TTL',
1160             1 => 'Manual',
1161             2 => 'Repeating Flash',
1162             3 => 'Commander Mode',
1163             },
1164             },
1165             24.2 => { # CSe2-b
1166             Name => 'ManualFlashOutput',
1167             Mask => 0x1f,
1168             ValueConv => '2 ** (-$val/3)',
1169             ValueConvInv => '$val > 0 ? -3*log($val)/log(2) : 0',
1170             PrintConv => q{
1171             return 'Full' if $val > 0.99;
1172             Image::ExifTool::Exif::PrintExposureTime($val);
1173             },
1174             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
1175             },
1176             25.1 => { # CSe2-ca
1177             Name => 'RepeatingFlashOutput',
1178             Mask => 0x70,
1179             ValueConv => '2 ** (-$val-2)',
1180             ValueConvInv => '$val > 0 ? int(-log($val)/log(2)-2+0.5) : 0',
1181             PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
1182             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
1183             },
1184             25.2 => { # CSe2-cb
1185             Name => 'RepeatingFlashCount',
1186             Mask => 0x0f,
1187             ValueConv => '$val < 10 ? $val + 1 : 5 * ($val - 7)',
1188             ValueConvInv => '$val <= 10 ? $val - 1 : $val / 5 + 7',
1189             },
1190             26.1 => { # CSe2-cc (NC)
1191             Name => 'RepeatingFlashRate',
1192             Mask => 0xf0,
1193             ValueConv => '$val < 10 ? $val + 1 : 10 * ($val - 8)',
1194             ValueConvInv => 'int(($val <= 10 ? $val - 1 : $val / 10 + 8) + 0.5)',
1195             PrintConv => '"$val Hz"',
1196             PrintConvInv => '$val=~/(\d+)/; $1 || 0',
1197             },
1198             31.1 => { # CSd11
1199             Name => 'FlashWarning',
1200             Mask => 0x80,
1201             PrintConv => \%onOff,
1202             },
1203             31.2 => { # CSe2-ea
1204             Name => 'CommanderInternalTTLComp',
1205             Mask => 0x1f,
1206             ValueConv => '($val - 9) / 3',
1207             ValueConvInv => '$val * 3 + 9',
1208             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
1209             PrintConvInv => '$val',
1210             },
1211             31.3 => { # CSe3
1212             Name => 'ModelingFlash',
1213             Mask => 0x20,
1214             PrintConv => \%onOff,
1215             },
1216             31.4 => { # CSe5
1217             Name => 'AutoFP',
1218             Mask => 0x40,
1219             PrintConv => \%offOn,
1220             },
1221             32.1 => { # CSe2-eb
1222             Name => 'CommanderGroupA_TTLComp',
1223             Mask => 0x1f,
1224             ValueConv => '($val - 9) / 3',
1225             ValueConvInv => '$val * 3 + 9',
1226             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
1227             PrintConvInv => '$val',
1228             },
1229             33.1 => { # CSe2-ec
1230             Name => 'CommanderGroupB_TTLComp',
1231             Mask => 0x1f,
1232             ValueConv => '($val - 9) / 3',
1233             ValueConvInv => '$val * 3 + 9',
1234             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
1235             PrintConvInv => '$val',
1236             },
1237             34.1 => { # CSa7
1238             Name => 'LiveViewAF',
1239             Mask => 0xc0,
1240             PrintConv => {
1241             0 => 'Face Priority', #(NC)
1242             1 => 'Wide Area',
1243             2 => 'Normal Area',
1244             },
1245             },
1246             );
1247              
1248             # D300 (ref JD) and D3 (ref 1/PH) custom settings
1249             %Image::ExifTool::NikonCustom::SettingsD3 = (
1250             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1251             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
1252             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
1253             WRITABLE => 1,
1254             FIRST_ENTRY => 0,
1255             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
1256             NOTES => 'Custom settings for the D3, D3S, D3X, D300 and D300S.',
1257             # these settings have been decoded using the D3 and D300, and
1258             # extrapolated to the other models, but these haven't yet been
1259             # verified, and the following custom settings are missing:
1260             # CSf1-d (D3X,D3S) MultiSelectorLiveView
1261             # CSf1 (D300S) LightSwitch
1262             0.1 => { #1
1263             Name => 'CustomSettingsBank',
1264             Mask => 0x03,
1265             PrintConv => {
1266             0 => 'A',
1267             1 => 'B',
1268             2 => 'C',
1269             3 => 'D',
1270             },
1271             },
1272             0.2 => { #1
1273             Name => 'CustomSettingsAllDefault',
1274             Notes => '"No" if any custom setting for this bank was changed from the default',
1275             Mask => 0x80,
1276             PrintConv => { 0 => 'Yes', 1 => 'No' },
1277             },
1278             1.1 => { # CSa1
1279             Name => 'AF-CPrioritySelection',
1280             Mask => 0xc0,
1281             PrintConv => {
1282             0 => 'Release',
1283             1 => 'Release + Focus',
1284             2 => 'Focus',
1285             },
1286             },
1287             1.2 => { # CSa2
1288             Name => 'AF-SPrioritySelection',
1289             Mask => 0x20,
1290             PrintConv => {
1291             0 => 'Focus',
1292             1 => 'Release',
1293             },
1294             },
1295             1.3 => { # CSa8
1296             Name => 'AFPointSelection',
1297             Mask => 0x10,
1298             PrintConv => {
1299             0 => '51 Points',
1300             1 => '11 Points',
1301             },
1302             },
1303             1.4 => { # CSa3
1304             Name => 'DynamicAFArea',
1305             Mask => 0x0c,
1306             PrintConv => {
1307             0 => '9 Points',
1308             1 => '21 Points',
1309             2 => '51 Points',
1310             3 => '51 Points (3D-tracking)',
1311             },
1312             },
1313             1.5 => { # CSa4
1314             Name => 'FocusTrackingLockOn',
1315             Condition => '$$self{Model} !~ /D3S\b/',
1316             Notes => 'not D3S',
1317             Mask => 0x03,
1318             PrintConv => {
1319             0 => 'Long',
1320             1 => 'Normal',
1321             2 => 'Short',
1322             3 => 'Off',
1323             },
1324             },
1325             2.1 => { # CSa5
1326             Name => 'AFActivation',
1327             Mask => 0x80,
1328             PrintConv => {
1329             0 => 'Shutter/AF-On',
1330             1 => 'AF-On Only',
1331             },
1332             },
1333             2.2 => { # CSa7
1334             Name => 'FocusPointWrap',
1335             Mask => 0x08,
1336             PrintConv => {
1337             0 => 'No Wrap',
1338             1 => 'Wrap',
1339             },
1340             },
1341             2.3 => [ # CSa6
1342             {
1343             Name => 'AFPointIllumination',
1344             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1345             Notes => 'D3',
1346             Mask => 0x60,
1347             PrintConv => {
1348             0 => 'On in Continuous Shooting and Manual Focusing',
1349             1 => 'On During Manual Focusing',
1350             2 => 'On in Continuous Shooting Modes',
1351             3 => 'Off',
1352             },
1353             },
1354             {
1355             Name => 'AFPointIllumination',
1356             Notes => 'D300',
1357             Mask => 0x06,
1358             PrintConv => {
1359             0 => 'Auto',
1360             1 => 'Off',
1361             2 => 'On',
1362             },
1363             },
1364             ],
1365             2.4 => { # CSa6-b (D3, added by firmware update)
1366             Name => 'AFPointBrightness',
1367             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1368             Notes => 'D3 only',
1369             Mask => 0x06,
1370             PrintConv => {
1371             0 => 'Low',
1372             1 => 'Normal',
1373             2 => 'High',
1374             3 => 'Extra High',
1375             },
1376             },
1377             2.5 => { # CSa9 (D300)
1378             Name => 'AFAssist',
1379             Condition => '$$self{Model} =~ /D300S?\b/',
1380             Notes => 'D300 only',
1381             Mask => 0x01,
1382             PrintConv => \%onOff,
1383             },
1384             3.1 => { # CSa9 (D3)
1385             Name => 'AFOnButton',
1386             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1387             Notes => 'D3 only',
1388             Mask => 0x07,
1389             PrintConv => {
1390             0 => 'AF On',
1391             1 => 'AE/AF Lock',
1392             2 => 'AE Lock Only',
1393             3 => 'AE Lock (reset on release)',
1394             4 => 'AE Lock (hold)',
1395             5 => 'AF Lock Only',
1396             },
1397             },
1398             3.2 => { # CSa10 (D3)
1399             Name => 'VerticalAFOnButton',
1400             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1401             Notes => 'D3 only',
1402             Mask => 0x70,
1403             PrintConv => {
1404             0 => 'AF On',
1405             1 => 'AE/AF Lock',
1406             2 => 'AE Lock Only',
1407             3 => 'AE Lock (reset on release)',
1408             4 => 'AE Lock (hold)',
1409             5 => 'AF Lock Only',
1410             7 => 'Same as AF On',
1411             },
1412             },
1413             3.3 => { # CSa10 (D300)
1414             Name => 'AF-OnForMB-D10',
1415             Condition => '$$self{Model} =~ /D300S?\b/',
1416             Notes => 'D300 only',
1417             Mask => 0x70,
1418             PrintConv => {
1419             0 => 'AF-On',
1420             1 => 'AE/AF Lock',
1421             2 => 'AE Lock Only',
1422             3 => 'AE Lock (reset on release)',
1423             4 => 'AE Lock (hold)',
1424             5 => 'AF Lock Only',
1425             6 => 'Same as FUNC Button',
1426             },
1427             },
1428             4.1 => { # CSa4 (D3S)
1429             Name => 'FocusTrackingLockOn',
1430             Condition => '$$self{Model} =~ /D3S\b/',
1431             Notes => 'D3S only',
1432             Mask => 0x07,
1433             PrintConv => {
1434             0 => '5 (Long)',
1435             1 => '4',
1436             2 => '3 (Normal)',
1437             3 => '2',
1438             4 => '1 (Short)',
1439             5 => 'Off',
1440             },
1441             },
1442             4.2 => { # CSf7 (D3S)
1443             Name => 'AssignBktButton',
1444             Condition => '$$self{Model} =~ /D3S\b/',
1445             Notes => 'D3S only',
1446             Mask => 0x08,
1447             PrintConv => {
1448             0 => 'Auto Bracketing',
1449             1 => 'Multiple Exposure',
1450             },
1451             },
1452             4.3 => { # CSf1-c (D3S) (ref 1)
1453             Name => 'MultiSelectorLiveView',
1454             Condition => '$$self{Model} =~ /D3S\b/',
1455             Notes => 'D3S only',
1456             Mask => 0xc0,
1457             PrintConv => {
1458             0 => 'Reset',
1459             1 => 'Zoom On/Off',
1460             2 => 'Start Movie Recording',
1461             3 => 'Not Used',
1462             },
1463             },
1464             4.4 => { # CSf1-c2 (D3S) (ref 1)
1465             Name => 'InitialZoomLiveView',
1466             Condition => '$$self{Model} =~ /D3S\b/',
1467             Notes => 'D3S only',
1468             Mask => 0x30,
1469             PrintConv => {
1470             0 => 'Low Magnification',
1471             1 => 'Medium Magnification',
1472             2 => 'High Magnification',
1473             },
1474             },
1475             6.1 => { # CSb1
1476             Name => 'ISOStepSize',
1477             Mask => 0xc0,
1478             PrintConv => {
1479             0 => '1/3 EV',
1480             1 => '1/2 EV',
1481             2 => '1 EV',
1482             },
1483             },
1484             6.2 => { # CSb2
1485             Name => 'ExposureControlStepSize',
1486             Mask => 0x30,
1487             PrintConv => {
1488             0 => '1/3 EV',
1489             1 => '1/2 EV',
1490             2 => '1 EV',
1491             },
1492             },
1493             6.3 => { # CSb3
1494             Name => 'ExposureCompStepSize',
1495             Mask => 0x0c,
1496             PrintConv => {
1497             0 => '1/3 EV',
1498             1 => '1/2 EV',
1499             2 => '1 EV',
1500             },
1501             },
1502             6.4 => { # CSb4
1503             Name => 'EasyExposureCompensation',
1504             Mask => 0x03,
1505             PrintConv => {
1506             0 => 'Off',
1507             1 => 'On',
1508             2 => 'On (auto reset)',
1509             },
1510             },
1511             7.1 => [ # CSb5
1512             {
1513             Name => 'CenterWeightedAreaSize',
1514             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1515             Notes => 'D3',
1516             Mask => 0xe0,
1517             PrintConv => {
1518             0 => '8 mm',
1519             1 => '12 mm',
1520             2 => '15 mm',
1521             3 => '20 mm',
1522             4 => 'Average',
1523             },
1524             },
1525             {
1526             Name => 'CenterWeightedAreaSize',
1527             Notes => 'D300',
1528             Mask => 0xe0,
1529             PrintConv => {
1530             0 => '6 mm',
1531             1 => '8 mm',
1532             2 => '10 mm',
1533             3 => '13 mm',
1534             4 => 'Average',
1535             },
1536             },
1537             ],
1538             7.2 => { # CSb6-b
1539             Name => 'FineTuneOptCenterWeighted',
1540             Mask => 0x0f,
1541             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
1542             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
1543             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
1544             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
1545             },
1546             8.1 => { # CSb6-a
1547             Name => 'FineTuneOptMatrixMetering',
1548             Mask => 0xf0,
1549             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
1550             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
1551             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
1552             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
1553             },
1554             8.2 => { # CSb6-c
1555             Name => 'FineTuneOptSpotMetering',
1556             Mask => 0x0f,
1557             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
1558             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
1559             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
1560             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
1561             },
1562             9.1 => { # CSf1-a, CSf2-a (D300S)
1563             Name => 'MultiSelectorShootMode',
1564             Mask => 0xc0,
1565             PrintConv => {
1566             0 => 'Select Center Focus Point',
1567             1 => 'Highlight Active Focus Point',
1568             2 => 'Not Used',
1569             },
1570             },
1571             9.2 => { # CSf1-b, CSf2-b (D300S)
1572             Name => 'MultiSelectorPlaybackMode',
1573             Condition => '$$self{Model} !~ /D3S\b/',
1574             Notes => 'all models except D3S', # (not confirmed for D3X)
1575             Mask => 0x30,
1576             PrintConv => {
1577             0 => 'Thumbnail On/Off',
1578             1 => 'View Histograms',
1579             2 => 'Zoom On/Off',
1580             3 => 'Choose Folder',
1581             },
1582             },
1583             9.3 => [ # CSf1-b2, CSf2-b2 (D300S)
1584             {
1585             Name => 'InitialZoomSetting',
1586             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1587             Notes => 'D3',
1588             Mask => 0x0c,
1589             PrintConv => { #1
1590             0 => 'High Magnification',
1591             1 => 'Medium Magnification',
1592             2 => 'Low Magnification',
1593             },
1594             },
1595             {
1596             Name => 'InitialZoomSetting',
1597             Notes => 'D300',
1598             Mask => 0x0c,
1599             PrintConv => { #JD
1600             0 => 'Low Magnification',
1601             1 => 'Medium Magnification',
1602             2 => 'High Magnification',
1603             },
1604             },
1605             ],
1606             9.4 => { # CSf2 (D300,D3), CSf3 (D300S)
1607             Name => 'MultiSelector',
1608             Mask => 0x01,
1609             PrintConv => {
1610             0 => 'Do Nothing',
1611             1 => 'Reset Meter-off Delay',
1612             },
1613             },
1614             10.1 => { # CSd9 (D300,D3S), CSd10 (D300S), CSd8 (D3)
1615             Name => 'ExposureDelayMode',
1616             Mask => 0x40,
1617             PrintConv => \%offOn,
1618             },
1619             10.2 => { # CSd4 (D300), CDs5 (D300S), CSd2-a (D3)
1620             Name => 'CLModeShootingSpeed',
1621             Mask => 0x07,
1622             PrintConv => '"$val fps"',
1623             PrintConvInv => '$val=~s/\s*fps//i; $val',
1624             },
1625             10.3 => { # (D3 CSd2-b)
1626             Name => 'CHModeShootingSpeed',
1627             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1628             Notes => 'D3 only',
1629             Mask => 0x30,
1630             PrintConv => {
1631             0 => '9 fps',
1632             1 => '10 fps',
1633             2 => '11 fps',
1634             },
1635             },
1636             11 => { # CSd5 (D300), CSd6 (D300S), CSd3 (D3)
1637             Name => 'MaxContinuousRelease',
1638             # values: 1-100 (D300), 1-130 (D3)
1639             },
1640             12.1 => { # CSf10, CSf11 (D3S,D300S)
1641             Name => 'ReverseIndicators',
1642             Mask => 0x20,
1643             PrintConv => {
1644             0 => '+ 0 -',
1645             1 => '- 0 +',
1646             },
1647             },
1648             12.2 => [ # CSd6 (D300), CSd7 (D300S), CSd4 (D3)
1649             {
1650             Name => 'FileNumberSequence',
1651             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1652             Notes => 'D3',
1653             Mask => 0x02,
1654             PrintConv => \%onOff,
1655             },
1656             {
1657             Name => 'FileNumberSequence',
1658             Notes => 'D300',
1659             Mask => 0x08,
1660             PrintConv => \%onOff,
1661             },
1662             ],
1663             12.3 => { # CSd5-a (D3)
1664             Name => 'RearDisplay',
1665             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1666             Notes => 'D3 only',
1667             Mask => 0x80,
1668             PrintConv => {
1669             0 => 'ISO',
1670             1 => 'Exposures Remaining',
1671             },
1672             },
1673             12.4 => { # CSd5-b (D3)
1674             Name => 'ViewfinderDisplay',
1675             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1676             Notes => 'D3 only',
1677             Mask => 0x40,
1678             PrintConv => {
1679             0 => 'Frame Count',
1680             1 => 'Exposures Remaining',
1681             },
1682             },
1683             12.5 => { # CSd11 (D300), CSd12 (D300S)
1684             Name => 'BatteryOrder',
1685             Condition => '$$self{Model} =~ /D300S?\b/',
1686             Notes => 'D300 only',
1687             Mask => 0x04,
1688             PrintConv => {
1689             0 => 'MB-D10 First',
1690             1 => 'Camera Battery First',
1691             },
1692             },
1693             12.6 => { # CSd10 (D300), CSd11 (D300S)
1694             Name => 'MB-D10Batteries',
1695             Condition => '$$self{Model} =~ /D300S?\b/',
1696             Notes => 'D300 only',
1697             Mask => 0x03,
1698             PrintConv => {
1699             0 => 'LR6 (AA alkaline)',
1700             1 => 'HR6 (AA Ni-MH)',
1701             2 => 'FR6 (AA lithium)',
1702             3 => 'ZR6 (AA Ni-Mn)',
1703             },
1704             },
1705             12.7 => { # CSd7 (D3S), CSd4, (D300S)
1706             Name => 'ScreenTips',
1707             Condition => '$$self{Model} =~ /(D3S|D300S)\b/',
1708             Mask => 0x10,
1709             PrintConv => \%onOff,
1710             },
1711             13.1 => { # CSd1
1712             Name => 'Beep',
1713             Mask => 0xc0,
1714             PrintConv => {
1715             0 => 'High',
1716             1 => 'Low',
1717             2 => 'Off',
1718             },
1719             },
1720             13.2 => { # CSd7 (D300), CSd8 (D300S), CSd6 (D3)
1721             Name => 'ShootingInfoDisplay',
1722             Mask => 0x30,
1723             PrintConv => {
1724             0 => 'Auto', #JD (D300)
1725             1 => 'Auto', #1 (D3)
1726             2 => 'Manual (dark on light)',
1727             3 => 'Manual (light on dark)',
1728             },
1729             },
1730             13.3 => { # CSd2 (D300)
1731             Name => 'GridDisplay',
1732             Condition => '$$self{Model} =~ /D300S?\b/',
1733             Notes => 'D300 only',
1734             Mask => 0x02,
1735             PrintConv => \%offOn,
1736             },
1737             13.4 => { # CSd3 (D300)
1738             Name => 'ViewfinderWarning',
1739             Condition => '$$self{Model} =~ /D300S?\b/',
1740             Notes => 'D300 only',
1741             Mask => 0x01,
1742             PrintConv => \%onOff,
1743             },
1744             13.5 => { # CSf1-b (D3S) (ref 1)
1745             Name => 'MultiSelectorPlaybackMode',
1746             Condition => '$$self{Model} =~ /D3S\b/',
1747             Notes => 'D3S only',
1748             Mask => 0x03,
1749             PrintConv => {
1750             0 => 'Thumbnail On/Off',
1751             1 => 'View Histograms',
1752             2 => 'Zoom On/Off',
1753             },
1754             },
1755             14.1 => [ # CSf5-a (ref 1), CSf6-a (D300S)
1756             {
1757             Name => 'PreviewButton',
1758             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1759             Notes => 'D3',
1760             Mask => 0xf8,
1761             PrintConv => {
1762             0 => 'None',
1763             1 => 'Preview',
1764             2 => 'FV Lock',
1765             3 => 'AE/AF Lock',
1766             4 => 'AE Lock Only',
1767             5 => 'AE Lock (reset on release)',
1768             6 => 'AE Lock (hold)',
1769             7 => 'AF Lock Only',
1770             8 => 'Flash Off',
1771             9 => 'Bracketing Burst',
1772             10 => 'Matrix Metering',
1773             11 => 'Center-weighted Metering',
1774             12 => 'Spot Metering',
1775             13 => 'Virtual Horizon',
1776             # 14 not used
1777             15 => 'Playback',
1778             16 => 'My Menu Top',
1779             },
1780             },
1781             { #PH
1782             Name => 'FuncButton',
1783             Notes => 'D300',
1784             Mask => 0xf8,
1785             PrintConv => {
1786             0 => 'None',
1787             1 => 'Preview',
1788             2 => 'FV Lock',
1789             3 => 'AE/AF Lock',
1790             4 => 'AE Lock Only',
1791             5 => 'AE Lock (reset on release)',
1792             6 => 'AE Lock (hold)',
1793             7 => 'AF Lock Only',
1794             # 8 not used
1795             9 => 'Flash Off',
1796             10 => 'Bracketing Burst',
1797             11 => 'Matrix Metering',
1798             12 => 'Center-weighted Metering',
1799             13 => 'Spot Metering',
1800             14 => 'Playback', #PH (guess)
1801             15 => 'My Menu Top', #PH (guess)
1802             16 => '+ NEF (RAW)', #PH (guess)
1803             },
1804             },
1805             ],
1806             14.2 => [ # CSf5-b (PH,NC), CSf6-b (D300S)
1807             {
1808             Name => 'PreviewButtonPlusDials',
1809             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1810             Notes => 'D3',
1811             Mask => 0x07,
1812             PrintConv => {
1813             0 => 'None',
1814             1 => 'Choose Image Area (FX/DX/5:4)',
1815             2 => 'One Step Speed/Aperture',
1816             3 => 'Choose Non-CPU Lens Number',
1817             # n/a 4 => 'Focus Point Selection',
1818             5 => 'Choose Image Area (FX/DX)',
1819             6 => 'Shooting Bank Menu',
1820             7 => 'Dynamic AF Area', #PH (D3S,D3X,NC)
1821             },
1822             },
1823             { #PH
1824             Name => 'FuncButtonPlusDials',
1825             Notes => 'D300',
1826             Mask => 0x07,
1827             PrintConv => {
1828             0 => 'None',
1829             2 => 'One Step Speed/Aperture',
1830             3 => 'Choose Non-CPU Lens Number',
1831             5 => 'Auto Bracketing',
1832             6 => 'Dynamic AF Area',
1833             },
1834             },
1835             ],
1836             15.1 => [ # CSf4-a (ref 1), CSf5-a (D300S)
1837             {
1838             Name => 'FuncButton',
1839             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1840             Notes => 'D3',
1841             Mask => 0xf8,
1842             PrintConv => {
1843             0 => 'None',
1844             1 => 'Preview',
1845             2 => 'FV Lock',
1846             3 => 'AE/AF Lock',
1847             4 => 'AE Lock Only',
1848             5 => 'AE Lock (reset on release)',
1849             6 => 'AE Lock (hold)',
1850             7 => 'AF Lock Only',
1851             8 => 'Flash Off',
1852             9 => 'Bracketing Burst',
1853             10 => 'Matrix Metering',
1854             11 => 'Center-weighted Metering',
1855             12 => 'Spot Metering',
1856             13 => 'Virtual Horizon',
1857             # 14 not used
1858             15 => 'Playback',
1859             16 => 'My Menu Top',
1860             },
1861             },
1862             { #PH
1863             Name => 'PreviewButton',
1864             Notes => 'D300',
1865             Mask => 0xf8,
1866             PrintConv => {
1867             0 => 'None',
1868             1 => 'Preview',
1869             2 => 'FV Lock',
1870             3 => 'AE/AF Lock',
1871             4 => 'AE Lock Only',
1872             5 => 'AE Lock (reset on release)',
1873             6 => 'AE Lock (hold)',
1874             7 => 'AF Lock Only',
1875             # 8 not used
1876             9 => 'Flash Off',
1877             10 => 'Bracketing Burst',
1878             11 => 'Matrix Metering',
1879             12 => 'Center-weighted Metering',
1880             13 => 'Spot Metering',
1881             14 => 'Playback', #PH (guess)
1882             15 => 'My Menu Top', #PH (guess)
1883             16 => '+ NEF (RAW)', #PH (guess)
1884             },
1885             },
1886             ],
1887             15.2 => [ # CSf4-b (ref 1), CSf5-b (D300S)
1888             {
1889             Name => 'FuncButtonPlusDials',
1890             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1891             Notes => 'D3',
1892             Mask => 0x07,
1893             PrintConv => {
1894             0 => 'None',
1895             1 => 'Choose Image Area (FX/DX/5:4)',
1896             2 => 'One Step Speed/Aperture',
1897             3 => 'Choose Non-CPU Lens Number',
1898             4 => 'Focus Point Selection', #(NC)
1899             5 => 'Choose Image Area (FX/DX)',
1900             6 => 'Shooting Bank Menu',
1901             7 => 'Dynamic AF Area', #PH (D3S,D3X,NC)
1902             },
1903             },
1904             { #PH
1905             Name => 'PreviewButtonPlusDials',
1906             Notes => 'D300',
1907             Mask => 0x07,
1908             PrintConv => {
1909             0 => 'None',
1910             2 => 'One Step Speed/Aperture',
1911             3 => 'Choose Non-CPU Lens Number',
1912             5 => 'Auto Bracketing',
1913             6 => 'Dynamic AF Area',
1914             },
1915             },
1916             ],
1917             16.1 => [ # CSf6-a (ref 1), CSf7-a (D300S)
1918             {
1919             Name => 'AELockButton',
1920             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1921             Notes => 'D3',
1922             Mask => 0xf8,
1923             PrintConv => {
1924             0 => 'None',
1925             1 => 'Preview',
1926             2 => 'FV Lock',
1927             3 => 'AE/AF Lock',
1928             4 => 'AE Lock Only',
1929             5 => 'AE Lock (reset on release)',
1930             6 => 'AE Lock (hold)',
1931             7 => 'AF Lock Only',
1932             8 => 'Flash Off',
1933             9 => 'Bracketing Burst',
1934             10 => 'Matrix Metering',
1935             11 => 'Center-weighted Metering',
1936             12 => 'Spot Metering',
1937             13 => 'Virtual Horizon',
1938             14 => 'AF On', # (AE-L/AF-L button only)
1939             15 => 'Playback',
1940             16 => 'My Menu Top',
1941             },
1942             },
1943             { #PH
1944             Name => 'AELockButton',
1945             Notes => 'D300',
1946             Mask => 0xf8,
1947             PrintConv => {
1948             0 => 'None',
1949             1 => 'Preview',
1950             2 => 'FV Lock',
1951             3 => 'AE/AF Lock',
1952             4 => 'AE Lock Only',
1953             5 => 'AE Lock (reset on release)',
1954             6 => 'AE Lock (hold)',
1955             7 => 'AF Lock Only',
1956             8 => 'AF On', # (AE-L/AF-L button only)
1957             9 => 'Flash Off',
1958             10 => 'Bracketing Burst',
1959             11 => 'Matrix Metering',
1960             12 => 'Center-weighted Metering',
1961             13 => 'Spot Metering',
1962             14 => 'Playback', #PH (guess)
1963             15 => 'My Menu Top', #PH (guess)
1964             16 => '+ NEF (RAW)', #PH (guess)
1965             },
1966             },
1967             ],
1968             16.2 => [ # CSf6-b (ref 1), CSf7-b (D300S)
1969             {
1970             Name => 'AELockButtonPlusDials',
1971             Condition => '$$self{Model} =~ /D3[SX]?\b/',
1972             Notes => 'D3',
1973             Mask => 0x07,
1974             PrintConv => {
1975             0 => 'None',
1976             1 => 'Choose Image Area (FX/DX/5:4)',
1977             2 => 'One Step Speed/Aperture',
1978             3 => 'Choose Non-CPU Lens Number',
1979             # n/c 4 => 'Focus Point Selection', #(NC)
1980             5 => 'Choose Image Area (FX/DX)',
1981             6 => 'Shooting Bank Menu',
1982             7 => 'Dynamic AF Area', #PH (D3S,D3X,NC)
1983             },
1984             },
1985             { #PH
1986             Name => 'AELockButtonPlusDials',
1987             Notes => 'D300',
1988             Mask => 0x07,
1989             PrintConv => {
1990             0 => 'None',
1991             # n/a 2 => 'One Step Speed/Aperture',
1992             3 => 'Choose Non-CPU Lens Number',
1993             5 => 'Auto Bracketing', #(NC)
1994             6 => 'Dynamic AF Area',
1995             },
1996             },
1997             ],
1998             17.1 => { # CSf7-a, CSf8-a (D3S,D300S)
1999             Name => 'CommandDialsReverseRotation',
2000             Mask => 0x80,
2001             PrintConv => \%noYes,
2002             },
2003             17.2 => { # CSf7-b, CSf8-b (D3S,D300S)
2004             Name => 'CommandDialsChangeMainSub',
2005             Mask => 0x40,
2006             PrintConv => \%offOn,
2007             },
2008             17.3 => { # CSf7-c, CSf8-c (D3S,D300S)
2009             Name => 'CommandDialsApertureSetting',
2010             Mask => 0x20,
2011             PrintConv => {
2012             0 => 'Sub-command Dial',
2013             1 => 'Aperture Ring',
2014             },
2015             },
2016             17.4 => { # CSf7-d, CSf8-d (D3S,D300S)
2017             Name => 'CommandDialsMenuAndPlayback',
2018             Mask => 0x10,
2019             PrintConv => \%offOn,
2020             },
2021             17.5 => { # CSd8 (D300,D3S), CSd9 (D300S), CSd7 (D3)
2022             Name => 'LCDIllumination',
2023             Mask => 0x08,
2024             PrintConv => \%offOn,
2025             },
2026             17.6 => { # CSf3, CSf4 (D300S)
2027             Name => 'PhotoInfoPlayback',
2028             Mask => 0x04,
2029             PrintConv => {
2030             0 => 'Info Up-down, Playback Left-right',
2031             1 => 'Info Left-right, Playback Up-down',
2032             },
2033             },
2034             17.7 => { # CSc1
2035             Name => 'ShutterReleaseButtonAE-L',
2036             Mask => 0x02,
2037             PrintConv => \%offOn,
2038             },
2039             17.8 => { # CSf8, CSf9 (D3S,D300S)
2040             Name => 'ReleaseButtonToUseDial',
2041             Mask => 0x01,
2042             PrintConv => \%noYes,
2043             },
2044             18.1 => { # CSc3
2045             Name => 'SelfTimerTime',
2046             Mask => 0x18,
2047             PrintConv => {
2048             0 => '2 s',
2049             1 => '5 s',
2050             2 => '10 s',
2051             3 => '20 s',
2052             },
2053             },
2054             18.2 => { # CSc4
2055             Name => 'MonitorOffTime',
2056             # NOTE: The D3S and D300S have separate settings for Playback,
2057             # Image Review, Menus, and Information Display times
2058             Mask => 0x07,
2059             PrintConv => {
2060             0 => '10 s',
2061             1 => '20 s',
2062             2 => '1 min',
2063             3 => '5 min',
2064             4 => '10 min',
2065             },
2066             },
2067             20.1 => [ # CSe1
2068             {
2069             Name => 'FlashSyncSpeed',
2070             Condition => '$$self{Model} =~ /D3[SX]?\b/',
2071             Notes => 'D3',
2072             Mask => 0xe0,
2073             PrintConv => {
2074             0 => '1/250 s (auto FP)',
2075             1 => '1/250 s',
2076             2 => '1/200 s',
2077             3 => '1/160 s',
2078             4 => '1/125 s',
2079             5 => '1/100 s',
2080             6 => '1/80 s',
2081             7 => '1/60 s',
2082             },
2083             },
2084             {
2085             Name => 'FlashSyncSpeed',
2086             Notes => 'D300',
2087             Mask => 0xf0,
2088             PrintConv => {
2089             0 => '1/320 s (auto FP)',
2090             1 => '1/250 s (auto FP)',
2091             2 => '1/250 s',
2092             3 => '1/200 s',
2093             4 => '1/160 s',
2094             5 => '1/125 s',
2095             6 => '1/100 s',
2096             7 => '1/80 s',
2097             8 => '1/60 s',
2098             },
2099             },
2100             ],
2101             20.2 => { # CSe2
2102             Name => 'FlashShutterSpeed',
2103             Mask => 0x0f,
2104             PrintConvColumns => 2,
2105             PrintConv => {
2106             0 => '1/60 s',
2107             1 => '1/30 s',
2108             2 => '1/15 s',
2109             3 => '1/8 s',
2110             4 => '1/4 s',
2111             5 => '1/2 s',
2112             6 => '1 s',
2113             7 => '2 s',
2114             8 => '4 s',
2115             9 => '8 s',
2116             10 => '15 s',
2117             11 => '30 s',
2118             },
2119             },
2120             21.1 => [{ # CSe5 (D300), CSe4 (D3)
2121             Name => 'AutoBracketSet',
2122             Condition => '$$self{Model} !~ /(D3S|D300S)\b/',
2123             Notes => 'D3 and D300',
2124             Mask => 0xc0,
2125             PrintConv => {
2126             0 => 'AE & Flash',
2127             1 => 'AE Only',
2128             2 => 'Flash Only',
2129             3 => 'WB Bracketing',
2130             },
2131             },{ # CSe4 (D3S) (NC for D300S)
2132             Name => 'AutoBracketSet',
2133             Notes => 'D3S and D300S',
2134             Mask => 0xe0,
2135             PrintConv => {
2136             0 => 'AE & Flash',
2137             1 => 'AE Only',
2138             2 => 'Flash Only',
2139             3 => 'WB Bracketing',
2140             # D3S/D300S have an "ADL Bracketing" setting - PH
2141             4 => 'ADL Bracketing',
2142             },
2143             }],
2144             21.2 => [{ # CSe6 (D300), CSe5 (D3)
2145             Name => 'AutoBracketModeM',
2146             Condition => '$$self{Model} !~ /(D3S|D300S)\b/',
2147             Notes => 'D3 and D300',
2148             Mask => 0x30,
2149             PrintConv => {
2150             0 => 'Flash/Speed',
2151             1 => 'Flash/Speed/Aperture',
2152             2 => 'Flash/Aperture',
2153             3 => 'Flash Only',
2154             },
2155             },{ # CSe5 (D3S)
2156             Name => 'AutoBracketModeM',
2157             Notes => 'D3S and D300S',
2158             Mask => 0x18,
2159             PrintConv => {
2160             0 => 'Flash/Speed',
2161             1 => 'Flash/Speed/Aperture',
2162             2 => 'Flash/Aperture',
2163             3 => 'Flash Only',
2164             },
2165             }],
2166             21.3 => [{ # CSe7 (D300), CSe6 (D3)
2167             Name => 'AutoBracketOrder',
2168             Condition => '$$self{Model} !~ /(D3S|D300S)\b/',
2169             Notes => 'D3 and D300',
2170             Mask => 0x08,
2171             PrintConv => {
2172             0 => '0,-,+',
2173             1 => '-,0,+',
2174             },
2175             },{ # CSe6 (D3S)
2176             Name => 'AutoBracketOrder',
2177             Notes => 'D3S and D300S',
2178             Mask => 0x04,
2179             PrintConv => {
2180             0 => '0,-,+',
2181             1 => '-,0,+',
2182             },
2183             }],
2184             21.4 => { # CSe4 (D300), CSe3 (D3)
2185             Name => 'ModelingFlash',
2186             Mask => 0x01,
2187             PrintConv => \%onOff,
2188             },
2189             22.1 => { # CSf9, CSf10 (D3S,D300S)
2190             Name => 'NoMemoryCard',
2191             Mask => 0x80,
2192             PrintConv => {
2193             0 => 'Release Locked',
2194             1 => 'Enable Release',
2195             },
2196             },
2197             22.2 => { # CSc2
2198             Name => 'MeteringTime',
2199             Mask => 0x0f,
2200             PrintConvColumns => 2,
2201             PrintConv => {
2202             0 => '4 s',
2203             1 => '6 s',
2204             2 => '8 s',
2205             3 => '16 s',
2206             4 => '30 s',
2207             5 => '1 min',
2208             6 => '5 min',
2209             7 => '10 min',
2210             8 => '30 min',
2211             9 => 'No Limit',
2212             },
2213             },
2214             23.1 => { # CSe3
2215             Name => 'InternalFlash',
2216             Mask => 0xc0,
2217             PrintConv => {
2218             0 => 'TTL',
2219             1 => 'Manual',
2220             2 => 'Repeating Flash',
2221             3 => 'Commander Mode',
2222             },
2223             },
2224             25.1 => { #1 CSc4-d (D3S)
2225             Name => 'ImageReviewTime',
2226             Mask => 0xe0,
2227             PrintConv => {
2228             0 => '4 s',
2229             1 => '10 s',
2230             2 => '20 s',
2231             3 => '1 min',
2232             4 => '5 min',
2233             5 => '10 min',
2234             },
2235             },
2236             25.2 => { #1 CSc4-a (D3S)
2237             Name => 'PlaybackMonitorOffTime',
2238             Mask => 0x1c,
2239             PrintConv => {
2240             0 => '4 s',
2241             1 => '10 s',
2242             2 => '20 s',
2243             3 => '1 min',
2244             4 => '5 min',
2245             5 => '10 min',
2246             },
2247             },
2248             26.1 => { #1 CSc4-b (D3S)
2249             Name => 'MenuMonitorOffTime',
2250             Mask => 0xe0,
2251             PrintConv => {
2252             0 => '4 s',
2253             1 => '10 s',
2254             2 => '20 s',
2255             3 => '1 min',
2256             4 => '5 min',
2257             5 => '10 min',
2258             },
2259             },
2260             26.2 => { #1 CSc4-c (D3S)
2261             Name => 'ShootingInfoMonitorOffTime',
2262             Mask => 0x1c,
2263             PrintConv => {
2264             0 => '4 s',
2265             1 => '10 s',
2266             2 => '20 s',
2267             3 => '1 min',
2268             4 => '5 min',
2269             5 => '10 min',
2270             },
2271             },
2272             );
2273              
2274             # D700 custom settings (ref 2)
2275             %Image::ExifTool::NikonCustom::SettingsD700 = (
2276             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2277             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
2278             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
2279             WRITABLE => 1,
2280             FIRST_ENTRY => 0,
2281             DATAMEMBER => [ 16.1 ],
2282             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2283             NOTES => 'Custom settings for the D700.',
2284             0.1 => { #1
2285             Name => 'CustomSettingsBank',
2286             Mask => 0x03,
2287             PrintConv => {
2288             0 => 'A',
2289             1 => 'B',
2290             2 => 'C',
2291             3 => 'D',
2292             },
2293             },
2294             0.2 => { #1
2295             Name => 'CustomSettingsAllDefault',
2296             Notes => '"No" if any custom setting for this bank was changed from the default',
2297             Mask => 0x80,
2298             PrintConv => { 0 => 'Yes', 1 => 'No' },
2299             },
2300             1.1 => { # CSa1
2301             Name => 'AF-CPrioritySelection',
2302             Mask => 0xc0,
2303             PrintConv => {
2304             0 => 'Release',
2305             1 => 'Release + Focus',
2306             2 => 'Focus',
2307             },
2308             },
2309             1.2 => { # CSa2
2310             Name => 'AF-SPrioritySelection',
2311             Mask => 0x20,
2312             PrintConv => {
2313             0 => 'Focus',
2314             1 => 'Release',
2315             },
2316             },
2317             1.3 => { # CSa8
2318             Name => 'AFPointSelection',
2319             Mask => 0x10,
2320             PrintConv => {
2321             0 => '51 Points',
2322             1 => '11 Points',
2323             },
2324             },
2325             1.4 => { # CSa3
2326             Name => 'DynamicAFArea',
2327             Mask => 0x0c,
2328             PrintConv => {
2329             0 => '9 Points',
2330             1 => '21 Points',
2331             2 => '51 Points',
2332             3 => '51 Points (3D-tracking)',
2333             },
2334             },
2335             2.1 => { # CSa5
2336             Name => 'AFActivation',
2337             Mask => 0x80,
2338             PrintConv => {
2339             0 => 'Shutter/AF-On',
2340             1 => 'AF-On Only',
2341             },
2342             },
2343             2.2 => { # CSa7
2344             Name => 'FocusPointWrap',
2345             Mask => 0x08,
2346             PrintConv => {
2347             0 => 'No Wrap',
2348             1 => 'Wrap',
2349             },
2350             },
2351             2.3 => { # CSa6
2352             Name => 'AFPointIllumination',
2353             Mask => 0x06,
2354             PrintConv => {
2355             0 => 'Auto',
2356             1 => 'Off',
2357             2 => 'On',
2358             },
2359             },
2360             2.4 => { # CSa9
2361             Name => 'AFAssist',
2362             Mask => 0x01,
2363             PrintConv => \%onOff,
2364             },
2365             3.1 => { # CSa4
2366             Name => 'FocusTrackingLockOn',
2367             Mask => 0x07,
2368             PrintConv => {
2369             0 => '3 Normal',
2370             1 => '4',
2371             2 => '5 Long',
2372             3 => '2',
2373             4 => '1 Short',
2374             5 => 'Off',
2375             },
2376             },
2377             3.2 => { # CSa10
2378             Name => 'AF-OnForMB-D10',
2379             Mask => 0x70,
2380             PrintConv => {
2381             0 => 'AF-On',
2382             1 => 'AE/AF Lock',
2383             2 => 'AE Lock Only',
2384             3 => 'AE Lock (reset on release)',
2385             4 => 'AE Lock (hold)',
2386             5 => 'AF Lock Only',
2387             6 => 'Same as FUNC Button',
2388             },
2389             },
2390             4.1 => { # CSb1
2391             Name => 'ISOStepSize',
2392             Mask => 0xc0,
2393             PrintConv => {
2394             0 => '1/3 EV',
2395             1 => '1/2 EV',
2396             2 => '1 EV',
2397             },
2398             },
2399             4.2 => { # CSb2
2400             Name => 'ExposureControlStepSize',
2401             Mask => 0x30,
2402             PrintConv => {
2403             0 => '1/3 EV',
2404             1 => '1/2 EV',
2405             2 => '1 EV',
2406             },
2407             },
2408             4.3 => { # CSb3
2409             Name => 'ExposureCompStepSize',
2410             Mask => 0x0c,
2411             PrintConv => {
2412             0 => '1/3 EV',
2413             1 => '1/2 EV',
2414             2 => '1 EV',
2415             },
2416             },
2417             4.4 => { # CSb4
2418             Name => 'EasyExposureCompensation',
2419             Mask => 0x03,
2420             PrintConv => {
2421             0 => 'Off',
2422             1 => 'On',
2423             2 => 'On (auto reset)',
2424             },
2425             },
2426             5.1 => { # CSb5
2427             Name => 'CenterWeightedAreaSize',
2428             Mask => 0x70,
2429             PrintConv => {
2430             0 => '8 mm',
2431             1 => '12 mm',
2432             2 => '15 mm',
2433             3 => '20 mm',
2434             4 => 'Average',
2435             },
2436             },
2437             6.1 => { # CSb6-a
2438             Name => 'FineTuneOptMatrixMetering',
2439             Mask => 0xf0,
2440             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
2441             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
2442             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
2443             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
2444             },
2445             6.2 => { # CSb6-c
2446             Name => 'FineTuneOptSpotMetering',
2447             Mask => 0x0f,
2448             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
2449             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
2450             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
2451             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
2452             },
2453             7.1 => { # CSc1
2454             Name => 'ShutterReleaseButtonAE-L',
2455             Mask => 0x80,
2456             PrintConv => \%offOn,
2457             },
2458             7.2 => { # CSc3
2459             Name => 'SelfTimerTime',
2460             Mask => 0x30,
2461             PrintConv => {
2462             0 => '2 s',
2463             1 => '5 s',
2464             2 => '10 s',
2465             3 => '20 s',
2466             },
2467             },
2468             7.3 => { # CSc2
2469             Name => 'MeteringTime',
2470             Mask => 0x0f,
2471             PrintConvColumns => 2,
2472             PrintConv => {
2473             0 => '4 s',
2474             1 => '6 s',
2475             2 => '8 s',
2476             3 => '16 s',
2477             4 => '30 s',
2478             5 => '1 min',
2479             6 => '5 min',
2480             7 => '10 min',
2481             8 => '30 min',
2482             9 => 'No Limit',
2483             },
2484             },
2485             8.1 => { # CSc4-a
2486             Name => 'PlaybackMonitorOffTime',
2487             Mask => 0x38,
2488             PrintConv => {
2489             0 => '4 s',
2490             1 => '10 s',
2491             2 => '20 s',
2492             3 => '1 min',
2493             4 => '5 min',
2494             5 => '10 min',
2495             },
2496             },
2497             8.2 => { # CSc4-b
2498             Name => 'MenuMonitorOffTime',
2499             Mask => 0x07,
2500             PrintConv => {
2501             0 => '4 s',
2502             1 => '10 s',
2503             2 => '20 s',
2504             3 => '1 min',
2505             4 => '5 min',
2506             5 => '10 min',
2507             },
2508             },
2509             9.1 => { # CSc4-c
2510             Name => 'ShootingInfoMonitorOffTime',
2511             Mask => 0x38,
2512             PrintConv => {
2513             0 => '4 s',
2514             1 => '10 s',
2515             2 => '20 s',
2516             3 => '1 min',
2517             4 => '5 min',
2518             5 => '10 min',
2519             },
2520             },
2521             9.2 => { # CSc4-d
2522             Name => 'ImageReviewTime',
2523             Mask => 0x07,
2524             PrintConv => {
2525             0 => '4 s',
2526             1 => '10 s',
2527             2 => '20 s',
2528             3 => '1 min',
2529             4 => '5 min',
2530             5 => '10 min',
2531             },
2532             },
2533             10.1 => { # CSd1
2534             Name => 'Beep',
2535             Mask => 0xc0,
2536             PrintConv => {
2537             0 => 'High',
2538             1 => 'Low',
2539             2 => 'Off',
2540             },
2541             },
2542             10.2 => { # CSd7
2543             Name => 'ShootingInfoDisplay',
2544             Mask => 0x30,
2545             PrintConv => {
2546             0 => 'Auto', #JD (D300)
2547             1 => 'Auto', #1 (D3)
2548             2 => 'Manual (dark on light)',
2549             3 => 'Manual (light on dark)',
2550             },
2551             },
2552             10.3 => { # CSd8
2553             Name => 'LCDIllumination',
2554             Mask => 0x08,
2555             PrintConv => \%offOn,
2556             },
2557             10.4 => { # CSd9
2558             Name => 'ExposureDelayMode',
2559             Mask => 0x04,
2560             PrintConv => \%offOn,
2561             },
2562             10.5 => { # CSd2
2563             Name => 'GridDisplay',
2564             Mask => 0x02,
2565             PrintConv => \%offOn,
2566             },
2567             11.1 => { # CSd6
2568             Name => 'FileNumberSequence',
2569             Mask => 0x40,
2570             PrintConv => \%onOff,
2571             },
2572             11.2 => { # CSd4
2573             Name => 'CLModeShootingSpeed',
2574             Mask => 0x07,
2575             PrintConv => '"$val fps"',
2576             PrintConvInv => '$val=~s/\s*fps//i; $val',
2577             },
2578             12 => { # CSd5
2579             Name => 'MaxContinuousRelease',
2580             # values: 1-100
2581             },
2582             13.1 => { # CSd3
2583             Name => 'ScreenTips',
2584             Mask => 0x08,
2585             PrintConv => \%onOff,
2586             },
2587             13.2 => { # CSd11
2588             Name => 'BatteryOrder',
2589             Mask => 0x04,
2590             PrintConv => {
2591             0 => 'MB-D10 First',
2592             1 => 'Camera Battery First',
2593             },
2594             },
2595             13.3 => { # CSd10
2596             Name => 'MB-D10BatteryType',
2597             Mask => 0x03,
2598             PrintConv => {
2599             0 => 'LR6 (AA alkaline)',
2600             1 => 'HR6 (AA Ni-MH)',
2601             2 => 'FR6 (AA lithium)',
2602             3 => 'ZR6 (AA Ni-Mn)',
2603             },
2604             },
2605             15.1 => { # CSe1
2606             Name => 'FlashSyncSpeed',
2607             Mask => 0xf0,
2608             PrintConv => {
2609             0 => '1/320 s (auto FP)',
2610             1 => '1/250 s (auto FP)',
2611             2 => '1/250 s',
2612             3 => '1/200 s',
2613             4 => '1/160 s',
2614             5 => '1/125 s',
2615             6 => '1/100 s',
2616             7 => '1/80 s',
2617             8 => '1/60 s',
2618             },
2619             },
2620             15.2 => { # CSe2
2621             Name => 'FlashShutterSpeed',
2622             Mask => 0x0f,
2623             PrintConvColumns => 2,
2624             PrintConv => {
2625             0 => '1/60 s',
2626             1 => '1/30 s',
2627             2 => '1/15 s',
2628             3 => '1/8 s',
2629             4 => '1/4 s',
2630             5 => '1/2 s',
2631             6 => '1 s',
2632             7 => '2 s',
2633             8 => '4 s',
2634             9 => '8 s',
2635             10 => '15 s',
2636             11 => '30 s',
2637             },
2638             },
2639             16.1 => { # CSe3
2640             Name => 'FlashControlBuilt-in',
2641             # Note If set the Manual, Repeating Flash, Commander Mode
2642             # does not decode the detail settings.
2643             Mask => 0xc0,
2644             RawConv => '$$self{FlashControlBuiltin} = $val',
2645             PrintConv => {
2646             0 => 'TTL',
2647             1 => 'Manual',
2648             2 => 'Repeating Flash',
2649             3 => 'Commander Mode',
2650             },
2651             },
2652             16.2 => { # CSe3-b
2653             Name => 'ManualFlashOutput',
2654             Condition => '$$self{FlashControlBuiltin} == 1',
2655             Mask => 0x1f,
2656             ValueConv => '2 ** (-$val/3)',
2657             ValueConvInv => '$val > 0 ? -3*log($val)/log(2) : 0',
2658             PrintConv => q{
2659             return 'Full' if $val > 0.99;
2660             Image::ExifTool::Exif::PrintExposureTime($val);
2661             },
2662             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
2663             },
2664             17.1 => { # CSe3-ca
2665             Name => 'RepeatingFlashOutput',
2666             Condition => '$$self{FlashControlBuiltin} == 2',
2667             Mask => 0x70,
2668             ValueConv => '2 ** (-$val-2)',
2669             ValueConvInv => '$val > 0 ? int(-log($val)/log(2)-2+0.5) : 0',
2670             PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
2671             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
2672             },
2673             17.2 => { # CSe3-cb
2674             Name => 'RepeatingFlashCount',
2675             Condition => '$$self{FlashControlBuiltin} == 2',
2676             Mask => 0x0f,
2677             ValueConv => '$val < 10 ? $val + 1 : 5 * ($val - 7)',
2678             ValueConvInv => '$val <= 10 ? $val - 1 : $val / 5 + 7',
2679             },
2680             18.1 => { # CSe3-cc (NC)
2681             Name => 'RepeatingFlashRate',
2682             Condition => '$$self{FlashControlBuiltin} == 2',
2683             Mask => 0xf0,
2684             ValueConv => '$val < 10 ? $val + 1 : 10 * ($val - 8)',
2685             ValueConvInv => 'int(($val <= 10 ? $val - 1 : $val / 10 + 8) + 0.5)',
2686             PrintConv => '"$val Hz"',
2687             PrintConvInv => '$val=~/(\d+)/; $1 || 0',
2688             },
2689             18.2 => { # CSe3-dd
2690             Name => 'CommanderInternalTTLChannel',
2691             Condition => '$$self{FlashControlBuiltin} == 3',
2692             Mask => 0x03,
2693             PrintConv => {
2694             0 => '1 ch',
2695             1 => '2 ch',
2696             2 => '3 ch',
2697             3 => '4 ch',
2698             },
2699             },
2700             20.1 => { # CSe3-da
2701             Name => 'CommanderInternalTTLCompBuiltin',
2702             Condition => '$$self{FlashControlBuiltin} == 3',
2703             Mask => 0x1f,
2704             ValueConv => '($val - 9) / 3',
2705             ValueConvInv => '$val * 3 + 9',
2706             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
2707             PrintConvInv => '$val',
2708             },
2709             21.1 => { # CSe3-db
2710             Name => 'CommanderInternalTTLCompGroupA',
2711             Condition => '$$self{FlashControlBuiltin} == 3',
2712             Mask => 0x1f,
2713             ValueConv => '($val - 9) / 3',
2714             ValueConvInv => '$val * 3 + 9',
2715             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
2716             PrintConvInv => '$val',
2717             },
2718             22.1 => { # CSe3-dc
2719             Name => 'CommanderInternalTTLCompGroupB',
2720             Condition => '$$self{FlashControlBuiltin} == 3',
2721             Mask => 0x1f,
2722             ValueConv => '($val - 9) / 3',
2723             ValueConvInv => '$val * 3 + 9',
2724             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
2725             PrintConvInv => '$val',
2726             },
2727             26.1 => { # CSe5
2728             Name => 'AutoBracketSet',
2729             Mask => 0xc0,
2730             PrintConv => {
2731             0 => 'AE & Flash',
2732             1 => 'AE Only',
2733             2 => 'Flash Only',
2734             3 => 'WB Bracketing',
2735             },
2736             },
2737             26.2 => { # CSe6
2738             Name => 'AutoBracketModeM',
2739             Mask => 0x30,
2740             PrintConv => {
2741             0 => 'Flash/Speed',
2742             1 => 'Flash/Speed/Aperture',
2743             2 => 'Flash/Aperture',
2744             3 => 'Flash Only',
2745             },
2746             },
2747             26.3 => { # CSe7
2748             Name => 'AutoBracketOrder',
2749             Mask => 0x08,
2750             PrintConv => {
2751             0 => '0,-,+',
2752             1 => '-,0,+',
2753             },
2754             },
2755             26.4 => { # CSe4
2756             Name => 'ModelingFlash',
2757             Mask => 0x01,
2758             PrintConv => \%onOff,
2759             },
2760             27.1 => { # CSf2-a
2761             Name => 'MultiSelectorShootMode',
2762             Mask => 0xc0,
2763             PrintConv => {
2764             0 => 'Select Center Focus Point',
2765             1 => 'Highlight Active Focus Point',
2766             2 => 'Not Used',
2767             },
2768             },
2769             27.2 => { # CSf2-b
2770             Name => 'MultiSelectorPlaybackMode',
2771             Mask => 0x30,
2772             PrintConv => {
2773             0 => 'Thumbnail On/Off',
2774             1 => 'View Histograms',
2775             2 => 'Zoom On/Off',
2776             3 => 'Choose Folder',
2777             },
2778             },
2779             27.3 => { # CSf2-b2
2780             Name => 'InitialZoomSetting',
2781             Mask => 0x0c,
2782             PrintConv => { #1
2783             0 => 'Low Magnification',
2784             1 => 'Medium Magnification',
2785             2 => 'High Magnification',
2786             },
2787             },
2788             27.4 => { # CSf3
2789             Name => 'MultiSelector',
2790             Mask => 0x01,
2791             PrintConv => {
2792             0 => 'Do Nothing',
2793             1 => 'Reset Meter-off Delay',
2794             },
2795             },
2796             28.1 => { # CSf5-a
2797             Name => 'FuncButton',
2798             Mask => 0xf8,
2799             PrintConv => {
2800             0 => 'None',
2801             1 => 'Preview',
2802             2 => 'FV Lock',
2803             3 => 'AE/AF Lock',
2804             4 => 'AE Lock Only',
2805             5 => 'AE Lock (reset on release)',
2806             6 => 'AE Lock (hold)',
2807             7 => 'AF Lock Only',
2808             # 8 not used
2809             9 => 'Flash Off',
2810             10 => 'Bracketing Burst',
2811             11 => 'Matrix Metering',
2812             12 => 'Center-weighted Metering',
2813             13 => 'Spot Metering',
2814             14 => 'My Menu Top',
2815             15 => 'Live View',
2816             16 => '+ NEF (RAW)',
2817             17 => 'Virtual Horizon',
2818             },
2819             },
2820             29.1 => { # CSf6-a
2821             Name => 'PreviewButton',
2822             Mask => 0xf8,
2823             PrintConv => {
2824             0 => 'None',
2825             1 => 'Preview',
2826             2 => 'FV Lock',
2827             3 => 'AE/AF Lock',
2828             4 => 'AE Lock Only',
2829             5 => 'AE Lock (reset on release)',
2830             6 => 'AE Lock (hold)',
2831             7 => 'AF Lock Only',
2832             8 => 'AF-ON',
2833             9 => 'Flash Off',
2834             10 => 'Bracketing Burst',
2835             11 => 'Matrix Metering',
2836             12 => 'Center-weighted Metering',
2837             13 => 'Spot Metering',
2838             14 => 'My Menu Top',
2839             15 => 'Live View',
2840             16 => '+ NEF (RAW)',
2841             17 => 'Virtual Horizon',
2842             },
2843             },
2844             30.1 => { # CSf7-a
2845             Name => 'AELockButton',
2846             Notes => 'D300',
2847             Mask => 0xf8,
2848             PrintConv => {
2849             0 => 'None',
2850             1 => 'Preview',
2851             2 => 'FV Lock',
2852             3 => 'AE/AF Lock',
2853             4 => 'AE Lock Only',
2854             5 => 'AE Lock (reset on release)',
2855             6 => 'AE Lock (hold)',
2856             7 => 'AF Lock Only',
2857             8 => 'AF-ON',
2858             9 => 'Flash Off',
2859             10 => 'Bracketing Burst',
2860             11 => 'Matrix Metering',
2861             12 => 'Center-weighted Metering',
2862             13 => 'Spot Metering',
2863             14 => 'My Menu Top',
2864             15 => 'Live View',
2865             16 => '+ NEF (RAW)',
2866             17 => 'Virtual Horizon',
2867             },
2868             },
2869             31.1 => { # CSf5-b
2870             Name => 'FuncButtonPlusDials',
2871             Mask => 0x70,
2872             PrintConv => {
2873             0 => 'None',
2874             1 => 'Choose Image Area',
2875             2 => 'One Step Speed/Aperture',
2876             3 => 'Choose Non-CPU Lens Number',
2877             # n/a 4 => 'Focus Point Selection',
2878             5 => 'Auto bracketing',
2879             6 => 'Dynamic AF Area',
2880             7 => 'Shutter speed & Aperture lock',
2881             },
2882             },
2883             31.2 => { # CSf6-b
2884             Name => 'PreviewButtonPlusDials',
2885             Mask => 0x07,
2886             PrintConv => {
2887             0 => 'None',
2888             1 => 'Choose Image Area',
2889             2 => 'One Step Speed/Aperture',
2890             3 => 'Choose Non-CPU Lens Number',
2891             # n/a 4 => 'Focus Point Selection',
2892             5 => 'Auto bracketing',
2893             6 => 'Dynamic AF Area',
2894             7 => 'Shutter speed & Aperture lock',
2895             },
2896             },
2897             32.1 => { # CSf7-b
2898             Name => 'AELockButtonPlusDials',
2899             Mask => 0x70,
2900             Prinonv => {
2901             0 => 'None',
2902             1 => 'Choose Image Area',
2903             2 => 'One Step Speed/Aperture',
2904             3 => 'Choose Non-CPU Lens Number',
2905             # n/a 4 => 'Focus Point Selection',
2906             5 => 'Auto bracketing',
2907             6 => 'Dynamic AF Area',
2908             7 => 'Shutter speed & Aperture lock',
2909             },
2910             },
2911             33.1 => { # CSf9-a
2912             Name => 'CommandDialsReverseRotation',
2913             Mask => 0x80,
2914             PrintConv => \%noYes,
2915             },
2916             33.2 => { # CSf9-b
2917             Name => 'CommandDialsChangeMainSub',
2918             Mask => 0x40,
2919             PrintConv => \%offOn,
2920             },
2921             33.3 => { # CSf9-c
2922             Name => 'CommandDialsApertureSetting',
2923             Mask => 0x20,
2924             PrintConv => {
2925             0 => 'Sub-command Dial',
2926             1 => 'Aperture Ring',
2927             },
2928             },
2929             33.4 => { # CSf9-d
2930             Name => 'CommandDialsMenuAndPlayback',
2931             Mask => 0x10,
2932             PrintConv => \%offOn,
2933             },
2934             33.5 => { # CSf12
2935             Name => 'ReverseIndicators',
2936             Mask => 0x08,
2937             PrintConv => {
2938             0 => '+ 0 -',
2939             1 => '- 0 +',
2940             },
2941             },
2942             33.6 => { # CSf4
2943             Name => 'PhotoInfoPlayback',
2944             Mask => 0x04,
2945             PrintConv => \%offOn,
2946             },
2947             33.7 => { # CSf11
2948             Name => 'NoMemoryCard',
2949             Mask => 0x02,
2950             PrintConv => {
2951             0 => 'Release Locked',
2952             1 => 'Enable Release',
2953             },
2954             },
2955             33.8 => { # CSf10
2956             Name => 'ReleaseButtonToUseDial',
2957             Mask => 0x01,
2958             PrintConv => \%noYes,
2959             },
2960             );
2961              
2962             # D800 custom settings (ref PH)
2963             %Image::ExifTool::NikonCustom::SettingsD800 = (
2964             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2965             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
2966             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
2967             WRITABLE => 1,
2968             FIRST_ENTRY => 0,
2969             DATAMEMBER => [ 23.1 ],
2970             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2971             NOTES => 'Custom settings for the D800 and D800E.',
2972             12.1 => { # CSe5
2973             Name => 'AutoBracketingSet',
2974             Mask => 0xe0, #(NC)
2975             PrintConv => {
2976             0 => 'AE & Flash', # default
2977             1 => 'AE Only', #(NC)
2978             2 => 'Flash Only',
2979             3 => 'WB Bracketing', #(NC)
2980             4 => 'Active D-Lighting', #(NC)
2981             },
2982             },
2983             12.2 => { # CSe7
2984             Name => 'AutoBracketOrder',
2985             Mask => 0x10,
2986             PrintConv => {
2987             0 => '0,-,+',
2988             1 => '-,0,+',
2989             },
2990             },
2991             12.3 => { # CSe6
2992             Name => 'AutoBracketingMode',
2993             Mask => 0x0c,
2994             PrintConv => {
2995             0 => 'Flash/Speed',
2996             1 => 'Flash/Speed/Aperture',
2997             2 => 'Flash/Aperture',
2998             3 => 'Flash Only',
2999             },
3000             },
3001             # 21 - 100 (MaxContinuousRelease?)
3002             22.1 => { # CSe1
3003             Name => 'FlashSyncSpeed',
3004             Mask => 0xf0,
3005             PrintConv => {
3006             0 => '1/320 s (auto FP)',
3007             1 => '1/250 s (auto FP)',
3008             2 => '1/250 s',
3009             3 => '1/200 s',
3010             4 => '1/160 s',
3011             5 => '1/125 s',
3012             6 => '1/100 s',
3013             7 => '1/80 s',
3014             8 => '1/60 s',
3015             },
3016             },
3017             22.2 => { # CSe2
3018             Name => 'FlashShutterSpeed',
3019             Mask => 0x0f,
3020             PrintConvColumns => 2,
3021             PrintConv => {
3022             0 => '1/60 s',
3023             1 => '1/30 s',
3024             2 => '1/15 s',
3025             3 => '1/8 s',
3026             4 => '1/4 s',
3027             5 => '1/2 s',
3028             6 => '1 s',
3029             7 => '2 s',
3030             8 => '4 s',
3031             9 => '8 s',
3032             10 => '15 s',
3033             11 => '30 s',
3034             },
3035             },
3036             23.1 => { # CSe3
3037             Name => 'FlashControlBuilt-in',
3038             Mask => 0xc0,
3039             RawConv => '$$self{FlashControlBuiltin} = $val',
3040             PrintConv => {
3041             0 => 'TTL',
3042             1 => 'Manual',
3043             2 => 'Repeating Flash',
3044             3 => 'Commander Mode',
3045             },
3046             },
3047             23.2 => { # CSe3-b
3048             Name => 'ManualFlashOutput',
3049             Condition => '$$self{FlashControlBuiltin} == 1',
3050             Mask => 0x1f,
3051             ValueConv => '2 ** (-$val/3)',
3052             ValueConvInv => '$val > 0 ? -3*log($val)/log(2) : 0',
3053             PrintConv => q{
3054             return 'Full' if $val > 0.99;
3055             Image::ExifTool::Exif::PrintExposureTime($val);
3056             },
3057             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
3058             },
3059             24.1 => { # CSe3-ca
3060             Name => 'RepeatingFlashOutput',
3061             Condition => '$$self{FlashControlBuiltin} == 2',
3062             Mask => 0x70,
3063             ValueConv => '2 ** (-$val-2)',
3064             ValueConvInv => '$val > 0 ? int(-log($val)/log(2)-2+0.5) : 0',
3065             PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
3066             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
3067             },
3068             24.2 => { # CSe3-cb
3069             Name => 'RepeatingFlashCount',
3070             Condition => '$$self{FlashControlBuiltin} == 2',
3071             Mask => 0x0f,
3072             ValueConv => '$val < 10 ? $val + 1 : 5 * ($val - 7)',
3073             ValueConvInv => '$val <= 10 ? $val - 1 : $val / 5 + 7',
3074             },
3075             25.1 => { # CSe3-cc
3076             Name => 'RepeatingFlashRate',
3077             Condition => '$$self{FlashControlBuiltin} == 2',
3078             Mask => 0xf0,
3079             ValueConv => '$val < 10 ? $val + 1 : 10 * ($val - 8)',
3080             ValueConvInv => 'int(($val <= 10 ? $val - 1 : $val / 10 + 8) + 0.5)',
3081             PrintConv => '"$val Hz"',
3082             PrintConvInv => '$val=~/(\d+)/; $1 || 0',
3083             },
3084             25.2 => { # CSe3
3085             Name => 'CommanderChannel',
3086             Mask => 0x03,
3087             ValueConv => '$val + 1',
3088             ValueConvInv => '$val - 1',
3089             },
3090             27.1 => { # CSe3
3091             Name => 'CommanderInternalFlash',
3092             Mask => 0xc0,
3093             PrintConv => {
3094             0 => 'TTL',
3095             1 => 'Manual',
3096             2 => 'Off',
3097             },
3098             },
3099             27.2 => { # CSe3
3100             Name => 'CommanderInternalManualOutput',
3101             Mask => 0x1f,
3102             ValueConv => '2 ** (-$val/3)',
3103             ValueConvInv => '$val > 0 ? int(-log($val)/log(2) * 3 + 0.5): 0',
3104             PrintConv => q{
3105             return 'Full' if $val > 0.99;
3106             Image::ExifTool::Exif::PrintExposureTime($val);
3107             },
3108             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
3109             },
3110             28.1 => { # CSe3
3111             Name => 'CommanderGroupAMode',
3112             Mask => 0xc0,
3113             PrintConv => {
3114             0 => 'TTL',
3115             1 => 'Auto Aperture',
3116             2 => 'Manual',
3117             3 => 'Off',
3118             },
3119             },
3120             28.2 => { # CSe3
3121             Name => 'CommanderGroupAManualOutput',
3122             Mask => 0x1f,
3123             ValueConv => '2 ** (-$val/3)',
3124             ValueConvInv => '$val > 0 ? int(-log($val)/log(2) * 3 + 0.5): 0',
3125             PrintConv => q{
3126             return 'Full' if $val > 0.99;
3127             Image::ExifTool::Exif::PrintExposureTime($val);
3128             },
3129             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
3130             },
3131             29.1 => { # CSe3
3132             Name => 'CommanderGroupBMode',
3133             Mask => 0xc0,
3134             PrintConv => {
3135             0 => 'TTL',
3136             1 => 'Auto Aperture',
3137             2 => 'Manual',
3138             3 => 'Off',
3139             },
3140             },
3141             29.2 => { # CSe3
3142             Name => 'CommanderGroupBManualOutput',
3143             Mask => 0x1f,
3144             ValueConv => '2 ** (-$val/3)',
3145             ValueConvInv => '$val > 0 ? int(-log($val)/log(2) * 3 + 0.5): 0',
3146             PrintConv => q{
3147             return 'Full' if $val > 0.99;
3148             Image::ExifTool::Exif::PrintExposureTime($val);
3149             },
3150             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
3151             },
3152             30.1 => { # CSe4
3153             Name => 'ModelingFlash',
3154             Mask => 0x20,
3155             PrintConv => \%onOff,
3156             },
3157             30.2 => { # CSe3
3158             Name => 'CommanderInternalTTLComp',
3159             Mask => 0x1f,
3160             ValueConv => '($val - 9) / 3',
3161             ValueConvInv => '$val * 3 + 9',
3162             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
3163             PrintConvInv => '$val',
3164             },
3165             31.1 => { # CSe3
3166             Name => 'CommanderGroupA_TTL-AAComp',
3167             Mask => 0x1f,
3168             ValueConv => '($val - 9) / 3',
3169             ValueConvInv => '$val * 3 + 9',
3170             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
3171             PrintConvInv => '$val',
3172             },
3173             32.1 => { # CSe3
3174             Name => 'CommanderGroupB_TTL-AAComp',
3175             Mask => 0x1f,
3176             ValueConv => '($val - 9) / 3',
3177             ValueConvInv => '$val * 3 + 9',
3178             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
3179             PrintConvInv => '$val',
3180             },
3181             # 47 - related to flash
3182             );
3183              
3184             # D5 custom settings (ref 1)
3185             %Image::ExifTool::NikonCustom::SettingsD5 = (
3186             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
3187             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
3188             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
3189             WRITABLE => 1,
3190             FIRST_ENTRY => 0,
3191             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
3192             NOTES => 'Custom settings for the D5.',
3193             0.1 => {
3194             Name => 'CustomSettingsBank',
3195             Mask => 0x03,
3196             PrintConv => {
3197             0 => 'A',
3198             1 => 'B',
3199             2 => 'C',
3200             3 => 'D',
3201             },
3202             },
3203             1.1 => { # CSa1
3204             Name => 'AF-CPrioritySelection',
3205             Mask => 0xc0,
3206             PrintConv => {
3207             0 => 'Release',
3208             1 => 'Release + Focus',
3209             2 => 'Focus',
3210             3 => 'Focus + Release',
3211             },
3212             },
3213             1.2 => { # CSa2
3214             Name => 'AF-SPrioritySelection',
3215             Mask => 0x20,
3216             PrintConv => {
3217             0 => 'Focus',
3218             1 => 'Release',
3219             },
3220             },
3221             1.3 => { # CSa6
3222             Name => 'NumberOfFocusPoints',
3223             Mask => 0x10,
3224             PrintConv => {
3225             0 => '55 Points',
3226             1 => '15 Points',
3227             },
3228             },
3229             1.4 => { # CSa4
3230             Name => 'Three-DTrackingFaceDetection',
3231             Mask => 0x08,
3232             PrintConv => {
3233             0 => 'Off',
3234             1 => 'On',
3235             },
3236             },
3237             1.5 => { # CSa3-a
3238             Name => 'BlockShotAFResponse',
3239             Mask => 0x07,
3240             #values 1-5
3241             },
3242             2.1 => { # CSa11
3243             Name => 'FocusPointWrap',
3244             Mask => 0x08,
3245             PrintConv => {
3246             0 => 'No Wrap',
3247             1 => 'Wrap',
3248             },
3249             },
3250             2.2 => { # CSa12-d
3251             Name => 'AFPointBrightness',
3252             Mask => 0x06,
3253             PrintConv => {
3254             0 => 'Auto',
3255             1 => 'On',
3256             2 => 'Off',
3257             },
3258             },
3259             4.1 => { # CSd3
3260             Name => 'ISODisplay',
3261             Mask => 0x08,
3262             PrintConv => {
3263             0 => 'Show ISO Sensitivity',
3264             1 => 'Show Frame Count',
3265             },
3266             },
3267             4.2 => { # CSd8
3268             Name => 'GridDisplay',
3269             Mask => 0x02,
3270             PrintConv => \%onOff,
3271             },
3272             5.1 => { # CSd9
3273             Name => 'LCDIllumination',
3274             Mask => 0x20,
3275             PrintConv => \%offOn,
3276             },
3277             5.2 => { # CSd6
3278             Name => 'ElectronicFront-CurtainShutter',
3279             Mask => 0x08,
3280             PrintConv => \%offOn,
3281             },
3282             6.1 => { # CSf7
3283             Name => 'ReverseIndicators',
3284             Mask => 0x80,
3285             PrintConv => {
3286             0 => '+ 0 -',
3287             1 => '- 0 +',
3288             },
3289             },
3290             6.2 => { # CSf4-a
3291             Name => 'CommandDialsReverseRotation',
3292             Mask => 0x18,
3293             PrintConv => {
3294             0 => 'No',
3295             1 => 'Shutter Speed & Aperture',
3296             2 => 'Exposure Compensation',
3297             3 => 'Exposure Compensation, Shutter Speed & Aperture',
3298             },
3299             },
3300             6.3 => { # CSb4
3301             Name => 'EasyExposureCompensation',
3302             Mask => 0x03,
3303             PrintConv => {
3304             0 => 'Off',
3305             1 => 'On',
3306             2 => 'On (auto reset)',
3307             },
3308             },
3309             7.1 => { # CSb2
3310             Name => 'ExposureControlStepSize',
3311             Mask => 0xc0,
3312             PrintConv => {
3313             0 => '1/3 EV',
3314             1 => '1/2 EV',
3315             2 => '1 EV',
3316             },
3317             },
3318             7.2 => { # CSb1
3319             Name => 'ISOStepSize',
3320             Mask => 0x30,
3321             PrintConv => {
3322             0 => '1/3 EV',
3323             1 => '1/2 EV',
3324             2 => '1 EV',
3325             },
3326             },
3327             7.3 => { # CSb3
3328             Name => 'ExposureCompStepSize',
3329             Mask => 0x0c,
3330             PrintConv => {
3331             0 => '1/3 EV',
3332             1 => '1/2 EV',
3333             2 => '1 EV',
3334             },
3335             },
3336             8.1 => { # CSb6
3337             Name => 'CenterWeightedAreaSize',
3338             Mask => 0xe0,
3339             PrintConv => {
3340             0 => '8 mm',
3341             1 => '12 mm',
3342             2 => '15 mm',
3343             3 => '20 mm',
3344             4 => 'Average',
3345             },
3346             },
3347             8.2 => { # CSb7-a
3348             Name => 'FineTuneOptMatrixMetering',
3349             Mask => 0x0f,
3350             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
3351             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
3352             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
3353             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
3354             },
3355             9.1 => { # CSb7-b
3356             Name => 'FineTuneOptCenterWeighted',
3357             Mask => 0xf0,
3358             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
3359             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
3360             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
3361             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
3362             },
3363             9.2 => { # CSb7-c
3364             Name => 'FineTuneOptSpotMetering',
3365             Mask => 0x0f,
3366             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
3367             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
3368             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
3369             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
3370             },
3371             10.1 => { # CSf2-a
3372             Name => 'MultiSelectorShootMode',
3373             Mask => 0xe0,
3374             PrintConv => {
3375             0 => 'Select Center Focus Point (Reset)',
3376             1 => 'Zoom On/Off', # this is the documented (and actual) default value, but the choice does not appear on the camera menu
3377             2 => 'Preset Focus Point (Pre)',
3378             4 => 'Not Used (None)',
3379             },
3380             },
3381             # 10.2 => { # CSf2-b # moved from the D500 position to Nikon_ShotInfoD5_0x0ab1 with the Mask and PrintConv as specified below. Further research required.
3382             # Name => 'MultiSelectorPlaybackMode',
3383             # Mask => 0x70,
3384             # PrintConv => {
3385             # 0 => 'Zoom On/Off',
3386             # 1 => 'Choose Folder',
3387             # 6 => 'Thumbnail On/Off',
3388             # 7 => 'View Histograms',
3389             # },
3390             # },
3391             10.3 => { # CSf5
3392             Name => 'MultiSelector',
3393             Mask => 0x01,
3394             PrintConv => {
3395             0 => 'Do Nothing',
3396             1 => 'Reset Meter-off Delay',
3397             },
3398             },
3399             11.1 => { # CSd5
3400             Name => 'ExposureDelayMode',
3401             Mask => 0xc0,
3402             PrintConv => {
3403             0 => 'Off',
3404             1 => '1 s',
3405             2 => '2 s',
3406             3 => '3 s',
3407             },
3408             },
3409             11.2 => { # CSd1
3410             Name => 'CLModeShootingSpeed',
3411             Mask => 0x0f,
3412             PrintConv => '"$val fps"',
3413             PrintConvInv => '$val=~s/\s*fps//i; $val',
3414             },
3415             12.1 => { # CSd2
3416             Name => 'MaxContinuousRelease',
3417             # values: 1-100
3418             },
3419             13.1 => { # CSe7
3420             Name => 'AutoBracketOrder',
3421             Mask => 0x10,
3422             PrintConv => {
3423             0 => '0,-,+',
3424             1 => '-,0,+',
3425             },
3426             },
3427             13.2 => { # CSe6
3428             Name => 'AutoBracketModeM',
3429             Mask => 0x0c,
3430             PrintConv => {
3431             0 => 'Flash/Speed',
3432             1 => 'Flash/Speed/Aperture',
3433             2 => 'Flash/Aperture',
3434             3 => 'Flash Only',
3435             },
3436             },
3437             14.1 => { # CSf1-c
3438             Name => 'Func1Button',
3439             Mask => 0x3f,
3440             PrintConv => {
3441             0 => 'None',
3442             1 => 'Preview',
3443             2 => 'FV Lock',
3444             3 => 'AE/AF Lock',
3445             4 => 'AE Lock Only',
3446             5 => 'AE Lock (reset on release)',
3447             6 => 'AE Lock (hold)',
3448             7 => 'AF Lock Only',
3449             8 => 'AF-On',
3450             10 => 'Bracketing Burst',
3451             11 => 'Matrix Metering',
3452             12 => 'Center-weighted Metering',
3453             13 => 'Spot Metering',
3454             14 => 'Playback',
3455             15 => 'My Menu Top Item',
3456             16 => '+NEF(RAW)',
3457             17 => 'Virtual Horizon',
3458             19 => 'Grid Display',
3459             20 => 'My Menu',
3460             21 => 'Disable Synchronized Release',
3461             22 => 'Remote Release Only',
3462             26 => 'Flash Disable/Enable',
3463             27 => 'Highlight-weighted Metering',
3464             36 => 'AF-Area Mode (Single)',
3465             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
3466             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
3467             39 => 'AF-Area Mode (Dynamic Area 152 Points)',
3468             40 => 'AF-Area Mode (Group Area AF)',
3469             41 => 'AF-Area Mode (Auto Area AF)',
3470             42 => 'AF-Area Mode + AF-On (Single)',
3471             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
3472             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
3473             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',
3474             46 => 'AF-Area Mode + AF-On (Group Area AF)',
3475             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
3476             49 => 'Sync Release (Master Only)',
3477             50 => 'Sync Release (Remote Only)',
3478             58 => 'AF-Area Mode + AF-On (Group Area AF - HL)',
3479             59 => 'AF-Area Mode + AF-On (Group Area AF - VL)',
3480             },
3481             },
3482             15.1 => { # CSf1-a
3483             Name => 'PreviewButton',
3484             Mask => 0x3f,
3485             PrintConv => {
3486             0 => 'None',
3487             1 => 'Preview',
3488             2 => 'FV Lock',
3489             3 => 'AE/AF Lock',
3490             4 => 'AE Lock Only',
3491             5 => 'AE Lock (reset on release)',
3492             6 => 'AE Lock (hold)',
3493             7 => 'AF Lock Only',
3494             8 => 'AF-On',
3495             10 => 'Bracketing Burst',
3496             11 => 'Matrix Metering',
3497             12 => 'Center-weighted Metering',
3498             13 => 'Spot Metering',
3499             14 => 'Playback',
3500             15 => 'My Menu Top Item',
3501             16 => '+NEF(RAW)',
3502             17 => 'Virtual Horizon',
3503             19 => 'Grid Display',
3504             20 => 'My Menu',
3505             21 => 'Disable Synchronized Release',
3506             22 => 'Remote Release Only',
3507             26 => 'Flash Disable/Enable',
3508             27 => 'Highlight-weighted Metering',
3509             36 => 'AF-Area Mode (Single)',
3510             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
3511             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
3512             39 => 'AF-Area Mode (Dynamic Area 152 Points)',
3513             40 => 'AF-Area Mode (Group Area AF)',
3514             41 => 'AF-Area Mode (Auto Area AF)',
3515             42 => 'AF-Area Mode + AF-On (Single)',
3516             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
3517             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
3518             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',
3519             46 => 'AF-Area Mode + AF-On (Group Area AF)',
3520             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
3521             49 => 'Sync Release (Master Only)',
3522             50 => 'Sync Release (Remote Only)',
3523             58 => 'AF-Area Mode + AF-On (Group Area AF - HL)',
3524             59 => 'AF-Area Mode + AF-On (Group Area AF - VL)',
3525             },
3526             },
3527             16.1 => { # CSf1-p
3528             Name => 'AssignBktButton',
3529             Mask => 0x07,
3530             PrintConv => {
3531             0 => 'Auto Bracketing',
3532             1 => 'Multiple Exposure',
3533             2 => 'HDR (high dynamic range)',
3534             3 => 'None',
3535             },
3536             },
3537             18.1 => { # CSf4-b
3538             Name => 'CommandDialsChangeMainSub',
3539             Mask => 0xe0,
3540             PrintConv => {
3541             0 => 'Autofocus Off, Exposure Off',
3542             1 => 'Autofocus Off, Exposure On',
3543             2 => 'Autofocus Off, Exposure On (Mode A)',
3544             4 => 'Autofocus On, Exposure Off',
3545             5 => 'Autofocus On, Exposure On',
3546             6 => 'Autofocus On, Exposure On (Mode A)',
3547             },
3548             },
3549             18.2 => { # CSf4-d
3550             Name => 'CommandDialsMenuAndPlayback',
3551             Mask => 0x18,
3552             PrintConv => {
3553             0 => 'On',
3554             1 => 'Off',
3555             2 => 'On (Image Review Excluded)',
3556             },
3557             },
3558             18.3 => { # CSf4-c
3559             Name => 'CommandDialsApertureSetting',
3560             Mask => 0x04,
3561             PrintConv => {
3562             0 => 'Sub-command Dial',
3563             1 => 'Aperture Ring',
3564             },
3565             },
3566             18.4 => { # CSf6
3567             Name => 'ReleaseButtonToUseDial',
3568             Mask => 0x01,
3569             PrintConv => \%noYes,
3570             },
3571             19.1 => { # CSc2
3572             Name => 'StandbyTimer',
3573             Mask => 0xf0,
3574             PrintConv => {
3575             0 => '4 s',
3576             1 => '6 s',
3577             3 => '10 s',
3578             5 => '30 s',
3579             6 => '1 min',
3580             7 => '5 min',
3581             8 => '10 min',
3582             9 => '30 min',
3583             10 => 'No Limit',
3584             },
3585             },
3586             20.1 => { # CSc3-a
3587             Name => 'SelfTimerTime',
3588             Mask => 0xc0,
3589             PrintConv => {
3590             0 => '2 s',
3591             1 => '5 s',
3592             2 => '10 s',
3593             3 => '20 s',
3594             },
3595             },
3596             20.2 => { # CSc3-c
3597             Name => 'SelfTimerShotInterval',
3598             Mask => 0x30,
3599             PrintConv => {
3600             0 => '0.5 s',
3601             1 => '1 s',
3602             2 => '2 s',
3603             3 => '3 s',
3604             },
3605             },
3606             20.3 => { # CSc3-b
3607             Name => 'SelfTimerShotCount',
3608             Mask => 0x0f,
3609             },
3610             21.1 => { # CSc4-d
3611             Name => 'ImageReviewMonitorOffTime',
3612             Mask => 0xe0,
3613             PrintConv => {
3614             0 => '2 s',
3615             1 => '4 s',
3616             3 => '10 s',
3617             4 => '20 s',
3618             5 => '1 min',
3619             6 => '5 min',
3620             7 => '10 min',
3621             },
3622             },
3623             21.2 => { # CSc4-e
3624             Name => 'LiveViewMonitorOffTime',
3625             Mask => 0x1c,
3626             PrintConv => {
3627             1 => '5 min',
3628             2 => '10 min',
3629             3 => '15 min',
3630             4 => '20 min',
3631             5 => '30 min',
3632             6 => 'No Limit',
3633             },
3634             },
3635             22.1 => { # CSc4-b
3636             Name => 'MenuMonitorOffTime',
3637             Mask => 0xe0,
3638             PrintConv => {
3639             0 => '4 s',
3640             2 => '10 s',
3641             4 => '20 s',
3642             5 => '1 min',
3643             6 => '5 min',
3644             7 => '10 min',
3645             },
3646             },
3647             22.2 => { # CSc4-c
3648             Name => 'ShootingInfoMonitorOffTime',
3649             Mask => 0x1c,
3650             PrintConv => {
3651             0 => '4 s',
3652             2 => '10 s',
3653             4 => '20 s',
3654             5 => '1 min',
3655             6 => '5 min',
3656             7 => '10 min',
3657             },
3658             },
3659             23.1 => { # CSe1
3660             Name => 'FlashSyncSpeed',
3661             Mask => 0xf0,
3662             PrintConv => {
3663             2 => '1/250 s (auto FP)',
3664             3 => '1/250 s',
3665             5 => '1/200 s',
3666             6 => '1/160 s',
3667             7 => '1/125 s',
3668             8 => '1/100 s',
3669             9 => '1/80 s',
3670             10 => '1/60 s',
3671             },
3672             },
3673             23.2 => { # CSe2
3674             Name => 'FlashShutterSpeed',
3675             Mask => 0x0f,
3676             PrintConvColumns => 2,
3677             PrintConv => {
3678             0 => '1/60 s',
3679             1 => '1/30 s',
3680             2 => '1/15 s',
3681             3 => '1/8 s',
3682             4 => '1/4 s',
3683             5 => '1/2 s',
3684             6 => '1 s',
3685             7 => '2 s',
3686             8 => '4 s',
3687             9 => '8 s',
3688             10 => '15 s',
3689             11 => '30 s',
3690             },
3691             },
3692             31.1 => { # CSe5
3693             Name => 'ModelingFlash',
3694             Mask => 0x20,
3695             PrintConv => \%onOff,
3696             },
3697             36.1 => { # CSc4-a
3698             Name => 'PlaybackMonitorOffTime',
3699             Mask => 0xe0,
3700             PrintConv => {
3701             0 => '4 s',
3702             1 => '10 s',
3703             2 => '20 s',
3704             3 => '1 min',
3705             4 => '5 min',
3706             5 => '10 min',
3707             },
3708             },
3709             37.1 => { # CSf2-c
3710             Name => 'MultiSelectorLiveView',
3711             Mask => 0xc0,
3712             PrintConv => {
3713             0 => 'Reset',
3714             1 => 'Zoom',
3715             3 => 'Not Used',
3716             },
3717             },
3718             38.1 => { # CSf3-a
3719             Name => 'ShutterSpeedLock',
3720             Mask => 0x80,
3721             PrintConv => \%offOn,
3722             },
3723             38.2 => { # CSf3-b
3724             Name => 'ApertureLock',
3725             Mask => 0x40,
3726             PrintConv => \%offOn,
3727             },
3728             38.3 => { # CSg1-h
3729             Name => 'MovieShutterButton',
3730             Mask => 0x10,
3731             PrintConv => {
3732             0 => 'Take Photo',
3733             1 => 'Record Movies',
3734             },
3735             },
3736             38.4 => { # CSe3
3737             Name => 'FlashExposureCompArea',
3738             Mask => 0x04,
3739             PrintConv => {
3740             0 => 'Entire Frame',
3741             1 => 'Background Only',
3742             },
3743             },
3744             38.5 => { # CSe4
3745             Name => 'AutoFlashISOSensitivity',
3746             Mask => 0x02,
3747             PrintConv => {
3748             0 => 'Subject and Background',
3749             1 => 'Subject Only',
3750             },
3751             },
3752             41.1 => { # CSg1-c
3753             Name => 'MovieFunc1Button',
3754             Mask => 0xf0,
3755             PrintConv => {
3756             0 => 'None',
3757             2 => 'Power Aperture (close)',
3758             3 => 'Index Marking',
3759             4 => 'View Photo Shooting Info',
3760             11 => 'Exposure Compensation -',
3761             },
3762             },
3763             41.2 => { # CSg1-a
3764             Name => 'MoviePreviewButton',
3765             Mask => 0x0f,
3766             PrintConv => {
3767             0 => 'None',
3768             1 => 'Power Aperture (open)',
3769             3 => 'Index Marking',
3770             4 => 'View Photo Shooting Info',
3771             10 => 'Exposure Compensation +',
3772             },
3773             },
3774             42.1 => { # CSf1-d
3775             Name => 'Func1ButtonPlusDials',
3776             Mask => 0x0f,
3777             PrintConv => {
3778             0 => 'None',
3779             1 => 'Choose Image Area',
3780             2 => 'Shutter Speed & Aperture Lock',
3781             3 => 'One Step Speed / Aperture',
3782             4 => 'Choose Non-CPU Lens Number',
3783             5 => 'Active D-Lighting',
3784             7 => 'Photo Shooting Menu Bank',
3785             8 => 'Exposure Delay Mode',
3786             },
3787             },
3788             43.1 => { # CSf1-b
3789             Name => 'PreviewButtonPlusDials',
3790             Mask => 0x0f,
3791             PrintConv => {
3792             0 => 'None',
3793             1 => 'Choose Image Area',
3794             2 => 'Shutter Speed & Aperture Lock',
3795             3 => 'One Step Speed / Aperture',
3796             4 => 'Choose Non-CPU Lens Number',
3797             5 => 'Active D-Lighting',
3798             7 => 'Photo Shooting Menu Bank', # new with D500
3799             8 => 'Exposure Delay Mode',
3800             },
3801             },
3802             45.1 => { # CSf1-q
3803             Name => 'AssignMovieRecordButtonPlusDials',
3804             Mask => 0x0f,
3805             PrintConv => {
3806             0 => 'None',
3807             1 => 'Choose Image Area',
3808             2 => 'Shutter Speed & Aperture Lock',
3809             7 => 'Photo Shooting Menu Bank',
3810             11 => 'Exposure Mode',
3811             },
3812             },
3813             46.1 => { # CSb7-d
3814             Name => 'FineTuneOptHighlightWeighted',
3815             Mask => 0x0f,
3816             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
3817             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
3818             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
3819             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
3820             },
3821             47.1 => { # CSa12-b
3822             Name => 'DynamicAreaAFDisplay',
3823             Mask => 0x80,
3824             PrintConv => \%offOn,
3825             },
3826             47.2 => { # CSa12-a
3827             Name => 'AFPointIllumination',
3828             Mask => 0x40,
3829             PrintConv => {
3830             0 => 'Off',
3831             1 => 'On During Manual Focusing',
3832             },
3833             },
3834             47.3 => { # CSa7
3835             Name => 'StoreByOrientation',
3836             Mask => 0x18,
3837             PrintConv => {
3838             0 => 'Off',
3839             1 => 'Focus Point',
3840             2 => 'Focus Point and AF-area Mode',
3841             },
3842             },
3843             48.1 => { # CSb5
3844             Name => 'MatrixMetering',
3845             Mask => 0x80,
3846             PrintConv => {
3847             0 => 'Face Detection On',
3848             1 => 'Face Detection Off',
3849             },
3850             },
3851             48.2 => { # CSf8
3852             Name => 'LiveViewButtonOptions',
3853             Mask => 0x30,
3854             PrintConv => {
3855             0 => 'Enable',
3856             1 => 'Enable (Standby Timer Active)', # new with D500
3857             2 => 'Disable',
3858             },
3859             },
3860             48.3 => { # CSa10
3861             Name => 'AFModeRestrictions',
3862             Mask => 0x03,
3863             PrintConv => {
3864             0 => 'No Restrictions',
3865             1 => 'AF-C',
3866             2 => 'AF-S',
3867             },
3868             },
3869             49.1 => { # CSa9
3870             Name => 'LimitAFAreaModeSelection',
3871             Mask => 0x7e,
3872             PrintConv => {
3873             0 => 'No Restrictions',
3874             BITMASK => {
3875             0 => 'Auto-area',
3876             1 => 'Group-area',
3877             2 => '3D-tracking',
3878             3 => 'Dynamic area (153 points)',
3879             4 => 'Dynamic area (72 points)',
3880             5 => 'Dynamic area (25 points)',
3881             },
3882             },
3883             },
3884             52.1 => { # CSf1-r
3885             Name => 'LensFocusFunctionButtons',
3886             Mask => 0x3f,
3887             PrintConv => {
3888             3 => 'AE/AF Lock',
3889             4 => 'AE Lock Only',
3890             7 => 'AF Lock Only',
3891             8 => 'AF-On',
3892             24 => 'Preset Focus Point',
3893             26 => 'Flash Disable/Enable',
3894             36 => 'AF-Area Mode (Single)',
3895             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
3896             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
3897             39 => 'AF-Area Mode (Dynamic Area 152 Points)',
3898             40 => 'AF-Area Mode (Group Area AF)',
3899             41 => 'AF-Area Mode (Auto Area AF)',
3900             42 => 'AF-Area Mode + AF-On (Single)',
3901             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
3902             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
3903             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',
3904             46 => 'AF-Area Mode + AF-On (Group Area AF)',
3905             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
3906             49 => 'Sync Release (Master Only)',
3907             50 => 'Sync Release (Remote Only)',
3908             },
3909             },
3910             66.1 => { # CSf1-o
3911             Name => 'VerticalMultiSelector',
3912             Mask => 0xff,
3913             PrintHex => 1,
3914             PrintConv => {
3915             0x00 => 'Same as Multi-Selector with Info(U/D) & Playback(R/L)',
3916             0x08 => 'Same as Multi-Selector with Info(R/L) & Playback(U/D)',
3917             0x80 => 'Focus Point Selection',
3918             },
3919             },
3920             67.1 => { # CSf1-g
3921             Name => 'VerticalFuncButton',
3922             Mask => 0x3f,
3923             PrintConv => {
3924             0 => 'None',
3925             1 => 'Preview',
3926             2 => 'FV Lock',
3927             3 => 'AE/AF Lock',
3928             4 => 'AE Lock Only',
3929             5 => 'AE Lock (reset on release)',
3930             6 => 'AE Lock (hold)',
3931             7 => 'AF Lock Only',
3932             8 => 'AF-On',
3933             10 => 'Bracketing Burst',
3934             11 => 'Matrix Metering',
3935             12 => 'Center-weighted Metering',
3936             13 => 'Spot Metering',
3937             14 => 'Playback',
3938             15 => 'My Menu Top Item',
3939             16 => '+NEF(RAW)',
3940             17 => 'Virtual Horizon',
3941             18 => 'Reset Focus Point',
3942             19 => 'Grid Display',
3943             20 => 'My Menu',
3944             22 => 'Remote Release Only',
3945             23 => 'Preset Focus Point',
3946             26 => 'Flash Disable/Enable',
3947             27 => 'Highlight-weighted Metering',
3948             36 => 'AF-Area Mode (Single)',
3949             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
3950             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
3951             39 => 'AF-Area Mode (Dynamic Area 152 Points)',
3952             40 => 'AF-Area Mode (Group Area AF)',
3953             41 => 'AF-Area Mode (Auto Area AF)',
3954             42 => 'AF-Area Mode + AF-On (Single)',
3955             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
3956             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
3957             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',
3958             46 => 'AF-Area Mode + AF-On (Group Area AF)',
3959             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
3960             49 => 'Sync Release (Master Only)',
3961             50 => 'Sync Release (Remote Only)',
3962             54 => 'Highlight Active Focus Point',
3963             },
3964             },
3965             68.1 => { # CSf1-h
3966             Name => 'VerticalFuncPlusDials',
3967             Mask => 0x0f,
3968             PrintConv => {
3969             0 => 'None',
3970             1 => 'Choose Image Area',
3971             2 => 'Shutter Speed & Aperture Lock',
3972             3 => 'One Step Speed / Aperture',
3973             4 => 'Choose Non-CPU Lens Number',
3974             5 => 'Active D-Lighting',
3975             7 => 'Photo Shooting Menu Bank',
3976             8 => 'Exposure Delay Mode',
3977             10 => 'ISO Sensitivity',
3978             11 => 'Exposure Mode',
3979             12 => 'Exposure Compensation',
3980             13 => 'Metering',
3981             },
3982             },
3983             70.1 => { # CSf1-j
3984             Name => 'AF-OnButton',
3985             Mask => 0x3f,
3986             PrintConv => {
3987             0 => 'None',
3988             3 => 'AE/AF Lock',
3989             4 => 'AE Lock Only',
3990             5 => 'AE Lock (reset on release)',
3991             6 => 'AE Lock (hold)',
3992             7 => 'AF Lock Only',
3993             8 => 'AF-On',
3994             36 => 'AF-Area Mode (Single)',
3995             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
3996             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
3997             39 => 'AF-Area Mode (Dynamic Area 152 Points)',
3998             40 => 'AF-Area Mode (Group Area AF)',
3999             41 => 'AF-Area Mode (Auto Area AF)',
4000             42 => 'AF-Area Mode + AF-On (Single)',
4001             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
4002             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
4003             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',
4004             46 => 'AF-Area Mode + AF-On (Group Area AF)',
4005             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
4006             },
4007             },
4008             71.1 => { # CSf1-k
4009             Name => 'SubSelector',
4010             Mask => 0x80,
4011             PrintConv => {
4012             0 => 'Focus Point Selection',
4013             1 => 'Same as MultiSelector',
4014             },
4015             },
4016             72.1 => { # CSf1-l
4017             Name => 'SubSelectorCenter',
4018             Mask => 0x3f,
4019             PrintConv => {
4020             0 => 'None',
4021             1 => 'Preview',
4022             2 => 'FV Lock',
4023             3 => 'AE/AF Lock',
4024             4 => 'AE Lock Only',
4025             5 => 'AE Lock (reset on release)',
4026             6 => 'AE Lock (hold)',
4027             7 => 'AF Lock Only',
4028             8 => 'AF-On',
4029             10 => 'Bracketing Burst',
4030             11 => 'Matrix Metering',
4031             12 => 'Center-weighted Metering',
4032             13 => 'Spot Metering',
4033             14 => 'Playback',
4034             15 => 'My Menu Top Item',
4035             16 => '+NEF(RAW)',
4036             17 => 'Virtual Horizon',
4037             18 => 'Reset Focus Point',
4038             19 => 'Grid Display',
4039             20 => 'My Menu',
4040             22 => 'Remote Release Only',
4041             23 => 'Preset Focus Point',
4042             26 => 'Flash Disable/Enable',
4043             27 => 'Highlight-weighted Metering',
4044             36 => 'AF-Area Mode (Single)',
4045             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
4046             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
4047             39 => 'AF-Area Mode (Dynamic Area 152 Points)',
4048             40 => 'AF-Area Mode (Group Area AF)',
4049             41 => 'AF-Area Mode (Auto Area AF)',
4050             42 => 'AF-Area Mode + AF-On (Single)',
4051             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
4052             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
4053             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',
4054             46 => 'AF-Area Mode + AF-On (Group Area AF)',
4055             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
4056             49 => 'Sync Release (Master Only)',
4057             50 => 'Sync Release (Remote Only)',
4058             54 => 'Highlight Active Focus Point',
4059             },
4060             },
4061             73.1 => { # CSf1-m
4062             Name => 'SubSelectorPlusDials',
4063             Mask => 0x0f,
4064             PrintConv => {
4065             0 => 'None',
4066             1 => 'Choose Image Area',
4067             2 => 'Shutter Speed & Aperture Lock',
4068             4 => 'Choose Non-CPU Lens Number',
4069             7 => 'Photo Shooting Menu Bank',
4070             },
4071             },
4072             74.1 => { # CSg1-f
4073             Name => 'AssignMovieSubselector',
4074             Mask => 0xf0,
4075             PrintConv => {
4076             0 => 'None',
4077             3 => 'Index Marking',
4078             4 => 'View Photo Shooting Info',
4079             5 => 'AE/AF Lock',
4080             6 => 'AE Lock (Only)',
4081             7 => 'AE Lock (Hold)',
4082             8 => 'AF Lock (Only)',
4083             },
4084             },
4085             75.1 => { # CSg1-d
4086             Name => 'AssignMovieFunc1ButtonPlusDials',
4087             Mask => 0x10,
4088             PrintConv => {
4089             0 => 'None',
4090             1 => 'Choose Image Area',
4091             },
4092             },
4093             75.2 => { # CSg1-b
4094             Name => 'AssignMoviePreviewButtonPlusDials',
4095             Mask => 0x01,
4096             PrintConv => {
4097             0 => 'None',
4098             1 => 'Choose Image Area (DX/1.3x)',
4099             },
4100             },
4101             76.1 => { # CSg1-g
4102             Name => 'AssignMovieSubselectorPlusDials',
4103             Mask => 0x10,
4104             PrintConv => {
4105             0 => 'None',
4106             1 => 'Choose Image Area',
4107             },
4108             },
4109             77.1 => { # CSd4
4110             Name => 'SyncReleaseMode', # new with D500
4111             Mask => 0x80,
4112             PrintConv => {
4113             0 => 'No Sync',
4114             1 => 'Sync',
4115             },
4116             },
4117             78.1 => { # CSa5
4118             Name => 'Three-DTrackingWatchArea', # new with D500
4119             Mask => 0x80,
4120             PrintConv => {
4121             0 => 'Wide',
4122             1 => 'Normal',
4123             },
4124             },
4125             78.2 => { # CSa3-b
4126             Name => 'SubjectMotion',
4127             Mask => 0x60,
4128             PrintConv => {
4129             0 => 'Steady',
4130             1 => 'Middle',
4131             2 => 'Erratic',
4132             },
4133             },
4134             78.3 => { # CSa8
4135             Name => 'AFActivation',
4136             Mask => 0x08,
4137             PrintConv => {
4138             0 => 'Shutter/AF-On',
4139             1 => 'AF-On Only',
4140             },
4141             },
4142             78.4 => { # CSc1
4143             Name => 'ShutterReleaseButtonAE-L',
4144             Mask => 0x03,
4145             PrintConv => {
4146             0 => 'Off',
4147             1 => 'On (Half Press)',
4148             2 => 'On (Burst Mode)'
4149             },
4150             },
4151             79.1 => { # CSf1-n
4152             Name => 'VerticalAFOnButton',
4153             Mask => 0x7f,
4154             PrintConv => {
4155             0 => 'None',
4156             3 => 'AE/AF Lock',
4157             4 => 'AE Lock Only',
4158             5 => 'AE Lock (reset on release)',
4159             6 => 'AE Lock (hold)',
4160             7 => 'AF Lock Only',
4161             8 => 'AF-On',
4162             36 => 'AF-Area Mode (Single)',
4163             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
4164             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
4165             39 => 'AF-Area Mode (Dynamic Area 152 Points)',
4166             40 => 'AF-Area Mode (Group Area AF)',
4167             41 => 'AF-Area Mode (Auto Area AF)',
4168             42 => 'AF-Area Mode + AF-On (Single)',
4169             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
4170             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
4171             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',
4172             46 => 'AF-Area Mode + AF-On (Group Area AF)',
4173             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
4174             100 => 'Same as AF-On',
4175             },
4176             },
4177             80.1 => { # CSf1-e
4178             Name => 'Func2Button',
4179             Mask => 0x3f,
4180             PrintConv => {
4181             0 => 'None',
4182             1 => 'Preview',
4183             2 => 'FV Lock',
4184             3 => 'AE/AF Lock',
4185             4 => 'AE Lock Only',
4186             5 => 'AE Lock (reset on release)',
4187             6 => 'AE Lock (hold)',
4188             7 => 'AF Lock Only',
4189             8 => 'AF-On',
4190             10 => 'Bracketing Burst',
4191             11 => 'Matrix Metering',
4192             12 => 'Center-weighted Metering',
4193             13 => 'Spot Metering',
4194             14 => 'Playback',
4195             15 => 'My Menu Top Item',
4196             16 => '+NEF(RAW)',
4197             17 => 'Virtual Horizon',
4198             19 => 'Grid Display',
4199             20 => 'My Menu',
4200             21 => 'Disable Synchronized Release',
4201             22 => 'Remote Release Only',
4202             26 => 'Flash Disable/Enable',
4203             27 => 'Highlight-weighted Metering',
4204             36 => 'AF-Area Mode (Single)',
4205             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
4206             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
4207             39 => 'AF-Area Mode (Dynamic Area 152 Points)',
4208             40 => 'AF-Area Mode (Group Area AF)',
4209             41 => 'AF-Area Mode (Auto Area AF)',
4210             42 => 'AF-Area Mode + AF-On (Single)',
4211             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
4212             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
4213             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',
4214             46 => 'AF-Area Mode + AF-On (Group Area AF)',
4215             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
4216             49 => 'Sync Release (Master Only)',
4217             50 => 'Sync Release (Remote Only)',
4218             },
4219             },
4220             81.1 => { # CSf1-f
4221             Name => 'Func2ButtonPlusDials',
4222             Mask => 0x0f,
4223             PrintConv => {
4224             0 => 'None',
4225             1 => 'Choose Image Area',
4226             2 => 'Shutter Speed & Aperture Lock',
4227             3 => 'One Step Speed / Aperture',
4228             4 => 'Choose Non-CPU Lens Number',
4229             5 => 'Active D-Lighting',
4230             7 => 'Photo Shooting Menu Bank',
4231             8 => 'Exposure Delay Mode',
4232             },
4233             },
4234             82.1 => { # CSg1-e
4235             Name => 'AssignMovieFunc2Button',
4236             Mask => 0x70,
4237             PrintConv => {
4238             0 => 'None',
4239             3 => 'Index Marking',
4240             4 => 'View Photo Shooting Info',
4241             },
4242             },
4243             83.1 => { # CSf1-i
4244             Name => 'Func3Button',
4245             Mask => 0x03,
4246             PrintConv => {
4247             0 => 'None',
4248             1 => 'Voice Memo',
4249             2 => 'Rating',
4250             3 => 'Connect To Network',
4251             },
4252             },
4253             );
4254              
4255             # D500 custom settings (ref 1)
4256             %Image::ExifTool::NikonCustom::SettingsD500 = (
4257             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
4258             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
4259             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
4260             WRITABLE => 1,
4261             FIRST_ENTRY => 0,
4262             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
4263             NOTES => 'Custom settings for the D500.',
4264             0.1 => {
4265             Name => 'CustomSettingsBank',
4266             Mask => 0x03,
4267             PrintConv => {
4268             0 => 'A',
4269             1 => 'B',
4270             2 => 'C',
4271             3 => 'D',
4272             },
4273             },
4274             1.1 => { # CSa1
4275             Name => 'AF-CPrioritySelection',
4276             Mask => 0xc0,
4277             PrintConv => {
4278             0 => 'Release',
4279             1 => 'Release + Focus',
4280             2 => 'Focus',
4281             3 => 'Focus + Release',
4282             },
4283             },
4284             1.2 => { # CSa2
4285             Name => 'AF-SPrioritySelection',
4286             Mask => 0x20,
4287             PrintConv => {
4288             0 => 'Focus',
4289             1 => 'Release',
4290             },
4291             },
4292             1.3 => { # CSa6
4293             Name => 'NumberOfFocusPoints',
4294             Mask => 0x10,
4295             PrintConv => {
4296             0 => '55 Points',
4297             1 => '15 Points',
4298             },
4299             },
4300             1.4 => { # CSa4
4301             Name => 'Three-DTrackingFaceDetection',
4302             Mask => 0x08,
4303             PrintConv => \%offOn,
4304             },
4305             1.5 => { # CSa3-a
4306             Name => 'BlockShotAFResponse',
4307             Mask => 0x07,
4308             #values 1-5
4309             },
4310             2.1 => { # CSa11
4311             Name => 'FocusPointWrap',
4312             Mask => 0x08,
4313             PrintConv => {
4314             0 => 'No Wrap',
4315             1 => 'Wrap',
4316             },
4317             },
4318             2.2 => { # CSa12-c
4319             Name => 'AFPointBrightness',
4320             Mask => 0x06,
4321             PrintConv => {
4322             0 => 'Auto',
4323             1 => 'On',
4324             2 => 'Off',
4325             },
4326             },
4327             4.1 => { # CSd3
4328             Name => 'ISODisplay',
4329             Mask => 0x08,
4330             PrintConv => {
4331             0 => 'Show ISO Sensitivity',
4332             1 => 'Show Frame Count',
4333             },
4334             },
4335             4.2 => { # CSd8
4336             Name => 'GridDisplay',
4337             Mask => 0x02,
4338             PrintConv => \%onOff,
4339             },
4340             5.1 => { # CSd9
4341             Name => 'LCDIllumination',
4342             Mask => 0x20,
4343             PrintConv => \%offOn,
4344             },
4345             5.2 => { # CSd6
4346             Name => 'ElectronicFront-CurtainShutter',
4347             Mask => 0x08,
4348             PrintConv => \%offOn,
4349             },
4350             6.1 => { # CSf7
4351             Name => 'ReverseIndicators',
4352             Mask => 0x80,
4353             PrintConv => {
4354             0 => '+ 0 -',
4355             1 => '- 0 +',
4356             },
4357             },
4358             6.2 => { # CSf4-a
4359             Name => 'CommandDialsReverseRotation',
4360             Mask => 0x18,
4361             PrintConv => {
4362             0 => 'No',
4363             1 => 'Shutter Speed & Aperture',
4364             2 => 'Exposure Compensation',
4365             3 => 'Exposure Compensation, Shutter Speed & Aperture',
4366             },
4367             },
4368             6.3 => { # CSb4
4369             Name => 'EasyExposureCompensation',
4370             Mask => 0x03,
4371             PrintConv => {
4372             0 => 'Off',
4373             1 => 'On',
4374             2 => 'On (auto reset)',
4375             },
4376             },
4377             7.1 => { # CSb2
4378             Name => 'ExposureControlStepSize',
4379             Mask => 0xc0,
4380             PrintConv => {
4381             0 => '1/3 EV',
4382             1 => '1/2 EV',
4383             2 => '1 EV',
4384             },
4385             },
4386             7.2 => { # CSb1
4387             Name => 'ISOStepSize',
4388             Mask => 0x30,
4389             PrintConv => {
4390             0 => '1/3 EV',
4391             1 => '1/2 EV',
4392             2 => '1 EV',
4393             },
4394             },
4395             7.3 => { # CSb3
4396             Name => 'ExposureCompStepSize',
4397             Mask => 0x0c,
4398             PrintConv => {
4399             0 => '1/3 EV',
4400             1 => '1/2 EV',
4401             2 => '1 EV',
4402             },
4403             },
4404             8.1 => { # CSb6
4405             Name => 'CenterWeightedAreaSize',
4406             Mask => 0xe0,
4407             PrintConv => {
4408             0 => '6 mm',
4409             1 => '8 mm',
4410             2 => '10 mm',
4411             3 => '13 mm',
4412             4 => 'Average',
4413             },
4414             },
4415             8.2 => { # CSb7-a
4416             Name => 'FineTuneOptMatrixMetering',
4417             Mask => 0x0f,
4418             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
4419             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
4420             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
4421             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
4422             },
4423             9.1 => { # CSb7-b
4424             Name => 'FineTuneOptCenterWeighted',
4425             Mask => 0xf0,
4426             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
4427             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
4428             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
4429             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
4430             },
4431             9.2 => { # CSb7-c
4432             Name => 'FineTuneOptSpotMetering',
4433             Mask => 0x0f,
4434             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
4435             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
4436             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
4437             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
4438             },
4439             10.1 => { # CSf2-a
4440             Name => 'MultiSelectorShootMode',
4441             Mask => 0xe0, #same offset and settings as D810 but with a different decoding
4442             PrintConv => {
4443             0 => 'Select Center Focus Point (Reset)',
4444             2 => 'Preset Focus Point (Pre)',
4445             3 => 'Highlight Active Focus Point',
4446             4 => 'Not Used (None)',
4447             },
4448             },
4449             10.2 => { # CSf2-b #same offset and settings as D810 but with a different decoding
4450             Name => 'MultiSelectorPlaybackMode',
4451             Mask => 0x0c,
4452             PrintConv => {
4453             0 => 'Thumbnail On/Off',
4454             1 => 'View Histograms',
4455             2 => 'Zoom On/Off',
4456             3 => 'Choose Folder',
4457             },
4458             },
4459             10.3 => { # CSf5
4460             Name => 'MultiSelector',
4461             Mask => 0x01,
4462             PrintConv => {
4463             0 => 'Do Nothing',
4464             1 => 'Reset Meter-off Delay',
4465             },
4466             },
4467             11.1 => { # CSd5
4468             Name => 'ExposureDelayMode',
4469             Mask => 0xc0,
4470             PrintConv => {
4471             0 => 'Off',
4472             1 => '1 s',
4473             2 => '2 s',
4474             3 => '3 s',
4475             },
4476             },
4477             11.2 => { # CSd1
4478             Name => 'CLModeShootingSpeed',
4479             Mask => 0x0f,
4480             PrintConv => '"$val fps"',
4481             PrintConvInv => '$val=~s/\s*fps//i; $val',
4482             },
4483             12.1 => { # CSd2
4484             Name => 'MaxContinuousRelease',
4485             # values: 1-100
4486             },
4487             13.1 => { # CSe7
4488             Name => 'AutoBracketOrder',
4489             Mask => 0x10,
4490             PrintConv => {
4491             0 => '0,-,+',
4492             1 => '-,0,+',
4493             },
4494             },
4495             13.2 => { # CSe6
4496             Name => 'AutoBracketModeM',
4497             Mask => 0x0c,
4498             PrintConv => {
4499             0 => 'Flash/Speed',
4500             1 => 'Flash/Speed/Aperture',
4501             2 => 'Flash/Aperture',
4502             3 => 'Flash Only',
4503             },
4504             },
4505             14.1 => { # CSf1-c
4506             Name => 'Func1Button',
4507             Mask => 0x3f,
4508             PrintConv => {
4509             0 => 'None',
4510             1 => 'Preview',
4511             2 => 'FV Lock',
4512             3 => 'AE/AF Lock',
4513             4 => 'AE Lock Only',
4514             5 => 'AE Lock (reset on release)',
4515             6 => 'AE Lock (hold)',
4516             7 => 'AF Lock Only',
4517             8 => 'AF-On',
4518             10 => 'Bracketing Burst',
4519             11 => 'Matrix Metering',
4520             12 => 'Center-weighted Metering',
4521             13 => 'Spot Metering',
4522             14 => 'Playback',
4523             15 => 'My Menu Top Item',
4524             16 => '+NEF(RAW)',
4525             17 => 'Virtual Horizon',
4526             19 => 'Grid Display',
4527             20 => 'My Menu',
4528             22 => 'Remote Release Only',
4529             26 => 'Flash Disable/Enable',
4530             27 => 'Highlight-weighted Metering',
4531             36 => 'AF-Area Mode (Single)',
4532             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
4533             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
4534             39 => 'AF-Area Mode (Dynamic Area 152 Points)',
4535             40 => 'AF-Area Mode (Group Area AF)',
4536             41 => 'AF-Area Mode (Auto Area AF)',
4537             42 => 'AF-Area Mode + AF-On (Single)',
4538             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
4539             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
4540             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',
4541             46 => 'AF-Area Mode + AF-On (Group Area AF)',
4542             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
4543             49 => 'Sync Release (Master Only)',
4544             50 => 'Sync Release (Remote Only)',
4545             },
4546             },
4547             15.1 => { # CSf1-a
4548             Name => 'PreviewButton',
4549             Mask => 0x3f,
4550             PrintConv => {
4551             0 => 'None',
4552             1 => 'Preview',
4553             2 => 'FV Lock',
4554             3 => 'AE/AF Lock',
4555             4 => 'AE Lock Only',
4556             5 => 'AE Lock (reset on release)',
4557             6 => 'AE Lock (hold)',
4558             7 => 'AF Lock Only',
4559             8 => 'AF-On',
4560             10 => 'Bracketing Burst',
4561             11 => 'Matrix Metering',
4562             12 => 'Center-weighted Metering',
4563             13 => 'Spot Metering',
4564             14 => 'Playback',
4565             15 => 'My Menu Top Item',
4566             16 => '+NEF(RAW)',
4567             17 => 'Virtual Horizon',
4568             19 => 'Grid Display',
4569             20 => 'My Menu',
4570             # 21 => 'Disable Synchronized Release', # removed with D500
4571             22 => 'Remote Release Only',
4572             26 => 'Flash Disable/Enable',
4573             27 => 'Highlight-weighted Metering',
4574             36 => 'AF-Area Mode (Single)', # new with D500
4575             37 => 'AF-Area Mode (Dynamic Area 25 Points)', # new with D500
4576             38 => 'AF-Area Mode (Dynamic Area 72 Points)', # new with D500
4577             39 => 'AF-Area Mode (Dynamic Area 152 Points)', # new with D500
4578             40 => 'AF-Area Mode (Group Area AF)', # new with D500
4579             41 => 'AF-Area Mode (Auto Area AF)', # new with D500
4580             42 => 'AF-Area Mode + AF-On (Single)', # new with D500
4581             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)', # new with D500
4582             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)', # new with D500
4583             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',# new with D500
4584             46 => 'AF-Area Mode + AF-On (Group Area AF)', # new with D500
4585             47 => 'AF-Area Mode + AF-On (Auto Area AF)', # new with D500
4586             49 => 'Sync Release (Master Only)', # new with D500
4587             50 => 'Sync Release (Remote Only)', # new with D500
4588             },
4589             },
4590             16.1 => { # CSf1-j
4591             Name => 'AssignBktButton',
4592             Mask => 0x07,
4593             PrintConv => {
4594             0 => 'Auto Bracketing',
4595             1 => 'Multiple Exposure',
4596             2 => 'HDR (high dynamic range)',
4597             3 => 'None',
4598             },
4599             },
4600             18.1 => { # CSf4-b
4601             Name => 'CommandDialsChangeMainSub',
4602             Mask => 0xe0,
4603             PrintConv => {
4604             0 => 'Autofocus Off, Exposure Off',
4605             1 => 'Autofocus Off, Exposure On',
4606             2 => 'Autofocus Off, Exposure On (Mode A)',
4607             4 => 'Autofocus On, Exposure Off',
4608             5 => 'Autofocus On, Exposure On',
4609             6 => 'Autofocus On, Exposure On (Mode A)',
4610             },
4611             },
4612             18.2 => { # CSf4-d
4613             Name => 'CommandDialsMenuAndPlayback',
4614             Mask => 0x18,
4615             PrintConv => {
4616             0 => 'On',
4617             1 => 'Off',
4618             2 => 'On (Image Review Excluded)',
4619             },
4620             },
4621             18.3 => { # CSf4-c
4622             Name => 'CommandDialsApertureSetting',
4623             Mask => 0x04,
4624             PrintConv => {
4625             0 => 'Sub-command Dial',
4626             1 => 'Aperture Ring',
4627             },
4628             },
4629             18.4 => { # CSf6
4630             Name => 'ReleaseButtonToUseDial',
4631             Mask => 0x01,
4632             PrintConv => \%noYes,
4633             },
4634             19.1 => { # CSc2
4635             Name => 'StandbyTimer',
4636             Mask => 0xf0,
4637             PrintConv => {
4638             0 => '4 s',
4639             1 => '6 s',
4640             3 => '10 s',
4641             5 => '30 s',
4642             6 => '1 min',
4643             7 => '5 min',
4644             8 => '10 min',
4645             9 => '30 min',
4646             10 => 'No Limit',
4647             },
4648             },
4649             20.1 => { # CSc3-a
4650             Name => 'SelfTimerTime',
4651             Mask => 0xc0,
4652             PrintConv => {
4653             0 => '2 s',
4654             1 => '5 s',
4655             2 => '10 s',
4656             3 => '20 s',
4657             },
4658             },
4659             20.2 => { # CSc3-c
4660             Name => 'SelfTimerShotInterval',
4661             Mask => 0x30,
4662             PrintConv => {
4663             0 => '0.5 s',
4664             1 => '1 s',
4665             2 => '2 s',
4666             3 => '3 s',
4667             },
4668             },
4669             20.3 => { # CSc3-b
4670             Name => 'SelfTimerShotCount',
4671             Mask => 0x0f,
4672             },
4673             21.1 => { # CSc4-d
4674             Name => 'ImageReviewMonitorOffTime',
4675             Mask => 0xe0,
4676             PrintConv => {
4677             0 => '2 s',
4678             1 => '4 s',
4679             3 => '10 s',
4680             4 => '20 s',
4681             5 => '1 min',
4682             6 => '5 min',
4683             7 => '10 min',
4684             },
4685             },
4686             21.2 => { # CSc4-e
4687             Name => 'LiveViewMonitorOffTime',
4688             Mask => 0x1c,
4689             PrintConv => {
4690             1 => '5 min',
4691             2 => '10 min',
4692             3 => '15 min',
4693             4 => '20 min',
4694             5 => '30 min',
4695             6 => 'No Limit',
4696             },
4697             },
4698             22.1 => { # CSc4-b
4699             Name => 'MenuMonitorOffTime',
4700             Mask => 0xe0,
4701             PrintConv => {
4702             0 => '4 s',
4703             2 => '10 s',
4704             4 => '20 s',
4705             5 => '1 min',
4706             6 => '5 min',
4707             7 => '10 min',
4708             },
4709             },
4710             22.2 => { # CSc4-c
4711             Name => 'ShootingInfoMonitorOffTime',
4712             Mask => 0x1c,
4713             PrintConv => {
4714             0 => '4 s',
4715             2 => '10 s',
4716             4 => '20 s',
4717             5 => '1 min',
4718             6 => '5 min',
4719             7 => '10 min',
4720             },
4721             },
4722             23.1 => { # CSe1
4723             Name => 'FlashSyncSpeed',
4724             Mask => 0xf0,
4725             PrintConv => {
4726             2 => '1/250 s (auto FP)',
4727             3 => '1/250 s',
4728             5 => '1/200 s',
4729             6 => '1/160 s',
4730             7 => '1/125 s',
4731             8 => '1/100 s',
4732             9 => '1/80 s',
4733             10 => '1/60 s',
4734             },
4735             },
4736             23.2 => { # CSe2
4737             Name => 'FlashShutterSpeed',
4738             Mask => 0x0f,
4739             PrintConvColumns => 2,
4740             PrintConv => {
4741             0 => '1/60 s',
4742             1 => '1/30 s',
4743             2 => '1/15 s',
4744             3 => '1/8 s',
4745             4 => '1/4 s',
4746             5 => '1/2 s',
4747             6 => '1 s',
4748             7 => '2 s',
4749             8 => '4 s',
4750             9 => '8 s',
4751             10 => '15 s',
4752             11 => '30 s',
4753             },
4754             },
4755             31.1 => { # CSe5
4756             Name => 'ModelingFlash',
4757             Mask => 0x20,
4758             PrintConv => \%onOff,
4759             },
4760             36.1 => { # CSc4-a
4761             Name => 'PlaybackMonitorOffTime',
4762             Mask => 0xe0,
4763             PrintConv => {
4764             0 => '4 s',
4765             1 => '10 s',
4766             2 => '20 s',
4767             3 => '1 min',
4768             4 => '5 min',
4769             5 => '10 min',
4770             },
4771             },
4772             37.1 => { # CSf2-c
4773             Name => 'MultiSelectorLiveView',
4774             Mask => 0xc0,
4775             PrintConv => {
4776             0 => 'Reset',
4777             1 => 'Zoom',
4778             3 => 'Not Used',
4779             },
4780             },
4781             38.1 => { # CSf3-a
4782             Name => 'ShutterSpeedLock',
4783             Mask => 0x80,
4784             PrintConv => \%offOn,
4785             },
4786             38.2 => { # CSf3-b
4787             Name => 'ApertureLock',
4788             Mask => 0x40,
4789             PrintConv => \%offOn,
4790             },
4791             38.3 => { # CSg1-h
4792             Name => 'MovieShutterButton',
4793             Mask => 0x10,
4794             PrintConv => {
4795             0 => 'Take Photo',
4796             1 => 'Record Movies',
4797             },
4798             },
4799             38.4 => { # CSe3
4800             Name => 'FlashExposureCompArea',
4801             Mask => 0x04,
4802             PrintConv => {
4803             0 => 'Entire Frame',
4804             1 => 'Background Only',
4805             },
4806             },
4807             38.5 => { # CSe4
4808             Name => 'AutoFlashISOSensitivity',
4809             Mask => 0x02,
4810             PrintConv => {
4811             0 => 'Subject and Background',
4812             1 => 'Subject Only',
4813             },
4814             },
4815             41.1 => { # CSg1-c
4816             Name => 'MovieFunc1Button',
4817             Mask => 0xf0,
4818             PrintConv => {
4819             0 => 'None',
4820             2 => 'Power Aperture (close)',
4821             3 => 'Index Marking',
4822             4 => 'View Photo Shooting Info',
4823             11 => 'Exposure Compensation -',
4824             },
4825             },
4826             41.2 => { # CSg1-a
4827             Name => 'MoviePreviewButton',
4828             Mask => 0x0f,
4829             PrintConv => {
4830             0 => 'None',
4831             1 => 'Power Aperture (open)',
4832             3 => 'Index Marking',
4833             4 => 'View Photo Shooting Info',
4834             10 => 'Exposure Compensation +',
4835             },
4836             },
4837             42.1 => { # CSf1-d
4838             Name => 'Func1ButtonPlusDials',
4839             Mask => 0x0f,
4840             PrintConv => {
4841             0 => 'None',
4842             1 => 'Choose Image Area (DX/1.3x)',
4843             2 => 'Shutter Speed & Aperture Lock',
4844             3 => 'One Step Speed / Aperture',
4845             4 => 'Choose Non-CPU Lens Number',
4846             5 => 'Active D-Lighting',
4847             7 => 'Photo Shooting Menu Bank',
4848             8 => 'Exposure Delay Mode',
4849             },
4850             },
4851             43.1 => { # CSf1-b
4852             Name => 'PreviewButtonPlusDials',
4853             Mask => 0x0f,
4854             PrintConv => {
4855             0 => 'None',
4856             1 => 'Choose Image Area (DX/1.3x)',
4857             2 => 'Shutter Speed & Aperture Lock',
4858             3 => 'One Step Speed / Aperture',
4859             4 => 'Choose Non-CPU Lens Number',
4860             5 => 'Active D-Lighting',
4861             7 => 'Photo Shooting Menu Bank', # new with D500
4862             8 => 'Exposure Delay Mode',
4863             },
4864             },
4865             45.1 => { # CSf1-k
4866             Name => 'AssignMovieRecordButtonPlusDials',
4867             Mask => 0x0f,
4868             PrintConv => {
4869             0 => 'None',
4870             1 => 'Choose Image Area (DX/1.3x)',
4871             2 => 'Shutter Speed & Aperture Lock',
4872             7 => 'Photo Shooting Menu Bank',
4873             11 => 'Exposure Mode',
4874             },
4875             },
4876             46.1 => { # CSb7-d
4877             Name => 'FineTuneOptHighlightWeighted',
4878             Mask => 0x0f,
4879             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
4880             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
4881             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
4882             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
4883             },
4884             47.1 => { # CSa12-b
4885             Name => 'DynamicAreaAFDisplay',
4886             Mask => 0x80,
4887             PrintConv => \%offOn,
4888             },
4889             47.2 => { # CSa12-a
4890             Name => 'AFPointIllumination',
4891             Mask => 0x40,
4892             PrintConv => {
4893             0 => 'Off',
4894             1 => 'On During Manual Focusing',
4895             },
4896             },
4897             47.3 => { # CSa7
4898             Name => 'StoreByOrientation',
4899             Mask => 0x18,
4900             PrintConv => {
4901             0 => 'Off',
4902             1 => 'Focus Point',
4903             2 => 'Focus Point and AF-area Mode',
4904             },
4905             },
4906             47.4 => { # CSa12-c
4907             Name => 'GroupAreaAFIllumination',
4908             Mask => 0x04,
4909             PrintConv => {
4910             0 => 'Squares',
4911             1 => 'Dots',
4912             },
4913             },
4914             48.1 => { # CSb5
4915             Name => 'MatrixMetering',
4916             Mask => 0x80,
4917             PrintConv => {
4918             0 => 'Face Detection On',
4919             1 => 'Face Detection Off',
4920             },
4921             },
4922             48.2 => { # CSf8
4923             Name => 'LiveViewButtonOptions',
4924             Mask => 0x30,
4925             PrintConv => {
4926             0 => 'Enable',
4927             1 => 'Enable (Standby Timer Active)', # new with D500
4928             2 => 'Disable',
4929             },
4930             },
4931             48.3 => { # CSa10
4932             Name => 'AFModeRestrictions',
4933             Mask => 0x03,
4934             PrintConv => {
4935             0 => 'No Restrictions',
4936             1 => 'AF-C',
4937             2 => 'AF-S',
4938             },
4939             },
4940             49.1 => { # CSa9
4941             Name => 'LimitAFAreaModeSelection',
4942             Mask => 0x7e,
4943             PrintConv => {
4944             0 => 'No Restrictions',
4945             BITMASK => {
4946             0 => 'Auto-area',
4947             1 => 'Group-area',
4948             2 => '3D-tracking',
4949             3 => 'Dynamic area (153 points)',
4950             4 => 'Dynamic area (72 points)',
4951             5 => 'Dynamic area (25 points)',
4952             },
4953             },
4954             },
4955             52.1 => { # CSf1-l
4956             Name => 'LensFocusFunctionButtons',
4957             Mask => 0x3f,
4958             PrintConv => {
4959             3 => 'AE/AF Lock',
4960             4 => 'AE Lock Only',
4961             7 => 'AF Lock Only',
4962             8 => 'AF-On',
4963             24 => 'Preset Focus Point',
4964             26 => 'Flash Disable/Enable',
4965             36 => 'AF-Area Mode (Single)',
4966             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
4967             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
4968             39 => 'AF-Area Mode (Dynamic Area 152 Points)',
4969             40 => 'AF-Area Mode (Group Area AF)',
4970             41 => 'AF-Area Mode (Auto Area AF)',
4971             42 => 'AF-Area Mode + AF-On (Single)',
4972             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
4973             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
4974             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',
4975             46 => 'AF-Area Mode + AF-On (Group Area AF)',
4976             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
4977             49 => 'Sync Release (Master Only)',
4978             50 => 'Sync Release (Remote Only)',
4979             },
4980             },
4981             66.1 => { # CSf10-d
4982             Name => 'VerticalMultiSelector',
4983             Mask => 0xff,
4984             PrintHex => 1,
4985             PrintConv => {
4986             0x00 => 'Same as Multi-Selector with Info(U/D) & Playback(R/L)',
4987             0x08 => 'Same as Multi-Selector with Info(R/L) & Playback(U/D)',
4988             0x80 => 'Focus Point Selection',
4989             },
4990             },
4991             67.1 => { # CSf10-a
4992             Name => 'AssignMB-D17FuncButton',
4993             Mask => 0x3f,
4994             PrintConv => {
4995             0 => 'None',
4996             1 => 'Preview',
4997             2 => 'FV Lock',
4998             3 => 'AE/AF Lock',
4999             4 => 'AE Lock Only',
5000             5 => 'AE Lock (reset on release)',
5001             6 => 'AE Lock (hold)',
5002             7 => 'AF Lock Only',
5003             8 => 'AF-On',
5004             10 => 'Bracketing Burst',
5005             11 => 'Matrix Metering',
5006             12 => 'Center-weighted Metering',
5007             13 => 'Spot Metering',
5008             14 => 'Playback',
5009             15 => 'My Menu Top Item',
5010             16 => '+NEF(RAW)',
5011             17 => 'Virtual Horizon',
5012             18 => 'Reset Focus Point',
5013             19 => 'Grid Display',
5014             20 => 'My Menu',
5015             22 => 'Remote Release Only',
5016             23 => 'Preset Focus Point',
5017             26 => 'Flash Disable/Enable',
5018             27 => 'Highlight-weighted Metering',
5019             36 => 'AF-Area Mode (Single)',
5020             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
5021             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
5022             39 => 'AF-Area Mode (Dynamic Area 152 Points)',
5023             40 => 'AF-Area Mode (Group Area AF)',
5024             41 => 'AF-Area Mode (Auto Area AF)',
5025             42 => 'AF-Area Mode + AF-On (Single)',
5026             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
5027             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
5028             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',
5029             46 => 'AF-Area Mode + AF-On (Group Area AF)',
5030             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
5031             49 => 'Sync Release (Master Only)',
5032             50 => 'Sync Release (Remote Only)',
5033             54 => 'Highlight Active Focus Point',
5034             },
5035             },
5036             68.1 => { # CSf10-b
5037             Name => 'AssignMB-D17FuncButtonPlusDials',
5038             Mask => 0x0f,
5039             PrintConv => {
5040             0 => 'None',
5041             1 => 'Choose Image Area (DX/1.3x)',
5042             2 => 'Shutter Speed & Aperture Lock',
5043             3 => 'One Step Speed / Aperture',
5044             4 => 'Choose Non-CPU Lens Number',
5045             5 => 'Active D-Lighting',
5046             7 => 'Photo Shooting Menu Bank',
5047             8 => 'Exposure Delay Mode',
5048             10 => 'ISO Sensitivity',
5049             11 => 'Exposure Mode',
5050             12 => 'Exposure Compensation',
5051             13 => 'Metering Mode',
5052             },
5053             },
5054             70.1 => { # CSf1-f
5055             Name => 'AF-OnButton',
5056             Mask => 0x3f,
5057             PrintConv => {
5058             0 => 'None',
5059             3 => 'AE/AF Lock',
5060             4 => 'AE Lock Only',
5061             5 => 'AE Lock (reset on release)',
5062             6 => 'AE Lock (hold)',
5063             7 => 'AF Lock Only',
5064             8 => 'AF-On',
5065             36 => 'AF-Area Mode (Single)',
5066             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
5067             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
5068             39 => 'AF-Area Mode (Dynamic Area 152 Points)',
5069             40 => 'AF-Area Mode (Group Area AF)',
5070             41 => 'AF-Area Mode (Auto Area AF)',
5071             42 => 'AF-Area Mode + AF-On (Single)',
5072             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
5073             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
5074             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',
5075             46 => 'AF-Area Mode + AF-On (Group Area AF)',
5076             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
5077             },
5078             },
5079             71.1 => { # CSf1-g
5080             Name => 'SubSelector',
5081             Mask => 0x80,
5082             PrintConv => {
5083             0 => 'Focus Point Selection',
5084             1 => 'Same as MultiSelector',
5085             },
5086             },
5087             72.1 => { # CSf1-h
5088             Name => 'SubSelectorCenter',
5089             Mask => 0x3f,
5090             PrintConv => {
5091             0 => 'None',
5092             1 => 'Preview',
5093             2 => 'FV Lock',
5094             3 => 'AE/AF Lock',
5095             4 => 'AE Lock Only',
5096             5 => 'AE Lock (reset on release)',
5097             6 => 'AE Lock (hold)',
5098             7 => 'AF Lock Only',
5099             8 => 'AF-On',
5100             10 => 'Bracketing Burst',
5101             11 => 'Matrix Metering',
5102             12 => 'Center-weighted Metering',
5103             13 => 'Spot Metering',
5104             14 => 'Playback',
5105             15 => 'My Menu Top Item',
5106             16 => '+NEF(RAW)',
5107             17 => 'Virtual Horizon',
5108             18 => 'Reset Focus Point',
5109             19 => 'Grid Display',
5110             20 => 'My Menu',
5111             22 => 'Remote Release Only',
5112             23 => 'Preset Focus Point',
5113             26 => 'Flash Disable/Enable',
5114             27 => 'Highlight-weighted Metering',
5115             36 => 'AF-Area Mode (Single)',
5116             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
5117             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
5118             39 => 'AF-Area Mode (Dynamic Area 152 Points)',
5119             40 => 'AF-Area Mode (Group Area AF)',
5120             41 => 'AF-Area Mode (Auto Area AF)',
5121             42 => 'AF-Area Mode + AF-On (Single)',
5122             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
5123             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
5124             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',
5125             46 => 'AF-Area Mode + AF-On (Group Area AF)',
5126             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
5127             49 => 'Sync Release (Master Only)',
5128             50 => 'Sync Release (Remote Only)',
5129             54 => 'Highlight Active Focus Point',
5130             },
5131             },
5132             73.1 => { # CSf1-i
5133             Name => 'SubSelectorPlusDials',
5134             Mask => 0x0f,
5135             PrintConv => {
5136             0 => 'None',
5137             1 => 'Choose Image Area (DX/1.3x)',
5138             2 => 'Shutter Speed & Aperture Lock',
5139             4 => 'Choose Non-CPU Lens Number',
5140             7 => 'Photo Shooting Menu Bank',
5141             },
5142             },
5143             74.1 => { # CSg1-f
5144             Name => 'AssignMovieSubselector',
5145             Mask => 0xf0,
5146             PrintConv => {
5147             0 => 'None',
5148             3 => 'Index Marking',
5149             4 => 'View Photo Shooting Info',
5150             5 => 'AE/AF Lock',
5151             6 => 'AE Lock (Only)',
5152             7 => 'AE Lock (Hold)',
5153             8 => 'AF Lock (Only)',
5154             },
5155             },
5156             75.1 => { # CSg1-d
5157             Name => 'AssignMovieFunc1ButtonPlusDials',
5158             Mask => 0x10,
5159             PrintConv => {
5160             0 => 'None',
5161             1 => 'Choose Image Area (DX/1.3x)',
5162             },
5163             },
5164             75.2 => { # CSg1-b
5165             Name => 'AssignMoviePreviewButtonPlusDials',
5166             Mask => 0x01,
5167             PrintConv => {
5168             0 => 'None',
5169             1 => 'Choose Image Area (DX/1.3x)',
5170             },
5171             },
5172             76.1 => { # CSg1-g
5173             Name => 'AssignMovieSubselectorPlusDials',
5174             Mask => 0x10,
5175             PrintConv => {
5176             0 => 'None',
5177             1 => 'Choose Image Area (DX/1.3x)',
5178             },
5179             },
5180             77.1 => { # CSd4
5181             Name => 'SyncReleaseMode', # new with D500
5182             Mask => 0x80,
5183             PrintConv => {
5184             0 => 'No Sync',
5185             1 => 'Sync',
5186             },
5187             },
5188             78.1 => { # CSa5
5189             Name => 'Three-DTrackingWatchArea', # new with D500
5190             Mask => 0x80,
5191             PrintConv => {
5192             0 => 'Wide',
5193             1 => 'Normal',
5194             },
5195             },
5196             78.2 => { # CSa3-b
5197             Name => 'SubjectMotion',
5198             Mask => 0x60,
5199             PrintConv => {
5200             0 => 'Steady',
5201             1 => 'Middle',
5202             2 => 'Erratic',
5203             },
5204             },
5205             78.3 => { # CSa8
5206             Name => 'AFActivation',
5207             Mask => 0x08,
5208             PrintConv => {
5209             0 => 'Shutter/AF-On',
5210             1 => 'AF-On Only',
5211             },
5212             },
5213             78.4 => { # CSc1
5214             Name => 'ShutterReleaseButtonAE-L',
5215             Mask => 0x03,
5216             PrintConv => {
5217             0 => 'Off',
5218             1 => 'On (Half Press)',
5219             2 => 'On (Burst Mode)'
5220             },
5221             },
5222             79.1 => { # CSf10-c
5223             Name => 'AssignMB-D17AF-OnButton',
5224             Mask => 0x7f,
5225             PrintConv => {
5226             0 => 'None',
5227             3 => 'AE/AF Lock',
5228             4 => 'AE Lock Only',
5229             5 => 'AE Lock (reset on release)',
5230             6 => 'AE Lock (hold)',
5231             7 => 'AF Lock Only',
5232             8 => 'AF-On',
5233             36 => 'AF-Area Mode (Single)',
5234             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
5235             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
5236             39 => 'AF-Area Mode (Dynamic Area 152 Points)',
5237             40 => 'AF-Area Mode (Group Area AF)',
5238             41 => 'AF-Area Mode (Auto Area AF)',
5239             42 => 'AF-Area Mode + AF-On (Single)',
5240             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
5241             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
5242             45 => 'AF-Area Mode + AF-On (Dynamic Area 152 Points)',
5243             46 => 'AF-Area Mode + AF-On (Group Area AF)',
5244             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
5245             100 => 'Same as Camera AF-On Button',
5246             },
5247             },
5248             80.1 => { # CSf1-e
5249             Name => 'Func2Button',
5250             Mask => 0x3f,
5251             PrintConv => {
5252             0 => 'None',
5253             15 => 'My Menu Top Item',
5254             20 => 'My Menu',
5255             55 => 'Rating',
5256             },
5257             },
5258             82.1 => { # CSg1-e
5259             Name => 'AssignMovieFunc2Button',
5260             Mask => 0x70,
5261             PrintConv => {
5262             0 => 'None',
5263             3 => 'Index Marking',
5264             4 => 'View Photo Shooting Info',
5265             },
5266             },
5267             );
5268              
5269             # D610 custom settings (ref forum6942)
5270             %Image::ExifTool::NikonCustom::SettingsD610 = (
5271             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
5272             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
5273             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
5274             WRITABLE => 1,
5275             FIRST_ENTRY => 0,
5276             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
5277             NOTES => 'Custom settings for the D610.',
5278             0.1 => { #CSa1
5279             Name => 'AF-CPrioritySelection',
5280             Mask => 0x80,
5281             PrintConv => {
5282             0 => 'Release',
5283             1 => 'Focus',
5284             },
5285             },
5286             0.2 => { #CSa2
5287             Name => 'AF-SPrioritySelection',
5288             Mask => 0x20,
5289             PrintConv => {
5290             0 => 'Release',
5291             1 => 'Focus',
5292             },
5293             },
5294             0.3 => { # CSa6
5295             Name => 'NumberOfFocusPoints',
5296             Mask => 0x10,
5297             PrintConv => {
5298             0 => '39 Points',
5299             1 => '11 Points',
5300             },
5301             },
5302             0.4 => { # CSa3
5303             Name => 'FocusTrackingLockOn',
5304             Mask => 0x07,
5305             PrintConv => {
5306             0 => 'Off',
5307             1 => '1 Short',
5308             2 => '2',
5309             3 => '3 Normal',
5310             4 => '4',
5311             5 => '5 Long',
5312             },
5313             },
5314             1.1 => { # CSa5
5315             Name => 'FocusPointWrap',
5316             Mask => 0x08,
5317             PrintConv => {
5318             0 => 'No Wrap',
5319             1 => 'Wrap',
5320             },
5321             },
5322             1.2 => { # CSa4
5323             Name => 'AFPointIllumination',
5324             Mask => 0x06,
5325             PrintConv => {
5326             0 => 'Auto',
5327             1 => 'On',
5328             2 => 'Off',
5329             },
5330             },
5331             1.3 => { # CSa7
5332             Name => 'AFAssist',
5333             Mask => 0x01,
5334             PrintConv => \%onOff,
5335             },
5336             5.1 => { # CSb3
5337             Name => 'EasyExposureCompensation',
5338             Mask => 0x03,
5339             PrintConv => {
5340             0 => 'Off',
5341             1 => 'On',
5342             2 => 'On Auto Reset',
5343             },
5344             },
5345             6.1 => { # CSb2
5346             Name => 'ExposureControlStep',
5347             Mask => 0x40,
5348             PrintConv => {
5349             0 => '1/3 EV',
5350             1 => '1/2 EV',
5351             },
5352             },
5353             6.2 => { # CSb1
5354             Name => 'ISOSensitivityStep',
5355             Mask => 0x10,
5356             PrintConv => {
5357             0 => '1/3 EV',
5358             1 => '1/2 EV',
5359             },
5360             },
5361             7.1 => { # CSb4
5362             Name => 'CenterWeightedAreaSize',
5363             Mask => 0xe0,
5364             PrintConv => {
5365             0 => '8 mm',
5366             1 => '12 mm',
5367             2 => '15 mm',
5368             3 => '20 mm',
5369             4 => 'Average',
5370             },
5371             },
5372             7.2 => { # CSb5-a
5373             Name => 'FineTuneOptMatrixMetering',
5374             Mask => 0x0f,
5375             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
5376             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
5377             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
5378             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
5379             },
5380             8.1 => { # CSb5-b
5381             Name => 'FineTuneOptCenterWeighted',
5382             Mask => 0xf0,
5383             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
5384             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
5385             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
5386             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
5387             },
5388             8.2 => { # CSb5-c
5389             Name => 'FineTuneOptSpotMetering',
5390             Mask => 0x0f,
5391             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
5392             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
5393             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
5394             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
5395             },
5396             17.1 => { # CSc1
5397             Name => 'ShutterReleaseButtonAE-L',
5398             Mask => 0x02,
5399             PrintConv => \%offOn,
5400             },
5401             18.1 => { # CSc2
5402             Name => 'StandbyTimer',
5403             Mask => 0xf0,
5404             PrintConv => {
5405             0 => '4 s',
5406             1 => '6 s',
5407             2 => '10 s',
5408             3 => '30 s',
5409             4 => '1 min',
5410             5 => '5 min',
5411             6 => '10 min',
5412             7 => '30 min',
5413             8 => 'No Limit',
5414             },
5415             },
5416             18.2 => { # CSc5
5417             Name => 'RemoteOnDuration',
5418             Mask => 0x03,
5419             PrintConv => {
5420             0 => '1 min',
5421             1 => '5 min',
5422             2 => '10 min',
5423             3 => '20 min',
5424             },
5425             },
5426             19.1 => { # CSc3-a
5427             Name => 'SelfTimerTime',
5428             Mask => 0xc0,
5429             PrintConv => {
5430             0 => '2 s',
5431             1 => '5 s',
5432             2 => '10 s',
5433             3 => '20 s',
5434             },
5435             },
5436             19.2 => { # CSc3-c
5437             Name => 'SelfTimerShotInterval',
5438             Mask => 0x30,
5439             PrintConv => {
5440             0 => '0.5 s',
5441             1 => '1 s',
5442             2 => '2 s',
5443             3 => '3 s',
5444             },
5445             },
5446             19.3 => { # CSc3-b
5447             Name => 'SelfTimerShotCount',
5448             Mask => 0x0f,
5449             },
5450             20.1 => { # CSc4-d
5451             Name => 'ImageReviewMonitorOffTime',
5452             Mask => 0xe0,
5453             PrintConv => {
5454             0 => '2 s',
5455             1 => '4 s',
5456             2 => '10 s',
5457             3 => '20 s',
5458             4 => '1 min',
5459             5 => '5 min',
5460             6 => '10 min',
5461             },
5462             },
5463             20.2 => { # CSc4-e
5464             Name => 'LiveViewMonitorOffTime',
5465             Mask => 0x1c,
5466             PrintConv => {
5467             0 => '5 min',
5468             1 => '10 min',
5469             2 => '15 min',
5470             3 => '20 min',
5471             4 => '30 min',
5472             5 => 'No Limit',
5473             },
5474             },
5475             21.1 => { # CSc4-b
5476             Name => 'MenuMonitorOffTime',
5477             Mask => 0xe0,
5478             PrintConv => {
5479             0 => '4 s',
5480             1 => '10 s',
5481             2 => '20 s', # default
5482             3 => '1 min',
5483             4 => '5 min',
5484             5 => '10 min',
5485             },
5486             },
5487             21.2 => { # CSc4-c
5488             Name => 'ShootingInfoMonitorOffTime',
5489             Mask => 0x1c,
5490             PrintConv => {
5491             0 => '4 s',
5492             1 => '10 s', # default
5493             2 => '20 s',
5494             3 => '1 min',
5495             4 => '5 min',
5496             5 => '10 min',
5497             },
5498             },
5499             35.1 => { # CSc4-a
5500             Name => 'PlaybackMonitorOffTime',
5501             Mask => 0xe0,
5502             PrintConv => {
5503             0 => '4 s',
5504             1 => '10 s',
5505             2 => '20 s',
5506             3 => '1 min',
5507             4 => '5 min',
5508             5 => '10 min',
5509             },
5510             },
5511             );
5512              
5513             # D810 custom settings (ref 1)
5514             %Image::ExifTool::NikonCustom::SettingsD810 = (
5515             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
5516             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
5517             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
5518             WRITABLE => 1,
5519             FIRST_ENTRY => 0,
5520             DATAMEMBER => [ 24.1 ],
5521             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
5522             NOTES => 'Custom settings for the D810.',
5523             0.1 => { # CSf1
5524             Name => 'LightSwitch',
5525             Mask => 0x08,
5526             PrintConv => {
5527             0 => 'LCD Backlight',
5528             1 => 'LCD Backlight and Shooting Information',
5529             },
5530             },
5531             0.2 => {
5532             Name => 'CustomSettingsBank',
5533             Mask => 0x03,
5534             PrintConv => {
5535             0 => 'A',
5536             1 => 'B',
5537             2 => 'C',
5538             3 => 'D',
5539             },
5540             },
5541             1.1 => { #CSa1
5542             Name => 'AF-CPrioritySelection',
5543             Mask => 0xc0,
5544             PrintConv => {
5545             0 => 'Release',
5546             1 => 'Release + Focus',
5547             2 => 'Focus',
5548             },
5549             },
5550             1.2 => { # CSa2
5551             Name => 'AF-SPrioritySelection',
5552             Mask => 0x20,
5553             PrintConv => {
5554             0 => 'Focus',
5555             1 => 'Release',
5556             },
5557             },
5558             1.3 => { # CSa7
5559             Name => 'AFPointSelection',
5560             Mask => 0x10,
5561             PrintConv => {
5562             0 => '51 Points',
5563             1 => '11 Points',
5564             },
5565             },
5566             1.4 => { # CSa3
5567             Name => 'FocusTrackingLockOn',
5568             Mask => 0x07,
5569             PrintConv => {
5570             0 => 'Off',
5571             1 => '1 (Short)',
5572             2 => '2',
5573             3 => '3 (Normal)',
5574             4 => '4',
5575             5 => '5 (Long)',
5576             },
5577             },
5578             2.1 => { # CSa4
5579             Name => 'AFActivation',
5580             Mask => 0x80,
5581             PrintConv => {
5582             0 => 'Shutter/AF-On',
5583             1 => 'AF-On Only',
5584             },
5585             },
5586             2.2 => { # CSa7
5587             Name => 'FocusPointWrap',
5588             Mask => 0x08,
5589             PrintConv => {
5590             0 => 'No Wrap',
5591             1 => 'Wrap',
5592             },
5593             },
5594             2.3 => { # CSa6
5595             Name => 'AFPointBrightness',
5596             Mask => 0x06,
5597             PrintConv => {
5598             0 => 'Auto',
5599             1 => 'On',
5600             2 => 'Off',
5601             },
5602             },
5603             2.4 => { # CSa10
5604             Name => 'AFAssist',
5605             Mask => 0x01,
5606             PrintConv => \%onOff,
5607             },
5608             3.1 => { # CSd13
5609             Name => 'BatteryOrder',
5610             Mask => 0x40,
5611             PrintConv => {
5612             0 => 'MB-D12 First',
5613             1 => 'Camera Battery First',
5614             },
5615             },
5616             3.2 => { # CSd12
5617             Name => 'MB-D12BatteryType',
5618             Mask => 0x03,
5619             PrintConv => {
5620             0 => 'LR6 (AA alkaline)',
5621             1 => 'HR6 (AA Ni-MH)',
5622             2 => 'FR6 (AA lithium)',
5623             },
5624             },
5625             4.1 => { # CSd1-b
5626             Name => 'Pitch',
5627             Mask => 0x40,
5628             PrintConv => { 0 => 'High', 1 => 'Low' },
5629             },
5630             4.2 => { # CSf11
5631             Name => 'NoMemoryCard',
5632             Mask => 0x20,
5633             PrintConv => {
5634             0 => 'Release Locked',
5635             1 => 'Enable Release',
5636             },
5637             },
5638             4.3 => { # CSd8
5639             Name => 'ISODisplay',
5640             Mask => 0x0c,
5641             PrintConv => {
5642             0 => 'Show ISO/Easy ISO',
5643             1 => 'Show ISO Sensitivity',
5644             3 => 'Show Frame Count',
5645             },
5646             },
5647             4.4 => { # CSd7
5648             Name => 'GridDisplay',
5649             Mask => 0x02,
5650             PrintConv => \%onOff,
5651             },
5652             5.1 => { # CSd10
5653             Name => 'ShootingInfoDisplay',
5654             Mask => 0xc0,
5655             PrintConv => {
5656             0 => 'Not Set', # observed on a new camera prior to applying a setting for the first time
5657             1 => 'Auto',
5658             2 => 'Manual (dark on light)',
5659             3 => 'Manual (light on dark)',
5660             },
5661             },
5662             5.2 => { # CSd11
5663             Name => 'LCDIllumination',
5664             Mask => 0x20,
5665             PrintConv => \%offOn,
5666             },
5667             5.3 => { # CSd5
5668             Name => 'ElectronicFront-CurtainShutter',
5669             Mask => 0x08,
5670             PrintConv => \%offOn,
5671             },
5672             5.4 => { # CSd9
5673             Name => 'ScreenTips',
5674             Mask => 0x04,
5675             PrintConv => \%offOn,
5676             },
5677             5.5 => { # CSd1-a
5678             Name => 'Beep',
5679             Mask => 0x03,
5680             PrintConv => {
5681             0 => 'Off',
5682             1 => 'Low',
5683             2 => 'Medium',
5684             3 => 'High',
5685             },
5686             },
5687             6.1 => { # CSf12
5688             Name => 'ReverseIndicators',
5689             Mask => 0x80,
5690             PrintConv => {
5691             0 => '+ 0 -',
5692             1 => '- 0 +',
5693             },
5694             },
5695             6.2 => { # CSf9-a
5696             Name => 'CommandDialsReverseRotation',
5697             Mask => 0x18,
5698             PrintConv => {
5699             0 => 'No',
5700             1 => 'Shutter Speed & Aperture',
5701             2 => 'Exposure Compensation',
5702             3 => 'Exposure Compensation, Shutter Speed & Aperture',
5703             },
5704             },
5705             6.3 => { # CSb4
5706             Name => 'EasyExposureCompensation',
5707             Mask => 0x03,
5708             PrintConv => {
5709             0 => 'Off',
5710             1 => 'On',
5711             2 => 'On (auto reset)',
5712             },
5713             },
5714             7.1 => { # CSb2
5715             Name => 'ExposureControlStepSize',
5716             Mask => 0xc0,
5717             PrintConv => {
5718             0 => '1/3 EV',
5719             1 => '1/2 EV',
5720             2 => '1 EV',
5721             },
5722             },
5723             7.2 => { # CSb1
5724             Name => 'ISOStepSize',
5725             Mask => 0x30,
5726             PrintConv => {
5727             0 => '1/3 EV',
5728             1 => '1/2 EV',
5729             2 => '1 EV',
5730             },
5731             },
5732             7.3 => { # CSb3
5733             Name => 'ExposureCompStepSize',
5734             Mask => 0x0c,
5735             PrintConv => {
5736             0 => '1/3 EV',
5737             1 => '1/2 EV',
5738             2 => '1 EV',
5739             },
5740             },
5741             8.1 => { # CSb6
5742             Name => 'CenterWeightedAreaSize',
5743             Mask => 0xe0,
5744             PrintConv => {
5745             0 => '8 mm',
5746             1 => '12 mm',
5747             2 => '15 mm',
5748             3 => '20 mm',
5749             4 => 'Average',
5750             },
5751             },
5752             8.2 => { # CSb7-a
5753             Name => 'FineTuneOptMatrixMetering',
5754             Mask => 0x0f,
5755             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
5756             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
5757             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
5758             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
5759             },
5760             9.1 => { # CSb7-b
5761             Name => 'FineTuneOptCenterWeighted',
5762             Mask => 0xf0,
5763             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
5764             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
5765             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
5766             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
5767             },
5768             9.2 => { # CSb7-c
5769             Name => 'FineTuneOptSpotMetering',
5770             Mask => 0x0f,
5771             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
5772             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
5773             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
5774             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
5775             },
5776             10.1 => { # CSf2-a
5777             Name => 'MultiSelectorShootMode',
5778             Mask => 0xc0,
5779             PrintConv => {
5780             0 => 'Select Center Focus Point (Reset)',
5781             1 => 'Highlight Active Focus Point',
5782             2 => 'Preset Focus Point (Pre)',
5783             3 => 'Not Used (None)',
5784             },
5785             },
5786             10.2 => { # CSf2-b
5787             Name => 'MultiSelectorPlaybackMode',
5788             Mask => 0x30,
5789             PrintConv => {
5790             0 => 'Thumbnail On/Off',
5791             1 => 'View Histograms',
5792             2 => 'Zoom On/Off',
5793             3 => 'Choose Folder',
5794             },
5795             },
5796             10.3 => { # CSf3
5797             Name => 'MultiSelector',
5798             Mask => 0x01,
5799             PrintConv => {
5800             0 => 'Do Nothing',
5801             1 => 'Reset Meter-off Delay',
5802             },
5803             },
5804             11.1 => { # CSd4
5805             Name => 'ExposureDelayMode',
5806             Mask => 0xc0,
5807             PrintConv => {
5808             0 => 'Off',
5809             1 => '1 s',
5810             2 => '2 s',
5811             3 => '3 s',
5812             },
5813             },
5814             11.2 => { # CSd2
5815             Name => 'CLModeShootingSpeed',
5816             Mask => 0x0f,
5817             PrintConv => '"$val fps"',
5818             PrintConvInv => '$val=~s/\s*fps//i; $val',
5819             },
5820             12.1 => { # CSd3
5821             Name => 'MaxContinuousRelease',
5822             # values: 1-100
5823             },
5824             13.1 => { # CSe6
5825             Name => 'AutoBracketSet',
5826             Mask => 0xe0,
5827             PrintConv => {
5828             0 => 'AE & Flash',
5829             1 => 'AE Only',
5830             2 => 'Flash Only',
5831             3 => 'WB Bracketing',
5832             4 => 'Active D-Lighting',
5833             },
5834             },
5835             13.2 => { # CSe8
5836             Name => 'AutoBracketOrder',
5837             Mask => 0x10,
5838             PrintConv => {
5839             0 => '0,-,+',
5840             1 => '-,0,+',
5841             },
5842             },
5843             13.3 => { # CSe7
5844             Name => 'AutoBracketModeM',
5845             Mask => 0x0c,
5846             PrintConv => {
5847             0 => 'Flash/Speed',
5848             1 => 'Flash/Speed/Aperture',
5849             2 => 'Flash/Aperture',
5850             3 => 'Flash Only',
5851             },
5852             },
5853             14.1 => { # CSf4-a
5854             Name => 'FuncButton',
5855             Mask => 0x1f,
5856             PrintConv => {
5857             0 => 'None',
5858             1 => 'Preview',
5859             2 => 'FV Lock',
5860             3 => 'AE/AF Lock',
5861             4 => 'AE Lock Only',
5862             5 => 'AE Lock (reset on release)',
5863             6 => 'AE Lock (hold)',
5864             7 => 'AF Lock Only',
5865             8 => 'AF-On',
5866             10 => 'Bracketing Burst',
5867             11 => 'Matrix Metering',
5868             12 => 'Center-weighted Metering',
5869             13 => 'Spot Metering',
5870             14 => 'Playback',
5871             15 => 'My Menu Top Item',
5872             16 => '+NEF(RAW)',
5873             17 => 'Virtual Horizon',
5874             19 => 'Grid Display', # values 19 and 20 are swapped from the D4s encodings
5875             20 => 'My Menu',
5876             21 => 'Disable Synchronized Release',
5877             22 => 'Remote Release Only',
5878             26 => 'Flash Disable/Enable',
5879             27 => 'Highlight-weighted Metering', # new value with D810
5880             },
5881             },
5882             15.1 => { # CSf5-a
5883             Name => 'PreviewButton',
5884             Mask => 0x1f,
5885             PrintConv => {
5886             0 => 'None',
5887             1 => 'Preview',
5888             2 => 'FV Lock',
5889             3 => 'AE/AF Lock',
5890             4 => 'AE Lock Only',
5891             5 => 'AE Lock (reset on release)',
5892             6 => 'AE Lock (hold)',
5893             7 => 'AF Lock Only',
5894             8 => 'AF-On',
5895             10 => 'Bracketing Burst',
5896             11 => 'Matrix Metering',
5897             12 => 'Center-weighted Metering',
5898             13 => 'Spot Metering',
5899             14 => 'Playback',
5900             15 => 'My Menu Top Item',
5901             16 => '+NEF(RAW)',
5902             17 => 'Virtual Horizon',
5903             19 => 'Grid Display', # values 19 and 20 are swapped from the D4s encodings
5904             20 => 'My Menu',
5905             21 => 'Disable Synchronized Release',
5906             22 => 'Remote Release Only',
5907             26 => 'Flash Disable/Enable',
5908             27 => 'Highlight-weighted Metering', # new value with D810
5909             },
5910             },
5911             16.1 => { # CSf8
5912             Name => 'AssignBktButton',
5913             Mask => 0x07,
5914             PrintConv => {
5915             0 => 'Auto Bracketing',
5916             1 => 'Multiple Exposure',
5917             2 => 'HDR (high dynamic range)',
5918             3 => 'None',
5919             },
5920             },
5921             17.1 => { # CSf6-a
5922             Name => 'AELockButton',
5923             Mask => 0x1f,
5924             PrintConv => {
5925             0 => 'None',
5926             1 => 'Preview',
5927             2 => 'FV Lock',
5928             3 => 'AE/AF Lock',
5929             4 => 'AE Lock Only',
5930             5 => 'AE Lock (reset on release)',
5931             6 => 'AE Lock (hold)',
5932             7 => 'AF Lock Only',
5933             8 => 'AF-On',
5934             10 => 'Bracketing Burst',
5935             11 => 'Matrix Metering',
5936             12 => 'Center-weighted Metering',
5937             13 => 'Spot Metering',
5938             14 => 'Playback',
5939             15 => 'My Menu Top Item',
5940             16 => '+NEF(RAW)',
5941             17 => 'Virtual Horizon',
5942             19 => 'Grid Display', # values 19 and 20 are swapped from the D4s encodings
5943             20 => 'My Menu',
5944             21 => 'Disable Synchronized Release',
5945             22 => 'Remote Release Only',
5946             26 => 'Flash Disable/Enable',
5947             27 => 'Highlight-weighted Metering', # new value with D810
5948             },
5949             },
5950             18.1 => { # CSf9-b
5951             Name => 'CommandDialsChangeMainSub',
5952             Mask => 0xe0,
5953             PrintConv => {
5954             0 => 'Autofocus Off, Exposure Off',
5955             1 => 'Autofocus Off, Exposure On',
5956             2 => 'Autofocus Off, Exposure On (Mode A)',
5957             4 => 'Autofocus On, Exposure Off',
5958             5 => 'Autofocus On, Exposure On',
5959             6 => 'Autofocus On, Exposure On (Mode A)',
5960             },
5961             },
5962             18.2 => { # CSf9-d
5963             Name => 'CommandDialsMenuAndPlayback',
5964             Mask => 0x18,
5965             PrintConv => {
5966             0 => 'On',
5967             1 => 'Off',
5968             2 => 'On (Image Review Excluded)',
5969             },
5970             },
5971             18.3 => { # CSf9-c
5972             Name => 'CommandDialsApertureSetting',
5973             Mask => 0x04,
5974             PrintConv => {
5975             0 => 'Sub-command Dial',
5976             1 => 'Aperture Ring',
5977             },
5978             },
5979             18.4 => { # CSc1
5980             Name => 'ShutterReleaseButtonAE-L',
5981             Mask => 0x02,
5982             PrintConv => \%offOn,
5983             },
5984             18.5 => { # CSf10
5985             Name => 'ReleaseButtonToUseDial',
5986             Mask => 0x01,
5987             PrintConv => \%noYes,
5988             },
5989             19.1 => { # CSc2
5990             Name => 'StandbyTimer',
5991             Mask => 0xf0,
5992             PrintConv => {
5993             0 => '4 s',
5994             1 => '6 s',
5995             3 => '10 s',
5996             5 => '30 s',
5997             6 => '1 min',
5998             7 => '5 min',
5999             8 => '10 min',
6000             9 => '30 min',
6001             10 => 'No Limit', #1
6002             },
6003             },
6004             20.1 => { # CSc3-a
6005             Name => 'SelfTimerTime',
6006             Mask => 0xc0,
6007             PrintConv => {
6008             0 => '2 s',
6009             1 => '5 s',
6010             2 => '10 s',
6011             3 => '20 s',
6012             },
6013             },
6014             20.2 => { # CSc3-c
6015             Name => 'SelfTimerShotInterval',
6016             Mask => 0x30,
6017             PrintConv => {
6018             0 => '0.5 s',
6019             1 => '1 s',
6020             2 => '2 s',
6021             3 => '3 s',
6022             },
6023             },
6024             20.3 => { # CSc3-b
6025             Name => 'SelfTimerShotCount',
6026             Mask => 0x0f,
6027             },
6028             21.1 => { # CSc4-d
6029             Name => 'ImageReviewMonitorOffTime', # note: decode changed from D4s
6030             Mask => 0xe0,
6031             PrintConv => {
6032             0 => '2 s',
6033             1 => '4 s',
6034             3 => '10 s',
6035             4 => '20 s',
6036             5 => '1 min',
6037             6 => '5 min',
6038             7 => '10 min',
6039             },
6040             },
6041             21.2 => { # CSc4-e # note: decode changed from D4s
6042             Name => 'LiveViewMonitorOffTime',
6043             Mask => 0x1c,
6044             PrintConv => {
6045             1 => '5 min',
6046             2 => '10 min',
6047             3 => '15 min',
6048             4 => '20 min',
6049             5 => '30 min',
6050             6 => 'No Limit',
6051             },
6052             },
6053             22.1 => { # CSc4-b # note: decode changed from D4s
6054             Name => 'MenuMonitorOffTime',
6055             Mask => 0xe0,
6056             PrintConv => {
6057             0 => '4 s',
6058             2 => '10 s',
6059             4 => '20 s',
6060             5 => '1 min',
6061             6 => '5 min',
6062             7 => '10 min',
6063             },
6064             },
6065             22.2 => { # CSc4-c # note: decode changed from D4s
6066             Name => 'ShootingInfoMonitorOffTime',
6067             Mask => 0x1c,
6068             PrintConv => {
6069             0 => '4 s',
6070             2 => '10 s',
6071             4 => '20 s',
6072             5 => '1 min',
6073             6 => '5 min',
6074             7 => '10 min',
6075             },
6076             },
6077             23.1 => { # CSe1
6078             Name => 'FlashSyncSpeed',
6079             Mask => 0xf0,
6080             PrintConv => {
6081             0 => '1/320 s (auto FP)',
6082             2 => '1/250 s (auto FP)',
6083             3 => '1/250 s',
6084             5 => '1/200 s',
6085             6 => '1/160 s',
6086             7 => '1/125 s',
6087             8 => '1/100 s',
6088             9 => '1/80 s',
6089             10 => '1/60 s',
6090             },
6091             },
6092             23.2 => { # CSe2
6093             Name => 'FlashShutterSpeed',
6094             Mask => 0x0f,
6095             PrintConvColumns => 2,
6096             PrintConv => {
6097             0 => '1/60 s',
6098             1 => '1/30 s',
6099             2 => '1/15 s',
6100             3 => '1/8 s',
6101             4 => '1/4 s',
6102             5 => '1/2 s',
6103             6 => '1 s',
6104             7 => '2 s',
6105             8 => '4 s',
6106             9 => '8 s',
6107             10 => '15 s',
6108             11 => '30 s',
6109             },
6110             },
6111             24.1 => { # CSe3
6112             Name => 'FlashControlBuilt-in',
6113             Mask => 0xc0,
6114             RawConv => '$$self{FlashControlBuiltin} = $val',
6115             PrintConv => {
6116             0 => 'TTL',
6117             1 => 'Manual',
6118             2 => 'Repeating Flash',
6119             3 => 'Commander Mode',
6120             },
6121             },
6122             31.1 => { # CSe5
6123             Name => 'ModelingFlash',
6124             Mask => 0x20,
6125             PrintConv => \%onOff,
6126             },
6127             36.1 => { # CSc4-a
6128             Name => 'PlaybackMonitorOffTime',
6129             Mask => 0xe0,
6130             PrintConv => {
6131             0 => '4 s',
6132             1 => '10 s',
6133             2 => '20 s',
6134             3 => '1 min',
6135             4 => '5 min',
6136             5 => '10 min',
6137             },
6138             },
6139             37.1 => { # CSf2-c
6140             Name => 'MultiSelectorLiveView',
6141             Mask => 0xc0,
6142             PrintConv => {
6143             0 => 'Reset',
6144             1 => 'Zoom',
6145             3 => 'Not Used',
6146             },
6147             },
6148             38.1 => { # CSf7-a
6149             Name => 'ShutterSpeedLock',
6150             Mask => 0x80,
6151             PrintConv => \%offOn,
6152             },
6153             38.2 => { # CSf7-b
6154             Name => 'ApertureLock',
6155             Mask => 0x40,
6156             PrintConv => \%offOn,
6157             },
6158             38.3 => { # CSg4
6159             Name => 'MovieShutterButton',
6160             Mask => 0x20,
6161             PrintConv => {
6162             0 => 'Take Photo',
6163             1 => 'Record Movies',
6164             },
6165             },
6166             38.4 => { # CSe4
6167             Name => 'FlashExposureCompArea',
6168             Mask => 0x04,
6169             PrintConv => {
6170             0 => 'Entire frame',
6171             1 => 'Background only',
6172             },
6173             },
6174             40.1 => { # CSg3
6175             Name => 'MovieAELockButtonAssignment',
6176             Mask => 0x0f,
6177             PrintConv => {
6178             0 => 'None',
6179             3 => 'Index Marking',
6180             4 => 'View Photo Shooting Info',
6181             5 => 'AE/AF Lock',
6182             6 => 'AE Lock Only',
6183             7 => 'AE Lock (hold)',
6184             8 => 'AF Lock Only',
6185             },
6186             },
6187             41.1 => { # CSg1
6188             Name => 'MovieFunctionButton',
6189             Mask => 0x70,
6190             PrintConv => {
6191             0 => 'None',
6192             1 => 'Power Aperture (open)', # bit '02' is also toggled on for this setting
6193             3 => 'Index Marking',
6194             4 => 'View Photo Shooting Info',
6195             },
6196             },
6197             41.2 => { # CSg2
6198             Name => 'MoviePreviewButton',
6199             Mask => 0x07,
6200             PrintConv => {
6201             0 => 'None',
6202             2 => 'Power Aperture (open)', # bit '10' is also toggled on for this setting
6203             3 => 'Index Marking',
6204             4 => 'View Photo Shooting Info',
6205             },
6206             },
6207             42.1 => { # CSf4-b
6208             Name => 'FuncButtonPlusDials',
6209             Mask => 0x0f,
6210             PrintConv => {
6211             0 => 'None',
6212             1 => 'Choose Image Area (FX/DX/5:4)',
6213             2 => 'Shutter Speed & Aperture Lock',
6214             3 => 'One Step Speed / Aperture',
6215             4 => 'Choose Non-CPU Lens Number',
6216             5 => 'Active D-Lighting',
6217             8 => 'Exposure Delay Mode',
6218             },
6219             },
6220             43.1 => { # CSf5-b
6221             Name => 'PreviewButtonPlusDials',
6222             Mask => 0x0f,
6223             PrintConv => {
6224             0 => 'None',
6225             1 => 'Choose Image Area (FX/DX/5:4)',
6226             2 => 'Shutter Speed & Aperture Lock',
6227             3 => 'One Step Speed / Aperture',
6228             4 => 'Choose Non-CPU Lens Number',
6229             5 => 'Active D-Lighting',
6230             8 => 'Exposure Delay Mode',
6231             },
6232             },
6233             44.1 => { # CSf6-b
6234             Name => 'AELockButtonPlusDials',
6235             Mask => 0x0f,
6236             PrintConv => {
6237             0 => 'None',
6238             1 => 'Choose Image Area (FX/DX/5:4)',
6239             2 => 'Shutter Speed & Aperture Lock',
6240             4 => 'Choose Non-CPU Lens Number',
6241             8 => 'Exposure Delay Mode',
6242             },
6243             },
6244             45.1 => { # CSf13
6245             Name => 'AssignMovieRecordButton',
6246             Mask => 0x0f,
6247             PrintConv => {
6248             0 => 'None',
6249             1 => 'Choose Image Area (FX/DX/5:4)',
6250             2 => 'Shutter Speed & Aperture Lock',
6251             9 => 'White Balance',
6252             10 => 'ISO Sensitivity',
6253             },
6254             },
6255             46.1 => { # CSb7-d
6256             Name => 'FineTuneOptHighlightWeighted',
6257             Mask => 0x0f,
6258             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
6259             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
6260             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
6261             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
6262             },
6263             47.1 => { # CSa5-b
6264             Name => 'DynamicAreaAFDisplay',
6265             Mask => 0x80,
6266             PrintConv => \%offOn,
6267             },
6268             47.2 => { # CSa5-a # moved with D810
6269             Name => 'AFPointIllumination',
6270             Mask => 0x40,
6271             PrintConv => {
6272             0 => 'Off',
6273             1 => 'On During Manual Focusing',
6274             },
6275             },
6276             47.3 => { # CSa9
6277             Name => 'StoreByOrientation',
6278             Mask => 0x18,
6279             PrintConv => {
6280             0 => 'Off',
6281             1 => 'Focus Point',
6282             2 => 'Focus Point and AF-area mode',
6283             },
6284             },
6285             47.4 => { # CSa5-c
6286             Name => 'GroupAreaAFIllumination',
6287             Mask => 0x04,
6288             PrintConv => {
6289             0 => 'Squares', # moved with D810
6290             1 => 'Dots',
6291             },
6292             },
6293             48.1 => { # CSb5
6294             Name => 'MatrixMetering',
6295             Mask => 0x80,
6296             PrintConv => {
6297             0 => 'Face Detection On',
6298             1 => 'Face Detection Off',
6299             },
6300             },
6301             48.2 => { # CSf14
6302             Name => 'LiveViewButtonOptions',
6303             Mask => 0x30,
6304             PrintConv => {
6305             0 => 'Enable',
6306             2 => 'Disable',
6307             },
6308             },
6309             48.3 => { # CSa12
6310             Name => 'AFModeRestrictions',
6311             Mask => 0x03,
6312             PrintConv => {
6313             0 => 'No Restrictions',
6314             1 => 'AF-C',
6315             2 => 'AF-S',
6316             },
6317             },
6318             49.1 => { # CSa11
6319             Name => 'LimitAFAreaModeSelection',
6320             Mask => 0x7e,
6321             PrintConv => {
6322             0 => 'No Restrictions',
6323             BITMASK => {
6324             0 => 'Auto-area',
6325             1 => 'Group-area',
6326             2 => '3D-tracking',
6327             3 => 'Dynamic area (51 points)',
6328             4 => 'Dynamic area (21 points)',
6329             5 => 'Dynamic area (9 points)',
6330             },
6331             },
6332             },
6333             50.1 => { # CSf15
6334             Name => 'AF-OnForMB-D12',
6335             Mask => 0x07,
6336             PrintConv => {
6337             0 => 'AE/AF Lock',
6338             1 => 'AE Lock Only',
6339             2 => 'AF Lock Only',
6340             3 => 'AE Lock (hold)',
6341             4 => 'AE Lock (reset)',
6342             5 => 'AF-On',
6343             6 => 'FV Lock',
6344             7 => 'Same As Fn Button',
6345             },
6346             },
6347             51.1 => { # CSf16
6348             Name => 'AssignRemoteFnButton',
6349             Mask => 0x1f,
6350             PrintConv => {
6351             0 => 'None',
6352             1 => 'Preview',
6353             2 => 'FV Lock',
6354             3 => 'AE/AF Lock',
6355             4 => 'AE Lock Only',
6356             5 => 'AE Lock (reset on release)',
6357             7 => 'AF Lock Only',
6358             8 => 'AF-On',
6359             16 => '+NEF(RAW)',
6360             25 => 'Live View',
6361             26 => 'Flash Disable/Enable',
6362             },
6363             },
6364             52.1 => { # CSf17
6365             Name => 'LensFocusFunctionButtons',
6366             Mask => 0x3f,
6367             PrintConv => {
6368             3 => 'AE/AF Lock',
6369             4 => 'AE Lock Only',
6370             7 => 'AF Lock Only',
6371             21 => 'Disable Synchronized Release',
6372             22 => 'Remote Release Only',
6373             24 => 'Preset focus Point',
6374             26 => 'Flash Disable/Enable',
6375             32 => 'AF-Area Mode: Single-point AF',
6376             33 => 'AF-Area Mode: Dynamic-area AF (9 points)',
6377             34 => 'AF-Area Mode: Dynamic-area AF (21 points)',
6378             35 => 'AF-Area Mode: Dynamic-area AF (51 points)',
6379             36 => 'AF-Area Mode: Group-area AF',
6380             37 => 'AF-Area Mode: Auto area AF',
6381             },
6382             },
6383             );
6384              
6385             # D850 custom settings (ref 1)
6386             %Image::ExifTool::NikonCustom::SettingsD850 = (
6387             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
6388             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
6389             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
6390             WRITABLE => 1,
6391             FIRST_ENTRY => 0,
6392             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
6393             NOTES => 'Custom settings for the D850.',
6394             0.2 => {
6395             Name => 'CustomSettingsBank',
6396             Mask => 0x03,
6397             PrintConv => {
6398             0 => 'A',
6399             1 => 'B',
6400             2 => 'C',
6401             3 => 'D',
6402             },
6403             },
6404             1.1 => { #CSa1
6405             Name => 'AF-CPrioritySelection',
6406             Mask => 0xc0,
6407             PrintConv => {
6408             0 => 'Release',
6409             1 => 'Release + Focus',
6410             2 => 'Focus',
6411             3 => 'Focus + Release',
6412             },
6413             },
6414             1.2 => { # CSa2
6415             Name => 'AF-SPrioritySelection',
6416             Mask => 0x20,
6417             PrintConv => {
6418             0 => 'Focus',
6419             1 => 'Release',
6420             },
6421             },
6422             1.3 => { # CSa6
6423             Name => 'AFPointSelection',
6424             Mask => 0x10,
6425             PrintConv => {
6426             0 => '55 Points',
6427             1 => '15 Points',
6428             },
6429             },
6430             1.4 => { # CSa4
6431             Name => 'Three-DTrackingFaceDetection',
6432             Mask => 0x08,
6433             PrintConv => \%offOn,
6434             },
6435             1.5 => { # CSa3-a
6436             Name => 'BlockShotAFResponse',
6437             Mask => 0x07,
6438             PrintConv => {
6439             1 => '1 (Quick)',
6440             2 => '2',
6441             3 => '3 (Normal)',
6442             4 => '4',
6443             5 => '5 (Delay)',
6444             },
6445             },
6446             2.1 => { # CSa11
6447             Name => 'FocusPointWrap',
6448             Mask => 0x08,
6449             PrintConv => {
6450             0 => 'No Wrap',
6451             1 => 'Wrap',
6452             },
6453             },
6454             2.2 => { # CSa12-a
6455             Name => 'AFPointBrightness',
6456             Mask => 0x06,
6457             PrintConv => {
6458             0 => 'Auto',
6459             1 => 'On',
6460             2 => 'Off',
6461             },
6462             },
6463             4.1 => { # CSd3
6464             Name => 'ISODisplay',
6465             Mask => 0x08,
6466             PrintConv => {
6467             0 => 'Show ISO Sensitivity',
6468             1 => 'Show Frame Count',
6469             },
6470             },
6471             4.2 => { # CSd9
6472             Name => 'GridDisplay',
6473             Mask => 0x02,
6474             PrintConv => \%onOff,
6475             },
6476             5.1 => { # CSd10
6477             Name => 'LCDIllumination',
6478             Mask => 0x20,
6479             PrintConv => \%offOn,
6480             },
6481             5.2 => { # CSd6
6482             Name => 'ElectronicFront-CurtainShutter',
6483             Mask => 0x08,
6484             PrintConv => \%offOn,
6485             },
6486             6.1 => { # CSf7
6487             Name => 'ReverseIndicators',
6488             Mask => 0x80,
6489             PrintConv => {
6490             0 => '+ 0 -',
6491             1 => '- 0 +',
6492             },
6493             },
6494             6.2 => { # CSf4-a
6495             Name => 'CommandDialsReverseRotation',
6496             Mask => 0x18,
6497             PrintConv => {
6498             0 => 'No',
6499             1 => 'Shutter Speed & Aperture',
6500             2 => 'Exposure Compensation',
6501             3 => 'Exposure Compensation, Shutter Speed & Aperture',
6502             },
6503             },
6504             6.3 => { # CSb4
6505             Name => 'EasyExposureCompensation',
6506             Mask => 0x03,
6507             PrintConv => {
6508             0 => 'Off',
6509             1 => 'On',
6510             2 => 'On (Auto Reset)',
6511             },
6512             },
6513             7.1 => { # CSb2
6514             Name => 'ExposureControlStepSize',
6515             Mask => 0xc0,
6516             PrintConv => {
6517             0 => '1/3 EV',
6518             1 => '1/2 EV',
6519             2 => '1 EV',
6520             },
6521             },
6522             7.2 => { # CSb1
6523             Name => 'ISOStepSize',
6524             Mask => 0x30,
6525             PrintConv => {
6526             0 => '1/3 EV',
6527             1 => '1/2 EV',
6528             2 => '1 EV',
6529             },
6530             },
6531             7.3 => { # CSb3
6532             Name => 'ExposureCompStepSize',
6533             Mask => 0x0c,
6534             PrintConv => {
6535             0 => '1/3 EV',
6536             1 => '1/2 EV',
6537             2 => '1 EV',
6538             },
6539             },
6540             8.1 => { # CSb6
6541             Name => 'CenterWeightedAreaSize',
6542             Mask => 0xe0,
6543             PrintConv => {
6544             0 => '8 mm',
6545             1 => '12 mm',
6546             2 => '15 mm',
6547             3 => '20 mm',
6548             4 => 'Average',
6549             },
6550             },
6551             8.2 => { # CSb7-a
6552             Name => 'FineTuneOptMatrixMetering',
6553             Mask => 0x0f,
6554             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
6555             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
6556             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
6557             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
6558             },
6559             9.1 => { # CSb7-b
6560             Name => 'FineTuneOptCenterWeighted',
6561             Mask => 0xf0,
6562             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
6563             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
6564             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
6565             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
6566             },
6567             9.2 => { # CSb7-c
6568             Name => 'FineTuneOptSpotMetering',
6569             Mask => 0x0f,
6570             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
6571             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
6572             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
6573             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
6574             },
6575             10.1 => { # CSf2-a
6576             Name => 'MultiSelectorShootMode',
6577             Mask => 0xe0,
6578             PrintConv => {
6579             0 => 'Select Center Focus Point (Reset)',
6580             2 => 'Preset Focus Point (Pre)',
6581             3 => 'Highlight Active Focus Point',
6582             4 => 'Not Used (None)',
6583             },
6584             },
6585             10.2 => { # CSf2-b
6586             Name => 'MultiSelectorPlaybackMode',
6587             Mask => 0x0c,
6588             PrintConv => {
6589             0 => 'Thumbnail On/Off',
6590             1 => 'View Histograms',
6591             2 => 'Zoom On/Off',
6592             3 => 'Choose Folder',
6593             },
6594             },
6595             10.3 => { # CSf5
6596             Name => 'MultiSelector',
6597             Mask => 0x01,
6598             PrintConv => {
6599             0 => 'Do Nothing',
6600             1 => 'Reset Meter-off Delay',
6601             },
6602             },
6603             11.1 => { # CSd5
6604             Name => 'ExposureDelayMode',
6605             Mask => 0xe0,
6606             PrintConv => {
6607             0 => 'Off',
6608             1 => '0.2 s', #new with the D850
6609             2 => '0.5 s', #new with the D850
6610             3 => '1 s',
6611             4 => '2 s',
6612             5 => '3 s',
6613             },
6614             },
6615             11.2 => { # CSd1
6616             Name => 'CLModeShootingSpeed',
6617             Mask => 0x0f,
6618             PrintConv => '"$val fps"',
6619             PrintConvInv => '$val=~s/\s*fps//i; $val',
6620             },
6621             12.1 => { # CSd2
6622             Name => 'MaxContinuousRelease',
6623             # values: 1-100
6624             },
6625             13.1 => { # CSe7
6626             Name => 'AutoBracketOrder',
6627             Mask => 0x10,
6628             PrintConv => {
6629             0 => '0,-,+',
6630             1 => '-,0,+',
6631             },
6632             },
6633             13.2 => { # CSe6
6634             Name => 'AutoBracketModeM',
6635             Mask => 0x0c,
6636             PrintConv => {
6637             0 => 'Flash/Speed',
6638             1 => 'Flash/Speed/Aperture',
6639             2 => 'Flash/Aperture',
6640             3 => 'Flash Only',
6641             },
6642             },
6643             14.1 => { # CSf1-c
6644             Name => 'Func1Button',
6645             Mask => 0x3f,
6646             PrintConv => {
6647             0 => 'None',
6648             1 => 'Preview',
6649             2 => 'FV Lock',
6650             3 => 'AE/AF Lock',
6651             4 => 'AE Lock Only',
6652             5 => 'AE Lock (reset on release)',
6653             6 => 'AE Lock (hold)',
6654             7 => 'AF Lock Only',
6655             8 => 'AF-On',
6656             10 => 'Bracketing Burst',
6657             11 => 'Matrix Metering',
6658             12 => 'Center-weighted Metering',
6659             13 => 'Spot Metering',
6660             14 => 'Playback',
6661             15 => 'My Menu Top Item',
6662             16 => '+NEF(RAW)',
6663             17 => 'Virtual Horizon',
6664             19 => 'Grid Display',
6665             20 => 'My Menu',
6666             22 => 'Remote Release Only',
6667             26 => 'Flash Disable/Enable',
6668             27 => 'Highlight-weighted Metering',
6669             36 => 'AF-Area Mode (Single)',
6670             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
6671             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
6672             39 => 'AF-Area Mode (Dynamic Area 153 Points)',
6673             40 => 'AF-Area Mode (Group Area AF)',
6674             41 => 'AF-Area Mode (Auto Area AF)',
6675             42 => 'AF-Area Mode + AF-On (Single)',
6676             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
6677             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
6678             45 => 'AF-Area Mode + AF-On (Dynamic Area 153 Points)',
6679             46 => 'AF-Area Mode + AF-On (Group Area AF)',
6680             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
6681             49 => 'Sync Release (Master Only)',
6682             50 => 'Sync Release (Remote Only)',
6683             56 => 'AF-Area Mode (Dynamic Area 9 Points)',
6684             57 => 'AF-Area Mode + AF-On (Dynamic Area 9 Points)',
6685             },
6686             },
6687             15.1 => { # CSf1-a
6688             Name => 'PreviewButton',
6689             Mask => 0x3f,
6690             PrintConv => {
6691             0 => 'None',
6692             1 => 'Preview',
6693             2 => 'FV Lock',
6694             3 => 'AE/AF Lock',
6695             4 => 'AE Lock Only',
6696             5 => 'AE Lock (reset on release)',
6697             6 => 'AE Lock (hold)',
6698             7 => 'AF Lock Only',
6699             8 => 'AF-On',
6700             10 => 'Bracketing Burst',
6701             11 => 'Matrix Metering',
6702             12 => 'Center-weighted Metering',
6703             13 => 'Spot Metering',
6704             14 => 'Playback',
6705             15 => 'My Menu Top Item',
6706             16 => '+NEF(RAW)',
6707             17 => 'Virtual Horizon',
6708             19 => 'Grid Display',
6709             20 => 'My Menu',
6710             22 => 'Remote Release Only',
6711             26 => 'Flash Disable/Enable',
6712             27 => 'Highlight-weighted Metering',
6713             36 => 'AF-Area Mode (Single)',
6714             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
6715             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
6716             39 => 'AF-Area Mode (Dynamic Area 153 Points)',
6717             40 => 'AF-Area Mode (Group Area AF)',
6718             41 => 'AF-Area Mode (Auto Area AF)',
6719             42 => 'AF-Area Mode + AF-On (Single)',
6720             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
6721             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
6722             45 => 'AF-Area Mode + AF-On (Dynamic Area 153 Points)',
6723             46 => 'AF-Area Mode + AF-On (Group Area AF)',
6724             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
6725             49 => 'Sync Release (Master Only)',
6726             50 => 'Sync Release (Remote Only)',
6727             56 => 'AF-Area Mode (Dynamic Area 9 Points)',
6728             57 => 'AF-Area Mode + AF-On (Dynamic Area 9 Points)',
6729             },
6730             },
6731             16.1 => { # CSf1-j
6732             Name => 'AssignBktButton',
6733             Mask => 0x07,
6734             PrintConv => {
6735             0 => 'Auto Bracketing',
6736             1 => 'Multiple Exposure',
6737             2 => 'HDR (high dynamic range)',
6738             3 => 'None',
6739             },
6740             },
6741             18.1 => { # CSf4-b
6742             Name => 'CommandDialsChangeMainSub',
6743             Mask => 0xe0,
6744             PrintConv => {
6745             0 => 'Autofocus Off, Exposure Off',
6746             1 => 'Autofocus Off, Exposure On',
6747             2 => 'Autofocus Off, Exposure On (Mode A)',
6748             4 => 'Autofocus On, Exposure Off',
6749             5 => 'Autofocus On, Exposure On',
6750             6 => 'Autofocus On, Exposure On (Mode A)',
6751             },
6752             },
6753             18.2 => { # CSf4-d
6754             Name => 'CommandDialsMenuAndPlayback',
6755             Mask => 0x18,
6756             PrintConv => {
6757             0 => 'On',
6758             1 => 'Off',
6759             2 => 'On (Image Review Excluded)',
6760             },
6761             },
6762             18.3 => { # CSf4-c
6763             Name => 'CommandDialsApertureSetting',
6764             Mask => 0x04,
6765             PrintConv => {
6766             0 => 'Sub-command Dial',
6767             1 => 'Aperture Ring',
6768             },
6769             },
6770             18.4 => { # CSf6
6771             Name => 'ReleaseButtonToUseDial',
6772             Mask => 0x01,
6773             PrintConv => \%noYes,
6774             },
6775             19.1 => { # CSc2
6776             Name => 'StandbyTimer',
6777             Mask => 0xf0,
6778             PrintConv => {
6779             0 => '4 s',
6780             1 => '6 s',
6781             3 => '10 s',
6782             5 => '30 s',
6783             6 => '1 min',
6784             7 => '5 min',
6785             8 => '10 min',
6786             9 => '30 min',
6787             10 => 'No Limit',
6788             },
6789             },
6790             20.1 => { # CSc3-a
6791             Name => 'SelfTimerTime',
6792             Mask => 0xc0,
6793             PrintConv => {
6794             0 => '2 s',
6795             1 => '5 s',
6796             2 => '10 s',
6797             3 => '20 s',
6798             },
6799             },
6800             20.2 => { # CSc3-c
6801             Name => 'SelfTimerShotInterval',
6802             Mask => 0x30,
6803             PrintConv => {
6804             0 => '0.5 s',
6805             1 => '1 s',
6806             2 => '2 s',
6807             3 => '3 s',
6808             },
6809             },
6810             20.3 => { # CSc3-b
6811             Name => 'SelfTimerShotCount',
6812             Mask => 0x0f,
6813             },
6814             21.1 => { # CSc4-d
6815             Name => 'ImageReviewMonitorOffTime',
6816             Mask => 0xe0,
6817             PrintConv => {
6818             0 => '2 s',
6819             1 => '4 s',
6820             3 => '10 s',
6821             4 => '20 s',
6822             5 => '1 min',
6823             6 => '5 min',
6824             7 => '10 min',
6825             },
6826             },
6827             21.2 => { # CSc4-e
6828             Name => 'LiveViewMonitorOffTime',
6829             Mask => 0x1c,
6830             PrintConv => {
6831             1 => '5 min',
6832             2 => '10 min',
6833             3 => '15 min',
6834             4 => '20 min',
6835             5 => '30 min',
6836             6 => 'No Limit',
6837             },
6838             },
6839             22.1 => { # CSc4-b
6840             Name => 'MenuMonitorOffTime',
6841             Mask => 0xe0,
6842             PrintConv => {
6843             0 => '4 s',
6844             2 => '10 s',
6845             4 => '20 s',
6846             5 => '1 min',
6847             6 => '5 min',
6848             7 => '10 min',
6849             },
6850             },
6851             22.2 => { # CSc4-c
6852             Name => 'ShootingInfoMonitorOffTime',
6853             Mask => 0x1c,
6854             PrintConv => {
6855             0 => '4 s',
6856             2 => '10 s',
6857             4 => '20 s',
6858             5 => '1 min',
6859             6 => '5 min',
6860             7 => '10 min',
6861             },
6862             },
6863             23.1 => { # CSe1
6864             Name => 'FlashSyncSpeed',
6865             Mask => 0xf0,
6866             PrintConv => {
6867             2 => '1/250 s (auto FP)',
6868             3 => '1/250 s',
6869             5 => '1/200 s',
6870             6 => '1/160 s',
6871             7 => '1/125 s',
6872             8 => '1/100 s',
6873             9 => '1/80 s',
6874             10 => '1/60 s',
6875             },
6876             },
6877             23.2 => { # CSe2
6878             Name => 'FlashShutterSpeed',
6879             Mask => 0x0f,
6880             PrintConvColumns => 2,
6881             PrintConv => {
6882             0 => '1/60 s',
6883             1 => '1/30 s',
6884             2 => '1/15 s',
6885             3 => '1/8 s',
6886             4 => '1/4 s',
6887             5 => '1/2 s',
6888             6 => '1 s',
6889             7 => '2 s',
6890             8 => '4 s',
6891             9 => '8 s',
6892             10 => '15 s',
6893             11 => '30 s',
6894             },
6895             },
6896             31.1 => { # CSe5
6897             Name => 'ModelingFlash',
6898             Mask => 0x20,
6899             PrintConv => \%onOff,
6900             },
6901             36.1 => { # CSc4-a
6902             Name => 'PlaybackMonitorOffTime',
6903             Mask => 0xe0,
6904             PrintConv => {
6905             0 => '4 s',
6906             1 => '10 s',
6907             2 => '20 s',
6908             3 => '1 min',
6909             4 => '5 min',
6910             5 => '10 min',
6911             },
6912             },
6913             37.1 => { # CSf2-c
6914             Name => 'MultiSelectorLiveView',
6915             Mask => 0xc0,
6916             PrintConv => {
6917             0 => 'Reset',
6918             1 => 'Zoom',
6919             3 => 'Not Used',
6920             },
6921             },
6922             38.1 => { # CSf3-a
6923             Name => 'ShutterSpeedLock',
6924             Mask => 0x80,
6925             PrintConv => \%offOn,
6926             },
6927             38.2 => { # CSf3-b
6928             Name => 'ApertureLock',
6929             Mask => 0x40,
6930             PrintConv => \%offOn,
6931             },
6932             38.3 => { # CSg1-h
6933             Name => 'MovieShutterButton',
6934             Mask => 0x10,
6935             PrintConv => {
6936             0 => 'Take Photo',
6937             1 => 'Record Movies',
6938             },
6939             },
6940             38.4 => { # CSe3
6941             Name => 'FlashExposureCompArea',
6942             Mask => 0x04,
6943             PrintConv => {
6944             0 => 'Entire Frame',
6945             1 => 'Background Only',
6946             },
6947             },
6948             38.5 => { # CSe4
6949             Name => 'AutoFlashISOSensitivity',
6950             Mask => 0x02,
6951             PrintConv => {
6952             0 => 'Subject and Background',
6953             1 => 'Subject Only',
6954             },
6955             },
6956             41.1 => { # CSg1-c
6957             Name => 'MovieFunc1Button',
6958             Mask => 0xf0,
6959             PrintConv => {
6960             0 => 'None',
6961             2 => 'Power Aperture (close)',
6962             3 => 'Index Marking',
6963             4 => 'View Photo Shooting Info',
6964             11 => 'Exposure Compensation -',
6965             },
6966             },
6967             41.2 => { # CSg1-a
6968             Name => 'MoviePreviewButton',
6969             Mask => 0x0f,
6970             PrintConv => {
6971             0 => 'None',
6972             1 => 'Power Aperture (open)',
6973             3 => 'Index Marking',
6974             4 => 'View Photo Shooting Info',
6975             10 => 'Exposure Compensation +',
6976             },
6977             },
6978             42.1 => { # CSf1-d
6979             Name => 'Func1ButtonPlusDials',
6980             Mask => 0x0f,
6981             PrintConv => {
6982             0 => 'None',
6983             1 => 'Choose Image Area',
6984             2 => 'Shutter Speed & Aperture Lock',
6985             3 => 'One Step Speed / Aperture',
6986             4 => 'Choose Non-CPU Lens Number',
6987             5 => 'Active D-Lighting',
6988             7 => 'Photo Shooting Menu Bank',
6989             8 => 'Exposure Delay Mode',
6990             },
6991             },
6992             43.1 => { # CSf1-b
6993             Name => 'PreviewButtonPlusDials',
6994             Mask => 0x0f,
6995             PrintConv => {
6996             0 => 'None',
6997             1 => 'Choose Image Area',
6998             2 => 'Shutter Speed & Aperture Lock',
6999             3 => 'One Step Speed / Aperture',
7000             4 => 'Choose Non-CPU Lens Number',
7001             5 => 'Active D-Lighting',
7002             7 => 'Photo Shooting Menu Bank',
7003             8 => 'Exposure Delay Mode',
7004             },
7005             },
7006             45.1 => { # CSf1-k
7007             Name => 'AssignMovieRecordButtonPlusDials',
7008             Mask => 0x0f,
7009             PrintConv => {
7010             0 => 'None',
7011             1 => 'Choose Image Area',
7012             2 => 'Shutter Speed & Aperture Lock',
7013             7 => 'Photo Shooting Menu Bank',
7014             11 => 'Exposure Mode',
7015             },
7016             },
7017             46.1 => { # CSb7-d
7018             Name => 'FineTuneOptHighlightWeighted',
7019             Mask => 0x0f,
7020             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
7021             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
7022             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
7023             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
7024             },
7025             47.1 => { # CSa12-c
7026             Name => 'DynamicAreaAFDisplay',
7027             Mask => 0x80,
7028             PrintConv => \%offOn,
7029             },
7030             47.2 => { # CSa12-b
7031             Name => 'AFPointIllumination',
7032             Mask => 0x40,
7033             PrintConv => {
7034             0 => 'Off',
7035             1 => 'On During Manual Focusing',
7036             },
7037             },
7038             47.3 => { # CSa7
7039             Name => 'StoreByOrientation',
7040             Mask => 0x18,
7041             PrintConv => {
7042             0 => 'Off',
7043             1 => 'Focus Point',
7044             2 => 'Focus Point and AF-area Mode',
7045             },
7046             },
7047             48.1 => { # CSb5
7048             Name => 'MatrixMetering',
7049             Mask => 0x80,
7050             PrintConv => {
7051             0 => 'Face Detection On',
7052             1 => 'Face Detection Off',
7053             },
7054             },
7055             48.2 => { # CSf8
7056             Name => 'LiveViewButtonOptions',
7057             Mask => 0x30,
7058             PrintConv => {
7059             0 => 'Enable',
7060             1 => 'Enable (Standby Timer Active)',
7061             2 => 'Disable',
7062             },
7063             },
7064             48.3 => { # CSa10
7065             Name => 'AFModeRestrictions',
7066             Mask => 0x03,
7067             PrintConv => {
7068             0 => 'No Restrictions',
7069             1 => 'AF-C',
7070             2 => 'AF-S',
7071             },
7072             },
7073             49.1 => { # CSa9
7074             Name => 'LimitAFAreaModeSelection', #note that 'Dynamic area (9 points)' can be selected from the camera menu but the setting is not written to the EXIF data.
7075             Mask => 0x7e, #...This AF Mode was added to the D5 firmware several months after the camera's initial release which may help explain the inconsistency.
7076             PrintConv => {
7077             0 => 'No Restrictions',
7078             BITMASK => {
7079             0 => 'Auto-area',
7080             1 => 'Group-area',
7081             2 => '3D-tracking',
7082             3 => 'Dynamic area (153 points)',
7083             4 => 'Dynamic area (72 points)',
7084             5 => 'Dynamic area (25 points)',
7085             },
7086             },
7087             },
7088             52.1 => { # CSf1-l
7089             Name => 'LensFocusFunctionButtons',
7090             Mask => 0x3f,
7091             PrintConv => {
7092             3 => 'AE/AF Lock',
7093             4 => 'AE Lock Only',
7094             7 => 'AF Lock Only',
7095             8 => 'AF-On',
7096             24 => 'Preset Focus Point',
7097             26 => 'Flash Disable/Enable',
7098             36 => 'AF-Area Mode (Single)',
7099             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
7100             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
7101             39 => 'AF-Area Mode (Dynamic Area 153 Points)',
7102             40 => 'AF-Area Mode (Group Area AF)',
7103             41 => 'AF-Area Mode (Auto Area AF)',
7104             42 => 'AF-Area Mode + AF-On (Single)',
7105             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
7106             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
7107             45 => 'AF-Area Mode + AF-On (Dynamic Area 153 Points)',
7108             46 => 'AF-Area Mode + AF-On (Group Area AF)',
7109             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
7110             49 => 'Sync Release (Master Only)',
7111             50 => 'Sync Release (Remote Only)',
7112             56 => 'AF-Area Mode (Dynamic Area 9 Points)',
7113             57 => 'AF-Area Mode + AF-On (Dynamic Area 9 Points)',
7114             },
7115             },
7116             66.1 => { # CSf10-d
7117             Name => 'VerticalMultiSelector',
7118             Mask => 0xff,
7119             PrintHex => 1,
7120             PrintConv => {
7121             0x00 => 'Same as Multi-Selector with Info(U/D) & Playback(R/L)',
7122             0x08 => 'Same as Multi-Selector with Info(R/L) & Playback(U/D)',
7123             0x80 => 'Focus Point Selection',
7124             },
7125             },
7126             67.1 => { # CSf10-a
7127             Name => 'AssignMB-D18FuncButton',
7128             Mask => 0x3f,
7129             PrintConv => {
7130             0 => 'None',
7131             1 => 'Preview',
7132             2 => 'FV Lock',
7133             3 => 'AE/AF Lock',
7134             4 => 'AE Lock Only',
7135             5 => 'AE Lock (reset on release)',
7136             6 => 'AE Lock (hold)',
7137             7 => 'AF Lock Only',
7138             8 => 'AF-On',
7139             10 => 'Bracketing Burst',
7140             11 => 'Matrix Metering',
7141             12 => 'Center-weighted Metering',
7142             13 => 'Spot Metering',
7143             14 => 'Playback',
7144             15 => 'My Menu Top Item',
7145             16 => '+NEF(RAW)',
7146             17 => 'Virtual Horizon',
7147             18 => 'Reset Focus Point',
7148             19 => 'Grid Display',
7149             20 => 'My Menu',
7150             22 => 'Remote Release Only',
7151             23 => 'Preset Focus Point',
7152             26 => 'Flash Disable/Enable',
7153             27 => 'Highlight-weighted Metering',
7154             36 => 'AF-Area Mode (Single)',
7155             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
7156             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
7157             39 => 'AF-Area Mode (Dynamic Area 153 Points)',
7158             40 => 'AF-Area Mode (Group Area AF)',
7159             41 => 'AF-Area Mode (Auto Area AF)',
7160             42 => 'AF-Area Mode + AF-On (Single)',
7161             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
7162             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
7163             45 => 'AF-Area Mode + AF-On (Dynamic Area 153 Points)',
7164             46 => 'AF-Area Mode + AF-On (Group Area AF)',
7165             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
7166             49 => 'Sync Release (Master Only)',
7167             50 => 'Sync Release (Remote Only)',
7168             54 => 'Highlight Active Focus Point',
7169             56 => 'AF-Area Mode (Dynamic Area 9 Points)',
7170             57 => 'AF-Area Mode + AF-On (Dynamic Area 9 Points)',
7171             },
7172             },
7173             68.1 => { # CSf10-b
7174             Name => 'AssignMB-D18FuncButtonPlusDials',
7175             Mask => 0x0f,
7176             PrintConv => {
7177             0 => 'None',
7178             1 => 'Choose Image Area',
7179             2 => 'Shutter Speed & Aperture Lock',
7180             3 => 'One Step Speed / Aperture',
7181             4 => 'Choose Non-CPU Lens Number',
7182             5 => 'Active D-Lighting',
7183             7 => 'Photo Shooting Menu Bank',
7184             8 => 'Exposure Delay Mode',
7185             10 => 'ISO Sensitivity',
7186             11 => 'Exposure Mode',
7187             12 => 'Exposure Compensation',
7188             13 => 'Metering Mode',
7189             },
7190             },
7191             70.1 => { # CSf1-f
7192             Name => 'AF-OnButton',
7193             Mask => 0x3f,
7194             PrintConv => {
7195             0 => 'None',
7196             3 => 'AE/AF Lock',
7197             4 => 'AE Lock Only',
7198             5 => 'AE Lock (reset on release)',
7199             6 => 'AE Lock (hold)',
7200             7 => 'AF Lock Only',
7201             8 => 'AF-On',
7202             36 => 'AF-Area Mode (Single)',
7203             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
7204             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
7205             39 => 'AF-Area Mode (Dynamic Area 153 Points)',
7206             40 => 'AF-Area Mode (Group Area AF)',
7207             41 => 'AF-Area Mode (Auto Area AF)',
7208             42 => 'AF-Area Mode + AF-On (Single)',
7209             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
7210             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
7211             45 => 'AF-Area Mode + AF-On (Dynamic Area 153 Points)',
7212             46 => 'AF-Area Mode + AF-On (Group Area AF)',
7213             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
7214             56 => 'AF-Area Mode (Dynamic Area 9 Points)',
7215             57 => 'AF-Area Mode + AF-On (Dynamic Area 9 Points)',
7216             },
7217             },
7218             71.1 => { # CSf1-g
7219             Name => 'SubSelector',
7220             Mask => 0x80,
7221             PrintConv => {
7222             0 => 'Focus Point Selection',
7223             1 => 'Same as MultiSelector',
7224             },
7225             },
7226             72.1 => { # CSf1-h
7227             Name => 'SubSelectorCenter',
7228             Mask => 0x3f,
7229             PrintConv => {
7230             0 => 'None',
7231             1 => 'Preview',
7232             2 => 'FV Lock',
7233             3 => 'AE/AF Lock',
7234             4 => 'AE Lock Only',
7235             5 => 'AE Lock (reset on release)',
7236             6 => 'AE Lock (hold)',
7237             7 => 'AF Lock Only',
7238             8 => 'AF-On',
7239             10 => 'Bracketing Burst',
7240             11 => 'Matrix Metering',
7241             12 => 'Center-weighted Metering',
7242             13 => 'Spot Metering',
7243             14 => 'Playback',
7244             15 => 'My Menu Top Item',
7245             16 => '+NEF(RAW)',
7246             17 => 'Virtual Horizon',
7247             18 => 'Reset Focus Point',
7248             19 => 'Grid Display',
7249             20 => 'My Menu',
7250             22 => 'Remote Release Only',
7251             23 => 'Preset Focus Point',
7252             26 => 'Flash Disable/Enable',
7253             27 => 'Highlight-weighted Metering',
7254             36 => 'AF-Area Mode (Single)',
7255             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
7256             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
7257             39 => 'AF-Area Mode (Dynamic Area 153 Points)',
7258             40 => 'AF-Area Mode (Group Area AF)',
7259             41 => 'AF-Area Mode (Auto Area AF)',
7260             42 => 'AF-Area Mode + AF-On (Single)',
7261             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
7262             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
7263             45 => 'AF-Area Mode + AF-On (Dynamic Area 153 Points)',
7264             46 => 'AF-Area Mode + AF-On (Group Area AF)',
7265             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
7266             49 => 'Sync Release (Master Only)',
7267             50 => 'Sync Release (Remote Only)',
7268             54 => 'Highlight Active Focus Point',
7269             56 => 'AF-Area Mode (Dynamic Area 9 Points)',
7270             57 => 'AF-Area Mode + AF-On (Dynamic Area 9 Points)',
7271             },
7272             },
7273             73.1 => { # CSf1-i
7274             Name => 'SubSelectorPlusDials',
7275             Mask => 0x0f,
7276             PrintConv => {
7277             0 => 'None',
7278             1 => 'Choose Image Area',
7279             2 => 'Shutter Speed & Aperture Lock',
7280             4 => 'Choose Non-CPU Lens Number',
7281             7 => 'Photo Shooting Menu Bank',
7282             },
7283             },
7284             74.1 => { # CSg1-f
7285             Name => 'AssignMovieSubselector',
7286             Mask => 0xf0,
7287             PrintConv => {
7288             0 => 'None',
7289             3 => 'Index Marking',
7290             4 => 'View Photo Shooting Info',
7291             5 => 'AE/AF Lock',
7292             6 => 'AE Lock (Only)',
7293             7 => 'AE Lock (Hold)',
7294             8 => 'AF Lock (Only)',
7295             },
7296             },
7297             75.1 => { # CSg1-d
7298             Name => 'AssignMovieFunc1ButtonPlusDials',
7299             Mask => 0x10,
7300             PrintConv => {
7301             0 => 'None',
7302             1 => 'Choose Image Area',
7303             },
7304             },
7305             75.2 => { # CSg1-b
7306             Name => 'AssignMoviePreviewButtonPlusDials',
7307             Mask => 0x01,
7308             PrintConv => {
7309             0 => 'None',
7310             1 => 'Choose Image Area',
7311             },
7312             },
7313             76.1 => { # CSg1-g
7314             Name => 'AssignMovieSubselectorPlusDials',
7315             Mask => 0x10,
7316             PrintConv => {
7317             0 => 'None',
7318             1 => 'Choose Image Area',
7319             },
7320             },
7321             77.1 => { # CSd4
7322             Name => 'SyncReleaseMode',
7323             Mask => 0x80,
7324             PrintConv => {
7325             0 => 'No Sync',
7326             1 => 'Sync',
7327             },
7328             },
7329             77.2 => { # CSd11 (new with D850)
7330             Name => 'ContinuousModeLiveView',
7331             Mask => 0x40,
7332             PrintConv => \%offOn,
7333             },
7334             78.1 => { # CSa5
7335             Name => 'Three-DTrackingWatchArea',
7336             Mask => 0x80,
7337             PrintConv => {
7338             0 => 'Wide',
7339             1 => 'Normal',
7340             },
7341             },
7342             78.2 => { # CSa3-b
7343             Name => 'SubjectMotion',
7344             Mask => 0x60,
7345             PrintConv => {
7346             0 => 'Steady',
7347             1 => 'Middle',
7348             2 => 'Erratic',
7349             },
7350             },
7351             78.3 => { # CSa8
7352             Name => 'AFActivation',
7353             Mask => 0x08,
7354             PrintConv => {
7355             0 => 'Shutter/AF-On',
7356             1 => 'AF-On Only',
7357             },
7358             },
7359             78.4 => { # CSc1
7360             Name => 'ShutterReleaseButtonAE-L',
7361             Mask => 0x03,
7362             PrintConv => {
7363             0 => 'Off',
7364             1 => 'On (Half Press)',
7365             2 => 'On (Burst Mode)'
7366             },
7367             },
7368             79.1 => { # CSf10-c
7369             Name => 'AssignMB-D18AF-OnButton',
7370             Mask => 0x7f,
7371             PrintConv => {
7372             0 => 'None',
7373             3 => 'AE/AF Lock',
7374             4 => 'AE Lock Only',
7375             5 => 'AE Lock (reset on release)',
7376             6 => 'AE Lock (hold)',
7377             7 => 'AF Lock Only',
7378             8 => 'AF-On',
7379             36 => 'AF-Area Mode (Single)',
7380             37 => 'AF-Area Mode (Dynamic Area 25 Points)',
7381             38 => 'AF-Area Mode (Dynamic Area 72 Points)',
7382             39 => 'AF-Area Mode (Dynamic Area 153 Points)',
7383             40 => 'AF-Area Mode (Group Area AF)',
7384             41 => 'AF-Area Mode (Auto Area AF)',
7385             42 => 'AF-Area Mode + AF-On (Single)',
7386             43 => 'AF-Area Mode + AF-On (Dynamic Area 25 Points)',
7387             44 => 'AF-Area Mode + AF-On (Dynamic Area 72 Points)',
7388             45 => 'AF-Area Mode + AF-On (Dynamic Area 153 Points)',
7389             46 => 'AF-Area Mode + AF-On (Group Area AF)',
7390             47 => 'AF-Area Mode + AF-On (Auto Area AF)',
7391             56 => 'AF-Area Mode (Dynamic Area 9 Points)',
7392             57 => 'AF-Area Mode + AF-On (Dynamic Area 9 Points)',
7393             100 => 'Same as Camera AF-On Button',
7394             },
7395             },
7396             80.1 => { # CSf1-e
7397             Name => 'Func2Button',
7398             Mask => 0x3f,
7399             PrintConv => {
7400             0 => 'None',
7401             15 => 'My Menu Top Item',
7402             20 => 'My Menu',
7403             55 => 'Rating',
7404             },
7405             },
7406             82.1 => { # CSg1-e
7407             Name => 'AssignMovieFunc2Button',
7408             Mask => 0x70,
7409             PrintConv => {
7410             0 => 'None',
7411             3 => 'Index Marking',
7412             4 => 'View Photo Shooting Info',
7413             },
7414             },
7415             );
7416              
7417             # D5000 custom settings (ref PH)
7418             %Image::ExifTool::NikonCustom::SettingsD5000 = (
7419             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
7420             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
7421             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
7422             WRITABLE => 1,
7423             FIRST_ENTRY => 0,
7424             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
7425             NOTES => 'Custom settings for the D5000.',
7426             # Missing/Incomplete settings:
7427             # CSd7 - LiveViewDisplayOptions [couldn't find in data - try again with live view shots]
7428             0.1 => { # CSa1
7429             Name => 'AFAreaModeSetting',
7430             Mask => 0x60,
7431             PrintConv => {
7432             0 => 'Single Area',
7433             1 => 'Dynamic Area',
7434             2 => 'Auto-area',
7435             3 => '3D-tracking (11 points)',
7436             },
7437             },
7438             0.2 => { # CSa2
7439             Name => 'AFAssist',
7440             Mask => 0x01,
7441             PrintConv => \%onOff,
7442             },
7443             2.1 => { # CSd1
7444             Name => 'Beep',
7445             Mask => 0xc0,
7446             PrintConv => {
7447             0 => 'Off',
7448             1 => 'Low',
7449             2 => 'High',
7450             },
7451             },
7452             2.2 => { # CSd2
7453             Name => 'GridDisplay',
7454             Mask => 0x02,
7455             PrintConv => \%onOff,
7456             },
7457             2.3 => { # CSd3
7458             Name => 'ISODisplay',
7459             Mask => 0x08,
7460             PrintConv => \%onOff,
7461             },
7462             2.4 => { # CSf4
7463             Name => 'NoMemoryCard',
7464             Mask => 0x20,
7465             PrintConv => {
7466             0 => 'Release Locked',
7467             1 => 'Enable Release',
7468             },
7469             },
7470             3.1 => { # CSd4
7471             Name => 'FileNumberSequence',
7472             Mask => 0x08,
7473             PrintConv => \%onOff,
7474             },
7475             4.1 => { # CSa4
7476             Name => 'RangeFinder',
7477             Mask => 0x10,
7478             PrintConv => \%offOn,
7479             },
7480             4.2 => { # CSd6
7481             Name => 'DateImprint',
7482             Mask => 0x08,
7483             PrintConv => \%offOn,
7484             },
7485             4.3 => { # CSf5
7486             Name => 'ReverseIndicators',
7487             Mask => 0x80,
7488             PrintConv => {
7489             0 => '+ 0 -',
7490             1 => '- 0 +',
7491             },
7492             },
7493             5.1 => { # CSb1
7494             Name => 'EVStepSize',
7495             Mask => 0x40,
7496             PrintConv => {
7497             0 => '1/3 EV',
7498             1 => '1/2 EV',
7499             },
7500             },
7501             9.1 => { # CSd5
7502             Name => 'ExposureDelayMode',
7503             Mask => 0x40,
7504             PrintConv => \%offOn,
7505             },
7506             11.1 => { # CSe2
7507             Name => 'AutoBracketSet',
7508             Mask => 0xc0,
7509             PrintConv => {
7510             0 => 'Exposure',
7511             # (NOTE: the following are reversed in the D5100 -- is this correct?)
7512             1 => 'Active D-Lighting', #(NC)
7513             2 => 'WB Bracketing',
7514             },
7515             },
7516             12.1 => { # CSf1
7517             Name => 'TimerFunctionButton',
7518             Mask => 0x38,
7519             PrintConv => {
7520             0 => 'Self-timer',
7521             1 => 'Release Mode',
7522             2 => 'Image Quality/Size', #(NC)
7523             3 => 'ISO', #(NC)
7524             4 => 'White Balance', #(NC)
7525             5 => 'Active D-Lighting', #(NC)
7526             6 => '+ NEF (RAW)',
7527             7 => 'Auto Bracketing',
7528             },
7529             },
7530             15.1 => { # CSf2
7531             Name => 'AELockButton',
7532             Mask => 0x38,
7533             PrintConv => {
7534             0 => 'AE/AF Lock',
7535             1 => 'AE Lock Only', #(NC)
7536             2 => 'AF Lock Only', #(NC)
7537             3 => 'AE Lock (hold)',
7538             4 => 'AF-ON',
7539             },
7540             },
7541             16.1 => { # CSc1
7542             Name => 'ShutterReleaseButtonAE-L',
7543             Mask => 0x02,
7544             PrintConv => \%offOn,
7545             },
7546             16.2 => { # CSf3
7547             Name => 'CommandDialsReverseRotation',
7548             Mask => 0x80,
7549             PrintConv => \%noYes,
7550             },
7551             17.1 => { # CSc2-c
7552             Name => 'MeteringTime',
7553             Mask => 0x70,
7554             PrintConv => {
7555             0 => '4 s',
7556             1 => '8 s',
7557             2 => '20 s',
7558             3 => '1 min',
7559             4 => '30 min',
7560             },
7561             },
7562             17.2 => { # CSc4
7563             Name => 'RemoteOnDuration',
7564             Mask => 0x03,
7565             PrintConv => {
7566             0 => '1 min',
7567             1 => '5 min',
7568             2 => '10 min',
7569             3 => '15 min',
7570             },
7571             },
7572             18.1 => { # CSc3-a
7573             Name => 'SelfTimerTime',
7574             Mask => 0xc0,
7575             PrintConv => {
7576             0 => '2 s',
7577             1 => '5 s',
7578             2 => '10 s',
7579             3 => '20 s',
7580             },
7581             },
7582             18.2 => { # CSc3-b
7583             Name => 'SelfTimerShotCount',
7584             Mask => 0x1e,
7585             },
7586             19.1 => { # CSc2-b
7587             Name => 'ImageReviewTime',
7588             Mask => 0xe0,
7589             PrintConv => {
7590             0 => '4 s',
7591             1 => '8 s',
7592             2 => '20 s',
7593             3 => '1 min',
7594             4 => '10 min',
7595             },
7596             },
7597             20.1 => { # CSc2-a
7598             Name => 'PlaybackMenusTime',
7599             Mask => 0xe0,
7600             PrintConv => {
7601             0 => '8 s',
7602             1 => '12 s',
7603             2 => '20 s',
7604             3 => '1 min',
7605             4 => '10 min',
7606             },
7607             },
7608             22.1 => { # CSe1-a
7609             Name => 'InternalFlash',
7610             Mask => 0xc0,
7611             PrintConv => {
7612             0 => 'TTL',
7613             1 => 'Manual',
7614             },
7615             },
7616             22.2 => { # CSe1-b
7617             Name => 'ManualFlashOutput',
7618             Mask => 0x1f,
7619             ValueConv => '2 ** (-$val/3)',
7620             ValueConvInv => '$val > 0 ? -3*log($val)/log(2) : 0',
7621             PrintConv => q{
7622             return 'Full' if $val > 0.99;
7623             Image::ExifTool::Exif::PrintExposureTime($val);
7624             },
7625             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
7626             },
7627             32.1 => { # CSa3
7628             Name => 'LiveViewAF',
7629             Mask => 0x60,
7630             PrintConv => {
7631             0 => 'Face Priority',
7632             1 => 'Wide Area',
7633             2 => 'Normal Area',
7634             3 => 'Subject Tracking',
7635             },
7636             },
7637             );
7638              
7639             # D5100 custom settings (ref PH)
7640             %Image::ExifTool::NikonCustom::SettingsD5100 = (
7641             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
7642             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
7643             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
7644             WRITABLE => 1,
7645             FIRST_ENTRY => 0,
7646             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
7647             NOTES => 'Custom settings for the D5100.',
7648             0.1 => { # CSa1
7649             Name => 'AF-CPrioritySelection',
7650             Mask => 0x80,
7651             PrintConv => {
7652             0 => 'Release',
7653             1 => 'Focus',
7654             },
7655             },
7656             1.1 => { # CSa2
7657             Name => 'AFAssist',
7658             Mask => 0x01,
7659             PrintConv => \%onOff,
7660             },
7661             3.1 => { # CSd1
7662             Name => 'Beep',
7663             Mask => 0xc0,
7664             PrintConv => {
7665             0 => 'Off',
7666             1 => 'Low',
7667             2 => 'High',
7668             },
7669             },
7670             3.2 => { # CSf4
7671             Name => 'NoMemoryCard',
7672             Mask => 0x20,
7673             PrintConv => {
7674             0 => 'Release Locked',
7675             1 => 'Enable Release',
7676             },
7677             },
7678             3.3 => { # CSd2
7679             Name => 'ISODisplay',
7680             Mask => 0x08,
7681             PrintConv => \%onOff,
7682             },
7683             4.1 => { # CSd3
7684             Name => 'FileNumberSequence',
7685             Mask => 0x08,
7686             PrintConv => \%onOff,
7687             },
7688             5.1 => { # CSa3
7689             Name => 'RangeFinder',
7690             Mask => 0x10,
7691             PrintConv => \%offOn,
7692             },
7693             # (it looks like CSd5 DateImprint is not stored)
7694             5.2 => { # CSf5
7695             Name => 'ReverseIndicators',
7696             Mask => 0x80,
7697             PrintConv => {
7698             0 => '+ 0 -',
7699             1 => '- 0 +',
7700             },
7701             },
7702             6.1 => { # CSb1
7703             Name => 'EVStepSize',
7704             Mask => 0x40,
7705             PrintConv => {
7706             0 => '1/3 EV',
7707             1 => '1/2 EV',
7708             },
7709             },
7710             10.1 => { # CSd4
7711             Name => 'ExposureDelayMode',
7712             Mask => 0x40,
7713             PrintConv => \%offOn,
7714             },
7715             12.1 => { # CSe2
7716             Name => 'AutoBracketSet',
7717             Mask => 0xc0,
7718             PrintConv => {
7719             0 => 'Exposure',
7720             # (NOTE: the following are reversed from the D5000 -- is D5000 correct?)
7721             1 => 'WB Bracketing',
7722             2 => 'Active D-Lighting',
7723             },
7724             },
7725             13.1 => { # CSf1
7726             Name => 'TimerFunctionButton',
7727             Mask => 0x38,
7728             PrintConv => {
7729             0 => 'Self-timer',
7730             1 => 'Release Mode',
7731             2 => 'Image Quality/Size',
7732             3 => 'ISO',
7733             4 => 'White Balance',
7734             5 => 'Active D-Lighting',
7735             6 => '+ NEF (RAW)',
7736             7 => 'Auto Bracketing',
7737             },
7738             },
7739             16.1 => { # CSf2
7740             Name => 'AELockButton',
7741             Mask => 0x38,
7742             PrintConv => {
7743             0 => 'AE/AF Lock',
7744             1 => 'AE Lock Only',
7745             2 => 'AF Lock Only',
7746             3 => 'AE Lock (hold)',
7747             4 => 'AF-ON',
7748             },
7749             },
7750             17.1 => { # CSc1
7751             Name => 'ShutterReleaseButtonAE-L',
7752             Mask => 0x02,
7753             PrintConv => \%offOn,
7754             },
7755             17.2 => { # CSf3
7756             Name => 'CommandDialsReverseRotation',
7757             Mask => 0x80,
7758             PrintConv => \%noYes,
7759             },
7760             18.1 => { # CSc2-d
7761             Name => 'MeteringTime',
7762             Mask => 0x70,
7763             PrintConv => {
7764             0 => '4 s',
7765             1 => '8 s',
7766             2 => '20 s', #(NC)
7767             3 => '1 min',
7768             4 => '30 min', #(NC)
7769             },
7770             },
7771             18.2 => { # CSc4
7772             Name => 'RemoteOnDuration',
7773             Mask => 0x03,
7774             PrintConv => {
7775             0 => '1 min',
7776             1 => '5 min',
7777             2 => '10 min', #(NC)
7778             3 => '20 min', # (but picture in manual shows 15 min)
7779             },
7780             },
7781             19.1 => { # CSc3-a
7782             Name => 'SelfTimerTime',
7783             Mask => 0xc0,
7784             PrintConv => {
7785             0 => '2 s',
7786             1 => '5 s',
7787             2 => '10 s',
7788             3 => '20 s',
7789             },
7790             },
7791             19.2 => { # CSc3-b
7792             Name => 'SelfTimerShotCount',
7793             Mask => 0x0f,
7794             },
7795             20.1 => { # CSc2-b
7796             Name => 'ImageReviewTime',
7797             Mask => 0xe0,
7798             PrintConv => {
7799             0 => '4 s',
7800             1 => '8 s', #(NC)
7801             2 => '20 s',
7802             3 => '1 min', #(NC)
7803             4 => '10 min', #(NC)
7804             },
7805             },
7806             20.2 => { # CSc2-c
7807             Name => 'LiveViewMonitorOffTime',
7808             Mask => 0x1c,
7809             PrintConv => {
7810             0 => '3 min',
7811             1 => '5 min', #(NC)
7812             2 => '10 min',
7813             3 => '15 min', #(NC)
7814             4 => '20 min', #(NC)
7815             5 => '30 min', #(NC)
7816             },
7817             },
7818             21.1 => { # CSc2-a
7819             Name => 'PlaybackMenusTime',
7820             Mask => 0xe0,
7821             PrintConv => {
7822             0 => '8 s', #(NC)
7823             1 => '12 s',
7824             2 => '20 s',
7825             3 => '1 min',
7826             4 => '10 min', #(NC)
7827             },
7828             },
7829             23.1 => { # CSe1-a
7830             Name => 'InternalFlash',
7831             Mask => 0xc0,
7832             PrintConv => {
7833             0 => 'TTL',
7834             1 => 'Manual',
7835             },
7836             },
7837             23.1 => { # CSe1-b
7838             Name => 'ManualFlashOutput',
7839             Mask => 0x1f,
7840             ValueConv => '2 ** (-$val/3)',
7841             ValueConvInv => '$val > 0 ? -3*log($val)/log(2) : 0',
7842             PrintConv => q{
7843             return 'Full' if $val > 0.99;
7844             Image::ExifTool::Exif::PrintExposureTime($val);
7845             },
7846             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
7847             },
7848             );
7849              
7850             # D5200 custom settings (ref PH)
7851             %Image::ExifTool::NikonCustom::SettingsD5200 = (
7852             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
7853             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
7854             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
7855             WRITABLE => 1,
7856             FIRST_ENTRY => 0,
7857             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
7858             NOTES => 'Custom settings for the D5200.',
7859             0.1 => { # CSa1
7860             Name => 'AF-CPrioritySelection',
7861             Mask => 0x80,
7862             PrintConv => {
7863             0 => 'Release',
7864             1 => 'Focus',
7865             },
7866             },
7867             0.2 => { # CSa2
7868             Name => 'NumberOfFocusPoints',
7869             Mask => 0x10,
7870             PrintConv => {
7871             0 => '39 Points',
7872             1 => '11 Points',
7873             },
7874             },
7875             1.1 => { # CSa3
7876             Name => 'AFAssist',
7877             Mask => 0x01,
7878             PrintConv => \%onOff,
7879             },
7880             3.1 => { # CSd1
7881             Name => 'Beep',
7882             Mask => 0xc0,
7883             PrintConv => {
7884             0 => 'Off',
7885             1 => 'Low',
7886             2 => 'High',
7887             },
7888             },
7889             3.2 => { # CSf4
7890             Name => 'NoMemoryCard',
7891             Mask => 0x20,
7892             PrintConv => {
7893             0 => 'Release Locked',
7894             1 => 'Enable Release',
7895             },
7896             },
7897             3.3 => { # CSd3
7898             Name => 'ISODisplay',
7899             Mask => 0x08,
7900             PrintConv => \%onOff,
7901             },
7902             4.1 => { # CSd3
7903             Name => 'FileNumberSequence',
7904             Mask => 0x08,
7905             PrintConv => \%onOff,
7906             },
7907             5.1 => { # CSa4
7908             Name => 'RangeFinder',
7909             Mask => 0x04,
7910             PrintConv => \%offOn,
7911             },
7912             5.2 => { # CSf3-a
7913             Name => 'ReverseExposureCompDial',
7914             Mask => 0x10,
7915             PrintConv => \%noYes,
7916             },
7917             5.3 => { # CSf3-b
7918             Name => 'ReverseShutterSpeedAperture',
7919             Mask => 0x08,
7920             PrintConv => \%noYes,
7921             },
7922             5.4 => { # CSf5
7923             Name => 'ReverseIndicators',
7924             Mask => 0x80,
7925             PrintConv => {
7926             0 => '+ 0 -',
7927             1 => '- 0 +',
7928             },
7929             },
7930             6.1 => { # CSb1
7931             Name => 'EVStepSize',
7932             Mask => 0x40, # (bit 0x04 also changes)
7933             PrintConv => {
7934             0 => '1/3 EV',
7935             1 => '1/2 EV',
7936             },
7937             },
7938             10.1 => { # CSd5
7939             Name => 'ExposureDelayMode',
7940             Mask => 0x40,
7941             PrintConv => { 0 => 'Off', 1 => 'On' },
7942             },
7943             12.1 => { # CSe2
7944             Name => 'AutoBracketSet',
7945             Mask => 0xc0,
7946             PrintConv => {
7947             0 => 'Exposure',
7948             # (NOTE: the following are reversed from the D5000 -- is D5000 correct?)
7949             1 => 'WB Bracketing',
7950             2 => 'Active D-Lighting',
7951             },
7952             },
7953             13.1 => { # CSf1
7954             Name => 'FunctionButton',
7955             Mask => 0x1f,
7956             PrintConv => {
7957             3 => 'AE/AF Lock',
7958             4 => 'AE Lock Only',
7959             6 => 'AE Lock (hold)',
7960             7 => 'AF Lock Only',
7961             8 => 'AF-ON',
7962             16 => '+ NEF (RAW)',
7963             18 => 'Active D-Lighting',
7964             25 => 'Live View',
7965             26 => 'Image Quality',
7966             27 => 'ISO',
7967             28 => 'White Balance',
7968             29 => 'HDR',
7969             30 => 'Auto Bracketing',
7970             31 => 'AF-area Mode',
7971             },
7972             },
7973             16.1 => { # CSf2
7974             Name => 'AELockButton',
7975             Mask => 0x0f,
7976             PrintConv => {
7977             3 => 'AE/AF Lock',
7978             4 => 'AE Lock Only',
7979             6 => 'AE Lock (hold)',
7980             7 => 'AF Lock Only',
7981             8 => 'AF-ON',
7982             },
7983             },
7984             17.1 => { # CSc1
7985             Name => 'ShutterReleaseButtonAE-L',
7986             Mask => 0x02,
7987             PrintConv => \%offOn,
7988             },
7989             18.1 => { # CSc2-d
7990             Name => 'StandbyTimer',
7991             Mask => 0xe0,
7992             PrintConv => {
7993             0 => '4 s',
7994             1 => '8 s',
7995             2 => '20 s',
7996             3 => '1 min',
7997             4 => '30 min',
7998             },
7999             },
8000             18.2 => { # CSc4
8001             Name => 'RemoteOnDuration',
8002             Mask => 0x03,
8003             PrintConv => {
8004             0 => '1 min',
8005             1 => '5 min',
8006             2 => '10 min',
8007             3 => '15 min',
8008             },
8009             },
8010             19.1 => { # CSc3-a
8011             Name => 'SelfTimerTime',
8012             Mask => 0xc0,
8013             PrintConv => {
8014             0 => '2 s',
8015             1 => '5 s',
8016             2 => '10 s',
8017             3 => '20 s',
8018             },
8019             },
8020             19.2 => { # CSc3-b
8021             Name => 'SelfTimerShotCount',
8022             Mask => 0x0f,
8023             },
8024             20.1 => { # CSc2-b
8025             Name => 'ImageReviewTime',
8026             Mask => 0xe0,
8027             PrintConv => {
8028             1 => '4 s',
8029             2 => '8 s',
8030             4 => '20 s',
8031             5 => '1 min',
8032             7 => '10 min',
8033             },
8034             },
8035             20.2 => { # CSc2-c
8036             Name => 'LiveViewMonitorOffTime',
8037             Mask => 0x1c,
8038             PrintConv => {
8039             1 => '5 min',
8040             2 => '10 min',
8041             3 => '15 min',
8042             4 => '20 min',
8043             5 => '30 min',
8044             },
8045             },
8046             21.1 => { # CSc2-a
8047             Name => 'PlaybackMenusTime',
8048             Mask => 0xe0,
8049             PrintConv => {
8050             1 => '8 s',
8051             4 => '20 s',
8052             5 => '1 min',
8053             6 => '5 min',
8054             7 => '10 min',
8055             },
8056             },
8057             23.1 => { # CSe1-a
8058             Name => 'InternalFlash',
8059             Mask => 0xc0,
8060             PrintConv => {
8061             0 => 'TTL',
8062             1 => 'Manual',
8063             },
8064             },
8065             23.2 => { # CSe1-b
8066             Name => 'ManualFlashOutput',
8067             Mask => 0x1f,
8068             ValueConv => '2 ** (-$val/3)',
8069             ValueConvInv => '$val > 0 ? -3*log($val)/log(2) : 0',
8070             PrintConv => q{
8071             return 'Full' if $val > 0.99;
8072             Image::ExifTool::Exif::PrintExposureTime($val);
8073             },
8074             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
8075             },
8076             );
8077              
8078             # D7000 custom settings (ref 2)
8079             %Image::ExifTool::NikonCustom::SettingsD7000 = (
8080             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
8081             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
8082             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
8083             WRITABLE => 1,
8084             FIRST_ENTRY => 0,
8085             DATAMEMBER => [ 23.1 ],
8086             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
8087             NOTES => 'Custom settings for the D7000.',
8088             0.1 => { # CSa1
8089             Name => 'AF-CPrioritySelection',
8090             Mask => 0x80,
8091             PrintConv => {
8092             0 => 'Release',
8093             1 => 'Focus',
8094             },
8095             },
8096             0.2 => { # CSa2
8097             Name => 'AF-SPrioritySelection',
8098             Mask => 0x20,
8099             PrintConv => {
8100             0 => 'Focus',
8101             1 => 'Release',
8102             },
8103             },
8104             0.3 => { # CSa6
8105             Name => 'NumberOfFocusPoints',
8106             Mask => 0x10,
8107             PrintConv => {
8108             0 => '39 Points',
8109             1 => '11 Points',
8110             },
8111             },
8112             0.4 => { # CSa3
8113             Name => 'FocusTrackingLockOn',
8114             Mask => 0x07,
8115             PrintConv => {
8116             0 => 'Off',
8117             1 => '1 Short',
8118             2 => '2',
8119             3 => '3 Normal',
8120             4 => '4',
8121             5 => '5 Long',
8122             },
8123             },
8124             1.1 => { # CSa5
8125             Name => 'FocusPointWrap',
8126             Mask => 0x08,
8127             PrintConv => {
8128             0 => 'No Wrap',
8129             1 => 'Wrap',
8130             },
8131             },
8132             1.2 => { # CSa4
8133             Name => 'AFPointIllumination',
8134             Mask => 0x06,
8135             PrintConv => {
8136             0 => 'Auto',
8137             1 => 'On',
8138             2 => 'Off',
8139             },
8140             },
8141             1.3 => { # CSa7
8142             Name => 'AFAssist',
8143             Mask => 0x01,
8144             PrintConv => \%onOff,
8145             },
8146             2.1 => { # CSd14
8147             Name => 'BatteryOrder',
8148             Mask => 0x40,
8149             PrintConv => {
8150             0 => 'MB-D11 First',
8151             1 => 'Camera Battery First',
8152             },
8153             },
8154             2.2 => { # CSa10
8155             Name => 'AF-OnForMB-D11',
8156             Mask => 0x1c,
8157             PrintConv => {
8158             0 => 'AE/AF Lock',
8159             1 => 'AE Lock Only',
8160             2 => 'AF Lock Only',
8161             3 => 'AE Lock (hold)',
8162             4 => 'AF-ON',
8163             5 => 'FV Lock',
8164             6 => 'Same as FUNC Button',
8165             },
8166             },
8167             2.3 => { # CSd13
8168             Name => 'MB-D11BatteryType',
8169             Mask => 0x03,
8170             PrintConv => {
8171             0 => 'LR6 (AA alkaline)',
8172             1 => 'Ni-MH (AA Ni-MH)',
8173             2 => 'FR6 (AA lithium)',
8174             },
8175             },
8176             3.1 => { # CSd1-b
8177             Name => 'BeepPitch',
8178             Mask => 0xc0,
8179             PrintConv => {
8180             0 => 'Off',
8181             1 => 'Low',
8182             2 => 'High',
8183             },
8184             },
8185             3.2 => { # CSf8
8186             Name => 'NoMemoryCard',
8187             Mask => 0x20,
8188             PrintConv => {
8189             0 => 'Release Locked',
8190             1 => 'Enable Release',
8191             },
8192             },
8193             3.3 => { # CSd3
8194             Name => 'ISODisplay',
8195             Mask => 0x0c,
8196             PrintConv => {
8197             0 => 'Show ISO/Easy ISO',
8198             1 => 'Show ISO Sensitivity',
8199             3 => 'Show Frame Count',
8200             },
8201             },
8202             3.4 => { # CSd2
8203             Name => 'GridDisplay',
8204             Mask => 0x02,
8205             PrintConv => \%onOff,
8206             },
8207             3.5 => { # CSd4
8208             Name => 'ViewfinderWarning',
8209             Mask => 0x01,
8210             PrintConv => \%onOff,
8211             },
8212             4.1 => { # CSd9
8213             Name => 'ShootingInfoDisplay',
8214             Mask => 0xc0,
8215             PrintConv => {
8216             0 => 'Auto',
8217             2 => 'Manual (dark on light)',
8218             3 => 'Manual (light on dark)',
8219             },
8220             },
8221             4.2 => { # CSd10
8222             Name => 'LCDIllumination',
8223             Mask => 0x20,
8224             PrintConv => \%offOn,
8225             },
8226             4.3 => { # CSd8
8227             Name => 'FileNumberSequence',
8228             Mask => 0x08,
8229             PrintConv => \%onOff,
8230             },
8231             4.4 => { # CSd5
8232             Name => 'ScreenTips',
8233             Mask => 0x04,
8234             PrintConv => \%offOn,
8235             },
8236             4.5 => { # CSd1-a
8237             Name => 'BeepVolume',
8238             Mask => 0x03,
8239             PrintConv => {
8240             0 => 'Off',
8241             1 => '1',
8242             2 => '2',
8243             3 => '3',
8244             },
8245             },
8246             5.1 => { # CSf9
8247             Name => 'ReverseIndicators',
8248             Mask => 0x80,
8249             PrintConv => {
8250             0 => '+ 0 -',
8251             1 => '- 0 +',
8252             },
8253             },
8254             5.2 => { # CSb3
8255             Name => 'EasyExposureCompensation',
8256             Mask => 0x03,
8257             PrintConv => {
8258             0 => 'Off',
8259             1 => 'On',
8260             2 => 'On Auto Reset',
8261             },
8262             },
8263             6.1 => { # CSb2
8264             Name => 'ExposureControlStep',
8265             Mask => 0x40,
8266             PrintConv => {
8267             0 => '1/3 EV',
8268             1 => '1/2 EV',
8269             },
8270             },
8271             6.2 => { # CSb1
8272             Name => 'ISOSensitivityStep',
8273             Mask => 0x10,
8274             PrintConv => {
8275             0 => '1/3 EV',
8276             1 => '1/2 EV',
8277             },
8278             },
8279             7.1 => { # CSb4
8280             Name => 'CenterWeightedAreaSize',
8281             Mask => 0xe0,
8282             PrintConv => {
8283             0 => '6 mm',
8284             1 => '8 mm',
8285             2 => '10 mm',
8286             3 => '13 mm',
8287             4 => 'Average',
8288             },
8289             },
8290             10.1 => { # CSd11
8291             Name => 'ExposureDelayMode',
8292             Mask => 0x40,
8293             PrintConv => \%offOn,
8294             },
8295             10.2 => { # CSd6
8296             Name => 'CLModeShootingSpeed',
8297             Mask => 0x07,
8298             PrintConv => '"$val fps"',
8299             PrintConvInv => '$val=~s/\s*fps//i; $val',
8300             },
8301             11 => { # CSd7
8302             Name => 'MaxContinuousRelease',
8303             # values: 1-100
8304             },
8305             12.1 => { # CSe5
8306             Name => 'AutoBracketSet',
8307             Mask => 0xe0, #(NC)
8308             PrintConv => {
8309             0 => 'AE & Flash', # default
8310             1 => 'AE Only',
8311             2 => 'Flash Only', #(NC)
8312             3 => 'WB Bracketing', #(NC)
8313             4 => 'Active D-Lighting', #(NC)
8314             },
8315             },
8316             12.2 => { # CSe6
8317             Name => 'AutoBracketOrder',
8318             Mask => 0x10,
8319             PrintConv => {
8320             0 => '0,-,+',
8321             1 => '-,0,+',
8322             },
8323             },
8324             13.1 => { # CSf3
8325             Name => 'FuncButton',
8326             Mask => 0xf8,
8327             PrintConv => {
8328             0 => 'Grid Display',
8329             1 => 'FV Lock',
8330             2 => 'Flash Off',
8331             3 => 'Matrix Metering',
8332             4 => 'Center-weighted Metering',
8333             5 => 'Spot Metering',
8334             6 => 'My Menu Top',
8335             7 => '+ NEF (RAW)',
8336             8 => 'Active D-Lighting',
8337             9 => 'Preview',
8338             10 => 'AE/AF Lock',
8339             11 => 'AE Lock Only',
8340             12 => 'AF Lock Only',
8341             13 => 'AE Lock (hold)',
8342             14 => 'Bracketing Burst',
8343             15 => 'Playback',
8344             16 => '1EV Step Speed/Aperture',
8345             17 => 'Choose Non-CPU Lens',
8346             18 => 'Virtual Horizon',
8347             19 => 'Start Movie Recording',
8348             },
8349             },
8350             14.1 => { # CSf4
8351             Name => 'PreviewButton',
8352             Mask => 0xf8,
8353             PrintConv => {
8354             0 => 'Grid Display',
8355             1 => 'FV Lock',
8356             2 => 'Flash Off',
8357             3 => 'Matrix Metering',
8358             4 => 'Center-weighted Metering',
8359             5 => 'Spot Metering',
8360             6 => 'My Menu Top',
8361             7 => '+ NEF (RAW)',
8362             8 => 'Active D-Lighting',
8363             9 => 'Preview',
8364             10 => 'AE/AF Lock',
8365             11 => 'AE Lock Only',
8366             12 => 'AF Lock Only',
8367             13 => 'AE Lock (hold)',
8368             14 => 'Bracketing Burst',
8369             15 => 'Playback',
8370             16 => '1EV Step Speed/Aperture',
8371             17 => 'Choose Non-CPU Lens',
8372             18 => 'Virtual Horizon',
8373             19 => 'Start Movie Recording',
8374             },
8375             },
8376             16.1 => { # CSf5
8377             Name => 'AELockButton',
8378             Mask => 0x38,
8379             PrintConv => {
8380             0 => 'AE/AF Lock',
8381             1 => 'AE Lock Only',
8382             2 => 'AF Lock Only',
8383             3 => 'AE Lock (hold)',
8384             4 => 'AF-ON',
8385             5 => 'FV Lock',
8386             },
8387             },
8388             15.1 => { # CSf2
8389             Name => 'OKButton',
8390             Mask => 0x18,
8391             PrintConv => {
8392             1 => 'Select Center Focus Point',
8393             2 => 'Highlight Active Focus Point',
8394             3 => 'Not Used', #(NC)
8395             0 => 'Off', #(NC)
8396             },
8397             },
8398             17.1 => { # CSf6-a
8399             Name => 'CommandDialsReverseRotation',
8400             Mask => 0x80,
8401             PrintConv => \%noYes,
8402             },
8403             17.2 => { # CSf6-b
8404             Name => 'CommandDialsChangeMainSub',
8405             Mask => 0x60,
8406             PrintConv => {
8407             0 => 'Off',
8408             1 => 'On',
8409             2 => 'On (A mode only)',
8410             },
8411             },
8412             17.3 => { # CSf6-c
8413             Name => 'CommandDialsApertureSetting',
8414             Mask => 0x04,
8415             PrintConv => {
8416             0 => 'Sub-command Dial',
8417             1 => 'Aperture Ring',
8418             },
8419             },
8420             17.4 => { # CSf6-d
8421             Name => 'CommandDialsMenuAndPlayback',
8422             Mask => 0x18,
8423             PrintConv => {
8424             0 => 'On',
8425             2 => 'On (Image Review Exclude)',
8426             1 => 'Off',
8427             },
8428             },
8429             17.5 => { # CSc1
8430             Name => 'ShutterReleaseButtonAE-L',
8431             Mask => 0x02,
8432             PrintConv => \%offOn,
8433             },
8434             17.6 => { # CSf7
8435             Name => 'ReleaseButtonToUseDial',
8436             Mask => 0x01,
8437             PrintConv => \%noYes,
8438             },
8439             18.1 => { # CSc2
8440             Name => 'MeteringTime',
8441             Mask => 0xf0,
8442             PrintConvColumns => 2,
8443             PrintConv => {
8444             0 => '4 s',
8445             1 => '6 s', # default
8446             2 => '8 s',
8447             3 => '16 s',
8448             4 => '30 s',
8449             5 => '1 min',
8450             6 => '5 min',
8451             7 => '10 min',
8452             8 => '30 min',
8453             9 => 'No Limit',
8454             },
8455             },
8456             18.2 => { # CSc5
8457             Name => 'RemoteOnDuration',
8458             Mask => 0x03,
8459             PrintConv => {
8460             0 => '1 min',
8461             1 => '5 min',
8462             2 => '10 min',
8463             3 => '15 min',
8464             },
8465             },
8466             19.1 => { # CSc3-a
8467             Name => 'SelfTimerTime',
8468             Mask => 0xc0,
8469             PrintConv => {
8470             0 => '2 s',
8471             1 => '5 s',
8472             2 => '10 s', # default
8473             3 => '20 s',
8474             },
8475             },
8476             19.2 => { # CSc3-c
8477             Name => 'SelfTimerInterval',
8478             Mask => 0x30,
8479             PrintConv => {
8480             0 => '0.5 s',
8481             1 => '1 s',
8482             2 => '2 s', # default
8483             3 => '3 s',
8484             },
8485             },
8486             19.3 => { # CSc3-b
8487             Name => 'SelfTimerShotCount',
8488             Mask => 0x0f,
8489             },
8490             20.1 => { # CSc4-d
8491             Name => 'ImageReviewTime',
8492             Mask => 0xe0,
8493             PrintConv => { #(NC)
8494             0 => '4 s',
8495             1 => '10 s', # default
8496             2 => '20 s',
8497             3 => '1 min',
8498             4 => '5 min',
8499             5 => '10 min',
8500             },
8501             },
8502             20.2 => { # CSc4-e
8503             Name => 'LiveViewMonitorOffTime',
8504             Mask => 0x1c,
8505             PrintConv => { #(NC)
8506             0 => '4 s',
8507             1 => '10 s', # default
8508             2 => '20 s',
8509             3 => '1 min',
8510             4 => '5 min',
8511             5 => '10 min',
8512             },
8513             },
8514             21.1 => { # CSc4-b
8515             Name => 'MenuMonitorOffTime',
8516             Mask => 0xe0,
8517             PrintConv => {
8518             0 => '4 s',
8519             1 => '10 s', # default
8520             2 => '20 s',
8521             3 => '1 min',
8522             4 => '5 min',
8523             5 => '10 min',
8524             },
8525             },
8526             21.2 => { # CSc4-c
8527             Name => 'ShootingInfoMonitorOffTime',
8528             Mask => 0x1c,
8529             PrintConv => { #(NC)
8530             0 => '4 s',
8531             1 => '10 s', # default
8532             2 => '20 s',
8533             3 => '1 min',
8534             4 => '5 min',
8535             5 => '10 min',
8536             },
8537             },
8538             22.1 => { # CSe1
8539             Name => 'FlashSyncSpeed',
8540             Mask => 0xf0,
8541             PrintConv => {
8542             0 => '1/320 s (auto FP)',
8543             1 => '1/250 s (auto FP)',
8544             2 => '1/250 s',
8545             3 => '1/200 s',
8546             4 => '1/160 s',
8547             5 => '1/125 s',
8548             6 => '1/100 s',
8549             7 => '1/80 s',
8550             8 => '1/60 s',
8551             },
8552             },
8553             22.2 => { # CSe2
8554             Name => 'FlashShutterSpeed',
8555             Mask => 0x0f,
8556             PrintConvColumns => 2,
8557             PrintConv => {
8558             0 => '1/60 s',
8559             1 => '1/30 s',
8560             2 => '1/15 s',
8561             3 => '1/8 s',
8562             4 => '1/4 s',
8563             5 => '1/2 s',
8564             6 => '1 s',
8565             7 => '2 s',
8566             8 => '4 s',
8567             9 => '8 s',
8568             10 => '15 s',
8569             11 => '30 s',
8570             },
8571             },
8572             23.1 => { # CSe3
8573             Name => 'FlashControlBuilt-in',
8574             Mask => 0xc0,
8575             RawConv => '$$self{FlashControlBuiltin} = $val',
8576             PrintConv => {
8577             0 => 'TTL',
8578             1 => 'Manual',
8579             2 => 'Repeating Flash',
8580             3 => 'Commander Mode',
8581             },
8582             },
8583             23.2 => { # CSe3-b
8584             Name => 'ManualFlashOutput',
8585             Condition => '$$self{FlashControlBuiltin} == 1',
8586             Mask => 0x1f,
8587             ValueConv => '2 ** (-$val/3)',
8588             ValueConvInv => '$val > 0 ? -3*log($val)/log(2) : 0',
8589             PrintConv => q{
8590             return 'Full' if $val > 0.99;
8591             Image::ExifTool::Exif::PrintExposureTime($val);
8592             },
8593             PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
8594             },
8595             24.1 => { # CSe3-ca
8596             Name => 'RepeatingFlashOutput',
8597             Condition => '$$self{FlashControlBuiltin} == 2',
8598             Mask => 0x70,
8599             ValueConv => '2 ** (-$val-2)',
8600             ValueConvInv => '$val > 0 ? int(-log($val)/log(2)-2+0.5) : 0',
8601             PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
8602             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
8603             },
8604             24.2 => { # CSe3-cb
8605             Name => 'RepeatingFlashCount',
8606             Condition => '$$self{FlashControlBuiltin} == 2',
8607             Mask => 0x0f,
8608             ValueConv => '$val < 10 ? $val + 1 : 5 * ($val - 7)',
8609             ValueConvInv => '$val <= 10 ? $val - 1 : $val / 5 + 7',
8610             },
8611             25.1 => { # CSe3-cc (NC)
8612             Name => 'RepeatingFlashRate',
8613             Condition => '$$self{FlashControlBuiltin} == 2',
8614             Mask => 0xf0,
8615             ValueConv => '$val < 10 ? $val + 1 : 10 * ($val - 8)',
8616             ValueConvInv => 'int(($val <= 10 ? $val - 1 : $val / 10 + 8) + 0.5)',
8617             PrintConv => '"$val Hz"',
8618             PrintConvInv => '$val=~/(\d+)/; $1 || 0',
8619             },
8620             26.1 => { # CSe3-da
8621             Name => 'CommanderInternalTTLCompBuiltin',
8622             Condition => '$$self{FlashControlBuiltin} == 3',
8623             Mask => 0x1f,
8624             ValueConv => '($val - 9) / 3',
8625             ValueConvInv => '$val * 3 + 9',
8626             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
8627             PrintConvInv => '$val',
8628             },
8629             27.1 => { # CSe3-db
8630             Name => 'CommanderInternalTTLCompGroupA',
8631             Condition => '$$self{FlashControlBuiltin} == 3',
8632             Mask => 0x1f,
8633             ValueConv => '($val - 9) / 3',
8634             ValueConvInv => '$val * 3 + 9',
8635             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
8636             PrintConvInv => '$val',
8637             },
8638             28.1 => { # CSe3-dc
8639             Name => 'CommanderInternalTTLCompGroupB',
8640             Condition => '$$self{FlashControlBuiltin} == 3',
8641             Mask => 0x1f,
8642             ValueConv => '($val - 9) / 3',
8643             ValueConvInv => '$val * 3 + 9',
8644             PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
8645             PrintConvInv => '$val',
8646             },
8647             30.1 => { # CSd11
8648             Name => 'FlashWarning',
8649             Mask => 0x80,
8650             PrintConv => \%onOff,
8651             },
8652             30.2 => { # CSe4
8653             Name => 'ModelingFlash',
8654             Mask => 0x20,
8655             PrintConv => \%onOff,
8656             },
8657             34.1 => { # CSa8-b
8658             Name => 'LiveViewAFAreaMode',
8659             Mask => 0x60,
8660             PrintConv => {
8661             0 => 'Face-Priority',
8662             1 => 'NormalArea',
8663             2 => 'WideArea',
8664             3 => 'SubjectTracking',
8665             },
8666             },
8667             34.2 => { # CSa8-a
8668             Name => 'LiveViewAFMode',
8669             Mask => 0x02,
8670             PrintConv => {
8671             0 => 'AF-C',
8672             1 => 'AF-F',
8673             },
8674             },
8675             35.1 => { # CSc4-a
8676             Name => 'PlaybackMonitorOffTime',
8677             Mask => 0xe0,
8678             PrintConv => {
8679             0 => '4 s',
8680             1 => '10 s', # default
8681             2 => '20 s',
8682             3 => '1 min',
8683             4 => '5 min',
8684             5 => '10 min',
8685             },
8686             },
8687             );
8688              
8689             # D4/D4S custom settings (ref 1, decoded from D4S)
8690             %Image::ExifTool::NikonCustom::SettingsD4 = (
8691             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
8692             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
8693             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
8694             WRITABLE => 1,
8695             FIRST_ENTRY => 0,
8696             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
8697             NOTES => 'Custom settings for the D4 and D4S.',
8698             0.1 => {
8699             Name => 'CustomSettingsBank',
8700             Mask => 0x03,
8701             PrintConv => {
8702             0 => 'A',
8703             1 => 'B',
8704             2 => 'C',
8705             3 => 'D',
8706             },
8707             },
8708             1.1 => { #CSa1
8709             Name => 'AF-CPrioritySelection',
8710             Mask => 0xc0,
8711             PrintConv => {
8712             0 => 'Release',
8713             1 => 'Release + Focus',
8714             2 => 'Focus',
8715             3 => 'Focus + Release',
8716             },
8717             },
8718             1.2 => { # CSa2
8719             Name => 'AF-SPrioritySelection',
8720             Mask => 0x20,
8721             PrintConv => {
8722             0 => 'Focus',
8723             1 => 'Release',
8724             },
8725             },
8726             1.3 => { # CSa7
8727             Name => 'AFPointSelection',
8728             Mask => 0x10,
8729             PrintConv => {
8730             0 => '51 Points',
8731             1 => '11 Points',
8732             },
8733             },
8734             1.4 => { # CSa3
8735             Name => 'FocusTrackingLockOn',
8736             Mask => 0x07,
8737             PrintConv => {
8738             0 => 'Off',
8739             1 => '1 (Short)',
8740             2 => '2',
8741             3 => '3 (Normal)',
8742             4 => '4',
8743             5 => '5 (Long)',
8744             },
8745             },
8746             2.1 => { # CSa4
8747             Name => 'AFActivation',
8748             Mask => 0x80,
8749             PrintConv => {
8750             0 => 'Shutter/AF-On',
8751             1 => 'AF-On Only',
8752             },
8753             },
8754             2.2 => { # CSa6
8755             Name => 'FocusPointWrap',
8756             Mask => 0x08,
8757             PrintConv => {
8758             0 => 'No Wrap',
8759             1 => 'Wrap',
8760             },
8761             },
8762             4.1 => { # CSd1-b
8763             Name => 'Pitch',
8764             Mask => 0x40,
8765             PrintConv => { 0 => 'High', 1 => 'Low' },
8766             },
8767             4.2 => { # CSf12
8768             Name => 'NoMemoryCard',
8769             Mask => 0x20,
8770             PrintConv => {
8771             0 => 'Release Locked',
8772             1 => 'Enable Release',
8773             },
8774             },
8775             4.3 => { # CSd6
8776             Name => 'GridDisplay',
8777             Mask => 0x02,
8778             PrintConv => \%onOff,
8779             },
8780             5.1 => { # CSd9
8781             Name => 'ShootingInfoDisplay',
8782             Mask => 0xc0,
8783             PrintConv => {
8784             # 0 - seen for D4 (PH)
8785             1 => 'Auto',
8786             2 => 'Manual (dark on light)',
8787             3 => 'Manual (light on dark)',
8788             },
8789             },
8790             5.2 => { # CSd10
8791             Name => 'LCDIllumination',
8792             Mask => 0x20,
8793             PrintConv => \%offOn,
8794             },
8795             5.3 => { # CSd8
8796             Name => 'ScreenTips',
8797             Mask => 0x04,
8798             PrintConv => \%offOn,
8799             },
8800             5.4 => { # CSd1-a
8801             Name => 'Beep',
8802             Mask => 0x03,
8803             PrintConv => {
8804             0 => 'Off',
8805             1 => 'Low',
8806             2 => 'Medium',
8807             3 => 'High',
8808             },
8809             },
8810             6.1 => { # CSf13
8811             Name => 'ReverseIndicators',
8812             Mask => 0x80,
8813             PrintConv => {
8814             0 => '+ 0 -',
8815             1 => '- 0 +',
8816             },
8817             },
8818             6.2 => { # CSd7-a
8819             Name => 'RearDisplay',
8820             Mask => 0x40,
8821             PrintConv => {
8822             0 => 'ISO',
8823             1 => 'Exposures Remaining',
8824             },
8825             },
8826             6.3 => { # CSd7-b
8827             Name => 'ViewfinderDisplay',
8828             Mask => 0x20,
8829             PrintConv => {
8830             0 => 'Frame Count',
8831             1 => 'Exposures Remaining',
8832             },
8833             },
8834             6.4 => { # CSd10-a
8835             Name => 'CommandDialsReverseRotation',
8836             Mask => 0x18,
8837             PrintConv => {
8838             0 => 'No',
8839             1 => 'Shutter Speed & Aperture',
8840             2 => 'Exposure Compensation',
8841             3 => 'Exposure Compensation, Shutter Speed & Aperture',
8842             },
8843             },
8844             6.5 => { # CSb4
8845             Name => 'EasyExposureCompensation',
8846             Mask => 0x03,
8847             PrintConv => {
8848             0 => 'Off',
8849             1 => 'On',
8850             2 => 'On (auto reset)',
8851             },
8852             },
8853             7.1 => { # CSb2
8854             Name => 'ExposureControlStepSize',
8855             Mask => 0xc0,
8856             PrintConv => {
8857             0 => '1/3 EV',
8858             1 => '1/2 EV',
8859             2 => '1 EV',
8860             },
8861             },
8862             7.2 => { # CSb1
8863             Name => 'ISOStepSize',
8864             Mask => 0x30,
8865             PrintConv => {
8866             0 => '1/3 EV',
8867             1 => '1/2 EV',
8868             2 => '1 EV',
8869             },
8870             },
8871             7.3 => { # CSb3
8872             Name => 'ExposureCompStepSize',
8873             Mask => 0x0c,
8874             PrintConv => {
8875             0 => '1/3 EV',
8876             1 => '1/2 EV',
8877             2 => '1 EV',
8878             },
8879             },
8880             8.1 => { # CSb6 (CSb5 for D4)
8881             Name => 'CenterWeightedAreaSize',
8882             Mask => 0xe0,
8883             PrintConv => {
8884             0 => '8 mm',
8885             1 => '12 mm',
8886             2 => '15 mm',
8887             3 => '20 mm',
8888             4 => 'Average',
8889             },
8890             },
8891             8.2 => { # CSb7-a
8892             Name => 'FineTuneOptMatrixMetering',
8893             Mask => 0x0f,
8894             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
8895             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
8896             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
8897             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
8898             },
8899             9.1 => { # CSb7-b
8900             Name => 'FineTuneOptCenterWeighted',
8901             Mask => 0xf0,
8902             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
8903             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
8904             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
8905             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
8906             },
8907             9.2 => { # CSb7-c
8908             Name => 'FineTuneOptSpotMetering',
8909             Mask => 0x0f,
8910             ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
8911             ValueConvInv => 'int($val*6+($val>0?0.5:-0.5))',
8912             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
8913             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
8914             },
8915             10.1 => { # CSf1-a
8916             Name => 'MultiSelectorShootMode',
8917             Mask => 0xc0,
8918             PrintConv => {
8919             0 => 'Select Center Focus Point (Reset)',
8920             2 => 'Preset Focus Point (Pre)',
8921             3 => 'Not Used (None)',
8922             },
8923             },
8924             10.2 => { # CSf1-b
8925             Name => 'MultiSelectorPlaybackMode',
8926             Mask => 0x30,
8927             PrintConv => {
8928             0 => 'Thumbnail On/Off',
8929             1 => 'View Histograms',
8930             2 => 'Zoom On/Off',
8931             3 => 'Choose Folder',
8932             },
8933             },
8934             10.3 => { # CSf2
8935             Name => 'MultiSelector',
8936             Mask => 0x01,
8937             PrintConv => {
8938             0 => 'Do Nothing',
8939             1 => 'Reset Meter-off Delay',
8940             },
8941             },
8942             11.1 => { # CSd4
8943             Name => 'ExposureDelayMode',
8944             Mask => 0xc0,
8945             PrintConv => {
8946             0 => 'Off',
8947             1 => '1 s',
8948             2 => '2 s',
8949             3 => '3 s',
8950             },
8951             },
8952             11.2 => { # CSd2-a
8953             Name => 'CHModeShootingSpeed',
8954             Mask => 0x10,
8955             PrintConv => {
8956             0 => '10 fps',
8957             1 => '11 fps',
8958             },
8959             },
8960             11.3 => { # CSd2-b
8961             Name => 'CLModeShootingSpeed',
8962             Mask => 0x0f,
8963             PrintConv => '"$val fps"',
8964             PrintConvInv => '$val=~s/\s*fps//i; $val',
8965             },
8966             12 => { # CSd3
8967             Name => 'MaxContinuousRelease',
8968             # values: 1-200
8969             },
8970             13.1 => { # CSe6
8971             Name => 'AutoBracketSet',
8972             Mask => 0xe0,
8973             PrintConv => {
8974             0 => 'AE & Flash',
8975             1 => 'AE Only',
8976             2 => 'Flash Only',
8977             3 => 'WB Bracketing',
8978             4 => 'Active D-Lighting',
8979             },
8980             },
8981             13.2 => { # CSe8
8982             Name => 'AutoBracketOrder',
8983             Mask => 0x10,
8984             PrintConv => {
8985             0 => '0,-,+',
8986             1 => '-,0,+',
8987             },
8988             },
8989             13.3 => { # CSe7
8990             Name => 'AutoBracketModeM',
8991             Mask => 0x0c,
8992             PrintConv => {
8993             0 => 'Flash/Speed',
8994             1 => 'Flash/Speed/Aperture',
8995             2 => 'Flash/Aperture',
8996             3 => 'Flash Only',
8997             },
8998             },
8999             14.1 => { # CSf3-a
9000             Name => 'FuncButton',
9001             Mask => 0xf8,
9002             PrintConv => {
9003             0 => 'None',
9004             1 => 'Preview',
9005             2 => 'FV Lock',
9006             3 => 'AE/AF Lock',
9007             4 => 'AE Lock Only',
9008             5 => 'AE Lock (reset on release)',
9009             6 => 'AE Lock (hold)',
9010             7 => 'AF Lock Only',
9011             8 => 'AF-On',
9012             10 => 'Bracketing Burst',
9013             11 => 'Matrix Metering',
9014             12 => 'Center-weighted Metering',
9015             13 => 'Spot Metering',
9016             14 => 'Playback',
9017             15 => 'My Menu Top Item',
9018             16 => '+NEF(RAW)',
9019             17 => 'Virtual Horizon',
9020             18 => 'My Menu',
9021             20 => 'Grid Display',
9022             21 => 'Disable Synchronized Release',
9023             22 => 'Remote Release Only',
9024             26 => 'Flash Disable/Enable',
9025             },
9026             },
9027             14.2 => { # CSf3-b
9028             Name => 'FuncButtonPlusDials',
9029             Mask => 0x07,
9030             PrintConv => {
9031             0 => 'None',
9032             1 => 'Choose Image Area (FX/DX/5:4)',
9033             2 => 'Shutter Speed & Aperture Lock',
9034             3 => 'One Step Speed / Aperture',
9035             4 => 'Choose Non-CPU Lens Number',
9036             5 => 'Active D-Lighting',
9037             6 => 'Shooting Bank Menu',
9038             },
9039             },
9040             15.1 => { # CSf4-a
9041             Name => 'PreviewButton',
9042             Mask => 0xf8,
9043             PrintConv => {
9044             0 => 'None',
9045             1 => 'Preview',
9046             2 => 'FV Lock',
9047             3 => 'AE/AF Lock',
9048             4 => 'AE Lock Only',
9049             5 => 'AE Lock (reset on release)',
9050             6 => 'AE Lock (hold)',
9051             7 => 'AF Lock Only',
9052             8 => 'AF-On',
9053             10 => 'Bracketing Burst',
9054             11 => 'Matrix Metering',
9055             12 => 'Center-weighted Metering',
9056             13 => 'Spot Metering',
9057             14 => 'Playback',
9058             15 => 'My Menu Top Item',
9059             16 => '+NEF(RAW)',
9060             17 => 'Virtual Horizon',
9061             18 => 'My Menu',
9062             20 => 'Grid Display',
9063             21 => 'Disable Synchronized Release',
9064             22 => 'Remote Release Only',
9065             26 => 'Flash Disable/Enable',
9066             },
9067             },
9068             15.2 => { # CSf4-b
9069             Name => 'PreviewButtonPlusDials',
9070             Mask => 0x07,
9071             PrintConv => {
9072             0 => 'None',
9073             1 => 'Choose Image Area (FX/DX/5:4)',
9074             2 => 'Shutter Speed & Aperture Lock',
9075             3 => 'One Step Speed / Aperture',
9076             4 => 'Choose Non-CPU Lens Number',
9077             5 => 'Active D-Lighting',
9078             6 => 'Shooting Bank Menu',
9079             },
9080             },
9081             16.1 => { # CSf9
9082             Name => 'AssignBktButton',
9083             Mask => 0x07,
9084             PrintConv => {
9085             0 => 'Auto Bracketing',
9086             1 => 'Multiple Exposure',
9087             2 => 'HDR (high dynamic range)',
9088             3 => 'None',
9089             },
9090             },
9091             18.1 => { # CSf10-b
9092             Name => 'CommandDialsChangeMainSub',
9093             Mask => 0xe0,
9094             PrintConv => {
9095             0 => 'Autofocus Off, Exposure Off',
9096             1 => 'Autofocus Off, Exposure On',
9097             2 => 'Autofocus Off, Exposure On (Mode A)',
9098             4 => 'Autofocus On, Exposure Off',
9099             5 => 'Autofocus On, Exposure On',
9100             6 => 'Autofocus On, Exposure On (Mode A)',
9101             },
9102             },
9103             18.2 => { # CSf10-d
9104             Name => 'CommandDialsMenuAndPlayback',
9105             Mask => 0x18,
9106             PrintConv => {
9107             0 => 'On',
9108             1 => 'Off',
9109             2 => 'On (Image Review Excluded)',
9110             },
9111             },
9112             18.3 => { # CSf10-c
9113             Name => 'CommandDialsApertureSetting',
9114             Mask => 0x04,
9115             PrintConv => {
9116             0 => 'Sub-command Dial',
9117             1 => 'Aperture Ring',
9118             },
9119             },
9120             18.4 => { # CSc1
9121             Name => 'ShutterReleaseButtonAE-L',
9122             Mask => 0x02,
9123             PrintConv => \%offOn,
9124             },
9125             18.5 => { # CSf11
9126             Name => 'ReleaseButtonToUseDial',
9127             Mask => 0x01,
9128             PrintConv => \%noYes,
9129             },
9130             19.1 => { # CSc2
9131             Name => 'StandbyTimer',
9132             Mask => 0xf0,
9133             PrintConv => {
9134             0 => '4 s',
9135             1 => '6 s',
9136             3 => '10 s',
9137             5 => '30 s',
9138             6 => '1 min',
9139             7 => '5 min',
9140             8 => '10 min',
9141             9 => '30 min',
9142             },
9143             },
9144             20.1 => { # CSc3-a
9145             Name => 'SelfTimerTime',
9146             Mask => 0xc0,
9147             PrintConv => {
9148             0 => '2 s',
9149             1 => '5 s',
9150             2 => '10 s',
9151             3 => '20 s',
9152             },
9153             },
9154             20.2 => { # CSc3-b
9155             Name => 'SelfTimerShotCount',
9156             Mask => 0x0f,
9157             },
9158             20.3 => { # CSc3-c
9159             Name => 'SelfTimerShotInterval',
9160             Mask => 0x30,
9161             PrintConv => {
9162             0 => '0.5 s',
9163             1 => '1 s',
9164             2 => '2 s',
9165             3 => '3 s',
9166             },
9167             },
9168             21.1 => { # CSc4-d
9169             Name => 'ImageReviewMonitorOffTime',
9170             Mask => 0xe0,
9171             PrintConv => {
9172             0 => '2 s',
9173             1 => '4 s',
9174             2 => '10 s',
9175             3 => '20 s',
9176             4 => '1 min',
9177             5 => '5 min',
9178             6 => '10 min',
9179              
9180             },
9181             },
9182             21.2 => { # CSc4-e
9183             Name => 'LiveViewMonitorOffTime',
9184             Mask => 0x1c,
9185             PrintConv => {
9186             0 => '5 min',
9187             1 => '10 min',
9188             2 => '15 min',
9189             3 => '20 min',
9190             4 => '30 min',
9191             5 => 'No Limit',
9192             },
9193             },
9194             22.1 => { # CSc4-b
9195             Name => 'MenuMonitorOffTime',
9196             Mask => 0xe0,
9197             PrintConv => {
9198             0 => '4 s',
9199             1 => '10 s',
9200             2 => '20 s',
9201             3 => '1 min',
9202             4 => '5 min',
9203             5 => '10 min',
9204             },
9205             },
9206             22.2 => { # CSc4-c
9207             Name => 'ShootingInfoMonitorOffTime',
9208             Mask => 0x1c,
9209             PrintConv => {
9210             0 => '4 s',
9211             1 => '10 s',
9212             2 => '20 s',
9213             3 => '1 min',
9214             4 => '5 min',
9215             5 => '10 min',
9216             },
9217             },
9218             23.1 => { # CSe1
9219             Name => 'FlashSyncSpeed',
9220             Mask => 0xf0,
9221             PrintConv => {
9222             # 0x00 - seen for D4 (PH)
9223             1 => '1/250 s (auto FP)',
9224             2 => '1/250 s',
9225             3 => '1/200 s',
9226             4 => '1/160 s',
9227             5 => '1/125 s',
9228             6 => '1/100 s',
9229             7 => '1/80 s',
9230             8 => '1/60 s',
9231             },
9232             },
9233             23.2 => { # CSe2
9234             Name => 'FlashShutterSpeed',
9235             Mask => 0x0f,
9236             PrintConvColumns => 2,
9237             PrintConv => {
9238             0 => '1/60 s',
9239             1 => '1/30 s',
9240             2 => '1/15 s',
9241             3 => '1/8 s',
9242             4 => '1/4 s',
9243             5 => '1/2 s',
9244             6 => '1 s',
9245             7 => '2 s',
9246             8 => '4 s',
9247             9 => '8 s',
9248             10 => '15 s',
9249             11 => '30 s',
9250             },
9251             },
9252             31.1 => { # CSe5
9253             Name => 'ModelingFlash',
9254             Mask => 0x20,
9255             PrintConv => \%onOff,
9256             },
9257             36.1 => { # CSc4-a
9258             Name => 'PlaybackMonitorOffTime',
9259             Mask => 0xe0,
9260             PrintConv => {
9261             0 => '4 s',
9262             1 => '10 s',
9263             2 => '20 s',
9264             3 => '1 min',
9265             4 => '5 min',
9266             5 => '10 min',
9267             },
9268             },
9269             37.1 => { # CSf15
9270             Name => 'PlaybackZoom',
9271             Mask => 0x01,
9272             PrintConv => {
9273             0 => 'Use Separate Zoom Buttons',
9274             1 => 'Use Either Zoom Button with Command Dial',
9275             },
9276             },
9277             38.1 => { # CSf8-a
9278             Name => 'ShutterSpeedLock',
9279             Mask => 0x80,
9280             PrintConv => \%offOn,
9281             },
9282             38.2 => { # CSf8-b
9283             Name => 'ApertureLock',
9284             Mask => 0x40,
9285             PrintConv => \%offOn,
9286             },
9287             38.3 => { # CSg4
9288             Name => 'MovieShutterButton',
9289             Mask => 0x30,
9290             PrintConv => {
9291             0 => 'Take Photo',
9292             1 => 'Record Movies',
9293             2 => 'Live Frame Grab',
9294             },
9295             },
9296             38.4 => { # CSe4
9297             Name => 'FlashExposureCompArea',
9298             Mask => 0x04,
9299             PrintConv => {
9300             0 => 'Entire frame',
9301             1 => 'Background only',
9302             },
9303             },
9304             41.1 => { # CSg1-a
9305             Name => 'MovieFunctionButton',
9306             Mask => 0x70,
9307             PrintConv => {
9308             0 => 'None',
9309             1 => 'Power Aperture (open)', # bit '02' is also toggled on for this setting
9310             3 => 'Index Marking',
9311             4 => 'View Photo Shooting Info',
9312             },
9313             },
9314             41.2 => { # CSg2-a
9315             Name => 'MoviePreviewButton',
9316             Mask => 0x07,
9317             PrintConv => {
9318             0 => 'None',
9319             2 => 'Power Aperture (open)', # bit '10' is also toggled on for this setting
9320             3 => 'Index Marking',
9321             4 => 'View Photo Shooting Info',
9322             },
9323             },
9324             42.1 => { # CSf14
9325             Name => 'VerticalMultiSelector',
9326             Mask => 0x60,
9327             PrintConv => {
9328             0 => 'Same as Multi-Selector with Info(U/D) & Playback(R/L)',
9329             1 => 'Same as Multi-Selector with Info(R/L) & Playback(U/D)',
9330             2 => 'Focus Point Selection',
9331             },
9332             },
9333             42.2 => { # CSf7-a
9334             Name => 'VerticalFuncButton',
9335             Mask => 0x1f,
9336             PrintConv => {
9337             0 => 'None',
9338             1 => 'Preview',
9339             2 => 'FV Lock',
9340             3 => 'AE/AF Lock',
9341             4 => 'AE Lock Only',
9342             5 => 'AE Lock (reset on release)',
9343             6 => 'AE Lock (hold)',
9344             7 => 'AF Lock Only',
9345             10 => 'Bracketing Burst',
9346             11 => 'Matrix Metering',
9347             12 => 'Center-weighted Metering',
9348             13 => 'Spot Metering',
9349             14 => 'Playback',
9350             15 => 'My Menu Top Item',
9351             16 => '+NEF(RAW)',
9352             17 => 'Virtual Horizon',
9353             18 => 'My Menu',
9354             20 => 'Grid Display',
9355             26 => 'Flash Disable/Enable',
9356             },
9357             },
9358             43.1 => { # CSf7-b
9359             Name => 'VerticalFuncButtonPlusDials',
9360             Mask => 0xf0,
9361             PrintConv => {
9362             0 => 'None',
9363             1 => 'Choose Image Area (FX/DX/5:4)',
9364             2 => 'Shutter Speed & Aperture Lock',
9365             3 => 'One Step Speed / Aperture',
9366             4 => 'Choose Non-CPU Lens Number',
9367             5 => 'Active D-Lighting',
9368             6 => 'Shooting Bank Menu',
9369             7 => 'ISO Sensitivity',
9370             8 => 'Exposure Mode',
9371             9 => 'Exposure Compensation',
9372             10 => 'Metering',
9373             },
9374             },
9375             43.2 => { # CSf16
9376             Name => 'AssignMovieRecordButton',
9377             Mask => 0x07,
9378             PrintConv => {
9379             0 => 'None',
9380             1 => 'Choose Image Area (FX/DX/5:4)',
9381             2 => 'Shutter Speed & Aperture Lock',
9382             3 => 'ISO Sensitivity',
9383             4 => 'Shooting Bank Menu',
9384             },
9385             },
9386             46.1 => { # CSa5-c
9387             Name => 'DynamicAreaAFDisplay',
9388             Mask => 0x80,
9389             PrintConv => \%offOn,
9390             },
9391             46.2 => { # CSa5-a
9392             Name => 'AFPointIllumination',
9393             Mask => 0x60,
9394             PrintConv => {
9395             0 => 'Off',
9396             1 => 'On in Continuous Shooting Modes',
9397             2 => 'On During Manual Focusing',
9398             3 => 'On in Continuous Shooting and Manual Focusing',
9399             },
9400             },
9401             46.3 => { # CSa10 (D4 is slightly different -- needs checking)
9402             Name => 'StoreByOrientation',
9403             Mask => 0x18,
9404             PrintConv => {
9405             0 => 'Off',
9406             1 => 'Focus Point',
9407             2 => 'Focus Point and AF-area mode',
9408             },
9409             },
9410             46.4 => { # CSa5-d
9411             Name => 'GroupAreaAFIllumination',
9412             Mask => 0x04,
9413             PrintConv => {
9414             0 => 'Squares',
9415             1 => 'Dots',
9416             },
9417             },
9418             46.5 => { # CSa5-b
9419             Name => 'AFPointBrightness',
9420             Mask => 0x03,
9421             PrintConv => {
9422             0 => 'Low',
9423             1 => 'Normal',
9424             2 => 'High',
9425             3 => 'Extra High',
9426             },
9427             },
9428             47.1 => { # CSa8
9429             Name => 'AFOnButton',
9430             Mask => 0x70,
9431             PrintConv => {
9432             0 => 'AF On',
9433             1 => 'AE/AF Lock',
9434             2 => 'AE Lock Only',
9435             3 => 'AE Lock (reset on release)',
9436             4 => 'AE Lock (hold)',
9437             5 => 'AF Lock Only',
9438             6 => 'None',
9439             },
9440             },
9441             47.2 => { # CSa9
9442             Name => 'VerticalAFOnButton',
9443             Mask => 0x07,
9444             PrintConv => {
9445             0 => 'Same as AF On',
9446             1 => 'AF On',
9447             2 => 'AE/AF Lock',
9448             3 => 'AE Lock Only',
9449             4 => 'AE Lock (reset on release)',
9450             5 => 'AE Lock (hold)',
9451             6 => 'AF Lock Only',
9452             7 => 'None',
9453             },
9454             },
9455             48.1 => { # CSf5
9456             Name => 'SubSelectorAssignment',
9457             Mask => 0x80,
9458             PrintConv => {
9459             0 => 'Focus Point Selection',
9460             1 => 'Same As Multi-selector',
9461             },
9462             },
9463             48.2 => { # CSg3-a
9464             Name => 'MovieSubSelectorAssignment',
9465             Mask => 0x07,
9466             PrintConv => {
9467             0 => 'None',
9468             1 => 'Index Marking',
9469             2 => 'AE/AF Lock',
9470             3 => 'AE Lock Only',
9471             4 => 'AE Lock (hold)',
9472             5 => 'AF Lock Only',
9473             6 => 'View Photo Shooting Info',
9474             },
9475             },
9476             49.1 => { # CSf6-a
9477             Name => 'SubSelector',
9478             Mask => 0xf8,
9479             PrintConv => {
9480             0 => 'None',
9481             1 => 'Preview',
9482             2 => 'FV Lock',
9483             3 => 'AE/AF Lock',
9484             4 => 'AE Lock Only',
9485             5 => 'AE Lock (reset on release)',
9486             6 => 'AE Lock (hold)',
9487             7 => 'AF Lock Only',
9488             8 => 'AF-On',
9489             # 9 - seen for D4 (PH)
9490             10 => 'Bracketing Burst',
9491             11 => 'Matrix Metering',
9492             12 => 'Center-weighted Metering',
9493             13 => 'Spot Metering',
9494             14 => 'Playback',
9495             15 => 'My Menu Top Item',
9496             16 => '+NEF(RAW)',
9497             17 => 'Virtual Horizon',
9498             18 => 'My Menu',
9499             19 => 'Reset', # value appears to be specific to this control at this time
9500             20 => 'Grid Display',
9501             21 => 'Disable Synchronized Release',
9502             22 => 'Remote Release Only',
9503             23 => 'Preview', # value appears to be specific to this control at this time
9504             26 => 'Flash Disable/Enable',
9505             },
9506             },
9507             49.2 => { # CSf6-b
9508             Name => 'SubSelectorPlusDials',
9509             Mask => 0x07,
9510             PrintConv => {
9511             # (not all values from CSf3-b/CSf4-b are available for CSf6-b)
9512             0 => 'None',
9513             1 => 'Choose Image Area (FX/DX/5:4)',
9514             2 => 'Shutter Speed & Aperture Lock',
9515             # 3 => 'One Step Speed / Aperture', # (not available)
9516             4 => 'Choose Non-CPU Lens Number',
9517             # 5 => 'Active D-Lighting', # (not available)
9518             6 => 'Shooting Bank Menu',
9519             },
9520             },
9521             50.1 => { # CSb5
9522             Name => 'MatrixMetering',
9523             Condition => '$$self{Model} =~ /\bD4S/',
9524             Notes => 'D4S only',
9525             Mask => 0x80,
9526             PrintConv => {
9527             0 => 'Face Detection On',
9528             1 => 'Face Detection Off',
9529             },
9530             },
9531             50.2 => { # CSf17
9532             Name => 'LiveViewButtonOptions',
9533             Condition => '$$self{Model} =~ /\bD4S/',
9534             Notes => 'D4S only',
9535             Mask => 0x30,
9536             PrintConv => {
9537             0 => 'Enable',
9538             1 => 'Enable (standby time active)',
9539             2 => 'Disable',
9540             },
9541             },
9542             50.3 => { # CSa12
9543             Name => 'AFModeRestrictions',
9544             Condition => '$$self{Model} =~ /\bD4S/',
9545             Notes => 'D4S only',
9546             Mask => 0x03,
9547             PrintConv => {
9548             0 => 'Off',
9549             1 => 'AF-C',
9550             2 => 'AF-S',
9551             },
9552             },
9553             51.1 => { # CSa11
9554             Name => 'LimitAFAreaModeSelection',
9555             Condition => '$$self{Model} =~ /\bD4S/',
9556             Notes => 'D4S only',
9557             Mask => 0x7e,
9558             PrintConv => {
9559             0 => 'No Restrictions',
9560             BITMASK => {
9561             0 => 'Auto-area',
9562             1 => 'Group-area',
9563             2 => '3D-tracking',
9564             3 => 'Dynamic area (51 points)',
9565             4 => 'Dynamic area (21 points)',
9566             5 => 'Dynamic area (9 points)',
9567             },
9568             },
9569             },
9570             52.1 => { # CSg1-b
9571             Name => 'MovieFunctionButtonPlusDials',
9572             Mask => 0x10,
9573             PrintConv => {
9574             0 => 'None',
9575             1 => 'Choose Image Area',
9576             },
9577             },
9578             52.2 => { # CSg2-b
9579             Name => 'MoviePreviewButtonPlusDials',
9580             Mask => 0x01,
9581             PrintConv => {
9582             0 => 'None',
9583             1 => 'Choose Image Area',
9584             },
9585             },
9586             53.1 => { # CSg3-b
9587             Name => 'MovieSubSelectorAssignmentPlusDials',
9588             Mask => 0x10,
9589             PrintConv => {
9590             0 => 'None',
9591             1 => 'Choose Image Area',
9592             },
9593             },
9594             54.1 => { # CSf18
9595             Name => 'AssignRemoteFnButton',
9596             Condition => '$$self{Model} =~ /\bD4S/',
9597             Notes => 'D4S only',
9598             Mask => 0x1f,
9599             PrintConv => {
9600             0 => 'None',
9601             1 => 'Preview',
9602             2 => 'FV Lock',
9603             3 => 'AE/AF Lock',
9604             4 => 'AE Lock Only',
9605             5 => 'AE Lock (reset on release)',
9606             7 => 'AF Lock Only',
9607             8 => 'AF-On',
9608             16 => '+NEF(RAW)',
9609             25 => 'Live View',
9610             26 => 'Flash Disable/Enable',
9611             },
9612             },
9613             55.1 => { # CSf19
9614             Name => 'LensFocusFunctionButtons',
9615             Condition => '$$self{Model} =~ /\bD4S/',
9616             Notes => 'D4S only',
9617             Mask => 0x3f,
9618             PrintConv => {
9619             3 => 'AE/AF Lock',
9620             4 => 'AE Lock Only',
9621             7 => 'AF Lock Only',
9622             21 => 'Disable Synchronized Release',
9623             22 => 'Remote Release Only',
9624             24 => 'Preset focus Point',
9625             26 => 'Flash Disable/Enable',
9626             32 => 'AF-Area Mode: Single-point AF',
9627             33 => 'AF-Area Mode: Dynamic-area AF (9 points)',
9628             34 => 'AF-Area Mode: Dynamic-area AF (21 points)',
9629             35 => 'AF-Area Mode: Dynamic-area AF (51 points)',
9630             36 => 'AF-Area Mode: Group-area AF',
9631             37 => 'AF-Area Mode: Auto area AF',
9632             },
9633             },
9634             );
9635              
9636             # Z9 custom settings (ref 1) #base at offset26 + 1035 (firmware 1.0.0)
9637             %Image::ExifTool::NikonCustom::SettingsZ9 = (
9638             PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
9639             WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
9640             CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
9641             DATAMEMBER => [ 185, 529 ],
9642             WRITABLE => 1,
9643             FIRST_ENTRY => 0,
9644             GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
9645             NOTES => 'Custom settings for the Z9.',
9646             1 => {
9647             Name => 'CustomSettingsBank',
9648             PrintConv => {
9649             0 => 'A',
9650             1 => 'B',
9651             2 => 'C',
9652             3 => 'D',
9653             },
9654             },
9655             3 => { # CSa1
9656             Name => 'AF-CPrioritySelection',
9657             PrintConv => {
9658             0 => 'Release',
9659             1 => 'Release + Focus',
9660             3 => 'Focus',
9661             },
9662             },
9663             5 => { Name => 'AF-SPrioritySelection', PrintConv => {0 => 'Release',1 => 'Focus'}}, #CSa2
9664             7 => { # CSa3-a #when AFAreaMode is 3D-tracking, blocked shot response will be 3, regardless of this setting
9665             Name => 'BlockShotAFResponse',
9666             PrintConv => {
9667             1 => '1 (Quick)',
9668             2 => '2',
9669             3 => '3 (Normal)',
9670             4 => '4',
9671             5 => '5 (Delayed)',
9672             },
9673             },
9674             11 => {Name => 'AFPointSel',PrintConv => { 0 => 'Use All',1 => 'Use Half' }}, # CSa4
9675             13 => { # CSa5
9676             Name => 'StoreByOrientation',
9677             PrintConv => {
9678             0 => 'Off',
9679             1 => 'Focus Point',
9680             2 => 'Focus Point and AF-area mode',
9681             },
9682             },
9683             15 => { Name => 'AFActivation', PrintConv => {0 => 'AF-On Only', 1 => 'Shutter/AF-On'}}, # CSa6-a
9684             16 => { Name => 'AF-OnOutOfFocusRelease', PrintConv => {0 => 'Disable', 1 => 'Enable'}, Unknown => 1}, # CSa6-b
9685             17 => { Name => 'LimitAF-AreaModeSelPinpoint', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
9686             19 => { Name => 'LimitAF-AreaModeSelWideAF_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
9687             20 => { Name => 'LimitAF-AreaModeSelWideAF_L', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
9688             21 => { Name => 'LimitAFAreaModeSelAuto', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8 #left out hypen to retain compatibility with tag name in NikonSettings
9689             22 => { Name => 'FocusPointWrap', PrintConv => { 0 => 'No Wrap', 1 => 'Wrap' }, Unknown => 1 }, # CSa10
9690             23 => { Name => 'ManualFocusPointIllumination', PrintConv => {0 => 'On During Focus Point Selection Only', 1 => 'On', }, Unknown => 1 }, # CSa11a
9691             24 => { Name => 'DynamicAreaAFAssist', PrintConv => { 0 => 'Focus Point Only',1 => 'Focus and Surrounding Points',}, Unknown => 1 }, # CSa11b
9692             25 => { Name => 'AF-AssistIlluminator', PrintConv => \%offOn }, # CSa12
9693             26 => { Name => 'ManualFocusRingInAFMode', PrintConv => \%offOn }, # CSa14
9694             27 => { Name => 'ExposureControlStepSize', PrintConv => \%thirdHalfFull }, # CSb2
9695             29 => { # CSb3
9696             Name => 'EasyExposureCompensation',
9697             PrintConv => {
9698             0 => 'Off',
9699             1 => 'On',
9700             2 => 'On (auto reset)',
9701             },
9702             },
9703             31 => { # CSb5
9704             Name => 'CenterWeightedAreaSize',
9705             PrintConv => {
9706             0 => '8 mm',
9707             1 => '12 mm',
9708             4 => 'Average',
9709             },
9710             },
9711             33 => { # CSb6-a
9712             Name => 'FineTuneOptMatrixMetering',
9713             Format => 'int8s',
9714             ValueConv => '$val / 6',
9715             ValueConvInv => 'int($val*6)',
9716             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
9717             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
9718             },
9719             35 => { # CSb6-b
9720             Name => 'FineTuneOptCenterWeighted',
9721             Format => 'int8s',
9722             ValueConv => '$val / 6',
9723             ValueConvInv => 'int($val*6)',
9724             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
9725             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
9726             },
9727             37 => { # CSb6-c
9728             Name => 'FineTuneOptSpotMetering',
9729             Format => 'int8s',
9730             ValueConv => '$val / 6',
9731             ValueConvInv => 'int($val*6)',
9732             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
9733             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
9734             },
9735             39 => { # CSb6-d
9736             Name => 'FineTuneOptHighlightWeighted',
9737             Format => 'int8s',
9738             ValueConv => '$val / 6',
9739             ValueConvInv => 'int($val*6)',
9740             PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
9741             PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
9742             },
9743             41 => { # CSc1
9744             Name => 'ShutterReleaseButtonAE-L',
9745             PrintConv => {
9746             0 => 'Off',
9747             1 => 'On (Half Press)',
9748             2 => 'On (Burst Mode)',
9749             },
9750             },
9751             43 => { # CSc3-a
9752             Name => 'SelfTimerTime',
9753             PrintConv => {
9754             0 => '2 s',
9755             1 => '5 s',
9756             2 => '10 s',
9757             3 => '20 s',
9758             },
9759             },
9760             45 => { Name => 'SelfTimerShotCount', }, # CSc3-b 1-9
9761             49 => { # CSc3-c
9762             Name => 'SelfTimerShotInterval',
9763             PrintConv => {
9764             0 => '0.5 s',
9765             1 => '1 s',
9766             2 => '2 s',
9767             3 => '3 s',
9768             },
9769             },
9770             51 => { Name => 'PlaybackMonitorOffTime', PrintConv => \%powerOffDelayTimesZ9 }, # CSc4-a
9771             53 => { Name => 'MenuMonitorOffTime', PrintConv => \%powerOffDelayTimesZ9 }, # CSc4-b
9772             55 => { Name => 'ShootingInfoMonitorOffTime',PrintConv => \%powerOffDelayTimesZ9 }, # CSc4-c
9773             57 => { Name => 'ImageReviewMonitorOffTime', PrintConv => \%powerOffDelayTimesZ9 }, # CSc4-d
9774             59 => { Name => 'CLModeShootingSpeed', ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1b
9775             61 => { # CSd2 # values: 1-200 & 'No Limit'
9776             Name => 'MaxContinuousRelease',
9777             Format => 'int16s',
9778             ValueConv => '($val = -1 ? \'No Limit\' : $val ) ',
9779             },
9780             65 => { Name => 'SyncReleaseMode', PrintConv => { 0 => 'No Sync', 1 => 'Sync' }, Unknown => 1 }, # CSd4
9781             69 => { Name => 'LimitSelectableImageAreaDX', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-1
9782             70 => { Name => 'LimitSelectableImageArea1To1', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-2
9783             71 => { Name => 'LimitSelectableImageArea16To9', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-3
9784             72 => { Name => 'FileNumberSequence', PrintConv => \%offOn }, # CSd7
9785             73 => { #CSa13b
9786             Name => 'FocusPeakingLevel',
9787             Unknown => 1,
9788             PrintConv => {
9789             0 => 'High Sensitivity',
9790             1 => 'Standard Sensitivity',
9791             2 => 'Low Sensitivity',
9792             },
9793             },
9794             75 => { #CSa13c
9795             Name => 'FocusPeakingHighlightColor',
9796             Unknown => 1,
9797             PrintConv => {
9798             0 => 'Red',
9799             1 => 'Yellow',
9800             2 => 'Blue',
9801             3 => 'White',
9802             },
9803             },
9804             81 => { Name => 'ContinuousModeDisplay', PrintConv => \%offOn }, # CSd12
9805             83 => { # CSe1-a Previous cameras reported this with HighSpeedSync indicator appended as '(Auto FP)'. Z9 separated the 2 fields.
9806             Name => 'FlashSyncSpeed',
9807             ValueConv => '($val-144)/8',
9808             PrintConv => {
9809             0 => '1/60 s',
9810             1 => '1/80 s',
9811             2 => '1/100 s',
9812             3 => '1/125 s',
9813             4 => '1/160 s',
9814             5 => '1/200 s',
9815             6 => '1/250 s',
9816             },
9817             },
9818             85 => { Name => 'HighSpeedSync', PrintConv => \%offOn }, # CSe1-b
9819             87 => { # CSe2
9820             Name => 'FlashShutterSpeed',
9821             ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to accomodate 4 new values?
9822             PrintConv => {
9823             0 => '1 s',
9824             1 => '1/2 s',
9825             2 => '1/4 s',
9826             3 => '1/8 s',
9827             4 => '1/15 s',
9828             5 => '1/30 s',
9829             6 => '1/60 s',
9830             7 => '30 s',
9831             8 => '15 s',
9832             9 => '8 s',
9833             10 => '4 s',
9834             11 => '2 s',
9835             },
9836             },
9837             89 => { Name => 'FlashExposureCompArea', PrintConv => { 0 => 'Entire Frame', 1 => 'Background Only' } }, # CSe3
9838             91 => { Name => 'AutoFlashISOSensitivity', PrintConv => { 0 => 'Subject and Background',1 => 'Subject Only'} }, # CSe4
9839             93 => { Name => 'ModelingFlash', PrintConv => \%offOn }, # CSe5
9840             95 => { # CSe6
9841             Name => 'AutoBracketModeM',
9842             PrintConv => {
9843             0 => 'Flash/Speed',
9844             1 => 'Flash/Speed/Aperture',
9845             2 => 'Flash/Aperture',
9846             3 => 'Flash Only',
9847             4 => 'Flash/ISO',
9848             },
9849             },
9850             97 => { Name => 'AutoBracketOrder', PrintConv => { 0 => '0,-,+',1 => '-,0,+' } }, # CSe7
9851             99 => { Name => 'Func1Button', PrintConv => \%buttonsZ9}, # CSf2-a
9852             #101 Func1Button submenu: Preview 0 => 'Press To Recall', 1=> 'Hold To Recall' # CSf2-a
9853             #103 Func1Button submenu: AreaMode 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-a
9854             #105 Func1Button submenu: AreaMode+AF-On 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-a
9855             #109 Func1Button submenu: SynchronizedRelease 1=>'Master', 2=>'Remote' # CSf2-a
9856             #111 Func1Button submenu: Zoom 0=>'Zoom (Low)', 2=>'Zoom (1:1)', 2=>'Zoom (High)' # CSf2-a
9857             #113 Func1Button & Func1ButtonPlayback submenu: Rating # CSf2-a & CSf3a 0=>'Candidate For Deletion' 6=>''None'
9858             115 => { Name => 'Func2Button', PrintConv => \%buttonsZ9}, # CSf2-b
9859             #117 Func2Button submenu: Preview 0 => 'Press To Recall', 1=> 'Hold To Recall' # CSf2-b
9860             #119 Func2Button submenu: AreaMode 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-b
9861             #121 Func2Button submenu: AreaMode+AF-On 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-b
9862             #125 Func2Button submenu: SynchronizedRelease 1=>'Master', 2=>'Remote' # CSf2-b
9863             #127 Func2Button submenu: Zoom 0=>'Zoom (Low)', 2=>'Zoom (1:1)', 2=>'Zoom (High)' # CSf2-b
9864             #129 Func2Button & Func2ButtonPlayback submenu: Rating # CSf2-b & CSf3b 0=>'Candidate For Deletion' 6=>''None'
9865             131 => { Name => 'AFOnButton', PrintConv => \%buttonsZ9}, # CSf2-c
9866             143 => { Name => 'SubSelector', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-g
9867             155 => { Name => 'AssignMovieRecordButton', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-m
9868             159 => { Name => 'LensFunc1Button', PrintConv => \%buttonsZ9}, # CSf2-o
9869             167 => { Name => 'LensFunc2Button', PrintConv => \%buttonsZ9}, # CSf2-p
9870             173 => { # CSf2-q
9871             Name => 'LensControlRing',
9872             PrintConv => {
9873             0 => 'None (Disabled)',
9874             1 => 'Focus (M/A)',
9875             2 => 'ISO Sensitivity',
9876             3 => 'Exposure Compensation',
9877             4 => 'Aperture',
9878             },
9879             },
9880             175 => { Name => 'MultiSelectorShootMode', PrintConv => \%buttonsZ9}, # CSf2-h called the OK button in camera, tag name retained for compatibility
9881             179 => { Name => 'MultiSelectorPlaybackMode', PrintConv => \%buttonsZ9}, # CSf3f
9882             183 => { Name => 'ShutterSpeedLock', PrintConv => \%offOn }, # CSf4-a
9883             184 => { Name => 'ApertureLock', PrintConv => \%offOn }, # CSf4-b
9884             185 => { # CSf5-a Previous cameras reported this tag as part of CmdDialsReverseRotation. Blend with CSf5-b separate settings together to match extant tag name and values
9885             Name => 'CmdDialsReverseRotExposureComp',
9886             RawConv => '$$self{CmdDialsReverseRotExposureComp} = $val',
9887             Hidden => 1,
9888             },
9889             186 => [{ # CSf5-a (continued from above)
9890             Name => 'CmdDialsReverseRotation',
9891             Condition => '$$self{CmdDialsReverseRotExposureComp} == 0',
9892             PrintConv => {
9893             0 => 'No',
9894             1 => 'Shutter Speed & Aperture',
9895             },
9896             },{
9897             Name => 'CmdDialsReverseRotation',
9898             PrintConv => {
9899             0 => 'Exposure Compensation',
9900             1 => 'Exposure Compensation, Shutter Speed & Aperture',
9901             },
9902             }],
9903             191 => { Name => 'UseDialWithoutHold', PrintConv => \%offOn, Unknown => 1 }, # CSf6
9904             193 => { Name => 'ReverseIndicators', PrintConv => { 0 => '+ 0 -', 1 => '- 0 +' }, Unknown => 1 }, # CSf7
9905             195 => { Name => 'MovieFunc1Button', PrintConv => \%buttonsZ9}, # CSg2-a
9906             203 => { Name => 'MovieAF-OnButton', PrintConv => \%buttonsZ9}, # CSg2-f
9907             217 => { Name => 'MovieMultiSelector', PrintConv => \%buttonsZ9, Unknown => 1}, # CSg2-h
9908             221 => { Name => 'MovieAFSpeed', ValueConv => '$val - 5', ValueConvInv => '$val + 6' }, # CSg6-a
9909             223 => { Name => 'MovieAFSpeedApply', rintConv => {0 => 'Always', 1 => 'Only During Recording'},}, # CSg6-b
9910             225 => { # CSg7
9911             Name => 'MovieAFTrackingSensitivity',
9912             PrintConv => {
9913             0 => '1 (High)',
9914             1 => '2',
9915             2 => '3',
9916             3 => '4 (Normal)',
9917             4 => '5',
9918             5 => '6',
9919             6 => '7 (Low)',
9920             },
9921             },
9922             257 => { Name => 'LCDIllumination', PrintConv => \%offOn, Unknown => 1 }, # CSd11
9923             258 => { Name => 'ExtendedShutterSpeeds', PrintConv => \%offOn }, # CSd5
9924             259 => { Name => 'SubjectMotion', PrintConv => {0 => 'Erratic', 1 => 'Steady'} }, # CSa3-b
9925             261 => { Name => 'FocusPointPersistence', PrintConv => {0 => 'Auto', 1 => 'Off'} }, # CSa7
9926             263 => { Name => 'AutoFocusModeRestrictions', PrintConv => \%focusModeRestrictionsZ9, Unknown => 1}, # CSa9
9927             267 => { Name => 'CHModeShootingSpeed', ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1a
9928             269.1 => { Name => 'LimitReleaseModeSelCL', Mask => 0x02, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-a
9929             269.2 => { Name => 'LimitReleaseModeSelCH', Mask => 0x04, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-b
9930             269.3 => { Name => 'LimitReleaseModeSelC30', Mask => 0x10, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-e
9931             269.4 => { Name => 'LimitReleaseModeSelC120', Mask => 0x40, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-c
9932             269.5 => { Name => 'LimitReleaseModeSelSelf', Mask => 0x80, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-d
9933             273 => { Name => 'FlashBurstPriority', PrintConv => { 0 => 'Frame Rate',1 => 'Exposure'}, Unknown => 1 }, # CSe8
9934             277 => { Name => 'VerticalFuncButton', PrintConv => \%buttonsZ9}, # CSf2-c
9935             281 => { Name => 'Func3Button', PrintConv => \%buttonsZ9}, # CSf2-c
9936             285 => { Name => 'VerticalAFOnButton', PrintConv => \%buttonsZ9}, # CSf2-l
9937             293 => { Name => 'VerticalMultiSelectorPlaybackMode', PrintConv => { 0 => 'Image Scroll L/R', 1 => 'Image Scroll Up/Down' }, Unknown => 1}, # CSf3-j
9938             295 => { Name => 'MovieFunc3Button', PrintConv => \%buttonsZ9}, # CSg2-c
9939             335 => { Name => 'LimitAF-AreaModeSelDynamic_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
9940             336 => { Name => 'LimitAF-AreaModeSelDynamic_M', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
9941             337 => { Name => 'LimitAF-AreaModeSelDynamic_L', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
9942             339 => { Name => 'LimitAF-AreaModeSel3DTracking', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
9943             341 => { Name => 'PlaybackFlickUp', PrintConv => \%flicksZ9, Unknown => 1}, # CSf11-a
9944             345 => { Name => 'PlaybackFlickDown', PrintConv => \%flicksZ9, Unknown => 1}, # CSf11-b
9945             349 => { Name => 'ISOStepSize', PrintConv => \%thirdHalfFull }, # CSb1
9946             355 => { Name => 'ReverseFocusRing', PrintConv => { 0 => 'Not Reversed', 1 => 'Reversed' } }, # CSf8
9947             356 => { Name => 'EVFImageFrame', PrintConv => \%offOn, Unknown => 1 }, # CSd14
9948             357 => { Name => 'EVFGrid', PrintConv => \%evfGridsZ9, Unknown => 1 }, # CSd15
9949             359 => { Name => 'VirtualHorizonStyle', PrintConv => {0 => 'Type A (Cockpit)', 1 => 'Type B (Sides)' }, Unknown => 1}, #CSd16
9950             373 => { Name => 'Func4Button', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-e
9951             379 => { Name => 'AudioButton', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-i
9952             381 => { Name => 'QualityButton', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-j
9953             399 => { Name => 'VerticalMultiSelector', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-k
9954             421 => { Name => 'Func1ButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-a
9955             423 => { Name => 'Func2ButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-b
9956             425 => { Name => 'Func3ButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-c
9957             431 => { Name => 'Func4ButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-e
9958             437 => { Name => 'MovieRecordButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-m
9959             439 => { Name => 'VerticalFuncButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-d
9960             441 => { Name => 'AudioButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-g
9961             447 => { Name => 'QualityButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-h
9962             467 => { Name => 'FocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSf4-c
9963             453 => { Name => 'WhiteBalanceButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-i
9964             459 => { Name => 'CommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-k
9965             463 => { Name => 'SubCommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-l
9966             469 => { Name => 'ControlRingResponse', PrintConv => { 0 => 'High', 1 => 'Low' } }, # CSf10
9967             481 => { Name => 'VerticalMovieFuncButton', PrintConv => \%buttonsZ9, Unknown => 1}, # CSg2-d
9968             505 => { Name => 'VerticalMovieAFOnButton', PrintConv => \%buttonsZ9, Unknown => 1}, # CSg2-l
9969             515 => { Name => 'MovieAFAreaMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSg2-e
9970             #521 => { Name => 'MovieLimitAF-AreaModeSelWideAF_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-a
9971             #522 => { Name => 'MovieLimitAF-AreaModeSelWideAF_W', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-b
9972             #523 => { Name => 'MovieLimitAF-AreaModeSelSubjectTrack', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-c
9973             #524 => { Name => 'MovieLimitAFAreaModeSelAuto', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-d
9974             #525 => { Name => 'MovieAutoFocusModeRestrictions', PrintConv => \%focusModeRestrictionsZ9, Unknown => 1}, # CSa9
9975             527 => { Name => 'HDMIViewAssist', PrintConv => \%offOn, Unknown => 1 }, # CSg8
9976             529 => { # CSg9-a
9977             Name => 'ZebraPatternToneRange',
9978             Unknown => 1,
9979             RawConv => '$$self{ZebraPatternToneRange} = $val',
9980             PrintConv => {
9981             0 => 'Off',
9982             1 => 'Highlights',
9983             2 => 'Midtones',
9984             },
9985             },
9986             531 => { Name => 'MovieZebraPattern', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} != 0', PrintConv => {0 => 'Pattern 1', 1 => 'Pattern 2'}, Unknown => 1}, # CSg9-b
9987             533 => { Name => 'MovieHighlightDisplayThreshold', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 1', Unknown => 1 }, # CSg9-c 120-25 when highlights are the selected tone range
9988             535 => { Name => 'MovieMidtoneDisplayValue', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 2', Unknown => 1 }, # CSg9-d1 when midtones are the selected tone range
9989             537 => { Name => 'MovieMidtoneDisplayRange', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 2', PrintConv => '"+/-$val"', Unknown => 1 }, # CSg9-d1 when midtones are the selected tone range
9990             #539 CS g-10 LimitZebraPatternToneRange 0=>'No Restrictions', 1=> 'Highlights', 2=> 'Midtones'
9991             541 => { Name => 'MovieEVFGrid', PrintConv => \%evfGridsZ9, Unknown => 1 }, # CSg11
9992             549 => { Name => 'MovieShutterSpeedLock', PrintConv => \%offOn, Unknown => 1}, # CSg4-a
9993             550 => { Name => 'MovieFocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSf4-c
9994             563 => { Name => 'MatrixMetering', PrintConv => { 0 => 'Face Detection Off', 1 => 'Face Detection On' }, Unknown => 1 }, # CSb4
9995             564 => { Name => 'AF-CFocusDisplay', PrintConv => \%offOn }, # CSa11c
9996             565 => { Name => 'FocusPeakingDisplay', PrintConv => \%offOn, Unknown => 1}, # CSa13a
9997             567 => { # CSb7
9998             Name => 'KeepExposure',
9999             PrintConv => {
10000             0 => 'Off',
10001             1 => 'Shutter Speed',
10002             2 => 'ISO',
10003             },
10004             },
10005             #569 CDd8 (adjust viewfinder/monitor hue, brightness and/or white balance settings) 0=>'No adjustment', 1=>'Adjust'. Related ontrols & adjustments stored in following dozen bytes or so.
10006             585 => { Name => 'StarlightView', PrintConv => \%offOn, Unknown => 1 }, # CSd9
10007             587 => { # CSd10-a
10008             Name => 'EVFWarmDisplayMode',
10009             Unknown => 1,
10010             PrintConv => {
10011             0 => 'Off',
10012             1 => 'Mode 1',
10013             2 => 'Mode 2',
10014             },
10015             },
10016             589 => { # CSd10-b values in range -3 to +3
10017             Name => 'EVFWarmDisplayBrightness',
10018             Format => 'int8s',
10019             Unknown => 1,
10020             },
10021             591 => { #CSd13
10022             Name => 'EVFReleaseIndicator',
10023             Unknown => 1,
10024             PrintConv => {
10025             0 => 'Off',
10026             1 => 'Type A (Dark)',
10027             2 => 'Type B (Border)',
10028             3 => 'Type C (Sides)',
10029             },
10030             },
10031             601 => { Name => 'MovieApertureLock', PrintConv => \%offOn, Unknown => 1 }, # CSg4-b
10032             607 => { Name => 'FlickAdvanceDirection', PrintConv => { 0 => 'Left to Right', 1 => 'Right to Left' }, Unknown => 1 }, # CSf11-c
10033             );
10034              
10035             1; # end
10036              
10037             __END__