How about just seeding rand() to get a random number between 0 and 128?
Also my updated code (entropy was generated using crypto#randomBytes in node.js):
uint8_t asc2key(uint8_t l)
{
    switch (l) {
        case 'A': return KC_A;
        case 'B': return KC_B;
        case 'C': return KC_C;
        case 'D': return KC_D;
        case 'E': return KC_E;
        case 'F': return KC_F;
        case 'G': return KC_G;
        case 'H': return KC_H;
        case 'I': return KC_I;
        case 'J': return KC_J;
        case 'K': return KC_K;
        case 'L': return KC_L;
        case 'M': return KC_M;
        case 'N': return KC_N;
        case 'O': return KC_O;
        case 'P': return KC_P;
        case 'Q': return KC_Q;
        case 'R': return KC_R;
        case 'S': return KC_S;
        case 'T': return KC_T;
        case 'U': return KC_U;
        case 'V': return KC_V;
        case 'W': return KC_W;
        case 'X': return KC_X;
        case 'Y': return KC_Y;
        case 'Z': return KC_Z;
        case '1': return KC_1;
        case '2': return KC_2;
        case '3': return KC_3;
        case '4': return KC_4;
        case '5': return KC_5;
        case '6': return KC_6;
        case '7': return KC_7;
        case '8': return KC_8;
        case '9': return KC_9;
        case '0': return KC_0;
        case '\n': return KC_ENTER;
        case 0x1B: return KC_ESCAPE;
        case '\b': return KC_BSPACE;
        case '\t': return KC_TAB;
        case ' ': return KC_SPACE;
        case '-': return KC_MINUS;
        case '=': return KC_EQUAL;
        case '[': return KC_LBRACKET;
        case ']': return KC_RBRACKET;
        case '\\': return KC_BSLASH;
        case ';': return KC_SCOLON;
        case '\'': return KC_QUOTE;
        case '`': return KC_GRAVE;
        case ',': return KC_COMMA;
        case '.': return KC_DOT;
        case '/': return KC_SLASH;
        default: return KC_NO;
    }
}
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
{
  switch (id) {
    case ENTROPY:
      if (!record->event.pressed && record->tap.count > 0 && !(record->tap.interrupted)) {
        // Select chars in entropy[] seed starting at pos(i)
        char MAP_HEX[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
        uint8_t MAP_CODE[] = { 0x27, 0x18, 0x19, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 };
        char entropy[] = {
          '6','5','D','A','1','9','9','8','6','B','E','7','1','0','7','A','6','1','D','4','B','D','4','3','6','B','D','1','5','9','5','C','A','3','4','C','0','7','9','3','7','F','9','F','D','D','A','4','1','0','1','3','1','F','9','C','9','0','4','6','F','1','D','0','2','5','7','C','4','2','1','C','A','B','3','1','F','F','1','8','5','0','D','1','5','B','E','8','7','5','2','3','E','7','A','2','B','2','9','3','6','5','A','E','B','E','A','3','6','B','9','7','B','C','9','4','A','A','8','0','5','8','3','D','2','E','E','F',
          '7','F','9','7','3','2','0','D','9','5','B','F','5','D','0','1','7','D','6','D','B','A','1','4','5','E','2','F','C','0','9','7','A','6','E','1','F','9','1','4','A','2','3','C','8','6','5','0','4','D','2','8','1','5','1','F','F','9','8','C','1','5','2','B','7','6','B','C','B','3','C','B','B','C','A','C','B','9','A','1','D','5','0','F','5','F','E','0','A','9','1','5','5','0','2','8','9','4','F','6','7','C','8','4','2','8','C','4','E','8','6','7','3','1','3','5','2','4','0','6','C','7','5','9','1','B','8','9',
          '2','1','0','6','3','7','F','6','F','2','1','C','4','3','3','6','E','6','1','0','A','E','6','7','5','A','E','E','C','D','2','3','1','D','1','6','5','D','B','7','1','6','3','3','3','9','7','A','B','5','6','C','2','1','E','1','C','F','6','B','5','C','2','D','B','8','2','0','2','E','F','E','B','1','8','5','0','7','C','D','E','0','9','D','E','4','4','C','0','A','0','D','6','1','8','1','2','4','1','2','6','7','B','F','F','5','C','D','F','E','1','6','8','F','A','6','0','6','2','7','E','2','4','C','B','2','6','7',
        };
        int max = sizeof(entropy) / sizeof(entropy[0]);
        for (int i = 0; i < 64 * 2; i += 2) {
          /** Begin loop code on i**/
              // Sanitize range
              i = (i <= 0) ? 0 : i;
              i = (i >= max) ? max - 1 : i;
              // Get char at pos(i)
              int pos = (i % 2) ? i - 1 : i;
              char c1 = entropy[pos];
              char c2 = entropy[pos + 1];
              // printf("%d: char(%c, %c) -> send(0x%x, 0x%x)\n", i, c1, c2, k1, k2);
              register_code(asc2key(c1)); unregister_code(asc2key(c1));
              register_code(asc2key(c2)); unregister_code(asc2key(c2));
          /** End loop code on i**/
        }
        send_keyboard_report();
        record->tap.count = 0;  // ad hoc: cancel tap
      }
      break;
  }
}