ম্যাক ওএস এক্সের জন্য মাউস বোতাম এবং কী-টিপস কাউন্টার


8

লিনাক্স এবং উইন্ডোজের জন্য কৌশল রয়েছে তবে ম্যাক ওএস এক্সে মাউস এবং কীবোর্ড ইভেন্টগুলি গণনা করার কোনও উপায় আছে কি? আমি আমার প্রতিদিনের ক্রিয়াকলাপের পরিসংখ্যান বিশ্লেষণ করতে আগ্রহী।

উত্তর:


15

মিঃডানিয়েল প্রদত্ত অনুপ্রেরণার ভিত্তিতে , আমি সিদ্ধান্ত নিয়েছিলাম একটি সাধারণ সামান্য কাউন্টারকে প্রোগ্রাম করবো।

মূল উইন্ডোটির স্ক্রিনশট

এর উত্স কোড, বিয়োগ সংজ্ঞাটি ইউআই হিসাবে সংজ্ঞায়িত করা হয়েছে xib; ফাউন্ডেশন এবং অ্যাপকিট ফ্রেমওয়ার্কগুলি ব্যবহার করে ( গিটহাবের উপর সম্পূর্ণ উত্স এবং এক্সকোড প্রকল্প ):

DBAppDelegate.h

//
//  DBAppDelegate.h
//  CocoaActivityCounter
//
//  Created by Daniel Beck on 29.07.2012.
//  Copyright (c) 2012 Daniel Beck. All rights reserved.
//

#import <Cocoa/Cocoa.h>

static id monitorLeftMouseDown;
static id monitorRightMouseDown;
static id monitorKeyDown;

@interface DBAppDelegate : NSObject <NSApplicationDelegate>

@property (assign) IBOutlet NSWindow *window;
@property (strong) IBOutlet NSTextView *logView;

@property (weak) IBOutlet NSToolbarItem *toolbarStartButton;
@property (weak) IBOutlet NSToolbarItem *toolbarStopButton;
@property (weak) IBOutlet NSToolbarItem *toolbarClearButton;

@property (weak) IBOutlet NSTextField *keyPressCounterLabel;
@property (weak) IBOutlet NSTextField *leftMouseCounterLabel;
@property (weak) IBOutlet NSTextField *rightMouseCounterLabel;

@property (readwrite) NSDateFormatter *logDateFormatter;

@property (readwrite) NSNumber *keyPressCounter;
@property (readwrite) NSNumber *leftMouseCounter;
@property (readwrite) NSNumber *rightMouseCounter;

@property (readwrite) BOOL loggingEnabled;

- (IBAction)stopButtonPressed:(id)sender;
- (IBAction)startButtonPressed:(id)sender;
- (IBAction)clearButtonPressed:(id)sender;

- (void)logMessageToLogView:(NSString*)message;

- (BOOL)validateToolbarItem:(NSToolbarItem *)theItem;

@end

DBAppDelegate.m

//
//  DBAppDelegate.m
//  CocoaActivityCounter
//
//  Created by Daniel Beck on 29.07.2012.
//  Copyright (c) 2012 Daniel Beck. All rights reserved.
//

#import "DBAppDelegate.h"
#import <AppKit/NSEvent.h>

@implementation DBAppDelegate
@synthesize logView;
@synthesize toolbarStartButton;
@synthesize toolbarStopButton;
@synthesize keyPressCounterLabel;
@synthesize leftMouseCounterLabel;
@synthesize rightMouseCounterLabel;
@synthesize toolbarClearButton;
@synthesize loggingEnabled;

@synthesize keyPressCounter;
@synthesize leftMouseCounter;
@synthesize rightMouseCounter;


- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    self.loggingEnabled = NO;
    self.logDateFormatter = [[NSDateFormatter alloc] init];
    [self.logDateFormatter setTimeStyle:NSDateFormatterMediumStyle];
    self.keyPressCounter = [NSNumber numberWithInt:0];
    self.leftMouseCounter = [NSNumber numberWithInt:0];
    self.rightMouseCounter = [NSNumber numberWithInt:0];
}

- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication {
    return YES;
}

-(void)logMessageToLogView:(NSString*)message {
    [logView setString: [[logView string] stringByAppendingFormat:@"%@: %@\n", [self.logDateFormatter stringFromDate:[NSDate date]],  message]];
}

- (IBAction)stopButtonPressed:(id)sender {
    if (!self.loggingEnabled) {
        return;
    }
    self.loggingEnabled = false;
    [NSEvent removeMonitor:monitorLeftMouseDown];
    [NSEvent removeMonitor:monitorRightMouseDown];
    [NSEvent removeMonitor:monitorKeyDown];
}

- (IBAction)startButtonPressed:(id)sender {

    if (self.loggingEnabled) {
        return;
    }
    self.loggingEnabled = true;
    monitorLeftMouseDown = [NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDownMask handler:^(NSEvent *evt) {
        [self logMessageToLogView:[NSString stringWithFormat:@"Left mouse down!"]];
        self.leftMouseCounter = [NSNumber numberWithInt:(1 + [self.leftMouseCounter intValue])];
    }];
    monitorRightMouseDown = [NSEvent addGlobalMonitorForEventsMatchingMask:NSRightMouseDownMask handler:^(NSEvent *evt) {
        [self logMessageToLogView:@"Right mouse down!"];
        self.rightMouseCounter = [NSNumber numberWithInt:(1 + [self.rightMouseCounter intValue])];
    }];
    monitorKeyDown = [NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *evt) {
        [self logMessageToLogView:[NSString stringWithFormat:@"Key down: %@ (key code %d)", [evt characters], [evt keyCode]]];
        self.keyPressCounter = [NSNumber numberWithInt:(1 + [self.keyPressCounter intValue])];
    }];
}

