New (touching) blog post
This commit is contained in:
parent
e2aa0bd43b
commit
841fbfdd9e
8 changed files with 59 additions and 4 deletions
|
|
@ -1,7 +1,15 @@
|
|||
{% assign include_width = "" %}
|
||||
{% assign include_height = "" %}
|
||||
{% if include.width %}
|
||||
{% capture include_width %} width="{{ include.width }}"{% endcapture %}
|
||||
{% endif %}
|
||||
{% if include.height %}
|
||||
{% capture include_height %} height="{{ include.height }}"{% endcapture %}
|
||||
{% endif %}
|
||||
<div class="screenshot-frame">
|
||||
<div class="screenshot-image">
|
||||
<a href="{{ site.baseurl }}{{ include.link }}">
|
||||
<img src="{{ site.baseurl }}{{ include.src }}" width="{{ include.width }}" height="{{ include.height }}" alt="{{ include.title }}"/>
|
||||
<img src="{{ site.baseurl }}{{ include.src }}"{{ include_width }}{{ include_height }} alt="{{ include.title }}"/>
|
||||
</a>
|
||||
</div>
|
||||
<span class="screenshot-label">{{ include.title }}</span>
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ would happily report:
|
|||
but it would NEVER display anything but deployment information. Instead, I had to browse the log files using Azure's
|
||||
"FTP DIAGNOSTIC LOGS" link on the web portal -- which presents the logs as one big, ugly, fragmented mess:
|
||||
|
||||

|
||||

|
||||
|
||||
Sigh. But at least the site is up and fully operational now.
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ I've done what testing I can with the Android SDK and the "Android Virtual Devic
|
|||
looks fine -- you click/tap on the PC's screen, the soft keyboard pops up, and typing works. So I guess Silk is just
|
||||
an outlier. I'm not sure what I'll do about it yet (or even what I can do).
|
||||
|
||||

|
||||

|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ And centerpiece of this whole conceit -- the cloning of the IBM PC ROM BIOS. Wh
|
|||
scene from Episode 2, where Brilliant Engineer looks at Hot Programmer's whiteboard in awe. Apparently, he
|
||||
is easily awed, because he did the same thing when Sales Guy wrote "2x fast, 1/2 price" on an earlier whiteboard.
|
||||
|
||||
[<img src="/blog/images/halt-and-catch-liar-thumbnail.jpg" alt='"Halt and Catch Fire" Scene from Episode 2'/>](/blog/images/halt-and-catch-liar.jpg)
|
||||
[<img src="/blog/images/halt-and-catch-liar-small.jpg" alt='"Halt and Catch Fire" Scene from Episode 2'/>](/blog/images/halt-and-catch-liar.jpg)
|
||||
|
||||
So if you deconstruct the code on this whiteboard, you quickly notice that while it IS assembly language, it is
|
||||
NOT the sort of assembly language you would find in a ROM BIOS, let alone ANYTHING that would leave you in awe.
|
||||
|
|
|
|||
47
_posts/2016-03-06-touching-windows.md
Normal file
47
_posts/2016-03-06-touching-windows.md
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
---
|
||||
layout: post
|
||||
title: Touching Windows
|
||||
date: 2016-03-06 09:00:00
|
||||
permalink: /blog/2016/03/06/
|
||||
---
|
||||
|
||||
Yesterday, I fired up [Windows 3.1](/disks/pc/windows/3.10/) and played a complete game of
|
||||
[Windows Solitaire](https://en.wikipedia.org/wiki/Microsoft_Solitaire) on my iPad. And I won!
|
||||
|
||||
{% comment %}[<img src="/blog/images/ipad-solitaire-small.jpg" alt="Windows Solitaire on iPad"/>](/blog/images/ipad-solitaire.jpg){% endcomment %}
|
||||
{% include screenshot.html src="/blog/images/ipad-solitaire-small.jpg" title="iPad running Solitaire on Windows 3.10" link="/blog/images/ipad-solitaire.jpg" %}
|
||||
|
||||
Converting touch events to mouse events can be a bit, um, touchy. The basic touch events are:
|
||||
|
||||
- `touchstart`
|
||||
- `touchmove`
|
||||
- `touchend`
|
||||
|
||||
which roughly correspond to `mousedown`, `mousemove`, and `mouseup` events, except that your finger isn't
|
||||
exactly like a mouse -- it doesn't have *buttons* for one thing -- so there are several usability problems
|
||||
that must be solved.
|
||||
|
||||
One of the problems is how to deal with the *default behaviors* of touch events. For example, tapping on a
|
||||
PCjs screen is normally how you trigger the iPad's soft keyboard, and dragging your finger across the screen
|
||||
normally scrolls the page up and down. However, you don't want *either* of those behaviors when you're
|
||||
trying to move the machine's mouse pointer around or click on things.
|
||||
|
||||
PCjs attempts to resolve the tapping problem by disabling default behaviors most of the time, except when
|
||||
two taps occur more than 1/2 second apart. This allows a quick *double-tap* to be treated as a double-click,
|
||||
while a pair of slower taps allows the soft keyboard to activate.
|
||||
|
||||
Another problem is how to differentiate between *moving the mouse* (ie, without any buttons pressed) and
|
||||
*dragging the mouse* (ie, with the left button pressed). Newer devices offer the option of relying on "3D Touch"
|
||||
(aka Force Touch), and using pressure to determine the user's intent, but most devices don't have that feature,
|
||||
and I'm not sure I'd want to rely on that anyway.
|
||||
|
||||
The PCjs soution: if you *tap and hold* for more than 200ms, and then start moving, your movements become the
|
||||
equivalent of a *mouse drag* operation.
|
||||
|
||||
This is my first stab at touch-to-mouse conversion, and it's not perfect, but it's already fairly usable,
|
||||
as my Solitaire experiment demonstrates. And there are still some open questions, such as how to intuitively
|
||||
support operations like *right drag*, since the current *mouse drag* operation is inherently *left drag*;
|
||||
one solution would be to rely on multi-touch and use two fingers to trigger right-button operations.
|
||||
|
||||
*[@jeffpar](http://twitter.com/jeffpar)*
|
||||
*March 6, 2016*
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 102 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 315 KiB |
Loading…
Reference in a new issue