精华内容
下载资源
问答
  • 通过AccessibilityService实现系统按键监听,可实现抢红包插件等.
  • 第三方apk监听系统按键事件
  • 通过AccessibilityService实现对系统按键监听功能
  • 本文介绍下,用jquery实现的滑动效果,以及对键盘按键进行监听的例子,有需要的朋友,可以参考学习下
  • qt 全局按键监听

    2020-12-09 09:07:10
    if (HC_ACTION == nCode) { if (WM_KEYDOWN == wParam || WM_SYSKEYDOWN == wParam) //如果按键为按下状态 { if (Key_Info->vkCode <= 107 && Key_Info->vkCode >= 65) { qDebug() << Key_Info->vkCode; if ...
    #ifndef KEYCAPTURER_H
    #define KEYCAPTURER_H
    
    #include <QObject>
    
    class KeyCapturer : public QObject
    {
        Q_OBJECT
    
      public:
        virtual ~KeyCapturer();
        static KeyCapturer *&instance()
        {
            static KeyCapturer *s = nullptr;
            if (s == nullptr)
            {
                s = new KeyCapturer();
            }
            return s;
        }
    
      public:
        void setkeyValue(int key);
    
      protected:
        KeyCapturer();
    
      signals:
        void getKey(int);
    
      private:
    };
    
    #endif // KEYCAPTURER_H
    
    #include "keycapturer.h"
    
    KeyCapturer::KeyCapturer()
    {
    }
    
    KeyCapturer::~KeyCapturer()
    {
    }
    
    
    void KeyCapturer::setkeyValue(int key)
    {
        emit getKey(key);
    }
    
    keymonitor的头文件和实现文件如下
    #include "keymonitor.h"
    #include <QtDebug>
    #include "keycapturer.h"
    
    LRESULT CALLBACK KeyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam);
    
    HMODULE WINAPI ModuleFromAddress(PVOID pv);
    static HHOOK hHook;
    
    LRESULT KeyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
        KBDLLHOOKSTRUCT *Key_Info = (KBDLLHOOKSTRUCT *)lParam;
        if (HC_ACTION == nCode)
        {
            if (WM_KEYDOWN == wParam || WM_SYSKEYDOWN == wParam) //如果按键为按下状态
            {
                if (Key_Info->vkCode <= 107 && Key_Info->vkCode >= 65)
                {
                    qDebug() << Key_Info->vkCode;
                    if (KeyCapturer::instance())
                    {
                        KeyCapturer::instance()->setkeyValue(Key_Info->vkCode);
                    }
                }
            }
        }
        return CallNextHookEx(hHook, nCode, wParam, lParam);
    }
    
    HMODULE ModuleFromAddress(PVOID pv)
    {
        MEMORY_BASIC_INFORMATION mbi;
        if (VirtualQuery(pv, &mbi, sizeof(mbi)) != 0)
        {
            return (HMODULE)mbi.AllocationBase;
        }
        else
        {
            return NULL;
        }
    }
    
    int startHook()
    {
        hHook = SetWindowsHookExW(WH_KEYBOARD_LL, KeyboardHookProc, ModuleFromAddress((PVOID)KeyboardHookProc), 0);
        int error = GetLastError();
        return error;
    }
    
    bool stopHook()
    {
        return UnhookWindowsHookEx(hHook);
    }
    
    #ifndef KEYMONITOR_H
    #define KEYMONITOR_H
    
    
    #include <Windows.h>
    #include <DbgHelp.h>
    
    int startHook();
    
    bool stopHook();
    
    #endif // KEYMONITOR_H
    

    在主界面加入信号连接即可

        connect(KeyCapturer::instance(), &KeyCapturer::getKey, [=](int key)
                {
                    qDebug() << "startHook==" << QString::number(key);
                    HomeUtil::getInstance()->setTime();
                    switch (key)
                    {
                        case Qt::Key_F:
                           
                            return true;
                        case Qt::Key_H:
                            
                            return true;
                        default:
                            break;
                    }
                });
        startHook();

     

    展开全文
  • fragment 实现按键监听

    千次阅读 2018-10-29 10:00:58
    最近项目需要在fragment 中实现系统的按键监听,网上很多都是通过对ListView 进行监听,但是这种依赖focus的效果不是很好。 这里总结下自己的实现方式。   先来段网上分享: @Override protected View ...

    前言:

    最近项目需要在fragment 中实现系统的按键监听,网上很多都是通过对ListView 进行监听,但是这种依赖focus的效果不是很好。

    这里总结下自己的实现方式。

     

    先来段网上分享:

        @Override
        protected View initView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
           //.............
            View view = View.inflate(UIUtils.getContext(), R.layout.homefragment, null);
            ButterKnife.bind(this, view);
            //监听back必须设置的
            view.setFocusable(true);
            view.setFocusableInTouchMode(true);
            //然后在写这个监听器
            view.setOnKeyListener(backlistener);
            return view;
        }
    
        private View.OnKeyListener backlistener = new View.OnKeyListener() {
            @Override
            public boolean onKey(View view, int i, KeyEvent keyEvent) {
                if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
                     //这边判断,如果是back的按键被点击了   就自己拦截实现掉  
                    if (i == KeyEvent.KEYCODE_BACK) {
                        Toast.makeText(UIUtils.getContext(), "BACK拦截", Toast.LENGTH_SHORT).show();
                        return true;//表示处理了
                    }
                }
                return false;
            }
        };
    

    或者是:

    public class phonerecorder extends Fragment {  
        View listview;  
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
            listview = (View) inflater.inflate(R.layout.phonerecorder, null);  
            mListView = (ListView) listview.findViewById(R.id.listView);  
            init();  
            mListView.setOnItemClickListener(clickitemlistener);  
            listview.setFocusable(true);//这个和下面的这个命令必须要设置了,才能监听back事件。  
            listview.setFocusableInTouchMode(true);  
            listview.setOnKeyListener(backlistener);  
            return listview;  
        }
    
        private View.OnKeyListener backlistener = new View.OnKeyListener() {  
            @Override  
            public boolean onKey(View view, int i, KeyEvent keyEvent) {  
                if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {  
                    if (i == KeyEvent.KEYCODE_BACK) {  //表示按返回键 时的操作  
                        if (!rootpatch.equals(currentfilepach) && currentfilepach != null) {  
                            File file = new File(currentfilepach);  
                            openDir2(file.getParent().toString());  
                            currentfilepach = file.getParent().toString();  
                            return true;  
                        } //后退  
                        return false;    //已处理  
                    }  
                }  
                return false;  
            }  
        };  
    }  

     

    上面两种方式,都需要寻求focus,通过对指定的View 进行onKeyListener。不失为一种方式,但个人觉得这种方式总是有点牵强。下面来分享下自己的实现:

    1、自定义一个listener

    import android.view.KeyEvent;
    
    public interface FragmentOnKeyListener {
        boolean onKeyDown(int keyCode, KeyEvent event);
    }

    2、fragment 中注册这个listener

    对应的fragment 需要implements FragmentOnkeyListener,这一步很关键。

    然后实现该onKeyDown:

        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            LogUtils.LOGD(TAG, "==== onKeyDown");
            if (mMode == SafeboxFilesPreference.MODE_EDIT) {
                switchToMode(SafeboxFilesPreference.MODE_NORMAL);
                return true;
            }
            return false;
        }

    这里可以对不同的keyevent 进行不同的处理。

    3、Fragment 对应的Activity 中拦截按键

        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                Fragment fragment = getShowingFragment();
                if (fragment != null && fragment instanceof FragmentOnKeyListener
                        && ((FragmentOnKeyListener) fragment).onKeyDown(keyCode, event)) {
                    return true;
                }
            }
            return super.onKeyDown(keyCode, event);
        }

    在Activity 中如何拿到Fragment 这个比较简单了,根据不同的实现方式,肯定可以拿到这个Fragment。

    最终会调用到fragment 已经实现的onKeyDown。

     

    由于项目需要这里只需要监听BACK,所以,在Activity 中就进行了拦截,如果按键比较多,可以放到Fragment中。

     

     

     

    展开全文
  • 物理按键监听

    2016-11-18 17:17:25
    已在android6.0上测试过,可用
  • 文章目录一、创建项目二、附上代码三、成功运行 一、创建项目 选择打开"Start a new Android Studio project",新建一个Android项目 修改相应Android项目的名称、包名、项目位置等,以符合项目要求 ...

    一、创建项目

    • 选择打开"Start a new Android Studio project",新建一个Android项目

    在这里插入图片描述

    • 修改相应Android项目的名称、包名、项目位置等,以符合项目要求

    在这里插入图片描述

    • 如果修改项目的位置后,记得把项目名称重新补上,如不修改,直接默认就好

    在这里插入图片描述

    • 选择开发Android设备的类型,默认是手机和平板应用的开发

    在这里插入图片描述

    • 为移动端的项目添加一个新的Activity,默认选择空的Activity即可。

    在这里插入图片描述

    • 配置Activity,如下图:

    在这里插入图片描述

    • 进入项目主界面,等待加载
      在这里插入图片描述

    二、附上代码

    • activity_main.xml代码
      在这里插入图片描述
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical"
        tools:context="com.example.geoquiz.MainActivity">
        <!--android:orientation="vertical"垂直布局-->
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="24dp"
            android:text="@string/question_text"
            />
        <!--android:padding="24dp"内边距-->
        <!--android:text="@string/question_text"对字符串资源的引用-->
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
            <Button
                android:id="@+id/true_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/true_button"
                android:layout_marginRight="10dp"
                />
            <Button
                android:id="@+id/false_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/false_button"
                android:layout_marginLeft="10dp"
                />
    
        </LinearLayout>
        <!--android:orientation="horizontal"水平布局-->
    </LinearLayout>
    
    • strings.xml代码在这里插入图片描述
    <resources>
        <string name="app_name">GeoQuiz</string>
        <string name="question_text">
            Constantinople is the largest city in Turkey.
        </string>
        <string name="true_button">TRUE</string>
        <string name="false_button">FALSE</string>
        <string name="incorrect_toast">Incorrect!</string>
        <string name="correct_toast">correct</string>
    </resources>
    
    • MainActivity.java代码
      在这里插入图片描述
    package com.example.geoquiz;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    public class MainActivity extends AppCompatActivity {
        private Button mTrueButton; //添加两个按钮成员变量,m开头表示menmber成员变量
        private Button mFalseButton;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mTrueButton = (Button) findViewById(R.id.true_button);//引用组件
            //为按钮设置监听器,使用匿名内部类
            mTrueButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //创建提示消息
                    Toast.makeText(MainActivity.this,
                            R.string.incorrect_toast, Toast.LENGTH_SHORT).show();
                }
            });
    
            mFalseButton = (Button) findViewById(R.id.false_button);
            mFalseButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(MainActivity.this, R.string.correct_toast,
                            Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
    

    代码书写完成

    三、成功运行

    • 点击选择虚拟机后运行
      在这里插入图片描述
    • 成功运行

    在这里插入图片描述

    • 欢迎大家提出宝贵意见,蟹蟹!!!
    展开全文
  • Js 按键监听

    千次阅读 2019-05-16 14:14:00
    常用事件监听 //vue @keyup.enter="方法名称" //js 全局 $(document).keydown(function(event){  if(event.keyCode == 13){  alert('你按下了Enter');  }  }); //js 指定 $("#btn").keydown(function...

    常用事件监听

       //vue
       @keyup.enter="方法名称"
       //js  全局
       $(document).keydown(function(event){
        if(event.keyCode == 13){
          alert('你按下了Enter'); 
        }
      });
       //js  指定
       $("#btn").keydown(function(event){
        if(event.keyCode == 13){
          alert('你按下了Enter'); 
        }
      });
       //js  组合
       $(document).keyup(function(event){ 
        if (event.ctrlKey && event.keyCode === 67){ 
          alert('你按下了CTRL+C'); 
        } 
      });
       

     

    对照表  网络收集。。。

    e9ff54d2f9813acab259a408a597c3ba348.jpg

    6e5db1bd74f60fceba15b75c5bf9a2c094c.jpg

     

    转载于:https://my.oschina.net/qingqingdego/blog/3050316

    展开全文
  • } } } 在Update()中的if语句中,Input.GetKey(KeyCode.W)可以更换成Input.GetKeyDown(KeyCode.W)或者其他,后者顾名思义是仅仅监听按键按下的瞬间。只有改成Input.GetKey(KeyCode.W)才可以更加方便的使用。 Ps:...
  • 这是一款基于jquery.hotkeys插件实现的支持多复合键键盘按键监听事件代码,页面响应键盘按钮提示代码。
  • 安卓按键监听

    2017-12-30 15:41:54
    camera1.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_EN
  • 本篇文章主要介绍Android App实现监听软键盘按键的三种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
  • android 键盘按键监听

    千次阅读 2016-03-02 10:11:41
    手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“GO”按键加载url页面;在点击搜索框的时候,点击右下角的search符号键可以进行搜索;或者在全部数据输入...
  • //引用组件 //为按钮设置监听器,使用匿名内部类 mTrueButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //创建提示消息 Toast.makeText(MainActivity.this, R....
  • 介绍:KeyListener是监听按键信息的接口。如何设置监听:对监听者添加KeyListener接口,实现其所有方法,重写需要用到的方法对事件进行处理,最后对事件源注册监听。代码实现:确定事件类型 —&gt; 实现该类型...
  • android 后台监听按键事件方法及demoandroid 后台监听按键事件方法及demo
  • GetKeyDown 按下按键时响应,在一次按键动作过程中只响应一次。 GetKeyup 抬起按键时响应,在一次按键动作过程中只响应一次。 可以使用Keycode引用枚举类型 GetMouseButton() GetMouseButtondown() ...
  • VRTK手柄按键监听

    千次阅读 2019-05-16 16:54:03
    新建脚本ClickEvent,挂在手柄上 private VRTK_ControllerEvents e; private void OnEnable() { e = GetComponent<VRTK_ControllerEvents>(); if (e==null) { Debug.LogErro...
  • jQuery键盘按键监听提示代码是一款基于jquery.hotkeys插件实现的支持多复合键键盘监听事件特效。
  • 如何设计多按键监听

    千次阅读 2019-04-12 08:09:50
    自己写的毕设,遇到的问题,刚开始...因为玩家有极大可能不单单只是按键盘一下而是长按甚至多个长按,所以这里不再使用KeyTyped的点击方法,这时再只是通过KeyEvent事件来监听而不做处理,只能设置多种组合的按键可...
  • UE4-快捷键-按键监听事件

    千次阅读 2020-09-08 19:39:00
    在Actor中可以直接在Keyboard Event中选择相应的键盘按键触发事件: 问题背景 读取json数据生成WB(Widget Blueprint) 键盘快键键响应事件 == 点击(On Click)WB事件 上面在Actor中可以直接选择事件,但是我...
  • home键的监听监听广播: class HomeRecaiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equals...
  • 文章目录先分析一下需求:首先,手柄设备蓝牙连接到手机,这没什么说的,直接按照手柄的说明书...通过手柄摇杆或者十字按键控制手机的焦点,控制一个左侧箭头是减按钮,中间是显示数量的`TextView`文本,右侧箭头...
  • 部分代码 private static final String TAG = "MainActivity"; private boolean lockLongPressKey, isLongPressKey;//是否长按 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { ...
  • android 物理按键 监听

    2017-01-16 18:20:00
    android连接了一个4x4的矩阵键盘,linux内核中注册了按键,在app中监听键盘事件。 package com.example.tony.keydemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import ...
  • jquery.hotkeys插件键盘按键监听事件代码
  • 原文:Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听 简单记录下android 盒子开发遥控器的监听 ,希望能帮到新入门的朋友们 不多说,直接贴代码 public class ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,375
精华内容 19,350
关键字:

按键监听