键盘问题

frtrnr 2014-01-01 01:59:58
我的键盘上有两个\(|)键,按照预想,在输入英文时功能是一样的
但是输入法中,一个仍是英文,另一个是对应的“、”,请问它们
编程时能区别开来?
...全文
125 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
DelisPhi 2014-01-04
  • 打赏
  • 举报
回复
感觉这个问题用消息钩子(HOOK)来处理比较快吧。和键码不同,消息钩子能区分的东西比较多
sololie 2014-01-01
  • 打赏
  • 举报
回复
如果这样,你自己判断下当前是否为输入法状态 uses imm; ImmIsIME(GetKeyBoardLayOut(0))= true 即为开启输入法状态
frtrnr 2014-01-01
  • 打赏
  • 举报
回复
引用 1 楼 sololie 的回复:
通过键码来区别,运行下面的代码你就明白了

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  case ord(Key) of
    92: ShowMessage('key = \' + #13#10 +  '键码 = ' + IntToStr(ord(Key)));
    162: ShowMessage('key = 、' + #13#10 +  '键码 = ' + IntToStr(ord(Key)));
  end;    
end;
在英文状态下都是92,在输入法状态下一个是92,一个是162。 我的意图就是在英文状态下將它们区分开
frtrnr 2014-01-01
  • 打赏
  • 举报
回复
引用 1 楼 sololie 的回复:
通过键码来区别,运行下面的代码你就明白了

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  case ord(Key) of
    92: ShowMessage('key = \' + #13#10 +  '键码 = ' + IntToStr(ord(Key)));
    162: ShowMessage('key = 、' + #13#10 +  '键码 = ' + IntToStr(ord(Key)));
  end;    
end;
试过了,区分不开,都是 92
sololie 2014-01-01
  • 打赏
  • 举报
回复
通过键码来区别,运行下面的代码你就明白了

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  case ord(Key) of
    92: ShowMessage('key = \' + #13#10 +  '键码 = ' + IntToStr(ord(Key)));
    162: ShowMessage('key = 、' + #13#10 +  '键码 = ' + IntToStr(ord(Key)));
  end;    
end;

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