Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(macos): properly handle accessibility permission #2508

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

Hazer
Copy link
Member

@Hazer Hazer commented May 7, 2024

Description

Check for macOS Accessibility permission to allow mouse and keyboard input events to work properly.

  • Automatically includes sunshine to the Accessibility list in the Settings pane, no need to find out the binary path;
  • Shows prompt to user;
  • Logs to the user every time we receive an input event that won't execute because of missing accessibility permission.

Issues Fixed or Closed

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Dependency update (updates to dependencies)
  • Documentation update (changes to documentation)
  • Repository update (changes to repository files, e.g. .github/...)

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated the in code docstring/documentation-blocks for new or existing methods/components

Branch Updates

LizardByte requires that branches be up-to-date before merging. This means that after any PR is merged, this branch
must be updated before it can be merged. You must also
Allow edits from maintainers.

  • I want maintainers to keep my branch updated

Copy link

codecov bot commented May 7, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 7.88%. Comparing base (129abd8) to head (a2e3b24).
Report is 2 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff            @@
##           master   #2508      +/-   ##
=========================================
- Coverage   11.17%   7.88%   -3.29%     
=========================================
  Files         100      90      -10     
  Lines       17310   15803    -1507     
  Branches     8069    7487     -582     
=========================================
- Hits         1934    1246     -688     
+ Misses      12671   12131     -540     
+ Partials     2705    2426     -279     
Flag Coverage Δ
Linux 8.42% <ø> (-0.01%) ⬇️
Windows 5.38% <ø> (-0.01%) ⬇️
macOS-13 ?
macOS-14 ?

Flags with carried forward coverage won't be shown. Click here to find out more.

see 44 files with indirect coverage changes

@Hazer Hazer marked this pull request as draft May 7, 2024 15:02
@Hazer
Copy link
Member Author

Hazer commented May 7, 2024

Needs test coverage on the new methods

@Hazer
Copy link
Member Author

Hazer commented May 24, 2024

If we are going to test this, this has to be tested only on CI, this cannot be tested on macports test action.

@Hazer Hazer force-pushed the fix/macos-accessibility-request branch from 2340497 to 062d1fb Compare May 24, 2024 23:06
@Hazer
Copy link
Member Author

Hazer commented Jun 5, 2024

Waiting for #2550 to create the tests

@Hazer Hazer mentioned this pull request Jun 11, 2024
11 tasks
@Hazer Hazer force-pushed the fix/macos-accessibility-request branch from 062d1fb to c24e808 Compare July 14, 2024 00:41
@Hazer
Copy link
Member Author

Hazer commented Aug 6, 2024

This needs to be updated and tested on macOS Sequoia before merging.

@Hazer Hazer force-pushed the fix/macos-accessibility-request branch 3 times, most recently from d8d4ada to 96505cc Compare December 5, 2024 03:14
@Hazer
Copy link
Member Author

Hazer commented Dec 5, 2024

Revisiting this PR, fixing conflicts first to get this on track

@Hazer
Copy link
Member Author

Hazer commented Dec 5, 2024

Should I include a manual request in the web ui? Or the status saying whether the permission is given or not? @ReenigneArcher

@ReenigneArcher
Copy link
Member

ReenigneArcher commented Dec 5, 2024

Should I include a manual request in the web ui? Or the status saying whether the permission is given or not? @ReenigneArcher

This sounds like a good idea... should it be a separate PR?

@Hazer
Copy link
Member Author

Hazer commented Dec 5, 2024

@ReenigneArcher not sure. I may do it in the same, so I can improve the API around it once, cause it may change where it is declared, and as I have some code quality issues to review, I may do it in a single pass

@Hazer Hazer force-pushed the fix/macos-accessibility-request branch from 96505cc to 915c7bf Compare December 23, 2024 22:27
@Hazer Hazer force-pushed the fix/macos-accessibility-request branch from 915c7bf to a2e3b24 Compare December 23, 2024 23:37
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
1 New issue
1 New Code Smells (required ≤ 0)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Comment on lines +11 to +12
#include "misc.h"
#include "permissions_manager.h"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#include "misc.h"
#include "permissions_manager.h"
#include "src/platform/macos/misc.h"
#include "src/platform/macos/permissions_manager.h"

Should we be more explicit?

Comment on lines +11 to +12
#include <Carbon/Carbon.h>

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#include <Carbon/Carbon.h>
#include <Carbon/Carbon.h>

// Even though the following two functions are available starting in macOS 10.15, they weren't
// actually in the Mac SDK until Xcode 12.2, the first to include the SDK for macOS 11
#if __MAC_OS_X_VERSION_MAX_ALLOWED < 110000 // __MAC_11_0
// If they're not in the SDK then we can use our own function definitions.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can probably drop this, our readme lists macOS 13+. Although I don't have a strong opinion on this if we want to keep it as is.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't paid enough attention to it, yeah I'll remove it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

The mouse cursor always stay at the top left corner on macOS
2 participants