exiftool_vendored 12.64.1 → 12.65.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -15,7 +15,7 @@ package Image::ExifTool::NikonCustom;
15
15
  use strict;
16
16
  use vars qw($VERSION @ISA @EXPORT_OK %buttonsZ9);
17
17
 
18
- $VERSION = '1.23';
18
+ $VERSION = '1.24';
19
19
 
20
20
  @ISA = qw(Exporter);
21
21
  @EXPORT_OK = qw(%buttonsZ9);
@@ -117,6 +117,7 @@ my %dialsZ9 = (
117
117
  6 => 'Videos Only',
118
118
  7 => 'Rating',
119
119
  8 => 'Page',
120
+ 9 => 'Skip To First Shot In Series',
120
121
  );
121
122
  my %evfGridsZ9 = (
122
123
  0 => '3x3',
@@ -9665,8 +9666,8 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9665
9666
  },
9666
9667
  );
9667
9668
 
9668
- # Z9 custom settings (ref 1) #base at offset26 + 1035 (firmware 1.0.0)
9669
- %Image::ExifTool::NikonCustom::SettingsZ9 = (
9669
+ # Z8 custom settings (ref 1) #base at offset26 + 1195 (firmware 1.0.0)
9670
+ %Image::ExifTool::NikonCustom::SettingsZ8 = (
9670
9671
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
9671
9672
  WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
9672
9673
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
@@ -9674,7 +9675,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9674
9675
  WRITABLE => 1,
9675
9676
  FIRST_ENTRY => 0,
9676
9677
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
9677
- NOTES => 'Custom settings for the Z9.',
9678
+ NOTES => 'Custom settings for the Z8.',
9678
9679
  1 => {
9679
9680
  Name => 'CustomSettingsBank',
9680
9681
  PrintConv => {
@@ -9722,7 +9723,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9722
9723
  23 => { Name => 'ManualFocusPointIllumination', PrintConv => {0 => 'On During Focus Point Selection Only', 1 => 'On', }, Unknown => 1 }, # CSa11a
9723
9724
  24 => { Name => 'DynamicAreaAFAssist', PrintConv => { 0 => 'Focus Point Only',1 => 'Focus and Surrounding Points',}, Unknown => 1 }, # CSa11b
9724
9725
  25 => { Name => 'AF-AssistIlluminator', PrintConv => \%offOn }, # CSa12
9725
- 26 => { Name => 'ManualFocusRingInAFMode', PrintConv => \%offOn }, # CSa14
9726
+ 26 => { Name => 'ManualFocusRingInAFMode', PrintConv => \%offOn }, # CSa15
9726
9727
  27 => { Name => 'ExposureControlStepSize', PrintConv => \%thirdHalfFull }, # CSb2
9727
9728
  29 => { # CSb3
9728
9729
  Name => 'EasyExposureCompensation',
@@ -9780,7 +9781,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9780
9781
  2 => 'On (Burst Mode)',
9781
9782
  },
9782
9783
  },
9783
- 43 => { # CSc3-a
9784
+ 43 => { # CSc2-a
9784
9785
  Name => 'SelfTimerTime',
9785
9786
  PrintConv => {
9786
9787
  0 => '2 s',
@@ -9789,8 +9790,8 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9789
9790
  3 => '20 s',
9790
9791
  },
9791
9792
  },
9792
- 45 => { Name => 'SelfTimerShotCount', }, # CSc3-b 1-9
9793
- 49 => { # CSc3-c
9793
+ 45 => { Name => 'SelfTimerShotCount', }, # CSc2-b 1-9
9794
+ 49 => { # CSc2-c
9794
9795
  Name => 'SelfTimerShotInterval',
9795
9796
  PrintConv => {
9796
9797
  0 => '0.5 s',
@@ -9799,15 +9800,15 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9799
9800
  3 => '3 s',
9800
9801
  },
9801
9802
  },
9802
- 51 => { Name => 'PlaybackMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-a
9803
- 53 => { Name => 'MenuMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-b
9804
- 55 => { Name => 'ShootingInfoMonitorOffTime',%powerOffDelayTimesZ9 }, # CSc4-c
9805
- 57 => { Name => 'ImageReviewMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-d
9803
+ 51 => { Name => 'PlaybackMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc3-a
9804
+ 53 => { Name => 'MenuMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc3-b
9805
+ 55 => { Name => 'ShootingInfoMonitorOffTime',%powerOffDelayTimesZ9 }, # CSc3-c
9806
+ 57 => { Name => 'ImageReviewMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc3-d
9806
9807
  59 => { Name => 'CLModeShootingSpeed', ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1b
9807
9808
  61 => { # CSd2 # values: 1-200 & 'No Limit'
9808
9809
  Name => 'MaxContinuousRelease',
9809
9810
  Format => 'int16s',
9810
- ValueConv => '($val = -1 ? \'No Limit\' : $val ) ',
9811
+ ValueConv => '($val eq -1 ? \'No Limit\' : $val ) ',
9811
9812
  },
9812
9813
  65 => { Name => 'SyncReleaseMode', PrintConv => { 0 => 'No Sync', 1 => 'Sync' }, Unknown => 1 }, # CSd4
9813
9814
  69 => { Name => 'LimitSelectableImageAreaDX', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-1
@@ -9833,6 +9834,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9833
9834
  3 => 'White',
9834
9835
  },
9835
9836
  },
9837
+
9836
9838
  81 => { Name => 'ContinuousModeDisplay', PrintConv => \%offOn }, # CSd12
9837
9839
  83 => { # CSe1-a Previous cameras reported this with HighSpeedSync indicator appended as '(Auto FP)'. Z9 separated the 2 fields.
9838
9840
  Name => 'FlashSyncSpeed',
@@ -9881,19 +9883,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9881
9883
  },
9882
9884
  97 => { Name => 'AutoBracketOrder', PrintConv => { 0 => '0,-,+',1 => '-,0,+' } }, # CSe7
9883
9885
  99 => { Name => 'Func1Button', %buttonsZ9}, # CSf2-a
9884
- #101 Func1Button submenu: Preview 0 => 'Press To Recall', 1=> 'Hold To Recall' # CSf2-a
9885
- #103 Func1Button submenu: AreaMode 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-a
9886
- #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
9887
- #109 Func1Button submenu: SynchronizedRelease 1=>'Master', 2=>'Remote' # CSf2-a
9888
- #111 Func1Button submenu: Zoom 0=>'Zoom (Low)', 2=>'Zoom (1:1)', 2=>'Zoom (High)' # CSf2-a
9889
- #113 Func1Button & Func1ButtonPlayback submenu: Rating # CSf2-a & CSf3a 0=>'Candidate For Deletion' 6=>''None'
9890
9886
  115 => { Name => 'Func2Button', %buttonsZ9}, # CSf2-b
9891
- #117 Func2Button submenu: Preview 0 => 'Press To Recall', 1=> 'Hold To Recall' # CSf2-b
9892
- #119 Func2Button submenu: AreaMode 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-b
9893
- #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
9894
- #125 Func2Button submenu: SynchronizedRelease 1=>'Master', 2=>'Remote' # CSf2-b
9895
- #127 Func2Button submenu: Zoom 0=>'Zoom (Low)', 2=>'Zoom (1:1)', 2=>'Zoom (High)' # CSf2-b
9896
- #129 Func2Button & Func2ButtonPlayback submenu: Rating # CSf2-b & CSf3b 0=>'Candidate For Deletion' 6=>''None'
9897
9887
  131 => { Name => 'AFOnButton', %buttonsZ9}, # CSf2-c
9898
9888
  143 => { Name => 'SubSelector', %buttonsZ9, Unknown => 1}, # CSf2-g
9899
9889
  155 => { Name => 'AssignMovieRecordButton', %buttonsZ9, Unknown => 1}, # CSf2-m
@@ -9936,6 +9926,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9936
9926
  193 => { Name => 'ReverseIndicators', PrintConv => { 0 => '+ 0 -', 1 => '- 0 +' }, Unknown => 1 }, # CSf7
9937
9927
  195 => { Name => 'MovieFunc1Button', %buttonsZ9}, # CSg2-a
9938
9928
  199 => { Name => 'MovieFunc2Button', %buttonsZ9}, # CSg2-b
9929
+
9939
9930
  203 => { Name => 'MovieAF-OnButton', %buttonsZ9}, # CSg2-f
9940
9931
  215 => { # CSg2-z
9941
9932
  Name => 'MovieLensControlRing',
@@ -9968,54 +9959,27 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9968
9959
  261 => { Name => 'FocusPointPersistence', PrintConv => {0 => 'Auto', 1 => 'Off'} }, # CSa7
9969
9960
  263 => { Name => 'AutoFocusModeRestrictions', PrintConv => \%focusModeRestrictionsZ9, Unknown => 1}, # CSa9
9970
9961
  267 => { Name => 'CHModeShootingSpeed', ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1a
9971
- 269.1 => { Name => 'LimitReleaseModeSelCL', Mask => 0x02, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-a
9972
- 269.2 => { Name => 'LimitReleaseModeSelCH', Mask => 0x04, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-b
9973
- 269.3 => { Name => 'LimitReleaseModeSelC30', Mask => 0x10, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-e
9974
- 269.4 => { Name => 'LimitReleaseModeSelC120', Mask => 0x40, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-c
9975
- 269.5 => { Name => 'LimitReleaseModeSelSelf', Mask => 0x80, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-d
9976
9962
  273 => { Name => 'FlashBurstPriority', PrintConv => { 0 => 'Frame Rate',1 => 'Exposure'}, Unknown => 1 }, # CSe8
9977
- 277 => { Name => 'VerticalFuncButton', %buttonsZ9}, # CSf2-c
9978
- 281 => { Name => 'Func3Button', %buttonsZ9}, # CSf2-c
9979
- 285 => { Name => 'VerticalAFOnButton', %buttonsZ9}, # CSf2-l
9980
- 293 => { Name => 'VerticalMultiSelectorPlaybackMode', PrintConv => { 0 => 'Image Scroll L/R', 1 => 'Image Scroll Up/Down' }, Unknown => 1}, # CSf3-j
9981
- 295 => { Name => 'MovieFunc3Button', %buttonsZ9}, # CSg2-c
9982
9963
  335 => { Name => 'LimitAF-AreaModeSelDynamic_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
9983
9964
  336 => { Name => 'LimitAF-AreaModeSelDynamic_M', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
9984
9965
  337 => { Name => 'LimitAF-AreaModeSelDynamic_L', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
9985
9966
  339 => { Name => 'LimitAF-AreaModeSel3DTracking', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
9986
- 341 => { Name => 'PlaybackFlickUp', PrintConv => \%flicksZ9, Unknown => 1}, # CSf11-a
9987
- 345 => { Name => 'PlaybackFlickDown', PrintConv => \%flicksZ9, Unknown => 1}, # CSf11-b
9967
+ 341 => { Name => 'PlaybackFlickUp', PrintConv => \%flicksZ9, Unknown => 1}, # CSf12-a
9968
+ 345 => { Name => 'PlaybackFlickDown', PrintConv => \%flicksZ9, Unknown => 1}, # CSf12-b
9988
9969
  349 => { Name => 'ISOStepSize', PrintConv => \%thirdHalfFull }, # CSb1
9989
9970
  355 => { Name => 'ReverseFocusRing', PrintConv => { 0 => 'Not Reversed', 1 => 'Reversed' } }, # CSf8
9990
9971
  356 => { Name => 'EVFImageFrame', PrintConv => \%offOn, Unknown => 1 }, # CSd14
9991
9972
  357 => { Name => 'EVFGrid', PrintConv => \%evfGridsZ9, Unknown => 1 }, # CSd15
9992
9973
  359 => { Name => 'VirtualHorizonStyle', PrintConv => {0 => 'Type A (Cockpit)', 1 => 'Type B (Sides)' }, Unknown => 1}, #CSd16
9993
- 373 => { Name => 'Func4Button', %buttonsZ9, Unknown => 1}, # CSf2-e
9994
- 379 => { Name => 'AudioButton', %buttonsZ9, Unknown => 1}, # CSf2-i
9995
- 381 => { Name => 'QualityButton', %buttonsZ9, Unknown => 1}, # CSf2-j
9996
- 399 => { Name => 'VerticalMultiSelector', %buttonsZ9, Unknown => 1}, # CSf2-k
9997
9974
  421 => { Name => 'Func1ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-a
9998
9975
  423 => { Name => 'Func2ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-b
9999
- 425 => { Name => 'Func3ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-c
10000
- 431 => { Name => 'Func4ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-e
10001
9976
  437 => { Name => 'MovieRecordButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-m
10002
- 439 => { Name => 'VerticalFuncButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-d
10003
- 441 => { Name => 'AudioButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-g
10004
- 447 => { Name => 'QualityButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-h
10005
9977
  467 => { Name => 'FocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSf4-c
10006
- 453 => { Name => 'WhiteBalanceButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-i
10007
9978
  459 => { Name => 'CommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-k
10008
9979
  463 => { Name => 'SubCommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-l
10009
9980
  469 => { Name => 'ControlRingResponse', PrintConv => { 0 => 'High', 1 => 'Low' } }, # CSf10
10010
- 481 => { Name => 'VerticalMovieFuncButton', %buttonsZ9, Unknown => 1}, # CSg2-d
10011
- 505 => { Name => 'VerticalMovieAFOnButton', %buttonsZ9, Unknown => 1}, # CSg2-l
9981
+
10012
9982
  515 => { Name => 'MovieAFAreaMode', %buttonsZ9, Unknown => 1}, # CSg2-e
10013
- #521 => { Name => 'MovieLimitAF-AreaModeSelWideAF_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-a
10014
- #522 => { Name => 'MovieLimitAF-AreaModeSelWideAF_W', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-b
10015
- #523 => { Name => 'MovieLimitAF-AreaModeSelSubjectTrack', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-c
10016
- #524 => { Name => 'MovieLimitAFAreaModeSelAuto', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-d
10017
- #525 => { Name => 'MovieAutoFocusModeRestrictions', PrintConv => \%focusModeRestrictionsZ9, Unknown => 1}, # CSa9
10018
- 527 => { Name => 'HDMIViewAssist', PrintConv => \%offOn, Unknown => 1 }, # CSg8
10019
9983
  529 => { # CSg9-a
10020
9984
  Name => 'ZebraPatternToneRange',
10021
9985
  Unknown => 1,
@@ -10026,11 +9990,10 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
10026
9990
  2 => 'Midtones',
10027
9991
  },
10028
9992
  },
10029
- 531 => { Name => 'MovieZebraPattern', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} != 0', PrintConv => {0 => 'Pattern 1', 1 => 'Pattern 2'}, Unknown => 1}, # CSg9-b
10030
- 533 => { Name => 'MovieHighlightDisplayThreshold', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 1', Unknown => 1 }, # CSg9-c 120-25 when highlights are the selected tone range
10031
- 535 => { Name => 'MovieMidtoneDisplayValue', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 2', Unknown => 1 }, # CSg9-d1 when midtones are the selected tone range
10032
- 537 => { Name => 'MovieMidtoneDisplayRange', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 2', PrintConv => '"+/-$val"', Unknown => 1 }, # CSg9-d1 when midtones are the selected tone range
10033
- #539 CS g-10 LimitZebraPatternToneRange 0=>'No Restrictions', 1=> 'Highlights', 2=> 'Midtones'
9993
+ 531 => { Name => 'MovieZebraPattern', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} != 0', PrintConv => {0 => 'Pattern 1', 1 => 'Pattern 2'}, Unknown => 1}, # CSg12-b
9994
+ 533 => { Name => 'MovieHighlightDisplayThreshold', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 1', Unknown => 1 }, # CSg12-c 120-25 when highlights are the selected tone range
9995
+ 535 => { Name => 'MovieMidtoneDisplayValue', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 2', Unknown => 1 }, # CSg12-d1 when midtones are the selected tone range
9996
+ 537 => { Name => 'MovieMidtoneDisplayRange', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 2', PrintConv => '"+/-$val"', Unknown => 1 }, # CSg12-d1 when midtones are the selected tone range
10034
9997
  541 => { Name => 'MovieEVFGrid', PrintConv => \%evfGridsZ9, Unknown => 1 }, # CSg11
10035
9998
  549 => { Name => 'MovieShutterSpeedLock', PrintConv => \%offOn, Unknown => 1}, # CSg4-a
10036
9999
  550 => { Name => 'MovieFocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSf4-c
@@ -10045,7 +10008,6 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
10045
10008
  2 => 'ISO',
10046
10009
  },
10047
10010
  },
10048
- #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.
10049
10011
  585 => { Name => 'StarlightView', PrintConv => \%offOn, Unknown => 1 }, # CSd9
10050
10012
  587 => { # CSd10-a
10051
10013
  Name => 'EVFWarmDisplayMode',
@@ -10073,8 +10035,847 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
10073
10035
  },
10074
10036
  601 => { Name => 'MovieApertureLock', PrintConv => \%offOn, Unknown => 1 }, # CSg4-b
10075
10037
  607 => { Name => 'FlickAdvanceDirection', PrintConv => { 0 => 'Left to Right', 1 => 'Right to Left' }, Unknown => 1 }, # CSf11-c
10038
+ 647 => { #CSd4-a
10039
+ Name => 'PreReleaseBurstLength',
10040
+ PrintConv => {
10041
+ 0 => 'None',
10042
+ 1 => '0.3 Sec',
10043
+ 2 => '0.5 Sec',
10044
+ 3 => '1 Sec',
10045
+ },
10046
+ },
10047
+ 649 => { #CSd4-b
10048
+ Name => 'PostReleaseBurstLength',
10049
+ PrintConv => {
10050
+ 0 => '1 Sec',
10051
+ 1 => '2 Sec',
10052
+ 2 => '3 Sec',
10053
+ 3 => 'Max',
10054
+ },
10055
+ },
10056
+ 681 => { Name => 'ViewModeShowEffectsOfSettings', PrintConv => { 0=>'Always', 1=> 'Only When Flash Not Used'}, Unknown => 1 }, #CS8-a
10057
+ 683 => { Name => 'DispButton', %buttonsZ9}, #CSf2
10076
10058
  );
10077
10059
 
10060
+ # Z9 custom settings (ref 1) #base at offset26 + 1035 (firmware 1.0.0)
10061
+ %Image::ExifTool::NikonCustom::SettingsZ9 = (
10062
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
10063
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
10064
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
10065
+ DATAMEMBER => [ 185, 529 ],
10066
+ WRITABLE => 1,
10067
+ FIRST_ENTRY => 0,
10068
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
10069
+ NOTES => 'Custom settings for the Z9.',
10070
+ 1 => {
10071
+ Name => 'CustomSettingsBank',
10072
+ PrintConv => {
10073
+ 0 => 'A',
10074
+ 1 => 'B',
10075
+ 2 => 'C',
10076
+ 3 => 'D',
10077
+ },
10078
+ },
10079
+ 3 => { # CSa1
10080
+ Name => 'AF-CPrioritySelection',
10081
+ PrintConv => {
10082
+ 0 => 'Release',
10083
+ 1 => 'Release + Focus',
10084
+ 3 => 'Focus',
10085
+ },
10086
+ },
10087
+ 5 => { Name => 'AF-SPrioritySelection', PrintConv => {0 => 'Release',1 => 'Focus'}}, #CSa2
10088
+ 7 => { # CSa3-a #when AFAreaMode is 3D-tracking, blocked shot response will be 3, regardless of this setting
10089
+ Name => 'BlockShotAFResponse',
10090
+ PrintConv => {
10091
+ 1 => '1 (Quick)',
10092
+ 2 => '2',
10093
+ 3 => '3 (Normal)',
10094
+ 4 => '4',
10095
+ 5 => '5 (Delayed)',
10096
+ },
10097
+ },
10098
+ 11 => {Name => 'AFPointSel',PrintConv => { 0 => 'Use All',1 => 'Use Half' }}, # CSa4
10099
+ 13 => { # CSa5
10100
+ Name => 'StoreByOrientation',
10101
+ PrintConv => {
10102
+ 0 => 'Off',
10103
+ 1 => 'Focus Point',
10104
+ 2 => 'Focus Point and AF-area mode',
10105
+ },
10106
+ },
10107
+ 15 => { Name => 'AFActivation', PrintConv => {0 => 'AF-On Only', 1 => 'Shutter/AF-On'}}, # CSa6-a
10108
+ 16 => { Name => 'AF-OnOutOfFocusRelease', PrintConv => {0 => 'Disable', 1 => 'Enable'}, Unknown => 1}, # CSa6-b
10109
+ 17 => { Name => 'LimitAF-AreaModeSelPinpoint', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
10110
+ 19 => { Name => 'LimitAF-AreaModeSelWideAF_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
10111
+ 20 => { Name => 'LimitAF-AreaModeSelWideAF_L', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
10112
+ 21 => { Name => 'LimitAFAreaModeSelAuto', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8 #left out hypen to retain compatibility with tag name in NikonSettings
10113
+ 22 => { Name => 'FocusPointWrap', PrintConv => { 0 => 'No Wrap', 1 => 'Wrap' }, Unknown => 1 }, # CSa10
10114
+ 23 => { Name => 'ManualFocusPointIllumination', PrintConv => {0 => 'On During Focus Point Selection Only', 1 => 'On', }, Unknown => 1 }, # CSa11a
10115
+ 24 => { Name => 'DynamicAreaAFAssist', PrintConv => { 0 => 'Focus Point Only',1 => 'Focus and Surrounding Points',}, Unknown => 1 }, # CSa11b
10116
+ 25 => { Name => 'AF-AssistIlluminator', PrintConv => \%offOn }, # CSa12
10117
+ 26 => { Name => 'ManualFocusRingInAFMode', PrintConv => \%offOn }, # CSa14
10118
+ 27 => { Name => 'ExposureControlStepSize', PrintConv => \%thirdHalfFull }, # CSb2
10119
+ 29 => { # CSb3
10120
+ Name => 'EasyExposureCompensation',
10121
+ PrintConv => {
10122
+ 0 => 'Off',
10123
+ 1 => 'On',
10124
+ 2 => 'On (auto reset)',
10125
+ },
10126
+ },
10127
+ 31 => { # CSb5
10128
+ Name => 'CenterWeightedAreaSize',
10129
+ PrintConv => {
10130
+ 0 => '8 mm',
10131
+ 1 => '12 mm',
10132
+ 4 => 'Average',
10133
+ },
10134
+ },
10135
+ 33 => { # CSb6-a
10136
+ Name => 'FineTuneOptMatrixMetering',
10137
+ Format => 'int8s',
10138
+ ValueConv => '$val / 6',
10139
+ ValueConvInv => 'int($val*6)',
10140
+ PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
10141
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
10142
+ },
10143
+ 35 => { # CSb6-b
10144
+ Name => 'FineTuneOptCenterWeighted',
10145
+ Format => 'int8s',
10146
+ ValueConv => '$val / 6',
10147
+ ValueConvInv => 'int($val*6)',
10148
+ PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
10149
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
10150
+ },
10151
+ 37 => { # CSb6-c
10152
+ Name => 'FineTuneOptSpotMetering',
10153
+ Format => 'int8s',
10154
+ ValueConv => '$val / 6',
10155
+ ValueConvInv => 'int($val*6)',
10156
+ PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
10157
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
10158
+ },
10159
+ 39 => { # CSb6-d
10160
+ Name => 'FineTuneOptHighlightWeighted',
10161
+ Format => 'int8s',
10162
+ ValueConv => '$val / 6',
10163
+ ValueConvInv => 'int($val*6)',
10164
+ PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
10165
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
10166
+ },
10167
+ 41 => { # CSc1
10168
+ Name => 'ShutterReleaseButtonAE-L',
10169
+ PrintConv => {
10170
+ 0 => 'Off',
10171
+ 1 => 'On (Half Press)',
10172
+ 2 => 'On (Burst Mode)',
10173
+ },
10174
+ },
10175
+ 43 => { # CSc3-a
10176
+ Name => 'SelfTimerTime',
10177
+ PrintConv => {
10178
+ 0 => '2 s',
10179
+ 1 => '5 s',
10180
+ 2 => '10 s',
10181
+ 3 => '20 s',
10182
+ },
10183
+ },
10184
+ 45 => { Name => 'SelfTimerShotCount', }, # CSc3-b 1-9
10185
+ 49 => { # CSc3-c
10186
+ Name => 'SelfTimerShotInterval',
10187
+ PrintConv => {
10188
+ 0 => '0.5 s',
10189
+ 1 => '1 s',
10190
+ 2 => '2 s',
10191
+ 3 => '3 s',
10192
+ },
10193
+ },
10194
+ 51 => { Name => 'PlaybackMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-a
10195
+ 53 => { Name => 'MenuMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-b
10196
+ 55 => { Name => 'ShootingInfoMonitorOffTime',%powerOffDelayTimesZ9 }, # CSc4-c
10197
+ 57 => { Name => 'ImageReviewMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-d
10198
+ 59 => { Name => 'CLModeShootingSpeed', ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1b
10199
+ 61 => { # CSd2 # values: 1-200 & 'No Limit'
10200
+ Name => 'MaxContinuousRelease',
10201
+ Format => 'int16s',
10202
+ ValueConv => '($val eq -1 ? \'No Limit\' : $val ) ',
10203
+ },
10204
+ 65 => { Name => 'SyncReleaseMode', PrintConv => { 0 => 'No Sync', 1 => 'Sync' }, Unknown => 1 }, # CSd4
10205
+ 69 => { Name => 'LimitSelectableImageAreaDX', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-1
10206
+ 70 => { Name => 'LimitSelectableImageArea1To1', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-2
10207
+ 71 => { Name => 'LimitSelectableImageArea16To9', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-3
10208
+ 72 => { Name => 'FileNumberSequence', PrintConv => \%offOn }, # CSd7
10209
+ 73 => { #CSa13b
10210
+ Name => 'FocusPeakingLevel',
10211
+ Unknown => 1,
10212
+ PrintConv => {
10213
+ 0 => 'High Sensitivity',
10214
+ 1 => 'Standard Sensitivity',
10215
+ 2 => 'Low Sensitivity',
10216
+ },
10217
+ },
10218
+ 75 => { #CSa13c
10219
+ Name => 'FocusPeakingHighlightColor',
10220
+ Unknown => 1,
10221
+ PrintConv => {
10222
+ 0 => 'Red',
10223
+ 1 => 'Yellow',
10224
+ 2 => 'Blue',
10225
+ 3 => 'White',
10226
+ },
10227
+ },
10228
+ 81 => { Name => 'ContinuousModeDisplay', PrintConv => \%offOn }, # CSd12
10229
+ 83 => { # CSe1-a Previous cameras reported this with HighSpeedSync indicator appended as '(Auto FP)'. Z9 separated the 2 fields.
10230
+ Name => 'FlashSyncSpeed',
10231
+ ValueConv => '($val-144)/8',
10232
+ PrintConv => {
10233
+ 0 => '1/60 s',
10234
+ 1 => '1/80 s',
10235
+ 2 => '1/100 s',
10236
+ 3 => '1/125 s',
10237
+ 4 => '1/160 s',
10238
+ 5 => '1/200 s',
10239
+ 6 => '1/250 s',
10240
+ },
10241
+ },
10242
+ 85 => { Name => 'HighSpeedSync', PrintConv => \%offOn }, # CSe1-b
10243
+ 87 => { # CSe2
10244
+ Name => 'FlashShutterSpeed',
10245
+ ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to accomodate 4 new values?
10246
+ PrintConv => {
10247
+ 0 => '1 s',
10248
+ 1 => '1/2 s',
10249
+ 2 => '1/4 s',
10250
+ 3 => '1/8 s',
10251
+ 4 => '1/15 s',
10252
+ 5 => '1/30 s',
10253
+ 6 => '1/60 s',
10254
+ 7 => '30 s',
10255
+ 8 => '15 s',
10256
+ 9 => '8 s',
10257
+ 10 => '4 s',
10258
+ 11 => '2 s',
10259
+ },
10260
+ },
10261
+ 89 => { Name => 'FlashExposureCompArea', PrintConv => { 0 => 'Entire Frame', 1 => 'Background Only' } }, # CSe3
10262
+ 91 => { Name => 'AutoFlashISOSensitivity', PrintConv => { 0 => 'Subject and Background',1 => 'Subject Only'} }, # CSe4
10263
+ 93 => { Name => 'ModelingFlash', PrintConv => \%offOn }, # CSe5
10264
+ 95 => { # CSe6
10265
+ Name => 'AutoBracketModeM',
10266
+ PrintConv => {
10267
+ 0 => 'Flash/Speed',
10268
+ 1 => 'Flash/Speed/Aperture',
10269
+ 2 => 'Flash/Aperture',
10270
+ 3 => 'Flash Only',
10271
+ 4 => 'Flash/ISO',
10272
+ },
10273
+ },
10274
+ 97 => { Name => 'AutoBracketOrder', PrintConv => { 0 => '0,-,+',1 => '-,0,+' } }, # CSe7
10275
+ 99 => { Name => 'Func1Button', %buttonsZ9}, # CSf2-a
10276
+ #101 Func1Button submenu: Preview 0 => 'Press To Recall', 1=> 'Hold To Recall' # CSf2-a
10277
+ #103 Func1Button submenu: AreaMode 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-a
10278
+ #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
10279
+ #109 Func1Button submenu: SynchronizedRelease 1=>'Master', 2=>'Remote' # CSf2-a
10280
+ #111 Func1Button submenu: Zoom 0=>'Zoom (Low)', 2=>'Zoom (1:1)', 2=>'Zoom (High)' # CSf2-a
10281
+ #113 Func1Button & Func1ButtonPlayback submenu: Rating # CSf2-a & CSf3a 0=>'Candidate For Deletion' 6=>''None'
10282
+ 115 => { Name => 'Func2Button', %buttonsZ9}, # CSf2-b
10283
+ #117 Func2Button submenu: Preview 0 => 'Press To Recall', 1=> 'Hold To Recall' # CSf2-b
10284
+ #119 Func2Button submenu: AreaMode 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-b
10285
+ #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
10286
+ #125 Func2Button submenu: SynchronizedRelease 1=>'Master', 2=>'Remote' # CSf2-b
10287
+ #127 Func2Button submenu: Zoom 0=>'Zoom (Low)', 2=>'Zoom (1:1)', 2=>'Zoom (High)' # CSf2-b
10288
+ #129 Func2Button & Func2ButtonPlayback submenu: Rating # CSf2-b & CSf3b 0=>'Candidate For Deletion' 6=>''None'
10289
+ 131 => { Name => 'AFOnButton', %buttonsZ9}, # CSf2-c
10290
+ 143 => { Name => 'SubSelector', %buttonsZ9, Unknown => 1}, # CSf2-g
10291
+ 155 => { Name => 'AssignMovieRecordButton', %buttonsZ9, Unknown => 1}, # CSf2-m
10292
+ 159 => { Name => 'LensFunc1Button', %buttonsZ9}, # CSf2-o
10293
+ 167 => { Name => 'LensFunc2Button', %buttonsZ9}, # CSf2-p
10294
+ 173 => { # CSf2-q
10295
+ Name => 'LensControlRing',
10296
+ PrintConv => {
10297
+ 0 => 'None (Disabled)',
10298
+ 1 => 'Focus (M/A)',
10299
+ 2 => 'ISO Sensitivity',
10300
+ 3 => 'Exposure Compensation',
10301
+ 4 => 'Aperture',
10302
+ },
10303
+ },
10304
+ 175 => { Name => 'MultiSelectorShootMode', %buttonsZ9}, # CSf2-h called the OK button in camera, tag name retained for compatibility
10305
+ 179 => { Name => 'MultiSelectorPlaybackMode', %buttonsZ9}, # CSf3f
10306
+ 183 => { Name => 'ShutterSpeedLock', PrintConv => \%offOn }, # CSf4-a
10307
+ 184 => { Name => 'ApertureLock', PrintConv => \%offOn }, # CSf4-b
10308
+ 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
10309
+ Name => 'CmdDialsReverseRotExposureComp',
10310
+ RawConv => '$$self{CmdDialsReverseRotExposureComp} = $val',
10311
+ Hidden => 1,
10312
+ },
10313
+ 186 => [{ # CSf5-a (continued from above)
10314
+ Name => 'CmdDialsReverseRotation',
10315
+ Condition => '$$self{CmdDialsReverseRotExposureComp} == 0',
10316
+ PrintConv => {
10317
+ 0 => 'No',
10318
+ 1 => 'Shutter Speed & Aperture',
10319
+ },
10320
+ },{
10321
+ Name => 'CmdDialsReverseRotation',
10322
+ PrintConv => {
10323
+ 0 => 'Exposure Compensation',
10324
+ 1 => 'Exposure Compensation, Shutter Speed & Aperture',
10325
+ },
10326
+ }],
10327
+ 191 => { Name => 'UseDialWithoutHold', PrintConv => \%offOn, Unknown => 1 }, # CSf6
10328
+ 193 => { Name => 'ReverseIndicators', PrintConv => { 0 => '+ 0 -', 1 => '- 0 +' }, Unknown => 1 }, # CSf7
10329
+ 195 => { Name => 'MovieFunc1Button', %buttonsZ9}, # CSg2-a
10330
+ 199 => { Name => 'MovieFunc2Button', %buttonsZ9}, # CSg2-b
10331
+ 203 => { Name => 'MovieAF-OnButton', %buttonsZ9}, # CSg2-f
10332
+ 207 => { Name => 'MovieMultiSelector', %buttonsZ9, Unknown => 1}, # CSg2-h
10333
+ 215 => { # CSg2-z
10334
+ Name => 'MovieLensControlRing',
10335
+ PrintConv => {
10336
+ 0 => 'None (Disabled)',
10337
+ 2 => 'ISO Sensitivity',
10338
+ 3 => 'Exposure Compensation',
10339
+ 4 => 'Power Aperture',
10340
+ 5 => 'Hi-Res Zoom',
10341
+ },
10342
+ },
10343
+ 221 => { Name => 'MovieAFSpeed', ValueConv => '$val - 5', ValueConvInv => '$val + 5' }, # CSg6-a
10344
+ 223 => { Name => 'MovieAFSpeedApply', PrintConv => {0 => 'Always', 1 => 'Only During Recording'},}, # CSg6-b
10345
+ 225 => { # CSg7
10346
+ Name => 'MovieAFTrackingSensitivity',
10347
+ PrintConv => {
10348
+ 0 => '1 (High)',
10349
+ 1 => '2',
10350
+ 2 => '3',
10351
+ 3 => '4 (Normal)',
10352
+ 4 => '5',
10353
+ 5 => '6',
10354
+ 6 => '7 (Low)',
10355
+ },
10356
+ },
10357
+ 257 => { Name => 'LCDIllumination', PrintConv => \%offOn, Unknown => 1 }, # CSd11
10358
+ 258 => { Name => 'ExtendedShutterSpeeds', PrintConv => \%offOn }, # CSd5
10359
+ 259 => { Name => 'SubjectMotion', PrintConv => {0 => 'Erratic', 1 => 'Steady'} }, # CSa3-b
10360
+ 261 => { Name => 'FocusPointPersistence', PrintConv => {0 => 'Auto', 1 => 'Off'} }, # CSa7
10361
+ 263 => { Name => 'AutoFocusModeRestrictions', PrintConv => \%focusModeRestrictionsZ9, Unknown => 1}, # CSa9
10362
+ 267 => { Name => 'CHModeShootingSpeed', ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1a
10363
+ 269.1 => { Name => 'LimitReleaseModeSelCL', Mask => 0x02, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-a
10364
+ 269.2 => { Name => 'LimitReleaseModeSelCH', Mask => 0x04, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-b
10365
+ 269.3 => { Name => 'LimitReleaseModeSelC30', Mask => 0x10, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-e
10366
+ 269.4 => { Name => 'LimitReleaseModeSelC120', Mask => 0x40, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-c
10367
+ 269.5 => { Name => 'LimitReleaseModeSelSelf', Mask => 0x80, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-d
10368
+ 273 => { Name => 'FlashBurstPriority', PrintConv => { 0 => 'Frame Rate',1 => 'Exposure'}, Unknown => 1 }, # CSe8
10369
+ 277 => { Name => 'VerticalFuncButton', %buttonsZ9}, # CSf2-c
10370
+ 281 => { Name => 'Func3Button', %buttonsZ9}, # CSf2-c
10371
+ 285 => { Name => 'VerticalAFOnButton', %buttonsZ9}, # CSf2-l
10372
+ 293 => { Name => 'VerticalMultiSelectorPlaybackMode', PrintConv => { 0 => 'Image Scroll L/R', 1 => 'Image Scroll Up/Down' }, Unknown => 1}, # CSf3-j
10373
+ 295 => { Name => 'MovieFunc3Button', %buttonsZ9}, # CSg2-c
10374
+ 335 => { Name => 'LimitAF-AreaModeSelDynamic_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
10375
+ 336 => { Name => 'LimitAF-AreaModeSelDynamic_M', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
10376
+ 337 => { Name => 'LimitAF-AreaModeSelDynamic_L', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
10377
+ 339 => { Name => 'LimitAF-AreaModeSel3DTracking', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
10378
+ 341 => { Name => 'PlaybackFlickUp', PrintConv => \%flicksZ9, Unknown => 1}, # CSf11-a
10379
+ 345 => { Name => 'PlaybackFlickDown', PrintConv => \%flicksZ9, Unknown => 1}, # CSf11-b
10380
+ 349 => { Name => 'ISOStepSize', PrintConv => \%thirdHalfFull }, # CSb1
10381
+ 355 => { Name => 'ReverseFocusRing', PrintConv => { 0 => 'Not Reversed', 1 => 'Reversed' } }, # CSf8
10382
+ 356 => { Name => 'EVFImageFrame', PrintConv => \%offOn, Unknown => 1 }, # CSd14
10383
+ 357 => { Name => 'EVFGrid', PrintConv => \%evfGridsZ9, Unknown => 1 }, # CSd15
10384
+ 359 => { Name => 'VirtualHorizonStyle', PrintConv => {0 => 'Type A (Cockpit)', 1 => 'Type B (Sides)' }, Unknown => 1}, #CSd16
10385
+ 373 => { Name => 'Func4Button', %buttonsZ9, Unknown => 1}, # CSf2-e
10386
+ 379 => { Name => 'AudioButton', %buttonsZ9, Unknown => 1}, # CSf2-i
10387
+ 381 => { Name => 'QualityButton', %buttonsZ9, Unknown => 1}, # CSf2-j
10388
+ 399 => { Name => 'VerticalMultiSelector', %buttonsZ9, Unknown => 1}, # CSf2-k
10389
+ 421 => { Name => 'Func1ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-a
10390
+ 423 => { Name => 'Func2ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-b
10391
+ 425 => { Name => 'Func3ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-c
10392
+ 431 => { Name => 'Func4ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-e
10393
+ 437 => { Name => 'MovieRecordButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-m
10394
+ 439 => { Name => 'VerticalFuncButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-d
10395
+ 441 => { Name => 'AudioButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-g
10396
+ 447 => { Name => 'QualityButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-h
10397
+ 467 => { Name => 'FocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSf4-c
10398
+ 453 => { Name => 'WhiteBalanceButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-i
10399
+ 459 => { Name => 'CommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-k
10400
+ 463 => { Name => 'SubCommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-l
10401
+ 469 => { Name => 'ControlRingResponse', PrintConv => { 0 => 'High', 1 => 'Low' } }, # CSf10
10402
+ 481 => { Name => 'VerticalMovieFuncButton', %buttonsZ9, Unknown => 1}, # CSg2-d
10403
+ 505 => { Name => 'VerticalMovieAFOnButton', %buttonsZ9, Unknown => 1}, # CSg2-l
10404
+ 515 => { Name => 'MovieAFAreaMode', %buttonsZ9, Unknown => 1}, # CSg2-e
10405
+ #521 => { Name => 'MovieLimitAF-AreaModeSelWideAF_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-a
10406
+ #522 => { Name => 'MovieLimitAF-AreaModeSelWideAF_W', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-b
10407
+ #523 => { Name => 'MovieLimitAF-AreaModeSelSubjectTrack', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-c
10408
+ #524 => { Name => 'MovieLimitAFAreaModeSelAuto', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-d
10409
+ #525 => { Name => 'MovieAutoFocusModeRestrictions', PrintConv => \%focusModeRestrictionsZ9, Unknown => 1}, # CSa9
10410
+ 527 => { Name => 'HDMIViewAssist', PrintConv => \%offOn, Unknown => 1 }, # CSg8
10411
+ 529 => { # CSg9-a
10412
+ Name => 'ZebraPatternToneRange',
10413
+ Unknown => 1,
10414
+ RawConv => '$$self{ZebraPatternToneRange} = $val',
10415
+ PrintConv => {
10416
+ 0 => 'Off',
10417
+ 1 => 'Highlights',
10418
+ 2 => 'Midtones',
10419
+ },
10420
+ },
10421
+ 531 => { Name => 'MovieZebraPattern', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} != 0', PrintConv => {0 => 'Pattern 1', 1 => 'Pattern 2'}, Unknown => 1}, # CSg9-b
10422
+ 533 => { Name => 'MovieHighlightDisplayThreshold', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 1', Unknown => 1 }, # CSg9-c 120-25 when highlights are the selected tone range
10423
+ 535 => { Name => 'MovieMidtoneDisplayValue', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 2', Unknown => 1 }, # CSg9-d1 when midtones are the selected tone range
10424
+ 537 => { Name => 'MovieMidtoneDisplayRange', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 2', PrintConv => '"+/-$val"', Unknown => 1 }, # CSg9-d1 when midtones are the selected tone range
10425
+ #539 CS g-10 LimitZebraPatternToneRange 0=>'No Restrictions', 1=> 'Highlights', 2=> 'Midtones'
10426
+ 541 => { Name => 'MovieEVFGrid', PrintConv => \%evfGridsZ9, Unknown => 1 }, # CSg11
10427
+ 549 => { Name => 'MovieShutterSpeedLock', PrintConv => \%offOn, Unknown => 1}, # CSg4-a
10428
+ 550 => { Name => 'MovieFocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSf4-c
10429
+ 563 => { Name => 'MatrixMetering', PrintConv => { 0 => 'Face Detection Off', 1 => 'Face Detection On' }, Unknown => 1 }, # CSb4
10430
+ 564 => { Name => 'AF-CFocusDisplay', PrintConv => \%offOn }, # CSa11c
10431
+ 565 => { Name => 'FocusPeakingDisplay', PrintConv => \%offOn, Unknown => 1}, # CSa13a
10432
+ 567 => { # CSb7
10433
+ Name => 'KeepExposure',
10434
+ PrintConv => {
10435
+ 0 => 'Off',
10436
+ 1 => 'Shutter Speed',
10437
+ 2 => 'ISO',
10438
+ },
10439
+ },
10440
+ #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.
10441
+ 585 => { Name => 'StarlightView', PrintConv => \%offOn, Unknown => 1 }, # CSd9
10442
+ 587 => { # CSd10-a
10443
+ Name => 'EVFWarmDisplayMode',
10444
+ Unknown => 1,
10445
+ PrintConv => {
10446
+ 0 => 'Off',
10447
+ 1 => 'Mode 1',
10448
+ 2 => 'Mode 2',
10449
+ },
10450
+ },
10451
+ 589 => { # CSd10-b values in range -3 to +3
10452
+ Name => 'EVFWarmDisplayBrightness',
10453
+ Format => 'int8s',
10454
+ Unknown => 1,
10455
+ },
10456
+ 591 => { #CSd13
10457
+ Name => 'EVFReleaseIndicator',
10458
+ Unknown => 1,
10459
+ PrintConv => {
10460
+ 0 => 'Off',
10461
+ 1 => 'Type A (Dark)',
10462
+ 2 => 'Type B (Border)',
10463
+ 3 => 'Type C (Sides)',
10464
+ },
10465
+ },
10466
+ 601 => { Name => 'MovieApertureLock', PrintConv => \%offOn, Unknown => 1 }, # CSg4-b
10467
+ 607 => { Name => 'FlickAdvanceDirection', PrintConv => { 0 => 'Left to Right', 1 => 'Right to Left' }, Unknown => 1 }, # CSf11-c
10468
+ );
10469
+
10470
+ # Z9 custom settings (ref 1) #base at offset26 + 1095 (firmware 4.0)
10471
+ %Image::ExifTool::NikonCustom::SettingsZ9v4 = (
10472
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
10473
+ WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
10474
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
10475
+ DATAMEMBER => [ 185, 553 ],
10476
+ WRITABLE => 1,
10477
+ FIRST_ENTRY => 0,
10478
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
10479
+ NOTES => 'Custom settings for the Z9.',
10480
+ 1 => {
10481
+ Name => 'CustomSettingsBank',
10482
+ PrintConv => {
10483
+ 0 => 'A',
10484
+ 1 => 'B',
10485
+ 2 => 'C',
10486
+ 3 => 'D',
10487
+ },
10488
+ },
10489
+ 3 => { # CSa1
10490
+ Name => 'AF-CPrioritySelection',
10491
+ PrintConv => {
10492
+ 0 => 'Release',
10493
+ 1 => 'Release + Focus',
10494
+ 3 => 'Focus',
10495
+ },
10496
+ },
10497
+ 5 => { Name => 'AF-SPrioritySelection', PrintConv => {0 => 'Release',1 => 'Focus'}}, #CSa2
10498
+ 7 => { # CSa3-a #when AFAreaMode is 3D-tracking, blocked shot response will be 3, regardless of this setting
10499
+ Name => 'BlockShotAFResponse',
10500
+ PrintConv => {
10501
+ 1 => '1 (Quick)',
10502
+ 2 => '2',
10503
+ 3 => '3 (Normal)',
10504
+ 4 => '4',
10505
+ 5 => '5 (Delayed)',
10506
+ },
10507
+ },
10508
+ 11 => {Name => 'AFPointSel',PrintConv => { 0 => 'Use All',1 => 'Use Half' }}, # CSa4
10509
+ 13 => { # CSa5
10510
+ Name => 'StoreByOrientation',
10511
+ PrintConv => {
10512
+ 0 => 'Off',
10513
+ 1 => 'Focus Point',
10514
+ 2 => 'Focus Point and AF-area mode',
10515
+ },
10516
+ },
10517
+ 15 => { Name => 'AFActivation', PrintConv => {0 => 'AF-On Only', 1 => 'Shutter/AF-On'}}, # CSa6-a
10518
+ 16 => { Name => 'AF-OnOutOfFocusRelease', PrintConv => {0 => 'Disable', 1 => 'Enable'}, Unknown => 1}, # CSa6-b
10519
+ 17 => { Name => 'LimitAF-AreaModeSelPinpoint', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
10520
+ 19 => { Name => 'LimitAF-AreaModeSelWideAF_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
10521
+ 20 => { Name => 'LimitAF-AreaModeSelWideAF_L', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
10522
+ 21 => { Name => 'LimitAFAreaModeSelAuto', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8 #left out hypen to retain compatibility with tag name in NikonSettings
10523
+ 22 => { Name => 'FocusPointWrap', PrintConv => { 0 => 'No Wrap', 1 => 'Wrap' }, Unknown => 1 }, # CSa10
10524
+ 23 => { Name => 'ManualFocusPointIllumination', PrintConv => {0 => 'On During Focus Point Selection Only', 1 => 'On', }, Unknown => 1 }, # CSa11a
10525
+ 24 => { Name => 'DynamicAreaAFAssist', PrintConv => { 0 => 'Focus Point Only',1 => 'Focus and Surrounding Points',}, Unknown => 1 }, # CSa11b
10526
+ 25 => { Name => 'AF-AssistIlluminator', PrintConv => \%offOn }, # CSa12
10527
+ 26 => { Name => 'ManualFocusRingInAFMode', PrintConv => \%offOn }, # CSa14
10528
+ 27 => { Name => 'ExposureControlStepSize', PrintConv => \%thirdHalfFull }, # CSb2
10529
+ 29 => { # CSb3
10530
+ Name => 'EasyExposureCompensation',
10531
+ PrintConv => {
10532
+ 0 => 'Off',
10533
+ 1 => 'On',
10534
+ 2 => 'On (auto reset)',
10535
+ },
10536
+ },
10537
+ 31 => { # CSb5
10538
+ Name => 'CenterWeightedAreaSize',
10539
+ PrintConv => {
10540
+ 0 => '8 mm',
10541
+ 1 => '12 mm',
10542
+ 4 => 'Average',
10543
+ },
10544
+ },
10545
+ 33 => { # CSb6-a
10546
+ Name => 'FineTuneOptMatrixMetering',
10547
+ Format => 'int8s',
10548
+ ValueConv => '$val / 6',
10549
+ ValueConvInv => 'int($val*6)',
10550
+ PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
10551
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
10552
+ },
10553
+ 35 => { # CSb6-b
10554
+ Name => 'FineTuneOptCenterWeighted',
10555
+ Format => 'int8s',
10556
+ ValueConv => '$val / 6',
10557
+ ValueConvInv => 'int($val*6)',
10558
+ PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
10559
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
10560
+ },
10561
+ 37 => { # CSb6-c
10562
+ Name => 'FineTuneOptSpotMetering',
10563
+ Format => 'int8s',
10564
+ ValueConv => '$val / 6',
10565
+ ValueConvInv => 'int($val*6)',
10566
+ PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
10567
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
10568
+ },
10569
+ 39 => { # CSb6-d
10570
+ Name => 'FineTuneOptHighlightWeighted',
10571
+ Format => 'int8s',
10572
+ ValueConv => '$val / 6',
10573
+ ValueConvInv => 'int($val*6)',
10574
+ PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
10575
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
10576
+ },
10577
+ 41 => { # CSc1
10578
+ Name => 'ShutterReleaseButtonAE-L',
10579
+ PrintConv => {
10580
+ 0 => 'Off',
10581
+ 1 => 'On (Half Press)',
10582
+ 2 => 'On (Burst Mode)',
10583
+ },
10584
+ },
10585
+ 43 => { # CSc3-a
10586
+ Name => 'SelfTimerTime',
10587
+ PrintConv => {
10588
+ 0 => '2 s',
10589
+ 1 => '5 s',
10590
+ 2 => '10 s',
10591
+ 3 => '20 s',
10592
+ },
10593
+ },
10594
+ 45 => { Name => 'SelfTimerShotCount', }, # CSc3-b 1-9
10595
+ 49 => { # CSc3-c
10596
+ Name => 'SelfTimerShotInterval',
10597
+ PrintConv => {
10598
+ 0 => '0.5 s',
10599
+ 1 => '1 s',
10600
+ 2 => '2 s',
10601
+ 3 => '3 s',
10602
+ },
10603
+ },
10604
+ 51 => { Name => 'PlaybackMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-a
10605
+ 53 => { Name => 'MenuMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-b
10606
+ 55 => { Name => 'ShootingInfoMonitorOffTime',%powerOffDelayTimesZ9 }, # CSc4-c
10607
+ 57 => { Name => 'ImageReviewMonitorOffTime', %powerOffDelayTimesZ9 }, # CSc4-d
10608
+ 59 => { Name => 'CLModeShootingSpeed', ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1b
10609
+ 61 => { # CSd2 # values: 1-200 & 'No Limit'
10610
+ Name => 'MaxContinuousRelease',
10611
+ Format => 'int16s',
10612
+ ValueConv => '($val eq -1 ? \'No Limit\' : $val ) ',
10613
+ },
10614
+ 65 => { Name => 'SyncReleaseMode', PrintConv => { 0 => 'No Sync', 1 => 'Sync' }, Unknown => 1 }, # CSd4
10615
+ 69 => { Name => 'LimitSelectableImageAreaDX', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-1
10616
+ 70 => { Name => 'LimitSelectableImageArea1To1', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-2
10617
+ 71 => { Name => 'LimitSelectableImageArea16To9', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-3
10618
+ 72 => { Name => 'FileNumberSequence', PrintConv => \%offOn }, # CSd7
10619
+ 73 => { #CSa13b
10620
+ Name => 'FocusPeakingLevel',
10621
+ Unknown => 1,
10622
+ PrintConv => {
10623
+ 0 => 'High Sensitivity',
10624
+ 1 => 'Standard Sensitivity',
10625
+ 2 => 'Low Sensitivity',
10626
+ },
10627
+ },
10628
+ 75 => { #CSa13c
10629
+ Name => 'FocusPeakingHighlightColor',
10630
+ Unknown => 1,
10631
+ PrintConv => {
10632
+ 0 => 'Red',
10633
+ 1 => 'Yellow',
10634
+ 2 => 'Blue',
10635
+ 3 => 'White',
10636
+ },
10637
+ },
10638
+ 81 => { Name => 'ContinuousModeDisplay', PrintConv => \%offOn }, # CSd12
10639
+ 83 => { # CSe1-a Previous cameras reported this with HighSpeedSync indicator appended as '(Auto FP)'. Z9 separated the 2 fields.
10640
+ Name => 'FlashSyncSpeed',
10641
+ ValueConv => '($val-144)/8',
10642
+ PrintConv => {
10643
+ 0 => '1/60 s',
10644
+ 1 => '1/80 s',
10645
+ 2 => '1/100 s',
10646
+ 3 => '1/125 s',
10647
+ 4 => '1/160 s',
10648
+ 5 => '1/200 s',
10649
+ 6 => '1/250 s',
10650
+ },
10651
+ },
10652
+ 85 => { Name => 'HighSpeedSync', PrintConv => \%offOn }, # CSe1-b
10653
+ 87 => { # CSe2
10654
+ Name => 'FlashShutterSpeed',
10655
+ ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to accomodate 4 new values?
10656
+ PrintConv => {
10657
+ 0 => '1 s',
10658
+ 1 => '1/2 s',
10659
+ 2 => '1/4 s',
10660
+ 3 => '1/8 s',
10661
+ 4 => '1/15 s',
10662
+ 5 => '1/30 s',
10663
+ 6 => '1/60 s',
10664
+ 7 => '30 s',
10665
+ 8 => '15 s',
10666
+ 9 => '8 s',
10667
+ 10 => '4 s',
10668
+ 11 => '2 s',
10669
+ },
10670
+ },
10671
+ 89 => { Name => 'FlashExposureCompArea', PrintConv => { 0 => 'Entire Frame', 1 => 'Background Only' } }, # CSe3
10672
+ 91 => { Name => 'AutoFlashISOSensitivity', PrintConv => { 0 => 'Subject and Background',1 => 'Subject Only'} }, # CSe4
10673
+ 93 => { Name => 'ModelingFlash', PrintConv => \%offOn }, # CSe5
10674
+ 95 => { # CSe6
10675
+ Name => 'AutoBracketModeM',
10676
+ PrintConv => {
10677
+ 0 => 'Flash/Speed',
10678
+ 1 => 'Flash/Speed/Aperture',
10679
+ 2 => 'Flash/Aperture',
10680
+ 3 => 'Flash Only',
10681
+ 4 => 'Flash/ISO',
10682
+ },
10683
+ },
10684
+ 97 => { Name => 'AutoBracketOrder', PrintConv => { 0 => '0,-,+',1 => '-,0,+' } }, # CSe7
10685
+ 99 => { Name => 'Func1Button', %buttonsZ9}, # CSf2-a
10686
+ #101 Func1Button submenu: Preview 0 => 'Press To Recall', 1=> 'Hold To Recall' # CSf2-a
10687
+ #103 Func1Button submenu: AreaMode 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-a
10688
+ #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
10689
+ #109 Func1Button submenu: SynchronizedRelease 1=>'Master', 2=>'Remote' # CSf2-a
10690
+ #111 Func1Button submenu: Zoom 0=>'Zoom (Low)', 2=>'Zoom (1:1)', 2=>'Zoom (High)' # CSf2-a
10691
+ #113 Func1Button & Func1ButtonPlayback submenu: Rating # CSf2-a & CSf3a 0=>'Candidate For Deletion' 6=>''None'
10692
+ 115 => { Name => 'Func2Button', %buttonsZ9}, # CSf2-b
10693
+ #117 Func2Button submenu: Preview 0 => 'Press To Recall', 1=> 'Hold To Recall' # CSf2-b
10694
+ #119 Func2Button submenu: AreaMode 0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a # CSf2-b
10695
+ #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
10696
+ #125 Func2Button submenu: SynchronizedRelease 1=>'Master', 2=>'Remote' # CSf2-b
10697
+ #127 Func2Button submenu: Zoom 0=>'Zoom (Low)', 2=>'Zoom (1:1)', 2=>'Zoom (High)' # CSf2-b
10698
+ #129 Func2Button & Func2ButtonPlayback submenu: Rating # CSf2-b & CSf3b 0=>'Candidate For Deletion' 6=>''None'
10699
+ 131 => { Name => 'AFOnButton', %buttonsZ9}, # CSf2-c
10700
+ 143 => { Name => 'SubSelector', %buttonsZ9, Unknown => 1}, # CSf2-g
10701
+ 155 => { Name => 'AssignMovieRecordButton', %buttonsZ9, Unknown => 1}, # CSf2-m
10702
+ 159 => { Name => 'LensFunc1Button', %buttonsZ9}, # CSf2-o
10703
+ 167 => { Name => 'LensFunc2Button', %buttonsZ9}, # CSf2-p
10704
+ 173 => { # CSf2-q
10705
+ Name => 'LensControlRing',
10706
+ PrintConv => {
10707
+ 0 => 'None (Disabled)',
10708
+ 1 => 'Focus (M/A)',
10709
+ 2 => 'ISO Sensitivity',
10710
+ 3 => 'Exposure Compensation',
10711
+ 4 => 'Aperture',
10712
+ },
10713
+ },
10714
+ 175 => { Name => 'MultiSelectorShootMode', %buttonsZ9}, # CSf2-h called the OK button in camera, tag name retained for compatibility
10715
+ 179 => { Name => 'MultiSelectorPlaybackMode', %buttonsZ9}, # CSf3f
10716
+ 183 => { Name => 'ShutterSpeedLock', PrintConv => \%offOn }, # CSf4-a
10717
+ 184 => { Name => 'ApertureLock', PrintConv => \%offOn }, # CSf4-b
10718
+ 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
10719
+ Name => 'CmdDialsReverseRotExposureComp',
10720
+ RawConv => '$$self{CmdDialsReverseRotExposureComp} = $val',
10721
+ Hidden => 1,
10722
+ },
10723
+ 186 => [{ # CSf5-a (continued from above)
10724
+ Name => 'CmdDialsReverseRotation',
10725
+ Condition => '$$self{CmdDialsReverseRotExposureComp} == 0',
10726
+ PrintConv => {
10727
+ 0 => 'No',
10728
+ 1 => 'Shutter Speed & Aperture',
10729
+ },
10730
+ },{
10731
+ Name => 'CmdDialsReverseRotation',
10732
+ PrintConv => {
10733
+ 0 => 'Exposure Compensation',
10734
+ 1 => 'Exposure Compensation, Shutter Speed & Aperture',
10735
+ },
10736
+ }],
10737
+ 191 => { Name => 'UseDialWithoutHold', PrintConv => \%offOn, Unknown => 1 }, # CSf6
10738
+ 193 => { Name => 'ReverseIndicators', PrintConv => { 0 => '+ 0 -', 1 => '- 0 +' }, Unknown => 1 }, # CSf7
10739
+ 195 => { Name => 'MovieFunc1Button', %buttonsZ9}, # CSg2-a
10740
+ 199 => { Name => 'MovieFunc2Button', %buttonsZ9}, # CSg2-b
10741
+ 203 => { Name => 'MovieAF-OnButton', %buttonsZ9}, # CSg2-f
10742
+ 207 => { Name => 'MovieMultiSelector', %buttonsZ9, Unknown => 1}, # CSg2-h
10743
+ 215 => { # CSg2-z
10744
+ Name => 'MovieLensControlRing',
10745
+ PrintConv => {
10746
+ 0 => 'None (Disabled)',
10747
+ 2 => 'ISO Sensitivity',
10748
+ 3 => 'Exposure Compensation',
10749
+ 4 => 'Power Aperture',
10750
+ 5 => 'Hi-Res Zoom',
10751
+ },
10752
+ },
10753
+ 221 => { Name => 'MovieAFSpeed', ValueConv => '$val - 5', ValueConvInv => '$val + 5' }, # CSg6-a
10754
+ 223 => { Name => 'MovieAFSpeedApply', PrintConv => {0 => 'Always', 1 => 'Only During Recording'},}, # CSg6-b
10755
+ 225 => { # CSg7
10756
+ Name => 'MovieAFTrackingSensitivity',
10757
+ PrintConv => {
10758
+ 0 => '1 (High)',
10759
+ 1 => '2',
10760
+ 2 => '3',
10761
+ 3 => '4 (Normal)',
10762
+ 4 => '5',
10763
+ 5 => '6',
10764
+ 6 => '7 (Low)',
10765
+ },
10766
+ },
10767
+ 279 => { Name => 'LCDIllumination', PrintConv => \%offOn, Unknown => 1 }, # CSd11
10768
+ 280 => { Name => 'ExtendedShutterSpeeds', PrintConv => \%offOn }, # CSd5
10769
+ 281 => { Name => 'SubjectMotion', PrintConv => {0 => 'Erratic', 1 => 'Steady'} }, # CSa3-b
10770
+ 283 => { Name => 'FocusPointPersistence', PrintConv => {0 => 'Auto', 1 => 'Off'} }, # CSa7
10771
+ 285 => { Name => 'AutoFocusModeRestrictions', PrintConv => \%focusModeRestrictionsZ9, Unknown => 1}, # CSa9
10772
+ 289 => { Name => 'CHModeShootingSpeed', ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1a
10773
+ 293.1 => { Name => 'LimitReleaseModeSelCL', Mask => 0x02, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-a
10774
+ 293.2 => { Name => 'LimitReleaseModeSelCH', Mask => 0x04, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-b
10775
+ 293.3 => { Name => 'LimitReleaseModeSelC30', Mask => 0x10, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-e
10776
+ 293.4 => { Name => 'LimitReleaseModeSelC120', Mask => 0x40, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-c
10777
+ 293.5 => { Name => 'LimitReleaseModeSelSelf', Mask => 0x80, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-d
10778
+ 297 => { Name => 'FlashBurstPriority', PrintConv => { 0 => 'Frame Rate',1 => 'Exposure'}, Unknown => 1 }, # CSe8
10779
+ 301 => { Name => 'VerticalFuncButton', %buttonsZ9}, # CSf2-c
10780
+ 305 => { Name => 'Func3Button', %buttonsZ9}, # CSf2-c
10781
+ 309 => { Name => 'VerticalAFOnButton', %buttonsZ9}, # CSf2-l
10782
+ 317 => { Name => 'VerticalMultiSelectorPlaybackMode', PrintConv => { 0 => 'Image Scroll L/R', 1 => 'Image Scroll Up/Down' }, Unknown => 1}, # CSf3-j
10783
+ 319 => { Name => 'MovieFunc3Button', %buttonsZ9}, # CSg2-c
10784
+ 359 => { Name => 'LimitAF-AreaModeSelDynamic_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
10785
+ 360 => { Name => 'LimitAF-AreaModeSelDynamic_M', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
10786
+ 361 => { Name => 'LimitAF-AreaModeSelDynamic_L', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
10787
+ 363 => { Name => 'LimitAF-AreaModeSel3DTracking', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
10788
+ 365 => { Name => 'PlaybackFlickUp', PrintConv => \%flicksZ9, Unknown => 1}, # CSf11-a
10789
+ 369 => { Name => 'PlaybackFlickDown', PrintConv => \%flicksZ9, Unknown => 1}, # CSf11-b
10790
+ 373 => { Name => 'ISOStepSize', PrintConv => \%thirdHalfFull }, # CSb1
10791
+ 379 => { Name => 'ReverseFocusRing', PrintConv => { 0 => 'Not Reversed', 1 => 'Reversed' } }, # CSf8
10792
+ 380 => { Name => 'EVFImageFrame', PrintConv => \%offOn, Unknown => 1 }, # CSd14
10793
+ 381 => { Name => 'EVFGrid', PrintConv => \%evfGridsZ9, Unknown => 1 }, # CSd15
10794
+ 383 => { Name => 'VirtualHorizonStyle', PrintConv => {0 => 'Type A (Cockpit)', 1 => 'Type B (Sides)' }, Unknown => 1}, #CSd16
10795
+ 397 => { Name => 'Func4Button', %buttonsZ9, Unknown => 1}, # CSf2-e
10796
+ 403 => { Name => 'AudioButton', %buttonsZ9, Unknown => 1}, # CSf2-i
10797
+ 405 => { Name => 'QualityButton', %buttonsZ9, Unknown => 1}, # CSf2-j
10798
+ 423 => { Name => 'VerticalMultiSelector', %buttonsZ9, Unknown => 1}, # CSf2-k
10799
+ 445 => { Name => 'Func1ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-a
10800
+ 447 => { Name => 'Func2ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-b
10801
+ 449 => { Name => 'Func3ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-c
10802
+ 455 => { Name => 'Func4ButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-e
10803
+ 461 => { Name => 'MovieRecordButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-m
10804
+ 463 => { Name => 'VerticalFuncButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-d
10805
+ 465 => { Name => 'AudioButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-g
10806
+ 471 => { Name => 'QualityButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-h
10807
+ 477 => { Name => 'WhiteBalanceButtonPlaybackMode', %buttonsZ9, Unknown => 1}, # CSf3-i
10808
+ 483 => { Name => 'CommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-k
10809
+ 487 => { Name => 'SubCommandDialPlaybackMode', PrintConv => \%dialsZ9, Unknown => 1}, # CSf3-l
10810
+ 491 => { Name => 'FocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSf4-c
10811
+ 493 => { Name => 'ControlRingResponse', PrintConv => { 0 => 'High', 1 => 'Low' } }, # CSf10
10812
+ 505 => { Name => 'VerticalMovieFuncButton', %buttonsZ9, Unknown => 1}, # CSg2-d
10813
+ 529 => { Name => 'VerticalMovieAFOnButton', %buttonsZ9, Unknown => 1}, # CSg2-l
10814
+ 539 => { Name => 'MovieAFAreaMode', %buttonsZ9, Unknown => 1}, # CSg2-e
10815
+ #545 => { Name => 'MovieLimitAF-AreaModeSelWideAF_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-a
10816
+ #546 => { Name => 'MovieLimitAF-AreaModeSelWideAF_W', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-b
10817
+ #547 => { Name => 'MovieLimitAF-AreaModeSelSubjectTrack', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-c
10818
+ #548 => { Name => 'MovieLimitAFAreaModeSelAuto', PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-d
10819
+ #549 => { Name => 'MovieAutoFocusModeRestrictions', PrintConv => \%focusModeRestrictionsZ9, Unknown => 1}, # CSa9
10820
+ 551 => { Name => 'HDMIViewAssist', PrintConv => \%offOn, Unknown => 1 }, # CSg12
10821
+ 553 => { # CSg13-a
10822
+ Name => 'ZebraPatternToneRange',
10823
+ Unknown => 1,
10824
+ RawConv => '$$self{ZebraPatternToneRange} = $val',
10825
+ PrintConv => {
10826
+ 0 => 'Off',
10827
+ 1 => 'Highlights',
10828
+ 2 => 'Midtones',
10829
+ },
10830
+ },
10831
+ 555 => { Name => 'MovieZebraPattern', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} != 0', PrintConv => {0 => 'Pattern 1', 1 => 'Pattern 2'}, Unknown => 1}, # CSg13-b
10832
+ 557 => { Name => 'MovieHighlightDisplayThreshold', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 1', Unknown => 1 }, # CSg13-c 120-25 when highlights are the selected tone range
10833
+ 559 => { Name => 'MovieMidtoneDisplayValue', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 2', Unknown => 1 }, # CSg13-d1 when midtones are the selected tone range
10834
+ 561 => { Name => 'MovieMidtoneDisplayRange', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 2', PrintConv => '"+/-$val"', Unknown => 1 }, # CSg13-d2 when midtones are the selected tone range
10835
+ #563 CS g-14 LimitZebraPatternToneRange 0=>'No Restrictions', 1=> 'Highlights', 2=> 'Midtones'
10836
+ 565 => { Name => 'MovieEVFGrid', PrintConv => \%evfGridsZ9, Unknown => 1 }, # CSg15
10837
+ 573 => { Name => 'MovieShutterSpeedLock', PrintConv => \%offOn, Unknown => 1}, # CSg3-a
10838
+ 574 => { Name => 'MovieFocusPointLock', PrintConv => \%offOn, Unknown => 1}, # CSg3-c
10839
+ 587 => { Name => 'MatrixMetering', PrintConv => { 0 => 'Face Detection Off', 1 => 'Face Detection On' }, Unknown => 1 }, # CSb4
10840
+ 588 => { Name => 'AF-CFocusDisplay', PrintConv => \%offOn }, # CSa11c
10841
+ 589 => { Name => 'FocusPeakingDisplay', PrintConv => \%offOn, Unknown => 1}, # CSa13a
10842
+ 591 => { # CSb7
10843
+ Name => 'KeepExposure',
10844
+ PrintConv => {
10845
+ 0 => 'Off',
10846
+ 1 => 'Shutter Speed',
10847
+ 2 => 'ISO',
10848
+ },
10849
+ },
10850
+ #593 CSd (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.
10851
+ 609 => { Name => 'StarlightView', PrintConv => \%offOn, Unknown => 1 }, # CSd11
10852
+ 611 => { # CSd12-a
10853
+ Name => 'EVFWarmDisplayMode',
10854
+ Unknown => 1,
10855
+ PrintConv => {
10856
+ 0 => 'Off',
10857
+ 1 => 'Mode 1',
10858
+ 2 => 'Mode 2',
10859
+ },
10860
+ },
10861
+ 613 => { # CSd12-b values in range -3 to +3
10862
+ Name => 'EVFWarmDisplayBrightness',
10863
+ Format => 'int8s',
10864
+ Unknown => 1,
10865
+ },
10866
+ 615 => { #CSd15
10867
+ Name => 'EVFReleaseIndicator',
10868
+ Unknown => 1,
10869
+ PrintConv => {
10870
+ 0 => 'Off',
10871
+ 1 => 'Type A (Dark)',
10872
+ 2 => 'Type B (Border)',
10873
+ 3 => 'Type C (Sides)',
10874
+ },
10875
+ },
10876
+ 625 => { Name => 'MovieApertureLock', PrintConv => \%offOn, Unknown => 1 }, # CSg3-b
10877
+ 631 => { Name => 'FlickAdvanceDirection', PrintConv => { 0 => 'Left to Right', 1 => 'Right to Left' }, Unknown => 1 }, # CSf13-c
10878
+ );
10078
10879
  1; # end
10079
10880
 
10080
10881
  __END__