Adding None keyword (0.3b)
- Prevents fall-through - Cannot be combined with other result capabilities
This commit is contained in:
parent
d91c0fb23f
commit
d05f7ae820
@ -168,16 +168,23 @@ class Backend( BackendBase ):
|
|||||||
|
|
||||||
# Add each of the arguments of the capability
|
# Add each of the arguments of the capability
|
||||||
for arg in range( 0, len( resultItem[1] ) ):
|
for arg in range( 0, len( resultItem[1] ) ):
|
||||||
# If this is a CONSUMER_ element, needs to be split into 2 elements
|
# Special cases
|
||||||
if isinstance( resultItem[1][ arg ], str ) and re.match( '^CONSUMER_', resultItem[1][ arg ] ):
|
if isinstance( resultItem[1][ arg ], str ):
|
||||||
tag = resultItem[1][ arg ].split( '_', 1 )[1]
|
# If this is a CONSUMER_ element, needs to be split into 2 elements
|
||||||
if '_' in tag:
|
if re.match( '^CONSUMER_', resultItem[1][ arg ] ):
|
||||||
tag = tag.replace( '_', '' )
|
tag = resultItem[1][ arg ].split( '_', 1 )[1]
|
||||||
lookupNum = kll_hid_lookup_dictionary['ConsCode'][ tag ][1]
|
if '_' in tag:
|
||||||
byteForm = lookupNum.to_bytes( 2, byteorder='little' ) # XXX Yes, little endian from how the uC structs work
|
tag = tag.replace( '_', '' )
|
||||||
self.fill_dict['ResultMacros'] += "{0}, {1}, ".format( *byteForm )
|
lookupNum = kll_hid_lookup_dictionary['ConsCode'][ tag ][1]
|
||||||
else:
|
byteForm = lookupNum.to_bytes( 2, byteorder='little' ) # XXX Yes, little endian from how the uC structs work
|
||||||
self.fill_dict['ResultMacros'] += "{0}, ".format( resultItem[1][ arg ] )
|
self.fill_dict['ResultMacros'] += "{0}, {1}, ".format( *byteForm )
|
||||||
|
continue
|
||||||
|
|
||||||
|
# None, fall-through disable
|
||||||
|
elif resultItem[0] is self.capabilityLookup('NONE'):
|
||||||
|
continue
|
||||||
|
|
||||||
|
self.fill_dict['ResultMacros'] += "{0}, ".format( resultItem[1][ arg ] )
|
||||||
|
|
||||||
# If sequence is longer than 1, append a sequence spacer at the end of the sequence
|
# If sequence is longer than 1, append a sequence spacer at the end of the sequence
|
||||||
# Required by USB to end at sequence without holding the key down
|
# Required by USB to end at sequence without holding the key down
|
||||||
|
@ -39,3 +39,5 @@ S0x45 : SYS[0xA0];
|
|||||||
S0x46 : SYS["UnDock"];
|
S0x46 : SYS["UnDock"];
|
||||||
S0x47 : SYS0xA2;
|
S0x47 : SYS0xA2;
|
||||||
|
|
||||||
|
S0x48 : None;
|
||||||
|
|
||||||
|
7
kll.py
7
kll.py
@ -255,6 +255,10 @@ def make_consCode_number( token ):
|
|||||||
def make_sysCode_number( token ):
|
def make_sysCode_number( token ):
|
||||||
return make_hidCode_number( 'SysCode', token )
|
return make_hidCode_number( 'SysCode', token )
|
||||||
|
|
||||||
|
# Replace key-word with None specifier (which indicates a noneOut capability)
|
||||||
|
def make_none( token ):
|
||||||
|
return [[[('NONE', 0)]]]
|
||||||
|
|
||||||
def make_seqString( token ):
|
def make_seqString( token ):
|
||||||
# Shifted Characters, and amount to move by to get non-shifted version
|
# Shifted Characters, and amount to move by to get non-shifted version
|
||||||
# US ANSI
|
# US ANSI
|
||||||
@ -535,6 +539,7 @@ usbCode = tokenType('USBCode') >> make_usbCode
|
|||||||
scanCode = tokenType('ScanCode') >> make_scanCode
|
scanCode = tokenType('ScanCode') >> make_scanCode
|
||||||
consCode = tokenType('ConsCode') >> make_consCode
|
consCode = tokenType('ConsCode') >> make_consCode
|
||||||
sysCode = tokenType('SysCode') >> make_sysCode
|
sysCode = tokenType('SysCode') >> make_sysCode
|
||||||
|
none = tokenType('None') >> make_none
|
||||||
name = tokenType('Name')
|
name = tokenType('Name')
|
||||||
number = tokenType('Number') >> make_number
|
number = tokenType('Number') >> make_number
|
||||||
comma = tokenType('Comma')
|
comma = tokenType('Comma')
|
||||||
@ -603,7 +608,7 @@ capFunc_sequence = oneplus( ( capFunc_combo | seqString ) + skip( maybe( comma
|
|||||||
# Trigger / Result Codes
|
# Trigger / Result Codes
|
||||||
triggerCode_outerList = scanCode_sequence >> optionExpansion
|
triggerCode_outerList = scanCode_sequence >> optionExpansion
|
||||||
triggerUSBCode_outerList = usbCode_sequence >> optionExpansion >> hidCodeToCapability
|
triggerUSBCode_outerList = usbCode_sequence >> optionExpansion >> hidCodeToCapability
|
||||||
resultCode_outerList = capFunc_sequence >> optionExpansion >> hidCodeToCapability
|
resultCode_outerList = ( ( capFunc_sequence >> optionExpansion ) | none ) >> hidCodeToCapability
|
||||||
|
|
||||||
|
|
||||||
## Main Rules
|
## Main Rules
|
||||||
|
@ -20,6 +20,9 @@
|
|||||||
|
|
||||||
# Rather than generating tables of hex USB codes for the keymapping tables, readable defines are used (which correspond to usb_hid.h)
|
# Rather than generating tables of hex USB codes for the keymapping tables, readable defines are used (which correspond to usb_hid.h)
|
||||||
hid_lookup_dictionary = dict([
|
hid_lookup_dictionary = dict([
|
||||||
|
# Fall-through block
|
||||||
|
( ('NONE', 0), '' ), # Special case, there are no arguments
|
||||||
|
|
||||||
# USB HID Keyboard Codes
|
# USB HID Keyboard Codes
|
||||||
( ('USB', 0x00), 'KEY_NOEVENT' ), # Event, not a physical key
|
( ('USB', 0x00), 'KEY_NOEVENT' ), # Event, not a physical key
|
||||||
( ('USB', 0x01), 'KEY_ERRORROLLOVER' ), # Event, not a physical key
|
( ('USB', 0x01), 'KEY_ERRORROLLOVER' ), # Event, not a physical key
|
||||||
|
Reference in New Issue
Block a user