Вот некоторый соответствующий код из подключаемого модуля имитатора клавиатуры и дисплея для MARS & RARS (версия MARS для RIS C V):
private class KeyboardKeyListener implements KeyListener {
public void keyTyped(KeyEvent e) {
int updatedReceiverControl = readyBitSet(RECEIVER_CONTROL);
updateMMIOControlAndData(RECEIVER_CONTROL, updatedReceiverControl, RECEIVER_DATA, e.getKeyChar() & 0x00000ff);
if (updatedReceiverControl != 1) {
InterruptController.registerExternalInterrupt(EXTERNAL_INTERRUPT_KEYBOARD);
}
}
/* Ignore key pressed event from the text field. */
public void keyPressed(KeyEvent e) {
}
/* Ignore key released event from the text field. */
public void keyReleased(KeyEvent e) {
}
}
Вы можете измените этот код, чтобы сделать что-то в обработчиках событий более низкого уровня: keyPressed и keyReleased - вместо этого событие более высокого уровня: keyTyped.
Идея состоит в том, что вы могли бы предоставлять данные кода ключа, а не символьные данные, либо на каком-то новом Местоположение регистра MMIO - перехват существующих данных приемника и мест контроля для данных кода ключа вместо символьных данных.