import android.view.KeyCharacterMap; //导入方法依赖的package包/类

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (LOG_KEY_EVENTS)

Log.i(EmulatorDebug.LOG_TAG, "onKeyDown(keyCode=" + keyCode + ", isSystem()=" + event.isSystem() + ", event=" + event + ")");

if (mEmulator == null) return true;

if (mClient.onKeyDown(keyCode, event, mTermSession)) {

invalidate();

return true;

} else if (event.isSystem() && (!mClient.shouldBackButtonBeMappedToEscape() || keyCode != KeyEvent.KEYCODE_BACK)) {

return super.onKeyDown(keyCode, event);

} else if (event.getAction() == KeyEvent.ACTION_MULTIPLE && keyCode == KeyEvent.KEYCODE_UNKNOWN) {

mTermSession.write(event.getCharacters());

return true;

}

final int metaState = event.getMetaState();

final boolean controlDownFromEvent = event.isCtrlPressed();

final boolean leftAltDownFromEvent = (metaState & KeyEvent.META_ALT_LEFT_ON) != 0;

final boolean rightAltDownFromEvent = (metaState & KeyEvent.META_ALT_RIGHT_ON) != 0;

int keyMod = 0;

if (controlDownFromEvent) keyMod |= KeyHandler.KEYMOD_CTRL;

if (event.isAltPressed()) keyMod |= KeyHandler.KEYMOD_ALT;

if (event.isShiftPressed()) keyMod |= KeyHandler.KEYMOD_SHIFT;

if (handleKeyCode(keyCode, keyMod)) {

if (LOG_KEY_EVENTS) Log.i(EmulatorDebug.LOG_TAG, "handleKeyCode() took key event");

return true;

}

// Clear Ctrl since we handle that ourselves:

int bitsToClear = KeyEvent.META_CTRL_MASK;

if (rightAltDownFromEvent) {

// Let right Alt/Alt Gr be used to compose characters.

} else {

// Use left alt to send to terminal (e.g. Left Alt+B to jump back a word), so remove:

bitsToClear |= KeyEvent.META_ALT_ON | KeyEvent.META_ALT_LEFT_ON;

}

int effectiveMetaState = event.getMetaState() & ~bitsToClear;

int result = event.getUnicodeChar(effectiveMetaState);

if (LOG_KEY_EVENTS)

Log.i(EmulatorDebug.LOG_TAG, "KeyEvent#getUnicodeChar(" + effectiveMetaState + ") returned: " + result);

if (result == 0) {

return true;

}

int oldCombiningAccent = mCombiningAccent;

if ((result & KeyCharacterMap.COMBINING_ACCENT) != 0) {

// If entered combining accent previously, write it out:

if (mCombiningAccent != 0)

inputCodePoint(mCombiningAccent, controlDownFromEvent, leftAltDownFromEvent);

mCombiningAccent = result & KeyCharacterMap.COMBINING_ACCENT_MASK;

} else {

if (mCombiningAccent != 0) {

int combinedChar = KeyCharacterMap.getDeadChar(mCombiningAccent, result);

if (combinedChar > 0) result = combinedChar;

mCombiningAccent = 0;

}

inputCodePoint(result, controlDownFromEvent, leftAltDownFromEvent);

}

if (mCombiningAccent != oldCombiningAccent) invalidate();

if (onAutoCompleteListener != null) {

if (event.isPrintingKey()) {

char printingChar = (char) event.getUnicodeChar(metaState);

if (printingChar != '\b') {

// ASCII chars

onAutoCompleteListener.onCompletionRequired(new String(new char[]{printingChar}));

}

}

}

return true;

}

Java 怎么 get char_Java KeyCharacterMap.getDeadChar方法代码示例相关推荐

  1. java secretkey用法_Java SecretKeyFactory.generateSecret方法代码示例

    本文整理汇总了Java中javax.crypto.SecretKeyFactory.generateSecret方法的典型用法代码示例.如果您正苦于以下问题:Java SecretKeyFactory ...

  2. java polygon 用法_Java Polygon.getBounds方法代码示例

    import java.awt.Polygon; //导入方法依赖的package包/类 private SelectionShape translatePointsToRealSize(Select ...

  3. java makedir用法_Java Files.makeDir方法代码示例

    import org.nutz.lang.Files; //导入方法依赖的package包/类 protected void download(String openid, String media_ ...

  4. java args包_Java Args.positive方法代码示例

    import org.apache.http.util.Args; //导入方法依赖的package包/类 /** * Creates new instance of BHttpConnectionB ...

  5. java shape用法_Java PShape.scale方法代码示例

    import processing.core.PShape; //导入方法依赖的package包/类 public void updateAnim(){ if(pg_src_small == null ...

  6. java round指令_Java PApplet.round方法代码示例

    import processing.core.PApplet; //导入方法依赖的package包/类 public static final void updatePos() { if(follow ...

  7. java gettext用法_Java Context.getText方法代码示例

    import android.content.Context; //导入方法依赖的package包/类 /** * Song Details * * @param context * @param t ...

  8. java soap封装_Java SOAPMessage.writeTo方法代码示例

    import javax.xml.soap.SOAPMessage; //导入方法依赖的package包/类 private byte[] createProbeXML() throws SOAPEx ...

  9. java set的first_Java Pair.setFirst方法代码示例

    import org.apache.hadoop.hbase.util.Pair; //导入方法依赖的package包/类 /** * Checks whether cell contains any ...

最新文章

  1. PHP中htmlentities跟htmlspecialchars的区别
  2. Spring Boot 整合 Netty(附源码)
  3. 机器学习相关的数学资料下载
  4. 将组策略编辑器添加到控制面板
  5. JBoss AS 7 EJB3池配置
  6. 深度学习算法和机器学习算法_啊哈! 4种流行的机器学习算法的片刻
  7. Datawhale-零基础入门NLP-新闻文本分类Task01
  8. 数组指定位置添加元素_数据结构--顺序表的9种基本运算,初始化,销毁,判断是否为空表,长度,求指定位置的元素值......
  9. 【算法】—— 不借助中间变量实现 swap
  10. 第六章 应用层[练习题+课后习题]
  11. 20191126_1_电影票房分析
  12. Workflow WF Reference Links for 2009-03-06
  13. springSession框架来实现sso单点登陆
  14. 【T+】余额表联查明细账,提示未将对象引用设置到对象的实例;参数格式错误,solutionID不能为空。
  15. android 7.0 壁纸设置,android7.0怎么换锁屏壁纸
  16. 【多模态】《Visual7W: Grounded Question Answering in Images》论文阅读笔记
  17. Verilog练习:HDLBits笔记4
  18. 蓝桥杯JAVA-32.二维数组(矩阵)实现旋转模板(JAVA实现)
  19. 001,Python微信接龙脚本与腾讯会议定时挂网课脚本
  20. html5动态加载图片和加载视频

热门文章

  1. default argument given of parameter 的问题
  2. Maven 常见问题
  3. Oracle Enterprise Linux
  4. php网站漏洞检测对sql注入漏洞防护
  5. window系统JAVA开发环境的搭建
  6. 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小
  7. PostgreSQL 10.1 手册_部分 III. 服务器管理_第 32 章 回归测试_32.5. 测试覆盖检查
  8. Steps to configure Oracle 11g Data Guard Physical Standby – Active Data Guard Part-I
  9. 我理解的几种字符编码方式
  10. 《Haskell趣学指南》—— 第2章,第2.3节类型变量