First of all, welcome to the community.

Generally, interrupts are blocking. So, if you are servicing an interrupt, another will lie pending till the first completes.

However, there may be instances where you wish to take another interrupt within another's service routine. That requires you to be crafty and know exactly what you're doing in consultation with the datasheet for that device. These instances are quite rare and can be usually ignored altogether till you seriously need them.

A rule of thumb for ISR(interrupt service routines) is to keep them small and avoid subroutine calls from within them (fast). You could use signalling from the interrupt to your mainline if you need some rudimentary messaging. eg: the keypress could be read and saved to a byte which is then read by the mainline code.

Hope these ideas are helpful to you