4710|16

85

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请问高手,我如何把我的矩阵键盘的其中一个键映射为F1功能啊? [复制链接]

在我的开发板提供的matrix_0409文件夹中没有给这个键对应的扫描码,我该怎么做才能达到这个目的啊,
我需要给应用层提供F1-F6的功能键。

有劳各位指点!

最新回复

路过,帮楼主顶一下吧  详情 回复 发表于 2010-2-24 12:51
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我查数组UINT8 ScanCodeToVKeyTable[] =
{
        0,  // Scan Code 0x0
        VK_MENU, // Scan Code 0x1
        0, // Scan Code 0x2
        0, // Scan Code 0x3
        0, // Scan Code 0x4
        0, // Scan Code 0x5
        0, // Scan Code 0x6
        0, // Scan Code 0x7
        0, // Scan Code 0x8
        VK_BACKQUOTE, // Scan Code 0x9
        VK_BACKSLASH, // Scan Code 0xA
        VK_TAB, // Scan Code 0xB
        'Z', // Scan Code 0xC
        'A', // Scan Code 0xD
        'X', // Scan Code 0xE
        0, // Scan Code 0xF
        0, // Scan Code 0x10
        0, // Scan Code 0x11
        VK_LSHIFT, // Scan Code 0x12
        //dyr100210 modi 0 as F1-F6
        VK_F1, // Scan Code 0x13
        VK_F2, // Scan Code 0x14
        VK_F3, // Scan Code 0x15
        VK_F4, // Scan Code 0x16
        VK_F5, // Scan Code 0x17
        VK_F6, // Scan Code 0x18
        VK_CONTROL, // Scan Code 0x19
        0, // Scan Code 0x1A
        0, // Scan Code 0x1B
        0, // Scan Code 0x1C
        0, // Scan Code 0x1D
        0, // Scan Code 0x1E
        0, // Scan Code 0x1F
        0, // Scan Code 0x20
        VK_MATRIX_FN, // Scan Code 0x21, Fn
        0, // Scan Code 0x22
        0, // Scan Code 0x23
        0, // Scan Code 0x24
        0, // Scan Code 0x25
        0, // Scan Code 0x26
        0, // Scan Code 0x27
        0, // Scan Code 0x28
        VK_ESCAPE, // Scan Code 0x29
        VK_DELETE, // Scan Code 0x2A
        'Q', // Scan Code 0x2B
        VK_CAPITAL, // Scan Code 0x2C
        'S', // Scan Code 0x2D
        'C', // Scan Code 0x2E
        '3', // Scan Code 0x2F
        0, // Scan Code 0x30
        '1', // Scan Code 0x31
        0, // Scan Code 0x32
        'W', // Scan Code 0x33
        0, // Scan Code 0x34
        'D', // Scan Code 0x35
        'V', // Scan Code 0x36
        '4', // Scan Code 0x37
        0, // Scan Code 0x38
        '2', // Scan Code 0x39
        'T', // Scan Code 0x3A
        'E', // Scan Code 0x3B
        0, // Scan Code 0x3C
        'F', // Scan Code 0x3D
        'B', // Scan Code 0x3E
        '5', // Scan Code 0x3F
        0, // Scan Code 0x40
        '9', // Scan Code 0x41
        'Y', // Scan Code 0x42
        'R', // Scan Code 0x43
        'K', // Scan Code 0x44
        'G', // Scan Code 0x45
        'N', // Scan Code 0x46
        '6', // Scan Code 0x47
        0, // Scan Code 0x48
        '0', // Scan Code 0x49
        'U', // Scan Code 0x4A
        'O', // Scan Code 0x4B
        'L', // Scan Code 0x4C
        'H', // Scan Code 0x4D
        'M', // Scan Code 0x4E
        '7', // Scan Code 0x4F
        0, // Scan Code 0x50
        VK_HYPHEN, // Scan Code 0x51
        'I', // Scan Code 0x52
        'P', // Scan Code 0x53
        VK_SEMICOLON, // Scan Code 0x54
        'J', // Scan Code 0x55
        VK_COMMA, // Scan Code 0x56
        '8', // Scan Code 0x57
        0, // Scan Code 0x58
        VK_EQUAL, // Scan Code 0x59
        VK_RETURN, // Scan Code 0x5A // Key_Center key dyr100210 modi
        VK_LBRACKET, // Scan Code 0x5B
        VK_APOSTROPHE, // Scan Code 0x5C
        VK_SLASH, // Scan Code 0x5D
        VK_PERIOD, // Scan Code 0x5E
        VK_RWIN, // Scan Code 0x5F, Prog
        0, // Scan Code 0x60
        0, // Scan Code 0x61
        VK_RSHIFT, // Scan Code 0x62
        0, // Scan Code 0x63
        0, // Scan Code 0x64
//gao1224
//        0, // Scan Code 0x65
//        0, // Scan Code 0x66
  VK_PRIOR,  // Scan Code 0x65    // Page Up
  VK_NEXT,   // Scan Code 0x66    // Page Down

        '*',                 // Scan Code 0x67//dyr100210 modi
        '#',         // Scan Code 0x68//dyr100210 modi
        VK_BACK, // Scan Code 0x69
        VK_DOWN, // Scan Code 0x6A
        VK_RBRACKET, // Scan Code 0x6B
        VK_UP, // Scan Code 0x6C
        VK_LEFT, // Scan Code 0x6D
        VK_SPACE, // Scan Code 0x6E //vk_emergency
        VK_RIGHT, // Scan Code 0x6F
};
没有提供这几个键的键值,我该怎么办啊?
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
VK_F1, // Scan Code 0x13
VK_F2, // Scan Code 0x14
VK_F3, // Scan Code 0x15
VK_F4, // Scan Code 0x16
VK_F5, // Scan Code 0x17
VK_F6, // Scan Code 0x18

