Hi
Try the operation using the open source uTasker project [https://github.com/uTasker/uTasker-Kinetis/tree/master/Applications/uTaskerV1.4] which has the following KBI interface and allows a single code to be used on almost all Kinetis parts. It simulates the Kinetis part and, in this case the KBI, so it makes debugging, learning and code reviews much simpler and efficient:
INTERRUPT_SETUP interrupt_setup; // interrupt configuration parameters
interrupt_setup.int_type = KEYBOARD_INTERRUPT; // define keyboard interrupt rather than IRQ
interrupt_setup.int_priority = PRIORITY_KEYBOARD_INT; // interrupt priority level
interrupt_setup.int_port = KE_PORTH; // the port that the interrupt input is on (KE_PORTE, KE_PORTF, KE_PORTG and KE_PORTH are the same)
interrupt_setup.int_port_bits = (KE_PORTH_BIT0); // the IRQ input connected
interrupt_setup.int_port_sense = (IRQ_RISING_EDGE | PULLUP_ON); // interrupt is to be falling edge sensitive
interrupt_setup.int_handler = kbi_handler; // handling function
fnConfigureInterrupt((void *)&interrupt_setup); // configure interrupt
This configures a rising edge KBI interrupt on PTH0 - internally it maps this to KBI1_P24, as also shown by the user's manual:

https://www.utasker.com/kinetis/FRDM-KE06Z.html
When KBI function is enabled on one of the pins it overrides the GPIO function and so cannot be used as GPIO.
Below is the KE06 simulation showing the pin configuration on PTH0 - when this input is changed the interrupt is generated by the simulation.
Beware when using the KBI that if you configure more that one KBI input and one is active no other one will operate (will be ignored) until the first one is cleared - this makes the KBI of little use when multiple inputs need to be recognised together.

Regards
Mark
[uTasker project developer for Kinetis and i.MX RT]
Contact me by personal message or on the uTasker web site to discuss professional training, solutions to problems or product development requirements