Mode dials and Playback pushbuttons

  • 201 Replies
  • 26145 Views
  • Publish
    Mode dials and Playback pushbuttons
    « on: 23 / February / 2009, 05:52:59 »
    Advertisements
    Some time ago, Zeno followed-up on the work of Jeff666 and posted details of overriding the mode dial.
    This works on many cameras, but not all.
    For example, on my A620 the dial modes are in the highest nibble of physw[1].
    They cannot be forced to other values.
    The highest nibble of associated memory location 0xc0220204 is always 'f'.

    Does anyone know where the dial-mode values can be overriden ?

    A number of cameras have playback pushbuttons and it seems the physw[] values indicate the playback state after the firmware has responded to the button.
    Again, you cannot switch to playback by overriding the physw[] values.

    Any ideas where the playback buttons can be 'pressed' ?

    There are a number of possible functions in the string names (also for dial-mode switching) but I am not sure they are implimented in every camera.
    Others, like 'Rec2PB'  may cause the camera to crash.


    David

    *

    Offline ewavr

    • ****
    • 1057
    • A710IS
  • Publish
    Re: Mode dials and Playback pushbuttons
    « Reply #1 on: 23 / February / 2009, 10:06:18 »
    Maybe PostLogicalEventForNotPowerType(int event, int unknown) can be useful here.

    In my a710:

    PostLogicalEventForNotPowerType(0x1061 /*ModeDialToPlay*/, 0)  switch camera to playback mode
    PostLogicalEventForNotPowerType(0x1065 /*ModeDialToRec*/, 0)  switch camera to record mode
    PostLogicalEventForNotPowerType(0x1005 /*PressOffButton*/, 0) shutdowns camera
    PostLogicalEventForNotPowerType(0x1081 /*ConnectVideoCable*/, 0) emulates inserting of AV cable
    PostLogicalEventForNotPowerType(0x1082 /*DisconnectVideoCable*/, 0)  emulates releasing of AV cable
    PostLogicalEventForNotPowerType(0x849 /*PressDriveButton*/, 0) changes drive mode (no such button on a710!)

    Unfortunately, changing mode dial with this way is impossible - it returns to previous mode  :(.

    Mode dial change example ('rotate' dial to movie move):

                 int old=*(unsigned int*)0x722C;
                 PostLogicalEventForNotPowerType(0x105B/*ModeDialToMovie*/,0);
                 msleep(10);
                 *(unsigned int*)0x722C=old;

    "Magic" variable @0x722C is found using memory browser, but it present, for example,  is sub_FFD9CE8C ("_DecideModeDial").
    « Last Edit: 23 / February / 2009, 10:36:49 by ewavr »

    *

    Offline fudgey

    • *****
    • 1705
    • a570is
  • Publish
    Re: Mode dials and Playback pushbuttons
    « Reply #2 on: 23 / February / 2009, 14:53:36 »
    Wow, now this seems interesting. I wonder is PostLogicalEventToUI will help getting the GUI up to date after overriding some of these things..or is it even necessary (haven't tried anything yet)?

    ..below is a message list from a570 100e firmware, a lot to try there...

    000010c0 00000002 DisconnectDTerminal
    000010bf 00000002 ConnectDTerminal
    000010be 00000001 UnpressPcPlayButton
    000010bd 00000000 PressPcPlayButton
    000010bc 00000001 UnpressRemotePcPlayButton
    000010bb 00000000 PressRemotePcPlayButton
    000010ba 00000002 CloseLensCoverHalf
    000010b9 00000002 OpenLensCoverHalf
    000010b8 00000002 CloseLensCover
    000010b7 00000002 OpenLensCover
    000010b6 00000002 DetachCradle
    000010b5 00000002 AttachCradle
    000010b4 00000002 WriteEnableMedia
    000010b3 00000002 WriteProtectMedia
    000010b2 00000002 RemoveMedia
    000010b1 00000002 InsertMedia
    000010b0 00000002 CloseBatMediaCover
    000010af 00000002 OpenBatMediaCover
    000010ae 00000002 CloseMediaCover
    000010ad 00000002 OpenMediaCover
    000010ac 00000002 RemoveBattery
    000010ab 00000002 InsertBattery
    000010aa 00000002 CloseBatteryCover
    000010a9 00000002 OpenBatteryCover
    000010a8 00000002 UnmountExtFlash
    000010a7 00000002 MountExtFlash
    000010a6 00000002 DisconnectUSBCable
    000010a5 00000002 ConnectUSBCable
    000010a4 00000002 DisconnectACCable
    000010a3 00000002 ConnectACCable
    000010a2 00000002 DisconnectVideoCable
    000010a1 00000002 ConnectVideoCable
    00001075 00000002 ModeDialToKidsAndPets
    00001074 00000002 ModeDialToParty
    00001073 00000002 ModeDialToNightSnap
    00001072 00000002 RotateIsoDialLeft
    00001071 00000002 RotateIsoDialRight
    00001070 00000002 IsoDialToMaxSpd
    0000106f 00000002 IsoDialTo800
    0000106e 00000002 IsoDialTo400
    0000106d 00000002 IsoDialTo200
    0000106c 00000002 IsoDialTo100
    0000106b 00000002 IsoDialToMinSpd
    0000106a 00000002 IsoDialToHighAuto
    00001069 00000002 IsoDialToAuto
    00001068 00000002 ModeDialToSport
    00001065 00000002 ModeDialToRec
    00001064 00000002 ModeDialToFunColor
    00001063 00000002 ModeDialToSCN
    00001062 00000002 ModeDialToCamera
    00001061 00000002 ModeDialToPlay
    00001060 00000002 ModeDialToSlowShutter
    0000105f 00000002 ModeDialToFastShutter
    0000105e 00000002 ModeDialToC
    0000105d 00000002 ModeDialToC2
    0000105c 00000002 ModeDialToC1
    0000105b 00000002 ModeDialToMovie
    0000105a 00000002 ModeDialToStitchAssist
    00001059 00000002 ModeDialToNightScene
    00001058 00000002 ModeDialToLandscape
    00001057 00000002 ModeDialToPortrait
    00001056 00000002 ModeDialToAuto
    00001055 00000002 ModeDialToP
    00001054 00000002 ModeDialToTv
    00001053 00000002 ModeDialToAv
    00001052 00000002 ModeDialToM
    0000100c 00000002 ModeLeverStillRec
    0000100b 00000002 ModeLeverMovieRec
    0000100a 00000002 ModeLeverPlay
    00001009 00000001 UnpressPowerButton
    00001008 00000000 PressPowerButton
    00001007 00000002 ChangeMainDial
    00001006 00000001 UnpressOffButton
    00001005 00000000 PressOffButton
    00001004 00000001 UnpressPBButton
    00001003 00000000 PressPBButton
    00001002 00000001 UnpressRecButton
    00001001 00000000 PressRecButton
    000009a6 00000001 UnpressMovieButton
    000009a5 00000000 PressMovieButton
    000009a4 00000001 UnpressSwTwo
    000009a3 00000000 PressSwTwo
    000009a2 00000001 UnpressSwOne
    000009a1 00000000 PressSwOne
    00000976 00000003 PressMenuAndSetAndEdit
    00000975 00000003 PressDispAndLeft
    00000974 00000003 PressSw2AndMenu
    00000973 00000002 RepeatLeftButton
    00000972 00000002 RepeatRightButton
    00000971 00000002 RepeatDownButton
    00000970 00000002 RepeatUpButton
    0000096f 00000003 HoldSetAFFrameButton
    0000096e 00000001 UnpressSetAFFrameButton
    0000096d 00000000 PressSetAFFrameButton
    0000096c 00000001 UnpressWideReductionButton
    0000096b 00000000 PressWideReductionButton
    0000096a 00000001 UnpressTeleMagButton
    00000969 00000000 PressTeleMagButton
    00000968 00000001 UnpressMFSoundButton
    00000967 00000000 PressMFSoundButton
    00000966 00000001 UnpressFlashMultiButton
    00000965 00000000 PressFlashMultiButton
    00000964 00000001 UnpressMacroJumpButton
    00000963 00000000 PressMacroJumpButton
    00000962 00000001 UnpressAEFELockEraseButton
    00000961 00000000 PressAEFELockEraseButton
    00000960 00000001 UnpressDownWBButton
    0000095f 00000000 PressDownWBButton
    0000095e 00000001 UnpressUpExpButton
    0000095d 00000000 PressUpExpButton
    0000095c 00000003 PressMenuAndSetAndPs
    0000095b 00000003 PressPsAndLeft
    0000095a 00000003 PressPsAndRight
    00000959 00000003 PressSw1AndAF
    00000958 00000003 PressDispAndRightButton
    00000957 00000003 PressSw1AndShortcut
    00000956 00000003 PressSw2AndWide
    00000955 00000003 PressSw2AndTele
    00000954 00000003 PressSw2AndSound
    00000953 00000003 PressSw2AndFunc
    00000952 00000003 PressSw2AndDisp
    00000951 00000003 PressSw2AndErase
    00000950 00000003 PressSw2AndSet
    0000094f 00000003 PressSw1AndMF
    0000094e 00000003 PressSw1AndAELock
    0000094d 00000003 PressSw1AndAE
    0000094c 00000003 PressMFAndDown
    0000094b 00000003 PressMFAndUp
    0000094a 00000003 PressSetAndPs
    00000949 00000003 PressSetAndWide
    00000948 00000003 PressSetAndTele
    00000947 00000003 PressSetAndDisp
    00000946 00000003 PressSetAndJump
    00000945 00000003 PressSetAndRight
    00000944 00000003 PressSetAndLeft
    00000943 00000003 PressSetAndDown
    00000942 00000003 PressSetAndUp
    00000941 00000003 PressSetAndMenu
    00000916 00000001 UnpressRemoteDpButton
    00000915 00000000 PressRemoteDpButton
    00000914 00000001 UnpressRemoteMenuButton
    00000913 00000000 PressRemoteMenuButton
    00000912 00000001 UnpressRemoteLeftButton
    00000911 00000000 PressRemoteLeftButton
    00000910 00000001 UnpressRemoteRightButton
    0000090f 00000000 PressRemoteRightButton
    0000090e 00000001 UnpressRemoteDownButton
    0000090d 00000000 PressRemoteDownButton
    0000090c 00000001 UnpressRemoteUpButton
    0000090b 00000000 PressRemoteUpButton
    0000090a 00000001 UnpressRemoteSetButton
    00000909 00000000 PressRemoteSetButton
    00000908 00000001 UnpressRemoteReleaseButton
    00000907 00000000 PressRemoteReleaseButton
    00000906 00000001 UnpressRemoteDispButton
    00000905 00000000 PressRemoteDispButton
    00000904 00000001 UnpressRemoteMagnifyButton
    00000903 00000000 PressRemoteMagnifyButton
    00000902 00000001 UnpressRemoteMultiButton
    00000901 00000000 PressRemoteMultiButton
    0000087a 00000001 UnpressEditButton
    00000879 00000000 PressEditButton
    00000878 00000001 UnpressEnjoyButton
    00000877 00000000 PressEnjoyButton
    00000876 00000002 TransitFeatherDown
    00000875 00000002 TransitFeatherUp
    00000874 00000002 TransitFeatherLeft
    00000873 00000002 TransitFeatherRight
    00000872 00000002 UnpressFeatherDownButton
    00000871 00000002 PressFeatherDownButton
    00000870 00000002 UnpressFeatherUpButton
    0000086f 00000002 PressFeatherUpButton
    0000086e 00000002 UnpressFeatherLeftButton
    0000086d 00000002 PressFeatherLeftButton
    0000086c 00000002 UnpressFeatherRightButton
    0000086b 00000002 PressFeatherRightButton
    0000086a 00000001 UnpressDpButton
    00000869 00000000 PressDpButton
    00000868 00000001 UnpressISOButton
    00000867 00000000 PressISOButton
    00000866 00000002 RotateJogDialLeft
    00000865 00000002 RotateJogDialRight
    00000864 00000003 HoldAvExpButton
    00000863 00000001 UnpressAvExpButton
    00000862 00000000 PressAvExpButton
    00000861 00000003 HoldPrintShareButton
    00000860 00000001 UnpressPrintShareButton
    0000085f 00000000 PressPrintShareButton
    0000085e 00000001 UnpressShortcutButton
    0000085d 00000000 PressShortcutButton
    0000085c 00000003 HoldISButton
    0000085b 00000001 UnpressISButton
    0000085a 00000000 PressISButton
    00000859 00000003 HoldAFFrameButton
    00000858 00000001 UnpressAFFrameButton
    00000857 00000000 PressAFFrameButton
    00000856 00000003 HoldSetButton
    00000855 00000001 UnpressSetButton
    00000854 00000000 PressSetButton
    00000853 00000001 UnpressReductionButton
    00000852 00000000 PressReductionButton
    00000851 00000001 UnpressWideButton
    00000850 00000000 PressWideButton
    0000084f 00000001 UnpressMagButton
    0000084e 00000000 PressMagButton
    0000084d 00000001 UnpressTeleButton
    0000084c 00000000 PressTeleButton
    0000084b 00000003 HoldDriveButton
    0000084a 00000001 UnpressDriveButton
    00000849 00000000 PressDriveButton
    00000848 00000001 UnpressMFButton
    00000847 00000000 PressMFButton
    00000846 00000003 HoldSoundButton
    00000845 00000001 UnpressSoundButton
    00000844 00000000 PressSoundButton
    00000843 00000001 UnpressEraseButton
    00000842 00000000 PressEraseButton
    00000841 00000001 UnpressSpotButton
    00000840 00000000 PressSpotButton
    0000083f 00000001 UnpressPonButton
    0000083e 00000000 PressPonButton
    0000083d 00000002 RotateElectronicMainDialLeft
    0000083c 00000002 RotateElectronicMainDialRight
    0000083b 00000003 HoldDispButton
    0000083a 00000001 UnpressDispButton
    00000839 00000000 PressDispButton
    00000838 00000001 UnpressFlashButton
    00000837 00000000 PressFlashButton
    00000836 00000001 UnpressMultiButton
    00000835 00000000 PressMultiButton
    00000834 00000001 UnpressJumpButton
    00000833 00000000 PressJumpButton
    00000832 00000003 HoldMacroButton
    00000831 00000001 UnpressMacroButton
    00000830 00000000 PressMacroButton
    0000082f 00000001 UnpressAEFELockButton
    0000082e 00000000 PressAEFELockButton
    0000082d 00000001 UnpressWBButton
    0000082c 00000000 PressWBButton
    0000082b 00000001 UnpressExpButton
    0000082a 00000000 PressExpButton
    00000829 00000001 UnpressFuncButton
    00000828 00000000 PressFuncButton
    00000827 00000003 HoldMenuButton
    00000826 00000001 UnpressMenuButton
    00000825 00000000 PressMenuButton
    00000824 00000003 HoldDownButton
    00000823 00000001 UnpressDownButton
    00000822 00000000 PressDownButton
    00000821 00000001 UnpressUpButton
    00000820 00000000 PressUpButton
    0000081f 00000001 UnpressLeftButton
    0000081e 00000000 PressLeftButton
    0000081d 00000001 UnpressRightButton
    0000081c 00000000 PressRightButton

    *

    Offline ewavr

    • ****
    • 1057
    • A710IS
  • Publish
    Re: Mode dials and Playback pushbuttons
    « Reply #3 on: 23 / February / 2009, 15:38:55 »
    I wonder is PostLogicalEventToUI will help getting the GUI up to date after overriding some of these things..or is it even necessary (haven't tried anything yet)?

    If we 'rotate' mode dial, GUI is updated automatically (with all visual effects).

    Quote
    ..below is a message list from a570 100e firmware, a lot to try there...

    How you got that list? Using some script? I see some difference between a710 and a570.


  • Publish
    Re: Mode dials and Playback pushbuttons
    « Reply #4 on: 23 / February / 2009, 15:43:47 »
    I see some difference between a710 and a570.

    I also see some the same as the A620.

    What does the second column represent ?

    *

    Offline fudgey

    • *****
    • 1705
    • a570is
  • Publish
    Re: Mode dials and Playback pushbuttons
    « Reply #5 on: 23 / February / 2009, 16:01:28 »
    I just cut&pasted the list of codes and the strings pointed by the list to two files messagestrings.asm and codes.asm from GPL disassembly and then did some shell magic:

    Code: [Select]
    cat messagestrings.asm |
    grep -A 1 '\":' |
    grep -v "\-\-" |
    cut -f 1 |
    sed s/\"/\#/ |
    tr -d '\n' |
    tr '#' '\n' |
    tr ':' ' ' |
    tr -d \" > messagestrings

    ------------------------

    cat codes.asm |
    cut -f 2 |
    sed s/^ffe/\#ffe/ |
    tr '\n' ' ' |
    tr '#' '\n' > messagecodes

    ------------------------

    sort -k 2 messagestrings >strings.sorted
    sort messagecodes > codes.sorted

    paste codes.sorted strings.sorted > codesstrings

    -------------------------

    cat codesstrings |
    tr '\t' ' ' |
    sed s/\ \ \*/\ /g |
    cut -d ' ' -f 2-4 > a570_postcodes.txt

    I have no idea what the other column is, the list just happens to be a list of three values and that's the last one of each. I haven't looked at the code at all...could be number of arguments?

  • Publish
    Re: Mode dials and Playback pushbuttons
    « Reply #6 on: 23 / February / 2009, 16:40:51 »
    Well, I have made two uBasic commands .. 'movie_mode'  and 'record_mode' and a little script that switches to movie mode for five seconds and then returns to record mode   .... except it does not return.

    After exiting the script I am still in movie mode even though the dial is on Manual.

    Do I have to manipulate the 'magic numbers' in some way  ?

    Edit: Well, in movie mode we are already in record mode, as opposed to playback mode.
    So, I tried to make it return to manual mode but it stayed in movie mode.
    « Last Edit: 23 / February / 2009, 17:03:36 by Microfunguy »

    *

    Offline fudgey

    • *****
    • 1705
    • a570is
  • Publish
    Re: Mode dials and Playback pushbuttons
    « Reply #7 on: 23 / February / 2009, 16:57:34 »
    I wonder what happens if you take that other number from the table and stick it as the second argument to PostLogicalEventForNotPowerType()?


    *

    Offline ewavr

    • ****
    • 1057
    • A710IS
  • Publish
    Re: Mode dials and Playback pushbuttons
    « Reply #8 on: 23 / February / 2009, 17:13:31 »
    Here is list for A710 (using IDA's 'array' command):
    Code: [Select]
    PressRightButton, 0x81C, 0
    UnpressRightButton, 0x81D, 1
    PressLeftButton, 0x81E, 0
    UnpressLeftButton, 0x81F, 1
    PressUpButton, 0x820, 0
    UnpressUpButton, 0x821, 1
    PressDownButton, 0x822, 0
    UnpressDownButton, 0x823, 1
    HoldDownButton, 0x824, 3
    PressMenuButton, 0x825, 0
    UnpressMenuButton, 0x826, 1
    HoldMenuButton, 0x827, 3
    PressFuncButton, 0x828, 0
    UnpressFuncButton, 0x829, 1
    PressExpButton, 0x82A, 0
    UnpressExpButton, 0x82B, 1
    PressWBButton, 0x82C, 0
    UnpressWBButton, 0x82D, 1
    PressAEFELockButton, 0x82E, 0
    UnpressAEFELockButton, 0x82F, 1
    PressMacroButton, 0x830, 0
    UnpressMacroButton, 0x831, 1
    HoldMacroButton, 0x832, 3
    PressJumpButton, 0x833, 0
    UnpressJumpButton, 0x834, 1
    PressMultiButton, 0x835, 0
    UnpressMultiButton, 0x836, 1
    PressFlashButton, 0x837, 0
    UnpressFlashButton, 0x838, 1
    PressDispButton, 0x839, 0
    UnpressDispButton, 0x83A, 1
    HoldDispButton, 0x83B, 3
    RotateElectronicMainDialRight, 0x83C, 2
    RotateElectronicMainDialLeft, 0x83D, 2
    PressPonButton, 0x83E, 0
    UnpressPonButton, 0x83F, 1
    PressSpotButton, 0x840, 0
    UnpressSpotButton, 0x841, 1
    PressEraseButton, 0x842, 0
    UnpressEraseButton, 0x843, 1
    PressSoundButton, 0x844, 0
    UnpressSoundButton, 0x845, 1
    HoldSoundButton, 0x846, 3
    PressMFButton, 0x847, 0
    UnpressMFButton, 0x848, 1
    PressDriveButton, 0x849, 0
    UnpressDriveButton, 0x84A, 1
    PressTeleButton, 0x84B, 0
    UnpressTeleButton, 0x84C, 1
    PressMagButton, 0x84D, 0
    UnpressMagButton, 0x84E, 1
    PressWideButton, 0x84F, 0
    UnpressWideButton, 0x850, 1
    PressReductionButton, 0x851, 0
    UnpressReductionButton, 0x852, 1
    PressSetButton, 0x853, 0
    UnpressSetButton, 0x854, 1
    HoldSetButton, 0x855, 3
    PressAFFrameButton, 0x856, 0
    UnpressAFFrameButton, 0x857, 1
    HoldAFFrameButton, 0x858, 3
    PressISButton, 0x859, 0
    UnpressISButton, 0x85A, 1
    HoldISButton, 0x85B, 3
    PressShortcutButton, 0x85C, 0
    UnpressShortcutButton, 0x85D, 1
    PressPrintShareButton, 0x85E, 0
    UnpressPrintShareButton, 0x85F, 1
    HoldPrintShareButton, 0x860, 3
    PressAvExpButton, 0x861, 0
    UnpressAvExpButton, 0x862, 1
    HoldAvExpButton, 0x863, 3
    RotateJogDialRight, 0x864, 2
    RotateJogDialLeft, 0x865, 2
    PressISOButton, 0x866, 0
    UnpressISOButton, 0x867, 1
    PressDpButton, 0x868, 0
    UnpressDpButton, 0x869, 1
    PressFeatherRightButton, 0x86A, 2
    UnpressFeatherRightButton, 0x86B, 2
    PressFeatherLeftButton, 0x86C, 2
    UnpressFeatherLeftButton, 0x86D, 2
    PressFeatherUpButton, 0x86E, 2
    UnpressFeatherUpButton, 0x86F, 2
    PressFeatherDownButton, 0x870, 2
    UnpressFeatherDownButton, 0x871, 2
    TransitFeatherRight, 0x872, 2
    TransitFeatherLeft, 0x873, 2
    TransitFeatherUp, 0x874, 2
    TransitFeatherDown, 0x875, 2
    PressRemoteMultiButton, 0x901, 0
    UnpressRemoteMultiButton, 0x902, 1
    PressRemoteMagnifyButton, 0x903, 0
    UnpressRemoteMagnifyButton, 0x904, 1
    PressRemoteDispButton, 0x905, 0
    UnpressRemoteDispButton, 0x906, 1
    PressRemoteReleaseButton, 0x907, 0
    UnpressRemoteReleaseButton, 0x908, 1
    PressRemoteSetButton, 0x909, 0
    UnpressRemoteSetButton, 0x90A, 1
    PressRemoteUpButton, 0x90B, 0
    UnpressRemoteUpButton, 0x90C, 1
    PressRemoteDownButton, 0x90D, 0
    UnpressRemoteDownButton, 0x90E, 1
    PressRemoteRightButton, 0x90F, 0
    UnpressRemoteRightButton, 0x910, 1
    PressRemoteLeftButton, 0x911, 0
    UnpressRemoteLeftButton, 0x912, 1
    PressRemoteMenuButton, 0x913, 0
    UnpressRemoteMenuButton, 0x914, 1
    PressRemoteDpButton, 0x915, 0
    UnpressRemoteDpButton, 0x916, 1
    PressSetAndMenu, 0x931, 3
    PressSetAndUp, 0x932, 3
    PressSetAndDown, 0x933, 3
    PressSetAndLeft, 0x934, 3
    PressSetAndRight, 0x935, 3
    PressSetAndJump, 0x936, 3
    PressSetAndDisp, 0x937, 3
    PressSetAndTele, 0x938, 3
    PressSetAndWide, 0x939, 3
    PressSetAndPs, 0x93A, 3
    PressMFAndUp, 0x93B, 3
    PressMFAndDown, 0x93C, 3
    PressSw1AndAE, 0x93D, 3
    PressSw1AndAELock, 0x93E, 3
    PressSw1AndMF, 0x93F, 3
    PressSw2AndSet, 0x940, 3
    PressSw2AndErase, 0x941, 3
    PressSw2AndDisp, 0x942, 3
    PressSw2AndFunc, 0x943, 3
    PressSw2AndSound, 0x944, 3
    PressSw2AndTele, 0x945, 3
    PressSw2AndWide, 0x946, 3
    PressSw1AndShortcut, 0x947, 3
    PressDispAndRightButton, 0x948, 3
    PressSw1AndAF, 0x949, 3
    PressPsAndRight, 0x94A, 3
    PressPsAndLeft, 0x94B, 3
    PressMenuAndSetAndPs, 0x94C, 3
    PressUpExpButton, 0x94D, 0
    UnpressUpExpButton, 0x94E, 1
    PressDownWBButton, 0x94F, 0
    UnpressDownWBButton, 0x950, 1
    PressAEFELockEraseButton, 0x951, 0
    UnpressAEFELockEraseButton, 0x952, 1
    PressMacroJumpButton, 0x953, 0
    UnpressMacroJumpButton, 0x954, 1
    PressFlashMultiButton, 0x955, 0
    UnpressFlashMultiButton, 0x956, 1
    PressMFSoundButton, 0x957, 0
    UnpressMFSoundButton, 0x958, 1
    PressTeleMagButton, 0x959, 0
    UnpressTeleMagButton, 0x95A, 1
    PressWideReductionButton, 0x95B, 0
    UnpressWideReductionButton, 0x95C, 1
    PressSetAFFrameButton, 0x95D, 0
    UnpressSetAFFrameButton, 0x95E, 1
    HoldSetAFFrameButton, 0x95F, 3
    RepeatUpButton, 0x960, 2
    RepeatDownButton, 0x961, 2
    RepeatRightButton, 0x962, 2
    RepeatLeftButton, 0x963, 2
    PressSw2AndMenu, 0x964, 3
    PressSwOne, 0x981, 0
    UnpressSwOne, 0x982, 1
    PressSwTwo, 0x983, 0
    UnpressSwTwo, 0x984, 1
    PressMovieButton, 0x985, 0
    UnpressMovieButton, 0x986, 1
    PressRecButton, 0x1001, 0
    UnpressRecButton, 0x1002, 1
    PressPBButton, 0x1003, 0
    UnpressPBButton, 0x1004, 1
    PressOffButton, 0x1005, 0
    UnpressOffButton, 0x1006, 1
    ChangeMainDial, 0x1007, 2
    PressPowerButton, 0x1008, 0
    UnpressPowerButton, 0x1009, 1
    ModeLeverPlay, 0x100A, 2
    ModeLeverMovieRec, 0x100B, 2
    ModeLeverStillRec, 0x100C, 2
    ModeDialToM, 0x1052, 2
    ModeDialToAv, 0x1053, 2
    ModeDialToTv, 0x1054, 2
    ModeDialToP, 0x1055, 2
    ModeDialToAuto, 0x1056, 2
    ModeDialToPortrait, 0x1057, 2
    ModeDialToLandscape, 0x1058, 2
    ModeDialToNightScene, 0x1059, 2
    ModeDialToStitchAssist, 0x105A, 2
    ModeDialToMovie, 0x105B, 2
    ModeDialToC1, 0x105C, 2
    ModeDialToC2, 0x105D, 2
    ModeDialToC, 0x105E, 2
    ModeDialToFastShutter, 0x105F, 2
    ModeDialToSlowShutter, 0x1060, 2
    ModeDialToPlay, 0x1061, 2
    ModeDialToCamera, 0x1062, 2
    ModeDialToSCN, 0x1063, 2
    ModeDialToFunColor, 0x1064, 2
    ModeDialToRec, 0x1065, 2
    ModeDialToSport, 0x1068, 2
    IsoDialToAuto, 0x1069, 2
    IsoDialToHighAuto, 0x106A, 2
    IsoDialToMinSpd, 0x106B, 2
    IsoDialTo100, 0x106C, 2
    IsoDialTo200, 0x106D, 2
    IsoDialTo400, 0x106E, 2
    IsoDialTo800, 0x106F, 2
    IsoDialToMaxSpd, 0x1070, 2
    RotateIsoDialRight, 0x1071, 2
    RotateIsoDialLeft, 0x1072, 2
    ConnectVideoCable, 0x1081, 2
    DisconnectVideoCable, 0x1082, 2
    ConnectACCable, 0x1083, 2
    DisconnectACCable, 0x1084, 2
    ConnectUSBCable, 0x1085, 2
    DisconnectUSBCable, 0x1086, 2
    MountExtFlash, 0x1087, 2
    UnmountExtFlash, 0x1088, 2
    OpenBatteryCover, 0x1089, 2
    CloseBatteryCover, 0x108A, 2
    InsertBattery, 0x108B, 2
    RemoveBattery, 0x108C, 2
    OpenMediaCover, 0x108D, 2
    CloseMediaCover, 0x108E, 2
    OpenBatMediaCover, 0x108F, 2
    CloseBatMediaCover, 0x1090, 2
    InsertMedia, 0x1091, 2
    RemoveMedia, 0x1092, 2
    WriteProtectMedia, 0x1093, 2
    WriteEnableMedia, 0x1094, 2
    AttachCradle, 0x1095, 2
    DetachCradle, 0x1096, 2
    OpenLensCover, 0x1097, 2
    CloseLensCover, 0x1098, 2
    OpenLensCoverHalf, 0x1099, 2
    CloseLensCoverHalf, 0x109A, 2
    PressRemotePcPlayButton, 0x109B, 0
    UnpressRemotePcPlayButton, 0x109C, 1
    PressPcPlayButton, 0x109D, 0
    UnpressPcPlayButton, 0x109E, 1

    Well, I have made two uBasic commands .. 'movie_mode'  and 'record_mode' and a little script that switches to movie mode for five seconds and then returns to record mode   .... except it does not return.
    After exiting the script I am still in movie mode even though the dial is on Manual.
    Do I have to manipulate the 'magic numbers' in some way  ?

    Maybe we must avoid the magic numbers like 0x1056 (using string search?). Now late in the day to think about it  :).

    *

    Offline ewavr

    • ****
    • 1057
    • A710IS
  • Publish
    Re: Mode dials and Playback pushbuttons
    « Reply #9 on: 23 / February / 2009, 17:15:50 »
    I wonder what happens if you take that other number from the table and stick it as the second argument to PostLogicalEventForNotPowerType()?

    I see no difference if second argument is 0, 1, or 2.

    edit: Only for some commands.

       
    « Last Edit: 23 / February / 2009, 17:17:42 by ewavr »

     

    Related Topics