[bknr-cvs] hans changed trunk/projects/symbolics-keyboard/teensy-firmware/symbolics.c
BKNR Commits
bknr at bknr.net
Mon Apr 6 18:55:39 UTC 2009
Revision: 4358
Author: hans
URL: http://bknr.net/trac/changeset/4358
Make f-mode work
U trunk/projects/symbolics-keyboard/teensy-firmware/symbolics.c
Modified: trunk/projects/symbolics-keyboard/teensy-firmware/symbolics.c
===================================================================
--- trunk/projects/symbolics-keyboard/teensy-firmware/symbolics.c 2009-04-06 16:20:07 UTC (rev 4357)
+++ trunk/projects/symbolics-keyboard/teensy-firmware/symbolics.c 2009-04-06 18:55:39 UTC (rev 4358)
@@ -119,68 +119,70 @@
void
send_keys(uint8_t* state)
{
- uint8_t key_index = 0;
- uint8_t map_index = 0;
uint8_t local = 0;
const uint8_t* keymap = keymap_normal;
retry:
// If we detect that we are in f-mode, we need to translate the
// pressed keys with the f-mode translation table.
- keyboard_modifier_keys = 0;
- memset(keyboard_keys, 0, sizeof keyboard_keys);
+ {
+ uint8_t key_index = 0;
+ uint8_t map_index = 0;
+ keyboard_modifier_keys = 0;
+ memset(keyboard_keys, 0, sizeof keyboard_keys);
- for (int i = 0; i < 16; i++) {
- uint8_t buf = state[i];
- for (int j = 0; j < 8; j++) {
- uint8_t mapped = pgm_read_byte(&keymap[map_index++]);
- uint8_t pressed = (buf & 1);
+ for (int i = 0; i < 16; i++) {
+ uint8_t buf = state[i];
+ for (int j = 0; j < 8; j++) {
+ uint8_t mapped = pgm_read_byte(&keymap[map_index++]);
+ uint8_t pressed = (buf & 1);
#if defined(DEBUG)
- if (pressed) {
- print("key ");
- phex(map_index - 1);
- print(" pressed, mapped to ");
- phex(mapped);
- print("\n");
- }
+ if (pressed) {
+ print("key ");
+ phex(map_index - 1);
+ print(" pressed, mapped to ");
+ phex(mapped);
+ print("\n");
+ }
#endif
- if (pressed && mapped) {
- if (mapped & 0x80) {
- int num = mapped & 0x7F;
- switch (num) {
+ if (pressed && mapped) {
+ if (mapped & 0x80) {
+ int num = mapped & 0x7F;
+ switch (num) {
- case NUM_KEY_LEFT_CTRL:
- case NUM_KEY_LEFT_SHIFT:
- case NUM_KEY_LEFT_ALT:
- case NUM_KEY_LEFT_GUI:
- case NUM_KEY_RIGHT_CTRL:
- case NUM_KEY_RIGHT_SHIFT:
- case NUM_KEY_RIGHT_ALT:
- case NUM_KEY_RIGHT_GUI:
- keyboard_modifier_keys |= 1 << num;
- break;
+ case NUM_KEY_LEFT_CTRL:
+ case NUM_KEY_LEFT_SHIFT:
+ case NUM_KEY_LEFT_ALT:
+ case NUM_KEY_LEFT_GUI:
+ case NUM_KEY_RIGHT_CTRL:
+ case NUM_KEY_RIGHT_SHIFT:
+ case NUM_KEY_RIGHT_ALT:
+ case NUM_KEY_RIGHT_GUI:
+ keyboard_modifier_keys |= 1 << num;
+ break;
- case NUM_KEY_LOCAL:
- local = 1;
- break;
+ case NUM_KEY_LOCAL:
+ local = 1;
+ break;
- case NUM_KEY_F_MODE:
- if (keymap == keymap_normal) {
- keymap = keymap_f_mode;
- goto retry;
+ case NUM_KEY_F_MODE:
+ if (keymap == keymap_normal) {
+ keymap = keymap_f_mode;
+ goto retry;
+ }
+ break;
}
- break;
+ } else {
+ if (key_index < sizeof keyboard_keys) {
+ keyboard_keys[key_index++] = mapped;
+ }
}
- } else {
- if (key_index < sizeof keyboard_keys) {
- keyboard_keys[key_index++] = mapped;
- }
}
+ buf >>= 1;
}
- buf >>= 1;
}
}
-
+
if (local) {
handle_local_keys();
} else {
More information about the Bknr-cvs
mailing list