This may not find favour with the experts, but you could try this code. No interrupts
Code:
Counter   var   byte

for Counter = 1 to 500      ' 500 mS time to find inputb
  pauseus 1000                ' pause a millisecond.  You may need to trim this value
  if InputB then ProcessB
next
' .....   do code following 500mS timeout of not getting InputB
return                            ' to wherever

ProcessB:
' do whatever you want here. You could also tell after how long InputB has come by reading the value of the Counter which counts in 1mS increments
return
The grain here is 1mS between samples of the inputB which I guess should be overkill for a photography application if InputB is a manual push button