Есть ли способ узнать, как долго нажимается клавиша в MIPS? - PullRequest
0 голосов
/ 21 января 2020

Я делаю синтезатор для школы и хочу, чтобы можно было играть ноту в течение времени нажатия клавиши. Я уже знаю, что системный вызов 30 даст мне системное время, но я не знаю, как узнать, когда клавиша больше не нажимается.

1 Ответ

0 голосов
/ 21 января 2020

Вот некоторый соответствующий код из подключаемого модуля имитатора клавиатуры и дисплея для 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 - перехват существующих данных приемника и мест контроля для данных кода ключа вместо символьных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...