ble nano hid over gatt

Dependencies:   BLE_API mbed-dev nRF51822

test_keymap.txt

Committer:
cho45
Date:
2016-09-15
Revision:
86:e0fab77e669d
Parent:
47:5bf2ae8cc710

File content as of revision 86:e0fab77e669d:

//#!clang++ -O2 -std=c++1y test_keymap.txt -o /tmp/a.out && /tmp/a.out ; ;:

#include <stdio.h>
#include <stdint.h>
#include <iostream>
static unsigned tap_n = 0;
template <class T, class U>
void is(T got, U expected, const char* desc = "") {
    if (tap_n++ == 0) {
        std::atexit([]{
            std::cout << "1.." << tap_n << std::endl;
        });
    }

    if (got == expected) {
        std::cout << "ok " << tap_n;
        if (desc[0]) std::cout << " - " << desc;
        std::cout << std::endl;
    } else {
        std::cout << "not ok " << tap_n;
        if (desc[0]) std::cout << " - " << desc;
        std::cout << std::endl;
        std::cout << "# got:" << got << " expected:" << expected << std::endl;
    }
}

static uint8_t lastAppendKey;
static uint8_t lastDeleteKey;
class HIDController {
public:
    static void appendReportData(uint8_t key) {
        lastAppendKey = key;
    }

    static void deleteReportData(uint8_t key) {
        lastDeleteKey = key;
    }
};

#define DEBUG_PRINTF_KEYEVENT(...) printf(__VA_ARGS__)

#include "keymap.h"

int main() {
    printf("test\n");

    Keymap keymap = new Keymap();

    keymap->execute(1, 1, true);
    is(lastAppendKey, _1);
    keymap->execute(1, 1, false);
    is(lastDeleteKey, _1);
    keymap->execute(1, 0, true);
    is(lastAppendKey, _esc);

    keymap->execute(2, 14, true);
    is((int)lastAppendKey, _bracketL);
    keymap->execute(2, 14, false);

    // Fn
    keymap->execute(5, 14, true);
    keymap->execute(2, 14, true);
    is((int)lastAppendKey, _arrowU);
    // 先に Fn を離す
    keymap->execute(5, 14, false);
    keymap->execute(2, 14, false);
    is((int)lastDeleteKey, _arrowU);

    return 0;
}


// レイヤーの仕様
//
// 切替えキー (例: Fn) はそのあと押したキーにしか効かない
// 切替えキーが途中で離されても、押されたキーが離されるまでそのまま
//