这些不是吗?
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

4
 
这些不是,是我自己加进去的,原来这里的值都给的是0
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

5
 
UINT8 ScanCodeToVKeyTable[] =
{
        0,  // Scan Code 0x0
        VK_MENU, // Scan Code 0x1
        0, // Scan Code 0x2
        0, // Scan Code 0x3
        0, // Scan Code 0x4
        0, // Scan Code 0x5
        0, // Scan Code 0x6
        0, // Scan Code 0x7
        0, // Scan Code 0x8
        VK_BACKQUOTE, // Scan Code 0x9
        VK_BACKSLASH, // Scan Code 0xA
        VK_TAB, // Scan Code 0xB
        'Z', // Scan Code 0xC
        'A', // Scan Code 0xD
        'X', // Scan Code 0xE
        0, // Scan Code 0xF
        0, // Scan Code 0x10
        0, // Scan Code 0x11
        VK_LSHIFT, // Scan Code 0x12
        0, // Scan Code 0x13
        0, // Scan Code 0x14
        0, // Scan Code 0x15
        0, // Scan Code 0x16
        0, // Scan Code 0x17
        0, // Scan Code 0x18
        VK_CONTROL, // Scan Code 0x19
        0, // Scan Code 0x1A
        0, // Scan Code 0x1B
        0, // Scan Code 0x1C
        0, // Scan Code 0x1D
        0, // Scan Code 0x1E
        0, // Scan Code 0x1F
        0, // Scan Code 0x20
        VK_MATRIX_FN, // Scan Code 0x21, Fn
        0, // Scan Code 0x22
        0, // Scan Code 0x23
        0, // Scan Code 0x24
        0, // Scan Code 0x25
        0, // Scan Code 0x26
        0, // Scan Code 0x27
        0, // Scan Code 0x28
        VK_ESCAPE, // Scan Code 0x29
        VK_DELETE, // Scan Code 0x2A
        'Q', // Scan Code 0x2B
        VK_CAPITAL, // Scan Code 0x2C
        'S', // Scan Code 0x2D
        'C', // Scan Code 0x2E
        '3', // Scan Code 0x2F
        0, // Scan Code 0x30
        '1', // Scan Code 0x31
        0, // Scan Code 0x32
        'W', // Scan Code 0x33
        0, // Scan Code 0x34
        'D', // Scan Code 0x35
        'V', // Scan Code 0x36
        '4', // Scan Code 0x37
        0, // Scan Code 0x38
        '2', // Scan Code 0x39
        'T', // Scan Code 0x3A
        'E', // Scan Code 0x3B
        0, // Scan Code 0x3C
        'F', // Scan Code 0x3D
        'B', // Scan Code 0x3E
        '5', // Scan Code 0x3F
        0, // Scan Code 0x40
        '9', // Scan Code 0x41
        'Y', // Scan Code 0x42
        'R', // Scan Code 0x43
        'K', // Scan Code 0x44
        'G', // Scan Code 0x45
        'N', // Scan Code 0x46
        '6', // Scan Code 0x47
        0, // Scan Code 0x48
        '0', // Scan Code 0x49
        'U', // Scan Code 0x4A
        'O', // Scan Code 0x4B
        'L', // Scan Code 0x4C
        'H', // Scan Code 0x4D
        'M', // Scan Code 0x4E
        '7', // Scan Code 0x4F
        0, // Scan Code 0x50
        VK_HYPHEN, // Scan Code 0x51
        'I', // Scan Code 0x52
        'P', // Scan Code 0x53
        VK_SEMICOLON, // Scan Code 0x54
        'J', // Scan Code 0x55
        VK_COMMA, // Scan Code 0x56
        '8', // Scan Code 0x57
        0, // Scan Code 0x58
        VK_EQUAL, // Scan Code 0x59
        VK_RETURN, // Scan Code 0x5A
        VK_LBRACKET, // Scan Code 0x5B
        VK_APOSTROPHE, // Scan Code 0x5C
        VK_SLASH, // Scan Code 0x5D
        VK_PERIOD, // Scan Code 0x5E
        VK_RWIN, // Scan Code 0x5F, Prog
        0, // Scan Code 0x60
        0, // Scan Code 0x61
        VK_RSHIFT, // Scan Code 0x62
        0, // Scan Code 0x63
        0, // Scan Code 0x64

//        0, // Scan Code 0x65
//        0, // Scan Code 0x66
  VK_PRIOR,  // Scan Code 0x65    // Page Up
  VK_NEXT,   // Scan Code 0x66    // Page Down

        0, // Scan Code 0x67
        0, // Scan Code 0x68
        VK_BACK, // Scan Code 0x69
        VK_DOWN, // Scan Code 0x6A
        VK_RBRACKET, // Scan Code 0x6B
        VK_UP, // Scan Code 0x6C
        VK_LEFT, // Scan Code 0x6D
        VK_SPACE, // Scan Code 0x6E
        VK_RIGHT, // Scan Code 0x6F
};

