diff options
| author | Louis Burda <quent.burda@gmail.com> | 2022-12-19 19:29:41 +0100 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2022-12-19 19:29:41 +0100 |
| commit | 878eb23b8394109aeb32cd505f79b96c74ec97f6 (patch) | |
| tree | ed5aa20a4018fcecd0d7f922d66c92633822117c /src/keysym | |
| parent | d7c506450be613d6575649218fbcc90a4fabd150 (diff) | |
| download | sxkbd-878eb23b8394109aeb32cd505f79b96c74ec97f6.tar.gz sxkbd-878eb23b8394109aeb32cd505f79b96c74ec97f6.zip | |
Add special hid functionality, consumer control working
Diffstat (limited to 'src/keysym')
| -rw-r--r-- | src/keysym/consumer.c | 60 | ||||
| -rw-r--r-- | src/keysym/consumer.h | 57 | ||||
| -rw-r--r-- | src/keysym/keyboard_de.h | 152 | ||||
| -rw-r--r-- | src/keysym/keyboard_us.h | 228 | ||||
| -rw-r--r-- | src/keysym/mouse.h | 50 | ||||
| -rw-r--r-- | src/keysym/system.c | 20 | ||||
| -rw-r--r-- | src/keysym/system.h | 18 |
7 files changed, 585 insertions, 0 deletions
diff --git a/src/keysym/consumer.c b/src/keysym/consumer.c new file mode 100644 index 0000000..8e0e8c0 --- /dev/null +++ b/src/keysym/consumer.c @@ -0,0 +1,60 @@ +#include "keysym/consumer.h" + +#include "hid/consumer.h" + +#include <stdint.h> + +uint16_t +keysym_to_consumer(uint32_t key) +{ + switch (key) { + case KS_AUDIO_MUTE: + return AUDIO_MUTE; + case KS_AUDIO_VOL_UP: + return AUDIO_VOL_UP; + case KS_AUDIO_VOL_DOWN: + return AUDIO_VOL_DOWN; + case KS_MEDIA_NEXT_TRACK: + return TRANSPORT_NEXT_TRACK; + case KS_MEDIA_PREV_TRACK: + return TRANSPORT_PREV_TRACK; + case KS_MEDIA_FAST_FORWARD: + return TRANSPORT_FAST_FORWARD; + case KS_MEDIA_REWIND: + return TRANSPORT_REWIND; + case KS_MEDIA_STOP: + return TRANSPORT_STOP; + case KS_MEDIA_EJECT: + return TRANSPORT_STOP_EJECT; + case KS_MEDIA_PLAY_PAUSE: + return TRANSPORT_PLAY_PAUSE; + case KS_MEDIA_SELECT: + return AL_CC_CONFIG; + case KS_MAIL: + return AL_EMAIL; + case KS_CALCULATOR: + return AL_CALCULATOR; + case KS_MY_COMPUTER: + return AL_LOCAL_BROWSER; + case KS_WWW_SEARCH: + return AC_SEARCH; + case KS_WWW_HOME: + return AC_HOME; + case KS_WWW_BACK: + return AC_BACK; + case KS_WWW_FORWARD: + return AC_FORWARD; + case KS_WWW_STOP: + return AC_STOP; + case KS_WWW_REFRESH: + return AC_REFRESH; + case KS_BRIGHTNESS_UP: + return BRIGHTNESS_UP; + case KS_BRIGHTNESS_DOWN: + return BRIGHTNESS_DOWN; + case KS_WWW_FAVORITES: + return AC_BOOKMARKS; + default: + return 0; + } +} diff --git a/src/keysym/consumer.h b/src/keysym/consumer.h new file mode 100644 index 0000000..c760649 --- /dev/null +++ b/src/keysym/consumer.h @@ -0,0 +1,57 @@ +#pragma once + +#include "keysym.h" + +#include <stdint.h> + +/* Consumer Page (0x0C) */ +#define KS_MUTE KS_AUDIO_MUTE +#define KS_VOLU KS_AUDIO_VOL_UP +#define KS_VOLD KS_AUDIO_VOL_DOWN +#define KS_MNXT KS_MEDIA_NEXT_TRACK +#define KS_MPRV KS_MEDIA_PREV_TRACK +#define KS_MSTP KS_MEDIA_STOP +#define KS_MPLY KS_MEDIA_PLAY_PAUSE +#define KS_MSEL KS_MEDIA_SELECT +#define KS_EJCT KS_MEDIA_EJECT +#define KS_CALC KS_CALCULATOR +#define KS_MYCM KS_MY_COMPUTER +#define KS_WSCH KS_WWW_SEARCH +#define KS_WHOM KS_WWW_HOME +#define KS_WBAK KS_WWW_BACK +#define KS_WFWD KS_WWW_FORWARD +#define KS_WSTP KS_WWW_STOP +#define KS_WREF KS_WWW_REFRESH +#define KS_WFAV KS_WWW_FAVORITES +#define KS_MFFD KS_MEDIA_FAST_FORWARD +#define KS_MRWD KS_MEDIA_REWIND +#define KS_BRIU KS_BRIGHTNESS_UP +#define KS_BRID KS_BRIGHTNESS_DOWN + +enum keysym_consumer { + KS_AUDIO_MUTE = KEYSYM_CONSUMER_MASK, + KS_AUDIO_VOL_UP, + KS_AUDIO_VOL_DOWN, + KS_MEDIA_NEXT_TRACK, + KS_MEDIA_PREV_TRACK, + KS_MEDIA_STOP, + KS_MEDIA_PLAY_PAUSE, + KS_MEDIA_SELECT, + KS_MEDIA_EJECT, + KS_MAIL, + KS_CALCULATOR, + KS_MY_COMPUTER, + KS_WWW_SEARCH, + KS_WWW_HOME, + KS_WWW_BACK, + KS_WWW_FORWARD, + KS_WWW_STOP, + KS_WWW_REFRESH, + KS_WWW_FAVORITES, + KS_MEDIA_FAST_FORWARD, + KS_MEDIA_REWIND, + KS_BRIGHTNESS_UP, + KS_BRIGHTNESS_DOWN +}; + +uint16_t keysym_to_consumer(uint32_t keysym); diff --git a/src/keysym/keyboard_de.h b/src/keysym/keyboard_de.h new file mode 100644 index 0000000..2294b46 --- /dev/null +++ b/src/keysym/keyboard_de.h @@ -0,0 +1,152 @@ +#pragma once + +#include "keysym.h" +#include "hid/keyboard.h" + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ß │ ´ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Ü │ + │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ + * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ + +/* Row 1 */ +#define DE_CIRC KC_GRV // ^ (dead) +#define DE_1 KC_1 // 1 +#define DE_2 KC_2 // 2 +#define DE_3 KC_3 // 3 +#define DE_4 KC_4 // 4 +#define DE_5 KC_5 // 5 +#define DE_6 KC_6 // 6 +#define DE_7 KC_7 // 7 +#define DE_8 KC_8 // 8 +#define DE_9 KC_9 // 9 +#define DE_0 KC_0 // 0 +#define DE_SS KC_MINS // ß +#define DE_ACUT KC_EQL // ´ (dead) + +/* Row 2 */ +#define DE_Q KC_Q // Q +#define DE_W KC_W // W +#define DE_E KC_E // E +#define DE_R KC_R // R +#define DE_T KC_T // T +#define DE_Z KC_Y // Z +#define DE_U KC_U // U +#define DE_I KC_I // I +#define DE_O KC_O // O +#define DE_P KC_P // P +#define DE_UDIA KC_LBRC // Ü +#define DE_PLUS KC_RBRC // + + +/* Row 3 */ +#define DE_A KC_A // A +#define DE_S KC_S // S +#define DE_D KC_D // D +#define DE_F KC_F // F +#define DE_G KC_G // G +#define DE_H KC_H // H +#define DE_J KC_J // J +#define DE_K KC_K // K +#define DE_L KC_L // L +#define DE_ODIA KC_SCLN // Ö +#define DE_ADIA KC_QUOT // Ä +#define DE_HASH KC_NUHS // # + +/* Row 4 */ +#define DE_LABK KC_NUBS // < +#define DE_Y KC_Z // Y +#define DE_X KC_X // X +#define DE_C KC_C // C +#define DE_V KC_V // V +#define DE_B KC_B // B +#define DE_N KC_N // N +#define DE_M KC_M // M +#define DE_COMM KC_COMM // , +#define DE_DOT KC_DOT // . +#define DE_MINS KC_SLSH // - + + +/* Shifted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ ° │ ! │ " │ § │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ' │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ + +/* Row 1 */ +#define DE_DEG S(DE_CIRC) // ° +#define DE_EXLM S(DE_1) // ! +#define DE_DQUO S(DE_2) // " +#define DE_SECT S(DE_3) // § +#define DE_DLR S(DE_4) // $ +#define DE_PERC S(DE_5) // % +#define DE_AMPR S(DE_6) // & +#define DE_SLSH S(DE_7) // / +#define DE_LPRN S(DE_8) // ( +#define DE_RPRN S(DE_9) // ) +#define DE_EQL S(DE_0) // = +#define DE_QUES S(DE_SS) // ? +#define DE_GRV S(DE_ACUT) // ` (dead) + +/* Row 2 */ +#define DE_ASTR S(DE_PLUS) // * + +/* Row 3 */ +#define DE_QUOT S(DE_HASH) // ' + +/* Row 4 */ +#define DE_RABK S(DE_LABK) // > +#define DE_SCLN S(DE_COMM) // ; +#define DE_COLN S(DE_DOT) // : +#define DE_UNDS S(DE_MINS) // _ + +/* alternate names */ +#define DE_LESS DE_LABK +#define DE_GRTR S(DE_LABK) + +/* AltGr symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ │ │ ² │ ³ │ │ │ │ { │ [ │ ] │ } │ \ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ │ @ │ │ € │ │ │ │ │ │ │ │ │ ~ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ + * │ │ | │ │ │ │ │ │ │ µ │ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ + +/* Row 1 */ +#define DE_SUP2 ALGR(DE_2) // ² +#define DE_SUP3 ALGR(DE_3) // ³ +#define DE_LCBR ALGR(DE_7) // { +#define DE_LBRC ALGR(DE_8) // [ +#define DE_RBRC ALGR(DE_9) // ] +#define DE_RCBR ALGR(DE_0) // } +#define DE_BSLS ALGR(DE_SS) // (backslash) + +/* Row 2 */ +#define DE_AT ALGR(DE_Q) // @ +#define DE_EURO ALGR(DE_E) // € +#define DE_TILD ALGR(DE_PLUS) // ~ + +/* Row 4 */ +#define DE_PIPE ALGR(DE_LABK) // | +#define DE_MICR ALGR(DE_M) // µ diff --git a/src/keysym/keyboard_us.h b/src/keysym/keyboard_us.h new file mode 100644 index 0000000..7107a9c --- /dev/null +++ b/src/keysym/keyboard_us.h @@ -0,0 +1,228 @@ +#pragma once + +#include "keysym.h" +#include "hid/keyboard.h" + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ + +/* Row 1 */ +#define US_GRV KC_GRV // ` +#define US_1 KC_1 // 1 +#define US_2 KC_2 // 2 +#define US_3 KC_3 // 3 +#define US_4 KC_4 // 4 +#define US_5 KC_5 // 5 +#define US_6 KC_6 // 6 +#define US_7 KC_7 // 7 +#define US_8 KC_8 // 8 +#define US_9 KC_9 // 9 +#define US_0 KC_0 // 0 +#define US_MINS KC_MINS // - +#define US_EQL KC_EQL // = + +/* Row 2 */ +#define US_Q KC_Q // Q +#define US_W KC_W // W +#define US_E KC_E // E +#define US_R KC_R // R +#define US_T KC_T // T +#define US_Y KC_Y // Y +#define US_U KC_U // U +#define US_I KC_I // I +#define US_O KC_O // O +#define US_P KC_P // P +#define US_LBRC KC_LBRC // [ +#define US_RBRC KC_RBRC // ] +#define US_BSLS KC_BSLS // (backslash) + +/* Row 3 */ +#define US_A KC_A // A +#define US_S KC_S // S +#define US_D KC_D // D +#define US_F KC_F // F +#define US_G KC_G // G +#define US_H KC_H // H +#define US_J KC_J // J +#define US_K KC_K // K +#define US_L KC_L // L +#define US_SCLN KC_SCLN // ; +#define US_QUOT KC_QUOT // ' + +/* Row 4 */ +#define US_Z KC_Z // Z +#define US_X KC_X // X +#define US_C KC_C // C +#define US_V KC_V // V +#define US_B KC_B // B +#define US_N KC_N // N +#define US_M KC_M // M +#define US_COMM KC_COMM // , +#define US_DOT KC_DOT // . +#define US_SLSH KC_SLSH // / + + +/* Shifted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ | │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ │ │ │ │ │ │ │ │ │ │ : │ " │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │ │ │ │ │ │ │ │ │ < │ > │ ? │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ + +/* Row 1 */ +#define US_TILD S(US_GRV) // ~ +#define US_EXLM S(US_1) // ! +#define US_AT S(US_2) // @ +#define US_HASH S(US_3) // # +#define US_DLR S(US_4) // $ +#define US_PERC S(US_5) // % +#define US_CIRC S(US_6) // ^ +#define US_AMPR S(US_7) // & +#define US_ASTR S(US_8) // * +#define US_LPRN S(US_9) // ( +#define US_RPRN S(US_0) // ) +#define US_UNDS S(US_MINS) // _ +#define US_PLUS S(US_EQL) // + + +/* Row 2 */ +#define US_LCBR S(US_LBRC) // { +#define US_RCBR S(US_RBRC) // } +#define US_PIPE S(US_BSLS) // | + +/* Row 3 */ +#define US_COLN S(US_SCLN) // : +#define US_DQUO S(US_QUOT) // " + +/* Row 4 */ +#define US_LABK S(US_COMM) // < +#define US_RABK S(US_DOT) // > +#define US_QUES S(US_SLSH) // ? + + +/* AltGr symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ ` │ ¹ │ ² │ ³ │ ¤ │ € │ ^ │ ̛ │ ¾ │ ‘ │ ’ │ ¥ │ × │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ │ Ä │ Å │ É │ ® │ Þ │ Ü │ Ú │ Í │ Ó │ Ö │ « │ » │ ¬ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ │ Á │ ß │ Ð │ │ │ │ Ï │ Œ │ Ø │ ¶ │ ' │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │ │ Æ │ │ © │ │ │ Ñ │ µ │ Ç │ ˙ │ ¿ │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ + +/* Row 1 */ +#define US_DGRV ALGR(US_GRV) // ` (dead) +#define US_SUP1 ALGR(US_1) // ¹ +#define US_SUP2 ALGR(US_2) // ² +#define US_SUP3 ALGR(US_3) // ³ +#define US_CURR ALGR(US_4) // ¤ +#define US_EURO ALGR(US_5) // € +#define US_DCIR ALGR(US_6) // ^ (dead) +#define US_HORN ALGR(US_7) // ̛ (dead) +#define US_OGON ALGR(US_8) // ˛ (dead) +#define US_LSQU ALGR(US_9) // ‘ +#define US_RSQU ALGR(US_0) // ’ +#define US_YEN ALGR(US_MINS) // ¥ +#define US_MUL ALGR(US_EQL) // × + +/* Row 2 */ +#define US_ADIA ALGR(US_Q) // Ä +#define US_ARNG ALGR(US_W) // Å +#define US_EACU ALGR(US_E) // É +#define US_EDIA ALGR(US_R) // Ë +#define US_THRN ALGR(US_T) // Þ +#define US_UDIA ALGR(US_Y) // Ü +#define US_UACU ALGR(US_U) // Ú +#define US_IACU ALGR(US_I) // Í +#define US_OACU ALGR(US_O) // Ó +#define US_ODIA ALGR(US_P) // Ö +#define US_LDAQ ALGR(US_LBRC) // « +#define US_RDAQ ALGR(US_RBRC) // » +#define US_NOT ALGR(US_BSLS) // ¬ + +/* Row 3 */ +#define US_AACU ALGR(US_A) // Á +#define US_SS ALGR(US_S) // ß +#define US_ETH ALGR(US_D) // Ð +#define US_IDIA ALGR(US_J) // Ï +#define US_OE ALGR(US_K) // Œ +#define US_OSTR ALGR(US_L) // Ø +#define US_PILC ALGR(US_SCLN) // ¶ +#define US_ACUT ALGR(US_QUOT) // ´ (dead) + +/* Row 4 */ +#define US_AE ALGR(US_Z) // Æ +#define US_OE_2 ALGR(US_X) // Œ +#define US_COPY ALGR(US_C) // © +#define US_REGD ALGR(US_V) // ® +#define US_NTIL ALGR(US_N) // Ñ +#define US_MICR ALGR(US_M) // µ +#define US_CCED ALGR(US_COMM) // Ç +#define US_DOTA ALGR(US_DOT) // ˙ (dead) +#define US_IQUE ALGR(US_SLSH) // ¿ + + +/* Shift+AltGr symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ ~ │ ¡ │ ˝ │ ¯ │ £ │ ¸ │ ¼ │ ½ │ ¾ │ ˘ │ ° │ ̣ │ ÷ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ │ │ │ │ │ │ │ │ │ │ │ “ │ ” │ ¦ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ │ │ § │ │ │ │ │ │ │ │ ° │ " │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │ │ │ │ ¢ │ │ │ │ │ │ ˇ │ ̉ │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ + +/* Row 1 */ +#define US_DTIL S(ALGR(US_GRV)) // ~ (dead) +#define US_IEXL S(ALGR(US_1)) // ¡ +#define US_DACU S(ALGR(US_2)) // ˝ (dead) +#define US_MACR S(ALGR(US_3)) // ¯ (dead) +#define US_PND S(ALGR(US_4)) // £ +#define US_CEDL S(ALGR(US_5)) // ¸ (dead) +#define US_QRTR S(ALGR(US_6)) // ¼ +#define US_HALF S(ALGR(US_7)) // ½ +#define US_TQTR S(ALGR(US_8)) // ¾ +#define US_BREV S(ALGR(US_9)) // ˘ (dead) +#define US_RNGA S(ALGR(US_0)) // ° (dead) +#define US_DOTB S(ALGR(US_MINS)) // ̣ (dead) +#define US_DIV S(ALGR(US_EQL)) // ÷ + +/* Row 2 */ +#define US_LDQU S(ALGR(US_LBRC)) // “ +#define US_RDQU S(ALGR(US_RBRC)) // ” +#define US_BRKP S(ALGR(US_BSLS)) // ¦ + +/* Row 3 */ +#define US_SECT S(ALGR(US_S)) // § +#define US_DEG S(ALGR(US_SCLN)) // ° +#define US_DIAE S(ALGR(US_QUOT)) // ¨ (dead) + +/* Row 4 */ +#define US_CENT S(ALGR(US_C)) // ¢ +#define US_CARN S(ALGR(US_DOT)) // ˇ (dead) +#define US_HOKA S(ALGR(US_SLSH)) // ̉ (dead) diff --git a/src/keysym/mouse.h b/src/keysym/mouse.h new file mode 100644 index 0000000..53d2a23 --- /dev/null +++ b/src/keysym/mouse.h @@ -0,0 +1,50 @@ +#pragma once + +#include "keysym.h" + +#define KS_MS_U KS_MS_UP +#define KS_MS_D KS_MS_DOWN +#define KS_MS_L KS_MS_LEFT +#define KS_MS_R KS_MS_RIGHT +#define KS_BTN1 KS_MS_BTN1 +#define KS_BTN2 KS_MS_BTN2 +#define KS_BTN3 KS_MS_BTN3 +#define KS_BTN4 KS_MS_BTN4 +#define KS_BTN5 KS_MS_BTN5 +#define KS_BTN6 KS_MS_BTN6 +#define KS_BTN7 KS_MS_BTN7 +#define KS_BTN8 KS_MS_BTN8 +#define KS_WH_U KS_MS_WH_UP +#define KS_WH_D KS_MS_WH_DOWN +#define KS_WH_L KS_MS_WH_LEFT +#define KS_WH_R KS_MS_WH_RIGHT +#define KS_ACL0 KS_MS_ACCEL0 +#define KS_ACL1 KS_MS_ACCEL1 +#define KS_ACL2 KS_MS_ACCEL2 + +enum keysym_mouse { + /* Mouse Buttons */ + KC_MS_UP = KEYSYM_MOUSE_MASK, + KC_MS_DOWN, + KC_MS_LEFT, + KC_MS_RIGHT, + KC_MS_BTN1, + KC_MS_BTN2, + KC_MS_BTN3, + KC_MS_BTN4, + KC_MS_BTN5, + KC_MS_BTN6, + KC_MS_BTN7, + KC_MS_BTN8, + + /* Mouse Wheel */ + KC_MS_WH_UP, + KC_MS_WH_DOWN, + KC_MS_WH_LEFT, + KC_MS_WH_RIGHT, + + /* Acceleration */ + KC_MS_ACCEL0, + KC_MS_ACCEL1, + KC_MS_ACCEL2 +}; diff --git a/src/keysym/system.c b/src/keysym/system.c new file mode 100644 index 0000000..2aa9be9 --- /dev/null +++ b/src/keysym/system.c @@ -0,0 +1,20 @@ +#include "keysym/system.h" + +#include "hid/system.h" + +#include <stdint.h> + +uint16_t +keysym_to_system(uint32_t keysym) +{ + switch (keysym) { + case KS_SYSTEM_POWER: + return SYSTEM_POWER_DOWN; + case KS_SYSTEM_SLEEP: + return SYSTEM_SLEEP; + case KS_SYSTEM_WAKE: + return SYSTEM_WAKE_UP; + default: + return 0; + } +} diff --git a/src/keysym/system.h b/src/keysym/system.h new file mode 100644 index 0000000..f0174f5 --- /dev/null +++ b/src/keysym/system.h @@ -0,0 +1,18 @@ +#pragma once + +#include "keysym.h" + +#include <stdint.h> + +/* Generic Desktop Page (0x01) */ +#define KS_PWR KS_SYSTEM_POWER +#define KS_SLEP KS_SYSTEM_SLEEP +#define KS_WAKE KS_SYSTEM_WAKE + +enum keysym_system { + KS_SYSTEM_POWER = KEYSYM_SYSTEM_MASK, + KS_SYSTEM_SLEEP, + KS_SYSTEM_WAKE, +}; + +uint16_t keysym_to_system(uint32_t keysym); |
