我最近购买了一只Magic Mouse.它太棒了,充满了潜力.不幸的是,它受到软件支持的严重阻碍.我想解决这个问题.我做了很多研究,这些是我迄今为止关于事件链的调查结果:
在我发现上述所有内容之后,我将MultitouchSupport.framework文件进行了反汇编,并通过一些Google搜索,找到了如何将自己的回调插入链中,以便接收原始触摸事件数据.如果枚举设备列表,则可以为每个设备(触控板和鼠标)附加.这一发现将使我们能够创建一个在鼠标上使用多点触控的框架,但仅限于单个应用程序.请在此处查看我的帖子:Raw Multitouch Tracking.
我想在整个系统中为鼠标添加新功能,而不仅仅是一个应用程序.
为了做到这一点,我想出了如何使用Event Taps来查看最低级别的事件抽头是否允许我获取原始数据,解释它,并在其位置发送我自己的事件.不幸的是,这种情况并非如此.事件点击,即使在HID级别,仍然是在MultitouchSupport.framework中解释输入的步骤.
在此处查看我的事件点击尝试:事件点击 - 尝试原始多点触控.
一个有趣的旁注:当收到多点触控事件(例如滑动)时,会触发默认情况并打印出事件编号29.标题显示28为最大值.
关于我的问题,既然你掌握了所有的信息,并且已经看到了我的尝试:扩展Magic Mouse功能的最佳方法是什么?我知道我需要以足够低的水平插入一些东西,以便在处理输入并调度预定义事件之前获取输入.所以,把它归结为单句问题:
我的第一个目标是,如果您点击时设备上有两个手指,则可以发送中键按钮点击事件.显然,目前还有很多可以做的事情,但这对于拍摄来说似乎是一件好事.
提前致谢!
-Sastira
我正在尝试在Android 2.0应用中使用多点触控.如何使用Eclipse使用模拟器模拟这个?我似乎只能让鼠标一次触摸一下.
以下代码是我一直尝试用于多点触控的代码.手指一被正确设置并在我拖动手指时四处移动.当我触摸并松开手指时,手指2会显示并消失,但它从不会四处移动.知道什么是错的吗?
我读过开发者博客我仍然不明白问题是什么.
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction() & MotionEvent.ACTION_MASK;
int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK) >> MotionEvent.ACTION_POINTER_ID_SHIFT;
int pointerId = event.getPointerId(pointerIndex);
switch (action) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN:
if (pointerId == 0)
{
fingerOneDown = 1;
fingerOneX = event.getX(pointerIndex);
fingerOneY = event.getY(pointerIndex);
}
if (pointerId == 1)
{
fingerTwoDown = 1;
fingerTwoX = event.getX(pointerIndex);
fingerTwoY = event.getY(pointerIndex);
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
case MotionEvent.ACTION_CANCEL:
if (pointerId == 0)
{
fingerOneDown = 0; …
Run Code Online (Sandbox Code Playgroud) 当你按住D-Pad上的右键时,你知道Mario是如何继续向右跑的吗?以同样的方式,我希望我的UIButton在按下它的持续时间内不断激活它的动作.这可能是UIButton吗?如果没有,是否可以通过以某种方式覆盖触摸处理方法来处理UIImageView?实际上,在尝试用UIButton完成之前,我有一些UIImageViews(安排作为D-Pad),通过触摸处理方法检查但事情开始变得混乱所以我认为这可以通过UIButton更容易完成,因此切换.任何知道如何识别连续,静止(未移动)向下触摸的人,请分享.
我想在UITableView上实现一个捏合/外出,我已经看了几个方法,包括这个:
但是虽然我可以创建一个UIViewTouch
对象并将其覆盖到我的UITableView上,滚动事件不会被转发到我的UITableView,我仍然可以选择单元格,并且它们通过触发转换到新的ViewController对象来正确响应.但是,尽管传递了touchesBegan,touchesMoved和touchesEnded事件,但我无法滚动UITableView.
预计多点触控界面变得越来越普遍的日子,Java中的库是否可以用于开发触摸应用程序?我正在寻找类似于MouseListener/MouseMotionListener/MouseWheelListener的接口.
我正在使用Monogame开发多点触控应用程序,其中多个用户可以同时处理具有单独文档/图像/视频的更大的多点触摸屏,我想知道是否可以使手势"具有上下文感知",即两个手指在墙壁的一侧捏住文件不应该影响某人平移墙壁的另一侧.
Monogame的工作方式是,所有输入点都转换为手势,可以使用以下方法读取:
if (TouchPanel.IsGestureAvailable)
{
var gesture = TouchPanel.ReadGesture();
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让手势限制在屏幕上的某个点,或者我是否需要自己实现?例如,通过查看源代码,看起来TouchPanelState
该类完成了所有工作,但不幸的是它的构造函数是internal
.
作为一个背景--Windows有一个Touch/TabletPCs工具,它可以根据你的"用手"移动弹出菜单/菜单的位置(以防止菜单出现在你的手下).
基本上这是做什么的,如果你被设置为"右手"(它似乎默认为你连接了一个触摸设备),你打开的每个弹出窗口被人为地踢到左边 - 这会导致我们尝试的大量布局问题并将弹出窗口与"弹出"项目对齐:
平板电脑设置设置为左手 - 不从Windows进行人工修正
平板电脑设置设置为右手 - Windows人工调整我们的定位
我们可以使用SystemParameters.MenuDropAlignment来检测此设置的设置,对于普通的弹出窗口,我们可以使用弹出窗口的实际宽度来调整它 - 但是对于动态弹出窗口以及当我们将右向左支撑放入混合时,这只是没有'工作.
目前看起来我们更有可能必须经历每个弹出窗口,手动设计一个值来调整踢,并为每个弹出一个类似的东西:
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Source={x:Static SystemParameters.MenuDropAlignment}}" Value="True"/>
<Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=FlowDirection}" Value="RightToLeft"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="HorizontalOffset" Value="-50"/> <!-- Set to arbitrary value to test -->
</MultiDataTrigger.Setters>
</MultiDataTrigger>
Run Code Online (Sandbox Code Playgroud)
那么..回到问题:-)有没有人知道如何停止WPF弹出窗口看这个设置呢?
对于那些没有触摸设备的用户,您可以通过运行以下方式访问Tablet PC设置:
C:\ Windows\explorer.exe shell ::: {80F3F1D5-FECA-45F3-BC32-752C152E456E}
并看到它为自己造成的混乱:-)
我使用jQuery,jQuery UI和jQuery mobile为iPhone/iPad构建Web应用程序.现在我创建图像,它们应该是可拖动的,所以我这样做:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Drag - Test</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a2/jquery.mobile-1.0a2.min.css" />
<script src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0a2/jquery.mobile-1.0a2.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js"></script>
</head>
<body>
<div>
<div style="width:500px;height:500px;border:1px solid red;">
<img src="http://upload.wikimedia.org/wikipedia/en/thumb/9/9e/JQuery_logo.svg/200px-JQuery_logo.svg.png" class="draggable" alt="jQuery logo" />
<img src="http://upload.wikimedia.org/wikipedia/en/a/ab/Apple-logo.png" class="draggable" alt="Apple Inc. logo" />
</div>
</div>
</body>
<script type="text/javascript">
$(document).ready(function() {
$(".draggable").draggable();
});
</script>
</html>
Run Code Online (Sandbox Code Playgroud)
在这里你可以看到现场的例子:http://jsbin.com/igena4/
问题是,整个页面想要滚动.我在Apple的HTML5示例中搜索并发现这是为了防止页面滚动,以便图像可拖动:
...
onDragStart: function(event) {
// stop page from panning on iPhone/iPad - we're moving a note, not the page
event.preventDefault(); …
Run Code Online (Sandbox Code Playgroud) 我有这个代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
window.addEventListener('DOMMouseScroll', mouseWheelEvent);
window.addEventListener('mousewheel', mouseWheelEvent);
function mouseWheelEvent() {
alert(1);
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
它适用于Chrome和Firefox.但是,它不能与我的笔记本电脑dell xps 13 9434的触控板在IE和边缘.但它确实与(某些)其他笔记本电脑的触摸板配合使用.该怎么办?jQuery没问题.
"什么行不通?" =>使用2个手指时,滚动时没有警报,就像您在浏览器中滚动一样.
javascript internet-explorer mouseevent multi-touch microsoft-edge
multi-touch ×10
android ×2
iphone ×2
java ×2
touch ×2
c# ×1
cocoa-touch ×1
gesture ×1
html ×1
javascript ×1
jquery ×1
jquery-ui ×1
kernel ×1
magic-mouse ×1
monogame ×1
mouseevent ×1
objective-c ×1
pinch ×1
uibutton ×1
uitableview ×1
wpf ×1
xaml ×1