这个是原来给提供的。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

6
 
一下是我做6410键盘:0~9,A~F
#define SIZE_BITS        4
#define SIZE_COLS        4
#define SIZE_ROWS        4
====================================


#define    ScanCodeTableFirst    0x00
#define    ScanCodeTableLast    0xF

UINT8 ScanCodeToVKeyTable[] =
{
    VK_T0,// scan code 0,
    VK_T1,// scan code 1,
    VK_T2,// scan code 2,
    VK_T3,// scan code 3
    VK_T4,// scan code 4
    VK_T5,// scan code 5
    VK_T6,// scan code 6
    VK_T7,// scan code 7
    VK_T8,// scan code 8,
    VK_T9,// scan code 9
    'A',        // scan code 10
    'B',        // scan code 11
    'C',        // scan code 12
    'D',        // scan code 13
    'E',        // scan code 14
    'F',        // scan code 15
};

====================================


struct KSTATE KeyChange[SIZE_KEY];
struct KCODE KeyCode[SIZE_KEY] =
{
    {KCODE_TYPE_NORMAL , 0x0000 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0001 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0002 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0003 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0004 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0005 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0006 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0007 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0008 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0009 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x000a , 0, 0},
    {KCODE_TYPE_NORMAL , 0x000b , 0, 0},
    {KCODE_TYPE_NORMAL , 0x000c , 0, 0},
    {KCODE_TYPE_NORMAL , 0x000d , 0, 0},
    {KCODE_TYPE_NORMAL , 0x000e , 0, 0},
    {KCODE_TYPE_NORMAL , 0x000f , 0, 0},
};


代码需要根据硬件修改
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

7
 
先要看键盘驱动中按下键后返回的扫描码,可以通过串口打印出来,再根据此扫描码修改ScanCodeToVKeyTable中对应的VK_F1等功能
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 6 楼 rpk47 的回复:
先要看键盘驱动中按下键后返回的扫描码,可以通过串口打印出来,再根据此扫描码修改ScanCodeToVKeyTable中对应的VK_F1等功能

就是这样子,楼主可以试试看。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
先谢谢大家的热心帮助,我再看看
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

10
 
这个地方还是搞不清楚,能给讲的浅一些吗,这个地方是开发板给提供的,原来只是修改对应的扫描码,至于为什么这样对应还是不知道,辛苦各位再给说说吧。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

11
 
UINT8 ScanCodeToVKeyTable[] =
{
    VK_F1,// scan code 0,
    VK_F2,// scan code 1,
    VK_F3,// scan code 2,
    VK_F4,// scan code 3
    VK_F5,// scan code 4
    VK_F6,// scan code 5
};

====================================


struct KSTATE KeyChange[SIZE_KEY];
struct KCODE KeyCode[SIZE_KEY] =
{
    {KCODE_TYPE_NORMAL , 0x0000 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0001 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0002 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0003 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0004 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0005 , 0, 0},
};
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

12
 
楼上的你能不能不光写代码,做些说明可以吗?有劳了!
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

13
 
ScanCodeToVKeyTable是映射虚拟键值
KCODE KeyCode[SIZE_KEY]硬件扫描值

还有什么疑问?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

14
 
要先根据你键盘控制芯片的原理图,原理图中会有每个键对应的扫描码。根据你所用的芯片编写或修改键盘驱动PDD层,一般MDD层不用更改。当驱动加载成功,按键后就会有键盘中断上来和相应的扫描码。如果不是你想要的按键这时可以通过上面方法修改虚拟键值。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

15
 
是不是不管这个虚拟键值是什么都可以这样映射啊。只要这个硬件扫描值存在就可以这样对应啊?
如果照下面这样写,能够输出对应的字符吗?


UINT8 ScanCodeToVKeyTable[] =
{
    '*',// scan code 0,
    '#',// scan code 1,
    ',',// scan code 2,
    '+',// scan code 3
    '-',// scan code 4
    '*',// scan code 5
};

====================================


struct KSTATE KeyChange[SIZE_KEY];
struct KCODE KeyCode[SIZE_KEY] =
{
    {KCODE_TYPE_NORMAL , 0x0000 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0001 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0002 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0003 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0004 , 0, 0},
    {KCODE_TYPE_NORMAL , 0x0005 , 0, 0},
};
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

16
 
理论上是可以的?我试过音量加减就不行。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

17
 
路过,帮楼主顶一下吧
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表