mirror of
https://github.com/dekuNukem/USB4VC.git
synced 2025-10-31 11:26:46 -07:00
multibyte m0110a command working, capslock working
This commit is contained in:
@@ -11,12 +11,12 @@
|
||||
#define M0110A_LINE_IDLE 1
|
||||
#define M0110A_LINE_HOST_REQ 2
|
||||
#define M0110A_TIMEOUT 3
|
||||
#define M0110A_UNKNOWN_CODE 4
|
||||
|
||||
#define M0110A_KB_TO_PC_CMD_BUF_SIZE 4
|
||||
#define LINUX_KEYCODE_TO_M0110A_SCANCODE_SIZE 128
|
||||
|
||||
#define CODE_UNUSED 0
|
||||
#define CODE_HANDLE_SEPARATELY 0xff
|
||||
|
||||
extern const uint8_t linux_keycode_to_m0110a_scancode_lookup[LINUX_KEYCODE_TO_M0110A_SCANCODE_SIZE];
|
||||
|
||||
@@ -37,6 +37,8 @@ uint8_t m0110a_cmd_buf_peek(m0110a_cmd_buf *lb, uint8_t* code);
|
||||
void m0110a_cmd_buf_pop(m0110a_cmd_buf *lb);
|
||||
uint8_t m0110a_cmd_buf_is_empty(m0110a_cmd_buf *lb);
|
||||
void m0110a_cmd_buf_reset(m0110a_cmd_buf *lb);
|
||||
uint8_t make_m0110a_scancode(uint8_t linux_key_code, uint8_t linux_key_value, m0110a_cmd_buf *lb);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
<RegID>0</RegID>
|
||||
<MDITabState>
|
||||
<Len>1222</Len>
|
||||
<Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000009000000000000000100000042433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF6C433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C447269766572735C53544D3332463078785F48414C5F4472697665725C496E635C73746D3332663078785F68616C5F74696D2E68000000001373746D3332663078785F68616C5F74696D2E6800000000FFDC7800FFFFFFFF6F433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C447269766572735C434D5349535C4465766963655C53545C53544D3332463078785C496E636C7564655C73746D33326630373278622E68000000000D73746D33326630373278622E6800000000BECEA100FFFFFFFF55433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C4D444B2D41524D5C737461727475705F73746D33326630373278622E730000000015737461727475705F73746D33326630373278622E7300000000F0A0A100FFFFFFFF4A433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C5372635C717561645F656E636F6465722E63000000000E717561645F656E636F6465722E6300000000BCA8E100FFFFFFFF4A433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C496E635C717561645F656E636F6465722E68000000000E717561645F656E636F6465722E68000000009CC1B600FFFFFFFF44433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C5372635C6D30313130612E6300000000086D30313130612E6300000000F7B88600FFFFFFFF45433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C5372635C68656C706572732E63000000000968656C706572732E6300000000D9ADC200FFFFFFFF6D433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C447269766572735C53544D3332463078785F48414C5F4472697665725C5372635C73746D3332663078785F68616C5F6770696F2E63000000001473746D3332663078785F68616C5F6770696F2E6300000000A5C2D700FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000007408000066000000000F000004030000</Data>
|
||||
<Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000009000000060000000100000042433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF6C433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C447269766572735C53544D3332463078785F48414C5F4472697665725C496E635C73746D3332663078785F68616C5F74696D2E68000000001373746D3332663078785F68616C5F74696D2E6800000000FFDC7800FFFFFFFF6F433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C447269766572735C434D5349535C4465766963655C53545C53544D3332463078785C496E636C7564655C73746D33326630373278622E68000000000D73746D33326630373278622E6800000000BECEA100FFFFFFFF55433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C4D444B2D41524D5C737461727475705F73746D33326630373278622E730000000015737461727475705F73746D33326630373278622E7300000000F0A0A100FFFFFFFF4A433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C5372635C717561645F656E636F6465722E63000000000E717561645F656E636F6465722E6300000000BCA8E100FFFFFFFF4A433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C496E635C717561645F656E636F6465722E68000000000E717561645F656E636F6465722E68000000009CC1B600FFFFFFFF44433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C5372635C6D30313130612E6300000000086D30313130612E6300000000F7B88600FFFFFFFF45433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C5372635C68656C706572732E63000000000968656C706572732E6300000000D9ADC200FFFFFFFF6D433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C6170706C655F616C6C5C447269766572735C53544D3332463078785F48414C5F4472697665725C5372635C73746D3332663078785F68616C5F6770696F2E63000000001473746D3332663078785F68616C5F6770696F2E6300000000A5C2D700FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000007408000066000000000F000004030000</Data>
|
||||
</MDITabState>
|
||||
</MDIClientArea>
|
||||
<ViewEx>
|
||||
@@ -3603,12 +3603,12 @@
|
||||
<ActiveMDIGroup>0</ActiveMDIGroup>
|
||||
<MDIGroup>
|
||||
<Size>100</Size>
|
||||
<ActiveTab>0</ActiveTab>
|
||||
<ActiveTab>6</ActiveTab>
|
||||
<Doc>
|
||||
<Name>../Src/main.c</Name>
|
||||
<ColumnNumber>25</ColumnNumber>
|
||||
<TopLine>212</TopLine>
|
||||
<CurrentLine>237</CurrentLine>
|
||||
<ColumnNumber>4</ColumnNumber>
|
||||
<TopLine>255</TopLine>
|
||||
<CurrentLine>279</CurrentLine>
|
||||
<Folding>1</Folding>
|
||||
<ContractedFolders></ContractedFolders>
|
||||
<PaneID>0</PaneID>
|
||||
@@ -3660,9 +3660,9 @@
|
||||
</Doc>
|
||||
<Doc>
|
||||
<Name>..\Src\m0110a.c</Name>
|
||||
<ColumnNumber>0</ColumnNumber>
|
||||
<TopLine>19</TopLine>
|
||||
<CurrentLine>45</CurrentLine>
|
||||
<ColumnNumber>76</ColumnNumber>
|
||||
<TopLine>250</TopLine>
|
||||
<CurrentLine>263</CurrentLine>
|
||||
<Folding>1</Folding>
|
||||
<ContractedFolders></ContractedFolders>
|
||||
<PaneID>0</PaneID>
|
||||
|
||||
Binary file not shown.
@@ -27,9 +27,10 @@ Project File Date: 06/24/2022
|
||||
<h2>Output:</h2>
|
||||
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
|
||||
Build target 'apple_all'
|
||||
compiling m0110a.c...
|
||||
compiling main.c...
|
||||
linking...
|
||||
Program Size: Code=10632 RO-data=520 RW-data=68 ZI-data=2164
|
||||
Program Size: Code=10364 RO-data=520 RW-data=72 ZI-data=2168
|
||||
FromELF: creating hex file...
|
||||
"apple_all\apple_all.axf" - 0 Error(s), 0 Warning(s).
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -114,7 +114,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
|
||||
-IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include
|
||||
|
||||
-IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include
|
||||
|
||||
|
||||
-D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB
|
||||
|
||||
-o apple_all\helpers.o --omf_browse apple_all\helpers.crf --depend apple_all\helpers.d)
|
||||
@@ -153,7 +153,7 @@ I (../Inc/delay_us.h)(0x617487C7)
|
||||
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
|
||||
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h)(0x5DFA0893)
|
||||
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h)(0x5DFA0893)
|
||||
I (../Inc/shared.h)(0x617487BD)
|
||||
I (../Inc/shared.h)(0x617487BD)
|
||||
F (../Src/main.c)(0x62B9C226)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ../Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I ../Drivers/CMSIS/Include
|
||||
|
||||
-I.\RTE\_apple_all
|
||||
@@ -221,7 +221,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim.h)(0x5DFA0893)
|
||||
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h)(0x5DFA0893)
|
||||
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_def.h)(0x5DFA0893)
|
||||
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h)(0x5DFA0880)
|
||||
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h)(0x5DFA0880)
|
||||
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h)(0x5DFA0880)
|
||||
I (../Drivers/CMSIS/Include/core_cm0.h)(0x5DFA0892)
|
||||
I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5D9B4298)
|
||||
I (../Drivers/CMSIS/Include/core_cmInstr.h)(0x5DFA0892)
|
||||
@@ -258,7 +258,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
|
||||
|
||||
-D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB
|
||||
|
||||
-o apple_all\stm32f0xx_hal_msp.o --omf_browse apple_all\stm32f0xx_hal_msp.crf --depend apple_all\stm32f0xx_hal_msp.d)
|
||||
-o apple_all\stm32f0xx_hal_msp.o --omf_browse apple_all\stm32f0xx_hal_msp.crf --depend apple_all\stm32f0xx_hal_msp.d)
|
||||
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893)
|
||||
I (../Inc/stm32f0xx_hal_conf.h)(0x626D7BBD)
|
||||
I (../Inc/main.h)(0x626D7BBE)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -55,12 +55,12 @@ const uint8_t linux_keycode_to_m0110a_scancode_lookup[LINUX_KEYCODE_TO_M0110A_SC
|
||||
0x3d, // KEY_RIGHTBRACE 27
|
||||
0x49, // KEY_ENTER 28
|
||||
0x75, // KEY_LEFTCTRL 29 !!!!! MAPPED TO LEFT OPTION
|
||||
0x1, // KEY_A 30
|
||||
0x3, // KEY_S 31
|
||||
0x5, // KEY_D 32
|
||||
0x7, // KEY_F 33
|
||||
0xb, // KEY_G 34
|
||||
0x9, // KEY_H 35
|
||||
0x01, // KEY_A 30
|
||||
0x03, // KEY_S 31
|
||||
0x05, // KEY_D 32
|
||||
0x07, // KEY_F 33
|
||||
0x0b, // KEY_G 34
|
||||
0x09, // KEY_H 35
|
||||
0x4d, // KEY_J 36
|
||||
0x51, // KEY_K 37
|
||||
0x4b, // KEY_L 38
|
||||
@@ -69,8 +69,8 @@ const uint8_t linux_keycode_to_m0110a_scancode_lookup[LINUX_KEYCODE_TO_M0110A_SC
|
||||
0x65, // KEY_GRAVE 41
|
||||
0x71, // KEY_LEFTSHIFT 42
|
||||
0x55, // KEY_BACKSLASH 43
|
||||
0xd, // KEY_Z 44
|
||||
0xf, // KEY_X 45
|
||||
0x0d, // KEY_Z 44
|
||||
0x0f, // KEY_X 45
|
||||
0x11, // KEY_C 46
|
||||
0x13, // KEY_V 47
|
||||
0x17, // KEY_B 48
|
||||
@@ -80,10 +80,10 @@ const uint8_t linux_keycode_to_m0110a_scancode_lookup[LINUX_KEYCODE_TO_M0110A_SC
|
||||
0x5f, // KEY_DOT 52
|
||||
0x59, // KEY_SLASH 53
|
||||
0x71, // KEY_RIGHTSHIFT 54
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KPASTERISK 55
|
||||
0x05, // KEY_KPASTERISK 55
|
||||
0x6f, // KEY_LEFTALT 56 !!!!! MAPPED TO LEFT COMMAND
|
||||
0x63, // KEY_SPACE 57
|
||||
CODE_HANDLE_SEPARATELY, // KEY_CAPSLOCK 58
|
||||
0x73, // KEY_CAPSLOCK 58
|
||||
CODE_UNUSED, // KEY_F1 59
|
||||
CODE_UNUSED, // KEY_F2 60
|
||||
CODE_UNUSED, // KEY_F3 61
|
||||
@@ -94,24 +94,24 @@ const uint8_t linux_keycode_to_m0110a_scancode_lookup[LINUX_KEYCODE_TO_M0110A_SC
|
||||
CODE_UNUSED, // KEY_F8 66
|
||||
CODE_UNUSED, // KEY_F9 67
|
||||
CODE_UNUSED, // KEY_F10 68
|
||||
CODE_HANDLE_SEPARATELY, // KEY_NUMLOCK 69 !!!!! MAPPED TO CLEAR
|
||||
0x0f, // KEY_NUMLOCK 69 !!!!! MAPPED TO CLEAR
|
||||
CODE_UNUSED, // KEY_SCROLLLOCK 70
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KP7 71
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KP8 72
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KP9 73
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KPMINUS 74
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KP4 75
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KP5 76
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KP6 77
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KPPLUS 78
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KP1 79
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KP2 80
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KP3 81
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KP0 82
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KPDOT 83
|
||||
0x33, // KEY_KP7 71
|
||||
0x37, // KEY_KP8 72
|
||||
0x39, // KEY_KP9 73
|
||||
0x1d, // KEY_KPMINUS 74
|
||||
0x2d, // KEY_KP4 75
|
||||
0x2f, // KEY_KP5 76
|
||||
0x31, // KEY_KP6 77
|
||||
0x0d, // KEY_KPPLUS 78
|
||||
0x27, // KEY_KP1 79
|
||||
0x29, // KEY_KP2 80
|
||||
0x2b, // KEY_KP3 81
|
||||
0x25, // KEY_KP0 82
|
||||
0x03, // KEY_KPDOT 83
|
||||
CODE_UNUSED, // KEY_UNUSED 84
|
||||
CODE_UNUSED, // KEY_ZENKAKUHANKAKU 85
|
||||
CODE_UNUSED, // KEY_102ND 86
|
||||
0x55, // KEY_102ND 86
|
||||
CODE_UNUSED, // KEY_F11 87
|
||||
CODE_UNUSED, // KEY_F12 88
|
||||
CODE_UNUSED, // KEY_RO 89
|
||||
@@ -121,19 +121,19 @@ const uint8_t linux_keycode_to_m0110a_scancode_lookup[LINUX_KEYCODE_TO_M0110A_SC
|
||||
CODE_UNUSED, // KEY_KATAKANAHIRAGANA 93
|
||||
CODE_UNUSED, // KEY_MUHENKAN 94
|
||||
CODE_UNUSED, // KEY_KPJPCOMMA 95
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KPENTER 96
|
||||
0x19, // KEY_KPENTER 96
|
||||
0x75, // KEY_RIGHTCTRL 97 !!!!! MAPPED TO LEFT OPTION
|
||||
CODE_HANDLE_SEPARATELY, // KEY_KPSLASH 98
|
||||
0x1b, // KEY_KPSLASH 98
|
||||
CODE_UNUSED, // KEY_SYSRQ 99
|
||||
0x6f, // KEY_RIGHTALT 100 !!!!! MAPPED TO LEFT COMMAND
|
||||
CODE_UNUSED, // KEY_LINEFEED 101
|
||||
CODE_UNUSED, // KEY_HOME 102
|
||||
CODE_HANDLE_SEPARATELY, // KEY_UP 103
|
||||
0x1b, // KEY_UP 103
|
||||
CODE_UNUSED, // KEY_PAGEUP 104
|
||||
CODE_HANDLE_SEPARATELY, // KEY_LEFT 105
|
||||
CODE_HANDLE_SEPARATELY, // KEY_RIGHT 106
|
||||
0x0d, // KEY_LEFT 105
|
||||
0x05, // KEY_RIGHT 106
|
||||
CODE_UNUSED, // KEY_END 107
|
||||
CODE_HANDLE_SEPARATELY, // KEY_DOWN 108
|
||||
0x11, // KEY_DOWN 108
|
||||
CODE_UNUSED, // KEY_PAGEDOWN 109
|
||||
CODE_UNUSED, // KEY_INSERT 110
|
||||
CODE_UNUSED, // KEY_DELETE 111
|
||||
@@ -228,6 +228,109 @@ uint8_t m0110a_write(uint8_t data)
|
||||
return M0110A_OK;
|
||||
}
|
||||
|
||||
|
||||
#define KEY_CAPSLOCK 58
|
||||
|
||||
#define KEY_KPASTERISK 55
|
||||
#define KEY_KPPLUS 78
|
||||
#define KEY_KPSLASH 98
|
||||
|
||||
#define KEY_NUMLOCK 69
|
||||
#define KEY_KP7 71
|
||||
#define KEY_KP8 72
|
||||
#define KEY_KP9 73
|
||||
#define KEY_KPMINUS 74
|
||||
#define KEY_KP4 75
|
||||
#define KEY_KP5 76
|
||||
#define KEY_KP6 77
|
||||
#define KEY_KP1 79
|
||||
#define KEY_KP2 80
|
||||
#define KEY_KP3 81
|
||||
#define KEY_KP0 82
|
||||
#define KEY_KPDOT 83
|
||||
#define KEY_KPENTER 96
|
||||
#define KEY_UP 103
|
||||
#define KEY_LEFT 105
|
||||
#define KEY_RIGHT 106
|
||||
#define KEY_DOWN 108
|
||||
|
||||
uint8_t is_capslock_on;
|
||||
|
||||
uint8_t make_m0110a_scancode(uint8_t linux_key_code, uint8_t linux_key_value, m0110a_cmd_buf *lb)
|
||||
{
|
||||
uint8_t lookup_result = CODE_UNUSED;
|
||||
if(linux_key_code < LINUX_KEYCODE_TO_M0110A_SCANCODE_SIZE)
|
||||
lookup_result = linux_keycode_to_m0110a_scancode_lookup[linux_key_code];
|
||||
// m0110a does not generate key autorepeat itself
|
||||
if(linux_key_value == 2 || lookup_result == CODE_UNUSED)
|
||||
return M0110A_UNKNOWN_CODE;
|
||||
|
||||
if(linux_key_code == KEY_CAPSLOCK)
|
||||
{
|
||||
if(linux_key_value == 0)
|
||||
return M0110A_UNKNOWN_CODE;
|
||||
is_capslock_on = (is_capslock_on + 1) % 2;
|
||||
if(is_capslock_on)
|
||||
m0110a_cmd_buf_add(lb, lookup_result);
|
||||
else
|
||||
m0110a_cmd_buf_add(lb, lookup_result | 0x80);
|
||||
}
|
||||
else if(linux_key_code == KEY_KPASTERISK || linux_key_code == KEY_KPPLUS || linux_key_code == KEY_KPSLASH)
|
||||
{
|
||||
if(linux_key_value)
|
||||
{
|
||||
m0110a_cmd_buf_add(lb, 0x71);
|
||||
m0110a_cmd_buf_add(lb, 0x79);
|
||||
m0110a_cmd_buf_add(lb, lookup_result);
|
||||
}
|
||||
else
|
||||
{
|
||||
m0110a_cmd_buf_add(lb, 0xf1);
|
||||
m0110a_cmd_buf_add(lb, 0x79);
|
||||
m0110a_cmd_buf_add(lb, lookup_result | 0x80);
|
||||
}
|
||||
}
|
||||
else if(linux_key_code == KEY_NUMLOCK ||
|
||||
linux_key_code == KEY_KP7 ||
|
||||
linux_key_code == KEY_KP8 ||
|
||||
linux_key_code == KEY_KP9 ||
|
||||
linux_key_code == KEY_KPMINUS ||
|
||||
linux_key_code == KEY_KP4 ||
|
||||
linux_key_code == KEY_KP5 ||
|
||||
linux_key_code == KEY_KP6 ||
|
||||
linux_key_code == KEY_KP1 ||
|
||||
linux_key_code == KEY_KP2 ||
|
||||
linux_key_code == KEY_KP3 ||
|
||||
linux_key_code == KEY_KP0 ||
|
||||
linux_key_code == KEY_KPDOT ||
|
||||
linux_key_code == KEY_KPENTER ||
|
||||
linux_key_code == KEY_UP ||
|
||||
linux_key_code == KEY_LEFT ||
|
||||
linux_key_code == KEY_RIGHT ||
|
||||
linux_key_code == KEY_DOWN)
|
||||
{
|
||||
if(linux_key_value)
|
||||
{
|
||||
m0110a_cmd_buf_add(lb, 0x79);
|
||||
m0110a_cmd_buf_add(lb, lookup_result);
|
||||
}
|
||||
else
|
||||
{
|
||||
m0110a_cmd_buf_add(lb, 0x79);
|
||||
m0110a_cmd_buf_add(lb, lookup_result | 0x80);
|
||||
}
|
||||
return M0110A_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(linux_key_value)
|
||||
m0110a_cmd_buf_add(lb, lookup_result);
|
||||
else
|
||||
m0110a_cmd_buf_add(lb, lookup_result | 0x80);
|
||||
}
|
||||
return M0110A_OK;
|
||||
}
|
||||
|
||||
// -----------------------
|
||||
|
||||
void m0110a_cmd_buf_reset(m0110a_cmd_buf *lb)
|
||||
|
||||
@@ -213,7 +213,7 @@ void m0110a_write_1b_from_buf(void)
|
||||
m0110a_cmd_buf_peek(&my_m0110a_buf, &m0100a_byte);
|
||||
m0110a_cmd_buf_pop(&my_m0110a_buf);
|
||||
m0110a_write(m0100a_byte);
|
||||
printf("w%x", m0100a_byte);
|
||||
// printf("w%x", m0100a_byte);
|
||||
}
|
||||
|
||||
void m0110a_update(void)
|
||||
@@ -240,8 +240,7 @@ void m0110a_update(void)
|
||||
m0110a_write(0xb);
|
||||
else if(m0110a_host_cmd == 0x36) // test
|
||||
m0110a_write(0x7d);
|
||||
|
||||
printf("r%x", m0110a_host_cmd);
|
||||
// printf("r%x", m0110a_host_cmd);
|
||||
}
|
||||
|
||||
void m0100a_handle_inquiry(void)
|
||||
@@ -261,25 +260,11 @@ void m0100a_handle_inquiry(void)
|
||||
else if(m0110a_inquiry_active && kb_buf_peek(&my_kb_buf, &buffered_code, &buffered_value) == 0)
|
||||
{
|
||||
m0110a_cmd_buf_reset(&my_m0110a_buf);
|
||||
|
||||
uint8_t lookup_result = CODE_UNUSED;
|
||||
if(buffered_code < LINUX_KEYCODE_TO_M0110A_SCANCODE_SIZE)
|
||||
lookup_result = linux_keycode_to_m0110a_scancode_lookup[buffered_code];
|
||||
if(lookup_result == CODE_UNUSED || lookup_result == CODE_HANDLE_SEPARATELY)
|
||||
goto m0110a_kb_write_end;
|
||||
|
||||
if(buffered_value)
|
||||
if(make_m0110a_scancode(buffered_code, buffered_value, &my_m0110a_buf) == M0110A_OK)
|
||||
{
|
||||
m0110a_cmd_buf_add(&my_m0110a_buf, lookup_result);
|
||||
m0110a_write_1b_from_buf();
|
||||
m0110a_inquiry_active = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
m0110a_cmd_buf_add(&my_m0110a_buf, lookup_result | 0x80);
|
||||
}
|
||||
m0110a_write_1b_from_buf();
|
||||
m0110a_inquiry_active = 0;
|
||||
|
||||
m0110a_kb_write_end:
|
||||
kb_buf_pop(&my_kb_buf);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user