- (IBAction)clearButtonPressed:(id)sender {
    self.keyPressCounter = [NSNumber numberWithInt:0];
    self.leftMouseCounter = [NSNumber numberWithInt:0];
    self.rightMouseCounter = [NSNumber numberWithInt:0];
    [self.logView setString:@""];
}

- (BOOL)validateToolbarItem:(NSToolbarItem *)theItem {
    if ([theItem isEqualTo:toolbarStartButton]) {
        return !self.loggingEnabled;
    }
    if ([theItem isEqualTo:toolbarStopButton]) {
        return self.loggingEnabled;
    }
    if ([theItem isEqualTo:toolbarClearButton]) {
        return !self.loggingEnabled;
    }
    return YES;
}

@end

টুলবার ব্যবহার করা আইকন থেকে এসেছ ট্যাঙ্গো ডেস্কটপ প্রকল্প


1
কিভাবে এটি ম্যাক অসক্সে খুলবেন?
জন স্মিথ

1
মাউসের জন্য দুর্দান্ত কাজ করে তবে 10.10 :(
মক্কি

@ মেক্কি যখন আমি লক্ষ্য করলাম কিছুক্ষণ আগে রেপো বর্ণনায় আমি এটি যোগ করেছি। দুর্ভাগ্যক্রমে আমার কোনও ধারণা নেই কেন, সম্ভবত সর্বজনীন অ্যাক্সেস API এ প্রতি অ্যাপ্লিকেশন অ্যাক্সেস সীমাবদ্ধতা এবং বাইনারি স্বাক্ষরবিহীন হওয়ার সাথে সম্পর্কিত। অথবা তারা এটিকে পুরোপুরি মেরে ফেলেছে।
ড্যানিয়েল অঙ্গুলিনির্দেশ

ম্যাক ওএস এক্স ১০.৯.৫ এ, এটি মাউসের পক্ষে ভাল কাজ করে তবে কী কীগুলি টিপে না। আপনি কি কারণ খুঁজে পেয়েছেন, মেকি? ধন্যবাদ।
জিয়াকুয়ান ডাব্লু

@ জিয়াকুয়ানডাব্লু আমি গিটিহাবের সংগ্রহশালায় কিছুক্ষণ আগে পিআর পেয়েছি যা দাবি করে যে এই সমস্যাটি সমাধান করা হয়েছে (অনির্ধারিত)।
ড্যানিয়েল বেক


2

টাইপিংস্ট্যাটগুলি মোট সংখ্যক কীস্ট্রোক এবং অন্যান্য বিভিন্ন মেট্রিক প্রদর্শন করে। এটি পয়েন্টিং ডিভাইস ক্লিকগুলি যদিও গণনা করে না।


আপনি নিজে চেষ্টা করেছেন? এটি কি আপনার সত্যিকারের ভিত্তিতে কীবোর্ড বিন্যাস পরিবর্তন করে বা এটি সর্বদা ইউএস হয়?
ড্যানিয়েল বেক

অ্যাপ স্টোর অ্যাপ্লিকেশন, কানাডায় এবং সম্ভবত অন্য কোথাও উপলভ্য নয়।
জাস্টিন

1

একটি ক্লিক এবং বাটন প্রেস কাউন্টার প্রোগ্রামটি কোকো অবজেক্টিভ-সি প্রোগ্রাম লেখার মাধ্যমে সম্ভব যা মাউস এবং কীবোর্ড ক্লিক ইভেন্টগুলি গ্রহণ করতে এবং গণনা করতে পারে।

ক্লাসটি একবার দেখার জন্য রয়েছে এনএসইভেন্টটি বিশেষত অ্যাডগ্লোবালমনিটরফরেন্টস ম্যাচিংমাস্ক: হ্যান্ডলার: শ্রেণি পদ্ধতিটি খুব সহায়ক বলে প্রমাণিত হওয়া উচিত। যেহেতু এটি ইভেন্টগুলি নিরীক্ষণের প্রস্তাব দেয়:

NSLeftMouseUp

NSRightMouseUp

NSOtherMouseUp

NSLeftMouseDown

NSRightMouseDown

NSOtherMouseDown

NSKeyDown


3
দয়া করে এমনভাবে উত্তর দেওয়ার চেষ্টা করুন যা ব্যবহারকারীকে তার লক্ষ্যের কাছে নিয়ে আসে। তাকে কেবল প্রোগ্রামিং শিখতে বলছে না। আপনি উদাহরণস্বরূপ, কোনও প্রাসঙ্গিক কোড স্নিপেট বা ফাংশন কল সরবরাহ করতে পারেন, প্রকৃত সমাধানের সূচনা। যদিও এখনও সকলের পক্ষে দরকারী নয় তবে এটি অন্যের দ্বারা ভিত্তি হিসাবে একটি কার্যকর সমাধান সরবরাহ করতে পারে।
ড্যানিয়েল বেক

ড্যানিয়েল বেক ভাল কল দেখে মনে হচ্ছে যে "কোকোর জন্য অ্যাক্সেসিবিলিটি প্রোগ্রামিং গাইডলাইনস" ব্যবহার করার পরামর্শ দেওয়ার সময় আমি ভুল পন্থা নিচ্ছিলাম, আরও পড়ার পরে আমাকে এনএসইভেন্ট ক্লাসের দিকে ইঙ্গিত করা হয়েছিল, যা দেখে মনে হয় এটি কাজ করবে ...
মিঃডানিয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.