I don't think you want to change the key reading routine, if it is global. Following the pointed-to index sounds like a better approach. I checked some snes debugger emulators because this sounds like a fun introduction to SNES, but didn't yet find a nice tool for me. My first try would be checking a realtime ram view to find the index location and then set a write breakpoint there.
edit: Well, Geiger's debugger has an acceptable quality level, now that I could download that microsoft thing it needs. So, for fun, I did the first part. I don't really care if you know all this already, of course. RAM locations as shown in the tool (I don't know snes arch):
7E0193 & 7E0194 - changes with item page (effect, not logical state)
7E1B23 - vertical location of cursor wrt screen
7E1B22 - horizontal location of cursor
7E1B1A - vertical page offset from beginning
and that should be all. I just moved the cursor in the item menu. Hopefully relevant to the topic.
edit2: just for fun, some analyzing:
From a bit higher routine level, routine at 01:82C0 handles key reading, methinks. Disassembly:
$01/9FC7 20 C0 82 JSR $82C0 [$01:82C0] A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FCA A5 01 LDA $01 [$00:0101] A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FCC 29 02 AND #$02 A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FCE F0 0B BEQ $0B [$9FDB] A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FD0 AD 22 1B LDA $1B22 [$7E:1B22] A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FD3 1A INC A A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FD4 29 01 AND #$01 A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FD6 8D 22 1B STA $1B22 [$7E:1B22] A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FD9 D0 17 BNE $17 [$9FF2] A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FDB A5 01 LDA $01 [$00:0101] A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FDD 29 01 AND #$01 A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FDF F0 0B BEQ $0B [$9FEC] A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FE1 AD 22 1B LDA $1B22 [$7E:1B22] A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FE4 1A INC A A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FE5 29 01 AND #$01 A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FE7 8D 22 1B STA $1B22 [$7E:1B22] A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FEA F0 58 BEQ $58 [$A044] A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FEC A5 01 LDA $01 [$00:0101] A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FEE 29 08 AND #$08 A:0000 X:0140 Y:6800 P:envMxdIZc
$01/9FF0 F0 4C BEQ $4C [$A03E] A:0000 X:0140 Y:6800 P:envMxdIZc
...
Note that keystate affects RAM locations 0101, 0103, 0105, 0109 at least. 0101 seems to be the one that is used when down is pressed in item menu. Trace related to the above disasm, when down is pressed and 1B23 is increased by one (pressing right will also result in its increase when 1b22 is set):
$01/9FCA A5 01 LDA $01 [$00:0101] A:0411 X:0140 Y:6800 P:envMxdIzc
$01/9FCC 29 02 AND #$02 A:0404 X:0140 Y:6800 P:envMxdIzc
$01/9FCE F0 0B BEQ $0B [$9FDB] A:0400 X:0140 Y:6800 P:envMxdIZc
$01/9FDB A5 01 LDA $01 [$00:0101] A:0400 X:0140 Y:6800 P:envMxdIZc
$01/9FDD 29 01 AND #$01 A:0404 X:0140 Y:6800 P:envMxdIzc
$01/9FDF F0 0B BEQ $0B [$9FEC] A:0400 X:0140 Y:6800 P:envMxdIZc
$01/9FEC A5 01 LDA $01 [$00:0101] A:0400 X:0140 Y:6800 P:envMxdIZc
$01/9FEE 29 08 AND #$08 A:0404 X:0140 Y:6800 P:envMxdIzc
$01/9FF0 F0 4C BEQ $4C [$A03E] A:0400 X:0140 Y:6800 P:envMxdIZc
$01/A03E A5 01 LDA $01 [$00:0101] A:0400 X:0140 Y:6800 P:envMxdIZc
$01/A040 29 04 AND #$04 A:0404 X:0140 Y:6800 P:envMxdIzc
$01/A042 F0 50 BEQ $50 [$A094] A:0404 X:0140 Y:6800 P:envMxdIzc
$01/A044 AD 23 1B LDA $1B23 [$7E:1B23] A:0404 X:0140 Y:6800 P:envMxdIzc
$01/A047 C9 09 CMP #$09 A:0400 X:0140 Y:6800 P:envMxdIZc
$01/A049 90 45 BCC $45 [$A090] A:0400 X:0140 Y:6800 P:eNvMxdIzc
$01/A090 1A INC A A:0400 X:0140 Y:6800 P:eNvMxdIzc
$01/A091 8D 23 1B STA $1B23 [$7E:1B23] A:0401 X:0140 Y:6800 P:envMxdIzc
Routine 01:82C0 trace is some pages. For example, link to your FD90 is (trace):
$01/9FC7 20 C0 82 JSR $82C0 [$01:82C0] A:0001 X:0140 Y:6800 P:envMxdIzc
$01/82C0 20 B6 82 JSR $82B6 [$01:82B6] A:0001 X:0140 Y:6800 P:envMxdIzc
$01/82B6 22 03 FD 14 JSL $14FD03[$14:FD03] A:0001 X:0140 Y:6800 P:envMxdIzc
$14/FD03 4C 12 FD JMP $FD12 [$14:FD12] A:0001 X:0140 Y:6800 P:envMxdIzc
$14/FD12 8B PHB A:0001 X:0140 Y:6800 P:envMxdIzc
$14/FD13 DA PHX A:0001 X:0140 Y:6800 P:envMxdIzc
$14/FD14 5A PHY A:0001 X:0140 Y:6800 P:envMxdIzc
$14/FD15 0B PHD A:0001 X:0140 Y:6800 P:envMxdIzc
$14/FD16 A9 00 LDA #$00 A:0001 X:0140 Y:6800 P:envMxdIzc
$14/FD18 48 PHA A:0000 X:0140 Y:6800 P:envMxdIZc
$14/FD19 AB PLB A:0000 X:0140 Y:6800 P:envMxdIZc
$14/FD1A A2 00 01 LDX #$0100 A:0000 X:0140 Y:6800 P:envMxdIZc
$14/FD1D DA PHX A:0000 X:0100 Y:6800 P:envMxdIzc
$14/FD1E 2B PLD A:0000 X:0100 Y:6800 P:envMxdIzc
$14/FD1F AD 12 42 LDA $4212 [$00:4212] A:0000 X:0100 Y:6800 P:envMxdIzc
$14/FD22 29 01 AND #$01 A:0082 X:0100 Y:6800 P:eNvMxdIzc
$14/FD24 D0 F9 BNE $F9 [$FD1F] A:0000 X:0100 Y:6800 P:envMxdIZc
$14/FD26 64 EC STZ $EC [$00:01EC] A:0000 X:0100 Y:6800 P:envMxdIZc
$14/FD28 A0 18 42 LDY #$4218 A:0000 X:0100 Y:6800 P:envMxdIZc
$14/FD2B A2 04 00 LDX #$0004 A:0000 X:0100 Y:4218 P:envMxdIzc
$14/FD2E A9 04 LDA #$04 A:0000 X:0004 Y:4218 P:envMxdIzc
$14/FD30 48 PHA A:0004 X:0004 Y:4218 P:envMxdIzc
$14/FD31 5A PHY A:0004 X:0004 Y:4218 P:envMxdIzc
$14/FD32 20 90 FD JSR $FD90 [$14:FD90] A:0004 X:0004 Y:4218 P:envMxdIzc
FD90 seems to be called four times in the larger trace, inside 82C0.
Analyzing at this level is still easier than hacking it, of course.
edit3:
perhaps this disassembly helps
http://pastebin.com/HA1MMTaEdon't pay attention to 0601, it is 0101, i'm sure!
BEQ is taken if nothing is pressed