Enable FnLock and FnCtrlSwap functionality
FN+ESC -> Toggle FnLock for F1-F12 row (suppresses ESC) FN+RCTRL -> Toggle FnCtrlSwap (does not suppress RCTRL)
This commit is contained in:
@@ -278,6 +278,7 @@ keyRGUI EQU modifierState1.7 ; 231
|
|||||||
keyFN EQU modifierState2.0
|
keyFN EQU modifierState2.0
|
||||||
stateFnLock EQU modifierState2.1
|
stateFnLock EQU modifierState2.1
|
||||||
stateFnCtrlSwap EQU modifierState2.2
|
stateFnCtrlSwap EQU modifierState2.2
|
||||||
|
stateHiddenESC EQU modifierState2.3
|
||||||
|
|
||||||
|
|
||||||
.CODE
|
.CODE
|
||||||
@@ -719,12 +720,45 @@ _kbd_sense:
|
|||||||
JMP _kbd_sense_row6
|
JMP _kbd_sense_row6
|
||||||
JMP _kbd_sense_row7
|
JMP _kbd_sense_row7
|
||||||
|
|
||||||
|
_key_get_fnrow:
|
||||||
|
B0BTS0 keyFN
|
||||||
|
JMP @F
|
||||||
|
B0BCLR FC
|
||||||
|
B0BTS0 stateFnLock
|
||||||
|
B0BSET FC
|
||||||
|
RET
|
||||||
|
@@:
|
||||||
|
B0BSET FC
|
||||||
|
B0BTS0 stateFnLock
|
||||||
|
B0BCLR FC
|
||||||
|
RET
|
||||||
|
|
||||||
|
_key_esc_clear:
|
||||||
|
B0BCLR keyESC
|
||||||
|
B0BCLR stateHiddenESC
|
||||||
|
RET
|
||||||
|
|
||||||
|
_key_esc_set:
|
||||||
|
B0BTS0 keyFN
|
||||||
|
JMP @F
|
||||||
|
B0BSET keyESC
|
||||||
|
RET
|
||||||
|
@@:
|
||||||
|
; Make sure we only toggle once until ESC is released
|
||||||
|
B0BTS0 stateHiddenESC
|
||||||
|
RET
|
||||||
|
B0BSET stateHiddenESC
|
||||||
|
; Toggle stateFnLock
|
||||||
|
MOV A, #0x02
|
||||||
|
XOR modifierState2, A
|
||||||
|
RET
|
||||||
|
|
||||||
_kbd_sense_row0:
|
_kbd_sense_row0:
|
||||||
; DB keyESC, keyF4, keyNONUSBACKSLASH, keyNONE, keyG, keyH, keyF6, keyINTERNATIONAL4
|
; DB keyESC, keyF4, keyNONUSBACKSLASH, keyNONE, keyG, keyH, keyF6, keyINTERNATIONAL4
|
||||||
B0BTS0 S0
|
B0BTS0 S0
|
||||||
B0BCLR keyESC
|
CALL _key_esc_clear
|
||||||
B0BTS1 S0
|
B0BTS1 S0
|
||||||
B0BSET keyESC
|
CALL _key_esc_set
|
||||||
B0BTS0 S1
|
B0BTS0 S1
|
||||||
B0BCLR keyF4
|
B0BCLR keyF4
|
||||||
B0BTS1 S1
|
B0BTS1 S1
|
||||||
@@ -794,7 +828,8 @@ _key_f3_clear:
|
|||||||
B0BCLR keyVOLUMEUP
|
B0BCLR keyVOLUMEUP
|
||||||
RET
|
RET
|
||||||
_key_f3_set:
|
_key_f3_set:
|
||||||
B0BTS0 keyFN
|
CALL _key_get_fnrow
|
||||||
|
B0BTS0 FC
|
||||||
JMP @F
|
JMP @F
|
||||||
B0BSET keyF3
|
B0BSET keyF3
|
||||||
RET
|
RET
|
||||||
@@ -947,7 +982,8 @@ _key_f1_clear:
|
|||||||
B0BCLR keyMUTE
|
B0BCLR keyMUTE
|
||||||
RET
|
RET
|
||||||
_key_f1_set:
|
_key_f1_set:
|
||||||
B0BTS0 keyFN
|
CALL _key_get_fnrow
|
||||||
|
B0BTS0 FC
|
||||||
JMP @F
|
JMP @F
|
||||||
B0BSET keyF1
|
B0BSET keyF1
|
||||||
RET
|
RET
|
||||||
@@ -960,7 +996,8 @@ _key_f2_clear:
|
|||||||
B0BCLR keyVOLUMEDOWN
|
B0BCLR keyVOLUMEDOWN
|
||||||
RET
|
RET
|
||||||
_key_f2_set:
|
_key_f2_set:
|
||||||
B0BTS0 keyFN
|
CALL _key_get_fnrow
|
||||||
|
B0BTS0 FC
|
||||||
JMP @F
|
JMP @F
|
||||||
B0BSET keyF2
|
B0BSET keyF2
|
||||||
RET
|
RET
|
||||||
@@ -968,6 +1005,19 @@ _key_f2_set:
|
|||||||
B0BSET keyVOLUMEDOWN
|
B0BSET keyVOLUMEDOWN
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
_key_lctrl_clear:
|
||||||
|
B0BTS0 stateFnCtrlSwap
|
||||||
|
B0BCLR keyFN
|
||||||
|
B0BTS1 stateFnCtrlSwap
|
||||||
|
B0BCLR keyLCTRL
|
||||||
|
RET
|
||||||
|
_key_lctrl_set:
|
||||||
|
B0BTS0 stateFnCtrlSwap
|
||||||
|
B0BSET keyFN
|
||||||
|
B0BTS1 stateFnCtrlSwap
|
||||||
|
B0BSET keyLCTRL
|
||||||
|
RET
|
||||||
|
|
||||||
_kbd_sense_row3:
|
_kbd_sense_row3:
|
||||||
; DB keyGRAVE, keyF2, keyF1, keyLCTRL, key5, key6, keyEQUALS, keyF8
|
; DB keyGRAVE, keyF2, keyF1, keyLCTRL, key5, key6, keyEQUALS, keyF8
|
||||||
B0BTS0 S0
|
B0BTS0 S0
|
||||||
@@ -983,9 +1033,9 @@ _kbd_sense_row3:
|
|||||||
B0BTS1 S2
|
B0BTS1 S2
|
||||||
CALL _key_f1_set
|
CALL _key_f1_set
|
||||||
B0BTS0 S3
|
B0BTS0 S3
|
||||||
B0BCLR keyLCTRL
|
CALL _key_lctrl_clear
|
||||||
B0BTS1 S3
|
B0BTS1 S3
|
||||||
B0BSET keyLCTRL
|
CALL _key_lctrl_set
|
||||||
B0BTS0 S4
|
B0BTS0 S4
|
||||||
B0BCLR key5
|
B0BCLR key5
|
||||||
B0BTS1 S4
|
B0BTS1 S4
|
||||||
@@ -1038,6 +1088,19 @@ _kbd_sense_row3:
|
|||||||
B0BSET keyDELETE
|
B0BSET keyDELETE
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
_key_fn_clear:
|
||||||
|
B0BTS0 stateFnCtrlSwap
|
||||||
|
B0BCLR keyLCTRL
|
||||||
|
B0BTS1 stateFnCtrlSwap
|
||||||
|
B0BCLR keyFN
|
||||||
|
RET
|
||||||
|
_key_fn_set:
|
||||||
|
B0BTS0 stateFnCtrlSwap
|
||||||
|
B0BSET keyLCTRL
|
||||||
|
B0BTS1 stateFnCtrlSwap
|
||||||
|
B0BSET keyFN
|
||||||
|
RET
|
||||||
|
|
||||||
_kbd_sense_row4:
|
_kbd_sense_row4:
|
||||||
; DB keyA, keyD, keyS, keyNONE, keyF, keyJ, keyK, keyL
|
; DB keyA, keyD, keyS, keyNONE, keyF, keyJ, keyK, keyL
|
||||||
B0BTS0 S0
|
B0BTS0 S0
|
||||||
@@ -1099,9 +1162,9 @@ _kbd_sense_row4:
|
|||||||
B0BTS1 S13
|
B0BTS1 S13
|
||||||
B0BSET keyNONE
|
B0BSET keyNONE
|
||||||
B0BTS0 S14
|
B0BTS0 S14
|
||||||
B0BCLR keyFN
|
CALL _key_fn_clear
|
||||||
B0BTS1 S14
|
B0BTS1 S14
|
||||||
B0BSET keyFN
|
CALL _key_fn_set
|
||||||
B0BTS0 S15
|
B0BTS0 S15
|
||||||
B0BCLR keyPRINTSCREEN
|
B0BCLR keyPRINTSCREEN
|
||||||
B0BTS1 S15
|
B0BTS1 S15
|
||||||
@@ -1178,6 +1241,24 @@ _kbd_sense_row5:
|
|||||||
B0BSET keyINSERT
|
B0BSET keyINSERT
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
_key_rctrl_clear:
|
||||||
|
B0BCLR keyRCTRL
|
||||||
|
RET
|
||||||
|
_key_rctrl_set:
|
||||||
|
B0BTS0 keyFN
|
||||||
|
JMP @F
|
||||||
|
B0BSET keyRCTRL
|
||||||
|
RET
|
||||||
|
@@:
|
||||||
|
; Make sure we only toggle once until RCTRL is released
|
||||||
|
B0BTS0 keyRCTRL
|
||||||
|
RET
|
||||||
|
B0BSET keyRCTRL
|
||||||
|
; Toggle stateFnCtrlSwap
|
||||||
|
MOV A, #0x04
|
||||||
|
XOR modifierState2, A
|
||||||
|
RET
|
||||||
|
|
||||||
_kbd_sense_row6:
|
_kbd_sense_row6:
|
||||||
; DB keyZ, keyC, keyX, keyRCTRL, keyV, keyM, keyCOMMA, keyPERIOD
|
; DB keyZ, keyC, keyX, keyRCTRL, keyV, keyM, keyCOMMA, keyPERIOD
|
||||||
B0BTS0 S0
|
B0BTS0 S0
|
||||||
@@ -1193,9 +1274,9 @@ _kbd_sense_row6:
|
|||||||
B0BTS1 S2
|
B0BTS1 S2
|
||||||
B0BSET keyX
|
B0BSET keyX
|
||||||
B0BTS0 S3
|
B0BTS0 S3
|
||||||
B0BCLR keyRCTRL
|
CALL _key_rctrl_clear
|
||||||
B0BTS1 S3
|
B0BTS1 S3
|
||||||
B0BSET keyRCTRL
|
CALL _key_rctrl_set
|
||||||
B0BTS0 S4
|
B0BTS0 S4
|
||||||
B0BCLR keyV
|
B0BCLR keyV
|
||||||
B0BTS1 S4
|
B0BTS1 S4
|
||||||
|
|||||||
Reference in New Issue
Block a user