Skip to content

Commit b8bb09c

Browse files
committed
[modify] make sure F1-12 key scancode is consistent
Signed-off-by: Leo_Tsai <[email protected]>
1 parent 1795d9d commit b8bb09c

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

board/hx20/keyboard_customization.c

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ void board_kblight_init(void)
235235
#define FN_PRESSED BIT(0)
236236
#define FN_LOCKED BIT(1)
237237
static uint8_t Fn_key;
238+
static uint8_t keep_fn_key_code;
238239

239240
void fnkey_shutdown(void) {
240241
uint8_t current_kb = 0;
@@ -263,13 +264,26 @@ void fnkey_startup(void) {
263264
}
264265
DECLARE_HOOK(HOOK_CHIPSET_STARTUP, fnkey_startup, HOOK_PRIO_DEFAULT);
265266

267+
static void fn_keep_check(int8_t pressed)
268+
{
269+
if (pressed)
270+
keep_fn_key_code = 1;
271+
else
272+
keep_fn_key_code = 0;
273+
}
274+
266275
int hotkey_F1_F12(uint16_t *key_code, uint16_t lock, int8_t pressed)
267276
{
268277
const uint16_t prss_key = *key_code;
269278

270-
if (!(Fn_key & FN_LOCKED) && lock & FN_PRESSED)
279+
if (!(Fn_key & FN_LOCKED) &&
280+
(lock & FN_PRESSED) &&
281+
!keep_fn_key_code)
271282
return EC_SUCCESS;
272-
else if (Fn_key & FN_LOCKED && !(Fn_key & FN_PRESSED))
283+
else if (Fn_key & FN_LOCKED &&
284+
!(lock & FN_PRESSED))
285+
return EC_SUCCESS;
286+
else if (!pressed && !keep_fn_key_code)
273287
return EC_SUCCESS;
274288

275289
switch (prss_key) {
@@ -278,33 +292,26 @@ int hotkey_F1_F12(uint16_t *key_code, uint16_t lock, int8_t pressed)
278292
break;
279293
case SCANCODE_F2: /* VOLUME_DOWN */
280294
*key_code = SCANCODE_VOLUME_DOWN;
281-
282295
break;
283296
case SCANCODE_F3: /* VOLUME_UP */
284297
*key_code = SCANCODE_VOLUME_UP;
285-
286298
break;
287299
case SCANCODE_F4: /* PREVIOUS_TRACK */
288300
*key_code = SCANCODE_PREV_TRACK;
289-
290301
break;
291302
case SCANCODE_F5: /* PLAY_PAUSE */
292303
*key_code = 0xe034;
293-
294304
break;
295305
case SCANCODE_F6: /* NEXT_TRACK */
296306
*key_code = SCANCODE_NEXT_TRACK;
297-
298307
break;
299308
case SCANCODE_F7: /* TODO: DIM_SCREEN */
300309
update_hid_key(HID_KEY_DISPLAY_BRIGHTNESS_DN, pressed);
301310
return EC_ERROR_UNIMPLEMENTED;
302-
303311
break;
304312
case SCANCODE_F8: /* TODO: BRIGHTEN_SCREEN */
305313
update_hid_key(HID_KEY_DISPLAY_BRIGHTNESS_UP, pressed);
306314
return EC_ERROR_UNIMPLEMENTED;
307-
308315
break;
309316
case SCANCODE_F9: /* EXTERNAL_DISPLAY */
310317
if (pressed) {
@@ -319,7 +326,6 @@ int hotkey_F1_F12(uint16_t *key_code, uint16_t lock, int8_t pressed)
319326
case SCANCODE_F10: /* FLIGHT_MODE */
320327
update_hid_key(HID_KEY_AIRPLANE_MODE, pressed);
321328
return EC_ERROR_UNIMPLEMENTED;
322-
323329
break;
324330
case SCANCODE_F11:
325331
/*
@@ -333,9 +339,11 @@ int hotkey_F1_F12(uint16_t *key_code, uint16_t lock, int8_t pressed)
333339
case SCANCODE_F12: /* TODO: FRAMEWORK */
334340
/* Media Select scan code */
335341
*key_code = 0xE050;
336-
337342
break;
343+
default:
344+
return EC_SUCCESS;
338345
}
346+
fn_keep_check(pressed);
339347
return EC_SUCCESS;
340348
}
341349

0 commit comments

Comments
 (0)