本文整理汇总了C++中send_keyboard_report函数的典型用法代码示例。如果您正苦于以下问题:C++ send_keyboard_report函数的具体用法?C++ send_keyboard_report怎么用?C++ send_keyboard_report使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了send_keyboard_report函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: action_function
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
static uint8_t shift_esc_shift_mask;
switch (id) {
case SHIFT_ESC:
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
if (record->event.pressed) {
if (shift_esc_shift_mask) {
add_key(KC_GRV);
send_keyboard_report();
} else {
add_key(KC_ESC);
send_keyboard_report();
}
} else {
if (shift_esc_shift_mask) {
del_key(KC_GRV);
send_keyboard_report();
} else {
del_key(KC_ESC);
send_keyboard_report();
}
}
break;
}
}
开发者ID:2k0ri,项目名称:qmk_firmware,代码行数:25,代码来源:keymap.c
示例2: action_function
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
static uint8_t mods_pressed;
switch (id) {
case 0:
/* Handle the combined Grave/Esc key
*/
mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
if (record->event.pressed) {
/* The key is being pressed.
*/
if (mods_pressed) {
add_key(KC_GRV);
send_keyboard_report();
} else {
add_key(KC_ESC);
send_keyboard_report();
}
} else {
/* The key is being released.
*/
if (mods_pressed) {
del_key(KC_GRV);
send_keyboard_report();
} else {
del_key(KC_ESC);
send_keyboard_report();
}
}
break;
}
}
开发者ID:larskinn,项目名称:qmk_firmware,代码行数:33,代码来源:keymap.c
示例3: action_function
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
{
# define MODS_CTRL_MASK (MOD_BIT(KC_LCTRL)|MOD_BIT(KC_RCTRL))
static uint8_t ctrl_space_i_prev_ctrl;
switch (id) {
// Ctrl + Up(SpaceFN) -> PgUp
case CTRL_SPACE_I:
ctrl_space_i_prev_ctrl = get_mods()&MODS_CTRL_MASK;
if (record->event.pressed) {
if (ctrl_space_i_prev_ctrl) {
del_mods(ctrl_space_i_prev_ctrl); // remove Ctrl
add_key(KC_PGUP);
send_keyboard_report(); // send PgUp without Ctrl
add_mods(ctrl_space_i_prev_ctrl); // return Ctrl but not sent
} else {
add_key(KC_UP);
send_keyboard_report();
}
} else {
if (ctrl_space_i_prev_ctrl) {
del_key(KC_PGUP);
send_keyboard_report();
} else {
del_key(KC_UP);
send_keyboard_report();
}
}
break;
}
}
开发者ID:priyadi,项目名称:tmk_keyboard,代码行数:31,代码来源:keymap_spacefn.c
示例4: action_macro_play
void action_macro_play(const macro_t *macro_p)
{
macro_t macro = END;
uint8_t interval = 0;
if (!macro_p) return;
while (true) {
switch (MACRO_READ()) {
case KEY_DOWN:
MACRO_READ();
dprintf("KEY_DOWN(%02X)\n", macro);
if (IS_MOD(macro)) {
add_macro_mods(MOD_BIT(macro));
send_keyboard_report();
} else {
register_code(macro);
}
break;
case KEY_UP:
MACRO_READ();
dprintf("KEY_UP(%02X)\n", macro);
if (IS_MOD(macro)) {
del_macro_mods(MOD_BIT(macro));
send_keyboard_report();
} else {
unregister_code(macro);
}
break;
case WAIT:
MACRO_READ();
dprintf("WAIT(%u)\n", macro);
{ uint8_t ms = macro; while (ms--) wait_ms(1); }
break;
case INTERVAL:
interval = MACRO_READ();
dprintf("INTERVAL(%u)\n", interval);
break;
case 0x04 ... 0x73:
dprintf("DOWN(%02X)\n", macro);
register_code(macro);
break;
case 0x84 ... 0xF3:
dprintf("UP(%02X)\n", macro);
unregister_code(macro&0x7F);
break;
case END:
default:
return;
}
// interval
{ uint8_t ms = interval; while (ms--) wait_ms(1); }
}
}
开发者ID:0tsuki,项目名称:qmk_firmware,代码行数:53,代码来源:action_macro.c
示例5: action_function
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
static uint8_t mods_pressed;
static bool mod_flag;
switch (id) {
case 0:
// clueboard specific hook to make escape quite tetris
if (tetris_running) {
tetris_running = 0;
return;
}
/* Handle the combined Grave/Esc key
*/
mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
if (record->event.pressed) {
/* The key is being pressed.
*/
if (mods_pressed) {
mod_flag = true;
add_key(KC_GRV);
send_keyboard_report();
} else {
add_key(KC_ESC);
send_keyboard_report();
}
} else {
/* The key is being released.
*/
if (mod_flag) {
mod_flag = false;
del_key(KC_GRV);
send_keyboard_report();
} else {
del_key(KC_ESC);
send_keyboard_report();
}
}
break;
case 1:
if (record->event.pressed) {
tetris_running = 1;
tetris_timer = 0;
tetris_keypress = 0;
// set randomness using total number of key presses
tetris_start(tetris_key_presses);
}
break;
}
}
开发者ID:0tsuki,项目名称:qmk_firmware,代码行数:51,代码来源:keymap.c
示例6: action_function
/*
* user defined action function
*/
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
{
keyevent_t event = record->event;
tap_t tap = record->tap;
switch (id) {
case LSHIFT_LPAREN:
// LShft + tap '('
// NOTE: cant use register_code to avoid conflicting with magic key bind
if (event.pressed) {
if (tap.count == 0 || tap.interrupted) {
add_mods(MOD_BIT(KC_LSHIFT));
} else {
add_mods(MOD_BIT(KC_LSHIFT));
add_key(KC_9);
send_keyboard_report();
del_mods(MOD_BIT(KC_LSHIFT));
del_key(KC_9);
send_keyboard_report();
}
} else {
if (tap.count == 0 || tap.interrupted) {
del_mods(MOD_BIT(KC_LSHIFT));
//layer_off(1);
}
}
break;
case RSHIFT_RPAREN:
// RShift + tap ')'
if (event.pressed) {
if (tap.count == 0 || tap.interrupted) {
add_mods(MOD_BIT(KC_RSHIFT));
} else {
add_mods(MOD_BIT(KC_RSHIFT));
add_key(KC_0);
send_keyboard_report();
del_mods(MOD_BIT(KC_RSHIFT));
del_key(KC_0);
send_keyboard_report();
}
} else {
if (tap.count == 0 || tap.interrupted) {
del_mods(MOD_BIT(KC_RSHIFT));
}
}
break;
}
}
开发者ID:Jickelsen,项目名称:tmk_keyboard,代码行数:51,代码来源:keymap_jickel.c
示例7: main
/* Main thread
*/
int main(void) {
/* ChibiOS/RT init */
halInit();
chSysInit();
// TESTING
// chThdCreateStatic(waBlinkerThread, sizeof(waBlinkerThread), NORMALPRIO, blinkerThread, NULL);
hook_early_init();
/* Init USB */
init_usb_driver(&USB_DRIVER);
/* init printf */
init_printf(NULL,sendchar_pf);
/* Wait until the USB is active */
while(USB_DRIVER.state != USB_ACTIVE)
chThdSleepMilliseconds(50);
/* Do need to wait here!
* Otherwise the next print might start a transfer on console EP
* before the USB is completely ready, which sometimes causes
* HardFaults.
*/
chThdSleepMilliseconds(50);
print("USB configured.\n");
/* init TMK modules */
keyboard_init();
host_set_driver(&chibios_driver);
#ifdef SLEEP_LED_ENABLE
sleep_led_init();
#endif
print("Keyboard start.\n");
hook_late_init();
/* Main loop */
while(true) {
if(USB_DRIVER.state == USB_SUSPENDED) {
print("[s]");
while(USB_DRIVER.state == USB_SUSPENDED) {
hook_usb_suspend_loop();
}
/* Woken up */
// variables have been already cleared
send_keyboard_report();
#ifdef MOUSEKEY_ENABLE
mousekey_send();
#endif /* MOUSEKEY_ENABLE */
}
keyboard_task();
}
}
开发者ID:0xdec,项目名称:tmk_keyboard,代码行数:62,代码来源:main.c
示例8: process_tap_dance_action_on_reset
static inline void process_tap_dance_action_on_reset (qk_tap_dance_action_t *action)
{
_process_tap_dance_action_fn (&action->state, action->user_data, action->fn.on_reset);
del_mods(action->state.oneshot_mods);
del_weak_mods(action->state.weak_mods);
send_keyboard_report();
}
开发者ID:AGausmann,项目名称:qmk_firmware,代码行数:7,代码来源:process_tap_dance.c
示例9: action_function
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
{
if (record->event.pressed) dprint("P"); else dprint("R");
if (record->tap.interrupted) dprint("i");
# define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
static uint8_t shift_mod;
switch (id) {
// Shift + Esc -> ~
case SHIFT_ESC:
shift_mod = get_mods()&MODS_SHIFT_MASK;
if (record->event.pressed) {
if (shift_mod) {
add_key(KC_GRV);
send_keyboard_report(); // send grave with shift for tilde result
} else {
del_mods(shift_mod); // remove shift
add_key(KC_ESC);
send_keyboard_report(); // send escape
add_mods(shift_mod); // return shift but not sent
}
} else {
if (shift_mod) {
del_key(KC_GRV);
send_keyboard_report();
} else {
del_key(KC_ESC);
send_keyboard_report();
}
}
break;
case SHIFT_BSPC:
shift_mod = get_mods()&MODS_SHIFT_MASK;
if (record->event.pressed) {
if (shift_mod) {
add_key(KC_BSLS);
send_keyboard_report(); // send backslash with shift for pipe result
} else {
del_mods(shift_mod); // remove shift
add_key(KC_BSPC);
send_keyboard_report(); // send backspace
add_mods(shift_mod); // return shift but not sent
}
} else {
if (shift_mod) {
del_key(KC_BSLS);
send_keyboard_report();
} else {
del_key(KC_BSPC);
send_keyboard_report();
}
}
break;
}
}
开发者ID:altercation,项目名称:tmk_firrmware_hhkb_teensy2,代码行数:56,代码来源:keymap_es.c
示例10: tmux
void tmux(bool pressed) {
if (pressed) {
add_mods(MOD_BIT(KC_LALT));
add_key(KC_COMMA);
send_keyboard_report();
clear_keyboard();
}
}
开发者ID:phatina,项目名称:ml67,代码行数:8,代码来源:keymap_phatina_functions.c
示例11: process_tap_dance_action_on_dance_finished
static inline void process_tap_dance_action_on_dance_finished (qk_tap_dance_action_t *action)
{
if (action->state.finished)
return;
action->state.finished = true;
add_mods(action->state.oneshot_mods);
send_keyboard_report();
_process_tap_dance_action_fn (&action->state, action->user_data, action->fn.on_dance_finished);
}
开发者ID:adamclerk,项目名称:qmk_firmware,代码行数:9,代码来源:process_tap_dance.c
示例12: special_esc
void special_esc(bool pressed) {
if (pressed) {
if (shifted() || guied()) {
add_key(KC_GRV);
} else {
add_key(KC_ESC);
}
send_keyboard_report();
} else {
clear_keyboard_but_mods();
}
}
开发者ID:phatina,项目名称:ml67,代码行数:12,代码来源:keymap_phatina_functions.c
示例13: action_function
/*
* user defined action function
*/
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
{
if (record->event.pressed) dprint("P"); else dprint("R");
dprintf("%d", record->tap.count);
if (record->tap.interrupted) dprint("i");
dprint("\n");
switch (id) {
case LSHIFT_LPAREN:
// Shift parentheses example: LShft + tap '('
// http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses
// http://geekhack.org/index.php?topic=41989.msg1304899#msg1304899
if (record->event.pressed) {
if (record->tap.count > 0 && !record->tap.interrupted) {
if (record->tap.interrupted) {
dprint("tap interrupted\n");
register_mods(MOD_BIT(KC_LSHIFT));
}
} else {
register_mods(MOD_BIT(KC_LSHIFT));
}
} else {
if (record->tap.count > 0 && !(record->tap.interrupted)) {
add_weak_mods(MOD_BIT(KC_LSHIFT));
send_keyboard_report();
register_code(KC_9);
unregister_code(KC_9);
del_weak_mods(MOD_BIT(KC_LSHIFT));
send_keyboard_report();
record->tap.count = 0; // ad hoc: cancel tap
} else {
unregister_mods(MOD_BIT(KC_LSHIFT));
}
}
break;
}
}
开发者ID:ageaenes,项目名称:tmk_keyboard,代码行数:40,代码来源:keymap_henz.c
示例14: mod_tap_fn
// Tap dance functions
void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data) {
switch (state->count) {
case 1:
register_mods(MOD_BIT(tap_dance_keys[state->keycode - QK_TAP_DANCE]));
send_keyboard_report();
break;
case 2:
layer_on(_L2);
break;
case 3:
layer_off(_L2);
layer_on(_L1);
break;
default:
reset_tap_dance(state);
}
}
开发者ID:Talljoe,项目名称:qmk_firmware,代码行数:18,代码来源:keymap.c
示例15: matrix_scan_user
void matrix_scan_user(void) {
// We abuse this for early sending of key
// Key repeat only on QWER/SYMB layers
if (cMode != QWERTY || !inChord) return;
// Check timers
#ifndef NO_REPEAT
if (repEngaged && timer_elapsed(repTimer) > REP_DELAY) {
// Process Key for report
processChord(false);
// Send report to host
send_keyboard_report();
clear_keyboard();
repTimer = timer_read();
}
if (!repEngaged && timer_elapsed(repTimer) > REP_INIT_DELAY) {
repEngaged = true;
}
#endif
};
开发者ID:Xyverz,项目名称:qmk_firmware,代码行数:22,代码来源:sten.c
示例16: mod_reset_fn
void mod_reset_fn(qk_tap_dance_state_t *state, void *user_data) {
layer_off(_L1);
layer_off(_L2);
unregister_mods(MOD_BIT(tap_dance_keys[state->keycode - QK_TAP_DANCE]));
send_keyboard_report();
}
开发者ID:Talljoe,项目名称:qmk_firmware,代码行数:6,代码来源:keymap.c
示例17: register_code
/** \brief Utilities for actions. (FIXME: Needs better description)
*
* FIXME: Needs documentation.
*/
void register_code(uint8_t code)
{
if (code == KC_NO) {
return;
}
#ifdef LOCKING_SUPPORT_ENABLE
else if (KC_LOCKING_CAPS == code) {
#ifdef LOCKING_RESYNC_ENABLE
// Resync: ignore if caps lock already is on
if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) return;
#endif
add_key(KC_CAPSLOCK);
send_keyboard_report();
wait_ms(100);
del_key(KC_CAPSLOCK);
send_keyboard_report();
}
else if (KC_LOCKING_NUM == code) {
#ifdef LOCKING_RESYNC_ENABLE
if (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) return;
#endif
add_key(KC_NUMLOCK);
send_keyboard_report();
wait_ms(100);
del_key(KC_NUMLOCK);
send_keyboard_report();
}
else if (KC_LOCKING_SCROLL == code) {
#ifdef LOCKING_RESYNC_ENABLE
if (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) return;
#endif
add_key(KC_SCROLLLOCK);
send_keyboard_report();
wait_ms(100);
del_key(KC_SCROLLLOCK);
send_keyboard_report();
}
#endif
else if IS_KEY(code) {
// TODO: should push command_proc out of this block?
if (command_proc(code)) return;
#ifndef NO_ACTION_ONESHOT
/* TODO: remove
if (oneshot_state.mods && !oneshot_state.disabled) {
uint8_t tmp_mods = get_mods();
add_mods(oneshot_state.mods);
add_key(code);
send_keyboard_report();
set_mods(tmp_mods);
send_keyboard_report();
oneshot_cancel();
} else
*/
#endif
{
add_key(code);
send_keyboard_report();
}
}
else if IS_MOD(code) {
开发者ID:20lives,项目名称:qmk_firmware,代码行数:71,代码来源:action.c
示例18: qk_unregister_weak_mods
static inline void qk_unregister_weak_mods(uint8_t kc) {
del_weak_mods(MOD_BIT(kc));
send_keyboard_report();
}
开发者ID:kipricker,项目名称:qmk_firmware,代码行数:4,代码来源:quantum.c
示例19: main
/* Main thread
*/
int main(void) {
/* ChibiOS/RT init */
halInit();
chSysInit();
// TESTING
// chThdCreateStatic(waBlinkerThread, sizeof(waBlinkerThread), NORMALPRIO, blinkerThread, NULL);
/* Init USB */
init_usb_driver(&USB_DRIVER);
/* init printf */
init_printf(NULL,sendchar_pf);
#ifdef SERIAL_LINK_ENABLE
init_serial_link();
#endif
#ifdef VISUALIZER_ENABLE
visualizer_init();
#endif
host_driver_t* driver = NULL;
/* Wait until the USB or serial link is active */
while (true) {
if(USB_DRIVER.state == USB_ACTIVE) {
driver = &chibios_driver;
break;
}
#ifdef SERIAL_LINK_ENABLE
if(is_serial_link_connected()) {
driver = get_serial_link_driver();
break;
}
serial_link_update();
#endif
chThdSleepMilliseconds(50);
}
/* Do need to wait here!
* Otherwise the next print might start a transfer on console EP
* before the USB is completely ready, which sometimes causes
* HardFaults.
*/
chThdSleepMilliseconds(50);
print("USB configured.\n");
/* init TMK modules */
keyboard_init();
host_set_driver(driver);
#ifdef SLEEP_LED_ENABLE
sleep_led_init();
#endif
print("Keyboard start.\n");
/* Main loop */
while(true) {
if(USB_DRIVER.state == USB_SUSPENDED) {
print("[s]");
#ifdef VISUALIZER_ENABLE
visualizer_suspend();
#endif
while(USB_DRIVER.state == USB_SUSPENDED) {
/* Do this in the suspended state */
#ifdef SERIAL_LINK_ENABLE
serial_link_update();
#endif
suspend_power_down(); // on AVR this deep sleeps for 15ms
/* Remote wakeup */
if((USB_DRIVER.status & 2) && suspend_wakeup_condition()) {
send_remote_wakeup(&USB_DRIVER);
}
}
/* Woken up */
// variables has been already cleared by the wakeup hook
send_keyboard_report();
#ifdef MOUSEKEY_ENABLE
mousekey_send();
#endif /* MOUSEKEY_ENABLE */
#ifdef VISUALIZER_ENABLE
visualizer_resume();
#endif
}
keyboard_task();
}
}
开发者ID:CommandLineDesign,项目名称:qmk_firmware,代码行数:96,代码来源:main.c
示例20: process_register_key
void process_register_key(uint8_t code)
{
dprintf("process_register_key: code=%X\n", code);
if (code == KC_LAMBDA)
{
dprintf(" lambda\n");
lambda_pressed = 1;
}
else if (code == KC_TILDE)
{
dprintf(" tilde\n");
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_TLDE_S);
send_keyboard_report();
}
else if (code == KC_EXCLAM)
{
dprintf(" exclam\n");
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_EXCL_S);
send_keyboard_report();
}
else if (code == KC_AT_SIGN)
{
dprintf(" at_sign\n");
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_ATSI_S);
send_keyboard_report();
}
else if (code == KC_NUMBER_SIGN)
{
dprintf(" num_sign\n");
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_NUSI_S);
send_keyboard_report();
}
else if (code == KC_DOLLAR_SIGN)
{
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_DOSI_S);
send_keyboard_report();
}
else if (code == KC_PERCENT)
{
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_PCNT_S);
send_keyboard_report();
}
else if (code == KC_CARET)
{
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_CART_S);
send_keyboard_report();
}
else if (code == KC_AMPERSTAND)
{
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_AMPT_S);
send_keyboard_report();
}
else if (code == KC_ASTERISK)
{
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_ASTK_S);
send_keyboard_report();
}
else if (code == KC_LPARENT)
{
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_LPAR_S);
send_keyboard_report();
}
else if (code == KC_RPARENT)
{
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_RPAR_S);
send_keyboard_report();
}
else if (code == KC_UNDERSCORE)
{
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_UNDS_S);
send_keyboard_report();
}
else if (code == KC_PLUS)
{
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_PLUS_S);
send_keyboard_report();
}
else if (code == KC_LCBRACKET)
{
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_LCBR_S);
send_keyboard_report();
}
else if (code == KC_RCBRACKET)
{
add_mods(MOD_BIT(KC_LSFT));
add_key(KC_RCBR_S);
//.........这里部分代码省略.........
开发者ID:renzhi,项目名称:tmk_keyboard,代码行数:101,代码来源:process_key.c
注:本文中的send_keyboard_report函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论