From 7b59505799788cb5542a7144aaa8a93d03efcb63 Mon Sep 17 00:00:00 2001 From: Tobias Diedrich Date: Sun, 16 Jan 2022 21:58:00 +0100 Subject: [PATCH] Add FN-key handling for F1-F3 Enables Mute/VolumeUp/VolumeDown --- main.s | 80 ++++++++++++++++++++++++++++++++++++++++++------------ pinout.txt | 24 ++++++++++++++++ 2 files changed, 86 insertions(+), 18 deletions(-) diff --git a/main.s b/main.s index feef63b..4d71dde 100644 --- a/main.s +++ b/main.s @@ -146,7 +146,7 @@ keyA EQU keyState0.4 keyB EQU keyState0.5 keyC EQU keyState0.6 keyD EQU keyState0.7 -keyE EQU keyState1.0 +keyE EQU keyState1.0 ; 8 keyF EQU keyState1.1 keyG EQU keyState1.2 keyH EQU keyState1.3 @@ -154,7 +154,7 @@ keyI EQU keyState1.4 keyJ EQU keyState1.5 keyK EQU keyState1.6 keyL EQU keyState1.7 -keyM EQU keyState2.0 +keyM EQU keyState2.0 ; 16 keyN EQU keyState2.1 keyO EQU keyState2.2 keyP EQU keyState2.3 @@ -162,7 +162,7 @@ keyQ EQU keyState2.4 keyR EQU keyState2.5 keyS EQU keyState2.6 keyT EQU keyState2.7 -keyU EQU keyState3.0 +keyU EQU keyState3.0 ; 24 keyV EQU keyState3.1 keyW EQU keyState3.2 keyX EQU keyState3.3 @@ -170,7 +170,7 @@ keyY EQU keyState3.4 keyZ EQU keyState3.5 key1 EQU keyState3.6 key2 EQU keyState3.7 -key3 EQU keyState4.0 +key3 EQU keyState4.0 ; 32 key4 EQU keyState4.1 key5 EQU keyState4.2 key6 EQU keyState4.3 @@ -178,7 +178,7 @@ key7 EQU keyState4.4 key8 EQU keyState4.5 key9 EQU keyState4.6 key0 EQU keyState4.7 -keyRETURN EQU keyState5.0 +keyRETURN EQU keyState5.0 ; 40 keyESC EQU keyState5.1 keyBACKSPACE EQU keyState5.2 keyTAB EQU keyState5.3 @@ -186,7 +186,7 @@ keySPACE EQU keyState5.4 keyMINUS EQU keyState5.5 keyEQUALS EQU keyState5.6 keyLEFTBRACKET EQU keyState5.7 -keyRIGHTBRACKET EQU keyState6.0 +keyRIGHTBRACKET EQU keyState6.0 ; 48 keyBACKSLASH EQU keyState6.1 keyNONUSHASH EQU keyState6.2 keySEMICOLON EQU keyState6.3 @@ -194,7 +194,7 @@ keyAPOSTROPHE EQU keyState6.4 keyGRAVE EQU keyState6.5 keyCOMMA EQU keyState6.6 keyPERIOD EQU keyState6.7 -keySLASH EQU keyState7.0 +keySLASH EQU keyState7.0 ; 56 keyCAPSLOCK EQU keyState7.1 keyF1 EQU keyState7.2 keyF2 EQU keyState7.3 @@ -202,7 +202,7 @@ keyF3 EQU keyState7.4 keyF4 EQU keyState7.5 keyF5 EQU keyState7.6 keyF6 EQU keyState7.7 -keyF7 EQU keyState8.0 +keyF7 EQU keyState8.0 ; 64 keyF8 EQU keyState8.1 keyF9 EQU keyState8.2 keyF10 EQU keyState8.3 @@ -210,7 +210,7 @@ keyF11 EQU keyState8.4 keyF12 EQU keyState8.5 keyPRINTSCREEN EQU keyState8.6 keySCROLLLOCK EQU keyState8.7 -keyPAUSE EQU keyState9.0 +keyPAUSE EQU keyState9.0 ; 72 keyINSERT EQU keyState9.1 keyHOME EQU keyState9.2 keyPAGEUP EQU keyState9.3 @@ -218,7 +218,7 @@ keyDELETE EQU keyState9.4 keyEND EQU keyState9.5 keyPAGEDOWN EQU keyState9.6 keyRIGHT EQU keyState9.7 -keyLEFT EQU keyState10.0 +keyLEFT EQU keyState10.0 ; 80 keyDOWN EQU keyState10.1 keyUP EQU keyState10.2 keyNUMLOCK EQU keyState10.3 @@ -226,7 +226,7 @@ keyKPDIV EQU keyState10.4 keyKPMUL EQU keyState10.5 keyKPMINUS EQU keyState10.6 keyKPPLUS EQU keyState10.7 -keyKPENTER EQU keyState11.0 +keyKPENTER EQU keyState11.0 ; 88 keyKP1 EQU keyState11.1 keyKP2 EQU keyState11.2 keyKP3 EQU keyState11.3 @@ -234,7 +234,7 @@ keyKP4 EQU keyState11.4 keyKP5 EQU keyState11.5 keyKP6 EQU keyState11.6 keyKP7 EQU keyState11.7 -keyKP8 EQU keyState12.0 +keyKP8 EQU keyState12.0 ; 96 keyKP9 EQU keyState12.1 keyKP0 EQU keyState12.2 keyKPCOLON EQU keyState12.3 @@ -243,6 +243,11 @@ keyAPPLICATION EQU keyState12.5 keyPOWER EQU keyState12.6 keyKPEQUALS EQU keyState12.7 ; 103 +keyFIND EQU keyState15.6 ; 126 +keyMUTE EQU keyState15.7 ; 127 +keyVOLUMEUP EQU keyState16.0 ; 128 +keyVOLUMEDOWN EQU keyState16.1 ; 129 + keyINTERNATIONAL1 EQU keyState16.7 ; 135 keyINTERNATIONAL2 EQU keyState17.0 keyINTERNATIONAL3 EQU keyState17.1 @@ -784,6 +789,19 @@ _kbd_sense_row0: B0BSET keyNONE RET +_key_f3_clear: + B0BCLR keyF3 + B0BCLR keyVOLUMEUP + RET +_key_f3_set: + B0BTS0 keyFN + JMP @F + B0BSET keyF3 + RET +@@: + B0BSET keyVOLUMEUP + RET + _kbd_sense_row1: ; DB keyTAB, keyF3, keyCAPSLOCK, keyNONE, keyT, keyY, keyRIGHTBRACKET, keyF7 B0BTS0 S0 @@ -791,9 +809,9 @@ _kbd_sense_row1: B0BTS1 S0 B0BSET keyTAB B0BTS0 S1 - B0BCLR keyF3 + CALL _key_f3_clear B0BTS1 S1 - B0BSET keyF3 + CALL _key_f3_set B0BTS0 S2 B0BCLR keyCAPSLOCK B0BTS1 S2 @@ -924,6 +942,32 @@ _kbd_sense_row2: B0BSET keyNONE RET +_key_f1_clear: + B0BCLR keyF1 + B0BCLR keyMUTE + RET +_key_f1_set: + B0BTS0 keyFN + JMP @F + B0BSET keyF1 + RET +@@: + B0BSET keyMUTE + RET + +_key_f2_clear: + B0BCLR keyF2 + B0BCLR keyVOLUMEDOWN + RET +_key_f2_set: + B0BTS0 keyFN + JMP @F + B0BSET keyF2 + RET +@@: + B0BSET keyVOLUMEDOWN + RET + _kbd_sense_row3: ; DB keyGRAVE, keyF2, keyF1, keyLCTRL, key5, key6, keyEQUALS, keyF8 B0BTS0 S0 @@ -931,13 +975,13 @@ _kbd_sense_row3: B0BTS1 S0 B0BSET keyGRAVE B0BTS0 S1 - B0BCLR keyF2 + CALL _key_f2_clear B0BTS1 S1 - B0BSET keyF2 + CALL _key_f2_set B0BTS0 S2 - B0BCLR keyF1 + CALL _key_f1_clear B0BTS1 S2 - B0BSET keyF1 + CALL _key_f1_set B0BTS0 S3 B0BCLR keyLCTRL B0BTS1 S3 diff --git a/pinout.txt b/pinout.txt index 26faa47..fdc8d93 100644 --- a/pinout.txt +++ b/pinout.txt @@ -106,6 +106,30 @@ INTERNATIONAL4 F7 O F8 L UP KP_MEMSTORE (none) (none) FN END PAUSE LEFT P0.3/S14 (none) (none) (none) DELETE PRINTSCREEN INSERT PAGEUP PAGEDOWN P0.6/S15 +FN-Key-Combos on origfw: +(2) secondary evdev "consumer control" +FN+F1 -> (2) MUTE (113) +FN+F2 -> (2) VOLUMEDOWN (114) +FN+F3 -> (2) VOLUMEUP (115) +FN+F4 -> No action (symbol: toggle microphone) +FN+F5 -> (2) BRIGHTNESSDOWN (224) +FN+F6 -> (2) BRIGHTNESSUP (225) +FN+F7 -> LGUI+P (125 + 25) (open display settings) +FN+F8 -> No action (symbol: toggle rfkill) +FN+F9 -> LGUI+F21 (125 + 191) (open settings) +FN+F10 -> (2) SEARCH (217) +FN+F11 -> LCTRL+LALT+Tab +FN+F12 -> No action +FN+P -> PAUSE (119) +FN+S -> LALT+SYSRQ (56+99) +FN+K -> SCROLLLOCK (70) +FN+B -> LCTRL+PAUSE (29+119) +FnLk not functional? + +Suggested for Thinkpads on https://support.lenovo.com/us/de/solutions/ht503647: +Fn+4 -> Suspend machine +Fn+Spacebar -> Toggle keyboard backlight modes (not applicable) + Suspend/Resume notes: - In FS mode, if IDLE (J state) is held for more than 3ms without SOF, this signals SUSPEND. During suspend J state is kept. D+ pullup