På tangentbordstemat fixade jag lite makron på tangentbordet jag använder på jobbet. Målet var att slippa skriva ut min epost-signatur hela dagarna, utan att istället låta tangentbordet göra det åt mig - lite som ett självspelande piano!

Jag använder QMK, och har definierat upp en keymap sedan tidigare. I denna fil skapar jag först några egna tangentbordskoder:

enum custom_keycodes {
  REGR,
  HALS,
};

Senare i samma fil har jag en funktion vid namn process_record_user, som verkar finnas för att kunna överlagra det normala beteendet när en trycker på en knapp. Här i bor en switch-sats, och i den kastar vi in vad som ska hända när vi trycker ner REGR eller HALS.

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  switch (keycode) {
  // Massor av annan eventuell kod...
  case HALS:
    if (record->event.pressed) {
      SEND_STRING("H'lsningar,\nOscar\narbetsplatsnamn\n");
    }
    break;
  case REGR:
    if (record->event.pressed) {
      SEND_STRING("Regards,\nOscar\nwhereiwork\n");
    }
    break;
  }
  return true;
}

Först försökte jag få till unicode-inmatning för alla mina datorer för att kunna skicka in ett ä i den svenska hälsningsfrasen, allt utan någon framgång alls. Sedan kom jag på att SEND_STRING-funktionen försöker översätta alla tecken som skickats till motsvarande tangentbordskoder, och då var lösningen given - skicka bara en apostrof!

Det jag har (miss)förstått av tangentbord är att i princip alla tangentbord skickar samma “tangentbordstryck” (signal) oavsett layout, men att signalerna tolkas om av operativsystemet, givet att vi använder en annan layout. Så när jag trycker på ä-knappen trycks en '-knapp (för ett amerikansk tangentbord, som annars är lite utav standarden i denna värld) in, men min dator tolkar det som ett ä istället. :/;-knappen blir ett ö, och så vidare. Så i makrot ovan skickar jag det mitt operativsystem kommer tolka som ett ä. Logiskt va?

För att använda dessa makron sedan lägger jag bara ut dem i min layout som vanligt, och använder den custom_keycode jag definierat.